Live in 11 months.
4% under budget.

A $120M consumer products distributor moving off 15 years of Sage engaged a systems integrator for the build, and had nobody on its own side who had run an implementation. We were that side: from the SOW review before signature to the war room after go-live.

Client

$120M consumer products distributor. 3 distribution centers, wholesale plus fast-growing DTC ecommerce.

Platform

NetSuite, with a systems integrator on the build. Storefront, 3PL and payment integrations.

Role

Client-side implementation PMO, end to end: SOW review, requirements, build oversight, data, SIT/UAT, cutover, hypercare.

Timeline

11 months, kickoff to go-live, against a 12-month plan.

Outcome Measured, sources in the table below
11 mokickoff to go-live, against a 12-month plan
4%under budget, all change orders included
0lost order days across the cutover weekend
9d → 4dmonth-end close, within two cycles of go-live
The situation The risk was never the build

The SOW quietly assumed the client would do the hard parts.

Wholesale ran on Sage. The DTC channel ran on a storefront duct-taped to it. Inventory truth lived in spreadsheets maintained by one heroic controller. The board approved the NetSuite move and an integrator was engaged for the build. What the company did not have was anyone on its own side who had run an implementation.

The integrator's proposal assumed the client would cover data cleansing, integration ownership and testing “with internal resources.” Three risks carried the program: 15 years of SKUs, kits and open orders in shapes NetSuite would not accept; a test plan that gave UAT three weeks on top of everyone's day jobs; and storefront, 3PL and payment integrations that were listed in the SOW but owned by no one.

What we did Fixed the contract first
  • Renegotiated the SOW before signature. Data cleansing and integration ownership moved into the integrator's scope where they belonged, UAT was resourced properly, and payments were tied to phase gates instead of hours.
  • Requirements signed, not assumed. Two weeks with every department head. Requirements written down and signed against by the integrator.
  • Data as its own workstream. Its own owner, its own plan, per-entity reconciliation from month one. Not a task inside the build.
  • UAT from real order history. 52 scenarios built from the client's actual ugly orders: kits, backorders, partial shipments, returns against closed periods.
  • Cutover rehearsed twice. Full dress rehearsals with rollback plans before the real overnight cutover, planned backward from the Q4 peak blackout on day one.
  • One steering rhythm. A 30-minute weekly, decisions only, over a decision log everyone could see. Status reported against the plan, not against optimism.
The 11-month NetSuite program plan: seven phases each ending in a gate, a continuous data workstream underneath, and a peak-season blackout band
Exhibit 1Master program plan, anonymized
Program lifecycle with exit gates
StageWhat happenedExit gate
SOW & commercialsScope rebalanced, gate-based payments, change-order rate capsContract signed
RequirementsDepartment workshops; requirements doc signed by client and integratorDesign sign-off
Build oversightWeekly build reviews against requirements; fit-gap closure logConfig baseline frozen
Data migrationExtract, cleanse, map, load; per-entity reconciliationMigration reconciled
SITEnd-to-end NetSuite to storefront to 3PL to paymentsSIT pass
UAT52 scripted scenarios; defect triage board; daily standupUAT signed off
Cutover & hypercareTwo rehearsals; overnight cutover; 30-day war roomStabilized & handed off
Measured results Before / after
MetricBeforeAfterHow measured
Program duration12-month plan11 monthsPMO plan vs actuals
Budget variance4% under, change orders includedFinance program ledger
Lost order days at cutover0Order and cutover logs
UAT first-pass rate96% (50 of 52 scenarios)UAT sign-off log
P1 defects in hypercareAll closed within 48 hoursDefect log, 30-day window
Month-end close9 days4 daysClose calendar, two cycles post go-live

Anonymized case study. Client-identifying details redacted. Reference available on request.

Next case D365 rescue: two missed go-lives, no third →