From Access to React: Replacing a Legacy System Without Downtime
Manufacturing control at Berner ran on Microsoft Access for 15 years. Everyone knew its quirks, nobody wanted to touch it. Until it broke.
The Problem
Access databases have a hard limit of 2 GB. We were at 1.8 GB. Meanwhile, more departments needed access — production, shipping, purchasing, QC. Access isn't built for that.
The Strategy: Module by Module
A big-bang rewrite was out of the question. Production must run — every day. Instead, we broke the system into modules and migrated them one by one:
Phase 1: Order management (the core). New web app running parallel to Access, both systems syncing through the shared database.
Phase 2: Production planning and tracking. Now production managers could see status on a tablet — not just on the one PC in the office.
Phase 3: Shipping, delivery notes, purchasing. With each module, Access became less necessary.
What I Learned
Data is sacred. 15 years of grown data has inconsistencies no schema diagram shows. We spent weeks on data cleanup.
Bring users along. Employees knew Access for years. The new app had to be better — not just different. Regular demos and feedback rounds were crucial.
Incremental > All at once. Each module was a self-contained improvement. If something went wrong, the blast radius was limited.
Result
Today, manufacturing control runs as a web app with 19 modules, PostgreSQL database, and role-based access. Access is shut down. Manual work time has been reduced by an estimated 60%.