CRM migration

Migrate from Case.one to Odoo CRM

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

Case.one logo

Case.one

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between Case.one and Odoo CRM.

Complexity

BStandard

Timeline

5–10 business days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Case.one is a cloud-based legal practice management platform built around cases, contacts, documents, and time-and-billing records. Its data model centers on a Case object that carries client contacts, assigned attorneys, document attachments, and hourly fee entries. Odoo CRM organizes data around res.partner (the unified contact-company record), crm.lead (the single model for both leads and opportunities), crm.lead.tag for categorization, and ir_attachment for files. The core migration challenge is routing Case.one cases into Odoo leads and opportunities based on case status, and translating Case.one's per-case billing flags and custom fields into Odoo Studio custom fields on res.partner and crm.lead. We export Case.one records via its REST API, map and transform each record in our ETL layer, and load into Odoo through the xmlrpc API. Automations, document-assembly templates, and billing-rate rules from Case.one do not transfer — we export their definitions as a rebuild reference for your Odoo administrator. A delta-pickup window runs during cutover to capture any new cases or time entries modified in Case.one while the Odoo system is being validated.

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

Case.one logo

Case.one

What's pushing teams away

  • Workflow automation limitations frustrate firms with complex multi-step processes that require more flexibility than the native rules engine provides.
  • Performance degradation reported when managing large document repositories within individual matters.
  • Customer support response times are a common complaint in negative reviews, particularly for billing or technical issues.
  • Mobile application lacks feature parity with the desktop version, limiting remote access to full case details.
  • Integration ecosystem is narrower than competitors, making connectivity with niche legal tools and custom software challenging.

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 Case.one objects map to Odoo CRM

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

Case.one

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

Case.one Contact maps directly to Odoo res.partner where the contact type is set to 'contact'. Standard fields including name, email, phone, street, city, state, zip, and country migrate on a one-to-one basis. The primary_company relationship from Case.one sets the res.partner.parent_id field to reference the corresponding mapped company partner record, preserving the contact-to-company hierarchy during migration.

Case.one

Company

maps to

Odoo CRM

res.partner

1:1
Fully supported

Case.one Company maps to Odoo res.partner with type set to 'company'. The company name becomes partner name. Case.one's industry, website, and address fields map to the equivalent Odoo res.partner fields. Parent-child company hierarchies in Case.one become parent_id links in Odoo.

Case.one

Case

maps to

Odoo CRM

crm.lead

1:many
Fully supported

Case.one Cases split into Odoo crm.lead records based on status. Open and Pending cases route to crm.lead type 'opportunity' so they appear in the Odoo pipeline view. Closed and Won cases route to type 'lead'. Each split is configurable based on your case-status-to-pipeline-stage mapping plan before migration runs.

Case.one

Case Status

maps to

Odoo CRM

crm.stage

1:1
Fully supported

Case.one Case Status pick-list values (Open, Pending, On Hold, Closed Won, Closed Lost) are mapped value-by-value to Odoo crm.stage records. Each stage belongs to a specific Odoo sales team. Stage sequence and probability values are applied per Odoo's stage configuration during the migration plan phase.

Case.one

Case Custom Fields

maps to

Odoo CRM

x_studio_custom_field on crm.lead

1:1
Fully supported

Case.one custom fields on Cases (e.g., matter_type, practice_area, court_jurisdiction, lead_attorney) are pre-created in Odoo Studio before migration using the x_studio_ naming convention. Field types (char, selection, float, date) are matched to Odoo's equivalent field types. Custom field values populate after the field is created in Odoo.

Case.one

Contact Custom Fields

maps to

Odoo CRM

x_studio_custom_field on res.partner

1:1
Fully supported

Case.one custom fields on Contacts (e.g., bar_number, department, billing_rate) are pre-created in Odoo Studio on res.partner before migration. Values migrate as text, selection, or float depending on the Case.one field type. Billing rate values are stored as float fields on the partner record for use in Odoo Timesheet or Odoo Billing if those modules are activated.

Case.one

Document / Attachment

maps to

Odoo CRM

ir_attachment

1:1
Fully supported

Case.one documents attached to cases are downloaded from Case.one storage and re-uploaded into Odoo as ir_attachment records linked to the corresponding crm.lead. Attachment filename, mimetype, and create_date are preserved. Odoo's attachment size limit (default 25MB per file) applies; files exceeding this are flagged before migration for manual handling.

