CRM migration
Field-level mapping, validation, and rollback between CaseManager and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
CaseManager
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between CaseManager and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
CaseManager organizes work around Cases — discrete work items with associated contacts, documents, and activity logs. Odoo CRM models the same data using crm.lead (which handles both Lead and Opportunity records via the type field) and res.partner for all contacts and companies. The migration must translate CaseManager's case-centric structure into Odoo's pipeline-driven opportunity model while preserving relationships to partners, activities, and attachments. We map CaseManager cases to crm.lead records, contacts to res.partner entries, and documents to Odoo ir.attachment records. Case status values require value-by-value mapping to Odoo crm.stage stages. Owner resolution happens via email match against Odoo res.users. Workflows, automations, and custom scripts in CaseManager do not migrate — we export definitions as rebuild references for your Odoo administrator. We use Odoo's XML-RPC API to write data, respecting rate limits and handling batch operations correctly. A delta-pickup window captures any records modified during cutover so Odoo reflects CaseManager's final state at go-live.
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 CaseManager 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.
CaseManager
Case
Odoo CRM
crm.lead
1:1CaseManager cases map 1:1 to Odoo crm.lead records. The crm.lead type field (lead/opportunity) is set based on CaseManager case status — Closed Won maps to opportunity, others default to lead. Original case create_date preserved as a custom field since Odoo's create_date reflects migration time.
CaseManager
Case Status
Odoo CRM
crm.stage
1:1CaseManager status values (Open, Pending, In Review, Closed) map to Odoo crm.stage records by name. Each status requires a corresponding stage in the Odoo pipeline. Stage sequence order is preserved from CaseManager's status flow. Closed cases map to a terminal stage with probability 100%.
CaseManager
Contact
Odoo CRM
res.partner
1:1CaseManager contacts map to Odoo res.partner records. The is_company flag is set false for person contacts. Email, phone, mobile, and address fields map directly. Partner records are created before crm.lead records so the partner_id lookup resolves correctly during migration. We also handle contact name splitting, parsing full names into firstname and lastname fields where CaseManager stores them as a single field.
CaseManager
Company
Odoo CRM
res.partner (is_company=True)
1:1CaseManager company records map to Odoo res.partner with is_company=True. Company name maps to partner name. Domain/website maps to website field. Industry, employee count, and revenue map to industry_id, employee_count, and revenue fields respectively if custom fields are configured in Odoo.
CaseManager
Contact-Company Association
Odoo CRM
res.partner child_ids / contact_id
many:1CaseManager links contacts to companies via a relationship field. In Odoo, contacts are child partners of the company partner record. We create the company partner first, then link contacts as child_ids with contact=True. Each contact also stores parent_id to the company partner.
CaseManager
Document / Attachment
Odoo CRM
ir.attachment
1:1CaseManager file attachments migrate to Odoo ir.attachment records with res_model='crm.lead' and res_id set to the target crm.lead ID. Files are downloaded from CaseManager's storage and uploaded to Odoo's filestore via the XML-RPC API. Inline images in case notes are extracted and attached separately. Large files exceeding Odoo's upload limit are chunked using the /web/binary/upload_attachment endpoint.
CaseManager
Activity Log (Call, Email, Note)
Odoo CRM
mail.message / mail.activity
1:1CaseManager logged activities (calls, emails, notes) map to Odoo mail.message records linked to the crm.lead. Call logs become mail.message with msg_type='notification'. Emails are stored as mail.message with email_from populated. Notes become mail.message with subtype='comment'. Original timestamps and authors preserved. Activity subject lines map to the mail.message subject field, and any attachments on activities are migrated as separate ir.attachment records linked to the mail.message.
CaseManager
Case Owner / Assigned User
Odoo CRM
crm.lead.user_id (res.users)
1:1CaseManager case owner ID is resolved by matching the owner's email address to Odoo res.users records. Unmatched owners are flagged before migration — you either invite them to Odoo first or reassign their records to a fallback user. No crm.lead lands without a valid user_id.
CaseManager
Case Priority
Odoo CRM
crm.lead.priority
1:1CaseManager priority values (Low, Medium, High, Critical) map to Odoo crm.lead.priority using the standard star-rating system (0-4 scale in Odoo). We apply a mapping table: Low=1, Medium=2, High=3, Critical=4. Custom priority labels require Odoo custom field creation. If CaseManager uses a numeric priority scale instead of named levels, we convert the numeric values to the nearest Odoo star rating during migration.
CaseManager
Custom Fields (Case)
Odoo CRM
crm.lead x_studio_* or ir.model.fields
1:1CaseManager custom fields on cases require Odoo custom field creation before migration runs. We deliver a field creation plan specifying field name, type (char, selection, float, date), and default value. Custom field IDs are stored as x_casemanager_field_id__c for traceability after migration.
CaseManager
Case Number / Reference
Odoo CRM
crm.lead.name or x_casemanager_case_number
1:1CaseManager's case number/reference ID is preserved as crm.lead.name or as a custom field x_casemanager_case_number__c. Using a custom field avoids conflicts if Odoo's auto-naming sequence (LOGA/0001 format) is already in use. The original reference is critical for audit trails and linking back to source records.
CaseManager
Workflow / Automation Rules
Odoo CRM
Not migrated
1:1CaseManager workflows, assignment rules, and automated triggers do not transfer to Odoo. Odoo uses its own automation engine (Studio workflows, server actions, automated actions) with different trigger semantics. We export CaseManager workflow definitions as a document your Odoo admin can use as a rebuild reference.
| CaseManager | Odoo CRM | Compatibility | |
|---|---|---|---|
| Case | crm.lead1:1 | Fully supported | |
| Case Status | crm.stage1:1 | Fully supported | |
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner (is_company=True)1:1 | Fully supported | |
| Contact-Company Association | res.partner child_ids / contact_idmany:1 | Fully supported | |
| Document / Attachment | ir.attachment1:1 | Fully supported | |
| Activity Log (Call, Email, Note) | mail.message / mail.activity1:1 | Fully supported | |
| Case Owner / Assigned User | crm.lead.user_id (res.users)1:1 | Fully supported | |
| Case Priority | crm.lead.priority1:1 | Fully supported | |
| Custom Fields (Case) | crm.lead x_studio_* or ir.model.fields1:1 | Fully supported | |
| Case Number / Reference | crm.lead.name or x_casemanager_case_number1:1 | Fully supported | |
| Workflow / Automation Rules | Not migrated1: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.
CaseManager gotchas
No documented public API for bulk data extraction
Progress-tracking timestamps fail to persist in some records
Custom fields vary by firm configuration with no schema registry
Attachments and document blobs are not included in CSV exports
Pricing is opaque and not available on the vendor website
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
Audit CaseManager data model and export via CSV or API
We connect to CaseManager and enumerate all cases, contacts, companies, activities, and attachments. We generate a data inventory report listing record counts per object, custom field definitions, and attachment sizes. This report identifies any data that requires custom field creation in Odoo before migration runs. We also extract CaseManager workflow and automation definitions as a rebuild reference document for your Odoo administrator.
Create Odoo custom fields and configure pipeline stages
Before data moves, your Odoo admin (or our team) creates the custom fields on crm.lead and res.partner identified in the data audit. We deliver a field creation plan specifying Odoo field names, types, and pick-list values. Pipeline stages in Odoo are configured to match CaseManager status values so stage names align during migration. Owner resolution tests are run against Odoo res.users to flag unmatched case assignees.
Migrate partners before cases to resolve foreign-key dependencies
Odoo requires res.partner records to exist before crm.lead records can reference them via partner_id. We sequence the migration: companies first (res.partner with is_company=True), then contacts with parent_id linking to companies, then crm.lead records with user_id resolved by email match. Activities and attachments migrate after their parent records, in dependency order. Any failed records are retried in a second pass before the full migration commits.
Run sample migration with field-level diff
A representative slice of 100–500 records migrates first — spanning cases across different statuses, contacts with multiple company associations, and records with attachments. We generate a field-level diff comparing source values to Odoo field values so you can verify priority mapping, stage mapping, and owner resolution before the full run. Custom field mapping is validated against the sample set. This pilot run also tests attachment migration stability and identifies any records that fail due to missing foreign-key dependencies or malformed data.
Execute full migration with delta-pickup cutover window
The full migration runs against Odoo's XML-RPC API with batch throttling to respect rate limits. After the primary run completes, a delta-pickup window (typically 24–48 hours) captures any CaseManager records created or modified during cutover. All operations are logged in an audit report. One-click rollback reverts Odoo to its pre-migration state if reconciliation reveals data integrity issues. We perform a final reconciliation count against CaseManager record totals before sign-off.
Platform deep dives
CaseManager
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 CaseManager 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
CaseManager: Not publicly documented.
Data volume sensitivity
CaseManager 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 CaseManager to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your CaseManager 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 CaseManager
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.