Domo to Power BI migration services

Domo to Power BI migration services that unbundle cards, Beast Modes and Magic ETL

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.

  • Fixed-fee scoped projects
  • Senior US-based engineers
  • Typical 2–4 week delivery
  • 30 days of hypercare
Revenue Overview Revenue$4.2M Margin38% Orders12.4k Churn2.1% Monthly performance By segment 64%

Representative dashboard — sample data

What you get

One platform taken apart into the Microsoft pieces that replace it

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.

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.

Magic ETL rebuilt in Power Query

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.

Cards rebuilt as pages, honestly

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.

PDP policies become row-level security

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.

Domo Everywhere replanned on Power BI Embedded

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.

Reconciliation you sign off

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

Three steps from a Domo instance to a governed Power BI workspace

  1. 1

    Inventory the instance, trace the lineage

    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.

  2. 2

    Rebuild the model, then the pages

    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.

  3. 3

    Cut over before the renewal date

    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.

Domo is a bundle; Power BI is a layer you assemble

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 SQL against a DataSet; DAX is a language for a model

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, and the parts with no one-to-one equivalent

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.

Where each Domo object lands

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.

Card types with no native Power BI counterpart

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.

Embedded analytics after Domo Everywhere

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.

What the licence swap does and does not save

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.

Who this is for

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.

Delivery in three phases

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.

FAQ

Domo migration questions, answered

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

Get more from the Microsoft tools you already pay for

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.

  • Fixed-fee scope agreed before any work starts
  • Senior, US-based Microsoft engineers — no handoffs
  • Typical 2–4 week delivery
  • 30 days of post-delivery hypercare included

The fastest way to reach us is the form — tell us the task and we’ll reply within one business day.

All fields are required.

We reply within one business day. No newsletters, no drip campaigns.

Book a Free Consultation