
Azure Resource Manager Fabric
FreeManage Microsoft Fabric resources with .NET.
Free · Opens the source repo
What Azure Resource Manager Fabric does
The Azure.ResourceManager.Fabric SDK for .NET provides developers with the tools necessary to provision and manage Microsoft Fabric capacity resources through Azure Resource Manager. This SDK is specifically designed for the management plane, allowing users to create, update, and delete Fabric capacities, which are essential for handling compute resources in Microsoft Fabric. For tasks involving Fabric workspaces and data items, users should utilize the Microsoft Fabric REST API or relevant data plane SDKs instead.
To get started, developers need to install the SDK via NuGet, along with the Azure.Identity package for authentication. The SDK supports .NET 8.0 and .NET Standard 2.0, making it suitable for a wide range of .NET applications. Users can authenticate using the DefaultAzureCredential, which simplifies the process of connecting to Azure resources by leveraging various authentication methods available in Azure.
Core functionalities include creating and managing Fabric capacities, checking name availability for new capacities, and listing available SKUs for scaling options. The SDK also supports operations such as suspending and resuming capacities, which can help manage costs effectively. With built-in methods for updating capacity configurations and retrieving existing capacities, this SDK streamlines the management of resources, making it an essential tool for developers working within the Azure ecosystem.
When to use it
Use this SDK when you need to manage Fabric capacities within your Azure environment using .NET applications.
When not to use it
This SDK does not support direct management of Fabric workspaces or data items; use the appropriate REST API or data plane SDKs for those tasks.
What you can build with it
Provisioning New Fabric Capacity
Easily create new Fabric capacities by defining the required properties and SKU, allowing for immediate resource availability.
Scaling Existing Capacity
Update existing capacities to scale up or down by changing the SKU and administrative settings as needed.
Monitoring Capacity States
Retrieve and monitor the state of your Fabric capacities to ensure optimal performance and resource allocation.
How to install Azure Resource Manager Fabric
View source1. Install with the skills CLI
npx skills add sickn33/agentic-awesome-skills/azure-mgmt-fabric-dotnet --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by sickn33Azure.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.Identity
Current 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>
# For service principal auth (optional)
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
Authentication
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Fabric;
// Always use DefaultAzureCredential
var credential = new DefaultAzureCredential();
var armClient = new ArmClient(credential);
// Get subscription
var subscription = await armClient.GetDefaultSubscriptionAsync();
Resource Hierarchy
ArmClient
└── SubscriptionResource
└── ResourceGroupResource
└── FabricCapacityResource
Core 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[] { "admin@contoso.com" } // 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[] { "admin@contoso.com", "newadmin@contoso.com" }
)
}
};
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 proceeding - Use
WaitUntil.Startedwhen you want to poll manually or run operations in parallel - Always use
DefaultAzureCredential— never hardcode credentials - Handle
RequestFailedExceptionfor ARM API errors - Use
CreateOrUpdateAsyncfor idempotent operations - Suspend 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 check - Long 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
- Azure.ResourceManager.Fabric NuGet
- GitHub Source
- Microsoft Fabric Documentation
- Fabric Capacity Management
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Frequently asked questions about Azure Resource Manager Fabric
Similar skills
WinMD API Search
Easily find and explore Windows desktop APIs.
WebMCPify
Transform any web app into an agent-ready platform.
Phoenix Tracing
Instrument LLM applications with OpenInference tracing.
Foundry Hosted Agent CopilotKit
Guidance for developing agentic web apps on Azure.
Power Automate Foundation
Connect AI agents to Power Automate seamlessly.
Power Automate Flow Builder
Efficiently build and deploy Power Automate flows programmatically.
