ERP migration
Field-level mapping, validation, and rollback between Visibility ERP and Odoo ERP. We move data and schema; workflows are rebuilt natively in Odoo ERP.
Visibility ERP
Source
Odoo ERP
Destination
Compatibility
7 of 12
objects map 1:1 between Visibility ERP and Odoo ERP.
Complexity
BStandard
Timeline
6-10 weeks
Overview
Moving from Visibility ERP to Odoo ERP is a manufacturing-data migration that requires careful schema reconciliation across two very different ERP architectures. Visibility ERP is purpose-built for engineer-to-order shops with native multi-level BOMs, job costing, and integrated shop scheduling on a single database. Odoo ERP uses a modular open-source architecture with product variants, BoM lines, and manufacturing orders managed through separate apps. We map multi-level BOM structures into Odoo's Product and BoM objects, preserve Work Order component and routing step associations through revision-locked mapping, extract Visibility's custom field schema during scoping to prevent silent data drops at import, and validate the destination GL account structure before any financial data loads. Workflows, automations, and custom reports do not migrate as code; we deliver a written inventory for the customer's admin team to rebuild in Odoo's Studio or with a partner. We use Odoo's REST and XML-RPC APIs with conservative batch sizing and exponential backoff throughout.
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 Visibility 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.
Visibility ERP
Bills of Material
Odoo ERP
Product + BoM
1:manyVisibility multi-level BOMs map to Odoo BoM records attached to a master Product (the manufactured item). Each BoM line is a component (sub-assembly or raw material). Phantom BOMs in Visibility map to BoM type kit or sub-assembly in Odoo. We walk the full parent-component tree from Visibility and insert each level as a separate BoM in Odoo, linking sub-assembly BoMs as components of the parent. Phantom BOMs get BoM type=subassembly so they auto-resolve during Manufacturing Order explosion.
Visibility ERP
Work Orders
Odoo ERP
Manufacturing Order
1:1Visibility Work Orders map to Odoo Manufacturing Orders. The Work Order header (number, status, scheduled dates, work center assignment) maps to MO fields. Component lines map to BoM-exploded stock moves. Routing steps map to Odoo workorders. We preserve the original Work Order number in a custom reference field and set MO state to draft or confirmed based on Visibility status. BOM revision-locked Work Orders map to the corresponding BoM revision in Odoo via the revision-mapping table built during scoping.
Visibility ERP
Production Orders
Odoo ERP
Manufacturing Order
1:1Visibility Production Orders map to Odoo Manufacturing Orders at the header level. The linked BOM revision and routing operation sequence migrate as MO source BoM and work order operations. Scheduled start and end dates become MO scheduled date and deadline. Material and labor requirements from Visibility carry forward as stock move lines and work order timesheet estimates.
Visibility ERP
Routings
Odoo ERP
Work Order Operations
lossyVisibility Routings define the sequence of operations, work centers, and standard times. In Odoo, routing data lives on the Work Order Operations tab of the BoM or MO. We map each Routing step as a workorder record with sequence, work center, duration, and operation name. Custom operation-level user fields migrate as custom fields on the workorder model.
Visibility ERP
Sales Orders
Odoo ERP
Sale Order
1:1Visibility Sales Orders map to Odoo Sale Order with line-level mapping for configured lines, pricing, discounts, and shipment schedules. The Visibility configured line (from the Product Configurator) maps to an Odoo product variant with the configured combination applied. Scheduled shipment dates migrate as delivery dates on order lines. Original SO number is preserved as the Odoo name field for reference.
Visibility ERP
Purchase Orders
Odoo ERP
Purchase Order
1:1Open Purchase Orders with line items, vendor assignments, scheduled receipts, and unit costs migrate directly. We map PO header fields (vendor, date, payment terms) and flatten line-level detail (product, quantity, unit cost, scheduled date) into Odoo POL. Vendor is resolved via the vendor reference on the Odoo Contact. Open POs (not yet received) are migrated in draft state for the customer's team to confirm in Odoo.
Visibility ERP
Inventory Lots and Serial Numbers
Odoo ERP
Lot/Serial Number + Quants
1:1Visibility lot numbers, serial numbers, expiration dates, and bin locations map to Odoo lot/serial records and quant records. Lot-controlled items require mapping lot assignment at the inventory transaction level, not just the item master. We extract all lots and associated quant quantities from Visibility and insert them into Odoo with location_id resolved against the destination warehouse structure configured during schema design.
Visibility ERP
Quality Control Records
Odoo ERP
Quality Alert / Check
1:manyVisibility QC inspection results, non-conformance records, and corrective actions link to Work Orders and inventory transactions. We migrate QC records as Odoo Quality Checks linked to the corresponding Manufacturing Order or stock move, and Quality Alerts for non-conformance records with their corrective action description preserved. The mapping type is 1:N because a single Work Order may have multiple QC checkpoints.
Visibility ERP
Chart of Accounts
Odoo ERP
Account
lossyVisibility uses a hierarchical GL code structure that varies by deployment (segmented vs. flat). We extract the full account tree, map account types (asset, liability, equity, revenue, expense), and validate that the destination Odoo chart of accounts segment structure matches. We recommend installing Odoo with a standard manufacturing-friendly chart of accounts first, then mapping Visibility accounts to Odoo accounts by account code, with any unmapped accounts flagged for the customer's accountant to review before GL data loads.
Visibility ERP
Open AP/AR
Odoo ERP
Vendor Bill / Customer Invoice
1:1Open invoices, credit memos, and payment records carry vendor/customer references, due dates, and aging buckets. We map open AP as Odoo Vendor Bills in open state and open AR as Odoo Customer Invoices. Original invoice numbers are preserved as Odoo reference fields. Aging buckets are not Odoo-native but we carry the original due date and payment term so aging reports regenerate correctly post-migration.
Visibility ERP
Users and Role Assignments
Odoo ERP
User
1:1Visibility User accounts and role profiles map to Odoo Users. Role names map to the closest Odoo access rights group (Employee, Manager, Administrator). We resolve users by email match against the Odoo destination User table. Any Visibility User without a matching Odoo User goes to a reconciliation queue for the customer's admin to provision before the user data phase begins.
Visibility ERP
Custom Properties and User-Defined Fields
Odoo ERP
Custom Field (ir.model.fields)
lossyVisibility allows user-defined fields across most objects but exposes no public schema for them. We request a custom field export during scoping (typically via a database-level query or a Visibility-supported report), build a bespoke field map before any import begins, and pre-create each Odoo custom field with the correct field type before data migration starts. Custom fields without a known Odoo equivalent are flagged for the customer to decide whether to drop or map to a note field.
| Visibility ERP | Odoo ERP | Compatibility | |
|---|---|---|---|
| Bills of Material | Product + BoM1:many | Mapping required | |
| Work Orders | Manufacturing Order1:1 | Mapping required | |
| Production Orders | Manufacturing Order1:1 | Mapping required | |
| Routings | Work Order Operationslossy | Mapping required | |
| Sales Orders | Sale Order1:1 | Fully supported | |
| Purchase Orders | Purchase Order1:1 | Fully supported | |
| Inventory Lots and Serial Numbers | Lot/Serial Number + Quants1:1 | Mapping required | |
| Quality Control Records | Quality Alert / Check1:many | Mapping required | |
| Chart of Accounts | Accountlossy | Mapping required | |
| Open AP/AR | Vendor Bill / Customer Invoice1:1 | Mapping required | |
| Users and Role Assignments | User1:1 | Mapping required | |
| Custom Properties and User-Defined Fields | Custom Field (ir.model.fields)lossy | Mapping required |
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.
Visibility ERP gotchas
Document Management has no bulk export API
Custom properties lack standardized API schema documentation
BOM and Routing revisions require version-locked migration
No publicly documented API rate limits
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 Visibility ERP deployment across all modules in scope: BOM count and nesting depth, active Work Orders and their BOM revision status, open Production Orders, Sales Orders and Purchase Orders, inventory lot and serial records, QC record volume, chart of accounts structure (segmented vs. flat), open AP and AR aging buckets, and user/role count. We also request a Visibility custom field export during this phase to build the bespoke field map before any import begins. The discovery output is a written migration scope, a BOM hierarchy diagram, and a GL account mapping plan that the customer's accountant reviews before schema design begins.
Schema design and Odoo configuration
We configure the destination Odoo database before any data loads. This includes installing the Manufacturing, Inventory, Purchase, Sales, and Accounting apps; setting up the warehouse structure (locations, routes, operation types); configuring the chart of accounts based on the GL mapping plan; pre-creating all custom fields from the Visibility custom field export; and setting BoM types (stock, kit, subassembly) for each BOM migrated. Odoo configuration happens in a non-production instance first for validation.
Sandbox migration and reconciliation
We run a full migration into the non-production Odoo instance using representative production data volume. The customer's manufacturing lead and accountant reconcile record counts across BOMs, Work Orders, inventory, and financial accounts, spot-checking 25-50 records against the Visibility source and reviewing GL balance totals. Any mapping corrections, account mismatches, or BoM type changes are made before production migration begins. No production data moves until this step is signed off.
Custom field extraction and field map build
Since Visibility's custom properties lack standardized API schema documentation, we extract the full custom field list during scoping via a database-level query or Visibility-supported report. We build a bespoke field map that pairs each Visibility custom field with an Odoo custom field of the correct type (char, float, integer, date, selection, many2one). Fields without a clear Odoo equivalent are flagged for the customer to decide whether to drop, map to a description field, or create a custom model. Odoo custom fields are created in the non-production environment before sandbox migration begins.
Production migration in dependency order
We run production migration in record-dependency order: chart of accounts and GL structure first (required for all financial records), then products and BoM hierarchy (required for inventory and manufacturing), then inventory lots and serial numbers, then open Purchase Orders and Sales Orders, then Work Orders and Production Orders with BOM revision mapping applied, then open AP/AR, then QC records, then users with role-to-group mapping. Each phase emits a row-count reconciliation report before the next phase begins. BOM revision-locked Work Orders are held until their corresponding BoM revision is confirmed active.
Cutover, validation, and handoff
We freeze Visibility ERP to read-only during the final cutover window. Any records modified in Visibility during the migration window are delta-migrated into Odoo. We then set Odoo as the system of record and begin a one-week hypercare window where we resolve any reconciliation issues raised by the manufacturing team. We deliver a written inventory of all Visibility workflows, automations, and custom reports that do not migrate as code. We do not rebuild these in Odoo; the inventory document goes to the customer's admin team or a chosen Odoo implementation partner.
Platform deep dives
Visibility 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 Visibility 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
Visibility ERP: Not publicly documented.
Data volume sensitivity
Visibility 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 Visibility ERP to Odoo ERP migration scoping. Not seeing yours? Book a call.
Walk through your Visibility 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 Visibility 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.