Data migration checklist work is the least glamorous part of any system replacement, and it is the part that quietly decides whether the project lands on the planned weekend or drags into a six-month cleanup. Nobody demos a reconciliation pack. Nobody puts a rollback runbook on a slide. Yet when a finance director refuses to sign off a new ERP because the trial balance moved by £4,000 overnight, every one of those unglamorous documents becomes the only thing anyone wants to read.

The reason so many moves go wrong is that teams treat the copy as the project. Extracting records from one database and loading them into another is the easy, well-tooled, largely solved part. The hard part is proving that what arrived is the same as what left, in a form the business will accept, with a credible way back if it is not. A data migration checklist exists to force those three questions — validation, reconciliation and rollback — into the plan before the transfer window opens rather than after it closes.

This guide sets out a working data migration checklist for UK businesses moving between systems: what to profile before you write a single mapping, which validation layers actually catch defects, how to build a reconciliation pack finance will sign, and how to design a rollback you could genuinely execute at 3am. Our data management and analytics and data warehousing teams run this work with mid-sized organisations most months, and the companion guide to a cloud migration cutover plan and rollback covers the infrastructure side of the same weekend. A general data migration overview is a fine primer, but it will not tell you what to sign.

What a data migration checklist must cover before anything moves

data migration checklist b single upright funnel plinth

Most failed moves were lost weeks before the transfer window, in decisions nobody recorded. A data migration checklist front-loads those decisions so that the technical work has something firm to build against.

Scope: name the systems, tables and record types explicitly

Write down every source system in play, every table or object within it, and every record type inside those tables. “Customers” is not a scope statement; “active customers, dormant customers, prospects, duplicates flagged for merge, and the 1,400 records with no postcode” is. Ambiguous scope is the single most reliable predictor of an overrunning migration, because each unnamed record type becomes a mid-flight decision made under time pressure by whoever happens to be awake.

Agree what “correct” means with the people who will sign

Correctness is a business definition, not a technical one. Before any mapping is written, the data migration checklist should capture, in the business’s own words, the handful of figures that must match after the move: the trial balance, the open order value, the headcount, the stock valuation, the number of live contracts. These become your reconciliation controls later. Agreeing them at the start costs an afternoon; discovering them during cutover costs the weekend.

Choose the migration pattern deliberately

Big bang, phased, parallel run and trickle each carry a different risk profile, and the choice changes almost every other line of the plan. A parallel run buys confidence at the cost of running two systems and double-keying for weeks. A big bang is cheaper and faster and gives you one shot. The pattern must be a recorded decision with named trade-offs, not a default inherited from the vendor’s implementation template.

Freeze the mapping document and version it

The source-to-target mapping is the contract between the business and the build. Every field, its source, its transformation rule, its default when null, its length limit and its owner. Version it, and treat changes as change requests. A data migration checklist that does not name a single owner for the mapping document is a checklist that will produce two incompatible versions by week three.

PatternHow it runsRollback difficultyBest suited toMain risk
Big bangOne transfer window, old system offHard after go-liveSmall estates, hard vendor deadlinesOne shot, no rehearsal in production
Phased by moduleFinance, then sales, then operationsModerate, per phaseERP and finance replacementsInterfaces between migrated and legacy modules
Parallel runBoth systems live, outputs comparedEasy, old system still authoritativePayroll, billing, regulated reportingDouble-keying fatigue and cost
Trickle with CDCContinuous replication, then promoteEasy until promotionLarge databases, short outage toleranceDelta window never fully closes
Archive and start cleanOpen items only, history to an archiveEasy, source untouchedCRM, ticketing, marketing platformsUsers cannot find historic records

Pre-migration profiling: where a data migration checklist actually starts

data migration checklist c three stacked hexagonal slabs

You cannot map data you have not measured. Profiling is the step teams skip when the timeline is tight, and it is the step that returns the most hours later, because every defect it finds is a defect that would otherwise have surfaced during the transfer window.

Profile every source table before writing a mapping

For each column, record the populated rate, the distinct value count, the minimum and maximum lengths, the observed formats and the outliers. This takes hours with standard tooling and reliably finds the surprises: the free-text field holding four different date formats, the “country” column with 31 spellings of United Kingdom, the phone numbers with embedded notes. A data migration checklist without a profiling output attached is a plan built on assumptions.

Decide what not to migrate

