Skip to main content
Supply Chain & Logistics

Multi-Warehouse Inventory Visibility on Microsoft Fabric: What the Implementation Involves

"How much saleable stock of this item do we have, and where is it?" In a business with own warehouses, a bonded store, 3PL sites and containers on the water, that takes three phone calls and a morning. What it takes to build one governed stock position on Microsoft Fabric.

Amit Kumar Singh - Technology Consulting Partner at MyData Insights

Technology Consulting Partner · MyData Insights

14+ years in industrial data · Former Accenture & EY · India, GCC, SEA

17 August 2026 · 13 min read

The bottom line

A single answer to "how much saleable stock, and where" is hard because stock records live in five systems with five definitions of available. A governed stock position on Microsoft Fabric models item, location, batch and status at one grain, publishes three availability measures (on hand, unrestricted, available to sell), and reconciles to the ERP every morning. The join is the easy part; the definitional work and the 3PL feeds decide whether it survives contact with finance. First reconciled slice — ERP plus one WMS plus one 3PL — in six weeks; full rollout 4–6 months. Visibility exposes the problem; someone still has to own the transfer decision.

A trivial-sounding question that takes a morning

The question sounds trivial: "how much saleable stock of this item do we have, and where is it?" In a distributor or manufacturer running four own warehouses, a bonded store, two 3PL sites and a dozen containers on the water, it takes three phone calls and most of a morning. Someone pulls the ERP stock report, someone else checks the 3PL portal, someone remembers the bonded consignment.

The cost is not reporting inconvenience. It is safety stock held in the wrong place because planners buffer against a number they do not trust.

This is not a forecasting problem and not an ERP replacement problem. Stock records live in five systems with five definitions of "available" — and the work is to reconcile them into one governed position that finance will accept.

What multi-warehouse inventory visibility actually means

Multi-warehouse inventory visibility is a single governed stock position covering every location holding your inventory — own warehouses, bonded and free-zone stores, 3PL sites, in-transit and consignment — modelled at a defined grain of item, location, batch and stock status, with one written definition of "available" and a daily reconciliation to the ERP.

The join is the easy part. What decides whether the build survives contact with finance is the definitional work: the grain, the meaning of "available" at each site, and whether the number ties out to the ERP every morning.

The sources, and why each one is awkward

SourceWhere it hurts
ERP inventory (SAP S/4HANA, Business Central, NetSuite, Epicor)Availability logic lives in ATP configuration and reservation tables, not a column you can select
Standalone WMSOwn item master and unit of measure; disagrees with the ERP by design during open picks
3PL stock reportsFiles or portal exports, weekly not daily, often without batch, usually without an "as at" timestamp
In-transit / goods in transitOften exists only as a GL balance or a PO line with an ETA nobody maintains
Consignment / customer-ownedPhysically in your building — yours to count and insure, not yours to sell
Bonded / free-zoneLegally unavailable until cleared; moving it is a customs event, not a stock transfer

Two of these are the usual project killers. 3PL reports arrive on the provider's terms and change without notice; and bonded or free-zone stock is a legal state, not a warehouse code, so it has to be modelled as such.

The modelling decisions that decide whether this works

Commit to a stock grain before you build anything. The working grain for most estates is item × location × batch/lot × stock status × owning entity, with an "as at" date for snapshot rows. Adding batch later is a rebuild, not a column addition — every measure, partition and reconciliation rule changes. Model location as a hierarchy (legal entity, country, site, storage location, bin) with attributes for ownership and legal availability, so "bonded" and "3PL" are properties of a location, not exclusions hard-coded into a DAX measure.

Define "available" in writing, then reconcile it to the ERP. Publish three measures, not one: on hand (everything physically there, blocked and bonded included), unrestricted (on hand minus blocked, quarantined, expired and damaged), and available to sell (unrestricted minus reservations, allocations, consignment and legally unavailable stock). The trap is that the ERP already computes something like the third, reflecting years of configuration — publish a different number without explaining the difference and supply chain will use it while finance will not.

