Case study · Logistics
Stock that is true now, not true at 2am
A distributor was selling from a stock figure refreshed overnight, which meant overselling by day and firefighting by evening. We integrated warehouse scanning, Dynamics 365 F&O and every sales channel onto one live position.
Engagement · Integration programme
Inventory integration where the number has to be right at the moment of sale.
- Industry
- Logistics & distribution
- Solution
- Real-time inventory integration
- Platform
- Dynamics 365 Finance & Operations
- Engagement model
- Dedicated integration team
- Scope
- Warehouse, ERP, channels, allocation
- Warehouses
- Multiple, with scanning
- Constraint
- No downtime in the warehouse
- Target
- Sub-second availability
Outcomes
What a stale stock figure costs
Overselling is the visible cost. Safety stock held against uncertainty is the larger one.
-
−94%
Overselling incidents
Availability is computed from the live position with allocations reserved at order time, so the stock that is promised is stock that exists and is not already promised elsewhere.
Measured across orders before and after integration
-
<1 sec
From warehouse scan to channel availability
Scanner movements publish as events consumed by the ERP and every channel, rather than waiting for an overnight batch.
Measured end to end under production load
-
−37%
Safety stock held
When the position is trustworthy, buffers held purely against data uncertainty can be released — which is working capital returned to the business.
Measured across inventory value after stabilisation
Context
Why the numbers were always behind
The systems were fine individually. The integration between them was a nightly file.
The business
A national distributor supplying trade and retail customers from multiple warehouses across several sales channels.
The starting point
Warehouse scanning wrote to a warehouse system. ERP received a nightly file. Channels received another. Every figure was a day old at best.
The trigger
Overselling was routine enough that customer service had a process for it, and buyers were holding heavy safety stock because nobody trusted the number.
What they wanted
One live stock position, allocation reserved at order time, and availability that every channel reads from the same place.
Constraints
The warehouse cannot stop scanning for a migration · channel systems vary in what they can consume · the position must stay correct under burst load · reconciliation must survive a failed integration rather than silently drift.
System
What it runs at today
The integration as it runs today.
-
<1s
Scan to availability
End to end
-
1
Stock position
Every channel reads it
-
−94%
Overselling
Against the baseline
-
0
Nightly batches
For stock
The engineering problem
Four problems with batch inventory
All of them are invisible on a quiet day and expensive on a busy one.
-
Availability that is a day old
Selling from an overnight figure means every sale during the day is made against a number that has already moved.
What we did
Event-driven publication from scanner movements, so availability reflects the warehouse within a second.
-
No allocation at order time
Even a live figure oversells if two orders read the same available stock before either reserves it.
What we did
Allocation reserved at order time against the live position, so availability reflects what is unpromised rather than what is physically present.
-
Channels that read different numbers
When each channel holds its own copy of availability, they diverge, and the divergence is discovered by a customer.
What we did
One availability service every channel reads, rather than a copy distributed to each.
-
Integration failures that drift silently
A batch integration that fails part way leaves two systems disagreeing, and nobody finds out until a stock count.
What we did
Event replay with reconciliation: the position can be rebuilt from the event log, and a continuous check flags divergence immediately rather than at count time.
Architecture
How it fits together
Simplified — the shape of the system rather than every service in it.
-
Warehouse events
- Scanner movements
- Receipts
- Picks
- Adjustments
Every physical movement published as an event at the moment it happens.
-
Position service
- Live stock
- Allocations
- Availability
One computed position: physical, less allocated, per location.
-
ERP
- Dynamics 365 F&O
- Costing
- Replenishment
Consuming the same events, so finance and operations agree.
-
Channels
- Trade portal
- Retail
- Marketplaces
All reading the one availability service rather than holding copies.
The event log is the backbone. Because the position can be rebuilt from it, a failed integration is a replay rather than an investigation.
Solutions
What we implemented
An event-driven inventory backbone.
-
Event publication
Scanner movements published as they happen.
-
Position service
Physical less allocated, per location, continuously.
-
Allocation
Stock reserved at order time.
-
Channel availability
One service, read by every channel.
-
ERP posting
Movements into F&O for costing and replenishment.
-
Reconciliation
Continuous divergence detection and event replay.
Key capabilities
What it does day to day
Six capabilities across the inventory chain.
| Capability | Runs | Refresh | What it does |
|---|---|---|---|
| Scanner events | Warehouse | Real time | Every movement published as it happens |
| Position service | Automatic | Continuous | Physical stock less allocations, per location |
| Allocation | Automatic | At order | Stock reserved when the order is taken, not when it is picked |
| Channel availability | All channels | Sub-second | One service read by every channel |
| ERP posting | Automatic | Continuous | Movements into Dynamics 365 F&O for costing and replenishment |
| Reconciliation | Automatic | Continuous | Divergence detected immediately, position rebuildable from the log |
Integrations
How the moving parts plug in
From a scanner in the aisle to availability on a channel.
Warehouse
- ScanPick, receipt or adjustment
- Event publishedImmediately
- Location recorded
Position service
- Physical updated
- Allocations appliedWhat is already promised
- Availability computedPer location
Channels & ERP
- Trade portal
- Retail & marketplaces
- Dynamics 365 F&OCosting and replenishment
Allocation at order time is what actually stops overselling. A live figure alone is not enough when two orders can read it simultaneously.
Security & data
What keeps the position trustworthy
A real-time system that drifts is worse than a batch one, because people believe it.
-
Event replay
The position can be rebuilt from the event log, so a failure is recoverable rather than investigated.
-
Continuous reconciliation
Divergence between systems is detected as it happens rather than at stock count.
-
Burst tolerance
The pipeline is designed for peak scanning load, not for the average.
-
Ordered processing
Movements are applied in order per item and location, so concurrent activity cannot corrupt the position.
The brief
Real time without allocation still oversells
The distributor initially framed this as a speed problem: make the nightly sync more frequent. More frequent batches would have reduced overselling without eliminating it, because the actual failure is two orders reading the same availability before either reserves stock.
We built event-driven movement publication and allocation at order time together. Either alone would have been a partial fix.
- Warehouse movements published as events
- Allocation reserved at order time, not at pick
- One availability service read by every channel
- Position rebuildable from the event log
What the integration had to survive
- 01A warehouse that cannot stop scanning
- 02Channel systems with different integration capabilities
- 03Burst load at peak picking
- 04Failures that must be recoverable, not silent
Process
We ran the new pipeline alongside the old one
You cannot test an inventory position by inspection. You test it by running both and comparing.
-
Event publication
Scanner movements published in parallel with the existing batch, changing nothing downstream.
-
Shadow position
The new position computed alongside the old, with divergence measured daily until it was explained.
-
Allocation model
Reservation at order time designed and tested against historical order patterns including peak days.
-
Channel cutover
Channels moved to the availability service one at a time, smallest first.
-
Batch retirement
The nightly sync switched off only after a full peak period on the new pipeline.
Technology
Dynamics 365 F&O with an event backbone
The ERP stays the system of record; events keep everything in step.
ERP
- Dynamics 365 Finance & Operations
- Costing
- Replenishment
Events
- Movement events
- Ordered processing
- Replay
Position
- Availability service
- Allocation
- Per-location stock
Integration
- Channel adapters
- Reconciliation
- Burst handling
Business impact
What changed for the distributor
Three outcomes, one of which was worth more than the project.
-
Overselling effectively ended
Down 94%, and with it a customer service process that no longer needs to exist.
-
Working capital released
Safety stock down 37% once the number could be trusted.
-
Evenings stopped being firefighting
The reconciliation work that filled every evening disappeared.
The result
One number, everywhere, now
Overselling fell 94% because availability is live and allocation happens when the order is taken rather than when it is picked.
Safety stock fell 37% once buyers trusted the position, which returned more working capital than the integration cost.
- Overselling incidents down 94%
- Sub-second scan to channel availability
- Safety stock down 37%
- No nightly batch for stock
What we hold to in inventory integration
- 01Real time without allocation still oversells
- 02Make the position rebuildable from the event log
- 03Run the new pipeline in shadow until divergence is explained
- 04Retire the batch only after a full peak period
Verified reviews
What clients say about our Dynamics work
Verified reviews from clients of ours on similar work, published on Clutch. They are not from this project.
-
Custom Software Development
Web-Based Coupon App Development
The work produced by the team was of exceptional quality.
Verified review on Clutch (Jon Thies, opens in a new tab)
Jon Thies
CTO, Model Rocket Feb 2022 – Mar 2023
-
Custom Software Development
Mobile & Web Platform Development & Design
Silver Scintilla was responsive, respectful, and enjoyable to work with, quickly addressing any questions or requests.
Verified review on Clutch (DeShawn Brown, opens in a new tab)
DeShawn Brown
CEO & Founder, Lithios Jun 2021 – Nov 2022
-
Custom Software Development
Web-Based HRM System Development
Silver Scintilla provided the best solution with scalable functionality, personalized features, and robust security.
Verified review on Clutch (Suheb Khan, opens in a new tab)
Suheb Khan
Director, Collaborative Insight Technologies Jul 2020 – Jun 2022
Free discovery call
Have an idea? Let's turn it into AI-powered software.
Book a free discovery call with our experts. Share your idea and we will help you shape the scope, timeline and budget, under NDA.
- Free consultation
- NDA before we talk
- Transparent estimate