Case.one

User / Attorney

maps to

Odoo CRM

res.users

1:1
Fully supported

Case.one users and attorneys are resolved by email match against Odoo res.users. Unmatched users are flagged before migration — your team either creates the Odoo user first or assigns their Case.one cases to a fallback Odoo user. Active status and user_type (internal vs. portal) are set based on Case.one user role. Attorney-specific role data migrates as a custom field on the mapped crm.lead.

Case.one

Time Entry / Billing

maps to

Odoo CRM

x_studio_time_entry on crm.lead / res.partner

1:1
Fully supported

Case.one time entries and billable hour records are summarized and stored as custom float fields on the linked crm.lead (for case-based billing) and res.partner (for attorney rate tracking). Odoo's timesheet and billing modules require separate configuration if you want full time-tracking in Odoo; the migration preserves the historical data for reporting continuity.

Case.one

Case Activity / Note

maps to

Odoo CRM

mail.message / crm.lead

1:1
Fully supported

Case.one case notes and activity logs migrate as mail.message records linked to the corresponding crm.lead in Odoo. Original author, timestamp, and body text are preserved. Odoo's mail thread model displays these as a chronological activity log on each lead or opportunity record in the chatter widget.

Case.one

Billing / Invoice Record

maps to

Odoo CRM

x_studio_billing on crm.lead

1:1
Fully supported

Case.one invoicing records (invoice number, amount, status, date) do not map to Odoo Account objects because Odoo Accounting is a separate module. We store invoice metadata as custom fields on the crm.lead so billing history is visible alongside the case record. If Odoo Accounting is activated, invoice records are created separately post-migration.

Case.one

Case Tag / Category

maps to

Odoo CRM

crm.tag

1:1
Fully supported

Case.one tags or categories applied to cases (e.g., litigation, corporate, real_estate) are mapped to Odoo crm.tag records. Tags are linked to crm.lead records via the crm_lead_tag_rel many-to-many table. Tags that have no Odoo equivalent are created during migration as new crm.tag records before records are loaded.

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.

Case.one logo

Case.one gotchas

High

Trust account balance migration requires financial reconciliation

Low

Per-active-case pricing means closed matters do not count toward billing

Medium

Custom field schemas are firm-specific and require enumeration

Medium

Large document repositories may require chunked export with integrity verification

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 type split requires pre-migration Odoo stage configuration

    Odoo CRM uses a single crm.lead model for both leads and opportunities, differentiated by the type field ('lead' vs 'opportunity'). Case.one cases must be routed to the correct type and pipeline stage before migration begins. If your Odoo sales team pipeline stages have not been configured with the correct sequence and probability values, the migration plan cannot resolve the stage_id mapping. We deliver a stage-mapping specification document during the planning phase so your Odoo administrator creates the required crm.stage records and assigns them to the correct crm.team before data is loaded.

  • Per-case billing metadata has no native Odoo equivalent and requires custom fields

    Case.one bills per active case and tracks billable hours, attorney rates, and invoice history on each matter. Odoo CRM has no native billing-per-matter field — billable amounts and time summaries must be stored as custom fields on crm.lead (x_studio_total_billed, x_studio_total_hours). If your team uses Odoo Accounting alongside CRM, invoice records are created there, not in the CRM module. We pre-create these custom fields via Odoo Studio before migration runs, but the Odoo Accounting module must be activated separately if you need full invoicing workflows in Odoo.

  • Document re-upload to Odoo ir_attachment is required; large files may be rejected

    Case.one stores case documents in its own file management layer. Odoo stores attachments as ir_attachment records linked to the model record (crm.lead, res.partner, etc.). All Case.one attachments must be downloaded and re-uploaded through Odoo's xmlrpc API or filestore. Odoo's default attachment size limit is 25MB per file; files exceeding this are flagged in the migration report for manual handling. If your Case.one instance contains thousands of large PDFs, the attachment migration alone can extend the timeline by 1-2 days.

  • Odoo multi-company setup requires pre-migration configuration matching Case.one's organizational structure

    If your Case.one account uses multiple offices, practice groups, or departments to segment contacts and cases, Odoo's multi-company feature must be configured before migration to assign the correct company_id to each res.partner and crm.lead record. Without this configuration, all records land in the default company, potentially breaking access controls and reporting. We map Case.one office/group IDs to Odoo res_company records during the planning phase, but the Odoo multi-company schema must be set up by your Odoo administrator before we run the migration.

  • Case.one automations and matter templates do not migrate and must be rebuilt in Odoo

    Case.one workflow rules, automated reminders, case-opening templates, and document-assembly logic are stored in Case.one's rules engine and do not export via API. Odoo's equivalent is the Automations module (studio-based or ir.actions.server rules) combined with Odoo Studio templates. We export a structured JSON representation of your Case.one rules as a rebuild reference, but the Odoo implementation is a separate configuration step. This applies to all automated actions — deadline reminders, status-change triggers, and notification rules require manual rebuild.

