Case study
Real-time shipment, fleet & OTIF visibility
A US third-party logistics provider replaced overnight spreadsheets with a live control tower: TMS, WMS and telematics unified in Microsoft Fabric, surfaced through Power BI for OTIF, dwell and exceptions.
- OTIF performance
- +6.4 ptsOTIF performance86.9% → 93.3%
- Exception detection lag
- 14 hrs → 15 minException detection lag
- Average dwell time
- ↓22%Average dwell timeAcross the network
- Reporting cycle effort
- ↓80%Reporting cycle effort2 FTE released to analysis
Yesterday's answers to today's questions
A Louisville-based 3PL moves roughly 9,000 shipments a week for retail and industrial clients across 8 sites, 40+ carriers, and both truckload and parcel. Leaders could describe last week accurately. Nobody could say what was happening right now. The engagement ran around four months, phased, for the Head of Supply Chain and the CDO.
Reporting ran overnight. Performance data landed each morning describing the previous day, too late to intervene on anything still in motion.
Three systems, three truths. TMS, WMS and telematics each held part of the picture, with different shipment IDs and no common definition of "on time."
Customers found out first. The client often called about a late delivery before the operations team knew there was a problem.
Analysts as a reporting factory. Two analysts spent most of each week rebuilding the same dwell and OTIF spreadsheets by hand.
Every problem found too late to fix
In freight, a problem spotted in motion is recoverable: reroute, expedite, warn the customer. A problem spotted the next morning is just a penalty and an apology.
- 14 hrs median lag between an exception occurring and anyone noticing.
- 86.9% OTIF against client contracts averaging a 95% commitment.
- 2 FTE of analyst effort consumed by manual reporting each week.
The same event (a trailer sitting three hours past its appointment) under overnight reporting and under live monitoring:
| Overnight batch (before) | Live control tower (after) |
|---|---|
| 14:20 · trailer misses its dock appointment | 14:20 · trailer misses its dock appointment |
| 17:00 · dwell accumulating, nobody alerted | 14:35 · dwell threshold breached, alert fires |
| 21:30 · delivery window missed | 14:50 · site team reprioritises the door |
| 07:15 next day · appears in the morning report | 15:30 · load released, ETA recalculated |
| 09:40 · client calls to complain first | 15:35 · client notified proactively |
| Detected after the fact · nothing recoverable | Detected in 15 minutes · delivery saved |
"Our reports were excellent at telling us what we'd already lost. By the time a dwell number reached me, the truck had been sitting for a shift and the customer had already noticed."
— Head of Supply Chain, Louisville-based 3PL
What "real time" had to mean in practice
We mapped every feed against the decisions it needed to support. Not everything needed to be instant, but the handful of things that did were exactly the things running on overnight batch.
- One shipment identity across TMS, WMS and telematics.
- One agreed definition of OTIF, dwell and exception.
- Status refreshed in minutes, not overnight.
- Alerts pushed to the people who can act, not just dashboards.
- Views by site, carrier, mode and client account.
- Client-safe reporting, without exposing other accounts.
A control tower, not another report
We unified the three feeds into one shipment-level model in Microsoft Fabric, then surfaced it in Power BI as a live board, with thresholds that fire alerts rather than waiting to be read.
One shipment spine. TMS, WMS and telematics records stitched to a single shipment ID in a Fabric lakehouse.
Thresholds that fire. Dwell, ETA slip and appointment breaches trigger alerts to the site and account owner.
One definition of OTIF. A governed semantic model ends the "whose number is right?" argument between sites and clients.
Account-safe sharing. Row-level security lets clients see their own freight, and only their own.
A network view positions every active load from telematics and carrier feeds, coloured by status: the view that replaced "let me call the carrier and find out." Beside it, the live shipment board the floor now watches, refreshed every 15 minutes, surfaces exceptions rather than burying them:
| In transit | At dock | Dwell watch | At risk | Exception |
|---|---|---|---|---|
| 1,284 tracking to plan | 316 within appointment | 47 approaching threshold | 19 ETA past commitment | 6 act now |
Two sites first, then the network
The definitions were agreed before a single dashboard was built: the step that usually gets skipped, and the reason the numbers went unchallenged once live.
- Feed audit: inventory TMS, WMS and telematics feeds; assess latency, coverage and ID overlap.
- Agree the metrics: lock definitions of OTIF, dwell and exception with operations, sites and account teams.
- Build the model: a shipment-level model in Fabric with incremental refresh and a governed semantic layer.
- Pilot two sites: run the live board alongside existing reports; tune thresholds against real exception traffic.
- Scale and retire: roll out across all eight sites, extend client views, and decommission the manual spreadsheets.
OTIF is a product, not an average: a load that arrives on time but two pallets short fails both the customer and the metric. Splitting it showed the gap was almost entirely in full, which pointed the fix at the docks rather than the road. Before the rollout, 92.4% on time × 94.0% in full gave 86.9% OTIF; after it, 96.2% × 97.0% gives 93.3%.
With one definition applied everywhere, OTIF became comparable across modes for the first time. LTL through non-core carriers was carrying most of the shortfall, which is where the next round of carrier conversations went:
| Mode | Core | Contract | Backup | Spot |
|---|---|---|---|---|
| Truckload | 95.4% | 94.1% | 93.6% | 91.2% |
| LTL | 93.8% | 92.5% | 91.0% | 88.4% |
| Parcel | 96.1% | 95.2% | 94.4% | 92.8% |
| Dedicated | 97.2% | 96.4% | 95.8% | 94.6% |
Problems caught while they're still fixable
The 3PL stopped reporting on freight and started running it. Exceptions surface in minutes, site teams act inside the shift, and clients hear about a delay from their provider rather than the other way round. The two analysts who used to rebuild spreadsheets now work on carrier and network analysis instead.
| Before | After | |
|---|---|---|
| OTIF | 86.9% | 93.3% |
| Detection lag | 14 hours | 15 minutes |
| Average dwell | — | ↓ 22% |
| Reporting effort | — | ↓ 80% |
How these are defined here. OTIF is the share of loads that arrive both inside the delivery window (on time) and complete, with no shortage or damage (in full). Dwell is the time a trailer spends at a site beyond its appointment. An exception is a dwell, ETA-slip or appointment breach past its agreed threshold.
Built on Microsoft Fabric and Power BI.
Recognise any of this in your own estate?
Start with the problem rather than the technology, and we will tell you honestly whether it is ours to solve.
A supplier of electronic consumer products shipping 350+ orders a month
The quote took three days. The customer wanted to know where the van was.
A professional-services firm, a mid-sized legal and advisory practice
They rolled out Copilot to save time. It kept guessing wrong.
A tier-2 automotive-components supplier feeding just-in-time under IATF 16949
The parts passed inspection. The defects shipped anyway.
