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?
The current schemas differ mainly in casing — EA exports are PascalCase (CostInBillingCurrency, Date, BillingCurrencyCode) while MCA is mostly camelCase (costInBillingCurrency, date, billingCurrency) — plus MCA-only columns like costInUsd and invoiceId. Reports built on older EA data may also reference legacy names like PreTaxCost, UsageDateTime, SubscriptionGuid, and InstanceId. See our full mapping reference for the verified table.
Do I have to know which naming convention my reports use?
Not with MCA Continuity — the CostManagement_Usage view exposes EA, MCA, and PAYG column names simultaneously (Cost = CostInBillingCurrency = PreTaxCost, Date = UsageDate, SubscriptionId = SubscriptionGuid, ResourceId = InstanceId), so whichever convention your DAX references, the column exists.
How long does swapping the data source take?
Per the product page: about 5 minutes to connect Power BI to the SQL view, after a 5-minute Marketplace deployment and a 2-minute permissions script — roughly 30 minutes end to end to working dashboards.
Is the Cost Management template app an option after migration?
No. Microsoft's migration documentation states: "When you convert an EA enrollment to MCA, you can't use the Cost Management Power BI template app any longer because the app doesn't support MCA."

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

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.