A building-materials distributor off spreadsheets in nine weeks
Four branches, 60,000 SKUs and a stock figure nobody trusted. We moved them onto ERPNext without stopping sales.
The situation
Four branches, each running its own Excel workbook for stock. Head office consolidated once a month by email. By the time the consolidated number existed it was three weeks stale, and everyone knew it, so nobody used it — branches phoned each other to check availability instead.
Purchasing was buying against a number that was wrong in both directions: over-ordering fast movers because a branch's stock wasn't visible, and stocking out on slow movers because nobody could see the aggregate.
What we did
Weeks 1–2 — inventory and mapping. We took every workbook and built a single item master. Sixty thousand rows collapsed to about forty-one thousand real SKUs once duplicates and dead lines came out. The client's warehouse manager sat with us for four days on this; it was the single highest-value part of the project.
Weeks 3–5 — configuration. ERPNext with multi-warehouse stock, branch-level permissions, and a purchase approval chain that matched the authority matrix they already had on paper. No custom code at this stage — we wanted to know what standard actually covered.
Weeks 6–7 — the two custom pieces. Two things standard didn't cover: a branch-to-branch transfer request flow with a receiving confirmation step, and a print format for the delivery note that their drivers and customers both recognised. Both shipped as a versioned custom app.
Week 8 — dry run and training. Full data load onto staging, then two days of hands-on training per branch, on their own data. The complaints that came out of those sessions were more useful than any requirements document.
Week 9 — cutover. Friday evening final sync, Saturday validation, Sunday morning live. Four hours of stock-entry freeze, which was the only real downtime.
What went wrong
The item master was worse than anyone admitted. Our two-week estimate for mapping was optimistic by about four days, and we ate the difference rather than repricing — the scope was fixed and the miss was ours.
We also underestimated how much of the branch managers' resistance was about visibility rather than software. Once head office could see live stock, the branches lost a negotiating position they'd had for years. The training sessions went better once we stopped pretending that wasn't happening and addressed it directly.
Where they are now
Live stock across four branches, purchasing against a real aggregate, and a monthly close that takes two days instead of three weeks. They've since added a second custom module for consignment stock at contractor sites.