CRM migration
Field-level mapping, validation, and rollback between Legal Files and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Legal Files
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Legal Files and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Legal Files is a matter-centric case management platform built around legal matters, parties (clients and opposing counsel), document storage, calendar events, and time/billing entries. Odoo CRM uses a unified crm.lead model for both leads and opportunities, res.partner for contacts and companies, sale.order for quotations, and ir.attachment for documents. The two platforms share a relational structure but differ in how they handle case status, billing, and user ownership. We map Legal Files matters directly to Odoo crm.lead records, Parties to res.partner records, documents to Odoo attachments, and billable hours to sale.order lines. Legal Files custom fields become Odoo custom fields on their respective models. We use Odoo's XML-RPC API for all write operations and export Legal Files data via its SQL Server backend when available. Workflows, document templates, matter-type-specific rules, and Outlook/Gmail email integrations do not migrate — we export their definitions as a rebuild reference for your Odoo admin. Our approach runs a sample migration of 50–100 records first, generates a field-level diff, then executes the full run with a 24–48 hour delta-pickup window to capture in-flight changes during cutover. All timestamps, owner assignments, and relationship links are preserved in the migration.
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 Legal Files 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.
Legal Files
Matter
Odoo CRM
crm.lead
1:1Legal Files matters map directly to Odoo crm.lead records. The crm.lead model serves as both lead and opportunity in Odoo — matter status maps to crm.stage per pipeline. Matter name becomes the opportunity name; original matter open date is preserved as a custom create_date field since Odoo sets CreatedDate at migration time.
Legal Files
Party
Odoo CRM
res.partner
1:1Legal Files parties (clients, opposing counsel, witnesses, and other contacts) map to Odoo res.partner records. res.partner handles both individuals and organizations — the party type field determines whether partner is a company or person in Odoo's is_company flag. Multiple addresses per party are handled via res.partner's address fields.
Legal Files
Document
Odoo CRM
ir.attachment
1:1Legal Files document records (file name, description, file type, create date, uploaded by) map to Odoo ir.attachment records linked to the corresponding crm.lead via res_model='crm.lead' and res_id=matter_id. File binary content is downloaded and re-uploaded to Odoo's filestore. Version history in Legal Files becomes separate attachment records in Odoo.
Legal Files
Billable Entry / Time Record
Odoo CRM
sale.order.line
1:1Legal Files time entries (hours, description, billing rate, attorney) map to Odoo sale.order.line records under a sale.order quotation linked to the crm.lead. Each time entry becomes a separate order line with the attorney name stored in a custom field. If Legal Files tracks fixed billing amounts per matter, those map to sale.order.amount_total on the quotation.
Legal Files
Calendar Event
Odoo CRM
calendar.event
1:1Legal Files calendar entries (event title, start datetime, end datetime, attendees, linked matter) map to Odoo calendar.event records. The linked crm.lead is connected via the many2many relationship in calendar.event.res_partner_rel. Deadline-type events without a specific time map as all-day calendar.event records in Odoo.
Legal Files
Activity / Task
Odoo CRM
mail.activity
1:1Legal Files tasks (to-do items, internal notes, assignments) map to Odoo mail.activity records linked to the crm.lead. Task description becomes the activity note; assigned staff maps to user_id on the activity. Status (pending/complete) maps to the activity's done flag in Odoo.
Legal Files
Custom Field (Matter-level)
Odoo CRM
Custom Field on crm.lead
1:1Legal Files user-defined fields per matter type require Odoo custom fields on crm.lead. We use ir.model.fields to create the field with the matching data type (char, selection, float, date, etc.). Selection-type custom fields map value-by-value; date fields map directly. The Legal Files custom field API name is stored as a reference note for your Odoo admin.
Legal Files
Custom Field (Party-level)
Odoo CRM
Custom Field on res.partner
1:1Legal Files party custom fields (e.g., bar number, client classification, billing tier) map to res.partner custom fields created via ir.model.fields. Multi-value selection fields in Legal Files become Odoo many2many tags on res.partner. Custom field values are validated against Legal Files' pick-list constraints before insertion.
Legal Files
Matter Responsible Party
Odoo CRM
crm.lead.user_id
1:1Legal Files assigns a responsible attorney or staff member per matter. We map this to crm.lead.user_id by resolving the Legal Files user email against Odoo res.users.email. Unmatched attorneys are flagged before migration; you can assign them to an Odoo user or map them to a fallback salesperson in your Odoo team.
Legal Files
Matter-Party Relationship
Odoo CRM
crm.lead.partner_id / crm.lead.partner_assigned_id
1:1Legal Files links parties to matters via a many-to-many relationship (a matter has multiple parties: client, opposing counsel, expert). The primary client party maps to crm.lead.partner_id (the contact on the opportunity). Additional parties are recorded in a custom partner_matter_rel table or as crm.lead.partner_assigned_id for the primary assigned contact.
Legal Files
Billing / Invoice Record
Odoo CRM
account.move
1:1If Legal Files generates invoices or cost records, those map to Odoo account.move records in the 'out_invoice' type. Legal Files invoice line items (description, quantity, rate) become account.move.line entries. Odoo Accounting module must be installed for this mapping — if not present, billing data is stored as sale.order records for later conversion.
Legal Files
Email Thread
Odoo CRM
mail.message
1:1Legal Files email threads linked to a matter map to Odoo mail.message records on the crm.lead chatter. The sender email address, subject, body (HTML preserved), and timestamp are stored. Attachments within threads become ir.attachment records linked to the mail.message. Inbound mail servers in Odoo can continue threading emails after migration.
| Legal Files | Odoo CRM | Compatibility | |
|---|---|---|---|
| Matter | crm.lead1:1 | Fully supported | |
| Party | res.partner1:1 | Fully supported | |
| Document | ir.attachment1:1 | Fully supported | |
| Billable Entry / Time Record | sale.order.line1:1 | Fully supported | |
| Calendar Event | calendar.event1:1 | Fully supported | |
| Activity / Task | mail.activity1:1 | Fully supported | |
| Custom Field (Matter-level) | Custom Field on crm.lead1:1 | Fully supported | |
| Custom Field (Party-level) | Custom Field on res.partner1:1 | Fully supported | |
| Matter Responsible Party | crm.lead.user_id1:1 | Fully supported | |
| Matter-Party Relationship | crm.lead.partner_id / crm.lead.partner_assigned_id1:1 | Fully supported | |
| Billing / Invoice Record | account.move1:1 | Fully supported | |
| Email Thread | mail.message1: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.
Legal Files gotchas
No API — migration requires direct SQL Server database access
Document file transfer is separate from database migration
Email routing rules do not auto-migrate
Custom field discovery requires schema inspection
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
Discover Legal Files schema and Odoo target configuration
Before any data moves, we connect to the Legal Files SQL Server database (or export via Legal Files' native export tools) to inventory all matter types, custom field definitions, party roles, document metadata, and billing entry structures. Simultaneously, we inspect your Odoo instance — installed modules, existing crm.lead fields, crm.stage pipeline configuration, and res.partner fields. This produces a schema delta report: what Legal Files fields have direct Odoo equivalents, what requires custom field creation via ir.model.fields, what must be stored as tags or notes, and which Legal Files entities have no Odoo equivalent and will be preserved as custom fields for reference.
Resolve owner and user assignments by email
Legal Files assigns a responsible attorney and other staff to each matter. We extract all Legal Files user records with email addresses and match them against Odoo res.users.email. Matched users receive their assigned crm.lead records directly. Unmatched users are listed in a pre-migration resolution report — you can invite them to Odoo before migration or designate a fallback user. No record is loaded without a confirmed Odoo owner, preventing orphaned matter assignments in the CRM.
Load parties to res.partner, then matters to crm.lead, then documents to ir.attachment
We sequence the migration in dependency order: res.partner records (parties) load first since crm.lead records reference them via partner_id. Matters load next as crm.lead records, with stage_id mapped from Legal Files matter_status against your pre-configured crm.stage pipeline. Documents load as ir.attachment records linked to the corresponding crm.lead via res_model='crm.lead' and res_id. Billable entries load as sale.order.line records under sale.order quotations linked to each crm.lead. Each batch is validated for foreign-key integrity and row counts before the next begins.
Run a sample migration with field-level diff
A representative slice of 50–200 records — spanning different matter types, parties with multiple addresses, documents, and billable entries — migrates first. We generate a field-level diff comparing source Legal Files field values against the destination Odoo record fields. You review the diff to confirm that matter status mapping is correct, custom fields landed in the right places, owner assignments resolved as expected, and document filenames are intact. We iterate the mapping configuration based on your feedback before committing the full migration.
Execute full migration with delta-pickup and one-click rollback
The full record set loads into your Odoo instance via XML-RPC with batch commits and error logging per record. A delta-pickup window of 24–48 hours runs simultaneously — capturing any Legal Files records created or modified during the migration window so your Odoo CRM reflects the final state at cutover. Our audit log records every insert, update, and skip. If reconciliation fails, one-click rollback removes all migrated records and attachments, returning Odoo to its pre-migration state. We deliver a post-migration reconciliation report showing record counts by entity, skipped records with reasons, and delta records loaded during the pickup window.
Platform deep dives
Legal Files
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Legal Files and Odoo CRM.
Object compatibility
2 of 8 objects need a mapping; the rest are 1:1.
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
Legal Files: Not applicable — no public API exposed.
Data volume sensitivity
Legal Files 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 Legal Files to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Legal Files 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 Legal Files
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.