CRM migration

Migrate from CaseManager to Odoo CRM

Field-level mapping, validation, and rollback between CaseManager and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

CaseManager logo

CaseManager

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between CaseManager and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

CaseManager logo

CaseManager

What's pushing teams away

  • Pricing is opaque and perceived as unfavorable by customers who want cost transparency before committing to a multi-year subscription.
  • Glitches in progress tracking cause data integrity concerns, with reviewers reporting that logged time sometimes fails to persist correctly.
  • The platform lacks modern automation and integration capabilities, pushing growing law firms toward more connected legal tech stacks.
  • No mobile app or real-time sync means attorneys working remotely cannot access or update case files without desktop access.
  • Support responsiveness and feature roadmap are not clearly communicated, leading long-term users to feel the product is stagnant.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How CaseManager objects map to Odoo CRM

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

maps to

Odoo CRM

crm.lead

1:1
Fully supported

CaseManager 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

maps to

Odoo CRM

crm.stage

1:1
Fully supported

CaseManager 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

maps to

Odoo CRM

res.partner

1:1
Fully supported

CaseManager 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

maps to

Odoo CRM

res.partner (is_company=True)

1:1
Fully supported

CaseManager 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

maps to

Odoo CRM

res.partner child_ids / contact_id

many:1
Fully supported

CaseManager 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

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

CaseManager 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)

maps to

Odoo CRM

mail.message / mail.activity

1:1
Fully supported

CaseManager 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

maps to

Odoo CRM

crm.lead.user_id (res.users)

1:1
Fully supported

CaseManager 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

maps to

Odoo CRM

crm.lead.priority

1:1
Fully supported

CaseManager 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)

maps to

Odoo CRM

crm.lead x_studio_* or ir.model.fields

1:1
Fully supported

CaseManager 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

maps to

Odoo CRM

crm.lead.name or x_casemanager_case_number

1:1
Fully supported

CaseManager'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

maps to

Odoo CRM

Not migrated

1:1
Fully supported

CaseManager 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.

Gotchas + challenges

What specifically takes care here

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 logo

CaseManager gotchas

High

No documented public API for bulk data extraction

High

Progress-tracking timestamps fail to persist in some records

Medium

Custom fields vary by firm configuration with no schema registry

Medium

Attachments and document blobs are not included in CSV exports

Low

Pricing is opaque and not available on the vendor website

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Case-to-lead split requires Odoo type-field decision at migration time

    CaseManager cases do not distinguish between pre-sale leads and post-sale opportunities. Odoo crm.lead uses a type field (lead vs opportunity) to separate these states, and changing type after creation is restricted in Odoo. We set type='lead' for all migrated cases by default and flag closed-won cases for type='opportunity' based on CaseManager status. If your team needs lead/opportunity separation, the type assignment must be decided before migration runs — we cannot retroactively split a crm.lead into a separate opportunity without data duplication.

  • Odoo XML-RPC rate limits require batch throttling during migration

    Odoo's XML-RPC API enforces request throttling that varies by hosting plan. Odoo Online and Odoo.sh limit concurrent requests and total daily calls; self-hosted Odoo depends on server resources. FlitStack AI implements batch throttling with configurable delay between requests to stay within Odoo's rate ceiling. Large attachments (over 25MB) require chunked upload via Odoo's /web/binary/upload_attachment endpoint. We surface any 403 or 429 errors as migration warnings and retry affected records automatically.

  • res.partner deduplication handles multi-company contacts differently than CaseManager

    CaseManager allows a single contact to be associated with multiple companies. Odoo res.partner models this with parent_id pointing to one primary company and Account Contact Relationships for additional affiliations. We migrate one primary company per contact (most-recently-modified in CaseManager, or by your specified rule) and surface the rest as contact relationships. If CaseManager allows a contact to be primary at multiple companies simultaneously, those secondary associations require manual reconciliation in Odoo after migration.

  • Custom fields require Odoo field creation before data migration

    CaseManager custom fields on cases (client_type, practice_area, billing_code, etc.) have no native Odoo equivalent and must be created as custom fields on crm.lead before migration. Odoo custom fields use x_ prefix by default or _stadio_ prefix if Odoo Studio is active. We deliver a field creation plan listing field name, Odoo field type, and any pick-list values. Fields not created before migration are flagged in the pre-flight report and migrated as x_custom_field_name__c text fields for post-migration cleanup.

  • CaseManager document links require Odoo attachment migration sequencing

    CaseManager attachments linked to cases must migrate after crm.lead records are created so ir.attachment records can reference the correct res_id. If a case fails migration, its attachments are held in a retry queue until the case record succeeds. We use Odoo's ir.attachment create method via XML-RPC, which requires the target record to exist first. Circular references (documents attached to documents) are flattened — the innermost document migrates and child attachments are linked to it.

Migration approach

Six steps for a successful CaseManager to Odoo CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

CaseManager logo

CaseManager

Source

Strengths

  • Per-case CSV export provides a manual but accessible data extraction path for attorneys.
  • Time-stamped work logging satisfies basic billing justification requirements for small law practices.
  • Document digitization converts physical case files into searchable electronic records.
  • Simple per-case interface reduces training time for paralegal and administrative staff.

Weaknesses

  • No public API means all migration work requires custom engineering against undocumented export formats.
  • Progress-tracking glitches reported in G2 reviews indicate potential data integrity issues in source records.
  • Pricing model is not publicly documented, complicating renewal and migration cost planning.
  • No bulk export capability means each case must be manually triggered for export in the UI.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across CaseManager and Odoo CRM.

  • Object compatibility

    B

    2 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    CaseManager: Not publicly documented.

  • Data volume sensitivity

    B

    CaseManager doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your CaseManager to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about CaseManager to Odoo CRM data migrations

Answers to the questions buyers ask most during CaseManager to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most CaseManager-to-Odoo migrations complete in 48–72 hours for under 50,000 records. Larger setups with 500,000+ records, deep activity histories, or many custom fields extend to 5–7 days. The pre-migration phase — Odoo custom field creation and pipeline configuration — typically takes 1–3 days and runs in parallel with migration planning. Total project duration from kickoff to go-live is usually 2–3 weeks.

Adjacent paths

Related migrations to explore

Ready when you are

Move from CaseManager.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day