Skip to main content
Moonira
How-To

Power BI + Fabric: the reporting stack that scales

Most teams set up five Power BI reports, nobody trusts the numbers, and Excel keeps running the business. Here is the real build.

8 min read
Julius Forster

Julius Forster

CEO

Power BI sales pipeline dashboard showing deal stages, revenue forecasts, and KPI tiles in the Power BI Service

Almost every mid-market company we walk into has Power BI. They got it because Microsoft 365 already bundled it, or because the IT team rolled it out alongside Fabric, or because the last CFO wanted dashboards. Two years later, the same pattern: five default reports, three of them broken, and the CFO still running the actual close in Excel.

The licensing is paid for. The gateway is installed. Someone on the team knows DAX. And yet the BI investment is not driving any decisions, because nothing wired Power BI to the operation itself.

This is the gap we keep filling. Below are the symptoms, the four automation plays we run on top of Power BI for mid-market ops teams, how the integrations should look, and where ROI actually lands.

The Reporting Problem Most Power BI Customers Have

The pattern is consistent across finance, ops, and revenue teams. The same five symptoms show up before we are brought in.

  • Two teams pull the same metric and get two different numbers, because revenue is calculated three ways across three reports.
  • Dashboards exist, but nobody trusts them enough to use them in a meeting. The board pack still gets rebuilt in Excel every month.
  • Multi-entity orgs end up with one report per company, so the holdco view is a manual rollup that breaks every time someone restructures.
  • Reports are static. A KPI blows past its threshold on Tuesday and nobody notices until the Monday review, because no one watches the dashboard live.
  • Copilot is turned on, but the answers are bad. The semantic model underneath is messy, so the AI hallucinates on the simplest question.

The root cause is the same in every case. Power BI was deployed as a viewer, not as infrastructure. Until somebody treats the semantic model, the security model, and the triggers as a real build, the rest is window dressing.

Automation Plays We Build with Power BI

1. One Semantic Model, Versioned Measures

Trigger: somebody asks in a board meeting why the revenue number on slide 4 is different from the rep dashboard.

Workflow: we consolidate sources (HubSpot or Salesforce for CRM, Business Central or NetSuite for ERP, Stripe or QuickBooks for billing) into Fabric Lakehouse or a dedicated SQL warehouse. We build one shared semantic model in Power BI with a single set of versioned measures (revenue, ARR, gross margin, CAC, NRR), each tagged with an owner and a definition that ships with the model. Every report points at that model. New measures go through a pull request flow in a git-backed Power BI project.

Outcome: the number in the board pack equals the number on the rep dashboard equals the number Copilot returns. Reporting stops being a source of internal argument.

2. Multi-Entity Row-Level Security Against Azure AD

Trigger: the org has three to ten operating companies (PE roll-up, holdco, franchise model) and is currently maintaining one Power BI report per entity, plus a master report for the CFO.

Workflow: we build one report and one model with row-level security mapped to Azure AD security groups. The model has an EntityID column on every fact table. RLS rules use USERPRINCIPALNAME() to filter rows based on the user's AD group. Operating company managers see only their entity. The holdco team sees consolidated. Audit sees everything tagged with timestamps. New entities get added by joining a group, not by forking a report.

Outcome: one report, one model, one source of truth. Maintenance drops from N reports to one. Onboarding a new acquisition takes minutes, not weeks.

3. Threshold Triggers via Data Activator and n8n

Trigger: a KPI crosses a threshold (AR aging past 60 days, pipeline coverage drops below 3x, support backlog over 24 hours, inventory under safety stock) and nobody notices until the weekly review.

Workflow: we attach Data Activator rules to the measures that matter. When a rule fires, Data Activator hits a webhook into n8n (or Power Automate). n8n routes the event into the right system: a Slack or Teams ping to the AR clerk with the customer and dunning template, a HubSpot task auto-created for the AE on a deal that is slipping, a draft PO in NetSuite when a SKU dips below safety stock. Every trigger is logged so the team can tune sensitivity.

Outcome: Power BI stops being a viewer and starts being a sensor. Operators get told when something needs them, instead of having to remember to check the dashboard.

