Skip to content
Explore the website
Discuss your project

contact@almousa.dev

DECISION GUIDE / KNOWLEDGE

ERP migration: how to verify a correct transfer

Matching counts and totals alone is insufficient. Verify identifiers, relationships and currencies, and rehearse recovery before cutover. Includes a synthetic-data reconciliation demo.

AM
ALMOUSAWebsites & software systems

Content updated:

THE CENTRAL IDEA

Matching counts and totals alone is insufficient. Verify identifiers, relationships and currencies, and rehearse recovery before cutover. Includes a synthetic-data reconciliation demo.

01

Define what moves and what stays

Inventory entities, relationships, required fields and volume. Document historical states that remain in a read-only archive, define the write-freeze time and name the approver for each group. Do not migrate data the new system does not need.

02

Stabilize identifiers and transformations

Maintain a source-to-target identifier mapping. Odoo External IDs support record updates and relationships; they must be unique and imports tested. Document currency, timezone and missing-value transformations. Back up before an actual import.

03

Reconcile records, not just the total

The demo compares every invoice identifier, integer minor-unit amount and currency. Counts and totals can match while two invoice amounts are swapped, so any row mismatch fails. Relationships, tax and conversion rates require additional tests in the actual system.

04

Rehearse cutover and recovery

Rehearse migration in an isolated environment and record duration and differences. Do not open the new system for writes before reconciliation approval. Define the rollback decision owner, last known-good data point and treatment of writes after cutover. This local demo is not a production recovery test.

EDUCATIONAL EXAMPLE / REVIEWABLE STEPS

Apply the method to illustrative data

The materials below are original educational examples, not client data or commercial delivery results.

  1. Read the assumptions and define success before testing.
  2. Test a valid case and an exception, then record the difference.
  3. Do not transfer the result to your project without testing its data and permissions.

ORIGINAL RESOURCE / EDUCATIONAL EXAMPLE

Try the method and keep the file

Version 1 — 7 September 2026. Synthetic data only, without submission or connection to a client system.

The example has not run yet.

Download the worksheet (JSON)

The demo compares identifiers, currencies and integer minor-unit amounts. It does not test a general ledger, taxes or database recovery.

Compare fit, not popularity.

Single cutover

Fits: A bounded scope with an agreed downtime window.

Consider: A rehearsed rollback plan and conflicting-write prevention.

Phased migration

Fits: Entities can be separated clearly.

Consider: Identifier mapping and an explicit source of truth at each stage.

This is decision support, not a service offer or a performance guarantee. Your final choice depends on your requirements and the versions selected at implementation.

Official sources for further reading

Odoo 19.0 — Export and import dataopens in a new window

Sources describe technology characteristics. The scenarios and trade-offs are contextual guidance, not benchmark results.