CRM migration

Migrate from The Case File to Odoo CRM

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

The Case File logo

The Case File

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

11 of 11

objects map 1:1 between The Case File and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

The Case File organizes data around individual cases with contacts, companies, activities, and documents attached directly to case records. Odoo CRM uses a relational model built around crm.lead (for leads and opportunities), res.partner (for contacts and companies), and crm.team (for sales unit organization). These architectures are fundamentally different: The Case File is case-centric; Odoo CRM is contact- and pipeline-centric. FlitStack AI maps The Case File contact records to res.partner, case records to crm.lead with the opportunity type flag, and case-linked activities to mail.activity records. Documents attached to cases are migrated as Odoo attachments with the original case reference preserved. Custom fields in The Case File are translated to Odoo ir.model.fields entries — text fields, selections, dates, and numeric fields all map to their Odoo equivalents with field technical names generated from the source label. The migration uses Odoo's XML-RPC API for record creation and attachment upload, with foreign-key resolution ensuring that contacts exist before cases are linked. Workflows, billing rules, and document templates do not migrate — these must be rebuilt in Odoo using its automation rules and reporting tools.

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

The Case File logo

The Case File

What's pushing teams away

  • Document management limitations make handling extremely large or complex litigation document sets difficult.
  • The platform lacks depth for multi-party or high-volume matters that require advanced workflow automation.
  • Reporting and analytics are basic compared to purpose-built litigation analytics platforms.
  • Limited API documentation and third-party integration ecosystem makes automation difficult.
  • Some firms outgrow the platform as they scale and need more robust matter-level permissions controls.

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 The Case File objects map to Odoo CRM

Each row shows how a The Case File 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.

The Case File

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

The Case File contacts map directly to Odoo res.partner records. The 'company' flag on a contact sets the is_company boolean — true for organization contacts, false for individual contacts. Partner addresses (street, city, country) migrate to res.partner address fields using Odoo's address layout model.

The Case File

Company

maps to

Odoo CRM

res.partner (is_company=true)

1:1
Fully supported

The Case File company records become res.partner entries with is_company=True. The company name maps to name, domain maps to website, industry maps to industry_id via the res.partner.industry selection field. Employee count and revenue migrate as custom fields since Odoo stores these on the partner form but not as standard fields.

The Case File

Case

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Each The Case File case maps to a crm.lead record in Odoo CRM. The case title becomes the lead name (name field), case description becomes the description text field, and case priority maps to priority (1=Low, 2=Normal, 3=High). The case type or category maps to the type field — use 'lead' for prospect cases and 'opportunity' for active deal cases based on case status.

The Case File

Case Status

maps to

Odoo CRM

crm.stage

1:1
Fully supported

The Case File status values (e.g., Open, In Progress, Resolved, Closed) map to Odoo crm.stage records by name. The migration creates stage records in the default pipeline if they do not already exist. Each stage gets sequence order matching the source status sort order. Probability values are assigned per stage using Odoo's stage probability defaults unless custom probabilities were tracked in The Case File.

The Case File

Case Activity

maps to

Odoo CRM

mail.activity

1:1
Fully supported

Activities logged against a case in The Case File (calls, meetings, tasks, notes) migrate as mail.activity records. The activity_type_id is resolved by matching the source activity type label to Odoo's built-in activity types (call, meeting, todo, email). Original date and user assignment are preserved via activity_date_deadline and user_id respectively. Activity summary maps to activity_note.

The Case File

Document / Attachment

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Documents attached to cases migrate as ir.attachment records with res_model='crm.lead' and res_id set to the target crm.lead ID. The original filename is preserved in the name field, and the file binary content is stored in the datas field. Odoo's attachment size limit (default 100MB) is respected; files exceeding this threshold are flagged for manual handling.

The Case File

Case Custom Fields

maps to

Odoo CRM

ir.model.fields (custom)

1:1
Fully supported

