Your Business Has Outgrown Excel. Now What?
Excel is where every business starts. It is free (or close to it), flexible, and everyone knows how to use it. For the first year or two, a few spreadsheets handle your customer list, product catalog, invoices, and basic accounting just fine.
Then things start breaking.
Someone overwrites a formula. Two people edit the same file and create conflicting versions. Your customer list has duplicates you cannot find. Inventory counts do not match because three different spreadsheets track the same products. Your accountant spends hours reconciling data that should match but does not.
If this sounds familiar, you are ready for an ERP. The question is: how do you get all your business data out of Excel and into a proper system without losing anything? Whether you choose Odoo Community or another platform, the migration process follows the same fundamentals.
This guide gives you the exact process.
Before You Start: Audit What You Have
Most businesses do not realize how much data they have scattered across spreadsheets until they try to migrate it. Start with an inventory of your Excel files.
Common Data Sources to Catalog
| Data Type | Typical Excel Location | ERP Destination |
|---|---|---|
| Customer list | ”Clients.xlsx” or “Contacts.xlsx” | Contacts / CRM module |
| Product catalog | ”Products.xlsx” or “Stock.xlsx” | Product module |
| Price lists | ”Pricing.xlsx” or embedded in product sheet | Pricelist module |
| Supplier list | ”Fournisseurs.xlsx” or “Suppliers.xlsx” | Contacts (Vendor type) |
| Sales history | ”Ventes 2024.xlsx”, “Ventes 2025.xlsx” | Sales / Invoicing module |
| Purchase history | ”Achats.xlsx” | Purchase module |
| Inventory counts | ”Stock_count.xlsx” | Inventory module |
| Employee list | ”RH.xlsx” or “Staff.xlsx” | HR module |
| Chart of accounts | ”Plan_comptable.xlsx” | Accounting module |
| Opening balances | ”Balance_ouverture.xlsx” | Accounting module |
What to Migrate vs. What to Leave Behind
Not everything in your spreadsheets needs to go into the ERP:
Always migrate:
- Active customer and supplier contacts
- Current product catalog with prices
- Current inventory levels
- Chart of accounts
- Opening balances (as of migration date)
- Active employee records
Consider migrating:
- 1-2 years of sales and purchase history (useful for reporting and AI forecasting)
- Historical customer purchase patterns
Usually skip:
- Transaction history older than 2 years (archive it separately)
- Obsolete products you no longer sell
- Inactive contacts you have not communicated with in 2+ years
- Draft or incomplete records
Migrating less data means a cleaner ERP, a faster project, and fewer headaches.
Step 1: Clean Your Data (The Most Important Step)
Data cleaning is where most migration projects succeed or fail. Dirty data in Excel becomes dirty data in your ERP — except now it is harder to find and fix.
Common Data Quality Issues
Duplicates: You have “Oasis Techno Cloud”, “OASIS TECHNO CLOUD”, and “Oasis TC” as three separate customers. They are the same company.
Solution: Sort your data alphabetically, scan for variations, and merge duplicates. For large lists, use Excel’s “Remove Duplicates” feature or VLOOKUP to find near-matches.
Inconsistent formatting: Phone numbers stored as “0661234567”, “+212661234567”, “06 61 23 45 67”. Product names sometimes capitalized, sometimes not.
Solution: Standardize formats before migration. Use Excel formulas:
=TEXT(A1,"0000000000")for phone numbers=PROPER(A1)for names=TRIM(A1)to remove extra spaces
Missing data: Customer records without email addresses. Products without categories. Invoices without dates.
Solution: Fill in what you can, flag what you cannot, and decide whether incomplete records should migrate. A customer without an email can still be useful; a product without a name cannot.
Wrong data types: Numbers stored as text. Dates in mixed formats (DD/MM/YYYY in some cells, MM/DD/YYYY in others). Prices with currency symbols embedded (“$25.00” instead of “25.00”).
Solution: Use Excel’s DATEVALUE, VALUE, and SUBSTITUTE functions to standardize. Ensure all numeric columns are actually formatted as numbers.
Data Cleaning Checklist
Run through this checklist for each data file:
- Remove duplicate records
- Standardize names and formatting
- Fill in missing required fields
- Verify phone number and email formats
- Ensure dates are in a consistent format (YYYY-MM-DD recommended)
- Remove currency symbols and formatting from numeric fields
- Validate data ranges (no negative stock quantities, no future dates for past transactions)
- Add required columns that your ERP needs but Excel does not have
Step 2: Map Your Excel Columns to ERP Fields
Every ERP has its own field structure. Your Excel column headers will not match perfectly. Create a mapping document.
Example: Customer Data Mapping
| Excel Column | ERP Field (Odoo) | Notes |
|---|---|---|
| Nom | name | Required field |
| Societe | company_name | Only for B2B contacts |
| Tel | phone | Standardize format first |
| Validate format | ||
| Adresse | street | Split into street/city/country |
| Ville | city | Extract from combined address field |
| Pays | country_id | Must match Odoo country codes |
| Type | customer_rank / supplier_rank | Map “Client” to customer, “Fournisseur” to supplier |
| Note | comment | Free text, transfers as-is |
Example: Product Data Mapping
| Excel Column | ERP Field (Odoo) | Notes |
|---|---|---|
| Reference | default_code | Internal reference / SKU |
| Nom Produit | name | Product name |
| Description | description | Detailed description |
| Prix Vente | list_price | Must be numeric, no currency symbol |
| Prix Achat | standard_price | Cost price |
| Categorie | categ_id | Must match ERP category names exactly |
| Code Barre | barcode | EAN-13 or internal barcode |
| Stock Actuel | qty_available | Will be set via inventory adjustment |
| Unite | uom_id | Must match ERP unit names (Units, Kg, Liters) |
Pro Tips for Data Mapping
- Export a sample from your ERP first — Most ERPs let you export a blank template with the correct column headers. Use this as your target format.
- Handle one-to-many relationships — Your Excel might have “Address” as one column, but your ERP wants “Street”, “City”, “State”, “Country”, “Zip”. You need to split these.
- Map codes, not names — ERPs often use internal codes. “Morocco” might need to be “MA”. “Kilograms” might need to be “kg”. Check the ERP’s reference data.
Step 3: Prepare Import Files
Most modern ERPs (including Odoo) accept CSV or Excel files for import. Prepare one file per data type.
Recommended Import Order
The order matters because of dependencies:
- Chart of Accounts — Must exist before any accounting entries
- Contacts (Customers and Suppliers) — Must exist before sales/purchase orders
- Product Categories — Must exist before products
- Products — Must exist before inventory and sales
- Inventory (Opening Stock) — Requires products and warehouses
- Opening Balances — Requires chart of accounts and contacts
- Historical Data (if applicable) — Requires all of the above
File Preparation Tips
- Save as CSV with UTF-8 encoding (critical for French/Arabic characters)
- Use the date format your ERP expects (Odoo uses YYYY-MM-DD)
- Keep files under 5,000 rows for reliability; split larger files
- Include a header row matching the ERP’s expected column names
- Remove any Excel formulas — save as values only
Step 4: Test With a Small Batch First
Never import all your data at once. Start with a test batch.
The Test Import Process
- Take the first 20-50 records from each file
- Import them into a test/staging environment (not your live ERP)
- Verify every field imported correctly
- Check for common issues:
- Characters displaying incorrectly (encoding issues)
- Dates off by one day or shifted to wrong format
- Numbers with unexpected decimals (2.5 became 2.50000001)
- Related records not linking (customer on an invoice not found)
- Fix any issues in your source files
- Re-test until clean
Common Test Import Failures
| Issue | Cause | Fix |
|---|---|---|
| ”Field not found” | Column name mismatch | Match column header exactly to ERP field name |
| Special characters corrupted | Wrong encoding | Save CSV as UTF-8 with BOM |
| Dates wrong | Format mismatch | Convert to YYYY-MM-DD |
| Related record not found | Dependency not imported yet | Import dependencies first |
| Duplicate key error | Record already exists | Remove duplicates or use “update existing” mode |
Step 5: Execute the Full Migration
Once test imports are clean, proceed with the full dataset.
Migration Day Checklist
- Backup your ERP database before starting
- Stop all users from entering data during migration
- Import data files in the correct order (see Step 3)
- Verify record counts after each import (exported 500 customers, imported 500)
- Spot-check 10-20 random records in detail
- Run a trial balance to verify accounting data
- Compare inventory totals between Excel and ERP
- Re-enable user access only after verification
Handling the Cutover
The trickiest part of any migration is the cutover period — the gap between when you stop using Excel and start using the ERP.
Option A: Hard cutover (recommended for small businesses)
- Pick a date (ideally start of a month or quarter)
- All data up to that date goes into the ERP
- From that date forward, everything happens in the ERP
- Keep Excel read-only for historical reference
Option B: Parallel run (for risk-averse businesses)
- Run both Excel and ERP for 2-4 weeks
- Enter all transactions in both systems
- Compare results at the end of the parallel period
- Switch to ERP-only once you are confident
- Downside: double data entry is painful and error-prone
We recommend Option A for most SMEs. The parallel run sounds safer but doubles your workload and often drags on longer than planned.
Step 6: Validate and Reconcile
After migration, verify data integrity:
Financial Validation
- Trial balance in ERP matches your last Excel trial balance
- Accounts receivable total matches your customer balance list
- Accounts payable total matches your supplier balance list
- Bank balance in ERP matches your bank statement
Operational Validation
- Total inventory value in ERP matches your last stock valuation
- Customer count matches (minus intentionally excluded records)
- Product count matches
- Price spot-checks pass (randomly verify 20 product prices)
User Validation
- Ask each department to verify their data looks correct
- Sales team checks their key customers are present with correct details
- Purchasing team verifies supplier information and pricing
- Warehouse team confirms stock levels for top 50 products
Realistic Timeline for Excel-to-ERP Migration
| Business Size | Data Cleaning | Mapping and Prep | Test Import | Full Migration | Validation | Total |
|---|---|---|---|---|---|---|
| 1-5 employees | 1-2 days | 1 day | 1 day | 1 day | 1 day | 1-2 weeks |
| 5-15 employees | 2-5 days | 2-3 days | 1-2 days | 1 day | 2 days | 2-3 weeks |
| 15-30 employees | 1-2 weeks | 3-5 days | 2-3 days | 1-2 days | 3-5 days | 3-5 weeks |
| 30-50 employees | 2-3 weeks | 1 week | 3-5 days | 1-2 days | 1 week | 5-8 weeks |
Notice that data cleaning takes the longest. The actual import is usually the fastest part.
Mistakes That Derail Migrations
- Skipping data cleaning — “We will fix it in the ERP” never happens. Clean before you migrate.
- Migrating everything — Ten years of history, obsolete products, and dead contacts just create noise.
- No test import — Discovering import errors during the live migration causes panic and delays.
- Wrong import order — Importing invoices before customers exist causes cascading failures.
- No cutover plan — People keep entering data in Excel after migration, creating two versions of truth.
- Underestimating the timeline — “It is just a data import” is the most dangerous phrase in ERP projects.
Let Us Handle Your Migration
At Oasis Techno Cloud, data migration is included in every implementation pack. We clean your data, map your fields, run test imports, execute the migration, and validate results — so you do not have to become a data migration expert.
Our team has migrated businesses from Excel, QuickBooks, Sage, and custom systems into Odoo Community. We know the edge cases, the encoding issues, and the reconciliation tricks.
Related Articles
- Odoo Inventory Management: From Chaos to Control
- Odoo POS for Retail: Complete Setup Guide
- How Much Does ERP Implementation Really Cost?
Ready to leave Excel behind? Get in touch and we will assess your migration complexity for free.