Migrate Custom ERP to Odoo: Process Mining, Data Mapping, Cutover
Migrate a custom-built ERP to Odoo: recover hidden rules, mine real processes, map unknown schemas to Odoo, rebuild what matters and run a safe cutover.
A bespoke ERP built in-house years ago is often the hardest system to leave, and the hardest part of any ERP modernization. Our Odoo migration services start by recovering what that system does before we touch the data.
This guide is for owners, CFOs and IT leads moving legacy custom software to Odoo. Replacing a packaged system near end of life instead? Read our guide to legacy ERP replacement with Odoo.
Why is migrating a custom ERP to Odoo different from a packaged ERP move?
Migrating a custom ERP to Odoo is different because nobody outside your company documented the old system. With a packaged ERP the data model is public; here you discover it first.
A custom-built system has no export tools, field lists or partners who have done the move before. The knowledge sits in code, stored procedures and a few long-serving staff, so you add a discovery phase before data mapping.
| Factor | Packaged ERP to Odoo | Custom ERP to Odoo |
|---|---|---|
| Data model | Documented by the vendor | Must be reverse engineered |
| Business rules | Mostly standard settings | Hidden in code, triggers and reports |
| Export tools | Built-in exports and reports | Direct database queries |
| Knowledge | Partners and user forums | A few staff and maybe one developer |
| Main risk | Version gaps and licensing | Missing a rule nobody wrote down |
Should you replace a custom-built ERP or keep it?
Replace a custom built ERP when the cost and risk of keeping it are higher than the cost of a clean move to Odoo. Keep it only if it does something unique that no standard ERP can match.
- Key person risk: only one developer, or a retired one, can change the code.
- Old stack: the language, database or server is out of support, a common trigger for legacy system modernization.
- Growth limits: new companies, warehouses, currencies or sales channels need custom work each time.
- Integration pain: every new bank, marketplace or tax portal needs a new hand-built link.
- Audit gaps: you cannot show who changed a price, a stock count or a posted entry.
Keep a piece of the custom system when it is a real edge, such as a pricing engine that wins orders. Connect it to Odoo instead of rebuilding it.
How do you reverse engineer a custom ERP before migration?
You reverse engineer a custom ERP by reading three sources together: the database, the code and the people who use it. None is complete alone.
Start with the database. List every table, row count and last update date. Tables with no writes in years are often dead, which shrinks the scope fast.
Then read the code that changes money and stock: posting, pricing, tax, stock moves and scheduled jobs. Stored procedures and triggers often hold rules the screens never show.
Finally, ask each team to walk through three real transactions. Record every exception, such as "the night job fixes negative stock."
Write each finding as a rule with an owner, for example "credit hold after 60 days overdue, owner: finance" (illustrative). This list drives Odoo design and testing.
How does process mining show what your custom ERP really does?
Process mining uses the dates and status changes already stored in your custom ERP to show how work really flows. It replaces opinions with evidence.
Process mining analyzes event logs: records of which case moved, which step happened and when. A homegrown ERP rarely has a clean event log, but it usually has the pieces in order, delivery and invoice tables.
Build a simple event log from the old database
- Pick a case: a sales order, a purchase order or a production job.
- Find the steps: created, approved, picked, shipped, invoiced, paid.
- Find the dates: created and modified dates, status history tables, audit tables.
- Join them: one row per case, step and timestamp, exported to a spreadsheet or a process mining tool.
- Count the paths: how many orders follow the normal path, and how many loop back or skip steps.
You may find orders invoiced before delivery, or approvals skipped for one customer group. Show managers the real flows, then decide which variants Odoo supports and which stop.
How do you map data from an unknown legacy schema to Odoo?

