- 3→1systems consolidated
- 1 daynew tenant onboarding
- -65%average delivery time
It started as a consulting engagement
The client had three systems: an outsourced order system from years back, a homegrown inventory system, and a purchased reporting tool. Data synced on a timer and frequently disagreed; onboarding each new client meant copying an entire deployment, and operations could no longer keep up.
We began with three weeks of technology consulting: interviews, reading the code and the schemas, measuring requirement lead times. The conclusion was that the problem was not “badly written code” but the absence of a tenant model and shared master data — so every customization became a copy instead of a configuration.
Incremental refactoring
A rewrite was too risky, so we used the strangler pattern across four stages:
- Extract master data. Products, customers and org structure became independent services that the three legacy systems read from.
- Introduce the tenant layer. A tenant model plus configuration service turned hard-coded differences into configuration.
- Migrate domains one at a time. Orders, inventory and reporting each moved to new services, with old endpoints proxying, dual writes compared until identical, then traffic cut over.
- Retire the old systems. Once traffic reached zero they were decommissioned — with no downtime throughout.
Engineering improvements
- CI/CD replaced “build a package and email it to ops” with commit-triggered builds, one-click release and rollback
- Integration tests on core transaction paths cut regression time from two days to 40 minutes
- Distributed tracing and business dashboards moved incident diagnosis from hours to minutes
Outcomes
- Three systems became one multi-tenant platform with consistent data definitions
- New client onboarding fell from about two weeks to one day, purely by configuration
- Average requirement lead time down 65%
- We continue to provide technical support and operations and product site work under technology promotion