Azure Mgmt Fabric Dotnet
MicrosoftOfficialCreated by Microsoft
- Skill
- Tool integration
- Cloud and DevOps
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The Azure.ResourceManager.Fabric SDK for .NET provides a programmatic interface for managing the lifecycle of Microsoft Fabric capacity resources. It is designed specifically for management plane operations, allowing developers to automate the provisioning, scaling, suspension, and deletion of Fabric capacities within Azure. This SDK integrates with the standard Azure Resource Manager (ARM) client, enabling consistent resource management patterns across .NET applications.
What it does
- Provision and delete Microsoft Fabric capacity resources.
- Scale capacity SKUs to adjust compute resources.
- Suspend and resume capacities to manage compute costs.
- Configure capacity administrators.
- Check for capacity name availability.
- List available SKUs and existing capacity resources.
When to use it
- When automating infrastructure deployment for Microsoft Fabric.
- When building custom tools to manage Fabric capacity lifecycles.
- When integrating capacity scaling into CI/CD pipelines.
- When implementing cost-management logic to suspend idle capacities.
Advantages
- Native .NET integration with Azure Resource Manager.
- Supports long-running operation tracking.
- Consistent with other Azure SDK patterns.
- Provides granular control over capacity states and configurations.
Usage examples
- “How do I create a new Fabric capacity using the .NET SDK?”
- The agent provides a code snippet demonstrating the initialization of FabricCapacityData, setting the SKU and administration properties, and calling CreateOrUpdateAsync on the capacity collection.
- “Show me how to suspend a Fabric capacity to save costs.”
- The agent provides the code to retrieve an existing FabricCapacityResource and invoke the SuspendAsync method to stop compute billing.
- “How can I check if a specific capacity name is available?”
- The agent demonstrates using the subscription-level CheckFabricCapacityNameAvailabilityAsync method with a FabricNameAvailabilityContent object.
- “How do I scale my Fabric capacity to a larger SKU?”
- The agent shows how to create a FabricCapacityPatch object with the new SKU and apply it to an existing capacity resource using the UpdateAsync method.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/microsoft/azure-mgmt-fabric-dotnet/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip azure-mgmt-fabric-dotnet.zip -d .agents/skills
Documentation by Microsoft
Azure.ResourceManager.Fabric (.NET)
Management plane SDK for provisioning and managing Microsoft Fabric capacity resources via Azure Resource Manager.
Management Plane Only This SDK manages Fabric capacities (compute resources). For working with Fabric workspaces, lakehouses, warehouses, and data items, use the Microsoft Fabric REST API or data plane SDKs.
Installation
dotnet add package Azure.ResourceManager.Fabric
dotnet add package Azure.IdentityCurrent Version: 1.0.0 (GA - September 2025)
API Version: 2023-11-01
Target Frameworks: .NET 8.0, .NET Standard 2.0
Environment Variables
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription ID
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
AZURE_TENANT_ID=<tenant-id> # For service principal auth (optional)
AZURE_CLIENT_ID=<client-id> # For service principal auth (optional)
AZURE_CLIENT_SECRET=<client-secret> # For service principal auth (optional)Authentication
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Fabric;
// 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);
// Get subscription
var subscription = await armClient.GetDefaultSubscriptionAsync();Resource Hierarchy
ArmClient
└── SubscriptionResource
└── ResourceGroupResource
└── FabricCapacityResourceCore Workflows
1. Create Fabric Capacity
using Azure.ResourceManager.Fabric;
using Azure.ResourceManager.Fabric.Models;
using Azure.Core;
// Get resource group
var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group");
// Define capacity configuration
var administration = new FabricCapacityAdministration(
new[] { "[email protected]" } // Capacity administrators (UPNs or object IDs)
);
var properties = new FabricCapacityProperties(administration);
var sku = new FabricSku("F64", FabricSkuTier.Fabric);
var capacityData = new FabricCapacityData(
AzureLocation.WestUS2,
properties,
sku)
{
Tags = { ["Environment"] = "Production" }
};
// Create capacity (long-running operation)
var capacityCollection = resourceGroup.Value.GetFabricCapacities();
var operation = await capacityCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"my-fabric-capacity",
capacityData);
FabricCapacityResource capacity = operation.Value;
Console.WriteLine($"Created capacity: {capacity.Data.Name}");
Console.WriteLine($"State: {capacity.Data.Properties.State}");2. Get Fabric Capacity
// Get existing capacity
var capacity = await resourceGroup.Value
.GetFabricCapacityAsync("my-fabric-capacity");
Console.WriteLine($"Name: {capacity.Value.Data.Name}");
Console.WriteLine($"Location: {capacity.Value.Data.Location}");
Console.WriteLine($"SKU: {capacity.Value.Data.Sku.Name}");
Console.WriteLine($"State: {capacity.Value.Data.Properties.State}");
Console.WriteLine($"Provisioning State: {capacity.Value.Data.Properties.ProvisioningState}");3. Update Capacity (Scale SKU or Change Admins)
var capacity = await resourceGroup.Value
.GetFabricCapacityAsync("my-fabric-capacity");
var patch = new FabricCapacityPatch
{
Sku = new FabricSku("F128", FabricSkuTier.Fabric), // Scale up
Properties = new FabricCapacityUpdateProperties
{
Administration = new FabricCapacityAdministration(
new[] { "[email protected]", "[email protected]" }
)
}
};
var updateOperation = await capacity.Value.UpdateAsync(
WaitUntil.Completed,
patch);
Console.WriteLine($"Updated SKU: {updateOperation.Value.Data.Sku.Name}");4. Suspend and Resume Capacity
// Suspend capacity (stop billing for compute)
await capacity.Value.SuspendAsync(WaitUntil.Completed);
Console.WriteLine("Capacity suspended");
// Resume capacity
var resumeOperation = await capacity.Value.ResumeAsync(WaitUntil.Completed);
Console.WriteLine($"Capacity resumed. State: {resumeOperation.Value.Data.Properties.State}");5. Delete Capacity
await capacity.Value.DeleteAsync(WaitUntil.Completed);
Console.WriteLine("Capacity deleted");6. List All Capacities
// In a resource group
await foreach (var cap in resourceGroup.Value.GetFabricCapacities())
{
Console.WriteLine($"- {cap.Data.Name} ({cap.Data.Sku.Name})");
}
// In a subscription
await foreach (var cap in subscription.GetFabricCapacitiesAsync())
{
Console.WriteLine($"- {cap.Data.Name} in {cap.Data.Location}");
}7. Check Name Availability
var checkContent = new FabricNameAvailabilityContent
{
Name = "my-new-capacity",
ResourceType = "Microsoft.Fabric/capacities"
};
var result = await subscription.CheckFabricCapacityNameAvailabilityAsync(
AzureLocation.WestUS2,
checkContent);
if (result.Value.IsNameAvailable == true)
{
Console.WriteLine("Name is available!");
}
else
{
Console.WriteLine($"Name unavailable: {result.Value.Reason} - {result.Value.Message}");
}8. List Available SKUs
// List all SKUs available in subscription
await foreach (var skuDetails in subscription.GetSkusFabricCapacitiesAsync())
{
Console.WriteLine($"SKU: {skuDetails.Name}");
Console.WriteLine($" Resource Type: {skuDetails.ResourceType}");
foreach (var location in skuDetails.Locations)
{
Console.WriteLine($" Location: {location}");
}
}
// List SKUs available for an existing capacity (for scaling)
await foreach (var skuDetails in capacity.Value.GetSkusForCapacityAsync())
{
Console.WriteLine($"Can scale to: {skuDetails.Sku.Name}");
}SKU Reference
| SKU Name | Capacity Units (CU) | Power BI Equivalent |
|---|---|---|
| F2 | 2 | - |
| F4 | 4 | - |
| F8 | 8 | EM1/A1 |
| F16 | 16 | EM2/A2 |
| F32 | 32 | EM3/A3 |
| F64 | 64 | P1/A4 |
| F128 | 128 | P2/A5 |
| F256 | 256 | P3/A6 |
| F512 | 512 | P4/A7 |
| F1024 | 1024 | P5/A8 |
| F2048 | 2048 | - |
Key Types Reference
| Type | Purpose |
|---|---|
ArmClient | Entry point for all ARM operations |
FabricCapacityResource | Represents a Fabric capacity instance |
FabricCapacityCollection | Collection for capacity CRUD operations |
FabricCapacityData | Capacity creation/read data model |
FabricCapacityPatch | Capacity update payload |
FabricCapacityProperties | Capacity properties (administration, state) |
FabricCapacityAdministration | Admin members configuration |
FabricSku | SKU configuration (name and tier) |
FabricSkuTier | Pricing tier (currently only "Fabric") |
FabricProvisioningState | Provisioning states (Succeeded, Failed, etc.) |
FabricResourceState | Resource states (Active, Suspended, etc.) |
FabricNameAvailabilityContent | Name availability check request |
FabricNameAvailabilityResult | Name availability check response |
Provisioning and Resource States
Provisioning States (FabricProvisioningState)
Succeeded- Operation completed successfullyFailed- Operation failedCanceled- Operation was canceledDeleting- Capacity is being deletedProvisioning- Initial provisioning in progressUpdating- Update operation in progress
Resource States (FabricResourceState)
Active- Capacity is running and availableProvisioning- Being provisionedFailed- In failed stateUpdating- Being updatedDeleting- Being deletedSuspending- Transitioning to suspendedSuspended- Suspended (not billing for compute)Pausing- Transitioning to pausedPaused- PausedResuming- Resuming from suspended/pausedScaling- Scaling to different SKUPreparing- Preparing resources
Best Practices
Use
WaitUntil.Completedfor operations that must finish before proceedingUse
WaitUntil.Startedwhen you want to poll manually or run operations in parallelUse
DefaultAzureCredential— never hardcode credentialsHandle
RequestFailedExceptionfor ARM API errorsUse
CreateOrUpdateAsyncfor idempotent operationsSuspend when not in use — Fabric capacities bill for compute even when idle
Check provisioning state before performing operations on a capacity
Use appropriate SKU — Start small (F2/F4) for dev/test, scale up for production
Error Handling
using Azure;
try
{
var operation = await capacityCollection.CreateOrUpdateAsync(
WaitUntil.Completed, capacityName, capacityData);
}
catch (RequestFailedException ex) when (ex.Status == 409)
{
Console.WriteLine("Capacity already exists or conflict");
}
catch (RequestFailedException ex) when (ex.Status == 400)
{
Console.WriteLine($"Invalid configuration: {ex.Message}");
}
catch (RequestFailedException ex) when (ex.Status == 403)
{
Console.WriteLine("Insufficient permissions or quota exceeded");
}
catch (RequestFailedException ex)
{
Console.WriteLine($"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}");
}Common Pitfalls
Capacity names must be globally unique — Fabric capacity names must be unique across all Azure subscriptions
Suspend doesn't delete — Suspended capacities still exist but don't bill for compute
SKU changes may require downtime — Scaling operations can take several minutes
Admin UPNs must be valid — Capacity administrators must be valid Azure AD users
Location constraints — Not all SKUs are available in all regions; use
GetSkusFabricCapacitiesAsyncto checkLong provisioning times — Capacity creation can take 5-15 minutes
Related SDKs
| SDK | Purpose | Install |
|---|---|---|
Azure.ResourceManager.Fabric | Management plane (this SDK) | dotnet add package Azure.ResourceManager.Fabric |
Microsoft.Fabric.Api | Data plane operations (beta) | dotnet add package Microsoft.Fabric.Api --prerelease |
Azure.ResourceManager | Core ARM SDK | dotnet add package Azure.ResourceManager |
Azure.Identity | Authentication | dotnet add package Azure.Identity |
References
Files
- ATTRIBUTION.mdAdded by AutoGineer983 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md11.4 KiB
ATTRIBUTION.md
Attribution
This folder is an unmodified copy of the Agent Skill "azure-mgmt-fabric-dotnet", distributed by AutoGineer (https://autogineer.com/agent-skills).
Commit: 0696600436a9669184ce47e8d8b2ceac62e4bfac
Created by: Microsoft (https://github.com/microsoft/skills/tree/0696600436a9669184ce47e8d8b2ceac62e4bfac/.github/plugins/azure-sdk-dotnet/skills/azure-mgmt-fabric-dotnet)
Publisher: Microsoft (https://github.com/microsoft)
Licence: MIT License (https://spdx.org/licenses/MIT.html)
Licence evidence: declared in the frontmatter ("license: MIT")
Retrieved: 2026-11-07
The skill's own files are unmodified copies. AutoGineer is not affiliated with or endorsed by the author or the publisher.
Files added by AutoGineer
ATTRIBUTION.md: this file, written by AutoGineer
LICENSE: copied from LICENSE
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/skills · .github/plugins/azure-sdk-dotnet/skills/azure-mgmt-fabric-dotnet · commit 0696600
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Microsoft or Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download azure-mgmt-fabric-dotnet.zip