The cheapest record to validate is the one you never move. Most estates carry a long tail of dormant, superseded and duplicate records that exist only because nothing ever deleted them. Splitting the estate into migrate, archive and discard — with the business signing that split — routinely removes a third of the volume and, with it, a third of the reconciliation effort. It also aligns the move with the UK GDPR data minimisation principle, which a migration is a natural moment to apply.

Cleanse in the source, not in the pipeline

Fixing a broken record in the transformation layer means the source and target now legitimately disagree, and your reconciliation has to explain why. Fixing it in the source before extraction keeps both sides identical and keeps the reconciliation simple. Where a source fix is impossible, record the transformation as a named, approved exception with an expected variance — that exception list becomes part of the reconciliation pack.

Measure the delta rate

If your move involves any replication window, you need to know how many records change per hour in the source. That number sets your outage length, your catch-up strategy and the point at which a trickle migration stops being viable. Teams that never measure it discover during cutover that the delta is growing faster than the pipeline can apply it.

Where migration defects are introduced, by phase
Source data quality, pre-existing 41%
Mapping and transformation logic 27%
Scope and requirements gaps 18%
Delta and cutover sequencing 9%
Load mechanics and tooling 5%

The shape of that distribution is the argument for profiling. Four defects in five originate before a single row is loaded, which is why a data migration checklist that begins at the load step is already too late to help.

Validation in a data migration checklist: proving the data arrived intact

data migration checklist d four rising blank columns

Validation answers a narrow, technical question: is the target a faithful representation of the source under the agreed mapping? It is not the same as reconciliation, and conflating the two is how migrations end up with a green test report and an unhappy finance team. The validation section of a data migration checklist should specify layers, because each layer catches a class of defect the others cannot see.

Layer one: counts and control totals

Row counts per table, per record type and per partition, plus summed control totals on every numeric column that matters. This is crude, fast, and catches the largest category of catastrophic failure — a truncated load, a filtered extract, a batch that silently failed. Run it after every load, including every rehearsal, and store the results so trends are visible.

Layer two: field-level rules

For each mapped field, assert the things the mapping promised: type, length, null policy, allowed values, format, range. The classic defect this catches is silent truncation, where a 60-character target column accepts the first 60 characters of an 80-character source value and the load reports success. A field-level rule comparing source and target lengths finds it in seconds; a human reading sample records almost never does.

Layer three: referential integrity

Every foreign key should resolve. Orphaned order lines, invoices pointing at deleted customers, contacts attached to organisations that were filtered out of scope — these load without error in most systems and only surface when a user opens a record and sees nothing. A data migration checklist should require an explicit orphan report per relationship, with a target of zero and a written explanation for any exception.

Layer four: business rules the database cannot express

Some correctness lives above the schema. An invoice that is paid should not have an open balance. A closed contract should not carry future renewal dates. A stock item should not have negative quantity across all locations. These assertions must be written by people who know the business process, and they belong in the same automated suite as the technical checks so they run on every rehearsal.

Validation layerWhat it catchesWhat it missesWhen to run
Row counts and control totalsTruncated loads, filtered extracts, failed batchesAny defect that preserves the countAfter every load, automated
Field-level rulesTruncation, type coercion, format drift, bad defaultsCorrect-looking but wrong valuesAfter every load, automated
Referential integrityOrphans, broken hierarchies, missing parentsValid links to the wrong recordAfter every load, automated
Business-rule assertionsProcess-level contradictionsRules nobody thought to writeEach rehearsal and cutover
User acceptance samplingUsability, wrong-but-valid data, missing contextAnything outside the sampleFinal rehearsal, before sign-off
Reconciliation controlsBusiness figures that movedIndividually wrong records that net to zeroCutover, then daily for two weeks

Reconciliation: the data migration checklist step finance signs

data migration checklist e single hourglass on plinth

Reconciliation is the business’s proof, not the project’s. It asks whether the numbers the organisation manages itself by are the same before and after, and it is the evidence a director puts their name against. Validation can pass perfectly while reconciliation fails, because a faithfully migrated wrong number is still wrong.

Build the control set from the agreed definitions

Return to the figures the business named at the start of the data migration checklist and turn each into a repeatable query on both sides. Trial balance by account. Aged debtors by bucket. Open orders by value and count. Stock valuation by location. Live headcount by cost centre. Each control needs a source query, a target query, an owner and a tolerance — usually zero, occasionally a documented rounding allowance.

Run reconciliation on every rehearsal, not just the real one

