Think Build Implement Repeat
London, UK +44 7367 067226
WhatsApp FOLLOW f in X
  1. Home
  2. Blog
  3. Moving Years of Records Without Losing Any
PHP Development

Moving Years of Records Without Losing Any

Migrating data from spreadsheets or an old system into a new app: profiling the data, repeated staging migrations and reconciling totals before cutover.

Updated 2 min readBy SpiderHunts Technologies

Free estimateNo obligation

Get a free estimate

Tell us what you need. A senior engineer reads every enquiry.

Takes under a minute. We never share your details.

  • Free consultation
  • No commitment
  • NDA on request

Prefer to talk? Book a free 30-minute call →

Quick answer — TL;DR

Migration is usually the most underestimated part of a project. Profile the data first, migrate repeatedly into staging, and reconcile counts and totals before cutover.

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.

FAQ

Frequently asked questions

The questions readers ask us after this guide.

Still have a question?

Ask us directly — a senior engineer will get back to you.

Ask about your project

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

More on PHP Development

PHP Development

Why PHP Is Still a Sensible Choice

Is PHP still a good choice for business applications? Where modern, typed PHP fits, where another language is better, and the hosting and hiring arguments.

PHP Development

Improving Old Code Without a Rewrite

Modernising a legacy PHP application without a rewrite: move to a supported PHP version, add tests around what matters, then strangle rather than replace.

Start here

Years of records in a spreadsheet?

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

  1. You tell us what you needTwo minutes on the form, or a message on WhatsApp.
  2. A senior engineer reviews itAnd comes back with questions, a realistic range and an honest view on fit.
  3. Free 30-minute scoping callWe talk through scope, options and a realistic estimate — with no obligation.
Free estimateNo obligation

Talk to someone who builds this

Send a short brief and we will come back with an honest view and a realistic range.

Takes under a minute. We never share your details.

  • Free consultation
  • No commitment
  • NDA on request

Prefer to talk? Book a free 30-minute call →