ERP migration
Field-level mapping, validation, and rollback between Deacom ERP and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.
Deacom ERP
Source
Odoo ERP
Destination
Compatibility
11 of 12
objects map 1:1 between Deacom ERP and Odoo ERP.
Complexity
BStandard
Timeline
6-10 weeks
Overview
Moving from Deacom ERP to Odoo ERP is a structural migration from a single-database, batch-manufacturing-native system to a modular open-source ERP with PostgreSQL backing. Deacom stores every record in one of three table types — dm (maintenance), dt (transaction), or dx (system) — linked by _id primary keys and _*id foreign keys, which we sequence as dependency chains during export. Odoo uses res.partner for both customers and vendors with a vendor flag, mrp.bom for formulations with version support, stock.production.lot for lot traceability, and account.move for the general ledger. We resolve BOM revision-date sequencing from Deacom, remap dmd3 UDF pick-list _guid references to Odoo selection fields, handle Deacom's API rate limiting on large dt transaction tables, and build Odoo's manufacturing, inventory, and accounting modules before transactional history migrates. Workflows, automations, and the Deacom Business Care renewal contract do not migrate; we deliver a written inventory of any configured rules requiring rebuild in Odoo Studio.
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 Deacom ERP 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.
Deacom ERP
Item Master (dmprod)
Odoo ERP
Product (product.template + product.product)
1:1Deacom dmprod with pr_id as integer primary key maps to Odoo product.template as the master record, with product.product variants generated for any size/color/flavor dimension definitions present in Deacom. We export all item records including UOM definitions, catch-weight settings, and facility restrictions in a single pass. Odoo's product type (stockable, consumable, service) maps from Deacom item type flags. Product code from Deacom becomes the default_code field; Deacom's facility restriction flags require Odoo warehouse rules configuration post-import.
Deacom ERP
Formulation / BOM (dmprod revisions)
Odoo ERP
Bill of Materials (mrp.bom)
1:1Deacom BOMs stored per Item per Revision with active/default/lab-only/regulatory-only flags map to Odoo mrp.bom with the bom_line records for each component. We export BOMs sorted by revision date to preserve formulation state, flag any Item with multiple active revisions for customer decision on consolidation versus full history preservation. Lab-only and regulatory-only BOMs require custom boolean fields on mrp.bom in Odoo since this distinction is not native. The Odoo BOM type (normal or kit) maps from Deacom BOM structure type.
Deacom ERP
Customer (dmcust)
Odoo ERP
Contact / Customer (res.partner)
1:1Deacom dmcust with cu_id primary key maps to Odoo res.partner with customer_rank set to distinguish from vendor records. Customer hierarchies, credit terms, and customer-part associations (dmcust cross-links) map to res.partner fields and ir.model.relation constraints in Odoo. Customer-specific pricing sheets stored in Deacom require Odoo price list configuration per partner or partner category post-import.
Deacom ERP
Vendor (dm-type maintenance)
Odoo ERP
Contact / Vendor (res.partner)
1:1Deacom vendor master records using consistent dm-type naming map to Odoo res.partner with vendor_rank set. We export vendor purchasing lead times, preferred UOMs, and vendor-specific part cross-references. Odoo vendor lead times map to seller_delay on product.supplierinfo records linked to the vendor partner. EDI trading partner setups from Deacom map to Odoo EDI configuration records where applicable.
Deacom ERP
Production Order (dt transaction)
Odoo ERP
Manufacturing Order (mrp.production)
1:1Deacom production orders as dt-type transaction records referencing Item pr_id and BOM revision map to Odoo mrp.production. We export job costing, routing steps, and labor tracking entries with Work Order (mrp.workorder) records created per routing step. Open production orders require handling for in-process status; Odoo Manufacturing requires explicit state transitions (draft → confirmed → in_production → done) that must match the Deacom order status at migration time. Closed production orders migrate as done-state records for historical traceability.
Deacom ERP
Quality Control Tests (dmd3 cross-reference)
Odoo ERP
Quality Alert / Quality Check (quality.alert, quality.check)
1:1QC tests set up per Item/Revision in Deacom with threshold values, test types, and pass/fail criteria map to Odoo quality.alerts and quality.checks. The test schema varies by facility, so we map each facility's QC configuration independently. Deacom's dmd3 pick-list UDF options for test types require the UDF remapping table to recreate as Odoo quality.point with test_type as a selection field. Odoo requires the Quality app to be installed; if absent, we flag this as a separate module activation step.
Deacom ERP
Lot/Serial Traceability (lot genealogy)
Odoo ERP
Production Lot (stock.production.lot) + Quants (stock.quant)
1:1Deacom lot numbers and shelf-life dates at the inventory transaction level map to Odoo stock.production.lot linked to stock.quant for on-hand quantities. Parent-child lot relationships for co-manufactured or bulk-split scenarios map to Odoo lot genealogy via stock.move.line records. Serial number traceability maps similarly to stock.production.lot with unique serial number constraints. Odoo's lots require explicit linking to product_id and company_id; we resolve these references at migration time from the parent Item records.
Deacom ERP
Inventory Transactions (dt-type movements)
Odoo ERP
Stock Move (stock.move)
1:1All Deacom inventory movements — receipts, issues, adjustments, and transfers — live in dt-type tables linked to Items and lots, sequenced in timestamp order. These map to Odoo stock.move records with source/destination location references resolved from Odoo's warehouse location hierarchy. We exclude any records that reference lots not yet migrated. Deacom's multi-facility model maps to Odoo multi-warehouse with stock.location hierarchy (Internal Locations per facility).
Deacom ERP
General Ledger / Journal Entries (dt + dx records)
Odoo ERP
Journal Entry (account.move)
1:1Deacom real-time GL postings with drill-down to dt transaction level map to Odoo account.move records. We export account codes, journal line items, and source document references (AR/AP/inventory). Custom financial statements per company structure in Deacom require Odoo chart of accounts design and financial reporting configuration post-import. Multi-currency GL entries require exchange rate mapping at the account.move line level using Odoo's foreign currency fields.
Deacom ERP
AP / AR (open invoices, payments)
Odoo ERP
Vendor Bill / Customer Invoice (account.move with type)
1:1Accounts payable and receivable from Deacom integrate directly with the GL. We export open invoices, payment applications, credit memos, and aging details as account.move records with move_type of entry for vendor bills (in_invoice) and customer invoices (out_invoice). Multi-currency AR requires exchange rate records mapped from Deacom's currency tables. Payment terms from Deacom's customer credit terms map to Odoo account.payment.term records.
Deacom ERP
Custom UDF Pick-List Options (dmd3 + dxcaption2)
Odoo ERP
Selection Field Options / Ir Model Fields (configuration)
lossyDeacom user-defined fields in dmd3 reference pick-list options via d3_c2guid links to dxcaption2's system-generated uniqueidentifier. These _guid values are non-transferable — importing them into Odoo creates orphaned references with no validation error. We export the human-readable labels alongside the guids, create a remapping table, and apply Odoo selection field options with sequential integer values or ir.model.fields with selection_ids for dynamic picklists. The customer reviews the remapped pick-list options before import to confirm business-appropriate labeling.
Deacom ERP
Mobile App Data (iOS/Android cached entries)
Odoo ERP
Not Migrated
1:1Deacom's iOS and Android mobile apps for sales and warehouse use cached local data that is not persisted to exportable database tables independently. Mobile-specific notes, offline entries, and mobile-only GPS data cannot be migrated. We flag this gap in the data inventory and recommend that sales and warehouse teams document any records created on mobile devices during the migration window for manual entry post-go-live.
| Deacom ERP | Odoo ERP | Compatibility | |
|---|---|---|---|
| Item Master (dmprod) | Product (product.template + product.product)1:1 | Fully supported | |
| Formulation / BOM (dmprod revisions) | Bill of Materials (mrp.bom)1:1 | Fully supported | |
| Customer (dmcust) | Contact / Customer (res.partner)1:1 | Fully supported | |
| Vendor (dm-type maintenance) | Contact / Vendor (res.partner)1:1 | Fully supported | |
| Production Order (dt transaction) | Manufacturing Order (mrp.production)1:1 | Fully supported | |
| Quality Control Tests (dmd3 cross-reference) | Quality Alert / Quality Check (quality.alert, quality.check)1:1 | Fully supported | |
| Lot/Serial Traceability (lot genealogy) | Production Lot (stock.production.lot) + Quants (stock.quant)1:1 | Fully supported | |
| Inventory Transactions (dt-type movements) | Stock Move (stock.move)1:1 | Fully supported | |
| General Ledger / Journal Entries (dt + dx records) | Journal Entry (account.move)1:1 | Fully supported | |
| AP / AR (open invoices, payments) | Vendor Bill / Customer Invoice (account.move with type)1:1 | Fully supported | |
| Custom UDF Pick-List Options (dmd3 + dxcaption2) | Selection Field Options / Ir Model Fields (configuration)lossy | Fully supported | |
| Mobile App Data (iOS/Android cached entries) | Not Migrated1: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.
Deacom ERP gotchas
Rate limiting on the Deacom Public API requires chunked export sequencing
BOM revisions require revision-date sequencing to preserve formulation state
Custom UDF pick-list options use _guid references that break cross-database
Multi-tenant cloud hosting limits server-level access needed for deep exports
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
Hosting and export method assessment
We confirm whether the customer uses single-tenant Deacom (dedicated SQL instance with direct read access) or multi-tenant cloud (API-only access with rate-limit constraints). For single-tenant deployments, we connect directly to the Deacom SQL database and run discovery queries across dm, dt, and dx table types to catalog record counts, BOM revision counts per item, lot genealogy depth, and GL posting volumes. For multi-tenant deployments, we use Deacom's Public API with pre-scan queries to estimate scope and chunk export requests to respect rate limits. This step produces a written migration scope document with record counts per object and an export method recommendation.
Odoo instance provisioning and module activation
We provision the target Odoo instance — either self-hosted (PostgreSQL direct insert) or Odoo Cloud (XML-RPC with Odoo's External API using JSON-RPC). We install and activate the required apps: Inventory, Manufacturing, Quality, Maintenance (if QC test migration is scoped), and Accounting. We design the warehouse location hierarchy to map from Deacom's multi-facility model, create the mrp.bom structure with custom lab-only and regulatory-only boolean fields, configure account.chart.template for the GL chart of accounts, and set up multi-company or single-company configuration matching Deacom's entity structure.
BOM revision sequencing and UDF remapping
We export Deacom BOM records sorted by revision date, flag Items with multiple active revisions, and present the customer with a consolidation strategy (current BOM only versus full revision history). For each BOM revision, we generate mrp.bom records with version numbers mapped from Deacom's revision identifiers. Concurrently, we build the UDF pick-list remapping table from dmd3 and dxcaption2, pairing Deacom _guid values with human-readable labels for customer review and approval. Approved labels become Odoo selection field values or ir.model.fields selection_ids before any UDF data migrates.
Master data migration in dependency order
We migrate in record-dependency order: res.partner (customers and vendors, separated by customer_rank and vendor_rank flags), product.template and product.product (from dmprod Items with catch-weight and UOM settings), stock.production.lot (lot records with shelf-life dates), mrp.bom (formulations with versioned bom_line components), mrp.workcenter (routing resources from Deacom production routing steps), and account.account (GL account codes from Deacom's chart of accounts structure). Each phase emits a row-count reconciliation report. Parent-record lookups (product_id on lot, bom_id on mrp.production, partner_id on account.move) are resolved before the next phase begins.
Transactional data migration with lot genealogy traversal
We migrate production orders (mrp.production with linked workorders from Deacom dt records), inventory movements (stock.move with lot and location resolution from Deacom dt transaction tables), AP and AR open invoices and payments (account.move with partner_id and payment_id resolution), and GL journal entries (account.move lines with account_id, debit, and credit mapped from Deacom's dx/dt posting records). For lot genealogy — parent-child lot relationships from co-manufactured or bulk-split scenarios — we traverse the Deacom lot relationship records and create corresponding stock.move.line records linking child lots to parent lots in Odoo.
Cutover, validation, and automation inventory handoff
We freeze Deacom write access during cutover, run a final delta migration of any records created or modified during the migration window, then enable Odoo as the system of record. We validate record counts, spot-check 25-50 records per object against the Deacom source data, and confirm lot genealogy integrity across parent-child lot chains. We deliver a written inventory of Deacom automation rules, EDI mapping configurations, and Business Care renewal obligations for the customer's admin team to evaluate for rebuild in Odoo Studio. We do not rebuild Deacom automations as Odoo server actions or record rules within the migration scope.
Platform deep dives
Deacom ERP
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 Deacom ERP 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
Deacom ERP: Not publicly documented for external use. Internal rate limiting was introduced in version 17.04.008..
Data volume sensitivity
Deacom ERP 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 Deacom ERP to Odoo ERP migration scoping. Not seeing yours? Book a call.
Walk through your Deacom ERP 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 Deacom ERP
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.