ERP migration
Field-level mapping, validation, and rollback between MRPeasy and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.
MRPeasy
Source
Odoo ERP
Destination
Compatibility
10 of 11
objects map 1:1 between MRPeasy and Odoo ERP.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from MRPeasy to Odoo ERP is a migration from a focused MRP system into a full modular ERP. MRPeasy organizes manufacturing around an eight-section data model (Items, BOMs, Routings, Manufacturing Orders, Customers, Vendors, Inventory, and Stock Lots) with a dependency chain that runs Vendor → Storage Location → Item → BOM/Routing → MO. Odoo uses a more unified Partner model (res.partner) where the same record type handles both customers and vendors with a type flag, and a separate Manufacturing module with Workcenters, Work Orders, and MoCons. We resolve the Partner split during scoping, sequence BOM and Routing imports so that Operations reference existing Workcenters at import time, and chunk MRPeasy's 3000-line CSV cap across multiple import passes for large item and inventory datasets. Custom fields, Active Manufacturing Order rescheduling behavior, and the manual completion requirement for Transfer Orders are all flagged in the gotchas section. We do not migrate MRPeasy's configuration records (Workstation Groups, Storage Locations) or any automation rules; these are documented for manual 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 MRPeasy 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.
MRPeasy
Vendor (Supplier)
Odoo ERP
res.partner (vendor type)
1:1MRPeasy Vendors map to Odoo res.partner records with partner_type set to vendor. We extract vendor name, code, contact information, address, and purchase terms from MRPeasy's vendor export. MRPeasy's purchase terms per vendor-item pair map to Odoo's vendor price lists on the Product form under the Purchase tab. This is the first object imported because Items in MRPeasy reference vendor purchase terms and Odoo Product suppliers must exist before supplierinfo records are created.
MRPeasy
Item (Article/SKU)
Odoo ERP
product.product
1:1MRPeasy Items are the core stock record and map to Odoo product.product (storable products). We map part number to default_code, item name to name, unit of measure to uom_id (with UoM category matching), cost from MRPeasy's cost_price to Odoo's standard_price, and sale price to list_price. MRPeasy's item_type (make-to-order, make-to-stock, assembly) maps to Odoo's route selection (MTO vs MTS). For matrix BOM items (Professional+), we set the product as a phantom BoM in Odoo. MRPeasy's 3000-line CSV cap requires chunking for large catalogs; we split item exports into multiple files and track import completion to avoid duplication.
MRPeasy
Bill of Materials (BOM)
Odoo ERP
mrp.bom
1:1MRPeasy BOMs map to Odoo mrp.bom records. The parent manufactured item maps to Odoo's product_id, component items map to bom_line_ids with product_id and product_qty. MRPeasy multi-level BOMs (BOM referencing sub-assemblies that are themselves BOMs) map to Odoo's multi-level BoM structure using the same parent-child hierarchy. Co-product BOMs from MRPeasy Professional+ map to Odoo by-products on the BOM form. We create BOM records after all component Items exist in Odoo to satisfy product_id foreign key constraints.
MRPeasy
Routing
Odoo ERP
mrp.routing.workcenter (Operation)
1:1MRPeasy Routings define the production operation sequence and map to Odoo mrp.routing with mrp.routing.workcenter lines for each operation. We map MRPeasy operation sequence to Odoo sequence, workstation to mrp.workcenter (which we pre-create from MRPeasy workstation data), and labor times to duration computation. Overlap and parallel execution flags from MRPeasy Routings map to Odoo's workorder overlap field. MRPeasy Routings without a linked Workstation cannot be created in MRPeasy; we ensure Odoo Workcenters exist before importing Operations by pre-running a workstation migration pass. Piece-payment operations map to Odoo mrp.workorder time tracking fields.
MRPeasy
Manufacturing Order (MO)
Odoo ERP
mrp.production
1:manyMRPeasy MOs map to Odoo mrp.production as the parent manufacturing order. For each MO with an associated Routing, Odoo auto-generates mrp.workorder child records (one per operation). We map MRPeasy MO status (New, In Progress, Done, Canceled) to Odoo state (draft, confirmed, progress, done, cancel). MRPeasy's Dynamic Rescheduling engine recalculates dates on any BOM or Routing change; we flag open/active MOs during scoping, advise customers to close or freeze orders before import where possible, and document any post-import reschedule delta. Historical MOs migrate as read-only records. Closed and canceled MOs preserve their production history.
MRPeasy
Customer
Odoo ERP
res.partner (customer type)
1:1MRPeasy Customers map to Odoo res.partner records with partner_type set to customer. We map customer name, code, contact information, billing and shipping addresses, tax ID (mapped to Odoo's vat field for VAT compliance), and payment terms. MRPeasy's price list assignment per customer maps to Odoo res.partner property_product_pricelist. MRPeasy customer-specific pricing from price list lines maps to Odoo product.pricelist.item records linked to the customer. We resolve MRPeasy's customer code as an external identifier in Odoo for dedupe on re-import.
MRPeasy
Price List
Odoo ERP
product.pricelist
1:1MRPeasy Price Lists (customer-specific and product-specific) map to Odoo product.pricelist records. Each price list line maps to product.pricelist.item with product_id, min_quantity, and fixed_price or percentage mapped from MRPeasy's price and discount fields. Currency from MRPeasy's multi-currency price list maps to Odoo pricelist currency. We create pricelists before customers and before importing sales orders so that pricing is active at go-live.
MRPeasy
Inventory Level
Odoo ERP
stock.quant
1:1MRPeasy inventory levels per storage location map to Odoo stock.quant records linked to stock.location and product.product. MRPeasy's 3000-line CSV import cap applies to inventory uploads; large warehouses with 10,000+ SKUs require four or more chunked import passes. We segment the inventory export by storage location to respect both the line cap and MRPeasy's requirement that Storage Locations exist before inventory can be assigned to them. MRPeasy's qty_on_hand, qty_reserved, and qty_available map to Odoo's reserved_qty, quantity, and available_quantity fields on stock.quant.
MRPeasy
Stock Lot
Odoo ERP
stock.production.lot
1:1MRPeasy Stock Lots with batch traceability map to Odoo stock.production.lot records linked to product.product. We map lot/batch number to name, expiry date to product_expiry_tracking and removal_date, and quantity to the linked stock.quant record. MRPeasy's lot status (Received, etc.) is informational; we do not attempt to map it to Odoo's internal lot state. MRPeasy serial number tracking (Professional+) maps to Odoo lot tracking with the serial number field as lot name, enabling full lot traceability in Odoo's lot traceability report.
MRPeasy
Transfer Order
Odoo ERP
stock.picking (internal transfer type)
1:1MRPeasy Transfer Orders between sites and storage locations map to Odoo stock.picking records with picking_type_id set to internal transfer. We map source location and destination location to Odoo's location_id and location_dest_id, product quantities to move_lines, and Transfer Order status to stock.picking state. MRPeasy's 'Received' status does not auto-complete in MRPeasy; we set Odoo moves to done state based on the MRPeasy received status flag. In-transit Transfer Orders from MRPeasy land in Odoo as confirmed or assigned moves pending the customer's warehouse team confirmation.
MRPeasy
User
Odoo ERP
res.users
1:1MRPeasy user records from Settings -> User management map to Odoo res.users. We extract active users, their email addresses (used as the Odoo login), name, and role/permission group assignment. MRPeasy role names map to Odoo access groups (Manufacturing / Sales / Inventory / Administration). We match MRPeasy owners on manufacturing orders and inventory records to Odoo users by email for OwnerId resolution during MO and quant import. Inactive MRPeasy users are exported as inactive Odoo users to preserve audit trails.
| MRPeasy | Odoo ERP | Compatibility | |
|---|---|---|---|
| Vendor (Supplier) | res.partner (vendor type)1:1 | Fully supported | |
| Item (Article/SKU) | product.product1:1 | Fully supported | |
| Bill of Materials (BOM) | mrp.bom1:1 | Fully supported | |
| Routing | mrp.routing.workcenter (Operation)1:1 | Fully supported | |
| Manufacturing Order (MO) | mrp.production1:many | Fully supported | |
| Customer | res.partner (customer type)1:1 | Fully supported | |
| Price List | product.pricelist1:1 | Fully supported | |
| Inventory Level | stock.quant1:1 | Fully supported | |
| Stock Lot | stock.production.lot1:1 | Fully supported | |
| Transfer Order | stock.picking (internal transfer type)1:1 | Fully supported | |
| User | res.users1: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.
MRPeasy gotchas
API access locked behind Unlimited plan
3000-line CSV import cap per upload
Workstations and Storage Locations must be manually configured
Active Manufacturing Orders trigger dynamic rescheduling on import
Transfer Order 'Received' status is manual
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 data audit
We audit the source MRPeasy instance across plan tier (Starter/Professional/Unlimited), item count and BOM depth, open and historical Manufacturing Order volume, inventory location structure, custom field definitions, price list complexity, and any non-standard configurations (custom fields, non-standard UoMs, custom lot naming conventions). We pair this with a review of MRPeasy's CSV export capability at the customer's plan tier and identify any objects that require the API (which mandates Unlimited plan confirmation). The discovery output is a written migration scope, a data quality report flagging duplicates and schema inconsistencies, and a plan-tier confirmation for API access feasibility.
Odoo environment provisioning and schema design
We provision the customer's Odoo environment (Odoo Online, Odoo.sh, or on-premise) and configure the manufacturing module and stock module settings before any data import. This includes creating the warehouse and location hierarchy to match MRPeasy's storage location structure, provisioning Workcenters (mapped from MRPeasy workstation data in a pre-migration pass), configuring BoM types and routing settings, setting up product categories, UoM categories, and attribute sets for variant products, and configuring the partner pricelist model. Schema configuration is validated in an Odoo staging environment before production data is loaded.
Partner and pricing master data migration
We migrate master data in dependency order: Vendors first (res.partner with partner_type=vendor and product.supplierinfo records), then Customers (res.partner with partner_type=customer and property_product_pricelist assignment), then Price Lists (product.pricelist and product.pricelist.item). MRPeasy's vendor purchase terms per item pair are recreated as product.supplierinfo records linked to the product.product and res.partner vendor. This pass establishes the partner and pricing foundation for downstream sales and purchase order history migration.
Product and BOM migration with Routing-to-Workcenter mapping
We migrate Items in chunked CSV passes (respecting MRPeasy's 3000-line cap), then BOMs and Routings in the same session because BOMs reference Items. For each Routing operation, we resolve the MRPeasy workstation reference to the pre-created Odoo Workcenter. Multi-level BOMs are imported top-down so that sub-assembly products exist before parent BOMs are created. Co-products and by-products from MRPeasy Professional+ are mapped to Odoo's by-product lines on the BOM form. Each pass emits a row-count reconciliation report against the MRPeasy export counts.
Inventory and traceability migration
We migrate stock locations and inventory levels after the product catalog is fully loaded. MRPeasy's 3000-line cap requires chunked inventory imports segmented by storage location. We create stock.quant records with location_id, product_id, quantity, and reserved_quantity resolved. Stock Lots and serial number records are migrated as stock.production.lot linked to the corresponding product and quant. Transfer Order history is migrated as stock.picking records in done or confirmed state based on MRPeasy's received status flag. Lot traceability metadata (expiry dates, batch numbers) is preserved for Odoo's lot traceability report.
Manufacturing order migration and cutover
We freeze MRPeasy writes during the cutover window, run a final delta export of any records modified since the initial export (open MOs, recent inventory changes), then migrate Manufacturing Orders in status order: closed/canceled historical MOs first (read-only), then draft and confirmed MOs, then in-progress MOs with a freeze recommendation sent to the customer before the export. We deliver a written inventory of MRPeasy workflows, alert rules, and automated reorder triggers for the customer's Odoo admin to rebuild in Odoo Manufacturing rules or Inventory rules. We support a one-week post-cutover window for reconciliation issues.
Platform deep dives
MRPeasy
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 MRPeasy 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
MRPeasy: Not publicly documented.
Data volume sensitivity
MRPeasy 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 MRPeasy to Odoo ERP migration scoping. Not seeing yours? Book a call.
Walk through your MRPeasy 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 MRPeasy
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.