ERP migration
Field-level mapping, validation, and rollback between Infor LX and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.
Infor LX
Source
Odoo ERP
Destination
Compatibility
9 of 11
objects map 1:1 between Infor LX and Odoo ERP.
Complexity
BStandard
Timeline
5-8 weeks
Overview
Infor LX stores master-file data in an IBM i master-file model where GL Accounts, Customers, Vendors, Items, and Orders are period-bound records with configurable Enterprise Financials for multi-currency. Odoo ERP uses a relational model with a unified Accounting app, Inventory app, Manufacturing app, and Purchase/Sales apps. The migration requires extracting from Infor's database export tool during a scheduled maintenance window (all user sessions suspended), resolving the multi-currency AP/AR into Odoo's chart of accounts and fiscal positions, mapping Infor MMS001 item stocking parameters to Odoo product variants with BOM structures, and translating CMS470 custom field definitions into Odoo custom fields. Document exports via IDM carry a 5,000-item run cap and strip historical versions — we split large libraries into chunked export sessions and build a document ID cross-reference for post-import linking. We do not migrate ION connector configurations, custom RPG programs, or Infor-specific workflows as code; we deliver a written inventory of these for the customer's technical team to evaluate for Odoo API-based rebuilds.
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 Infor LX 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.
Infor LX
Chart of Accounts (GL Accounts)
Odoo ERP
Account (Accounting)
1:1Infor LX GL accounts with defined account types, currency associations, and cost-centre groupings map to Odoo Account records with Account Type, Account Tag, and internal_group. We extract account codes, descriptions, and account-group mappings from the database export and map them to Odoo's accounting.chart template for the relevant country, adding any Infor-specific cost-centre accounts as Odoo analytic account records. Multi-currency account flags from Infor Enterprise Financials map to Odoo Foreign Currency Gain/Loss accounts on the Fiscal Position.
Infor LX
Customer (AR Master)
Odoo ERP
Contact / Address (res.partner)
1:1Infor LX customer master records include credit limits, payment terms, address data, and multi-currency AR settings. We map customer records to Odoo res.partner with type=contact, customer_rank set for deduplication, and payment terms from Infor's payment terms code. Multi-currency AR from Infor translates to a Fiscal Position in Odoo that assigns the correct currency and exchange rate account per customer. Open receivable balances migrate as Odoo Account Move lines against the customer partner.
Infor LX
Vendor (AP Master)
Odoo ERP
Contact / Address (res.partner)
1:1Infor LX vendor master records include tax registration, Pay-to addresses, and multi-currency AP settings. We map vendors to Odoo res.partner with type=supplier and vendor_rank set. Infor's Pay-to location concept maps to Odoo's multi-address capability on the vendor partner record. Multi-currency AP settings map to a vendor-specific Fiscal Position in Odoo that controls the correct currency and gain/loss account on foreign-currency AP.
Infor LX
Item (MMS001 Item Master)
Odoo ERP
Product / Product Template
1:1Infor LX MMS001 item records carry stocking parameters, unit-of-measure conversions, Phantom Item flags, and item-type classifications. We map standard items to Odoo Product Template with the product type (stockable, consumable, service) derived from the Infor item type. Unit-of-measure conversions in Infor map to Odoo's UoM categories and conversion factors in the uom.uom model. Phantom Items in Infor (used as assembly explode components) map to Odoo BoM lines with type=phantom. CMS470 custom fields attach to item headers and map to Odoo ir.model.field custom fields created on product.template.
Infor LX
Purchase Order
Odoo ERP
Purchase Order (purchase.order)
1:1Infor LX PO headers with approval workflows, distribution accounts, and foreign-currency amounts map to Odoo purchase.order records. PO status (open, closed, cancelled) maps to Odoo's state field (draft, sent, purchase, done, cancel). Line-level distribution accounts in Infor translate to Odoo's analytic account on PO lines for cost allocation. We preserve PO dates, payment terms, and line quantities; Infor-specific discounting rules and promotional pricing that rely on Infor pricing engines are noted as requiring manual review or Odoo pricelist configuration post-migration.
Infor LX
Sales Order
Odoo ERP
Sale Order (sale.order)
1:1Infor LX SO records include pricing structures, warehouse assignments, and inventory commitments. We map SO headers and line-level quantities to Odoo sale.order and sale.order.line. Warehouse commitment from Infor maps to Odoo's picking policy and delivery reservation logic. Infor's pricing and promotional rules that are source-specific are not carried forward; Odoo pricelist configuration replaces these post-migration. Customer-specific credit limits from Infor AR migrate as Odoo partner credit limits on the res.partner record.
Infor LX
Work Order
Odoo ERP
Manufacturing Order (mrp.production)
1:1Infor LX work orders tie production operations to BOMs and routing steps. We map work order numbers, scheduled dates, and component allocations to Odoo mrp.production records with associated mrp.workorder lines. Infor BOM components map to Odoo mrp.bom lines; Infor routing steps map to Odoo work centre operations. Operation-level dependencies and scheduling constraints that rely on Infor's finite capacity scheduling engine are flagged as requiring Odoo planning configuration review post-migration. Component allocations (issuance quantities) migrate as Odoo mrp.workorder qty values.
Infor LX
Inventory Transactions / On-hand Balances
Odoo ERP
Stock Quant (stock.quant)
1:1Infor LX physical inventory adjustments and stock movements are recorded as transaction history against warehouse locations and items. We extract current on-hand balances by warehouse location from the database export and create Odoo stock.quant records for the initial inventory snapshot. Full historical transaction logs migrate as Odoo stock.move records if the scope includes inventory history; otherwise, the current on-hand balances serve as the opening inventory for Odoo's stock valuation.
Infor LX
Period Tables
Odoo ERP
Fiscal Year / Accounting Period (account.fiscal.year)
lossyInfor LX period tables define financial reporting intervals with start and end dates, organised by year and calendar name. We export the period table structure and the current year's open/closed status and map them to Odoo account.fiscal.year records. Infor's period-based accounting (where transactions are bound to a specific period) requires Odoo's lock date and fiscal year lock configuration to replicate the same access control. Inter-company or multi-subsidiary period calendars map to separate Odoo fiscal year configurations per company.
Infor LX
Custom Fields (CMS470)
Odoo ERP
Custom Fields (ir.model.field)
lossyCMS470 custom fields in Infor LX attach to items, suppliers, and purchase agreement headers and lines. They support alphanumeric, numeric, and date types. We extract field definitions and their values together, create the equivalent Odoo ir.model.field definitions (custom fields on the relevant model), and populate the values during the corresponding record import. Alphanumeric multi-select CMS470 fields map to Odoo selection fields or many2many tags depending on the cardinality of values.
Infor LX
IDM Documents
Odoo ERP
Attachments (ir.attachment)
1:1Infor Document Management exports carry a 5,000-document cap per run, strip historical versions, and reassign IDs on import. We split large document libraries into numbered chunked export sessions, build a cross-reference table mapping source document IDs to destination attachment IDs, and re-link attachments to their associated transactional records (POs, SOs, work orders) after import by matching document filenames or metadata keys against the migrated record identifiers.
| Infor LX | Odoo ERP | Compatibility | |
|---|---|---|---|
| Chart of Accounts (GL Accounts) | Account (Accounting)1:1 | Fully supported | |
| Customer (AR Master) | Contact / Address (res.partner)1:1 | Fully supported | |
| Vendor (AP Master) | Contact / Address (res.partner)1:1 | Fully supported | |
| Item (MMS001 Item Master) | Product / Product Template1:1 | Fully supported | |
| Purchase Order | Purchase Order (purchase.order)1:1 | Fully supported | |
| Sales Order | Sale Order (sale.order)1:1 | Fully supported | |
| Work Order | Manufacturing Order (mrp.production)1:1 | Fully supported | |
| Inventory Transactions / On-hand Balances | Stock Quant (stock.quant)1:1 | Fully supported | |
| Period Tables | Fiscal Year / Accounting Period (account.fiscal.year)lossy | Fully supported | |
| Custom Fields (CMS470) | Custom Fields (ir.model.field)lossy | Fully supported | |
| IDM Documents | Attachments (ir.attachment)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.
Infor LX gotchas
Maintenance mode required for database exports
IDM document export caps at 5,000 items per run
ION API execution timeouts are strict
Document IDs and properties are reassigned on import
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
Maintenance window scheduling and source audit
We coordinate with the customer's Infor LX operations team to identify the smallest maintenance window that covers all active shifts across time zones. During this window we run the built-in Database Export tool across the target tables: GL accounts, customers, vendors, items, period tables, POs, SOs, work orders, and inventory snapshots. We simultaneously audit the CMS470 custom field registry to capture all active field definitions and their target models. Any table that exceeds the document export cap (such as IDM document libraries) is noted for chunked sequencing. The source audit output is a written inventory of record counts, foreign key relationships, and identified data quality issues (duplicate SKUs, missing customer addresses, null balances) to be resolved before transformation.
Odoo environment provisioning and schema design
We provision the destination Odoo environment with the appropriate edition (Standard at $24.90/user/month or Custom at $46.80/user/month) and install the core apps required for the migration scope: Accounting, Inventory, Purchase, Sales, and Manufacturing. We then pre-create all CMS470 custom fields as Odoo ir.model.field definitions on the target models (product.template for items, res.partner for customers and vendors, purchase.order and sale.order for orders). We configure the chart of accounts by installing the country-specific accounting template, adding any Infor cost-centre accounts as analytic account records, and designing the Fiscal Position structure for multi-currency mapping. The schema is validated in a staging environment before any production data loads.
Multi-currency and fiscal position design
We map each Infor currency-assigned customer and vendor to an Odoo Fiscal Position that specifies the currency and the corresponding exchange gain/loss account. For open foreign-currency AP and AR balances, we create Odooaml entries that lock the original exchange rate so that the balance does not revalue during migration. We configure the Odoo exchange rate provider (defaulting to ECB) for ongoing currency updates post-migration. Period tables from Infor map to Odoo account.fiscal.year records, and Infor's period-lock configuration maps to Odoo's lock dates for the journal entries.
Master data migration in dependency order
We run master data migration in strict dependency order: chart of accounts (first, no dependencies), then customers and vendors (res.partner records with payment terms and fiscal positions resolved), then products (product.template with CMS470 custom fields and UoM conversions), then analytic accounts. Each phase emits a row-count reconciliation report against the source export. After master data is validated, we migrate open POs and SOs (purchase.order, sale.order with lines and analytic accounts), then work orders (mrp.production with mrp.workorder lines and BoM references), then the inventory on-hand snapshot (stock.quant). Document libraries migrate last via chunked IDM export sessions with ID cross-reference tables built incrementally.
IDM document chunking and cross-reference build
For document libraries exceeding 5,000 items, we split the IDM export into numbered sequential sessions. After each session completes, we update the cross-reference table mapping source document ID to destination ir.attachment ID. Once all chunks are loaded, we run a post-import linking script that matches document filenames or metadata against migrated PO, SO, and work order identifiers and attaches the documents to the correct Odoo records. Any documents that failed to link (orphaned metadata) are flagged in the reconciliation report for manual review.
Cutover, validation, and inventory handoff
We freeze Infor LX writes during the cutover window, run a final delta migration of any records modified since the initial export, then validate Odoo record counts against the source. The customer's finance team spot-checks open AP/AR balances, the operations team validates on-hand inventory quantities, and the production team confirms work order component allocations. We deliver the ION connector inventory, CMS470 custom field map, document version history limitation note, and work-order routing dependency flag as written scope for the customer's technical team. We do not rebuild Infor ION integrations or workflows as Odoo automations; those are documented for separate rebuild scope.
Platform deep dives
Infor LX
Source
Strengths
Weaknesses
Odoo ERP
Destination
Strengths
Weaknesses
Complexity grading
Standard ERP migration. 2 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 Infor LX and Odoo ERP.
Object compatibility
2 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
Infor LX: PRD tenants capped at 250 concurrent REST executions across all deployed services; non-PROD tenants capped at 125. Individual REST handlers limited to 25 seconds per call..
Data volume sensitivity
Infor LX 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 Infor LX to Odoo ERP migration scoping. Not seeing yours? Book a call.
Walk through your Infor LX 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 Infor LX
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.