# Migrate from Power BI to Holistics > Step-by-step guide to migrate a Power BI project — semantic models, DAX measures, and reports — to Holistics. This is the overview of the migration process from Power BI → Holistics: 1. Convert your `.pbix` file to a `.pbip` project By converting to a `pbip` project, the semantic model is exposed in TMDL and measures are exposed in DAX In Power BI, go to `File > Save As > Power BI Project (*.pbip)` 2. [Connect Holistics to your data warehouse](/docs/connect/) 3. Migrate the project one concept at a time: - (Optional) Move heavy ETL out of Power Query (M) into upstream SQL or dbt - Convert PBI **tables** to Holistics models (table or query type) - Convert **relationships** to Holistics dataset relationships - Convert **DAX measures** to AQL or SQL metrics - Convert **calculated columns** to dimensions - Rebuild **reports** as Holistics dashboards 4. Validation: - Compare a sample of measure values between PBI and Holistics - Re-create one report end-to-end and review with a stakeholder before scaling out :::note Items that need manual migration A few Power BI features map to Holistics concepts that live outside the `.pbip` project, so they can't be lifted from TMDL or JSON. Plan to re-create them manually: | Power BI | Holistics equivalent | Notes | | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------- | | [Data alerts](https://learn.microsoft.com/en-us/power-bi/create-reports/service-set-data-alerts) | [Alerts](/docs/delivery/data-alert) | Re-create thresholds and recipients in Holistics. | | [Scheduled refresh / subscription](https://learn.microsoft.com/en-us/power-bi/connect-data/refresh-data) | [Schedule & email reports](/docs/delivery/export-data) | Holistics schedules send dashboard snapshots; no warehouse refresh job needed. | | [Embed in app / Publish to web](https://learn.microsoft.com/en-us/power-bi/developer/embedded/embedded-faq) | [Embedded analytics](/embedded) | Embed tokens and iframe URLs must be reissued. | | [Share link / publish to web link](https://learn.microsoft.com/en-us/power-bi/collaborate-share/service-publish-to-web) | [Shareable link](/docs/delivery/shareable-links) | Generate fresh links in Holistics and update any docs / wikis that point to PBI. | Each of these has a Holistics [REST API](/api/) you can use to bulk-create them from a CSV or script, which is the fastest path when you have dozens of alerts or embeds to migrate. ::: ## Project structure If you're used to a `.pbip` folder layout, here's how the same project looks in Holistics: ``` power-bi-project/ holistics-project/ project.pbip models/ project.Dataset/ tables/ definition/ orders.model.aml model.tmdl users.model.aml tables/orders.tmdl queries/ tables/users.tmdl active_users.model.aml expressions.tmdl (M code) project.Report/ datasets/ definition.pbir ecommerce.dataset.aml report.json marketing.dataset.aml dashboards/ sales.page.aml performance.page.aml ``` ## Agentic migration process With the above conceptual mapping, a coding agent with the [`holistics-migrate-power-bi`](https://github.com/holistics/skills/tree/main/plugins/holistics-migrate-power-bi) skill can handle migration smoothly. ### Prerequisites Before you run the skill: - A `.pbip` export of Power BI - In Power BI Desktop, go to `File > Save As > Power BI Project (*.pbip)`. - Turn off **Auto date/time** to keep `LocalDateTable_*` artifacts out of TMDL. - A warehouse Holistics can [connect](/docs/connect/connect.md) to - Holistics project set up for [local development](/docs/development/local-agentic-development) - The [holistics-migrate-power-bi](https://github.com/holistics/skills/tree/main/plugins/holistics-migrate-power-bi) skill installed ### Run the migration Open your Holistics project in the IDE, drop the `.pbip` folder alongside it, and send one prompt: ``` /holistics-migrate-power-bi migrate this power bi project into holistics ``` The workflow runs through the project in seven phases: 1. Inventory: read TMDL, DAX, relationships, report JSON; list warehouse schemas 2. Models: write one `.model.aml` per Power BI table, validate after each 3. Dataset: write `.dataset.aml` with models and relationships 4. Metrics: convert DAX to AQL 5. Dashboard: write `.page.aml` canvas dashboard with filters, visuals, and layout 6. Parity: run metrics across dimension combinations, compare totals against Power BI 7. Sync: `holistics sync-code` to push to Holistics ## Validation checklist After the migration finishes, sanity-check the result before handing it to stakeholders: - [ ] Project compiles cleanly (`holistics aml validate`) - [ ] Dataset diagram view shows the same star schema as Power BI - [ ] Each DAX measure has a corresponding AQL metric, and totals match for a known date range - [ ] Role-playing date relationships (active vs inactive) resolve the same joins Power BI used - [ ] Dashboard pages mirror the Power BI report's layout and totals - [ ] Row-level security rules produce the same row counts per user ## Additional resources - [Conceptual Differences](/docs/from-others/power-bi/conceptual-differences) - [Project Structure](/docs/development/project) - [Local development with AI agents](/docs/development/local-agentic-development) - [Quickstart](/docs/quickstart) - [AML Documentation](/as-code/aml)