Handle units, status and inter-company deliberately. Conversion factors between pieces, cases, pallets and weight change when packaging changes, so hold them in a dimension with validity dates — a factor applied retrospectively will quietly restate your historic stock cover. Status belongs to a batch at a location, not to an item. And stock moving between two of your own legal entities is often on nobody's records in transit, or on both — decide whether the group view eliminates inter-company positions, and stamp every row with the owning entity.

The build sequence on Microsoft Fabric

Ingest each source on its own terms. For ERP on SQL Server, Azure SQL, Oracle or Snowflake, Fabric mirroring replicates the database into OneLake as Delta tables with continuous change capture. For SAP, mirroring runs through SAP Datasphere. A WMS with no mirroring path uses a Copy job with incremental copy and CDC where available. 3PL files and portal exports land through Data Factory pipelines over SFTP, FTP or REST. Data you already hold elsewhere — S3, ADLS Gen2, Blob, GCS, Dataverse, on-premises — is referenced with OneLake shortcuts rather than copied.

Then Bronze, Silver, Gold. Bronze holds what arrived, untouched, partitioned by source and load date. Silver does the work that makes the rest possible: item mastering across ERP, WMS and 3PL codes; conversion to a base unit; every source's status codes mapped into one controlled vocabulary; ownership flags; the location hierarchy.

Choose a snapshot and a ledger — you need both.

Daily snapshot factMovement ledger
GrainOne row per item, location, batch, status, dayOne row per stock movement
AnswersWhere stock was on the 14thWhy the position changed
StrengthCheap to query, survives source gapsAgeing, traceability, root cause
WeaknessCannot explain movement; rows explodeOne missing movement corrupts every later position

Keep the ledger in Silver for explanation and batch traceability; build the snapshot in Gold incrementally from the ledger, and re-base it periodically from a full ERP extract so drift cannot accumulate unnoticed. A Direct Lake semantic model reads the Gold Delta tables and refreshes by framing metadata rather than reloading — design against the F-SKU guardrails, because a batch-level daily snapshot is the quickest route to breaching them, and note that Direct Lake on SQL falls back to DirectQuery when SQL-based row-level security applies (relevant if each 3PL or country manager sees only their own sites). Run OPTIMIZE with V-Order and VACUUM on the snapshot tables from week one; small files degrade the SQL analytics endpoint.

Latency: what near real time actually costs

Fabric will go faster than your operation will. Mirroring publishes near real time; the 3PL sends a file at 07:00 and counts stock on Thursdays. So match latency to the decision, per site.

Daily at 06:00 covers planning, allocation and expiry management. Intraday for own sites, daily for 3PL means mirrored ERP and WMS refresh every 15–60 minutes while external sites stay on their cadence — and the report labels each site with its own "as at" time. Near real time throughout is justifiable only where a decision is made within minutes, such as dock scheduling or allocation at pick confirmation.

For alerting, Fabric Activator triggers pipelines, notebooks, Copy jobs, Power Automate flows, Teams messages and email. Read one thing carefully: rules on Power BI reports run as periodic observations tied to the model's refresh schedule, so a stock-out alert is only as fresh as the refresh behind it.

Reconciliation is a deliverable, not a checkbox

Finance will not accept a number that does not tie out, and they are right not to. Build the reconciliation in the same sprint as the stock fact: per site, per day, the ERP quantity, the platform quantity, variance in units and value, and a classified reason — timing, item-mapping gap, status-rule difference, missing feed.

The first month of that page is uncomfortable, and that discomfort is the point. The failure to avoid is tuning the availability rules until the variance disappears — you will have hidden an operational problem inside a data definition.

A realistic timeline

PhaseDurationScope
DiscoverWeeks 1–2Source inventory, grain decision, written availability definition agreed by supply chain and finance, 3PL file audit
First sliceWeeks 3–6ERP + one WMS + one 3PL, 2–4 locations, Bronze/Silver/Gold, daily snapshot, Direct Lake model, reconciliation page live
ExpandMonths 2–4Remaining sites, bonded/free-zone, in-transit, consignment, batch & expiry, intraday refresh for own sites, alerting
ActMonths 4–6Expiry and slow-mover exposure, ageing, rebalancing recommendations, automated exception routing into planning

