YUDARO BLOG / ODOO ERP

Odoo Data Migration Checklist: Products, Contacts and Opening Inventory

A reliable Odoo migration needs a defined scope, stable record identifiers, reviewed mappings, trial imports and business reconciliation. An import without errors can still contain incorrect relationships or quantities. Yudaro provides independent Odoo ERP implementation and consulting, including scoped migration, training and launch support. This checklist separates data preparation from the business decision to go live.

1. Separate master data, opening position and history

Decide what the new system must operate from its first day. Master data describes customers, suppliers, products and locations. The opening position describes outstanding commitments and approved starting quantities or balances. Historical records support reference and reporting. Do not assume all three should be imported through the same workflow.

  • Name the owner and authoritative source for each data group.
  • Document excluded history and how staff will access it.
  • Have the finance team determine financial migration treatment; this checklist does not prescribe accounting entries.
Data groupScope decisionBusiness check
Master dataWhich active records and relationships are needed?Owners approve identity, units and required attributes.
Opening positionWhich outstanding orders, quantities and balances move?Responsible teams reconcile the cutover position.
HistoryWhich transactions remain searchable or archived?Users can retrieve necessary references.

2. Clean records before deciding their target identity

A shared name is not enough to merge two customers, suppliers or products. Compare stable source identifiers and business attributes with the owner. Decide whether each record is retained, merged, inactive or excluded. Keep an auditable mapping rather than deleting the evidence of a duplicate.

Illustrative source recordReviewed target mappingDecision to retain
customer_104 and customer_287One approved customer targetOwner confirms a true duplicate; preserve both old references.
product_42 and product_96Two separate product targetsSimilar names, different variants; do not merge.
supplier_13Archived referenceExclude from active selection after owner approval.

3. Preserve stable identifiers and related-record mappings

Odoo's import documentation describes External IDs for updating records and linking related objects. Use a deliberate identifier scheme and check collisions. A SKU is a business product reference; it should not be assumed to serve every import relationship. Keep the old-to-new mapping available for orders, attachments and later updates.

  • Record source system, source object, source ID, target External ID and mapping status.
  • Map merged records' references to the same approved target.
  • Import required parent records before dependent records.
  • Keep identifiers consistent across trial and final runs.
  • Test repeated imports on a disposable dataset; verify updates rather than unexpected duplicates.

4. Check field meaning, units and company scope

Build a field worksheet before importing. Record the source column, target meaning, transformation, permitted values and owner. Examine representative variants, inactive products and missing values. Odoo supports unit conversion, but the selected units and categories must match the intended operation. Receiving a case and selling a unit requires an explicit conversion decision, not a renamed column.

Mapping checkQuestion to resolve
Product identityDoes this identify the template or the actual variant?
Quantity and unitIs the number pieces, weight, length or a package quantity?
Warehouse/locationWhich physical or logical stock location does it represent?
Company contextDoes the record belong to the correct company?
Dates and statusIs this an active commitment or historical reference?

5. Trial-import a representative sample

Use a test environment and an approved, appropriately protected sample. Include linked contacts, duplicate candidates, a product variant, an unusual unit and a record with missing required information. Odoo provides import templates and a Test step before Import. A technical validation checks import compatibility; the business owner must still inspect the resulting records and workflow.

  • Verify field mapping and related-record targets.
  • Inspect the imported records, not only the completion message.
  • Run a representative order through the configured process.
  • Keep error files, corrections and the exact import version.
  • Repeat the trial after any meaningful mapping change.

6. Reconcile totals and exceptions explicitly

Compare the approved source snapshot with the target using the same filters and unit definitions. Counts alone can hide duplicate or misplaced records. Reconcile selected details and grouped totals, explain differences, and have the responsible owner sign off. The following worksheet suggests checks; it does not define acceptable financial differences.

  • Separate missing records, duplicate records and legitimate exclusions.
  • Record source total, target total, difference, explanation and owner.
  • Confirm quantity reconciliation separately from valuation and financial approval.
DatasetReconciliation evidence
ContactsExpected active count, duplicate decisions and related company checks.
ProductsRecord and variant counts, units, categories and sample identifiers.
InventoryQuantities by product, location and applicable lot or serial reference.
Open ordersIncluded orders, remaining quantities, status and customer/supplier links.
Financial opening dataFinance-owned comparison and approval under the agreed migration method.

7. Rehearse the final cutover

Choose a source snapshot time and control what can change afterward. Assign owners for the final export, import, reconciliation and release decision. For physical inventory, Odoo distinguishes recording a count from applying an adjustment; validate the completed result and account for movements between counting and application. Keep financial and inventory treatment with the qualified business owners.

  • Define how transactions during the cutover window are captured.
  • Rehearse backup or restoration procedures and rollback triggers.
  • State who may authorize reopening the old system.
  • Reconcile again after the final run, then approve launch.
  • Give staff a named support contact for first-day exceptions.

What Yudaro needs to scope migration

Bring your source systems, sample files, active record counts, history requirements and current reports. Yudaro's Odoo migration services can be scoped around cleanup responsibilities, mappings, trial runs, acceptance and cutover support. Confirm the installed version, modules, edition and permissions before adopting interface instructions. Implementation services and software subscriptions are separate decisions.

Questions before you start

Are External IDs the same as database IDs?

No. Odoo distinguishes External IDs from internal database IDs. Use the appropriate relationship mechanism consistently; retain a stable source-to-target mapping.

Should we import all historical transactions?

Only when the business requirement and tested migration method justify it. An accessible archive may meet some reference needs without recreating every transaction.

Does a successful import prove readiness?

No. Confirm relationships, quantities, applicable opening data and end-to-end behavior. The responsible owners approve reconciliation and release.

Sources and scope

General implementation guidance and illustrative workflows, not verified client results. Vendor capabilities depend on version, edition, plan and configuration.

BUILD A PRACTICAL PLAN

Start with one workflow worth improving.

Bring your systems, sample records and operating priorities. We will discuss fit, scope and the next decision.

Request a consultation