Think Build Implement Repeat
London, UK +44 7367 067226
WhatsApp FOLLOW f in X
PHP Development

Moving Years of Records Without Losing Any

Last updated:

It is always worse than expected

Every dataset has surprises: duplicate records, missing required fields, dates in three formats, and a column that means something different for records created before a certain year.

Profile the actual data before estimating the migration. Estimating from a description of the data rather than from the data itself is how migrations double in cost.

Profile before planning

  1. Count records, and count distinct values in key fields
  2. Find the nulls and the empty strings
  3. Look for duplicates by every plausible key
  4. Check date and number formats for consistency
  5. Find the records that break your assumptions

Migrate repeatedly

The migration should be a repeatable script, run many times into staging, not a one-off manual exercise. That way the final run is the twentieth rather than the first.

  • Rerunnable from a clean state
  • Logging every record that could not be migrated, with the reason
  • Producing a reconciliation report automatically
  • Fast enough to run within your cutover window

Reconcile before going live

CheckWhy
Record counts by typeNothing silently dropped
Financial totalsMoney must balance exactly
Spot checks on real recordsFields mapped correctly
Relationship integrityNothing orphaned
Date rangesOldest and newest as expected

Decide what not to migrate

Not everything needs moving. Historical records nobody uses can stay in a read-only archive rather than complicating the new system's data model.

That decision frequently halves the migration effort, and it is worth having the conversation explicitly rather than defaulting to everything.

Frequently asked questions

How long does migration take?

Frequently 20–40% of a project's effort. Anyone estimating it as a small task has not looked at the data.

What about records that cannot be migrated?

Quarantine them with the reason, and decide case by case. Silently dropping them is the failure to avoid.

Should we clean the data first?

Fix what blocks the migration. Perfecting the data before starting delays everything and is rarely completed.

Can we run both systems in parallel?

Briefly, and it is operationally difficult — two systems diverge quickly. A clean cutover with a tested rollback is usually better.

Keep reading

Years of records in a spreadsheet?

Profiling it is the first step and it usually changes the estimate. Happy to take a look.

Book a free 30-minute call Get a project estimate WhatsApp us

Related services

What we build for problems like this one

Web DevelopmentCustom Software Development