ERP plans budget for design workshops, testing and training. They rarely budget for the weeks lost to extracting legacy data, working out what the fields mean, and fixing three unrelated things before the target accepts a load.
The usual blocker is undocumented logic: a field filled by a customisation written years ago, a value that means one thing in one plant and something else in the next, a supplier that exists twice after a merger nobody unwound. None of it shows in the source schema.
We treat the data path as its own workstream. We read the legacy source as it stands, write mappings and rules as SQL and mapping tables instead of a hand-kept spreadsheet, and reconcile the output before it goes anywhere. Failures turn up on our side, not in the target's error log.
We take one entity group at a time: customers, suppliers, products, chart of accounts, open orders, or open receivables and payables. ERP configuration, process redesign, cutover, accounting policy and training are not ours. The data path is, and it is usually the part with the least clear owner.