Case studies / Pharma distribution
Case studyBatch, expiry and recall control for a healthcare distributor
A healthcare distributor with four temperature-controlled warehouses replaced manual batch tracking with Odoo lot control, expiry-led picking and recall reports that trace to customers in minutes.
Overview
A privately owned distributor supplying hospitals, clinics and community pharmacies from four temperature-controlled warehouses. It operates under a wholesale distribution licence and is inspected regularly by the national regulator.
Scale. Thousands of batch-controlled products, from ambient consumables to refrigerated medicines, and a customer base weighted towards institutional tender contracts.
The challenge
Batches and expiry dates were tracked by hand. Receiving clerks wrote them on delivery notes, and the information reached the stock system later, if at all. When an inspector asked where a specific batch had gone, the answer involved filing cabinets.
Recalls took days to trace. The team would pull dispatch records, match them to delivery notes and phone customers to check what they had received. The process worked, eventually, but it was slow for something that matters to patient safety.
Older stock expired unsold. Pickers chose whatever was nearest, so newer batches went out while older ones sat at the back of the shelf until they had to be written off.
Tender pricing for hospitals and health authorities was managed in separate files. Each contract had its own price list, validity dates and compliance conditions, and invoicing staff had to check the right file by hand.
The regulator had raised no formal findings, but the last inspection had noted how much depended on a few experienced people. The owners wanted batch control that would stand up to scrutiny on any day, whoever was on shift.
The solution
Lot and expiry dates are captured at receipt with barcode scanners, and stock cannot be put away without them. Anything that fails a check goes to a quarantine location, where it stays until a responsible person releases or rejects it.
Picking follows first-expiry-first-out by default, so the system directs pickers to the batch that should leave first. Temperature records from warehouse and vehicle loggers are linked to the lots they covered, which gives a cold-chain history for any batch on request.
Tender and institutional price lists sit in Odoo with their validity dates and conditions, and orders pick up the correct price automatically. Recall reports run from batch to customer, showing every delivery, quantity and contact in one view.
Customers ordering through the portal see their contract prices and available stock, and manufacturer batch feeds keep incoming batch details accurate before goods arrive. E-invoicing and tax reporting run from the same records, so finance no longer re-keys tender invoices.
The engagement
- Eight months
- Six specialists
- Warehouse process design, Odoo lot and expiry control, picking strategies, cold-chain records, tender pricing, recall reporting, five integrations and a warehouse-by-warehouse go-live.
Integrations
- Temperature loggers in warehouses and vehicles
- Warehouse barcode scanners
- Customer ordering portal
- E-invoicing and tax reporting
- Manufacturer stock and batch feeds
How we delivered it
- 01
Warehouse walk-throughs
Five weeks
We walked each warehouse with the people who received, stored and picked stock. Together we defined the batch, expiry and quarantine rules, including what happens to stock that arrives without complete documentation.
- 02
Configuration and loggers
Ten weeks
We configured lot control, first-expiry-first-out picking and quarantine locations in Odoo, built the recall reports and connected the temperature loggers in warehouses and vehicles to the lots they monitored.
- 03
Stock load and count
Four weeks
Current stock was loaded by batch and validated with a full physical count. Discrepancies were investigated and resolved before go-live rather than carried into the new system.
- 04
Go-live and drills
Twelve weeks
Warehouses went live one at a time. In the first month at each site we ran recall drills, picking a real batch and tracing it to customers against the clock.
Results
- Recall tracing from batch to customer in minutes
- Fewer expired-stock write-offs through expiry-led picking
- Cold-chain records linked to every lot
- Tender prices applied automatically on orders
Write-offs from expired stock fell as picking followed expiry. The team now reviews short-dated stock weekly and can move it to customers who will use it in time, rather than finding it during a quarterly count.
A recall that once took days can now be traced to customers in minutes. During drills, the quality lead produced complete customer lists before the coffee had cooled, and the first real recall after go-live was handled the same way.
Tender pricing and compliance records sit in one place. Invoices carry the right contract price, and inspection requests for batch history or temperature records are answered from the system rather than from paper.
Adoption was quick. Because receiving staff had shaped the screens themselves, the first week at each warehouse brought few support calls and no attempts to fall back to paper, and the same people now train new starters.
Our receiving team designed the screens they now use every day. That is why nobody tried to work around them.
What made the difference
Warehouse staff helped design the receiving screens, which made adoption quick.


