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.
Add this skill
npx mdskills install sickn33/azure-mgmt-mongodbatlas-dotnetComprehensive SDK documentation with clear workflows, examples, and best practices for Azure-MongoDB integration
1---2name: azure-mgmt-mongodbatlas-dotnet3description: 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.4package: Azure.ResourceManager.MongoDBAtlas5---67# Azure.ResourceManager.MongoDBAtlas SDK89Manage MongoDB Atlas Organizations as Azure ARM resources with unified billing through Azure Marketplace.1011## Package Information1213| Property | Value |14|----------|-------|15| Package | `Azure.ResourceManager.MongoDBAtlas` |16| Version | 1.0.0 (GA) |17| API Version | 2025-06-01 |18| Resource Type | `MongoDB.Atlas/organizations` |19| NuGet | [Azure.ResourceManager.MongoDBAtlas](https://www.nuget.org/packages/Azure.ResourceManager.MongoDBAtlas) |2021## Installation2223```bash24dotnet add package Azure.ResourceManager.MongoDBAtlas25dotnet add package Azure.Identity26dotnet add package Azure.ResourceManager27```2829## Important Scope Limitation3031This SDK manages **MongoDB Atlas Organizations as Azure ARM resources** for marketplace integration. It does NOT directly manage:32- Atlas clusters33- Databases34- Collections35- Users/roles3637For cluster management, use the MongoDB Atlas API directly after creating the organization.3839## Authentication4041```csharp42using Azure.Identity;43using Azure.ResourceManager;44using Azure.ResourceManager.MongoDBAtlas;45using Azure.ResourceManager.MongoDBAtlas.Models;4647// Create ARM client with DefaultAzureCredential48var credential = new DefaultAzureCredential();49var armClient = new ArmClient(credential);50```5152## Core Types5354| Type | Purpose |55|------|---------|56| `MongoDBAtlasOrganizationResource` | ARM resource representing an Atlas organization |57| `MongoDBAtlasOrganizationCollection` | Collection of organizations in a resource group |58| `MongoDBAtlasOrganizationData` | Data model for organization resource |59| `MongoDBAtlasOrganizationProperties` | Organization-specific properties |60| `MongoDBAtlasMarketplaceDetails` | Azure Marketplace subscription details |61| `MongoDBAtlasOfferDetails` | Marketplace offer configuration |62| `MongoDBAtlasUserDetails` | User information for the organization |63| `MongoDBAtlasPartnerProperties` | MongoDB-specific properties (org name, ID) |6465## Workflows6667### Get Organization Collection6869```csharp70// Get resource group71var subscription = await armClient.GetDefaultSubscriptionAsync();72var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group");7374// Get organizations collection75MongoDBAtlasOrganizationCollection organizations =76 resourceGroup.Value.GetMongoDBAtlasOrganizations();77```7879### Create Organization8081```csharp82var organizationName = "my-atlas-org";83var location = AzureLocation.EastUS2;8485// Build organization data86var organizationData = new MongoDBAtlasOrganizationData(location)87{88 Properties = new MongoDBAtlasOrganizationProperties(89 marketplace: new MongoDBAtlasMarketplaceDetails(90 subscriptionId: "your-azure-subscription-id",91 offerDetails: new MongoDBAtlasOfferDetails(92 publisherId: "mongodb",93 offerId: "mongodb_atlas_azure_native_prod",94 planId: "private_plan",95 planName: "Pay as You Go (Free) (Private)",96 termUnit: "P1M",97 termId: "gmz7xq9ge3py"98 )99 ),100 user: new MongoDBAtlasUserDetails(101 emailAddress: "admin@example.com",102 upn: "admin@example.com"103 )104 {105 FirstName = "Admin",106 LastName = "User"107 }108 )109 {110 PartnerProperties = new MongoDBAtlasPartnerProperties111 {112 OrganizationName = organizationName113 }114 },115 Tags = { ["Environment"] = "Production" }116};117118// Create the organization (long-running operation)119var operation = await organizations.CreateOrUpdateAsync(120 WaitUntil.Completed,121 organizationName,122 organizationData123);124125MongoDBAtlasOrganizationResource organization = operation.Value;126Console.WriteLine($"Created: {organization.Id}");127```128129### Get Existing Organization130131```csharp132// Option 1: From collection133MongoDBAtlasOrganizationResource org =134 await organizations.GetAsync("my-atlas-org");135136// Option 2: From resource identifier137var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(138 subscriptionId: "subscription-id",139 resourceGroupName: "my-resource-group",140 organizationName: "my-atlas-org"141);142MongoDBAtlasOrganizationResource org2 =143 armClient.GetMongoDBAtlasOrganizationResource(resourceId);144await org2.GetAsync(); // Fetch data145```146147### List Organizations148149```csharp150// List in resource group151await foreach (var org in organizations.GetAllAsync())152{153 Console.WriteLine($"Org: {org.Data.Name}");154 Console.WriteLine($" Location: {org.Data.Location}");155 Console.WriteLine($" State: {org.Data.Properties?.ProvisioningState}");156}157158// List across subscription159await foreach (var org in subscription.GetMongoDBAtlasOrganizationsAsync())160{161 Console.WriteLine($"Org: {org.Data.Name} in {org.Data.Id}");162}163```164165### Update Tags166167```csharp168// Add a single tag169await organization.AddTagAsync("CostCenter", "12345");170171// Replace all tags172await organization.SetTagsAsync(new Dictionary<string, string>173{174 ["Environment"] = "Production",175 ["Team"] = "Platform"176});177178// Remove a tag179await organization.RemoveTagAsync("OldTag");180```181182### Update Organization Properties183184```csharp185var patch = new MongoDBAtlasOrganizationPatch186{187 Tags = { ["UpdatedAt"] = DateTime.UtcNow.ToString("o") },188 Properties = new MongoDBAtlasOrganizationUpdateProperties189 {190 // Update user details if needed191 User = new MongoDBAtlasUserDetails(192 emailAddress: "newadmin@example.com",193 upn: "newadmin@example.com"194 )195 }196};197198var updateOperation = await organization.UpdateAsync(199 WaitUntil.Completed,200 patch201);202```203204### Delete Organization205206```csharp207// Delete (long-running operation)208await organization.DeleteAsync(WaitUntil.Completed);209```210211## Model Properties Reference212213### MongoDBAtlasOrganizationProperties214215| Property | Type | Description |216|----------|------|-------------|217| `Marketplace` | `MongoDBAtlasMarketplaceDetails` | Required. Marketplace subscription details |218| `User` | `MongoDBAtlasUserDetails` | Required. Organization admin user |219| `PartnerProperties` | `MongoDBAtlasPartnerProperties` | MongoDB-specific properties |220| `ProvisioningState` | `MongoDBAtlasResourceProvisioningState` | Read-only. Current provisioning state |221222### MongoDBAtlasMarketplaceDetails223224| Property | Type | Description |225|----------|------|-------------|226| `SubscriptionId` | `string` | Required. Azure subscription ID for billing |227| `OfferDetails` | `MongoDBAtlasOfferDetails` | Required. Marketplace offer configuration |228| `SubscriptionStatus` | `MarketplaceSubscriptionStatus` | Read-only. Subscription status |229230### MongoDBAtlasOfferDetails231232| Property | Type | Description |233|----------|------|-------------|234| `PublisherId` | `string` | Required. Publisher ID (typically "mongodb") |235| `OfferId` | `string` | Required. Offer ID |236| `PlanId` | `string` | Required. Plan ID |237| `PlanName` | `string` | Required. Display name of the plan |238| `TermUnit` | `string` | Required. Billing term unit (e.g., "P1M") |239| `TermId` | `string` | Required. Term identifier |240241### MongoDBAtlasUserDetails242243| Property | Type | Description |244|----------|------|-------------|245| `EmailAddress` | `string` | Required. User email address |246| `Upn` | `string` | Required. User principal name |247| `FirstName` | `string` | Optional. User first name |248| `LastName` | `string` | Optional. User last name |249250### MongoDBAtlasPartnerProperties251252| Property | Type | Description |253|----------|------|-------------|254| `OrganizationName` | `string` | Name of the MongoDB Atlas organization |255| `OrganizationId` | `string` | Read-only. MongoDB Atlas organization ID |256257## Provisioning States258259| State | Description |260|-------|-------------|261| `Succeeded` | Resource provisioned successfully |262| `Failed` | Provisioning failed |263| `Canceled` | Provisioning was canceled |264| `Provisioning` | Resource is being provisioned |265| `Updating` | Resource is being updated |266| `Deleting` | Resource is being deleted |267| `Accepted` | Request accepted, provisioning starting |268269## Marketplace Subscription Status270271| Status | Description |272|--------|-------------|273| `PendingFulfillmentStart` | Subscription pending activation |274| `Subscribed` | Active subscription |275| `Suspended` | Subscription suspended |276| `Unsubscribed` | Subscription canceled |277278## Best Practices279280### Use Async Methods281282```csharp283// Prefer async for all operations284var org = await organizations.GetAsync("my-org");285await org.Value.AddTagAsync("key", "value");286```287288### Handle Long-Running Operations289290```csharp291// Wait for completion292var operation = await organizations.CreateOrUpdateAsync(293 WaitUntil.Completed, // Blocks until done294 name,295 data296);297298// Or start and poll later299var operation = await organizations.CreateOrUpdateAsync(300 WaitUntil.Started, // Returns immediately301 name,302 data303);304305// Poll for completion306while (!operation.HasCompleted)307{308 await Task.Delay(TimeSpan.FromSeconds(5));309 await operation.UpdateStatusAsync();310}311```312313### Check Provisioning State314315```csharp316var org = await organizations.GetAsync("my-org");317if (org.Value.Data.Properties?.ProvisioningState ==318 MongoDBAtlasResourceProvisioningState.Succeeded)319{320 Console.WriteLine("Organization is ready");321}322```323324### Use Resource Identifiers325326```csharp327// Create identifier without API call328var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(329 subscriptionId,330 resourceGroupName,331 organizationName332);333334// Get resource handle (no data yet)335var orgResource = armClient.GetMongoDBAtlasOrganizationResource(resourceId);336337// Fetch data when needed338var response = await orgResource.GetAsync();339```340341## Common Errors342343| Error | Cause | Solution |344|-------|-------|----------|345| `ResourceNotFound` | Organization doesn't exist | Verify name and resource group |346| `AuthorizationFailed` | Insufficient permissions | Check RBAC roles on resource group |347| `InvalidParameter` | Missing required properties | Ensure all required fields are set |348| `MarketplaceError` | Marketplace subscription issue | Verify offer details and subscription |349350## Related Resources351352- [Microsoft Learn: MongoDB Atlas on Azure](https://learn.microsoft.com/en-us/azure/partner-solutions/mongodb-atlas/)353- [API Reference](https://learn.microsoft.com/en-us/dotnet/api/azure.resourcemanager.mongodbatlas)354- [Azure SDK for .NET](https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/mongodbatlas)355
Full transparency — inspect the skill content before installing.