A reconciliation pack produced for the first time on cutover night is a reconciliation pack nobody knows how to read. Producing it on each dry run does three things: it debugs the queries themselves, it trains the finance reviewers on the format, and it builds a history so that a variance on the night can be compared against the last clean run rather than argued about from scratch.

Distinguish sampling from full reconciliation

Full reconciliation compares aggregate totals across the whole estate and is cheap to automate. Sampling opens individual records and checks them end to end against the source system’s screens, which is expensive but catches things totals cannot. A serious data migration checklist uses both: full reconciliation on every control figure, plus a stratified sample of perhaps 100 to 300 records weighted towards the awkward cases.

Close the delta window explicitly

If records changed in the source after your extract, reconciliation must account for them. The pack should state the extract timestamp, the count of source changes since that timestamp, the count applied to the target, and the resulting difference — which should be zero. Leaving this implicit is how a migration passes reconciliation on Saturday and fails it on Monday when someone notices Friday afternoon’s orders are missing.

Typical effort split across a mid-market migration
Profiling, cleansing and mapping 34%
Validation and reconciliation build 26%
Rehearsals and defect fixing 21%
Extract, transform and load build 13%
Cutover execution itself 6%

The execution everyone worries about is the smallest slice on the chart. That is the practical case for a data migration checklist weighted towards preparation and proof rather than towards the mechanics of the transfer.

Rollback: the data migration checklist step everyone skips

data migration checklist f blank signpost two arrow boards

Rollback is the item most often written as a single line — “revert to previous system if required” — and most often discovered to be fiction at the worst possible moment. A rollback plan is only real if someone has executed it end to end against a realistic dataset and timed it.

Define the point of no return before the weekend

Every migration has a moment after which reverting costs more than pressing on: usually the first genuine business transaction recorded only in the new system. Name that moment, name what makes it irreversible, and put a decision checkpoint immediately before it. A data migration checklist that leaves the point of no return undefined guarantees the decision gets made implicitly, by drift, at about four in the morning.

Choose a rollback pattern that matches the migration pattern

Restore-from-backup is the simplest and slowest and loses anything entered since the snapshot. Keeping the legacy system live and read-write until sign-off is faster to revert but risks divergence. Reverse synchronisation writes new-system changes back to the old one and is the most capable and the most expensive to build. Blue-green deployment thinking applies directly here: the value is in keeping a known-good environment intact and switchable.

Write triggers, thresholds and a named decision-maker

“We will roll back if there are serious problems” is not a trigger. “We will roll back if reconciliation variance on any control exceeds tolerance and cannot be explained within 90 minutes, or if the load has not completed by 04:00, and the decision sits with the named migration lead” is. Pre-agreed triggers convert a fraught judgement call into a procedure, which is exactly what you want from anyone who has been awake for eighteen hours.

Time-box the rollback itself

Measure how long a full revert takes, including restoring integrations, reversing interface flags, and notifying users. That duration must fit inside the remaining outage window with margin. If your rollback takes six hours and you have four left, you do not have a rollback — you have a hope. The recovery-objective discipline from NIST SP 800-34 transfers cleanly to migration planning, and our guide to cloud disaster recovery testing covers how to rehearse it properly.

Rollback patternTypical revert timeData loss exposureBuild costUse when
Restore from snapshotHours, scales with volumeEverything since the snapshotLowShort outage windows, low transaction rate
Legacy kept read-writeMinutes, flip the routingNew-system entries onlyLow to mediumPhased moves with a short overlap
Legacy kept read-onlyHours, needs a re-enable stepNew-system entries onlyLowMost mid-market replacements
Reverse synchronisationMinutes, continuousNear zeroHighRegulated or 24/7 operations
No rollback, fix forwardNot applicableUnboundedNoneOnly with an explicit signed decision

Cutover sequencing: running the data migration checklist on the day

The transfer window is where a good plan gets tested and a vague one gets improvised. Sequencing is the discipline that keeps it boring.

Write a runbook with timestamps and owners

Every step, in order, with an expected clock time, an owner, a duration, a verification action and the go or no-go criterion. Integrations disabled at 18:30. Final extract started at 19:00. Load complete by 23:00. Validation suite green by 00:30. Reconciliation pack issued by 02:00. The runbook is the artefact that lets someone unfamiliar with the project see whether the night is on schedule, which matters because the people who built it will be too tired to judge.

Rehearse the whole thing at production scale