Custom fields defined in The Case File are created as ir.model.fields entries on the crm.lead model before migration. Field types are translated: text/textarea becomes char or text depending on length, numbers become integer or float, dates become date, and pick-lists become selection fields with the original options as key-value pairs. Field technical names are generated from the source label (e.g., 'Contract Value' becomes x_contract_value).

The Case File

User / Owner

maps to

Odoo CRM

res.users

1:1
Fully supported

Case owners in The Case File are matched to res.users records by email address. Unmatched owners are flagged as warnings — the case is assigned to a fallback user (typically the migration admin) and a custom Source_Owner__c field preserves the original owner name for manual reassignment in Odoo.

The Case File

Team

maps to

Odoo CRM

crm.team

1:1
Fully supported

If The Case File has a team or department concept, these map to crm.team records. The team name and member list migrate; team members are linked via crm.team.member_ids (res.users many2many). Odoo requires the team to exist before members can be assigned, so the migration creates teams before user assignments are processed.

The Case File

Billing / Invoice Items

maps to

Odoo CRM

account.move (draft)

1:1
Fully supported

Billing records and invoice line items in The Case File do not map to standard Odoo CRM objects. These are exported as a separate dataset (account.move records in draft state) and handed to the accounting team for reconciliation. The case reference is preserved in the invoice line description for audit traceability.

The Case File

Notes / Free-text

maps to

Odoo CRM

mail.message

1:1
Fully supported

Free-text notes attached to cases migrate as mail.message records on the crm.lead. The message_body field carries the note text, message_type is set to 'comment', and the original note date maps to date. Author is set to the system migration user if the original author cannot be resolved.

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.

The Case File logo

The Case File gotchas

High

No publicly documented API for programmatic data extraction

High

Trust account ledger balances require manual verification

Medium

Custom fields lack a documented export schema

Medium

Document folder structure does not export flatly

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 manual type classification

    The Case File treats every case uniformly regardless of sales stage, but Odoo CRM distinguishes between leads (unqualified prospects) and opportunities (qualified deals). During migration, each case is assigned a type value — 'lead' or 'opportunity' — based on the source case status or custom type field. If The Case File does not capture qualification status, cases with no revenue value are defaulted to 'lead' and cases with a defined case_value are set to 'opportunity'. This classification determines which Kanban board and pipeline a record appears in. Your team should review the mapping rules before migration to ensure the split aligns with your sales process definitions in Odoo.

  • Document attachments require Odoo filestore configuration

    Odoo stores binary attachments in its filestore directory (default: ~/.local/share/Odoo/filestore/{dbname}/). Large document migrations can consume significant filestore space, and Odoo applies a default per-file size limit of 100MB. Files exceeding this limit must be handled manually — either by splitting the file, storing it externally with a URL reference, or adjusting Odoo's ir_attachment maximum file size configuration. FlitStack flags oversized files during the pre-migration scan and reports them before the migration run begins.

  • Multi-company setups need Odoo company configuration before migration

    If your The Case File instance serves multiple legal entities or business units, Odoo requires the company records (res.company) to be created and configured before any partner or lead records are migrated. Odoo's record rules enforce data isolation by company — records assigned to one company are invisible to users of another. Teams migrating from a single-instance multi-entity The Case File must decide whether to consolidate into one Odoo company or create separate Odoo companies and re-assign records accordingly. This decision affects every record and must be resolved before the migration mapping is finalized.

  • Activity history does not include The Case File's internal notes format

    The Case File may use a structured notes format (e.g., structured fields for date, author, and note body) that differs from Odoo's mail.message model. Free-form notes in The Case File migrate as mail.message records, but rich-text formatting, embedded images, or custom note templates may not preserve their original rendering in Odoo. Any note templates or standardized formats should be recreated in Odoo's mail templates (mail.template) after migration rather than relying on the migrated note content for automated workflows.

  • Owner resolution by email may leave orphaned case assignments

    The Case File owner records are matched to Odoo res.users by email address. If The Case File contains owner records with email addresses that do not correspond to active Odoo user accounts, those cases are assigned to the migration fallback user. The original owner name is preserved in a custom field (x_source_owner) for post-migration manual reassignment. Before migration, your team should audit the owner list in The Case File and ensure all active owners have corresponding Odoo user accounts with matching email addresses.

