Excel to Odoo: Data Migration Checklist for Uzbekistan

Excel to Odoo: Data Migration Checklist for Uzbekistan

7 min read 10 views
The mistake in moving an Excel file to Odoo is usually not in the import button — it is in the preparation. This checklist covers field mapping, test imports, balance reconciliation, and acceptance criteria.

The right way to migrate from Excel to Odoo is to clean the data, map the fields, keep stable External IDs, import into a test copy first, then load data in dependency order and get signed acceptance after reconciling balances before go-live. According to Odoo documentation, objects such as contacts and products can be imported through .xlsx or .csv files. But passing the Test button does not mean the business review is complete.

This approach works with the same logic for a distributor in Tashkent, a service company, or a retail business with branches: customers, products, prices, units of measure, and opening stock balances are checked separately. It has limits too. Importing contacts or products does not automatically move historical accounting data. The next step: export a small sample from your Odoo database and build a field map that matches the column names you actually have.

Migration is not just uploading a file

Importing inconsistent source data preserves those inconsistencies. That is why the work starts not with the import, but with defining the data owner, the source file, and the acceptance criteria.

The Odoo import documentation explains .xlsx and .csv formats, matching columns to Odoo fields, and the Test and Import actions. Take the hard warning in that documentation seriously: an import can be permanent, and you should not rely on a simple undo button to reverse it. Before touching a live database, check both the backup and the restore process in a test environment.

What is standard, and what needs separate work?

In an Odoo migration, not everything is programming. But not everything is finished with one button either.

Standard import

Contacts, products, and similar objects are loaded through .xlsx or .csv.

Configuration

UZS, units of measure, warehouse locations, and languages are agreed in advance.

Custom code

If old ID formats or complex rules are involved, a transformation is written before import.

Integration

If ongoing exchange with 1C, a website, or a bank is needed, a separate connection is built.

Field mapping: the main document before moving anything

Readers do not need a long list of technical column names. Export a small sample from your own Odoo database and answer these three questions.

  • Contacts: do names, phone numbers and company links look correct?
  • Products: are SKUs, units and prices written consistently?
  • Stock: were quantity, warehouse and unit checked separately?

Contacts: External ID stops duplicates

The mistake that causes the most damage in contact migration is loading "OOO Atlas", "Atlas MChJ", and "Atlas" as three different customers. First, agree on the duplicate rule. Which one takes priority: STIR, phone, email, or old customer ID? Then assign a stable External ID to every row.

The Odoo contacts documentation explains that a contact can be an individual or a company, that the name is mandatory, and that an individual can be linked to a company. In Uzbekistan data, +998 phone numbers, Uzbek apostrophes, Russian text, and English product names often sit side by side. Check apostrophes, Cyrillic text and +998 numbers in the import preview. Also test date formats, encoding and CSV separators on the sample.

External IDs must be unique across object types: use distinct prefixes such as company_001 and product_001, and retain them on subsequent imports. A Database ID is not a portable key for a different database. Prepare contacts, products and opening stock in separate files: a shared mapping document does not mean importing different objects in one file.

Analyst maps spreadsheet fields to ERP modules on a worktable
A field map defines what is migrated and who approves the rules.

Row counting: one useful example

The figures below are illustrative. They help agree which rows are valid records, duplicates or corrections before the import.

240 source rows − 12 duplicates − 8 rows held for correction = 220 rows ready to import.

After loading 220 rows, still spot-check contacts, selected amounts and stock balances.

Stock balances are separate from product import

Loading a product catalog does not create opening stock balances. In the Odoo inventory process, On Hand means the saved quantity in the system, Counted means the physically counted quantity, and Difference means the variance; details are provided in the inventory documentation.

A hypothetical example: a company has warehouses in Tashkent and Samarkand. If Excel has one column called "Balance", that is not enough in Odoo. Quantity must be split by product, location, and unit. If there is movement between counting and applying the balance, the number shifts. That is why the go-live time is agreed in advance.

The import button does not mean the migration is done. Migration is done when the business numbers agree.

Celion approach

Practical import sequence

This sequence fits both a small business and a company with branches. The difference is in the number of fields and the depth of checks.

  1. 1. Freeze the source Make the final Excel files read-only and move old versions into an archive.
  2. 2. Prepare the test database Take a Production backup and test the restore in practice on a test copy.
  3. 3. Configure the reference data Currency, units, and warehouse locations are agreed, along with contact types and tax fields.
  4. 4. Load in dependency order Import companies first, then individuals, products, and finally balances.
  5. 5. Compare and get sign-off Rows, selected amounts, balances, and links are confirmed by their owners.

A short pre-launch checklist

  1. Freeze the final Excel file and archive older versions.
  2. Run the import in a test database and open sample contacts and products.
  3. Reconcile duplicates, selected amounts and stock balances with their owners.
  4. Do not add new data to the old Excel file until the acceptance note is signed.

What to remember

When moving from Excel to Odoo, technology is not enough. Discipline is needed too.

  • Keep the External ID. This is the foundation that protects you from duplicates during re-imports and updates.
  • Take a sample from your own database. Check field names from your real Odoo configuration, not from an internet template.
  • Inventory is a separate process. Loading a product card does not mean stock has appeared in the warehouse.
  • Test is not enough. Odoo Test shows technical errors; a person confirms business fit.
  • Do not go live without sign-off. If it is not recorded who accepted which number, the dispute will appear in Production.

Frequently asked questions

Can I import an Excel .xlsx file directly into Odoo?
Yes, Odoo supports .xlsx and .csv imports. But if formulas, hidden columns, and mixed formats remain in the file, checking becomes harder. The practical path: create a clean import file, export a sample from your Odoo database, match the columns, and run it through the Test button first.
What should I do to avoid duplicates when re-importing?
Give each record a stable External ID and do not change it in later imports. An old Excel ID, a 1C code, or an internal customer number can serve this purpose. Relying on the name is risky: "Atlas", "Atlas MChJ", and "OOO Atlas" may be the same customer.
If I import products, will the stock balance move too?
No, the product catalog and stock balances are separate jobs. First you load products, SKUs, units, and categories. Opening balances are entered through inventory by product, location, and unit. Tashkent and Samarkand warehouses should not be squeezed into one "balance" column.
If the import is wrong, can it be undone?
Do not experiment in the Production database relying on that. Odoo documentation warns that imports may be permanent and that a simple undo is not guaranteed. The right protection is a backup, testing in a test database, importing in small batches, and reconciling after every stage.

Make the migration orderly

If your Excel files, 1C exports, stock balances, and Odoo settings are not lining up, Celion can prepare a field map, test import, and acceptance checklist tailored to your process. We connect Odoo, integrations, and AI-based software solutions to the control points in the business first.

Contact us

Practical guides on this topic

Share this article