A dress rehearsal on a subset proves the code runs; it does not prove the timings. Load volumes behave non-linearly, and a step that takes 20 minutes on a tenth of the data can take four hours on all of it. At least one rehearsal must use full-volume production-like data end to end, with the validation suite and the reconciliation pack produced exactly as they will be on the night.

Freeze changes and communicate the window

Nothing undermines a reconciliation faster than a well-meaning colleague processing a batch during the freeze. Publish the freeze window, disable the entry points where you can rather than relying on goodwill, and make the communication explicit about what users should do with work that arrives during the outage. The government service manual’s guidance on deploying software regularly reinforces the same point: small, rehearsed, well-communicated changes fail less often.

Keep a decision log during the window

Every deviation from the runbook, every exception waved through, every variance accepted — logged with a timestamp and a name, in real time. It costs a minute each and it is the difference between a clean post-migration review and a fortnight of archaeology. It is also the evidence trail an auditor will ask for.

Governance and UK GDPR duties inside a data migration checklist

A migration moves personal data, usually copies it several times, and frequently leaves those copies lying around. The compliance items belong in the same data migration checklist as the technical ones, because they have the same deadline.

Treat non-production copies as real data

Test and rehearsal environments generally receive full production extracts, which means they carry the same personal data with weaker controls and looser access. Either mask or synthesise the data for non-production use, or apply production-grade access control and a documented destruction date. Enumerating every copy created during the project, and who can reach it, is a five-minute exercise that regularly surprises people.

Apply retention and accuracy at the point of transfer

A migration is the best opportunity in a decade to act on the storage limitation and accuracy principles, because you are already touching every record. Records past their retention period should not be carried forward simply because carrying them is easier than deciding. Our guide to a data governance framework for SMEs covers how to set those periods so the migration has something to apply.

Confirm processor obligations before data leaves

If a migration partner or a tool handles the data, the controller and processor responsibilities apply, including written instructions, security obligations and deletion at the end of the engagement. Where the data crosses borders — a support team outside the UK, a cloud region elsewhere — that needs checking before extraction, not after.

Capture the audit evidence the migration generates

Profiling outputs, mapping versions, validation results, reconciliation packs, the decision log and the sign-off. Store them together as a bundle. Anyone asking in eighteen months why a figure changed will be answered in ten minutes rather than ten days, and the same bundle satisfies most of what an internal auditor wants from a data migration checklist.

What a data migration checklist costs in effort and time

Budgeting a migration by the size of the database is the most common estimating error. Effort tracks the number of source systems, the number of mapped fields and the state of the data far more than it tracks volume.

The cost drivers that actually move the number

Each additional source system adds reconciliation surface. Each poorly-documented legacy schema adds discovery time. Each business rule that exists only in someone’s head adds a workshop. Ten million clean rows from one well-understood system is a smaller job than 200,000 rows spread across four spreadsheets, an access database and a system whose original developer left in 2014.

Realistic timelines by estate complexity

For a single well-documented source with a clean schema, six to eight weeks from profiling to cutover is achievable. Two or three systems with moderate data-quality problems typically runs twelve to twenty weeks. A multi-system ERP replacement with poor documentation and regulated reporting is a six-to-twelve month programme, and the data migration checklist for it should be treated as a workstream with its own lead.

Estate profileSourcesElapsed timeRehearsalsTypical UK cost band
Single clean system16 to 8 weeks2£15k to £35k
Two systems, moderate quality issues2 to 312 to 20 weeks3£40k to £90k
Finance or payroll with parallel run2 to 416 to 26 weeks3 to 4£70k to £150k
Multi-system ERP replacement4 or more6 to 12 months4 or more£150k and above

Those bands assume the validation and reconciliation work described above is in scope. Where a proposal comes in materially below them, the usual explanation is that proving correctness has been left to the client without anyone saying so, which is the most expensive kind of saving a data migration checklist can expose.

Failure modes a data migration checklist is designed to catch

Migrations fail in patterns, and the patterns repeat across industries and toolsets. Each of these has a specific checklist item that prevents it.

The silently truncated field

A source field exceeds the target’s length limit and the load layer quietly trims it. Addresses lose their final line, notes lose their conclusion, reference codes lose their suffix and stop matching. The load reports complete success because nothing raised an error. Field-level length comparison between source and target catches this in the first rehearsal.

The reconciliation nobody could reproduce

The pack was produced once, by one person, in a spreadsheet built on the night, using queries never written down. A variance appears on Monday and nobody can regenerate Saturday’s figures to compare. Version-controlled, automated reconciliation queries run on every rehearsal turn this from a crisis into a diff.

