The bottom line
Microsoft Fabric lands ERP, MES, SCADA, historian, quality and spreadsheet data into one storage layer, OneLake, in Delta Parquet — replacing the copy-and-reconcile pattern between plant and finance systems with one governed model where work orders, batches, downtime and quality can be joined at a common grain. The hard part is never Fabric: it is OT/IT ingestion (OPC-UA is not a native Eventstream source — you need an edge hop), mapping machine identifiers to ERP work centres, and ERP timestamps that record administration not physics. The design work lives in Silver, at the entity level — work order, batch, downtime event, quality hold, BOM. Define OEE, OTIF, scrap, first-pass yield and DIO once in Gold, with the denominator visible. Ship one production-order slice in six weeks; widen OT ingestion after. Fabric is not a manufacturing application — it is the layer beneath where their data becomes comparable.
In This Article
- 1The actual condition
- 2What Fabric does for manufacturing
- 3The estate as it actually is
- 4What Fabric changes at each layer
- 5Why OT/IT ingestion is the hard part
- 6Medallion applied to plant entities
- 7The metrics defined once
- 8Serving and alerting
- 9Capacity and cost governance
- 10A realistic implementation sequence
- 11Where this breaks
- 12What to do first
The actual condition of most mid-market estates
It is not an absence of data — an abundance of it, sitting in five systems that were never designed to be joined, plus a spreadsheet layer holding the joins together in one person's head. This guide is the reference I wish existed when a manufacturing operations or IT leader starts evaluating Microsoft Fabric.
It covers the estate as it actually is, what Fabric changes at each layer, why OT/IT ingestion is the part that overruns, how the medallion model applies to work orders and batches rather than to generic "raw and curated" boxes, which metrics get defined once, how serving and alerting work, what capacity governance actually requires, and a realistic sequence with a six-week first slice.
What does Microsoft Fabric do for a manufacturing business?
Microsoft Fabric is a single SaaS analytics platform that lands ERP, MES, SCADA, historian, quality and spreadsheet data into one storage layer, OneLake, in Delta Parquet format. For manufacturers it replaces the copy-and-reconcile pattern between plant systems and finance systems with one governed model where work orders, batches, downtime events and quality results can be joined at a common grain.
Fabric is not a manufacturing application. It does not schedule production, hold a batch record, or enforce a quality hold. It is the layer underneath those systems where their data becomes comparable. Understanding that boundary early saves a great deal of disappointment later.
The manufacturing data estate as it actually is
A typical mid-market estate contains six layers: ERP for orders and costs, MES for execution, SCADA and historian for machine signals, a quality system for inspections, a CMMS for maintenance, and a spreadsheet layer that reconciles all of them. Each holds a different grain, a different time base and a different set of identifiers.
| Layer | Grain it holds | How data gets out | The usual problem |
|---|---|---|---|
| ERP (SAP, D365, Business Central, Epicor, NetSuite) | Production order, material document, cost element | Mirroring, Data Factory, replication | Confirmations backflushed at shift end — timestamps are administrative, not physical |
| MES | Operation, work centre, shift, unit | Database extract or API, rarely clean | Work centre identifiers do not match ERP work centres |
| SCADA / historian | Tag reading at second interval | OPC-UA to edge gateway, then MQTT or IoT | Tag names encode meaning in a convention nobody documented |
| Quality (LIMS, QMS, paper) | Inspection lot, characteristic, result | Extract or manual export | Results recorded against a batch the ERP does not know by that number |
| Maintenance (CMMS) | Work order, asset, failure code | Extract | Asset register differs from the equipment list SCADA uses |
| Spreadsheet layer | Whatever the analyst needed | It does not — it is the output | It holds the only working mapping between the layers above |
That last row is the one to take seriously. The spreadsheet layer is not a symptom of laziness — it is undocumented integration logic, maintained by one or two people, and the single richest source of requirements you will find.
What Fabric changes at each layer
ERP: mirroring replicates a source database into OneLake as Delta tables with continuous change capture. Generally available sources include SQL Server, Oracle, Snowflake, BigQuery, Cosmos DB, PostgreSQL and SAP. SAP is a two-step route — SAP Datasphere replication flows land data in an ADLS Gen2 container, and Fabric's mirroring engine merges it into OneLake. For Dynamics 365, Link to Microsoft Fabric shortcuts Dataverse and finance/operations tables into a lakehouse, with up to 60 minutes of sync latency and a hard limit above 2,000 active Dataverse tables.
MES, quality and maintenance: almost always Data Factory pipelines against a database or API, landing raw into Bronze — no shortcut here, and no connector saves you the schema work. Spreadsheets: nothing in Fabric migrates a spreadsheet automatically. What Fabric gives you is somewhere for the logic to live once you have extracted it, and Power Apps and Power Automate give the data entry that spreadsheet was doing somewhere to live instead.
Why OT/IT ingestion is the hard part
OPC-UA is not a native Fabric Eventstream source. Plant data reaches Fabric through an edge hop: an OPC-UA connector publishes to an MQTT broker or Azure IoT Hub, and Eventstream ingests from there. Azure IoT Operations — which runs on Arc-enabled Kubernetes and includes an OPC UA connector and an edge MQTT broker — is a generally available Eventstream source that routes flows directly to OneLake. So the architecture has an edge tier whether you planned one or not.
Three things then decide the timeline, and none are Fabric decisions. Who owns the network segment — the historian sits on a plant network IT often does not administer, and getting a gateway approved is a governance conversation measured in weeks. Whether tags are documented — a historian with 40,000 tags and no dictionary is archaeology, not ingestion. And whether machine identifiers map to ERP work centres — without that mapping, OEE by product is unavailable no matter how much telemetry you land. The short version: start with 20–50 tags on two lines, prove the join to production orders, then widen.
OPC-UA appears nowhere in Fabric's 34 Eventstream source types. You need an edge tier — OPC-UA to MQTT or IoT Hub, then Eventstream — whether or not it was on the architecture diagram.
The medallion model applied to manufacturing entities
In a manufacturing Fabric lakehouse, Bronze holds source-shaped data as landed, Silver holds conformed manufacturing entities with harmonised identifiers and time bases, and Gold holds the facts and dimensions that OEE, OTIF, scrap and yield are calculated from. The design work is in Silver, not Bronze.
| Entity | What Silver must resolve | The trap |
|---|---|---|
| Work order | One order key across ERP and MES; operation sequence; planned vs actual | ERP backflush timestamps at shift end; MES has the real ones — choose the time base deliberately |
| Batch / lot | Parent-child genealogy across split and merge; identifier format differences | Rework loops create cycles in genealogy — handle them before a recall makes you |
| Downtime event | Start/end reconciled against machine state; reason taxonomy; planned vs unplanned | A stoppage recorded twice (SCADA state + operator) double-counts unless deduplicated on overlap |
| Quality hold | Link hold to batch to work order to customer order; status history, not just current | Current-status-only sources destroy history — capture transitions from day one |
| BOM | Multi-level explosion; effectivity dates; alternates actually used on the line | Line consumption differs from the BOM — yield analysis needs actual issue records |
Two Fabric features help here: Materialized Lake Views let you declare Bronze-to-Silver-to-Gold transformations as SQL with declarative data quality constraints, and Fabric IQ Ontology (preview) lets Batch, Work Order and Asset exist as governed business objects rather than a naming convention. Treat the ontology as a preview capability to pilot, not to build a 2026 programme around.
The metrics that get defined once
OEE, OTIF, scrap rate, first-pass yield and days inventory outstanding are the five metrics most often defined differently by different departments. Defining them once in Gold, with numerator, denominator and time base written down, removes the reconciliation meetings that consume operations management time every month.
| Metric | The definition argument | Common distortion |
|---|---|---|
| OEE | Whether planned downtime and changeovers sit in the availability denominator | Excluding enough time from the denominator to reach 85% |
| OTIF | On-time against original or latest revised promise; line vs order level | Rescheduling the promise date overwrites the commitment being measured |
| Scrap rate | By units or value; whether rework counts as scrap | Recorded only at order close, so it cannot be attributed to a shift |
| First-pass yield | Pass per operation, or per finished unit through the whole route | Reported as an average of stages instead of a product of them |
| DIO | Which inventory counts; in-transit and consignment included? | Blocked and quality-hold stock quietly excluded to improve the number |
OEE deserves a specific warning: publishing OEE on a platform does not make it honest. Publishing OEE with its denominator visible does.
Serving in Direct Lake, and alerting people act on
Direct Lake semantic models read Delta tables in OneLake directly, so refresh is a metadata operation. The practical constraint is guardrails by SKU: an F64 or P1 allows 1,500 million rows per table with 25 GB of memory; an F32 allows 300 million rows. High-frequency machine telemetry crosses those numbers faster than most expect, which is why sensor data belongs in an Eventhouse queried in KQL, and aggregated machine-hour or shift-level facts belong in the Direct Lake model. Row-level security is the other design decision to take before go-live: Direct Lake on OneLake does not observe SQL-based RLS, so decide where a plant-only filter lives at design time.
Fabric Activator monitors eventstreams, reports and dashboards and triggers Teams messages, email, Power Automate flows and pipelines when a rule fires. Technically straightforward; organisationally where most control towers die. An alert with no named owner and no defined action gets muted within three weeks. Start with three rules a specific person is accountable for — a line down beyond a threshold, a batch approaching quality-hold expiry, a critical raw material below reorder point — and add more only when the first three have changed a decision.
Capacity and cost governance
Fabric is billed on a capacity SKU rather than per query, so cost control is a governance exercise. Three habits keep a manufacturing estate inside its capacity. Put ingestion and heavy Spark work in a workspace with its own consumption ceiling, so a badly written notebook cannot starve the shift-handover report. Do not ingest historian tags you have not mapped — telemetry is the single largest driver of unplanned consumption in industrial estates. And review the Fabric Capacity Metrics app monthly with a named owner, the way you review a utility bill.
The one number worth carrying into the SKU decision: F64 is the threshold at which report consumers no longer each need a Power BI Pro licence, and for a business with 200 plant and office users that changes the total cost comparison materially. Governance beyond cost sits with Microsoft Purview — sensitivity labels, DLP over lakehouses and warehouses, the Unified Catalog, and full audit logging of Fabric activity.
A realistic implementation sequence
- Weeks 1–2 — Connect and land. Mirror the ERP where supported; Data Factory pipelines for MES and quality. Land Bronze exactly as received, fix nothing. In parallel, start network and gateway approval for the OT segment — the long pole.
- Weeks 2–4 — Build the dimensions. Item, plant, work centre, machine, batch, shift calendar. If work centre and machine cannot be mapped to each other, stop and fix that before building facts.
- Weeks 4–6 — Ship one slice. One production-order fact, in production, in Power BI, replacing an existing hand-maintained report. Six weeks means running in production and used by a named person, not a demo prototype.
- Weeks 6–12 — Add the second and third entities. Downtime events and quality results, reusing dimensions already built. This is where OEE by line and first-pass yield become possible.
- Weeks 12–20 — Widen OT ingestion and add alerting. Extend from pilot lines once tag mapping is proven; add the first three Activator rules.
- Beyond week 20 — Predictive and prescriptive. Forecasting, quality prediction, maintenance models and agent-based access.
Unify the data. Predict with AI. Act with automation. In that order, without exception.
Where this breaks in mid-market manufacturing estates
Identifier mismatch between OT and ERP — machine and line identifiers in SCADA rarely match ERP work centres, and until somebody owns a maintained mapping table, OEE by product does not exist. Timestamps that describe administration, not physics — ERP confirmations backflushed at shift end place eight hours of production at 22:00, so any hourly-rate or shift analysis built on them is wrong. Quality systems that hold only current status — if your QMS overwrites hold status, hold duration is unrecoverable historically.
Historian volume against Direct Lake guardrails — second-interval data from a few hundred tags becomes billions of rows within months, breaching row and Parquet file guardrails below F64 and costing above it. Preview features in a production plan — Fabric IQ Ontology, MQTT as an Eventstream source, and SQL-query rules in Activator are all preview as of August 2026; pilot them, do not put a plant reporting commitment on them. And nobody owns the metric — where a metric has no owner, the model gets built, the dashboard gets published, and nothing changes. That is the most common reason a manufacturing analytics programme is judged a failure despite working correctly.
What to do first
Five questions to answer this week, before anybody provisions a capacity:
- Can you produce a single mapping between SCADA/MES machine identifiers and ERP work centres — and does anybody own maintaining it?
- Do your production confirmations carry a physical timestamp, or a backflushed administrative one?
- Does your quality system record hold status transitions, or only current status?
- How many historian tags do you have, and how many are documented?
- Which one decision would change if the answer arrived at shift end instead of at month end, and who would make it?
If question five has no answer, pause — a platform without a decision attached becomes an expensive reporting layer. If the answer is "we would hold the batch before it shipped instead of processing a customer complaint six weeks later", you have a business case worth building. We build these estates on Microsoft Fabric, OneLake and Power BI, practitioner-led, on a fixed-scope or Fractional Data Consultant model.
Fabric handles the analytical layer well — but the value comes from the modelling underneath, and the failure modes are process problems the platform exposes rather than fixes. Book 30 minutes with Amit — no slides, no pitch deck, no obligation to proceed. A straight read on what your estate can support today and what would need to be true first.
Free Assessment
Where does your operation sit on the data maturity curve?
8 questions. 3 minutes. You get a scored breakdown across data infrastructure, analytics readiness, and automation potential — with a specific next step for your industry.