CRM migration
Field-level mapping, validation, and rollback between Centrium CRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Centrium CRM
Source
Odoo CRM
Destination
Compatibility
9 of 12
objects map 1:1 between Centrium CRM and Odoo CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Centrium CRM to Odoo CRM is a structural migration that expands a lightweight cloud CRM into a modular ERP-backed CRM platform. Centrium stores organizations as contacts marked with an organization flag; Odoo separates these into Contact and Partner (Company) records, which means the migration must split flagged contacts, create the corresponding Partner records in Odoo, and re-link the Contact records before import. Centrium exposes no public API, so all data extraction relies on manual CSV and XLSX exports from the Centrium UI, which we normalize into a common schema before Odoo import. Deal status in Centrium is flat (won/open/lost) with no stage history, which we map to the nearest Odoo pipeline stage and flag as a data completeness disclosure. We do not migrate Centrium permissions (team-level only, no RBAC equivalent), workflows, or reports; these require manual rebuild in Odoo after cutover. Custom fields and custom objects migrate via Odoo Studio field definitions created before the data load phase.
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 Centrium CRM 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.
Centrium CRM
Contact (individual)
Odoo CRM
Contact
1:1Centrium Contact records with no organization flag migrate directly to Odoo Contact. We map name fields (first_name, last_name), email address, phone number, address fields, and any custom fields stored on the contact record. Owner assignment maps to an Odoo User record resolved by email match. If the source contact has no email, we generate a placeholder and flag it for the customer's admin to complete post-migration.
Centrium CRM
Contact (organization-flagged)
Odoo CRM
Partner (Company) + Contact
1:manyCentrium Contact records marked with an organization flag are identified during preprocessing and split into two operations: first we create the Odoo Partner (res.partner) record with the company name, address, and organization-level custom fields; then we create the Odoo Contact record linked to that Partner with a child-contact relationship. The original Centrium contact email becomes the Partner's email if no other contact at that domain has been migrated yet. This split is the primary preprocessing step that can extend timelines for accounts with large organization lists.
Centrium CRM
Deal
Odoo CRM
Opportunity (crm.lead)
1:1Centrium Deals map to Odoo CRM Opportunities (crm.lead records with type = opportunity). The Centrium deal status (won/open/lost) maps to the nearest Odoo stage: won maps to Won, lost maps to Lost, and open maps to the first stage in the customer's Odoo pipeline. We preserve the deal name, amount, expected closing date, and associated contact/partner links. Note that Centrium's flat status does not carry intermediate stage history to Odoo; we flag this as a data completeness disclosure in the validation report.
Centrium CRM
Deal Stage
Odoo CRM
Pipeline Stage
lossyCentrium uses a fixed three-status deal model. We configure an Odoo pipeline with at minimum a qualification stage, a proposal stage, and a negotiation stage, plus Won and Lost terminals. If the customer already has a multi-stage Odoo pipeline configured, we map the Centrium open status to the stage closest to mid-pipeline rather than the first stage. Stage probability percentages default to Odoo's standard values unless the customer provides historical win rates to calibrate.
Centrium CRM
Task
Odoo CRM
Task (project.task)
1:1Centrium Tasks map to Odoo Project Tasks. We transfer the task name, description, due date, assigned user (resolved by email match to Odoo User), and completion status. Open tasks migrate with their current state preserved. Closed tasks migrate with a Completed stage marker. Tasks linked to a specific Contact or Deal in Centrium carry the same Odoo record link in the destination.
Centrium CRM
Project
Odoo CRM
Project
1:1Centrium Projects are lightweight containers for tasks and contacts. They map to Odoo Project records. We transfer the project name, associated tasks (via the task migration above), and the linked Contact/Partner records. Any project-level metadata beyond name and membership (such as project status or budget fields) requires Odoo Studio field creation before migration or is noted as a gap for manual post-migration entry.
Centrium CRM
Note
Odoo CRM
Note (mail.message)
1:1Centrium Notes attached to contacts, deals, or projects migrate to Odoo internal notes on the equivalent record. We transfer the full note body and preserve the parent-object association (Contact, Partner, or Opportunity). Notes are not threaded in Centrium, and Odoo internal notes are flat, so no threading reconstruction is needed. Attachments within notes migrate as Odoo attachments linked to the same parent record.
Centrium CRM
Custom Field
Odoo CRM
Custom Field (via Odoo Studio)
lossyCentrium custom fields store as property maps in the export. We extract the field definition and values per record during the extract phase. Before the import phase, we create the corresponding fields in Odoo using Odoo Studio (field name, type, and placement on the form view). Once the schema is deployed, we apply the values during the standard record import. Fields that have no Odoo equivalent (e.g., select options that exceed Odoo's picklist limits) are flagged for the customer's admin to resolve.
Centrium CRM
User / Team Member
Odoo CRM
User
1:1Centrium user records (name, email) map to Odoo User accounts resolved by email address. We extract every distinct user referenced on Contact, Deal, Task, and Project records. Users without a matching Odoo account are placed in a reconciliation queue for the customer's admin to provision before record import. Inactive source users migrate as inactive Odoo users so that historical assignment is preserved even if the user account is not reactivated.
Centrium CRM
Attachment
Odoo CRM
Attachment (ir.attachment)
1:1Centrium stores file attachments against contacts, deals, and projects. Because Centrium exposes attachments through the UI but not through an API, we scope attachment retrieval during discovery. If the total attachment volume is accessible via the UI export, we include it in the migration. If the attachment volume exceeds the destination storage allocation, we flag this before cutover and recommend either purchasing Odoo storage or archiving attachments externally. Odoo Enterprise includes dedicated document management; Odoo Community relies on file system storage which may have hosting-provider limits.
Centrium CRM
Permissions
Odoo CRM
None
1:1Centrium's team-level permission model has no granular RBAC equivalent and does not map to Odoo's access rights and record rules. We set all migrated records to be owned by the importing admin account. The customer's Odoo admin rebuilds access groups and record rules post-migration using Odoo's native access control interface. This is documented as a manual post-migration step in the handoff report.
Centrium CRM
Report
Odoo CRM
None
1:1Centrium reports are pre-built summary views generated on-demand and are not stored as exportable data objects. We do not migrate historical report outputs. Reporting must be rebuilt in Odoo using its native reporting and dashboard tools (available from the Starter app). We deliver a written list of the Centrium report names and their approximate data sources so the customer's admin can reconstruct them in Odoo.
| Centrium CRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact (individual) | Contact1:1 | Fully supported | |
| Contact (organization-flagged) | Partner (Company) + Contact1:many | Fully supported | |
| Deal | Opportunity (crm.lead)1:1 | Fully supported | |
| Deal Stage | Pipeline Stagelossy | Fully supported | |
| Task | Task (project.task)1:1 | Fully supported | |
| Project | Project1:1 | Fully supported | |
| Note | Note (mail.message)1:1 | Fully supported | |
| Custom Field | Custom Field (via Odoo Studio)lossy | Fully supported | |
| User / Team Member | User1:1 | Fully supported | |
| Attachment | Attachment (ir.attachment)1:1 | Fully supported | |
| Permissions | None1:1 | Not supported | |
| Report | None1: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.
Centrium CRM gotchas
No public API forces manual export-based migration
Storage cap creates hard migration boundary for file-heavy accounts
Permission system does not translate to standard RBAC
Contact-company relationship uses a flag, not a distinct object
Deal stage history is flat — no intermediate milestone records
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 export scoping
We audit the source Centrium account to scope record volumes (Contacts by type, Deals, Tasks, Projects, Notes), total attachment size, custom field definitions, and the distinct user list. We scope the export work the customer must perform manually from the Centrium UI (CSV and XLSX grouped by object), set export file naming conventions, and define the delivery deadline before the migration window begins. We simultaneously review the Odoo destination: edition (Community free vs Online/Enterprise paid), existing pipeline configuration, and storage allocation.
Organization-flag preprocessing and Partner split
We preprocess the exported Contact file to identify records with the organization flag. These flagged records are split into two datasets: one for Odoo Partner (res.partner) creation and one for Odoo Contact creation as child records. The split uses the organization name as the Partner name and the original contact email as the Partner email where applicable. This step is the primary preprocessing effort and must be validated before any import phase begins. We run a deduplication pass on both Partner and Contact datasets using email address as the primary key.
Odoo field schema preparation
We review the Centrium custom field definitions and create the corresponding Odoo fields using Odoo Studio before any data import. For each custom field, we map the Centrium field name to an Odoo field name (conforming to Odoo's naming constraints), select the appropriate field type, and place the field on the correct form view (Contact, Partner, Opportunity, or Task). We also configure the Odoo pipeline stages to map from Centrium's flat status (won/open/lost) to the appropriate Kanban stages, setting stage probability percentages and pipeline sequence order.
Sandbox migration and reconciliation
We run a full migration into an Odoo test environment (Sandbox or staging database) using production-like data volume. The customer's admin reconciles record counts (Contacts in, Partners in, Opportunities in, Tasks in), spot-checks 25-50 random records against the Centrium source data, and validates that the Partner-Contact relationship is correctly established for organization-flagged records. Mapping corrections and field type adjustments happen here. We do not proceed to production migration until the customer signs off on the sandbox reconciliation report.
Owner reconciliation and user provisioning
We extract every distinct user referenced in the Centrium export (as Deal owner, Task assignee, or Project member) and match by email against the destination Odoo instance's User table. Any Odoo User record that does not exist is placed in a reconciliation queue. The customer's Odoo admin provisions the missing users (active or inactive depending on whether the original Centrium user is still active) before the production migration begins. This is a manual step requiring admin action; we cannot proceed past Partner and Contact import without OwnerId references resolved.
Production migration in dependency order
We run production migration in dependency order: Partners (from organization-flagged contacts) first, then Contacts, then Opportunities (with PartnerId resolved), then Tasks (with UserId resolved), then Projects (with linked tasks), then Notes, and finally Attachments. Each phase emits a row-count reconciliation report. The migration uses Odoo's native data import interface (CSV/Excel) for standard records. Attachments that are downloadable via the Centrium UI are uploaded as Odoo ir.attachment records linked to the correct parent record.
Cutover, validation, and automation rebuild handoff
We freeze Centrium writes during the cutover window, run a final delta import of any records modified during the migration window, then enable Odoo as the system of record. We deliver a written inventory of Centrium automations (none exist in Centrium natively, but any external tools the customer used for follow-up will need to be reconfigured to point to Odoo's API) and the Centrium report list with data source mapping for Odoo reconstruction. We support a one-week hypercare window where we resolve any reconciliation issues. We do not rebuild Odoo Automated Actions or Studio Workflows inside the migration scope; these are documented separately for the customer's admin to configure.
Platform deep dives
Centrium CRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM 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 Centrium CRM and Odoo CRM.
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
Centrium CRM: Not publicly documented.
Data volume sensitivity
Centrium CRM 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 Centrium CRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Centrium CRM 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 Centrium CRM
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.