An industrial manufacturer whose 25 sites each reported on their own terms. One governed model now serves the network, and every viewer sees only their own numbers.
Every site could report on itself and none could be compared with another, because the numbers that make a network comparable are also the numbers a site manager should not see for a neighbouring site. One governed model with the access rules inside it solved both.
months from the first review to group-wide reporting
7
Anonymised by sector and size, because the confidentiality that protects this client would protect you too. Sector and outcomes are real; identifying detail is not.
Before and after
25 site reports
25 sites, 25 reportsEach on its own terms and in its own layout, largely in Excel
No network-level viewNo site could be compared with another
Access decided by who had the fileThe reason the obvious fix could never be signed off
One network report
One report, a different view for each viewerA site manager sees site 07; group operations see all 25 side by side
The access rules sit in the modelCarried by the model rather than by who has the file
The assistant answers inside the same rulesAsked about a neighbouring site, it declines: that site is outside the role
Before, every site reported on its own terms and in its own layout. Now one network report reads one governed model, and the same report shows a site manager their own site and group operations all 25 side by side.
The engagement in full
Client
A manufacturer of 1,000 to 5,000 people with 25 production sites, each reporting on its own terms and largely in Excel.
Situation
Site-level reporting existed and network-level reporting did not, and the access question sat on top of it: the numbers that make a network comparable are also the numbers a site manager should not see for a neighbouring site.
Mandate
Introduce Microsoft Fabric from scratch and move the group from site-level reporting to one group-wide reporting platform, without opening each site’s numbers to the others.
What we built
FoundationA review of the site-level reporting that showed why no network-level view existed and where the access rules would have to sit.
ActivationUnified governed reporting across the network, with enterprise row-level security carrying the access rules, so every stakeholder sees exactly their own numbers and only those.
AccelerationAI on the governed network model that answers within the same row-level security, so nobody can ask their way into a neighbouring site’s numbers.
One report, a different view for each viewer
The obvious fix, putting every site in one place, was the thing nobody could sign off. So the access rules sit inside the model rather than around it: the same report shows a site manager their own site, shows group operations all 25 side by side, and the assistant answers within the same rules. Asked how a neighbouring site ran this month, it answers only for the site the viewer’s role covers.
The layer that was missing
Every site keeps its own systems. What was missing was the layer above them: shopfloor, production and ERP data conformed into one site and asset model, read by 3 domain models over Direct Lake. Reports and the assistant read under the same security.
How access is enforced
Roles are driven entirely by Entra security groups, so access changes without anyone touching the model.
Entra security groupMembership is the only thing anyone assigns
OneLake Security roleAround 60 roles, defined once
Model and assistantRead under the viewer’s role
What the viewer seesTheir own sites, and only those
The architecture
Site systems into a medallion lakehouse, conformed into one site and asset model, and read by 3 domain models. Reports and the assistant read under the same security.
Architecture decisions
Decision
Rejected alternative
Why
The access rules sit in the model, not around it
A report or a workspace per site
That multiplies the model by the network and puts the comparison back out of reach.
One model for the network, not one per site
A model per site
A model per site is easy to secure and impossible to compare across, and comparing the sites was the reason the network needed reporting at all.
AI inside the same row-level security
An assistant with a path of its own
An assistant on a governed model inherits the model’s security, or it becomes the second way in that the first one was built to prevent.
What the client has today
One screen for the group-wide OEE comparison across all 25 sites.
Month-end closed on the cockpit rather than from site workbooks.
Every viewer sees exactly their own sites, through around 60 roles driven by Entra security groups.
A new plant onboarded as standard work rather than as a project.
Fabric production capacity sized from measured load rather than from an estimate.
AI answering inside the same security the reports run on.
For your IT team
How the network is kept separate without the topology growing with it.
Bronze, Silver and Gold across DEV, TEST and PROD. Sites are separated by roles rather than by separate systems, so the topology does not grow with the network.
Private Link and managed private endpoints, so data moves on the private network.
Customer-managed keys for the data at rest.
Purview sensitivity labels, with dynamic data masking on the columns that need it.
Where it left them
One reporting layer for a network that had been reporting in pieces, with the security model doing the work that used to be done by simply not sharing the file.
A retailer with Microsoft Fabric already in production, semantic models over Direct Lake and store revenue streaming in, who wanted forecasting, Copilot questions and anomaly detection on top of it.