
A migration is only finished when someone can demonstrate that nothing was lost. Every run we perform produces a reconciliation report: record counts, control totals and a list of every row that failed a rule, with the reason.
Profiling before mapping
Before a single field is mapped, we profile the source data: duplicates, gaps, encodings and rules nobody documented. This is usually where the real scope of a migration becomes clear.
Trial runs against production copies
We rehearse the cut-over against a copy of production, repeatedly, until the exception list is empty and the timing is known. Nothing about the live run should be a surprise.
The reconciliation pack
The live run is followed by a signed reconciliation pack: record counts before and after, control totals reconciled, and a tested rollback path in case anything does not match.
Related service: System integration and data migration.

