ERP migration
Field-level mapping, validation, and rollback between ERP BOS and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.
ERP BOS
Source
Odoo ERP
Destination
Compatibility
8 of 12
objects map 1:1 between ERP BOS and Odoo ERP.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from ERP BOS to Odoo ERP is a schema remapping project for mid-market manufacturers and distributors. ERP BOS organizes data around entity-scoped ledgers and an Items model that handles both inventory and multi-level BOMs; Odoo separates these into product.product, mrp.bom, and company-scoped accounting. We extract the full entity-per-ledger dataset from ERP BOS, build a destination schema in Odoo with the correct company_id scoping on account.account, and flatten multi-level BOMs into Odoo's single-level structure. Open AP/AR sub-ledger balances must reconcile against the Chart of Accounts in ERP BOS before migration; we flag discrepancies and hold those records until the customer resolves them. Document blobs do not migrate through our standard pipeline. We deliver a written inventory of any ERP BOS automations and report templates for the customer's admin to rebuild in Odoo.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a ERP BOS object lands in Odoo ERP, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
ERP BOS
Customer/Account
Odoo ERP
res.partner
1:1ERP BOS customer records map to Odoo res.partner with partner_type set to contact or company. We preserve billing address, credit limit, account balance, and account status (active/inactive). Inactive accounts in ERP BOS are migrated with the active flag set to False in Odoo to prevent inflated customer counts. If ERP BOS stores branch-level customer accounts as separate records, we consolidate them under a single res.partner with Odoo's child contacts for branch tracking.
ERP BOS
Supplier/Vendor
Odoo ERP
res.partner
1:1ERP BOS vendor master records map to Odoo res.partner with supplier_rank set to 1. Payment terms, tax registration numbers, and banking details migrate to res.partner bank accounts and property_supplier_payment_term_id. Address and contact person fields map to Odoo's street, city, country, and email fields.
ERP BOS
Item (Inventory/Non-stock)
Odoo ERP
product.product or product.template
1:1ERP BOS Items cover both stockable and non-stock products. We map stockable items to product.product with type set to product and create product.template for the product definition. Non-stock items (services, materials) map to type set to service or consumable. SKU (item code) becomes product.default_code. Unit of measure and cost price migrate to uom_id and standard_price respectively.
ERP BOS
Item with BOM
Odoo ERP
product.template + mrp.bom
1:manyItems in ERP BOS that carry multi-level Bills of Materials require a split into Odoo's product.template and mrp.bom models. ERP BOS BOM routing steps (work centers, operation sequences) are flattened into Odoo's single-level mrp.bom structure with mrp.routing/workcenter references. We extract the full BOM hierarchy during scoping, map each level to an Odoo mrp.bom record, and preserve the original BOM level as a custom field for audit. Multi-level BOMs that exceed Odoo's single-level model are flattened with a note in the mapping table indicating the original nesting depth.
ERP BOS
Chart of Accounts
Odoo ERP
account.account
1:1ERP BOS hierarchical Chart of Accounts (account code, description, classification) maps to Odoo account.account with code, name, and user_type_id mapped to Odoo's account.account.type selection (asset, liability, equity, income, expense). We preserve account code structure for reconciliation continuity. Odoo requires company_id on each account, which means multi-entity ERP BOS deployments need a company record in Odoo created before COA migration begins.
ERP BOS
Multi-Entity Ledger
Odoo ERP
res.company + account.account
1:manyERP BOS entity-per-ledger structure maps to Odoo res.company records (one per ERP BOS entity) plus account.account records scoped to each company. Inter-company transactions (entity-to-entity journal entries in ERP BOS) are extracted as a separate reconciliation set. We map them to Odoo inter-company journal entries or mark them for elimination during Odoo consolidation setup. Customer-side finance review is required before finalizing elimination account treatment to prevent consolidated reporting errors in Odoo.
ERP BOS
Open Accounts Receivable
Odoo ERP
account.move (invoice) + account.move.line
1:1ERP BOS open AR invoices migrate to Odoo account.move with move_type set to out_invoice. Each line item becomes an account.move.line record with partner_id, account_id, debit/credit, and reconcile flags set to True for open items. Aged trial balance data migrates for reporting continuity. Before migration, we extract both the AR sub-ledger balance and the COA control account balance from ERP BOS and flag any discrepancy; the customer must reconcile in ERP BOS before we transfer open items.
ERP BOS
Open Accounts Payable
Odoo ERP
account.move (bill) + account.move.line
1:1ERP BOS open AP invoices migrate to Odoo account.move with move_type set to in_invoice. Line items follow the same mapping pattern as AR. Due dates, payment terms, and amounts are preserved. AP sub-ledger to control account reconciliation follows the same pre-migration flag-and-hold process as AR.
ERP BOS
Tax Codes
Odoo ERP
account.tax
1:1ERP BOS tax codes and rates map to Odoo account.tax with name, amount, and tax_type mapped to the Odoo tax configuration. Jurisdiction-based tax mapping is preserved. If ERP BOS uses compound taxes or tax groups, we decompose these into Odoo's account.tax.group structure.
ERP BOS
Bank/Cash Account
Odoo ERP
account.journal
1:1ERP BOS bank and cash ledgers map to Odoo account.journal records with type set to bank or cash. Account balances reconcile against the last ERP BOS statement date. Bank account numbers become journal_code. We do not migrate historical bank transaction lines as individual journal entries; opening balances are set on the journal and the account to establish continuity.
ERP BOS
Service/CRM Record
Odoo ERP
crm.lead or helpdesk.ticket
lossyERP BOS Service Manager records (customer enquiries, opportunity tracking) migrate to Odoo crm.lead for pre-sale pipeline tracking or helpdesk.ticket for post-sale support records depending on record type. Open service records are associated with the migrated Customer (res.partner) via partner_id. Closed service records migrate with a closed state flag. The customer selects the target object during scoping based on whether they intend to use Odoo CRM or Helpdesk.
ERP BOS
Document Metadata
Odoo ERP
ir.attachment (file transfer separately)
lossyERP BOS document management stores binary blobs (invoices, purchase orders, images, signed documents) linked to transactions. We extract document metadata (filename, document type, linked transaction reference) into a CSV index during migration. The binary files themselves require a separate file transfer process coordinated alongside the data migration but executed independently to avoid timeout issues with large attachment volumes. We produce a file-to-record mapping CSV that the customer's admin uses to reattach documents post-migration.
| ERP BOS | Odoo ERP | Compatibility | |
|---|---|---|---|
| Customer/Account | res.partner1:1 | Fully supported | |
| Supplier/Vendor | res.partner1:1 | Fully supported | |
| Item (Inventory/Non-stock) | product.product or product.template1:1 | Fully supported | |
| Item with BOM | product.template + mrp.bom1:many | Fully supported | |
| Chart of Accounts | account.account1:1 | Fully supported | |
| Multi-Entity Ledger | res.company + account.account1:many | Fully supported | |
| Open Accounts Receivable | account.move (invoice) + account.move.line1:1 | Fully supported | |
| Open Accounts Payable | account.move (bill) + account.move.line1:1 | Fully supported | |
| Tax Codes | account.tax1:1 | Fully supported | |
| Bank/Cash Account | account.journal1:1 | Fully supported | |
| Service/CRM Record | crm.lead or helpdesk.ticketlossy | Fully supported | |
| Document Metadata | ir.attachment (file transfer separately)lossy | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
ERP BOS gotchas
Multi-entity ledger mapping requires manual cross-reference planning
Open AP/AR sub-ledger must reconcile against the general ledger before migration
Document attachments are not migrated via the standard export pipeline
Custom item fields and BOM structures need per-record mapping
Odoo ERP gotchas
No rollback for CSV imports
External ID conflicts on re-import
Many2many field encoding in CSV imports
Large export timeouts require batching
Version schema drift between Odoo releases
Pair-specific challenges
Migration approach
Discovery and entity mapping analysis
We audit the ERP BOS system for record counts across all modules (Customers, Suppliers, Items, COA, entity ledgers, open AP/AR, service records), active entity branches, multi-level BOM structures, and inter-company transaction volume. We pair this with Odoo edition selection: Community (free, self-hosted) versus Enterprise (paid, includes MRP, multi-company, and support). The discovery output is a written migration scope with object-level row counts, entity mapping table, and BOM complexity classification.
Schema design and multi-entity configuration
We design the Odoo destination schema: res.company records (one per ERP BOS entity), account.tax tables, product.category hierarchy, warehouse locations (stock.location), and account.account chart mapped from the ERP BOS COA. For multi-entity migrations, we configure Odoo's multi-company settings and establish inter-company rules before data import. For BOM items, we design the product.template plus mrp.bom structure with flattening applied per item category. Schema is configured in an Odoo test database before production migration begins.
AP/AR reconciliation and pre-migration cleanup
We extract the AP and AR sub-ledger balances and the corresponding COA control account balances from ERP BOS. Any discrepancies are flagged in a reconciliation report with the customer-side journal entries needed to clear them. We hold the AP/AR migration phase until the customer confirms reconciliation is complete in ERP BOS. This step prevents imbalances from propagating into Odoo's account.move records where they are harder to correct.
Sandbox migration and record reconciliation
We run a full migration into an Odoo test environment (staging database or development instance) using production-like data volume. The customer's finance and operations leads reconcile record counts (Accounts in, Suppliers in, Products in, BOMs in, Open AP/AR in), spot-check 25-50 records per object against the ERP BOS source, and validate that account balances match the last ERP BOS trial balance. Mapping corrections happen in the test environment, not in production.
Production migration in dependency order
We run production migration in dependency order: res.company and account.tax (foundational), account.account chart of accounts, res.partner records (Customers and Suppliers with company type distinguished), product.product and product.template with BOMs, account.move records for open AR and AP with reconciliation flags set, account.journal opening balances for bank and cash, crm.lead or helpdesk.ticket for service records, and document metadata CSV. Multi-level BOM items are processed last with the flattening transform applied per item.
Cutover, validation, and handoff documentation
We freeze ERP BOS writes during cutover, run a delta migration of any records modified during the migration window, then enable Odoo as the system of record. We deliver a document-migration index CSV mapping ERP BOS document IDs to Odoo attachment references for the customer's admin to complete file reattachment. We provide a written inventory of any ERP BOS automations, report templates, and workflow configurations requiring rebuild in Odoo. We do not rebuild these as part of standard migration scope.
Platform deep dives
ERP BOS
Source
Strengths
Weaknesses
Odoo ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across ERP BOS and Odoo ERP.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
ERP BOS: Not publicly documented..
Data volume sensitivity
ERP BOS doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during ERP BOS to Odoo ERP migration scoping. Not seeing yours? Book a call.
Walk through your ERP BOS to Odoo ERP migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave ERP BOS
Other ways to arrive at Odoo ERP
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.