First value in six weeks is achievable — a working slice, reconciled, not a slide. A full rollout across 6–12 locations and two or three 3PLs typically runs 4–6 months, longer wherever a 3PL needs a commercial conversation before it changes what it sends you.

Where this breaks, and what it does not fix

3PL data quality and cadence set your ceiling — a weekly PDF with no batch and no "as at" timestamp cannot become a daily batch-level position, and a provider who reorders columns without notice breaks your load silently. Cycle-count discipline decides your accuracy, not the platform: what you are showing is record accuracy. Batch traceability has holes wherever a source lacks batch — if your WMS captures lot numbers and your 3PL does not, group-level traceability does not exist, and a recall exercise will discover that at the worst moment.

And visibility does not rebalance inventory. Someone must own the transfer decision, hold authority to move stock between sites and entities, and work to a rule for when an inter-site transfer beats an expedite. The platform exposes the duplicate safety stock and the expiry exposure; a person still has to act.

What to do first

Four questions to answer this week, before anyone opens Fabric:

  • Can you produce today a single list of every location holding your stock — 3PL bins, bonded stores and in-transit included — with the legal owner and availability status of each?
  • Is your definition of "available to sell" written down anywhere, and when did supply chain and finance last agree on it together?
  • For each 3PL: what arrives, how often, in what format, and does it carry batch and an "as at" timestamp?
  • What decision would change if this were on a screen every morning — and who has authority to make it?

If the fourth question has no answer, build the reconciliation page first and nothing else — it will pay for itself in arguments avoided while you find one. We build these on Microsoft Fabric, OneLake and Power BI, with Power Automate and Copilot Studio closing the loop — unify the data, predict with AI, act with automation, in that order.

The cheapest first step is often the reconciliation page — per site, per day, ERP versus platform, variance explained. It pays for itself in arguments avoided. Book a diagnostic with Amit — no slides, no pitch deck, no obligation to proceed. First value in six weeks: one reconciled slice across your ERP, one WMS and one 3PL.

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.

Supply ChainInventoryMicrosoft Fabric3PLDirect Lake

Your Data · Our Technology · Our Automation

Get practical insights every fortnight

Amit writes about Microsoft Fabric, Power BI, AI in operations, and digital transformation for manufacturing and supply chain leaders. Practitioner perspective - no fluff, no vendor spin.

No spam. Unsubscribe any time. Also on Substack.

FAQ

Common questions

What is multi-warehouse inventory visibility?

A single governed stock position across every location holding your inventory — own warehouses, bonded and free-zone stores, 3PL sites, in-transit and consignment — at a defined grain of item, location, batch and status, with one agreed definition of available stock and a daily reconciliation to the ERP.

Do I need a daily snapshot table or a movement ledger?

Both, for different jobs. The movement ledger explains why a position changed and supports batch traceability; the daily snapshot answers where stock was on a given date, cheaply. Build the snapshot from the ledger and re-base it periodically from a full ERP extract.

How do I bring 3PL stock data into Microsoft Fabric?

Data Factory pipelines and Copy job support SFTP, FTP and REST, so most 3PL file drops and portal exports land directly into Bronze. Where a provider offers a bespoke API with no connector, open mirroring lets you push change data into a mirrored database.

Can Microsoft Fabric give me real-time inventory?

Fabric database mirroring can publish changes as fast as every 15 seconds, so the platform is rarely the constraint. Your 3PL’s weekly file and your cycle-count schedule are.

How long does an inventory visibility build take?

A first reconciled slice covering an ERP, one WMS and one 3PL across 2–4 locations is realistic in six weeks. A full rollout across 6–12 locations, including bonded stock, in-transit, consignment and batch-level expiry, typically runs 4–6 months, depending on how many 3PL commercial conversations are required.

Will this reduce my inventory?

Only if someone acts on it. Visibility exposes duplicate safety stock, expiry exposure and imbalance between sites — but a named owner with authority to move stock has to make the transfer decision.

Is this the challenge you're facing?

Book a 30-minute call. We'll look at your specific operation and tell you what's achievable - plainly and without slides.