ERP migration
Field-level mapping, validation, and rollback between Decision Builder and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.
Decision Builder
Source
Odoo ERP
Destination
Compatibility
9 of 12
objects map 1:1 between Decision Builder and Odoo ERP.
Complexity
CModerate
Timeline
5-8 weeks
Overview
Moving from Decision Builder to Odoo ERP is a structural migration constrained by two facts about the source platform: there is no public API endpoint for bulk data extraction, and the .dec.obj export format is proprietary to Decision Builder and cannot be imported directly into Odoo. We work within these constraints by selecting the correct export method per Data Structure complexity, converting .dec.obj exports to intermediate formats, and validating every field and relationship before loading into Odoo. We migrate customer records to Odoo Contacts and Accounts, vendors to Odoo Vendors, items to Odoo Products (with BOM handling for multi-level structures), open AP/AR to Odoo Bills and Invoices, and the Chart of Accounts with full segment and rollup hierarchy mapping. Historical transactions migrate with audit trails, and custom Data Structures are handled via Project-level export for anything with interdependent relationships. Workflows, automations, and custom rule flows do not migrate; we deliver a written inventory for the customer's team to rebuild in Odoo Studio or via a certified Odoo partner.
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 Decision Builder 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.
Decision Builder
Customer
Odoo ERP
res.partner (with partner_type = contact)
1:1Decision Builder Customer records map to Odoo res.partner records with partner_type = 'contact'. We preserve customer name, email, phone, address, pricing tiers, and account hierarchies. If Decision Builder stores parent-child customer relationships, we create the commercial partner linkage in Odoo by setting commercial_partner_id. Customer-specific tax IDs migrate to res.partner's vat field. Active versus inactive status flags migrate as active = True/False in Odoo.
Decision Builder
Company (parent account)
Odoo ERP
res.partner (with partner_type = company)
1:1Decision Builder Companies where customers are individuals map to res.partner records with partner_type = 'company' in Odoo. The company name becomes the partner display name, and the individual customer records become child contacts under that company partner via child_ids. This supports Odoo's commercial entity model where invoices and contracts attach to the company partner while individual contacts remain linked.
Decision Builder
Vendor
Odoo ERP
res.partner (with supplier_rank > 0)
1:1Decision Builder Vendor records map to Odoo res.partner with supplier_rank set to 1 or higher. Payment terms, tax IDs, bank details, and address information require field-level mapping because naming conventions differ. We validate vendor names against Odoo's supplier creation form and flag any vendor with a duplicate partner name for the customer admin to resolve before import.
Decision Builder
Item (Product)
Odoo ERP
product.product / product.template
1:1Decision Builder Item records encompass inventory products, services, and non-inventory items. We map item types to Odoo's product.product variants under a product.template. The item type (stockable, consumable, service) determines Odoo's type field. Pricing migrates to product.template's list_price and standard_price. If Decision Builder stores cost accounting methods, we align them with Odoo's costing methods (standard, average, FIFO).
Decision Builder
Item (Bill of Materials)
Odoo ERP
mrp.bom
1:1Decision Builder Items with multi-level BOM structures require special handling. We extract the BOM as a tree, mapping each component item to a product.product reference and each sub-assembly to a nested mrp.bom. We resolve the product.product IDs in Odoo before creating any BOM record so that component lookups are satisfied. Single-level BOMs migrate directly; multi-level BOMs are sequenced so parent BOMs are created after child BOMs.
Decision Builder
Open AP/AR
Odoo ERP
account.move (Invoices and Bills)
1:1Open invoices, credit memos, and payment records export from Decision Builder cleanly and map to Odoo account.move records with move_type = 'out_invoice', 'in_invoice', 'out_refund', or 'in_refund' depending on direction and type. We preserve document numbers as name, invoice dates as invoice_date, due dates as invoice_date_due, and aging amounts as amount_total and amount_residual. Post-import reconciliation in Odoo closes the loop on open items.
Decision Builder
Historical Transactions
Odoo ERP
account.move (Journal Entries)
1:1Invoice history, payment records, and adjustment logs migrate with full audit trails to Odoo account.move records with move_type = 'entry'. Journal entries require mapping to the destination Chart of Accounts, which may use different account numbering schemes. We create a pre-migration account mapping session to align source account codes to Odoo account.account codes before any journal entry data moves. Each line's account_id, debit, and credit fields map from the Decision Builder transaction detail.
Decision Builder
Chart of Accounts
Odoo ERP
account.account
lossyDecision Builder's account structure including segment definitions, account types, and rollup hierarchies requires pre-migration mapping to Odoo's account.account. We use Odoo's standard chart of accounts template as a baseline, then add, modify, or merge accounts based on the Decision Builder chart. Segment definitions (if structured as account codes with delimiters) map to Odoo's account.code field with the full hierarchy preserved. We configure account_type (receivable, payable, liquidity, etc.) per Odoo's taxonomy.
Decision Builder
Data Structure (simple, flat)
Odoo ERP
Custom fields on standard models
lossyFlat Decision Builder Data Structures with no interdependent relationships migrate by mapping their fields to custom fields on the relevant Odoo res.partner, product.product, or account.move. We create the custom field schema in Odoo via Settings > Technical > Custom Fields before data import, then import the Data Structure rows as records in the corresponding model with the custom fields populated.
Decision Builder
Data Structure (complex, interdependent)
Odoo ERP
Custom module or Project-level mapping
1:1Decision Builder Data Structures with complex relationships must be exported at the Project level via .dec.obj rather than individually. We convert the .dec.obj to an intermediate format, validate field integrity, and resolve any lookup references to other Data Structures before loading into Odoo. If the destination is a custom Odoo module, we pre-create the model schema with all fields and relationships before data import. Complex structures with cross-references require sequenced import where referenced records exist first.
Decision Builder
Project
Odoo ERP
project.project / project.task
1:manyDecision Builder Projects bundle related Data Structures, workflows, and configurations. We split Projects into Odoo project.project records (the project container) and project.task records (the work breakdown). Task dependencies, assignees, and dates migrate to project.task with the correct parent_id hierarchy for nested sub-tasks. Project-level configurations that do not map to Odoo standard fields are documented as configuration items for manual setup.
Decision Builder
Document
Odoo ERP
ir.attachment
1:1Attached documents and files migrate as ir.attachment records linked to their parent record (res.partner, product.product, account.move, project.task, etc.) via res_model and res_id. We verify file integrity after transfer using checksums. Any documents that reference objects not included in the migration scope are flagged separately so the customer admin can assess whether they should be migrated manually or excluded.
| Decision Builder | Odoo ERP | Compatibility | |
|---|---|---|---|
| Customer | res.partner (with partner_type = contact)1:1 | Fully supported | |
| Company (parent account) | res.partner (with partner_type = company)1:1 | Fully supported | |
| Vendor | res.partner (with supplier_rank > 0)1:1 | Fully supported | |
| Item (Product) | product.product / product.template1:1 | Fully supported | |
| Item (Bill of Materials) | mrp.bom1:1 | Fully supported | |
| Open AP/AR | account.move (Invoices and Bills)1:1 | Fully supported | |
| Historical Transactions | account.move (Journal Entries)1:1 | Mapping required | |
| Chart of Accounts | account.accountlossy | Mapping required | |
| Data Structure (simple, flat) | Custom fields on standard modelslossy | Fully supported | |
| Data Structure (complex, interdependent) | Custom module or Project-level mapping1:1 | Fully supported | |
| Project | project.project / project.task1:many | Fully supported | |
| Document | ir.attachment1:1 | 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.
Decision Builder gotchas
Complex Data Structures require Project-level export
Advanced decision table rows are read-only in Excel export
No publicly documented migration API or bulk export endpoint
Data Structure export format creates vendor lock-in
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 export strategy assessment
We audit the Decision Builder environment across all Data Structures, Projects, Customers, Vendors, Items, BOMs, open AP/AR records, historical transactions, and Chart of Accounts segments. We assess export method per object (UI export, Project-level .dec.obj, or batched individual export) and identify any Data Structures that require Project-level export due to interdependent relationships. The discovery output is a written migration scope with an export strategy map per object and a preliminary object-to-Odoo-model mapping document.
Odoo environment preparation
We set up the Odoo environment with the appropriate apps (Accounting, Inventory, Purchase, Manufacturing, Project) based on the scope. We create the Chart of Accounts structure using Odoo's template as a baseline, modify it to match the Decision Builder segment hierarchy, and configure account types per Odoo's taxonomy. We pre-create any custom fields on res.partner, product.product, and account.move that correspond to Decision Builder Data Structure fields. For complex Data Structures destined for custom Odoo models, we build the model schema via an Odoo module before data import.
Sandbox migration and format conversion validation
We run a full migration into an Odoo staging environment using representative data volume. This validates the .dec.obj-to-intermediate-format conversion, confirms that all fields map correctly, and checks that parent-record lookups (Account on Contact, Product on BOM, Account on Invoice) resolve at migration time. The customer reconciles record counts and spot-checks 25-50 records against the Decision Builder source. Any mapping corrections happen in staging, not in production.
Production migration in dependency order
We run production migration in record-dependency order: Chart of Accounts first (all other records reference accounts), then res.partner records for Companies and Vendors (Contacts and Bills reference these), then Contacts from Customers, then product.product and product.template with BOM hierarchy resolved (parent BOMs created after child BOMs), then account.move records for open AP/AR and historical journal entries, then project.project and project.task, then Data Structures with custom fields or custom models last. Each phase emits a row-count reconciliation report before the next phase begins.
BOM and multi-level item validation
We validate multi-level Bill of Materials after migration by checking that each mrp.bom's component_ids reference valid product.product records, that bom_line records have correct product_qty and product_uom_id, and that the bom_type (kit vs manufacture) matches the Decision Builder structure. Orphaned BOM components (referencing products not yet migrated) are flagged and resolved before closing the migration.
Cutover, validation, and workflow handoff
We freeze Decision Builder writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo as the system of record. We deliver the Decision Builder workflow and rule flow inventory document to the customer's admin team for rebuild in Odoo. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's team. We do not rebuild Decision Builder workflows as Odoo automated actions inside the migration scope; that is a separate engagement.
Platform deep dives
Decision Builder
Source
Strengths
Weaknesses
Odoo ERP
Destination
Strengths
Weaknesses
Complexity grading
Moderate ERP migration. 4 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Decision Builder and Odoo ERP.
Object compatibility
4 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
Decision Builder: Not publicly documented.
Data volume sensitivity
Decision Builder 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 Decision Builder to Odoo ERP migration scoping. Not seeing yours? Book a call.
Walk through your Decision Builder 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 Decision Builder
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.