Skip to content
Lacambra Web Portal Services
← All writing
Migrations · 14 August 2026 · 8 min read

Report what did not move

Every migration report I have received from another supplier states one number: how many records transferred. That number is close to meaningless on its own.

A stack of archive boxes, the top one open on tightly packed file folders, with a small group of folders set aside on the floor apart from the rest.

Say a report tells you 2,400 records were transferred. You have no way to know whether that is all of them. You do not know how many were in the old system to begin with, or what happened to the difference. Six months later somebody looks for a file from 2019 and it is not there, and by then the supplier has gone and nobody can say whether it was ever moved.

So I hand over two tables instead of one. The first is what moved. The second is what did not, and why.

The second table is the one that matters

On a project last year the old system held 2,362 staff accounts. Ninety-three moved across with their records. The other 2,269 did not, and the report says why: 2,115 belonged to people who no longer work there, and 154 had no email address on file, which meant there was no way to give them a login.

Neither of those is a failure. Both are decisions. The difference is that they are written down, with a reason attached to each group, so that anybody who asks in three years gets an answer rather than a shrug.

The same project moved 679 travel requests, 847 hotel bookings, 1,487 transport bookings and 302 unfinished drafts. That last category is the one people forget. Drafts are half-finished work that belongs to somebody, and dropping them silently is how you lose a user's trust on day one.

Every account in the old system, accounted for2,362 staff accounts93moved, with their records2,115no longer work there154no email on file, so no login3,315 records moved. None lost.679travel requests847hotel bookings1,487transport bookings302unfinished draftsNeither group is a failure. Both are decisions, written down with a reason attached to each.Every account, accounted for2,362 staff accounts93moved, with their records2,115no longer work there154no email on file, so no login3,315 records moved. None lost.679travel requests847hotel bookings1,487transport bookings302unfinished draftsNeither group is a failure. Both aredecisions, written down with a reasonattached to each.
Drawn, not photographed, and these are the real figures from that project. 93 accounts moved, 2,115 belonged to people who had left, 154 had no email address. Every one of the 2,362 has a reason beside it.

Why this is a commercial argument, not a technical one

A finance lead or a board cannot sign off "we think it worked." They can sign off a document that accounts for every record in the old system: this many moved, this many did not, here is the reason for each group. It converts a leap of faith into a piece of paper.

It also protects me. If a dispute ever arises about a missing record, the answer already exists and it was written before anyone went looking.

A migration report showing records moved by type, and a second table listing every record that did not move with its reason and disposition.
A migration report from the demo system, with invented counts. The second table is the point: 944 records did not move, and every one of them carries a machine-logged reason and a decision about what happened to it instead.

Rehearse first, always

None of this works without a rehearsal on a copy of the live data. The rehearsal is where you discover that a date field has three different formats in it, or that 154 accounts have no email. You want to find that out on a copy, in week one, with time to decide what to do. Not on the night of the move.

This is why I sell the trial run as its own piece of work. Nobody, including me, should quote a fixed price on a database they have not opened. And occasionally the rehearsal says the move is not worth doing, in which case that is what the report says and you have spent the smallest amount of money possible to find out.

Enrique Lacambra III builds internal business systems from Pasig, Metro Manila.

Email me← All writing

Tell me what is broken and I will tell you if it is worth building. A 20-minute call, no charge, and I will say so if you do not need me.