Library · Data Practice OS
Reconciliation and cutover checklist
Template · Published · Source reviewed
Copy one per workload. It is complete when every check below is green for the whole Parallel run window and the business owner has signed. Method detail is in Reconciliation, parallel run and cutover.
1. Scope
| Field | Value |
|---|---|
| Workload ID (from Migration wave plan) | |
| Legacy objects | |
| Target objects | |
| Parallel run window | e.g. 4 weeks including one month-end |
| Agreed tolerances | exact for counts and keys; e.g. 0.01% for floating-point sums |
| Known, accepted differences | each one with its reason and an approver and, for deliberate rule changes, an accepted decision record id; the pinning test kept |
2. Checks (run automatically on every parallel run)
| # | Level | Check | Tolerance | Result |
|---|---|---|---|---|
| R1 | Table | Row count per table and per partition (e.g. per day) | exact | |
| R2 | Table | Primary key set: missing in target, extra in target | 0 | |
| R3 | Column | Null count and distinct count per column | exact | |
| R4 | Column | Min/max for numeric and date columns | exact | |
| R5 | Aggregate | Sum of key measures, grouped by business dimensions | agreed | |
| R6 | Row | Hash of each row (normalised types, trimmed strings, UTC timestamps) compared on key | 0 mismatches | |
| R7 | Sample | Random and edge-case records compared field by field | 0 | |
| R8 | Report | Top reports / extracts produce identical outputs | exact | |
| R9 | Rule | Each extracted business rule has a passing equivalence test or an accepted decision record (proposed, Tracing rules from legacy code to modern code) | all pass | |
| R10 | Ops | Load completes within SLA; failures alert | met |
Use Lakebridge reconcile or SnowConvert AI validation where they fit. Otherwise write the checks as dbt tests or a reconciliation job that writes results to a table, so the history is auditable.
Common false differences to normalise before comparing: character padding, collation and case, timestamp time zones and precision, decimal scale, NULL vs empty string, and float rounding.
3. Daily parallel-run log
| Date | Legacy run ok | Target run ok | R1-R10 all green | Differences found | Root cause | Fixed in |
|---|---|---|---|---|---|---|
4. Cutover
- [ ] All checks green for the whole window, including at least one period-end
- [ ] Business owner sign-off recorded
- [ ] Every rule writing to the cut-over tables is verified or waived (proposed, Tracing rules from legacy code to modern code; Traceability gap report and rule trace card G8)
- [ ] Consumers' connections switched (BI, extracts, APIs, downstream jobs)
- [ ] Legacy jobs disabled (not deleted) and the legacy store set read-only
- [ ] Rollback plan tested: how to re-enable legacy within N hours
- [ ] Monitoring live on the target (Data observability)
- [ ] Hold period agreed (e.g. 30-90 days), then decommission and archive under the records schedule
5. Sign-off
| Role | Name | Date |
|---|---|---|
| Business owner | ||
| Data product owner | ||
| Platform lead |