ERP migration
Field-level mapping, validation, and rollback between Xentral ERP and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.
Xentral ERP
Source
Odoo ERP
Destination
Compatibility
8 of 12
objects map 1:1 between Xentral ERP and Odoo ERP.
Complexity
BStandard
Timeline
4-8 weeks
Overview
Moving from Xentral ERP to Odoo ERP is a structural migration across fundamentally different object models. Xentral stores customers and vendors as a unified Address object; Odoo separates these into Partner records with is_company and customer_rank flags. We resolve that split during scoping, map Articles to Product records with Odoo's product types, and preserve the original Xentral document numbers on Sales Orders and Invoices as reference fields. Xentral Flows cannot be exported from the Xentral Connect middleware layer — we document every active workflow and deliver a rebuild guide for Odoo Studio and Python-based automations. Custom fields are limited to Articles, Addresses, and Projects in Xentral; any bespoke tracking on Orders, Invoices, or Warehouse records was likely implemented as workarounds and is flagged as manual post-migration tasks. We use the Odoo XML-RPC API with batch chunking for large-volume record imports and coordinate with the customer to freeze inventory writes before the stock snapshot cutover.
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 Xentral 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.
Xentral ERP
Address
Odoo ERP
Partner
1:manyXentral stores customer and vendor records as a unified Address object. We split these into Odoo Partner records using the address_type field: type=customer creates a Partner with is_customer=True and customer_rank set by frequency; type=vendor creates a Partner with is_vendor=True. The original Xentral address_id is preserved in a custom reference field xentral_address_id__c on Partner for audit. Tax ID fields (VAT and country-specific tax numbers) migrate to Odoo's vat field and a custom tax_reference__c field.
Xentral ERP
Article
Odoo ERP
Product Template + Product Variant
1:1Xentral Articles map to Odoo Product Template records, with variant support enabled if the Xentral article has size, color, or other attribute variations. The article number becomes the product's default_code (SKU); article_name maps to name. Multilingual labels stored in Xentral custom fields migrate to Odoo's product.template.inherit record with language-specific translations. Pricing tiers from Xentral map to Odoo Pricelist rules applied to the product template.
Xentral ERP
Sales Order
Odoo ERP
Sale Order
1:1Xentral Sales Orders map to Odoo Sale Order records. The original Xentral order number is preserved in the name field and the xentral_order_id__c reference field. Line items map to sale.order.line with product_id resolved to the Odoo Product record created during the Article migration. Order status from Xentral (pending, confirmed, shipped, invoiced) maps to Odoo's sale_order_state with a custom field xentral_status__c for the original status audit trail.
Xentral ERP
Purchase Order
Odoo ERP
Purchase Order
1:1Xentral Purchase Orders map to Odoo Purchase Order records. The po_number from Xentral is preserved in the name field. Vendor assignment resolves via the Partner mapping (is_vendor=True). Expected delivery dates and received quantities migrate to Odoo's date_planned and move_ids (stock moves). PO status mapping mirrors the Sales Order pattern with xentral_status__c preserved for audit.
Xentral ERP
Invoice (Outgoing)
Odoo ERP
Account Move (Invoice)
1:1Xentral outgoing invoices map to Odoo Account Move records with move_type=out_invoice. The original Xentral invoice number is preserved in the ref field and a custom xentral_invoice_id__c field. Multi-currency amounts migrate with the exchange rate stored in a custom field; Odoo's currency_id is set accordingly. Tax lines are mapped to Odoo's account_tax records using the tax code lookup built during discovery.
Xentral ERP
Invoice (Incoming)
Odoo ERP
Account Move (Vendor Bill)
1:1Xentral incoming invoices map to Odoo Account Move records with move_type=in_invoice. Vendor resolution uses the Partner mapping (is_vendor=True). The invoice date, due date, and amount are preserved. Multi-currency incoming invoices require the same exchange rate mapping as outgoing invoices. If the customer uses Odoo Accounting, reconciliation with the corresponding Purchase Order is preserved through the purchase_order_id link on the account.move.line records.
Xentral ERP
Warehouse and Inventory
Odoo ERP
Inventory Location + Quant
lossyXentral warehouse assignments per Article map to Odoo's Stock Location model. Each Xentral warehouse becomes an Odoo Stock Location with location_type=internal. Stock levels are migrated as Stock Quant records linked to the Product and Location. Batch and serial numbers from Xentral migrate to Odoo's lot_id and serial_number fields on stock.move.line records. A stock.freeze period is coordinated with the customer before the snapshot to ensure accurate quantities at cutover.
Xentral ERP
Project
Odoo ERP
Project
1:1Xentral Project records with their custom fields migrate to Odoo Project. The original project_id is preserved in a custom xentral_project_id__c field. Task dependencies and time entries are flagged as requiring Odoo Timesheet App configuration post-migration since these require the Odoo Timesheet module to be activated. Project-linked custom fields from Xentral migrate to Odoo custom fields on the project.project model.
Xentral ERP
Financial Records and Chart of Accounts
Odoo ERP
Account Chart of Accounts
lossyXentral account codes and names map to Odoo account.account records. Tax code configurations, cost centre assignments, and SEPA bank account details are flagged as requiring manual reconfiguration in Odoo Accounting because accounting schema requirements are country-specific and depend on the customer's fiscal position settings. We deliver a written mapping of every Xentral account code to its Odoo account.account counterpart during the approach phase.
Xentral ERP
Custom Fields (Articles, Addresses, Projects)
Odoo ERP
Custom Fields
lossyXentral custom field definitions for Articles, Addresses, and Projects are exported as property values and mapped to Odoo custom fields (ir.model.fields with is_custom=True) on the equivalent Odoo model before data import begins. Any custom fields detected on Orders, Invoices, or Warehouse records in Xentral are flagged as workarounds (since Xentral does not natively support them on these objects) and added to a manual remediation list for post-migration review.
Xentral ERP
Attachments
Odoo ERP
Ir Attachment
1:1File attachments linked to orders, articles, addresses, and invoices are downloaded from Xentral via the API, stored with their original filename and MIME type, and uploaded to Odoo as ir.attachment records linked to the corresponding res_model and res_id. Document associations (delivery notes, credit memos) are linked to their parent Sale Order or Account Move via the attachment's res_model field.
Xentral ERP
Xentral Flows Workflows
Odoo ERP
Studio Automation (not migratable)
1:1Xentral Flows workflows stored in the Xentral Connect middleware are not accessible via the Xentral REST API and cannot be exported programmatically. During discovery, we review Xentral Connect execution logs to identify active workflows and document each one: trigger, conditions, actions, and target records. We deliver this as a written workflow inventory document with recommended Odoo Studio equivalents (automated actions, server actions) or Python-based Odoo addon logic. The customer must re-implement workflows post-migration either manually or with an Odoo partner.
| Xentral ERP | Odoo ERP | Compatibility | |
|---|---|---|---|
| Address | Partner1:many | Fully supported | |
| Article | Product Template + Product Variant1:1 | Fully supported | |
| Sales Order | Sale Order1:1 | Fully supported | |
| Purchase Order | Purchase Order1:1 | Fully supported | |
| Invoice (Outgoing) | Account Move (Invoice)1:1 | Fully supported | |
| Invoice (Incoming) | Account Move (Vendor Bill)1:1 | Fully supported | |
| Warehouse and Inventory | Inventory Location + Quantlossy | Fully supported | |
| Project | Project1:1 | Fully supported | |
| Financial Records and Chart of Accounts | Account Chart of Accountslossy | Mapping required | |
| Custom Fields (Articles, Addresses, Projects) | Custom Fieldslossy | Mapping required | |
| Attachments | Ir Attachment1:1 | Fully supported | |
| Xentral Flows Workflows | Studio Automation (not migratable)1: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.
Xentral ERP gotchas
Xentral Flows workflows are not exported via API
CSV export requires mandatory masking character selection
Custom fields limited to three object types
Order volume limits create billing surprises on Business tier
API rate limits are documented but not fully public
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 Xentral Flows audit
We audit the source Xentral ERP instance across all active modules, identifying Addresses, Articles, Sales Orders, Purchase Orders, Invoices, Inventory records, Projects, and Attachments. We review Xentral Connect execution logs to document every active Xentral Flow workflow, capturing its trigger type, conditions, actions, and target records. This audit output is the written workflow inventory that the customer uses for Odoo rebuild planning. We also extract the current chart of accounts and tax code structure for mapping to Odoo Accounting.
Schema design and Odoo app activation
We define the destination schema in Odoo. This includes activating the required Odoo Apps (Sales, Purchase, Inventory, Accounting, Project), creating custom fields on each target model to match Xentral custom field definitions, configuring Stock Locations to mirror the Xentral warehouse structure, and setting up the Odoo chart of accounts using the Xentral account code mapping document. If the customer uses Odoo multi-company, we configure company assignments at this stage. Schema is validated in an Odoo test database before production migration begins.
Data cleanup and Xentral freeze coordination
We work with the customer to clean duplicate addresses, normalize article naming conventions, and resolve any dangling vendor references before migration. We coordinate the inventory write-freeze window with the warehouse team, ensuring all goods-receipt and goods-issue transactions are paused for the snapshot period. Any data quality issues (missing addresses, invalid tax IDs, orphaned order lines) are documented in a pre-migration remediation checklist and resolved by the customer before the migration load begins.
Sandbox migration and reconciliation
We run a full migration into an Odoo test database using production-equivalent data volume. The customer's operations lead reconciles record counts (addresses in, partners created; articles in, products created; orders in, sale orders created; invoices in, account moves created), spot-checks 25-50 random records against the Xentral source, and reviews the stock snapshot accuracy. Any mapping corrections are applied here. The customer signs off on the sandbox migration before production migration is scheduled.
Production migration in dependency order
We run production migration in record-dependency order: Partners (split from Xentral Addresses), Products (from Articles), Stock Locations and Quants (inventory snapshot), Projects, Sale Orders, Purchase Orders, Account Moves (invoices and bills), and Attachments. Each phase emits a row-count reconciliation report before the next phase begins. We use Odoo's XML-RPC batch write endpoint with chunking and exponential backoff on 429 responses. Xentral Flows are not migrated as code; the workflow inventory document is delivered at this stage for the customer's Odoo rebuild team.
Cutover, validation, and workflow rebuild handoff
We freeze Xentral 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 chart of accounts mapping document, the custom field list, and the Xentral Flows inventory with Odoo Studio equivalents. We support a one-week hypercare window where we resolve any record-level reconciliation issues. We do not configure Odoo Accounting tax codes, SEPA bank accounts, or fiscal positions as part of the migration scope; these require the customer's accountant or Odoo partner with country-specific fiscal knowledge.
Platform deep dives
Xentral 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 Xentral 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
Xentral ERP: Documented at developer.xentral.com/reference/rate-limiting; specific per-endpoint limits not publicly enumerated.
Data volume sensitivity
Xentral ERP exposes a bulk API — large-volume migrations stream efficiently.
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 Xentral ERP to Odoo ERP migration scoping. Not seeing yours? Book a call.
Walk through your Xentral 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 Xentral 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.