The rollback that was never tested

The plan said restore from backup. Nobody checked that the backup restores, how long it takes, or whether the integrations reconnect afterwards. Discovering that the restore takes nine hours when four remain in the window is a genuinely common way for a migration to become an outage. Test the restore, time it, and record the result in the data migration checklist.

The delta window that never closed

Extract at 19:00, load until 23:00, and quietly forget the four hours of source changes in between. The reconciliation passes because it compares the extract against the target, not the live source against the target. Explicitly counting and applying post-extract changes — and reconciling against the source as it stood at freeze, not at extract — closes the gap.

The interface that pointed at the old database

Reporting tools, integrations, scheduled jobs and that one spreadsheet with a live connection all need repointing. The system looks migrated; a nightly job keeps writing to the legacy database for a fortnight before anyone notices two divergent sets of numbers. Inventory every consumer of the source data during profiling and treat repointing as a first-class cutover step.

The full data migration checklist, phase by phase

Consolidating everything above into a sequence you can lift into a plan. Each item needs an owner and an evidence artefact, because an unowned checklist item is a wish.

Phase 1 — Discovery and profiling

Inventory source systems, tables and consumers. Profile every column. Agree scope by record type. Agree the reconciliation control figures with the business. Split the estate into migrate, archive and discard. Measure the delta rate. Record the migration pattern decision with its trade-offs.

Phase 2 — Build and rehearse

Write and version the source-to-target mapping. Build extract, transform and load. Build the validation suite across all four layers. Build the reconciliation queries on both sides. Build and time the rollback. Run at least two full rehearsals at production volume, producing the validation results and reconciliation pack each time.

Phase 3 — Cutover

Publish the runbook with timestamps and owners. Freeze changes and disable entry points. Take the final extract and record its timestamp. Load, then run the validation suite. Apply and count the delta. Produce the reconciliation pack. Hold the go or no-go checkpoint before the point of no return. Repoint every interface. Maintain the decision log throughout.

Phase 4 — Post-migration

Re-run reconciliation daily for two weeks. Keep the legacy system available read-only for an agreed period. Triage and fix defects against a published SLA. Destroy non-production copies on the recorded date. Bundle the evidence and hold a review. Close the data migration checklist formally, with the business signing that the numbers agree.

PhaseExit criterionEvidence artefactTypical owner
Discovery and profilingScope and control figures signedProfiling report, scope statementData lead with business sponsor
Build and rehearseTwo clean full-volume rehearsalsValidation results, reconciliation packMigration engineer
Rollback readinessRevert executed and timed within windowTimed restore logInfrastructure lead
CutoverReconciliation within tolerance, go acceptedRunbook, decision log, signed packMigration lead
Post-migrationFourteen clean daily reconciliationsDaily variance report, review notesBusiness data owner

Frequently asked questions about a data migration checklist

How long should a data migration checklist take to prepare?

Preparation is most of the job. Expect profiling, scope agreement and mapping to consume roughly a third of total effort, and validation and reconciliation build another quarter. If your plan allocates a fortnight to preparation and a weekend to execution, the estimate is inverted and the weekend will absorb the difference.

Is validation the same as reconciliation?

No, and treating them as one thing is a recurring cause of failed sign-off. Validation proves the target faithfully reflects the source under the agreed mapping and is a technical test. Reconciliation proves the business’s own figures still agree and is a business test. A migration can pass the first and fail the second, which is precisely why the data migration checklist separates them.

How many rehearsals are actually necessary?

Two full-volume rehearsals is the practical minimum, three is comfortable, and regulated or payroll migrations usually need four. The purpose of the last one is not to find defects — it is to prove the timings and to produce a reconciliation pack the reviewers have already seen in the same format.

What if the vendor says rollback is not possible?

Then that is a decision to make explicitly, in writing, with the business accepting the consequence. Sometimes it is genuinely the right answer. What is never acceptable is discovering it during the window. If there is no rollback, the compensating controls are more rehearsals, a longer parallel run and a firmer point of no return.

Can a small business run a data migration checklist without specialists?

Largely yes, for a single clean source system. The profiling, mapping and reconciliation controls are all achievable with spreadsheet and SQL skills. Where outside help earns its fee is on multi-system moves, regulated reporting, and any migration where the rollback has to be genuinely executable rather than nominal. Our managed IT services and cloud adoption teams pick up exactly those cases.

References