CRM migration
Field-level mapping, validation, and rollback between CosmoLex and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
CosmoLex
Source
Odoo CRM
Destination
Compatibility
13 of 13
objects map 1:1 between CosmoLex and Odoo CRM.
Complexity
BStandard
Timeline
5–10 business days
Overview
CosmoLex structures its data around the client–matter relationship: a Client record holds contact details and matter assignments, and each Matter carries billing method, responsible attorney, custom fields, notes, and a complete billing ledger. Odoo CRM uses a different model — leads and opportunities live in crm.lead, while contacts and companies live in res.partner as a unified partner record. The migration challenge is translating CosmoLex's matter hierarchy and legal billing data into Odoo's partner and project framework. FlitStack AI extracts CosmoLex data via API export (clients, matters, custom fields, calendar events, contacts) and maps clients to res.partner, matters to crm.lead or project.project records, billing methods to sale order line configurations, and custom fields to Odoo custom fields on the corresponding models. Trust account balances and historical billing ledgers require separate planning — those cannot migrate as native Odoo trust accounting since that construct does not exist in standard Odoo ERP. We deliver a sample migration with field-level diff before committing the full run, and a delta-pickup window captures any client or matter changes during cutover.
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 CosmoLex 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.
CosmoLex
Client
Odoo CRM
res.partner
1:1CosmoLex Client maps to Odoo res.partner. Client type (individual/firm) stored as a custom field or x_cosmo_client_type on res.partner. The client's primary contact details migrate as the partner's main address and email fields.
CosmoLex
Matter
Odoo CRM
crm.lead
1:1CosmoLex Matter maps to Odoo crm.lead as an Opportunity. The matter's name becomes crm.lead name, and the associated Client becomes the partner_id on the lead. Matter status (Active/Archived) maps to crm.lead active flag. Billing method stored as a custom field on the lead.
CosmoLex
Matter
Odoo CRM
project.project
1:1If your firm uses CosmoLex matters as project-like work units, matters can alternatively map to project.project records in Odoo. This requires custom field creation for billing method and matter-specific legal fields that project.project does not carry natively.
CosmoLex
Contact (within Client)
Odoo CRM
res.partner
1:1CosmoLex contacts stored under a Client map to res.partner records linked to the client-partner via parent_id. The parent_id on res.partner creates the company-contact hierarchy that mirrors CosmoLex's contact-within-client structure.
CosmoLex
Matter Owner
Odoo CRM
user_id (crm.lead)
1:1The CosmoLex Matter Owner field maps to user_id on Odoo crm.lead. Owner resolution runs by email match against Odoo system users. Unmatched owners are flagged before migration and assigned to a fallback Odoo user or left as custom field x_original_owner for manual reassignment.
CosmoLex
Billing Method
Odoo CRM
Custom field on crm.lead
1:1CosmoLex billing method (Hourly, Flat Fee, Contingency) has no native Odoo CRM equivalent. FlitStack creates a selection field x_billing_method on crm.lead and maps the source value directly. For invoicing, hourly matters link to Odoo Timesheet products; flat fee and contingency become sale order lines with specific pricing rules.
CosmoLex
Matter Notes
Odoo CRM
mail.message / Description field (crm.lead)
1:1CosmoLex matter notes migrate as Odoo mail.message records attached to crm.lead, preserving the original note body and creation date. The most recent note is also surfaced as the lead's description field for quick visibility in the Kanban card.
CosmoLex
Calendar Events
Odoo CRM
calendar.event
1:1CosmoLex calendar events (client meetings, court dates) migrate to Odoo calendar.event records linked to the crm.lead via res_model and res_id. Original start/end times, attendees, and location are preserved. Recurring events are mapped as individual calendar.event records.
CosmoLex
Tasks / To-Do Lists
Odoo CRM
mail.activity
1:1CosmoLex matter tasks and to-do lists map to Odoo mail.activity records on the corresponding crm.lead. Task type (Call, Email, Filing) maps to activity_type_id. Original due dates and assigned user map to date_deadline and user_id respectively.
CosmoLex
Custom Fields (Matter)
Odoo CRM
Custom Fields (crm.lead)
1:1CosmoLex matter-level custom fields (e.g., Case Number, Court, Opposing Counsel) are created as custom fields on Odoo crm.lead via Settings > Custom Fields. Field type is matched (char, selection, date, etc.) and values are mapped row-by-row during migration.
CosmoLex
Custom Fields (Client)
Odoo CRM
Custom Fields (res.partner)
1:1CosmoLex client-level custom fields migrate as custom fields on Odoo res.partner. Each custom field is created in Odoo with the matching field type before the migration run, and values are written during the import phase.
CosmoLex
Trust Account Transactions
Odoo CRM
No native Odoo equivalent
1:1CosmoLex trust account transactions and IOLTA ledger entries have no direct Odoo equivalent. Odoo accounting records funds at the journal level, not per-matter. FlitStack exports trust balances as reference data in a separate import file; firms set up a dedicated trust journal in Odoo Accounting for manual reconciliation.
CosmoLex
Invoice History
Odoo CRM
sale.order / account.move
1:1CosmoLex invoice records migrate as Odoo sale.order (draft quotations) or account.move (posted invoices) depending on their status. Line items map to sale.order.line records linked to the corresponding crm.lead opportunity. Invoice numbers and dates are preserved in the sale order reference and date fields.
| CosmoLex | Odoo CRM | Compatibility | |
|---|---|---|---|
| Client | res.partner1:1 | Fully supported | |
| Matter | crm.lead1:1 | Fully supported | |
| Matter | project.project1:1 | Fully supported | |
| Contact (within Client) | res.partner1:1 | Fully supported | |
| Matter Owner | user_id (crm.lead)1:1 | Fully supported | |
| Billing Method | Custom field on crm.lead1:1 | Fully supported | |
| Matter Notes | mail.message / Description field (crm.lead)1:1 | Fully supported | |
| Calendar Events | calendar.event1:1 | Fully supported | |
| Tasks / To-Do Lists | mail.activity1:1 | Fully supported | |
| Custom Fields (Matter) | Custom Fields (crm.lead)1:1 | Fully supported | |
| Custom Fields (Client) | Custom Fields (res.partner)1:1 | Fully supported | |
| Trust Account Transactions | No native Odoo equivalent1:1 | Fully supported | |
| Invoice History | sale.order / account.move1: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.
CosmoLex gotchas
Financial migration is balances-forward only, not historical
Two-phase migration sequencing is mandatory
Hard costs must be imported as soft costs
No public API for automated bulk export
Chart of Accounts is user-setup after import, not migrated
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
Extract CosmoLex data via API export
FlitStack connects to your CosmoLex account using scoped read credentials and exports all primary entities: clients, contacts, matters, calendar events, tasks, matter notes, invoice headers, invoice lines, and custom field definitions. We extract the data as JSON and validate the schema against CosmoLex's documented export format before transformation begins. Any CosmoLex custom fields (client-level or matter-level) are captured as field definition metadata so Odoo custom fields can be pre-created with the correct field type.
Pre-create Odoo custom fields and project structure
Before any data is imported, FlitStack creates the required custom fields in Odoo: x_billing_method, x_case_number, x_court, x_opposing_counsel, x_original_open_date, x_cosmo_matter_id on crm.lead; x_cosmo_client_type, x_original_create_date on res.partner. If matters map to project.project, the Project module is activated and project fields are configured. We deliver a schema setup checklist so your Odoo admin can verify the custom field configuration in the Odoo Settings UI before the migration run. This step runs in parallel with Odoo user setup and email-based owner resolution.
Import clients first, then contacts, then matters
Odoo requires parent records to exist before child records can reference them via lookups. We sequence the import: res.partner (clients) load first, then res.partner (contacts) with parent_id set to their client-partner, then crm.lead (matters) with partner_id pointing to the client. Invoice records load after matters are established, linked to the corresponding opportunity. Each import phase runs independently with a validation checkpoint — partner count, matter count, custom field value coverage — before the next phase starts. This sequencing prevents orphaned records and foreign-key violations in Odoo.
Run sample migration with field-level diff
A representative sample — typically 200–500 records spanning the full entity range — runs through the full import pipeline and generates a field-level diff report. The diff shows every mapped field, the source value in CosmoLex, and the resulting value in Odoo. You can verify that billing method values are correct, matter owners resolved, custom fields populated, and that matter descriptions and notes appear in the right Odoo fields. Sample diff approval is required before the full migration run commits.
Execute full migration with delta-pickup window
The full migration run imports all remaining records. After the main import completes, FlitStack opens a delta-pickup window — typically 24–48 hours — during which any records created or modified in CosmoLex after the export timestamp are captured and imported into Odoo. The audit log records every operation. If reconciliation reveals missing records or incorrect field values, one-click rollback reverts the Odoo data to its pre-migration state so the run can be corrected and repeated without data loss.
Platform deep dives
CosmoLex
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between CosmoLex and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across CosmoLex and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between CosmoLex and Odoo CRM.
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
CosmoLex: Not publicly documented.
Data volume sensitivity
CosmoLex 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 CosmoLex to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your CosmoLex 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 CosmoLex
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.