Unlimited Design & Technology

Data and Business Systems

Plan a data migration with reconciliation checks

A successful load does not prove a migration preserved business meaning. Define reconciliation across counts, relationships, representative records, and operational decisions, then make those checks the basis for accepting or stopping the cutover.

UDT InsightsNov 14, 2021
A colleague reconciles two databases connected by a migration bridge. A colleague carries a parcel.

A migration is not complete when a progress bar reaches the end. The receiving system must contain the records people expect, with relationships and meanings they can use. Treat reconciliation as a comparison between an agreed source snapshot and the intended destination, including documented exclusions and transformations.

Define the comparison boundary

Name the source snapshot, destination scope, and business owner who accepts the result. Specify which records move, which remain archived, and which change shape. A split customer address may become several destination fields. Such a transformation needs explicit acceptance rules rather than a demand for identical files.

Document how work continues during preparation. Choose a write pause or a controlled final change capture. If source records change after extraction without a corresponding capture process, the team no longer has a stable basis for comparison.

Use several independent checks

Compare record counts by meaningful groups, such as active versus retired equipment. Then compare required fields, relationship coverage, and selected business totals. Investigate differences before explaining them away. Matching totals can conceal an omitted group and an unintended duplicate group.

PostgreSQL foreign keys enforce matching references between related tables.[1] Include equivalent integrity checks in the destination, but do not mistake valid references for correct business mapping. A task can reference an existing asset and still reference the wrong asset. Trace representative records through complete workflows.

Hypothetical example: moving a service register

A hypothetical service team moves equipment records and open maintenance tasks to a new application. It reconciles active equipment by site and compares open tasks by equipment identifier. The load contains the expected task count, but a mapping assigns several tasks to retired equipment.

The team stops acceptance, corrects the mapping, and reruns the checks from the same snapshot. It also tests whether an operator can locate a task and schedule the correct equipment. This is a proposed scenario, not evidence of a completed customer migration.

Make cutover reversible within a clear limit

PostgreSQL COPY FROM appends loaded data to existing table contents.[2] A rerun therefore needs an intentional replacement, cleanup, or deduplication design. Recommend a rehearsed procedure that identifies exactly which imported records a failed attempt created. Never rely on operators remembering which buttons they pressed.

Rollback has a boundary. Once staff create new work in the destination, returning to the source may require reconciliation of those changes too. Set a decision point, an approver, and a recovery procedure before the cutover begins. Require the accepting owner to review a sample of excluded records as well as successfully migrated records.

  • Record the source snapshot and transformation version.
  • Compare counts by business group, not just overall.
  • Check missing references and duplicate destination identifiers.
  • Trace representative records through operator tasks.
  • Document exclusions, unresolved differences, and acceptance authority.
  • Rehearse a failed load and a controlled rerun.

References

Discuss your next project

Talk with UDT about your needs and the next practical step.

Contact UDT
Zalo