CRM migration
Field-level mapping, validation, and rollback between Total Control Pro and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Total Control Pro
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Total Control Pro and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Total Control Pro to Odoo CRM is a platform-family transition from a manufacturing-focused MES into an open-source ERP with a modular CRM layer. Total Control Pro stores customer and supplier records as structured entities with contact details and account terms, which map directly to Odoo res.partner records differentiated by the customer_rank and supplier_rank flags. Product definitions map to product.template, and any quality check results associated with production runs attach as custom fields on the migrated Work Order equivalent. Because Total Control Pro does not publish a public REST or bulk API, we extract data through vendor-assisted CSV exports scoped per module, sequencing Work Orders and Bills of Materials by creation date to preserve the production timeline. Odoo CRM does not have a native Manufacturing Intelligence Module equivalent; MIM-derived KPIs (OEE, cycle time, scrap rates) are delivered as structured CSV alongside the transactional migration for ingestion by Odoo's reporting engine or an external BI tool. Workflows, automation rules, and integration configurations from Total Control Pro do not migrate as code; we deliver a written inventory for your Odoo admin to rebuild using Odoo Studio or a certified partner.
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 Total Control Pro object lands in Odoo CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Total Control Pro
Customer
Odoo CRM
res.partner (customer role)
1:1Total Control Pro Customer records map to Odoo res.partner with type='contact' and customer_rank set to 1. Customer name becomes partner name, contact details map to street, city, email, and phone fields, and account terms map to property_payment_term_id. We deduplicate by email and flag records with duplicate email addresses for manual resolution before insert. Customer country and state map to the Odoo res.country and res.country.state lookup tables by code match.
Total Control Pro
Supplier
Odoo CRM
res.partner (supplier role)
1:1Total Control Pro Supplier records map to Odoo res.partner with type='contact' and supplier_rank set to 1. Supplier part supply links and lead times map to seller_ids on product.template for purchase pricing, and to property_supplier_payment_term_id on the supplier partner record. Suppliers with both customer and supplier roles in Total Control Pro receive a single res.partner with both customer_rank and supplier_rank set to 1.
Total Control Pro
Product
Odoo CRM
product.template
1:1Total Control Pro Product definitions (part numbers, descriptions, unit of measure) map to Odoo product.template. The part number becomes default_code, description becomes name and description_sale, and the unit of measure maps to uom_id and uom_po_id by name match against the Odoo uom.uom table. Products marked as manufactured in Total Control Pro will also have a corresponding mrp.bom if Odoo MRP is in scope.
Total Control Pro
Bill of Materials
Odoo CRM
mrp.bom
1:1Bills of Materials map to Odoo mrp.bom only if the Odoo MRP module is licensed and in scope. Each BOM revision in Total Control Pro is evaluated for active status at migration cutoff; the most recent approved revision per product becomes the active Odoo BOM. Multi-level BOMs are expanded and components mapped to product.template by part number match. If Odoo MRP is not licensed, BOMs are delivered as a structured CSV with component quantities, revision numbers, and product links for post-migration import.
Total Control Pro
Work Order
Odoo CRM
mrp.workorder (if MRP in scope) or crm.lead custom fields
1:1Work Orders map to Odoo mrp.workorder only if the MRP module is active. If Odoo CRM-only is the destination, Work Orders are delivered as a structured CSV with work order number, product, operation sequence, status, assigned operations, and timestamps, and any required manufacturing context is stored as custom fields on the nearest Odoo CRM record (Customer or Product). Work Order status maps to the Odoo done, cancelled, and in_progress states.
Total Control Pro
Quality Check
Odoo CRM
mrp.workorder quality_notes (if MRP) or crm.lead custom fields
1:1Quality Check results from Total Control Pro associate to parent Work Orders or Production Runs. If Odoo MRP is in scope, inspection results and non-conformance records map to mrp.workorder quality notes fields or to a dedicated quality.check model if the quality_mrp module is active. If MRP is out of scope, Quality Check data attaches to the corresponding res.partner or product.template via custom fields with a qc_ prefix.
Total Control Pro
Inventory (snapshot)
Odoo CRM
stock.quant
1:1Current stock levels, bin locations, and lot numbers from Total Control Pro map to Odoo stock.quant as a snapshot at migration cutoff. Live inventory movements during migration are queued in a staging table and replayed post-cutover to avoid discrepancy. Bin locations map to stock.location by name match against the Odoo location hierarchy. Lot and serial numbers map to stock.production.lot if lot tracking is enabled on the product.
Total Control Pro
Production Schedule
Odoo CRM
mrp.production (if MRP) or project.project
1:1Production schedules including operation sequences and due dates map to Odoo mrp.production (if MRP is active) or to project.project as manufacturing-themed projects (if CRM-only). Constraint flags and priority overrides migrate as project priority fields or custom fields. Scheduling data that requires Odoo MRP's finite capacity scheduling is out of scope unless MRP is licensed.
Total Control Pro
Manufacturing Intelligence KPIs (MIM)
Odoo CRM
External CSV or reporting module custom fields
lossyThe Manufacturing Intelligence Module stores OEE, cycle time, and scrap rates as time-series data in a proprietary format not exposed in standard exports. We request a targeted MIM module export scoped to the customer's date range, normalize rows into a structured CSV with timestamp, metric name, metric value, and associated product or work order reference, and deliver it alongside the transactional migration. Odoo does not have a native time-series KPI store in the CRM module; the customer ingests the CSV into Odoo reporting or an external BI tool.
Total Control Pro
Custom Fields
Odoo CRM
ir.model.fields (custom)
lossyTotal Control Pro user-defined fields added during implementation are enumerated during the discovery call. For Odoo, custom fields are created in Settings > Technical > User-defined Fields with the appropriate field type (char, float, integer, date, selection, etc.) and model targeting res.partner, product.template, or crm.lead depending on the field's parent object. If Odoo MRP is in scope, custom fields on Work Orders map to mrp.workorder. Odoo custom fields are tied to the database and require Odoo version compatibility verification; we confirm the Odoo major version before deployment.
Total Control Pro
Attachments
Odoo CRM
ir.attachment (document storage)
lossyDocument attachments (drawings, SOPs, inspection images) stored in Total Control Pro's file store do not have a documented export endpoint. We flag these for manual transfer during a documented cutover window and advise using Odoo's document management module (documents module with attachments on partners, products, or projects) as the destination store. The customer receives a file manifest listing attachment names, associated records, and recommended Odoo folder structure.
Total Control Pro
Owner
Odoo CRM
res.users
1:1Total Control Pro owner assignments on Work Orders, Quality Checks, and customer records map to Odoo res.users by email match. Any Total Control Pro owner without a matching Odoo user goes to a reconciliation queue for the customer's admin to provision before record import resumes. Owner IDs on migrated records are set after user provisioning is confirmed.
| Total Control Pro | Odoo CRM | Compatibility | |
|---|---|---|---|
| Customer | res.partner (customer role)1:1 | Fully supported | |
| Supplier | res.partner (supplier role)1:1 | Fully supported | |
| Product | product.template1:1 | Fully supported | |
| Bill of Materials | mrp.bom1:1 | Fully supported | |
| Work Order | mrp.workorder (if MRP in scope) or crm.lead custom fields1:1 | Fully supported | |
| Quality Check | mrp.workorder quality_notes (if MRP) or crm.lead custom fields1:1 | Fully supported | |
| Inventory (snapshot) | stock.quant1:1 | Fully supported | |
| Production Schedule | mrp.production (if MRP) or project.project1:1 | Fully supported | |
| Manufacturing Intelligence KPIs (MIM) | External CSV or reporting module custom fieldslossy | Fully supported | |
| Custom Fields | ir.model.fields (custom)lossy | Mapping required | |
| Attachments | ir.attachment (document storage)lossy | Not supported | |
| Owner | 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.
Total Control Pro gotchas
No documented public API for data export
BOM revision history requires explicit scoping
Manufacturing Intelligence Module KPIs stored as opaque time-series
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Discovery and vendor coordination
We audit Total Control Pro across every module in scope: customer and supplier record counts, product definitions, active BOM revisions, Work Order history volume, Quality Check records, MIM KPI date range, and any custom fields created during implementation. We simultaneously request a vendor cooperation letter for database export access or confirm the scope of available CSV exports. We verify the target Odoo edition (Community or Enterprise), installed apps (CRM, MRP, Inventory), and Odoo version. The discovery output is a written migration scope document listing every object, its estimated record count, and the export method confirmed with the vendor.
Schema design in Odoo
We design the destination schema in Odoo. This includes creating custom fields on res.partner (customer and supplier roles), product.template (custom fields for Total Control Pro attributes), crm.lead (for any manufacturing-context fields like preferred production line or MOQ), and mrp.workorder if MRP is in scope. We create the Odoo custom field migration module with XML definitions for durability. We verify Odoo version compatibility for all custom field types and confirm the Odoo database is in a state ready to receive imports before production migration begins.
BOM revision reconciliation
We extract all BOM records from Total Control Pro with revision numbers and approval timestamps. We identify the most recent approved revision per product and present the list to the customer for confirmation. Any BOM without an approval timestamp or with conflicting revisions goes to a manual resolution queue. We also identify multi-level BOM structures and flatten or nest them per the customer's Odoo MRP configuration preference. The confirmed BOM list becomes the authoritative import set.
Partner and product import with dedupe
We import Customers and Suppliers into res.partner in a single pass, setting customer_rank and supplier_rank based on the record type in Total Control Pro. Deduplication runs by email for contacts and by name for companies. We import Products into product.template, matching UoM by name against the Odoo uom.uom table. Any unmatched UoMs are flagged for the customer to configure in Odoo before import resumes. Custom fields on products migrate as product.template custom fields. Owner assignments resolve by email match to res.users; any unresolved owners go to the reconciliation queue.
Work Order, Quality Check, and MIM KPI export
We sequence Work Orders by creation date to preserve the production timeline. Work Orders migrate to mrp.workorder (if MRP is in scope) or to a structured CSV (if CRM-only) with all operational fields and parent-product references. Quality Check records attach to their parent Work Order or Production Run via the migration reference. MIM KPI time-series exports are chunked into date-bounded CSV files with normalized column headers and delivered alongside the transactional migration as a separate analytics dataset.
Production cutover and integration inventory handoff
We freeze Total Control Pro writes during the cutover window, run a final delta export of any records modified after the initial export, replay inventory movements from the staging queue, and enable Odoo as the system of record. We deliver the integration and automation inventory document to the customer's Odoo admin. We support a one-week hypercare window for reconciliation issues. We do not rebuild Total Control Pro integrations or automation rules as Odoo workflows inside the migration scope; those are a separate engagement with an Odoo certified partner.
Platform deep dives
Total Control Pro
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM 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 Total Control Pro and Odoo CRM.
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
Total Control Pro: Not publicly documented — typical SaaS limits assumed and confirmed during scoping..
Data volume sensitivity
Total Control Pro 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 Total Control Pro to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Total Control Pro to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Total Control Pro
Other ways to arrive at Odoo CRM
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.