Migration approach

Six steps for a successful Case.one to Odoo CRM data migration

  1. Audit Case.one data and map to Odoo schema specification

    FlitStack AI reads all accessible Case.one objects via the REST API — contacts, companies, cases, activities, documents, users, and custom fields. We generate a data audit report showing record counts, custom field inventory, attachment volume, and any null or malformed values that need cleansing. We then produce an Odoo schema specification document: crm.stage list, Odoo Studio custom fields to create, user email mapping, and case-to-lead type routing rules. Your Odoo administrator uses this specification to configure Odoo before we run any data load.

  2. Create Odoo Studio custom fields and pipeline stages

    FlitStack AI creates Odoo Studio custom fields on res.partner and crm.lead using the Odoo Studio XML-RPC API — x_studio_case_number, x_studio_total_billed, x_studio_total_hours, x_studio_matter_type, x_studio_practice_area, x_studio_jurisdiction, and any additional custom fields from the Case.one inventory. We also create crm.tag records for Case.one tags. Your Odoo administrator configures the pipeline stages and sales team assignments during this window. The migration does not run until Odoo schema is validated.

  3. Run sample migration with field-level diff

    A representative slice of Case.one records (typically 100-500) is migrated first — spanning contacts across multiple companies, open and closed cases, attachments, and a sample of custom field values. FlitStack AI generates a field-level diff report showing every source field value and its Odoo destination value. You review the diff to confirm case-to-lead routing, custom field population, attachment linking, and user resolution before we commit to the full migration run.

  4. Execute full migration and delta-pickup cutover

    The full migration loads all Case.one records into Odoo in dependency order: res.partner companies first, then res.partner contacts, then crm.lead records with their custom fields and tag assignments. Documents are downloaded and re-uploaded as ir_attachment records. A delta-pickup window (24-48 hours after the full load) captures any new cases or time entries created in Case.one during the cutover validation period. All operations are logged in the audit trail. One-click rollback reverts the Odoo database to its pre-migration state if reconciliation finds unexpected discrepancies.

  5. Deliver migration report and rebuild reference package

    FlitStack AI delivers a migration completion report listing all records migrated, records skipped with reasons, attachment upload status, and any custom field values that could not be mapped. The rebuild reference package includes a JSON export of Case.one automation rules, a field-mapping CSV, and Odoo Studio configuration notes for your administrator to use when rebuilding Case.one workflows in Odoo's Automations module. Post-migration support is available for 30 days to address data quality questions.

Platform deep dives

Context on both ends of the pair

Case.one logo

Case.one

Source

Strengths

  • Per-active-case pricing aligns cost with actual caseload rather than seat count.
  • Consolidated platform reduces switching between separate billing, document, and case tools.
  • Collaborative litigation workspace built natively into the case management flow.
  • Integrated trust accounting handles client fund tracking within the same system.
  • Free tier available for very small firms or evaluation purposes.

Weaknesses

  • Narrower third-party integration ecosystem compared to established legal CRM competitors.
  • Mobile application feature set lags behind the full desktop experience.
  • Workflow automation is less flexible than platforms with programmable rule engines.
  • Limited public documentation on API endpoints and capabilities.
  • Smaller market share means fewer third-party migration resources and community templates.
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 Case.one 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

    Case.one: Not publicly documented.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Case.one to Odoo CRM migrations complete within 5-10 business days for setups with fewer than 25,000 records and fewer than 50 custom fields. Larger migrations with 100,000+ records, complex multi-company configurations, or extensive document attachment volumes extend to 3-6 weeks. The longest single phase is typically the Odoo Studio custom field and stage configuration — we cannot load data until those are in place, so pre-migration schema setup is the critical-path item. FlitStack AI sequences all phases so Odoo is ready before the first record is loaded.

Adjacent paths

Related migrations to explore

Ready when you are

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