Map each legacy table to an Odoo model, give every record an external ID, and write a clean-up rule before you import anything. This ERP data mapping sheet is the core of your data migration plan.
Odoo's import tool accepts Excel or CSV files and lets you use an external ID from your previous software. Keep the old primary key as that ID, so re-imports do not duplicate and links rebuild.
The table shows common custom patterns and where they usually land.
| In the custom ERP | In Odoo |
|---|---|
| One customer table with type codes | Contacts with companies and addresses |
| Item codes with meaning in each digit | Products with categories and variants |
| Status codes such as 1, 2, 9 | Document states plus tags |
| Stock as a single balance field | Locations with an opening stock count |
| Tax built into the price logic | Taxes and fiscal positions |
| Free-text notes holding real data | Proper fields, often added in Studio |
Rules that save weeks later
- Order matters: Odoo's accounting guide says master data must load first, because other records rely on master data.
- Test first: use the import tool's Test button on every file before you load it.
- Clean top rows: Odoo guesses each column's field type from the first ten lines of the file.
- Small batches: Odoo's docs advise smaller batches when large imports time out.
- No direct SQL: a user on the Odoo forum asked for SQL to insert legacy ERP data straight into Odoo tables; replies pointed to the import tool or the API.
Our guide to Odoo database migration covers backups, staging and validation.
Which custom features should you rebuild in Odoo?
Rebuild a custom feature in Odoo only if the process mining and the rule list prove it is still needed and standard Odoo cannot do it. Most custom screens turn out to be standard Odoo features.
| Bucket | When it fits | Odoo approach |
|---|---|---|
| Standard | Odoo already does it | Configure the app, no code |
| Studio | Extra fields, views, simple automation | Odoo Studio, no coding |
| Custom module | Complex logic, pricing, integrations | Python module on Odoo.sh or on-premise |
| Retire | Workaround or dead feature | Drop it and train users |
Odoo states that Odoo Online is incompatible with custom modules, so custom code means Odoo.sh or your own servers.
On the Odoo pricing page, that needs the Custom plan: US$61.00 per user a month billed yearly in the US, or Rs 1,350 in India.
Each module must be upgraded with every Odoo version. Our comparison of Odoo Studio vs custom development helps you pick the lighter option first.
What happens to integrations built on the old custom ERP?
Every integration that reads or writes the old database has to be rebuilt against Odoo's API. List them early; they are often the last surprise.
Look for file drops, nightly scripts, shared views and reporting tools. Each needs a new owner, endpoint and test case.
The Odoo 20 external API docs describe the JSON-2 API and mark XML-RPC and JSON-RPC as deprecated, with removal scheduled for Odoo 22.
Our guide on the Odoo JSON-2 API migration shows the change.
Check for a standard Odoo connector first; our Odoo integration services build the rest.
How much history should move from a custom ERP to Odoo?
Move open items and opening balances for certain, and move older history only if people truly use it. Every extra year of transactions adds mapping and testing time.
On an Odoo forum thread about data migration methods, a long-time contributor listed options from least to most effort. Adapted for a custom ERP exit:
- Read-only archive: keep the old system or a database copy available for lookups.
- Exported files: store old reports as spreadsheets or PDFs in Odoo Documents.
- Reference tables: import old records into a simple Studio app for search and filters.
- Monthly balances: import monthly trial balances for year-on-year comparisons.
- Full transactions: import every document, which needs advanced scripting and the most testing.
Odoo warns that loading both an opening trial balance and open invoices can cause duplicated values unless you use clearing accounts. It calls fiscal year end the easiest switch point.
What does a custom ERP to Odoo cutover plan look like?
A cutover plan is a timed run sheet that moves you from the old system to Odoo over a weekend or month end, rehearsed first. It is the riskiest day of any legacy system migration.
On Odoo.sh, staging branches create neutralized copies of production, so scheduled actions do not fire during tests. Odoo.sh also keeps seven daily, four weekly and three monthly backups.
- Rehearsal one: full load into staging; users test top processes.
- Fix and repeat: correct the mapping, then run rehearsal two and time every step.
- Freeze: stop new master data changes in the old system a few days before cutover.
- Final extract: pull open orders, open invoices, stock counts and balances at the cutover point.
- Load and reconcile: compare receivables, payables, stock value and open orders.
- Sign-off: finance and operations approve the numbers before users log in.
- Go live: switch users to Odoo and set the old system to read-only.
- Hypercare: daily check-ins for the first two to four weeks.
Keep a rollback rule: if reconciliation fails past an agreed deadline, users return to the old system. Our Odoo migration guide adds the testing checklist.
How much does it cost to migrate a custom ERP to Odoo?
A custom ERP move costs about what a full Odoo implementation costs, plus a larger discovery and data migration budget. The unknown schema pushes the number up.
Our published Odoo implementation cost ranges are a planning guide, not a quote.
| Company size | Implementation range | Typical timeline |
|---|---|---|
| Small | $3k to $9k | 4 to 8 weeks |
| Mid-size | $9k to $27k | 8 to 14 weeks |
| Large | $27k to $150k+ | 12 to 24 weeks |
| Data migration | $1.2k to $9k | Depends on source and years of history |
Expect the top half of the data migration range when the schema is undocumented or history is long. Custom modules and integrations are extra. Try the Odoo migration cost calculator for a first number.
Custom ERP migration by industry
The pain in a custom ERP exit depends on what the old system was built to do. These patterns are the most common.
| Industry | Pain or cost driver | Odoo approach | How iVentureTeam helps |
|---|---|---|---|
| Manufacturing | Costing and routing rules in old code | MRP with bills of materials and work orders | Rebuild costing rules, test with real jobs |
| Wholesale and distribution | Pricing grids coded by customer | Pricelists and discounts | Map price rules, retire duplicates |
| Retail and eCommerce | Stock synced by nightly scripts | One stock ledger for POS and website | Replace scripts with connectors |
| Professional services | Billing logic in spreadsheets and code | Projects, timesheets and invoicing | Map billing rules and rates |
| Trading with several entities | Each entity in its own database | Multi-company with intercompany flows | Merge and map entities |
Our page on Odoo ERP for manufacturing shows how production and costing work in standard Odoo.
How iVentureTeam helps migrate custom ERP to Odoo

