Why data migrations fail – and how to avoid it
By Isak La Fleur EngdahlData migration is often seen as a technical transport leg – move data from A to B and go live. In reality, this is where most transformation projects are won or lost. The migration rarely makes headlines in a project plan, but it is almost always what decides whether go‑live is calm or chaotic.
After almost a decade of migrations, I keep seeing the same patterns. The most counterintuitive part: most migrations are decided long before a single row of data is moved – in the assumptions, the ownership and the quality expectations set (or left unset) during planning. The good news: every one of these pitfalls is avoidable.
1. Data quality is underestimated
The most common failure is assuming the source data is better than it is. Duplicates, incomplete fields, years of "creative workarounds" in free‑text columns, codes that mean different things in different systems – all of it surfaces the moment you start loading for real. And by then it's expensive.
Measure data quality early and you avoid surprises at cutover.
Start with a data mapping exercise during the assessment phase. Profile the fields, measure completeness and find the anomalies before they become a blocker. Data quality isn't a guess – it's something you measure. And just as important: agree on what good enough means. Without defined quality expectations – acceptance criteria per field and object – there's no threshold to measure against, and "done" becomes an opinion instead of a fact.
2. Ownership is unclear
Who owns the customer record? Who decides which address is correct when three systems disagree? Without clear ownership, decisions stall – and the migration stalls with them.
- Assign data owners per domain (customer, product, supplier).
- Document the rules for resolving conflicts.
- Let the business, not IT, own the business rules.
IT can move bytes, but only the business knows what the data means. The projects that succeed are the ones where the business is involved from day one – not called in to panic the week before go‑live.
3. Trying to migrate everything
There's a strong instinct to bring all of it along – "we might need it". But most legacy data rarely needs to come with you. Every extra object you migrate is something to map, cleanse, test and reconcile.
Actively deciding what not to migrate is one of the most time‑saving decisions you can make. For every data object, ask: is it needed in the target system, or is an archive enough? Less scope means lower risk and faster delivery.
4. Testing starts too late
Postponing trial loads until the end is a classic mistake. Run iterative test loads early and often, across several environments. Each wave should produce measurable improvement in quality and load time – and let business key users verify that the migrated data is actually correct.
Testing isn't a quality gate at the end. It's the engine that drives quality upward throughout the whole project.
5. No reconciliation strategy
A migration isn't done because the load finished without errors – it's done when the business can prove the data in the target matches the source. A surprising number of projects have no real reconciliation strategy and discover discrepancies only when finance or logistics find them after go‑live.
Decide up front how you'll reconcile: record counts per object, totals and balances, spot checks on business‑critical records, and a clear sign‑off from the data owners. Reconciliation should be reproducible and run after every test load – not improvised once at cutover.
6. Cutover and fall‑back are planned too late
The switch to the new system – cutover – is where everything has to line up over a single weekend. Bulk and delta loads in the right order, frozen master data, a clear timeline and, above all, a fall‑back plan if something goes wrong. This can't be improvised the day before.
A well‑considered cutover plan that everyone involved understands and has signed off on is the heart of a successful go‑live.
In summary
A successful migration is less about tooling and more about discipline: define and measure quality early, clarify ownership, migrate less, test continuously, reconcile against the source and plan cutover in good time. Do that and go‑live is calm and uneventful – exactly as it should be.
Want to avoid these pitfalls in your project? Get in touch – I'm happy to share how I work.