Power BI Cost Reports Broken After EA to MCA Migration — Causes and Fixes
When your billing agreement changes from EA to MCA, the Power BI Cost Management connector needs a new connection — Microsoft's migration documentation says to "choose Billing Profile ID instead of the enrollment number" — and it returns data with a different schema, so DAX measures, calculated columns, and visual bindings built against EA columns can break. Your credentials are fine; the data model underneath changed. You can rebuild against MCA columns, add a renaming layer, or point reports at a data source that preserves EA naming.
Why did the report break if nothing was deleted?
Two things changed underneath your report the day the agreement flipped:
The connection identity. The connector scopes to a billing account. Under EA that's an enrollment number; under MCA it's a billing account or billing profile. Microsoft's EA-to-MCA setup guide is specific: "When using the Azure Cost Management connector in Power BI, you need to choose Billing Profile ID instead of the enrollment number in the Scope list. Then enter the 14-character Billing profile ID." Permissions differ too — EA wanted Enterprise Administrator (read-only) or greater; MCA wants Contributor on the billing account or profile.
The schema. The
connector documentation
gates tables by agreement type — Balance summary is EA-only; Billing events, Charges, and Credit lots
are MCA-only — and the migration guide notes "the scope differs. There are more attributes in MCA."
Column naming shifts as well: current EA exports are PascalCase, MCA mostly camelCase, and reports
built years ago may reference legacy EA names (PreTaxCost, UsageDateTime,
SubscriptionGuid, InstanceId) that don't appear in MCA data at all. Any DAX
measure, calculated column, or visual bound to a name that no longer arrives breaks quietly or loudly.
What are your options?
1. Rebuild the report on the MCA schema (free, one-time cost)
Reconnect with the billing profile ID, then rework measures and bindings against MCA column names. This is the cleanest long-term DIY answer if you have one or two simple reports. The costs: every measure and visual referencing a changed column needs touching, and your EA-era history doesn't join cleanly — the old data has the old columns (see bridging both timelines).
2. Add a Power Query renaming layer (free, fragile)
Insert a step that renames MCA columns back to the names your DAX expects. It works, per report, until it doesn't: each report carries its own mapping, new MCA-only columns still need handling, and every schema evolution or new report repeats the exercise. Reasonable as a bridge; painful as a standard.
3. Move to exports + FinOps toolkit / Fabric (free toolkit, new pipeline)
Microsoft's strategic direction — Cost Management exports into FinOps hubs, optionally Data Explorer or Fabric, with the toolkit's prebuilt reports. Powerful at scale, but it's a new reporting stack, not a fix for your existing one: you adopt new models and operate the pipeline. See our comparison for when that trade is worth it.
4. Point the report at a source that carries all three naming conventions
MCA Continuity collects cost data into a SQL database in your tenant, and its
CostManagement_Usage view exposes EA, MCA, and PAYG column names simultaneously —
Cost = CostInBillingCurrency = PreTaxCost,
Date = UsageDate, SubscriptionId = SubscriptionGuid,
ResourceId = InstanceId. Change the report's data source from the connector
to SQL DirectQuery, and existing DAX measures and visualizations are designed to keep working without
modification — whichever convention they were written against. DirectQuery also removes the dataset
import, so there's no refresh window and no spend ceiling; it runs on a standard S0 SQL database
(~$15/month).
Frequently asked questions
Which column names changed between EA and MCA?
Do I have to know which naming convention my reports use?
How long does swapping the data source take?
Is the Cost Management template app an option after migration?
The maintained alternative
MCA Continuity deploys from the Azure Marketplace in about 5 minutes, needs one 2-minute PowerShell script, and connects to Power BI in about 5 more — no Fabric capacity, no pipelines, entirely inside your tenant.
Related guides
- EA vs. MCA Cost Export Column Names — Mapping Reference
A bookmarkable mapping table of EA, MCA, and legacy column names for Azure cost exports, sourced from Microsoft's dataset schema docs.
- EA Cost History Missing After MCA Migration — Bridging Both Timelines
Why historical EA costs don't appear under your MCA billing account, who can still access them, and how to build one continuous timeline.
- Azure Cost Management Connector Refresh Timeouts and the $2–5M Spend Cap
What Microsoft documents about the connector's scale limits, and the options when refreshes start timing out.
Last updated: July 15, 2026. MCA Continuity is designed to work across a wide range of Azure environments. Results may vary based on tenant configuration and Microsoft API availability. See our Terms of Use for details. Microsoft, Azure, and Power BI are trademarks of Microsoft Corporation. This page describes documented behavior of Microsoft services and links to official Microsoft documentation.