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.

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.
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.

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.
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.
