CRM migration

Migrate from MerusCase to Odoo CRM

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

MerusCase logo

MerusCase

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between MerusCase and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

MerusCase structures its data around legal cases: parties, activities, ledgers, settlements, and up to 50 custom fields per case. Odoo CRM uses crm.lead for opportunities (cases land as opportunities) and res.partner for contacts and companies, with custom fields stored via Odoo's field-creation API. The migration carries all standard case data — case numbers, party names, damages, settlement amounts, case-type tabs, and case-specific custom fields — into Odoo CRM's opportunity model and partner contacts. Activities (calls, emails, notes) migrate as Odoo CRM activities linked to the opportunity. We map MerusCase party roles (plaintiff, defendant, opposing counsel, insurance carrier) to Odoo CRM partner tags and custom partner fields. Custom fields of all five MerusCase types (Date, Currency, Text, Numeric, Yes/No) create equivalent custom fields in Odoo. Workflows, automations, and document templates do not migrate — those must be rebuilt using Odoo Studio or the Automate menu. The migration uses Odoo's XML-RPC API with batch upsert to handle the relational integrity between opportunities and partners.

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

MerusCase logo

MerusCase

What's pushing teams away

  • Annual subscription required — payments must be made annually in advance unless a separate Order Form is negotiated.
  • Per-case Document Archive is the primary data export path; there is no one-click full firm data dump, making migrations out manual and time-consuming.
  • Credit card payments incur a 3% transaction fee plus variable network fees deducted monthly, adding cost for high-volume billing firms.
  • Third-party migrations (moving away from MerusCase) are not supported by MerusCase's own migration team — the firm must handle or hire independently.
  • Built-in CSV import tools are documented as not easy to use, pushing firms toward paid white-glove onboarding for any data loading.

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 MerusCase objects map to Odoo CRM

Each row shows how a MerusCase 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.

MerusCase

Case (CaseFile)

maps to

Odoo CRM

crm.lead (Opportunity)

1:1
Fully supported

MerusCase cases map to Odoo CRM opportunities. The case number becomes opportunity name with the case type appended. Original create date and last-modified date preserve as custom datetime fields since Odoo sets CreateDate at migration time. Case status maps to Odoo CRM stage_id via value_mapping per case type.

MerusCase

Contact (Party)

maps to

Odoo CRM

res.partner

1:1
Fully supported

MerusCase party contacts map to Odoo res.partner records. The party's role in the case (plaintiff, defendant, opposing counsel) migrates as partner tags and a custom selection field on the partner record. Primary contact email, phone, and address fields map directly to Odoo partner fields.

MerusCase

Company (Insurance Carrier)

maps to

Odoo CRM

res.partner (company_type=company)

1:1
Fully supported

Insurance carriers and employer entities from MerusCase map to res.partner records with company_type set to 'company'. The carrier's claims address and contact name become Odoo partner address and contact fields. Carrier-specific claim limits or policy references store as custom fields on the partner.

MerusCase

Activity (Call/Email/Note)

maps to

Odoo CRM

crm.activity / mail.message

1:1
Fully supported

MerusCase activities attached to a case migrate as Odoo CRM activities linked to the crm.lead. Call activities create crm.activity records with activity_type_id set to Phone Call. Emails create mail.message records threaded to the opportunity. Original timestamps and staff owner IDs preserve via custom datetime fields and user email matching.

MerusCase

Custom Field (Date, Currency, Text, Numeric, Yes/No)

maps to

Odoo CRM

ir.model.fields (custom x_ fields)

1:1
Fully supported

MerusCase custom fields create equivalent custom fields in Odoo CRM via ir.model.fields. Date types use ttype=date, Currency uses ttype=monetary (linked to res.currency), Text uses ttype=text, Numeric uses ttype=float or integer, Yes/No uses ttype=boolean. The custom field is created on crm.lead before migration; field labels preserve the MerusCase field name.

MerusCase

CaseLedger (Time Entry, Expense, Damages)

maps to

Odoo CRM

account.move.line or Custom Fields on crm.lead

1:1
Fully supported

MerusCase ledger entries with task_code, activity_code, and expense_code map to a combination of Odoo CRM custom fields on the opportunity and optionally account.move.line records if Odoo Accounting is active. Damages and settlement amounts store as monetary custom fields on the crm.lead for reporting continuity.

MerusCase

CaseType (Practice Area Tab)

maps to

Odoo CRM

crm.lead (via custom stage or tag per case type)

1:1
Fully supported

