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.
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.
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.
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.
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.
- Read the assumptions and define success before testing.
- Test a valid case and an exception, then record the difference.
- 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.
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 windowSources describe technology characteristics. The scenarios and trade-offs are contextual guidance, not benchmark results.