IT Admin Business Leader Finance / FinOps — This section covers chargeback strategy development, the Fabric Chargeback App, cost attribution models, reservations handling, and real-world implementation scenarios.
Fabric Cost Attribution & Chargeback
Attribute Fabric capacity costs back to the teams, users, and business units that consume them.
Why Chargeback Matters
In a shared-capacity model like Microsoft Fabric, multiple teams and workloads consume from the same CU pool. Without a chargeback mechanism, there is no accountability for consumption — leading to over-provisioning, wasted spend, and friction between business units and central IT.
A well-designed chargeback strategy provides:
- Cost transparency: Every team sees what they consume and what it costs
- Accountability: Business units are incentivized to optimize their workloads
- Budget alignment: IT can distribute infrastructure costs fairly across the organization
- Capacity governance: Data-driven decisions about scaling, reservations, and capacity topology
The Fabric Chargeback App is not a complete end-to-end chargeback solution. It is a tool that facilitates your existing chargeback strategy by providing the data you need to correctly apportion the costs you see on your Azure bill. You must define who gets charged, what gets charged, and how to handle edge cases (unused compute, reservations, admin uplift) before configuring the app.
Chargeback vs. Showback
💰 Chargeback
Actual financial charges are transferred to the consuming business unit. Costs appear on each team's budget. Requires executive buy-in, a clear cost model, and integration with internal finance processes.
📊 Showback
Costs are displayed to teams for awareness, but no financial transfer occurs. Useful as a first step to build transparency and maturity before moving to full chargeback. The Chargeback App supports both approaches.
The Chargeback Process
Implementing Fabric chargeback is a multi-step process that combines organizational decisions, Azure billing data, and the Chargeback App:
Developing a Chargeback Strategy
Define your cost attribution model before touching any tools.
There is no one-size-fits-all approach to chargeback. What works for one organization may not be right for another. Your strategy must answer two fundamental questions:
👥 WHO Gets Charged?
Determine the attribution dimension that aligns with your organizational structure:
- By capacity owner: Charge the team that owns each capacity (simplest when capacities map 1:1 to teams)
- By workspace: Attribute CU usage per workspace to workspace owners
- By domain: Group workspaces into Fabric domains that map to business units
- By user: Track per-user CU consumption and aggregate to cost centres
- By item: Attribute costs to specific Fabric items (notebooks, pipelines, reports)
💵 WHAT Gets Charged?
Determine which costs to include and how to handle special cases:
- Compute only vs. compute + storage: OneLake storage is billed separately
- Reserved vs. PAYG rates: Do some teams benefit from reservations while others don't?
- Unused compute: Who pays for idle capacity?
- Administration uplift: Should you add a surcharge to cover central IT costs?
- Scale-up / overage costs: Who bears the cost of temporary scale operations?
Key Strategic Decisions
1. Handling Unused Compute
Within the capacity model there will almost always be unused compute — even with the benefits of smoothing (just like unused minutes on a phone contract). Capacities are priced such that 100% utilization isn't needed to be cost-effective. However, how you attribute unused compute is critical:
Dedicated Capacities
If individual business units own their own capacities, it is usually fairest to charge them for their unused compute too — they control the capacity lifecycle (pause/resume/scale).
Shared Capacities
If business units are spread across multiple shared capacities, combining unused compute across all capacities and apportioning it based on usage is much fairer. This avoids the situation where teams on busier capacities pay less for idle compute than those on quieter capacities — a result of admin placement decisions, not user behavior.
Central IT Absorption
Some organizations have central IT absorb unused compute costs entirely, charging business units only for what they actually consumed. This is the simplest model for users but shifts financial risk to IT.
2. Handling Reservations
Azure Reservations provide approximately 40% discounts on pay-as-you-go prices but require a 1-year or 3-year commitment. Key considerations:
- Reservations apply opportunistically to any capacity within scope — you cannot pin a reservation to a specific capacity
- If only certain business units are willing to commit long-term, you may need to separate reserved and PAYG costs and charge back separately
- With multiple capacities of different sizes sharing a reservation, finding total cost per capacity requires calculating blended rates (reserved + PAYG)
- Use Azure Cost Management chargeback for reservations to identify amortized costs per capacity
If you have a 32 CU reservation and run three F16 capacities (48 CU total), the reservation covers 32 CU at the discounted rate and the remaining 16 CU are billed at PAYG. The blended cost per CU differs from both the reserved and PAYG rates. Calculate this in Azure Cost Management before feeding into the Chargeback App.
3. Administration Uplift
If capacities are created and managed by a central team, you may want to charge an uplift on Fabric compute usage to cover the costs of that central IT team (FTE costs, tooling, on-call support). This is a percentage added on top of the raw Azure cost.
4. Scale-Up, Pause/Restart & Overage Costs
Dynamic capacity management (scaling up for peak loads, pausing during off-hours, or using capacity overage) affects the total bill. Decide upfront whether these costs are absorbed centrally or distributed to the teams that triggered the demand.
Strategy Decision Matrix
| Decision | Option A | Option B | Option C |
|---|---|---|---|
| Attribution dimension | By domain / business unit | By workspace | By user → cost centre |
| Unused compute | Proportional to usage | Capacity owner pays | Central IT absorbs |
| Reservations | Blended rate for all | Reserved rate for committed teams | PAYG rate for all (simplest) |
| Admin overhead | % uplift on charges | Flat monthly fee per team | No uplift (absorbed) |
| Storage costs | Included in chargeback | Billed separately by workspace | Central IT absorbs |
The Microsoft Fabric Chargeback App
A Power BI template app that provides CU consumption data by workspace, user, item, and domain.
What the App Does
The Microsoft Fabric Chargeback App is a Power BI app available from AppSource that connects to your Fabric capacity data and provides breakdowns of CU consumption. It helps you answer: "What percentage of my capacity did each team/user/workspace consume?"
📊 Workspace View
Shows what percentage of your capacity was utilized by each workspace. Use this when workspaces map cleanly to teams or projects.
👥 User View
Shows CU consumption per user. Drill into the User Details page to see which workspaces, items, and operations each user consumed.
🏷️ Domain / Subdomain View
Shows utilization by Fabric domain. Ideal when domains map to business units. Workspaces not assigned to a domain appear under "No domain".
📦 Item View
Shows utilization by individual Fabric items (notebooks, pipelines, reports, warehouses). Useful for identifying expensive items.
What the App Does NOT Do
- It does not tell you how much money to charge each workspace, business unit, or user
- It does not calculate total costs — you must get those from Azure Cost Management
- It does not handle reservation cost allocation — use Azure Cost Management amortized costs
- It does not apply organizational cost models (uplift, rate cards, etc.)
- It shows proportional usage against used capacity, not available capacity — important for unused compute calculations
The Chargeback App shows proportional cost usage against a grand total of "used" capacity, not "available" capacity. If a capacity is 10% utilized by two business units — one using 6% of total compute and the other 4% — the app shows a 60-40 split, not a 6-4 split. Keep this in mind when calculating charges where unused compute is excluded.
Installation & Setup
Prerequisites
- You must be an admin of at least one capacity in your organization
- Install the app in a workspace with a Pro license to avoid throttling due to capacity overutilization
Installation Steps
- Go to AppSource → Microsoft Fabric Chargeback and select Get it now
Or in Power BI service: Apps → Get apps → search "Microsoft Fabric" → select Chargeback → Get it now - Sign in with your Microsoft account and select Install
- Open the installed app and select Connect your data
- Configure the connection:
Field Value Notes UTC Offset -12 to 14 (use .5 for half-hour zones) Your org's standard UTC offset Days Ago to Start 14 or 30 days Historical data to load Advanced → Auto Refresh On (default) or Off Midnight auto-refresh - Set Authentication method to OAuth2 and Privacy level to Organizational
- Select Sign in and continue — initial data load may take a few minutes
App Visuals & Navigation
- Chargeback page: Main view with tabs for Workspace, Item, Domain, and Users. Shows top N entries by utilization percentage.
- Drill-through: Right-click any workspace, item, or domain to drill into detail pages showing utilization breakdowns, user details, and daily trends.
- Export Data page: A matrix visual for exporting utilization and user details across all capacities. Use slicers to filter and select columns for export.
- Utilization (CU) by date: Daily utilization trend chart. Useful for identifying peak usage patterns.
Considerations & Limitations
- Data is not real-time — refreshed daily (manual refresh available from the workspace)
- Operations not associated with a user (or by service principals) show as "Power BI Service"
- When "Show user data" is disabled in admin settings, users appear as "Masked user" (counted as a single user)
- Export may fail with "visual has exceeded available resources" — apply filters to reduce data volume
- Not supported in government clouds or environments using private links
- The semantic model is for use only within the provided reports — modifications are unsupported
If the app shows no data or can't refresh after installation: 1) Delete the old app, 2) Reinstall the latest version from AppSource, 3) Update the semantic model credentials in the workspace settings.
Integrating with Azure Cost Management
The Chargeback App provides usage splits — Azure Cost Management provides the actual dollar amounts.
A complete chargeback workflow combines two data sources:
Azure Cost Management
Provides the total cost for each capacity — including reservation discounts, PAYG charges, pause/restart effects, and scale-up costs. This is the "how much?" side of the equation.
Key meters:
Fabric Capacity CU— active computeCompute Pool— unused/idle CU (important for unused compute exclusion)OneLake Storage— storage costs (billed separately)
Chargeback App
Provides the usage distribution — what percentage each workspace/user/domain consumed. This is the "who used it?" side of the equation.
Key metrics:
- Grand Total % per domain/workspace/user
- Utilization CU per entity
- Daily utilization trends
Calculating Chargeback Amounts
Team Charge = Total Capacity Cost × (Team CU Usage / Total CU Used) Example: Total monthly cost (from Azure): $8,400 Finance team CU usage: 40% (from Chargeback App) Planning team CU usage: 35% Operations team CU usage: 25% Finance charge: $8,400 × 0.40 = $3,360 Planning charge: $8,400 × 0.35 = $2,940 Operations charge: $8,400 × 0.25 = $2,100
Used Cost = Total Capacity Cost − Compute Pool Cost (from Azure meter) Team Charge = Used Cost × (Team CU Usage / Total CU Used) Example: Total monthly cost: $16,800 Compute Pool (unused) cost: $3,400 Used cost: $13,400 Business Unit A (60% of used): $13,400 × 0.60 = $8,040 Business Unit B (40% of used): $13,400 × 0.40 = $5,360 Central IT absorbs: $3,400 (unused)
Team Charge = (Total Cost × Team Usage %) × (1 + Admin Uplift %) Example with 10% uplift: Base charge for Team A: $3,360 With 10% uplift: $3,360 × 1.10 = $3,696
Real-World Chargeback Scenarios
Four practical examples showing how to implement different chargeback strategies using the Chargeback App and Azure Cost Management.
Scenario 1: Charge Back to Business Units via Domains
Setup: An F64 capacity under a 1-year reservation costing ~$5,300/month. Runs continuously with no scale-ups, pauses, or restarts. Three business units (Finance, Planning, Operations) each have workspaces grouped using Fabric domains.
Goal: Charge each business unit proportionally to their CU consumption.
🎯 Strategy Decision
Since all three business units share one capacity, a decision must be made about unused compute. If each unit uses 20% of capacity, do they each pay 20% of the monthly price — leaving 40% unaccounted for? In this scenario, each business unit pays proportionally so that the full $5,300 is covered (i.e., they also pay for their share of unused compute).
📋 Implementation Steps
- Get total cost from Azure Cost Management — straightforward with a single reservation and matching capacity size ($5,300/month)
- Open the Chargeback App → navigate to the Domain tab to see the top N domains across all capacities
- Read the Grand Total % or Utilization CU for each domain (business unit)
- Calculate charges: Total Cost × Domain Usage %
📊 Example Calculation
| Business Unit | Domain % (from App) | Monthly Charge |
|---|---|---|
| Finance | 45% | $5,300 × 0.45 = $2,385 |
| Planning | 35% | $5,300 × 0.35 = $1,855 |
| Operations | 20% | $5,300 × 0.20 = $1,060 |
⚠️ Key Takeaways
- Total cost was calculated outside the Chargeback App (Azure Cost Management)
- With multiple capacities sharing a reservation, calculating total cost becomes more complex — you must figure out blended rates
- A business decision was required on how to handle unused compute
- This approach relies on domains being correctly assigned — the chargeback admin should validate domain assignments regularly
Scenario 2: Charge Back via User IDs to Cost Centres
Setup: An F32 PAYG capacity with a base cost of $4,300/month, but the capacity is sometimes paused/restarted and occasionally scaled up — actual monthly cost is $5,100. Multiple shared development workspaces with users from various parts of the business.
Goal: Find each user's CU consumption, map to cost centres using an external lookup table, and charge back proportionally.
📋 Implementation Steps
- Get total cost from Azure Cost Management ($5,100, including scale-up and restart costs)
- Open the Chargeback App → navigate to the Users tab to see top N users by utilization
- Export user-level data using the Export Data page — get CU consumption per user
- Join with external mapping — match user IDs to cost centres using your HR/finance system
- Aggregate to cost centre level — sum CU usage per cost centre, calculate proportional charges
⚠️ Key Takeaways
- Total cost was already known but included effects of scale-ups and pause/restarts — the admin must understand these billing implications
- The solution was multi-faceted: Azure Cost Management + Chargeback App + external user-to-cost-centre mapping
- Consider automating the join between Chargeback App exports and your cost centre mapping for monthly efficiency
- Drill into the User Details page for any user to see which workspaces, items, and operations they consumed
Scenario 3: Multiple Capacities with Shared Ownership
Setup: Three F16 capacities (48 CU total). Capacity 1 is owned by Finance, Capacity 2 by Planning, Capacity 3 is co-owned by HR and Operations. A 32 CU reservation covers all three capacities, with savings apportioned equally.
Goal: Charge capacities 1 & 2 directly to their owners. Split Capacity 3 costs between HR and Operations based on workspace-level usage.
📋 Implementation Steps
- Calculate blended costs per capacity — the 32 CU reservation covers part of the 48 CU total. The reservation rate applies to 32 CU and PAYG applies to the remaining 16 CU. Split the reservation benefit equally across all three capacities.
- Capacities 1 & 2: No Chargeback App needed — send the blended cost directly to Finance and Planning respectively
- Capacity 3: Open the Chargeback App → use the Workspace tab (or drill down the hierarchy) to find CU usage per workspace
- Map workspaces to owners — HR and Operations each have a list of their workspaces assigned to Capacity 3
- Calculate Capacity 3 split: Blended Cost × (Team's Workspace CU / Total Capacity 3 CU)
⚠️ Key Takeaways
- Blended reservation + PAYG costs complicated the total cost calculation — this work happens entirely outside the Chargeback App
- An external workspace-to-team mapping was required for the shared capacity
- The chargeback admin should cross-check workspace assignments to ensure nothing is missing
- For dedicated capacities (1 & 2), the Chargeback App adds no value — just use Azure Cost Management
Scenario 4: Exclude Unused Compute (Central IT Absorbs)
Setup: An F128 capacity used by four business units, each with workspaces assigned to Fabric domains. Central IT has agreed that unused CU will not be charged to the business units — they pay only for what they actually consume.
Goal: Charge back only consumed compute to business units, with central IT absorbing unused capacity costs.
📋 Implementation Steps
- Get total cost from Azure Cost Management
- Identify the "Compute Pool" meter in the Azure bill — this represents unused CU cost
- Calculate used cost: Total Cost − Compute Pool Cost = Cost to distribute
- Open the Chargeback App → Domain tab to see proportional usage per business unit
- Apply proportional split to the used cost (not total cost)
📊 Example Calculation
| Component | Amount |
|---|---|
| Total monthly cost | $16,800 |
| Compute Pool (unused CU) cost | −$4,200 |
| Distributable cost | $12,600 |
| Business Unit | Usage % (from App) | Monthly Charge |
|---|---|---|
| Sales | 40% | $12,600 × 0.40 = $5,040 |
| Marketing | 25% | $12,600 × 0.25 = $3,150 |
| Engineering | 20% | $12,600 × 0.20 = $2,520 |
| Support | 15% | $12,600 × 0.15 = $1,890 |
| Central IT (unused) | — | $4,200 |
⚠️ Key Takeaways
- The key business decision was that users pay only for what they consume, not their proportional share of the capacity
- The Compute Pool meter in Azure is critical for identifying unused compute cost
- Remember: the Chargeback App shows proportional usage of used capacity (not available) — so the percentages from the app can be applied directly to the "used cost" figure
- This model shifts financial risk to central IT, which must budget for the unused compute gap
Chargeback Best Practices
Organizational and technical best practices for a sustainable chargeback implementation.
Organizational Readiness
📝 Document Your Policy
Create a written chargeback policy that covers: attribution model, handling of unused compute, reservation treatment, billing cycle, dispute resolution process, and escalation path. Get executive sign-off before implementing.
👥 Stakeholder Alignment
Involve finance, IT, and business unit leaders early. Chargeback succeeds only when all parties understand and agree to the model. Run a pilot with showback before switching to actual charge transfers.
📅 Regular Review Cadence
Schedule monthly or quarterly reviews of chargeback accuracy, dispute resolution, and model adjustments. As workloads shift, the model may need updating.
Technical Best Practices
- Enforce domain assignments: If using domain-based chargeback, ensure every workspace is assigned to a domain. Unassigned workspaces appear as "No domain" and can't be attributed. Build a validation process to catch gaps.
- Maintain workspace mappings: If using workspace-based attribution, keep an up-to-date mapping of workspaces to teams/owners. Cross-check monthly against the Chargeback App export.
- Automate the export-to-bill pipeline: Manually combining Azure Cost Management data with Chargeback App exports is error-prone. Consider building a Power BI report or Power Automate flow that joins the two data sources automatically.
- Monitor for anomalies: Set up alerts for unexpected spikes in CU consumption using the Capacity Metrics App. Investigate before bills go out to avoid disputes.
- Separate dev/test from production: Use different capacities (or at minimum, different workspaces with clear domain assignments) for dev/test and production. This simplifies chargeback and avoids mixing experimental costs with production.
- Understand billing for dynamic operations: Scale-ups, pause/restarts, and capacity overage all affect the total bill. Document how each is handled in your chargeback policy.
Maturity Model
| Level | Stage | Description |
|---|---|---|
| 1 | No Visibility | One central IT budget pays for all Fabric costs. No team knows their consumption. |
| 2 | Showback | Chargeback App installed. Teams receive monthly reports showing their usage percentage. No financial transfer. |
| 3 | Basic Chargeback | Proportional costs are transferred to business unit budgets monthly. Simple model (e.g., by domain %). |
| 4 | Advanced Chargeback | Blended reservation rates, unused compute handling, admin uplift, automated export-to-bill pipeline. Full FinOps integration. |
| 5 | FinOps Excellence | Self-service cost dashboards for teams. Automated anomaly detection. Budget forecasting based on CU trends. Teams self-optimize. |