Migration rarely fails because the tooling was wrong. It fails because nobody decided what to bring, nobody owned the clean-up, and the reconciliation happened after go-live instead of before it.

Decide what not to bring

The instinct is to migrate everything. Every dead item code and duplicate customer you carry across becomes a permanent tax on every report and every search, forever.

Data Bring Leave behind
Customers Active in last 24 months, deduplicated Dormant duplicates
Items Stocked or sold in last 12 months Codes with no movement
Open documents All open POs, SOs and invoices Closed detail beyond policy
Balances Opening balances at cut-off Historic journal detail
History Summary by period if needed Line-level history nobody queries

Reconcile before anyone celebrates

  1. Agree the cut-off date in writing with finance.
  2. Load into a test environment first, never straight into production.
  3. Reconcile trial balance to sub-ledgers, line by line.
  4. Have the person who owns each balance sign it off by name.
  5. Keep the source extracts. You will want them in month two.

Do a full dry run

Run the entire cutover once, on a normal working day, against a copy. You will find the step nobody documented, the file that takes four hours, and the permission nobody had. Finding those on a rehearsal is cheap. Finding them on go-live weekend is not.

The rule we keep

No go-live without a signed reconciliation. It has never once been the popular decision, and it has never once been the wrong one.