4. Embedded Reporting In Teams, SharePoint, And Outlook Digests

Trigger: the team has Power BI usage metrics that show 12 out of 200 license holders opening a report in any given week, while the same people open Teams 80 times a day.

Workflow: we embed Power BI tiles directly into the Teams channels where work happens (the AE channel sees pipeline, the AR channel sees aging, the ops channel sees throughput). We embed the same model into SharePoint sites the team already lives in. We schedule a Monday morning Outlook digest with the three tiles each role cares about, generated as paginated reports so they render properly in email. Mobile users get the Power BI mobile app preconfigured with the right favourites.

Outcome: report usage rises from a handful of analysts to most of the org. Operators look at the data because the data shows up where they already are.

How Power BI Should Integrate With Your Stack

A Power BI deployment is only as good as the data feeding it and the tools it pushes into. We tend to wire it like this:

  • Source data into Fabric Lakehouse or a dedicated warehouse (Synapse, Snowflake, or Postgres), with Dataflows handling reusable transformations and incremental refresh.
  • Identity and access controlled by Azure AD groups, with row-level security policies versioned in source control.
  • Triggers from Data Activator into Power Automate or n8n, with branching by event type to Slack, Teams, HubSpot, Salesforce, or NetSuite.
  • Distribution into Teams (tabs and channel apps), SharePoint pages, embedded portals for customers, and paginated PDFs for board packs.
  • Copilot in Power BI tuned against the clean semantic model so natural-language queries return the same number the dashboards do.
  • Monitoring on gateways, dataflow refreshes, and capacity utilisation, with alerts that name the broken step so the on-call engineer can fix it before Monday.

What ROI Actually Looks Like

Numbers below are indicative, not promised. They are what we typically see across mid-market clients ($5M to $200M revenue) in the first two to four months after a Power BI rebuild like this.

  • Finance close: typically 1 to 3 days faster, because the board pack rebuilds itself from the model instead of being re-stitched from exports.
  • AR collections: cash collection cycle usually shortens by 5 to 15 percent within a quarter, because aging tripwires get acted on the day they fire, not at month end.
  • Analyst capacity: ad-hoc report requests usually drop 40 to 60 percent once Copilot is tuned against a clean semantic model, freeing the data team for actual modelling work.
  • Report adoption: weekly active users on Power BI lands between 3x and 5x the pre-rebuild baseline once tiles show up in Teams and SharePoint.
  • Multi-entity ops: maintenance hours per entity report drop by 70 to 90 percent once one model with RLS replaces N forked reports.

The numbers vary by company, source data quality, and how much the team is willing to retire spreadsheets. They are the kind of outcomes a CFO can defend to a board, not a feature checklist.

Where Teams Go Wrong

Most failed Power BI deployments fail in the same handful of ways.

  • Building reports before building the model. Every report becomes a one-off with its own measures, and within six months the same KPI returns three different answers.
  • Skipping row-level security. The team forks reports per entity, then forks again per region, and the report sprawl makes maintenance impossible.
  • Turning Copilot on without cleaning the model. The first three answers are wrong, the team loses trust, and the AI features get switched off permanently.
  • Treating BI as a viewer. Without triggers and embedded distribution, dashboards become a destination nobody visits. The data exists, the action does not.
  • Letting Fabric capacity run unmonitored. F-SKUs can be wasted in days by a runaway notebook or a poorly written DAX measure, and finance only finds out when the bill arrives.

Where Moonira Comes In

If the picture above looks like your Power BI estate (paid for, half deployed, mostly ignored), we build the rest. One semantic model, RLS that scales with the org chart, Copilot tuned on a clean foundation, triggers that turn reports into action, and distribution into Teams and Outlook so the operators who need the numbers actually see them.

We are not a reseller and we do not bill by the dashboard. We treat Power BI as infrastructure and ship a system the CFO can defend, the ops team can use without training, and the data team can extend without rebuilding from scratch.

Want us to build this for you?

We build custom automation systems for mid-market companies. You don't pay until you're blown away with the results.

© 2026 Moonira. All rights reserved.

Logos provided by Logo.dev