Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Manage MongoDB Atlas Organizations as Azure ARM resources using Azure.ResourceManager.MongoDBAtlas SDK. Use when creating, updating, listing, or deleting MongoDB Atlas organizations through Azure Marketplace integration. This SDK manages the Azure-side organization resource, not Atlas clusters/databases directly.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 76% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 96% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 98% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 57% | 0% |
Manage MongoDB Atlas Organizations as Azure ARM resources with unified billing through Azure Marketplace.
| Property | Value | |----------|-------| | Package | Azure.ResourceManager.MongoDBAtlas | | Version | 1.0.0 (GA) | | API Version | 2025-06-01 | | Resource Type | MongoDB.Atlas/organizations | | NuGet | Azure.ResourceManager.MongoDBAtlas |
bashdotnet add package Azure.ResourceManager.MongoDBAtlas dotnet add package Azure.Identity dotnet add package Azure.ResourceManager
This SDK manages MongoDB Atlas Organizations as Azure ARM resources for marketplace integration. It does NOT directly manage:
For cluster management, use the MongoDB Atlas API directly after creating the organization.
bashAZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription ID AZURE_RESOURCE_GROUP=<your-resource-group> # Required: Azure resource group name AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production AZURE_TENANT_ID=<your-tenant-id> # For service principal auth (optional) AZURE_CLIENT_ID=<your-client-id> # For service principal auth (optional) AZURE_CLIENT_SECRET=<your-client-secret> # For service principal auth (optional)
csharpusing Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.MongoDBAtlas; using Azure.ResourceManager.MongoDBAtlas.Models; // Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential> var credential = new DefaultAzureCredential( DefaultAzureCredential.DefaultEnvironmentVariableName ); // Or use a specific credential directly in production: // See https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes // var credential = new ManagedIdentityCredential(); var armClient = new ArmClient(credential);
| Type | Purpose | |------|---------| | MongoDBAtlasOrganizationResource | ARM resource representing an Atlas organization | | MongoDBAtlasOrganizationCollection | Collection of organizations in a resource group | | MongoDBAtlasOrganizationData | Data model for organization resource | | MongoDBAtlasOrganizationProperties | Organization-specific properties | | MongoDBAtlasMarketplaceDetails | Azure Marketplace subscription details | | MongoDBAtlasOfferDetails | Marketplace offer configuration | | MongoDBAtlasUserDetails | User information for the organization | | MongoDBAtlasPartnerProperties | MongoDB-specific properties (org name, ID) |
csharp// Get resource group var subscription = await armClient.GetDefaultSubscriptionAsync(); var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group"); // Get organizations collection MongoDBAtlasOrganizationCollection organizations = resourceGroup.Value.GetMongoDBAtlasOrganizations();
csharpvar organizationName = "my-atlas-org"; var location = AzureLocation.EastUS2; // Build organization data var organizationData = new MongoDBAtlasOrganizationData(location) { Properties = new MongoDBAtlasOrganizationProperties( marketplace: new MongoDBAtlasMarketplaceDetails( subscriptionId: "your-azure-subscription-id", offerDetails: new MongoDBAtlasOfferDetails( publisherId: "mongodb", offerId: "mongodb_atlas_azure_native_prod", planId: "private_plan", planName: "Pay as You Go (Free) (Private)", termUnit: "P1M", termId: "gmz7xq9ge3py" ) ), user: new MongoDBAtlasUserDetails( emailAddress: "admin@example.com", upn: "admin@example.com" ) { FirstName = "Admin", LastName = "User" } ) { PartnerProperties = new MongoDBAtlasPartnerProperties { OrganizationName = organizationName } }, Tags = { ["Environment"] = "Production" } }; // Create the organization (long-running operation) var operation = await organizations.CreateOrUpdateAsync( WaitUntil.Completed, organizationName, organizationData ); MongoDBAtlasOrganizationResource organization = operation.Value; Console.WriteLine($"Created: {organization.Id}");
csharp// Option 1: From collection MongoDBAtlasOrganizationResource org = await organizations.GetAsync("my-atlas-org"); // Option 2: From resource identifier var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier( subscriptionId: "subscription-id", resourceGroupName: "my-resource-group", organizationName: "my-atlas-org" ); MongoDBAtlasOrganizationResource org2 = armClient.GetMongoDBAtlasOrganizationResource(resourceId); await org2.GetAsync(); // Fetch data
csharp// List in resource group await foreach (var org in organizations.GetAllAsync()) { Console.WriteLine($"Org: {org.Data.Name}"); Console.WriteLine($" Location: {org.Data.Location}"); Console.WriteLine($" State: {org.Data.Properties?.ProvisioningState}"); } // List across subscription await foreach (var org in subscription.GetMongoDBAtlasOrganizationsAsync()) { Console.WriteLine($"Org: {org.Data.Name} in {org.Data.Id}"); }
csharp// Add a single tag await organization.AddTagAsync("CostCenter", "12345"); // Replace all tags await organization.SetTagsAsync(new Dictionary<string, string> { ["Environment"] = "Production", ["Team"] = "Platform" }); // Remove a tag await organization.RemoveTagAsync("OldTag");
csharpvar patch = new MongoDBAtlasOrganizationPatch { Tags = { ["UpdatedAt"] = DateTime.UtcNow.ToString("o") }, Properties = new MongoDBAtlasOrganizationUpdateProperties { // Update user details if needed User = new MongoDBAtlasUserDetails( emailAddress: "newadmin@example.com", upn: "newadmin@example.com" ) } }; var updateOperation = await organization.UpdateAsync( WaitUntil.Completed, patch );
csharp// Delete (long-running operation) await organization.DeleteAsync(WaitUntil.Completed);
| Property | Type | Description | |----------|------|-------------| | Marketplace | MongoDBAtlasMarketplaceDetails | Required. Marketplace subscription details | | User | MongoDBAtlasUserDetails | Required. Organization admin user | | PartnerProperties | MongoDBAtlasPartnerProperties | MongoDB-specific properties | | ProvisioningState | MongoDBAtlasResourceProvisioningState | Read-only. Current provisioning state |
| Property | Type | Description | |----------|------|-------------| | SubscriptionId | string | Required. Azure subscription ID for billing | | OfferDetails | MongoDBAtlasOfferDetails | Required. Marketplace offer configuration | | SubscriptionStatus | MarketplaceSubscriptionStatus | Read-only. Subscription status |
| Property | Type | Description | |----------|------|-------------| | PublisherId | string | Required. Publisher ID (typically "mongodb") | | OfferId | string | Required. Offer ID | | PlanId | string | Required. Plan ID | | PlanName | string | Required. Display name of the plan | | TermUnit | string | Required. Billing term unit (e.g., "P1M") | | TermId | string | Required. Term identifier |
| Property | Type | Description | |----------|------|-------------| | EmailAddress | string | Required. User email address | | Upn | string | Required. User principal name | | FirstName | string | Optional. User first name | | LastName | string | Optional. User last name |
| Property | Type | Description | |----------|------|-------------| | OrganizationName | string | Name of the MongoDB Atlas organization | | OrganizationId | string | Read-only. MongoDB Atlas organization ID |
| State | Description | |-------|-------------| | Succeeded | Resource provisioned successfully | | Failed | Provisioning failed | | Canceled | Provisioning was canceled | | Provisioning | Resource is being provisioned | | Updating | Resource is being updated | | Deleting | Resource is being deleted | | Accepted | Request accepted, provisioning starting |
| Status | Description | |--------|-------------| | PendingFulfillmentStart | Subscription pending activation | | Subscribed | Active subscription | | Suspended | Subscription suspended | | Unsubscribed | Subscription canceled |
csharp// Prefer async for all operations var org = await organizations.GetAsync("my-org"); await org.Value.AddTagAsync("key", "value");
csharp// Wait for completion var operation = await organizations.CreateOrUpdateAsync( WaitUntil.Completed, // Blocks until done name, data ); // Or start and poll later var operation = await organizations.CreateOrUpdateAsync( WaitUntil.Started, // Returns immediately name, data ); // Poll for completion while (!operation.HasCompleted) { await Task.Delay(TimeSpan.FromSeconds(5)); await operation.UpdateStatusAsync(); }
csharpvar org = await organizations.GetAsync("my-org"); if (org.Value.Data.Properties?.ProvisioningState == MongoDBAtlasResourceProvisioningState.Succeeded) { Console.WriteLine("Organization is ready"); }
csharp// Create identifier without API call var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier( subscriptionId, resourceGroupName, organizationName ); // Get resource handle (no data yet) var orgResource = armClient.GetMongoDBAtlasOrganizationResource(resourceId); // Fetch data when needed var response = await orgResource.GetAsync();
| Error | Cause | Solution | |-------|-------|----------| | ResourceNotFound | Organization doesn't exist | Verify name and resource group | | AuthorizationFailed | Insufficient permissions | Check RBAC roles on resource group | | InvalidParameter | Missing required properties | Ensure all required fields are set | | MarketplaceError | Marketplace subscription issue | Verify offer details and subscription |
Other measured skills in the registry, with their headline benchmark lift.