Beast Modes re-derived as DAX measures
Every card-scoped and dataset-scoped Beast Mode is inventoried, deduplicated, and rewritten as a named DAX measure defined once — then checked against the number the Domo card shows today.
Domo to Power BI migration services
Fixed-fee Domo to Power BI migration for US small businesses, delivered by senior US-based Microsoft engineers: we rebuild Beast Mode calculated fields as tested DAX measures, Magic ETL dataflows as Power Query and Dataflows Gen2, and Domo cards as governed Power BI reports in your own tenant — with a written answer on the pieces Domo bundles that Power BI has no single equivalent for. One written price, typical delivery in 2–4 weeks, 30 days of hypercare included.
Representative dashboard — sample data
What you get
Domo ships connectors, storage, ETL, visualization, alerting and an app layer as one subscription. Power BI is one of those layers. Naming the other five, and who owns each afterwards, is most of this project.
Every card-scoped and dataset-scoped Beast Mode is inventoried, deduplicated, and rewritten as a named DAX measure defined once — then checked against the number the Domo card shows today.
Magic ETL tiles, SQL dataflows and Dataset Views become Power Query queries or Dataflows Gen2 — or move upstream into your warehouse, which is where several of those joins belonged before Domo made it easy not to.
Pages and collections become report pages. Card types with a native Power BI counterpart are rebuilt directly; the handful without one are called out in the scope with the substitute we propose, before you sign.
Personalized Data Permissions filters are re-expressed as row-level security roles with DAX filter expressions, so the same person sees the same rows — enforced at query time by the service.
Customer-facing dashboards get an embedding design of their own: capacity sizing, a service principal, Entra ID app registration and token flow, scoped as development work rather than assumed to be a setting.
Each phase ends with your figures side by side against the live Domo instance. Agreed check numbers have to match before anyone calls that phase finished or cancels a scheduled refresh.
How it works
A free consultation plus a pass over your cards, pages, DataSets, Magic ETL flows, connectors and PDP policies tells us what is actually used and where each number originates. You get a written scope, a phase plan, one fixed price and a delivery date.
We build the semantic model and its Power Query queries first, re-derive Beast Modes into DAX measures, rebuild each phase's pages as report pages, and reconcile them with your team against the live Domo cards.
Reports publish to your workspace with row-level security, a refresh schedule and a gateway where sources sit behind your firewall. Once the final phase is signed off you get the decommission list, and we stay on for 30 days of hypercare.
The defining fact about moving off Domo is not that the charts look different. It is that Domo sells connectors, cloud storage, ETL, visualization, alerting, chat and an app framework as one subscription, in one place, and Power BI does not. Power BI is the visualization and semantic-model layer of a platform whose other layers — storage, pipelines, notification, custom apps — are separate Microsoft products you already own or can add. A migration that treats this as a card-for-visual exercise runs out of road in week two, when someone asks where the DataSet actually comes from now.
So the first deliverable is a map, not a report. For every card that matters we trace the lineage backwards: card, to Beast Mode, to DataSet, to the Magic ETL flow that built it, to the connector that fed it, to the system of record behind that. Most of the time the system of record is still there and still reachable, and Power Query can be pointed straight at it, skipping the Domo copy entirely. Sometimes it is not, and a DataSet has quietly become the only surviving copy of something a retired system produced. That distinction sets the timeline more than the number of cards does, and it is why we read the instance before quoting.
Two things follow from that map. First, the scope names an owner for each of Domo's bundled layers — typically Power BI for reporting, your existing warehouse or a Fabric lakehouse for storage, Power Query or Dataflows Gen2 (opens in new tab) for transformation, and the on-premises data gateway (opens in new tab) for anything behind your firewall. Second, the scope says plainly which Domo capabilities have no single Power BI equivalent, so nobody discovers that at cutover.
Beast Mode is the piece teams worry about, and rightly. It is a calculated field authored in a SQL-like syntax and evaluated at query time against a single flat DataSet, which makes it easy to write and easy to write a lot of. Instances that have been live for a few years commonly hold hundreds of them, many defined on one card, invisible to everybody else, and quietly disagreeing with a near-identical Beast Mode on the card next to it.
DAX works from the opposite premise. It evaluates against a model of related tables, and its behaviour depends on filter context rather than on a single table's rows. Microsoft's own DAX documentation (opens in new tab) is the reference we work against, and CALCULATE (opens in new tab) — documented as evaluating an expression in a modified filter context — is the function that carries most conditional Beast Mode logic across. A CASE WHEN that flags a row usually becomes a Power Query column or a dimension attribute, not a measure. A SUM wrapped in a filter usually becomes a measure built on CALCULATE. An aggregate Beast Mode dividing two aggregates almost always becomes two measures and a third that divides them, which is where several long-standing averaging errors surface.
The consolidation is deliberate. Three Beast Modes that all compute revenue slightly differently become one measure and a written note about which of the three definitions the business chose. That conversation is uncomfortable and it is the single most valuable hour of the project. The result is a model built on star schema principles (opens in new tab) where a measure is defined once and reused, rather than a flat DataSet with logic scattered across the cards that happen to sit on top of it.
Magic ETL flows translate more predictably than Beast Modes do. Joins, appends, filters, group-bys, pivots and column derivations all have direct Power Query counterparts, and Power Query (opens in new tab) is where the light ones land. Heavy flows that several DataSets depend on are better as Dataflows Gen2 so the result is computed once and reused, and flows doing warehouse-scale work usually belong upstream in the warehouse or in a scheduled pipeline instead. A useful share of Magic ETL steps also turn out to exist only to reshape what a Domo connector delivered, and simply disappear when Power Query reads the source directly.
Being plain about the rest matters more than being optimistic. Domo's integrated ETL, alerting and app layer has no one-to-one Power BI equivalent, and we say that in writing before you sign rather than after. Domo alerting is a first-class feature attached to a card, with thresholds, subscribers and delivery to email, mobile and Buzz; the nearest Power BI arrangement is data alerts in the Power BI service (opens in new tab), extended with Power Automate wherever the notification has to do more than land in an inbox. Domo Apps, App Studio and custom Bricks are custom code hosted inside Domo, and Power BI simply has no place to put them; they are rebuilt as Power Apps or Power Pages, or retired, and each one is a line item rather than a rounding error. Buzz conversations attached to cards become Teams conversations attached to a report, which is close in spirit and not the same thing.
Most Domo instances decompose into the same set of objects. The table below is the mapping we work from; the inventory in your written scope is a filled-in version of it, card by card and flow by flow.
| Domo object | What it actually holds | Where it lands in Power BI |
|---|---|---|
| Card | One visualization plus the filters, sorting and card-scoped Beast Modes saved with it | A Power BI visual on a report page, with card-scoped logic promoted into shared measures on the model |
| Page, dashboard and collection | An arrangement of cards with page-level filters and its own sharing list | Report pages with a filter pane and bookmarks, published in a workspace with an app audience for the sharing list |
| Beast Mode calculated field | SQL-like expression evaluated at query time against one DataSet | A named DAX measure, or a Power Query column where the logic is row-level rather than aggregate |
| Aggregate Beast Mode | An expression combining aggregates, often a ratio of two sums | Separate measures for numerator and denominator plus a third that divides them, so totals stay correct at every grain |
| DataSet | A flat table stored in Domo's cloud, refreshed by a connector or a dataflow | A table in the semantic model, sourced from the original system where it is reachable, or from an export you own where it is not |
| Magic ETL dataflow | Drag-and-drop transformation tiles chained into a flow | Power Query queries, Dataflows Gen2 for shared heavy logic, or a pipeline upstream in the warehouse |
| SQL dataflow and Dataset View | Set-based transformation expressed directly as SQL | A view or stored procedure in the warehouse, usually the cleanest destination, with Power Query reading the result |
| Cloud connectors | Managed extraction from SaaS sources on a schedule | Power Query connectors where one exists; an Azure Data Factory pipeline where the API needs real handling |
| Workbench jobs | An on-prem agent pushing local database and file data up to Domo | The on-premises data gateway, which pulls on a schedule instead of pushing |
| Personalized Data Permissions (PDP) | Row filters applied per user or group at the DataSet level | Row-level security roles with DAX filter expressions, enforced by the service at query time |
| Card alerts and subscriptions | Threshold notifications and scheduled card delivery | Power BI data alerts and report subscriptions, with Power Automate where the alert has to trigger something |
| Domo Everywhere embedding | Public or private embed of cards and pages into an external site or product | Power BI Embedded: capacity, a service principal, Entra ID app registration and embed tokens issued by your application |
| Domo Apps, App Studio and Bricks | Custom HTML, CSS and JavaScript hosted inside the Domo instance | No equivalent — rebuilt as a Power App or Power Pages site, or retired by agreement |
| Buzz | Conversation threads attached to cards and pages | No equivalent — report comments plus the Teams channel the report is published into |
| Publish groups and instances | Content pushed from a parent instance to child instances | Deployment pipelines between workspaces, or one workspace per audience with a shared model |
Three rows in that table decide a timeline. The DataSet row decides whether this is mostly modeling work or also a data-extraction project. The Domo Everywhere row decides whether an application team is involved. And the Apps row decides whether anything has to be rebuilt as software rather than as a report — which we would rather price in week zero than discover in week three.
Domo's chart library is broader than Power BI's out of the box, and pretending otherwise sets a project up to disappoint. Bar, line, combo, stacked, pie, donut, gauge, table, heat map, scatter, bubble, funnel, waterfall and map cards all have native Power BI visuals, and those rebuild directly. Sankey diagrams, word clouds, calendar heatmaps, radial and chord layouts and several of Domo's more decorative card types do not.
For each of those we put a choice in the scope rather than a surprise in the delivery. Some are best served by a certified visual from AppSource, and Microsoft's guidance on Power BI custom visuals (opens in new tab) covers what your tenant administrator has to allow before one can be used — a governance decision, not a design one, and worth making before the build. Others are better redesigned: a Sankey showing where orders drop out is frequently clearer as a funnel with a decomposition tree behind it. A handful are cosmetic and simply retire. What does not happen is a like-for-like promise we cannot keep.
If you embed Domo content into a customer-facing product, that is a second project inside the first, and it deserves separate scope. Domo Everywhere hides a lot: identity, filtering per customer, and delivery are largely configuration inside Domo. Power BI Embedded (opens in new tab) reaches the same destination by a route your own application walks: an embed-for-your-customers model, capacity sized for concurrency rather than headcount, a service principal registered in Entra ID, and embed tokens minted server-side so no customer ever holds a Power BI licence. Row-level security carries the per-customer filtering, using the same roles built for internal reporting, which is one of the places the migration genuinely pays back.
The honest framing is that this is application work with a Power BI dependency, not a Power BI setting. We scope it as its own phase, with its own reconciliation: the same customer, signed in to your product, sees the same numbers they saw before cutover.
Domo does not publish list pricing; it is quoted per contract, so the only reliable figure for what you pay today is on your own renewal paperwork. Power BI is the opposite, and that asymmetry is worth using: Microsoft publishes Power BI pricing (opens in new tab) openly, with Power BI Pro at $14 per user per month and Premium Per User at $24, so you can build the after side of the comparison exactly before you commit to anything.
The comparison people get wrong is the shape of it, not the arithmetic. Domo's fee covers storage, ETL and delivery as well as viewing, so a per-seat swap flatters Power BI. Count the whole picture: Pro seats for everyone who opens or builds a report, plus whatever now holds the data, plus embedding capacity if you have external users. Check the Microsoft 365 plan you already pay for first — E5 includes Power BI Pro, and the seat plans most mid-market companies run do not. Our guide to Power BI licensing for small business works through the mix in detail, and what a Power BI dashboard actually costs covers the build side of the budget.
| Cost line | Under Domo | Under Power BI |
|---|---|---|
| User access | Quoted per contract; not published as a list price | Power BI Pro at $14 per user per month, or Premium Per User at $24 (Microsoft list prices) |
| Already included in Microsoft 365? | No — a separate subscription in every case | Pro is included with Microsoft 365 E5; Business Basic, Standard, Premium and E3 need the Pro add-on |
| Data storage | Bundled: DataSets are stored in Domo's cloud | Your responsibility — an existing warehouse, a Fabric lakehouse, or imported model storage |
| ETL and transformation | Bundled: Magic ETL, SQL dataflows and connectors | Power Query is included; Dataflows Gen2 and Azure Data Factory are billed where used |
| External and embedded users | Bundled into the Domo Everywhere arrangement you negotiated | Capacity-based, sized for concurrency, plus the application work to issue embed tokens |
| Where the data physically sits | Domo's cloud, under Domo's terms | Your own Microsoft tenant and your own storage, under your existing agreements |
Prices shown are Microsoft's published list prices for Power BI at the time of writing; your own Domo figure comes from your contract, and we build the comparison with your numbers rather than assumed ones.
It fits small and mid-size US organizations running a Domo instance with a renewal date in view, a Microsoft 365 tenant already paid for, and a growing sense that the reporting layer and the data platform should not be the same vendor. It is scoped as one fixed-fee project with a stated end date, not a rolling program, and we are candid when a card is better retired than rebuilt — in most instances a meaningful share of cards have not been opened in a year.
If the incumbent is a different platform, a sibling page fits you better, and the differences are real rather than cosmetic. Our Tableau to Power BI migration service deals with workbooks that carry their own calculation logic, where LODs and table calculations are the translation problem and the data platform underneath is usually already yours. Our QlikView to Power BI migration service is dominated by the associative engine and the QVD layer. Our Cognos to Power BI migration service starts from a Framework Manager package that already holds a modeling layer, so the work is rationalization and validation rather than reconstruction. Our MicroStrategy to Power BI migration service sits at the other end of the spectrum entirely: attributes, facts and metrics declared once in a project metadata repository, where the translation problem is level metrics into DAX rather than Beast Modes into measures. Domo is unlike all four because the vendor also owns your ETL, your storage and, if you embed, your delivery channel — so the question is never only how the charts get rebuilt, but which product takes over each of the layers that came in the box.
Once you have landed on Power BI, the work usually continues. Our fixed-fee Power BI dashboard development service covers reports built new on the model rather than migrated onto it, and our Azure Data Factory pipeline development service builds the scheduled loads that take over from your connectors and Magic ETL flows.
Most Domo instances sort cleanly into three phases. The table shows scope and typical timeline rather than prices, because an honest number requires reading your instance first — the same principle described on how our fixed-fee process works.
| Phase | Scope | Typical timeline | Fee |
|---|---|---|---|
| Phase 1 — core model and executive pages | The pages leadership opens weekly: semantic model built from the traced lineage, headline Beast Modes re-derived as DAX and reconciled against the live cards, workspace and access configured | About the first week | Fixed fee — scoped after your free consultation |
| Phase 2 — departmental pages and dataflows | Finance, sales or operations pages rebuilt on the shared model, Magic ETL flows converted to Power Query or Dataflows Gen2, PDP policies re-expressed as row-level security, a walkthrough per team | Weeks 2–3 | Fixed fee — scoped after your free consultation |
| Phase 3 — embedding, long tail and decommission | Domo Everywhere embedding rebuilt on Power BI Embedded where you have external users, alerts and subscriptions re-created, low-traffic cards rebuilt, consolidated or retired by agreement, plus the written list of connectors and licences you can cancel | Week 4 and close-out | Fixed fee — scoped after your free consultation |
Nothing is switched off early. Your Domo instance keeps refreshing on its existing schedule while Power BI reads the same sources alongside it, so both can sit on one screen while your team argues about the numbers before anyone commits. Everything produced is yours from the first day: the semantic model, the report files, every measure and query, and the workspace configuration all live in your own Microsoft tenant, never in ours.
Related services
Fixed-fee dashboard development for the reports you want built new, once your reporting has landed on Power BI.
Scheduled pipelines that take over the extract and reshape work your connectors and Magic ETL flows were doing.
The scoping process, what a written fixed-fee proposal contains, and what happens after delivery.
Pro vs Premium Per User vs Fabric, explained for small business budgets.
How scope, data sources and modeling work drive a fixed-fee dashboard price.
What to ask, what to check, and the answers that should make you walk away.
FAQ
No. Beast Mode is SQL-like and evaluated against one DataSet at query time, while DAX evaluates against a model with relationships and filter context. We read each Beast Mode, decide whether it belongs in Power Query, a calculated column or a measure, then reconcile the result against the Domo card it came from.
Magic ETL dataflows are rebuilt as Power Query queries, as Fabric Dataflows Gen2, or pushed upstream into your warehouse, depending on how heavy each one is. Steps that only existed to work around a Domo connector usually disappear, and the ones carrying business rules are rewritten and tested against yesterday's output.
Most will. Bar, line, combo, pie, map, table and gauge cards have direct Power BI counterparts. Sankey, word cloud, calendar heatmap and a few other Domo chart types have no native equivalent, so each one is either rebuilt with an AppSource custom visual or redesigned to answer the same question.
In your own Microsoft tenant, not ours and not Domo's. Wherever the original source system is still reachable we re-point Power Query at it. Where a Domo DataSet has become the only surviving copy, we export it and land it somewhere you own before anything is switched off.
Power BI Embedded. It reaches the same outcome by a different route: capacity sized for your traffic, a service principal and Entra ID application registration, and embed tokens issued by your own application. Budget real development time for it, because Domo Everywhere hides configuration that Power BI expects your app to own.
Power BI Pro is a published list price of $14 per user per month; Domo is quoted per contract, so only your renewal paperwork shows the number you are comparing against. The honest comparison also counts what Domo bundled, such as its warehouse and ETL, which you may now pay for separately.
Book a free consultation
Tell us what you’re trying to fix — a report, an approval process, an intranet, a Copilot rollout. We scope it as a fixed-fee project, you approve, and a senior engineer delivers in 2–4 weeks.
The fastest way to reach us is the form — tell us the task and we’ll reply within one business day.