Three Warehouses. Three Versions of the Truth.

Three Warehouses. No Single Inventory.
The company distributed industrial fasteners, fittings, and tooling to commercial contractors across the Northeast. Three distribution centres — New Jersey, Connecticut, and upstate New York — each ran their own inventory counts in separate Excel files that were emailed to head office every Friday. The head office bookkeeper manually consolidated them into a master spreadsheet by Monday morning. By Tuesday, the numbers were already wrong.The real cost wasn't the manual work. It was the decisions being made on bad data. Sales reps were promising lead times based on stock levels they'd seen in the Monday report. Purchasing was reordering items that were sitting in a different warehouse. And the operations manager had no way to see, at any given moment, what the company actually had across all three locations — so he kept safety stock at each site 'just in case.' The combined overstock across the three warehouses was $1.1M in slow-moving inventory that had been purchased to cover for a system that couldn't see itself.
- Three separate Excel files, consolidated weekly — 5-day-old data driving purchasing and sales decisions. Pick errors occurred when stock counted on Friday was sold, transferred, or received at a different location before Monday's consolidation. Sales reps had no live visibility into any warehouse, so they quoted from memory or called the warehouse manager directly.
- Items reordered at one site that were in excess at another — estimated $340K in avoidable purchases annually. Without cross-warehouse visibility, the NJ purchasing manager reordered based on NJ stock levels alone. The same behaviour at CT and NY meant three independent reorder cycles for the same SKUs. Vendor relationship and volume discount consolidation was impossible.
- QBO was being used as a general ledger only — no inventory module, no purchase orders, no multi-location. All 3 warehouses invoiced through a single QBO company file with manual journal entries for inter-warehouse transfers. There was no AP module in use — vendor invoices were tracked in a separate spreadsheet. The chart of accounts had 847 line items.
- ~14% of orders experienced a fulfilment error — wrong location, wrong quantity, or delayed pick. Pick errors required manual correction, re-routing between warehouses, or back-ordering from vendors. Each error cost approximately $180 in labour and freight. At roughly 40 errors per week, fulfilment failures were costing over $370K annually.
One Odoo Instance. Three Warehouses. Live.
OPS implemented Odoo 17 Community with Inventory, Purchase, Sales, Accounting, and multi-warehouse routing. The implementation was structured around a hard 60-day go-live commitment — partial parallel run in week 7–8, full cutover at day 60. No phased rollout, no 6-month timeline.
- Multi-Warehouse Inventory Configuration Three warehouses configured as distinct locations within a single Odoo instance. Real-time stock levels visible across all three simultaneously. Inter-warehouse transfer orders replace manual journal entries. Replenishment rules set per-warehouse per-SKU based on reorder point and lead time.
- Purchase Order Consolidation All purchasing centralised through Odoo's purchase module. Vendor pricelist management configured with volume discount tiers. Purchase orders require stock-level cross-check across all three warehouses before approval — buyers see system-wide stock before reordering. Vendor lead times tracked per-SKU for automatic reorder point calculation.
- Sales Order & Fulfilment Routing Sales orders now routed to the nearest warehouse with available stock automatically. Multi-warehouse availability shown at point of quote — sales reps see live stock at all three locations. Backorder management configured for partial fulfilment with automatic customer notification.
- Accounting Migration 847-line chart of accounts rationalised to 214 accounts. 18 months of historical data migrated. AP module deployed — all vendor invoices processed through Odoo, matched to purchase orders. Three-way match (PO, receipt, invoice) enforced for any invoice over $500. Month-end close reduced from 22 days to 6.
- Inventory Rationalisation Program. Post go-live, OPS Fractional CFO led a 90-day slow-moving inventory rationalisation program. Items with >180 days on hand and <2 turns per year flagged. $1.1M in excess inventory identified — $680K liquidated through spot sales to secondary distributors, remainder returned to vendors under existing return agreements.
One System. $1.1M in Inventory Released.
Within 90 days of go-live, the multi-warehouse visibility alone eliminated the safety stock duplication that had been quietly compounding for three years. Pick error rates dropped from 14% to under 2% in the first full month of operation. The purchasing team consolidated vendor relationships and captured $84K in volume discounts that had been invisible when buying was fragmented across three locations.
They had $1.1M of cash sitting on shelves across three warehouses because no one system could see all three at once. The inventory wasn't the problem — the visibility was. Odoo fixed that on day 60. The rationalisation took 90 more days. The cash was back in the business by month six.- OPS Engagement Director · Odoo Distribution Practice