Migration approach

Six steps for a successful The Case File to Odoo CRM data migration

  1. Configure Odoo schema before data migration

    FlitStack reviews The Case File's object and field inventory and configures the corresponding Odoo objects before any data is moved. This includes creating custom fields on crm.lead via ir.model.fields, configuring crm.stage records to match The Case File status values, setting up crm.team records for each source team or department, and confirming res.company configuration if multi-entity data is involved. Odoo schema configuration is delivered as a setup checklist your admin can execute or that FlitStack can apply via XML-RPC with admin credentials.

  2. Map and validate all field transformations

    Every field in The Case File is mapped to an Odoo field with documented mapping type (direct, value_mapping, transformed, custom_field_required). FlitStack generates a field-mapping specification document showing the source field, destination field, mapping type, and any transformation logic. Special attention is given to pick-list value translations (value_mapping), owner resolution (transformed by email match), and document attachment linking (direct with res_model and res_id resolution). The specification is reviewed with your team before migration proceeds.

  3. Run sample migration with field-level validation

    A representative slice of records — typically 100–500 covering contacts, companies, cases, and activities across different statuses — is migrated first. FlitStack generates a field-level diff comparing source values against the destination record values. Your team reviews the diff to confirm stage mapping, owner resolution, and custom field population are correct before the full migration run commits. Sample migration results are delivered as a CSV export with source value, destination field, and destination value for each mapped field.

  4. Execute full migration with delta-pickup window

    The full migration runs against your Odoo instance using XML-RPC API calls. Records are processed in dependency order: companies first (for parent_id resolution), then contacts, then cases linked to contacts, then activities and attachments. A delta-pickup window of 24–48 hours runs after the initial full migration to capture any records created or modified in The Case File during the cutover period. FlitStack logs every API operation to an audit trail so each migrated record can be traced back to its source ID.

  5. Validate and hand off manual-rebuild assets

    Post-migration validation includes record counts per object, spot-checks on field population, and attachment file verification. FlitStack delivers a migration summary report showing success rate, error counts, and records requiring manual review. Workflow definitions, automation rules, email templates, and billing configurations are exported as JSON blueprints for your Odoo admin to rebuild using Odoo's automation tools. A 30-day post-migration support window covers data corrections identified during validation.

Platform deep dives

Context on both ends of the pair

The Case File logo

The Case File

Source

Strengths

  • Cloud-native platform with no on-premises infrastructure requirements for the standard edition.
  • Native Full Data Backup tool and export spreadsheets provide a structured data extraction path.
  • Integrated client intake, case management, billing, and time tracking in one platform.
  • Good mobile app availability for attorneys working outside the office.
  • Dedicated Data Migration help center collection suggests some investment in migration tooling.

Weaknesses

  • Limited public API documentation makes programmatic migration and integration work harder to plan.
  • Document management is basic; large-scale litigation document sets are difficult to organize within the platform.
  • Reporting and analytics capabilities are shallow compared to specialized litigation software.
  • Third-party integrations ecosystem is smaller than enterprise-class legal CRMs.
  • Custom field definitions must be reviewed manually during migration scoping as no exportable schema is documented.
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 The Case File 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

    The Case File: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

Estimate your The Case File 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 The Case File to Odoo CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most The Case File to Odoo CRM migrations complete within 48–72 hours for under 25,000 case records. Larger datasets with 100,000+ records or complex custom field configurations extend to 5–10 days. The longest phase is typically schema setup and field-mapping validation — the actual API-based data transfer runs in hours once the mapping is confirmed. Odoo CRM configuration (stages, teams, custom fields) must be completed before migration begins and adds 2–5 days depending on the number of custom fields and pipeline stages.

Adjacent paths

Related migrations to explore

Ready when you are

Move from The Case File.
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