iVentureTeam runs custom ERP exits as a discovery project first and a migration second. We have delivered 150+ ERP projects across 35+ countries with 40+ Odoo specialists over 13+ years.
- Knowledge recovery: database profiling, code reading and user sessions that end in a written rule list.
- Process mining: event logs built from your own tables to show the real flows.
- Data mapping: a mapping sheet per table with external IDs, clean-up rules and test files.
- Custom logic: only the rules that earn a place, built through our Odoo customization services.
- Cutover: rehearsals, reconciliation sign-off and hypercare after go-live.
The bottom line on migrating a custom ERP to Odoo
A custom ERP migration succeeds when you recover the hidden rules before you move the data. Skip discovery and the old system's quirks surface after go-live.
Profile the database, mine the real processes and write the rule list. Then map data to standard Odoo, rebuild only what earns its place, and rehearse the cutover twice.
Ready to plan your exit from a custom-built ERP?

Get a discovery plan before you commit to a migration date. Talk to us about your custom ERP to Odoo move, call +91-90235-15208, or email business@iventureteam.com.
Frequently Asked Questions
Can you migrate a custom-built ERP to Odoo?
+
Yes. Master data, open items and balances move with Odoo's import tool or API. The real work is recovering the old system's rules first.
How long does it take to replace a custom ERP with Odoo?
+
Our published ranges run from 4 to 8 weeks for small companies to 12 to 24 weeks for large ones. Undocumented schemas and long history push toward the top.
What if no one knows how the old system works?
+
Recover the rules from the database, the code and the users. Profile the tables, read the posting and pricing code, and write each finding as a rule with an owner.
What is process mining in an ERP migration?
+
It means building an event log from the dates and status changes in the old database to see how orders, stock and invoices really flow. It shows workarounds and skipped steps that interviews miss.
Should we copy our custom processes into Odoo?
+
Not by default. Keep a custom process only if it is still used and gives a real advantage. Many turn out to be standard Odoo features.
Can we import data straight into Odoo's database with SQL?
+
It is not advisable. Odoo's import tool and API apply business logic and links between records; direct SQL skips that logic.
How much history should we move to Odoo?
+
Always move open items and opening balances. Keep older years in a read-only archive or as monthly balances unless users truly need them in Odoo.
Do custom modules work on Odoo Online?
+
No. Odoo states that Odoo Online is incompatible with custom modules. If your migration needs custom code, plan for Odoo.sh or on-premise hosting on the Custom plan.
Free customization review
Need Odoo to fit the way you work?
Tell us what you want to change. We show what Odoo does out of the box, what Studio covers and what needs custom code.
Free, with no obligation. A senior consultant replies within 12 business hours.
Free Odoo tools
All tools- Odoo Health CheckVersion, modules, findings and upgrade cost
- Odoo App SelectorWhich apps you need, by industry
- Odoo Project EstimateIndicative cost and timeline in minutes
- Odoo Implementation Cost CalculatorImplementation cost and timeline, in minutes
- Odoo Migration Cost CalculatorVersion jump or legacy ERP, priced in minutes
Continue reading
NetSuite to Odoo Migration: Reasons, Data Mapping, Cost and Cutover
Plan a NetSuite to Odoo migration: why companies switch, how to export and map NetSuite data, what it costs and a cutover plan timed to your renewal.
SYSPRO to Odoo Migration: Reasons, Data Mapping, Cost and Cutover Plan
Plan a SYSPRO to Odoo migration before your licence expires: why sites switch, how SYSPRO tables map to Odoo, real cost ranges and a cutover checklist.
AFAS to Odoo Migration: Steps, Data Mapping, Payroll and Cost
Plan an AFAS to Odoo migration: AFAS Profit exports, data mapping, Dutch payroll options, SBR and XAF, a 10-step plan, timeline and cost for Odoo 20.