MerusCase case types (Workers' Comp, Personal Injury, Criminal, Employment) map to Odoo CRM pipeline stages or custom tags on the opportunity. A firm running Workers' Comp cases and Personal Injury cases in separate pipelines gets separate Odoo CRM sales teams and stage sets per case type.

MerusCase

Attachment / Document

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

MerusCase documents attached to cases (PDFs, scanned filings, medical records) are re‑uploaded to Odoo CRM as ir.attachment records linked to the corresponding crm.lead using the original case number as the matching key. File size limits apply per Odoo configuration; for archives exceeding typical thresholds, FlitStack can leverage Odoo’s external storage options or split uploads into manageable chunks. Original document names and upload timestamps are preserved in the attachment metadata for auditability.

MerusCase

Staff / User

maps to

Odoo CRM

res.users

1:1
Fully supported

MerusCase staff members (attorneys, paralegals, admins) resolve to Odoo res.users by matching the email address stored in MerusCase against existing Odoo user accounts. Any staff member without a matching email is flagged in a pre‑migration report, allowing your admin to either create the Odoo user, assign a designated fallback user, or place the staff records in a queue for later mapping. This ensures every case and activity in Odoo has a valid owner from the start.

MerusCase

Workflow (automation rules)

maps to

Odoo CRM

Not migrated

1:1
Fully supported

MerusCase Workflows triggered by activity tags or description text do not transfer to Odoo. They must be rebuilt using Odoo CRM's Automate menu or Odoo Studio. FlitStack exports the workflow definitions as a JSON reference file for your Odoo admin to use during rebuild.

MerusCase

Special Handling / Settlement

maps to

Odoo CRM

Custom fields on crm.lead

1:1
Fully supported

MerusCase special handling flags and settlement details map to custom fields on the Odoo opportunity. Settlement status (open, settled, closed) becomes a selection field; settlement amount and payment date store as monetary and date custom fields for reporting against the opportunity.

MerusCase

Billing Code / UTBMS Code

maps to

Odoo CRM

product.product or account.account

1:1
Fully supported

MerusCase UTBMS L-Codes (task), A-Codes (activity), and E-Codes (expense) require mapping to Odoo products or accounts. If Odoo Timesheet or Expense module is active, we map task codes to analytic accounts; otherwise they store as custom selection fields on the opportunity for billing 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.

MerusCase logo

MerusCase gotchas

High

Annual subscription and data access tied together

High

Outbound migration is not supported by MerusCase

High

Document Archive exports are per-case, not bulk

Medium

Built-in CSV import tools are not easy to use

Medium

Custom Fields apply to Cases only and have a 50-field cap

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

  • MerusCase party roles require Odoo partner-tag strategy

    MerusCase stores party roles (Plaintiff, Defendant, Opposing Counsel, Insurance Carrier, Employer) as named fields on the case. Odoo CRM has no native party-role concept on crm.lead — roles are inferred from res.partner tags and optional custom selection fields. If your firm tracks multiple parties per case (e.g., a plaintiff and two defendants), Odoo CRM will show each as a separate partner record on the opportunity, and your team will need to use the Odoo CRM contact card and partner tags to disambiguate roles. We map role values to partner tags (x_studio_party_role) and surface the mapping plan before migration so your admin can configure the tag list in Odoo first.

  • MerusCase custom field limit of 50 may exceed Odoo field creation overhead

    MerusCase supports up to 50 custom fields per case across five types (Date, Currency, Text, Numeric, Yes/No). Odoo custom fields on crm.lead are created via ir.model.fields and require admin access in Odoo Studio. Teams with near-maximum custom field counts in MerusCase will spend more time in pre-migration planning because each field needs an Odoo ttype selection and label assignment. We deliver a custom-field creation checklist before migration and flag any field types (e.g., Currency with currency_code) that need additional Odoo configuration beyond the standard field creation.

  • MerusCase workflows do not translate to Odoo Automate menu

    MerusCase Workflows trigger on activity tags (e.g., 'Statute Set') or description text and automatically create tasks, events, and calendar reminders for firm staff. Odoo CRM's Automate menu operates on stage changes, lead scoring, and time-based triggers — it does not read MerusCase activity-tag logic. Any workflow that relies on a specific MerusCase activity type as its trigger will need to be redesigned in Odoo as an Automate rule keyed on opportunity stage or custom field value. We export workflow definitions as a JSON reference file that your Odoo admin can use to rebuild triggers in Odoo Studio.

  • MerusCase document archive download does not include case association metadata

    MerusCase's Document Archive export (ZIP with documents and a CSV of case activities) does not carry the original case-document relationship in a format Odoo ir.attachment can consume directly. Each document needs to be linked to the correct crm.lead record using the MerusCase case number as the matching key. Large document archives (hundreds of MB per case) also require Odoo attachment storage capacity planning. We parse the MerusCase archive, match documents to case IDs, and re-upload them as ir.attachment records linked to the corresponding opportunity in Odoo CRM.

  • MerusCase MerusPay transaction fees have no Odoo equivalent

    MerusCase includes MerusPay with a 3% credit card transaction fee and 1.3% eCheck fee for firms collecting payments through the platform. Odoo CRM does not include a payment processing module by default — firms wanting to collect settlement payments or client retainers through Odoo need to activate Odoo Payment or integrate a third-party payment provider. We preserve MerusPay fee records as custom fields on the opportunity for historical reference, but the payment collection workflow must be rebuilt using Odoo's payment provider configuration.

Migration approach

Six steps for a successful MerusCase to Odoo CRM data migration

  1. Export MerusCase data via Document Archive and API

    FlitStack pulls MerusCase data using a combination of the Document Archive download (for document packages and activity CSVs per case) and the MerusCase REST API endpoints (for cases, contacts, parties, ledgers, and custom field values). We use scoped read access — your team continues working in MerusCase throughout. The API exports run in batches to handle rate limits, and we flag any custom fields exceeding the 50-field limit before mapping begins.

  2. Create Odoo custom fields and partner-tag structure

    Before data moves, your Odoo admin (or our team) creates the custom fields on crm.lead and res.partner that are needed for MerusCase custom field values, party roles, and UTBMS codes. We deliver a custom-field creation checklist that maps each MerusCase field name to its Odoo field type, label, and target model. Partner tags for party roles (Plaintiff, Defendant, Insurance Carrier, etc.) are also created in Odoo CRM settings during this step.

  3. Resolve MerusCase staff to Odoo res.users

    MerusCase staff IDs resolve to Odoo res.users by matching the email address stored in MerusCase against Odoo user accounts. Any staff member without a corresponding Odoo user is flagged in a pre‑migration report, allowing your team to create the Odoo account or assign a designated fallback user before the data load. All cases and activities are linked to a valid user_id, ensuring that the owner field on the crm.lead is populated and that activity assignments appear correctly in Odoo’s pipeline view.

  4. Run sample migration with field-level diff

    A representative slice migrates first — typically 50–200 cases spanning each case type, with contacts, activities, and custom fields. We generate a field‑level diff between the MerusCase source values and the Odoo destination fields, highlighting any missing mappings, type mismatches, or truncated values. This diff lets you verify party‑role mapping, custom field values, ledger totals, and the correct assignment of staff owners before the full run commits. You can request adjustments to the mapping or field creation based on the diff output.

  5. Execute full migration with delta-pickup window

    Full migration runs against Odoo CRM using XML‑RPC batch upsert, processing records in configurable batch sizes to stay within API rate limits. A delta‑pickup window of 24–48 hours captures any cases, contacts, or activities created or modified in MerusCase after the initial load, ensuring Odoo reflects the most recent state at cut‑over. Every create and update operation is recorded in an audit log, and if reconciliation detects missing or inconsistent data, a one‑click rollback reverts the Odoo environment to the pre‑migration snapshot, allowing your team to correct the issue and re‑run without data loss.

Platform deep dives

Context on both ends of the pair

MerusCase logo

MerusCase

Source

Strengths

  • Fully HIPAA-compliant cloud platform with bank-grade encryption across all stored firm data.
  • Integrated billing ledger with UTBMS task, activity, and expense code support out of the box.
  • Document automation, batch scanning, and EAMS integration built into the core platform.
  • Dedicated migration coordinator assigned to each firm transitioning from another system.
  • Monthly product updates with new features and refinements across case types.

Weaknesses

  • Annual subscription model requires prepayment; no month-to-month flexibility for smaller firms.
  • Primary data export is per-case Document Archive — no single full-firm export without contacting support and paying a manual processing fee.
  • MerusCase's own migration team only supports inbound migrations, not outbound.
  • Built-in CSV import tools are explicitly documented as not easy to use, requiring white-glove service for most data loading tasks.
  • Workflows and Statutes cannot be exported or migrated programmatically — they are platform-native and must be rebuilt from scratch.
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. 1 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 MerusCase and Odoo CRM.

  • Object compatibility

    B

    1 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

    MerusCase: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your MerusCase 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 MerusCase to Odoo CRM data migrations

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

Can't find your answer?

Walk through your MerusCase to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most MerusCase to Odoo CRM migrations complete in 48–72 hours for under 10,000 case records. Larger deployments with 50,000+ cases or heavy custom field loads extend to 5–8 days. The most time‑consuming step is aligning MerusCase party roles (plaintiff, defendant, opposing counsel, insurance carrier) with Odoo partner tags and preparing the matching custom fields on crm.lead. FlitStack also runs a delta‑pickup window of 24–48 hours to capture any updates made in MerusCase during cut‑over, ensuring Odoo reflects the final state at go‑live.

Adjacent paths

Related migrations to explore

Ready when you are

Move from MerusCase.
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