CRM migration
Field-level mapping, validation, and rollback between LegalEdge and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
LegalEdge
Source
Odoo CRM
Destination
Compatibility
10 of 10
objects map 1:1 between LegalEdge and Odoo CRM.
Complexity
BStandard
Timeline
24–72 hours
Overview
LegalEdge organizes data around a case-centric model: matters contain client references, attorney assignments, activity logs, billing records, and court-system integrations. Odoo CRM uses a unified crm.lead model (covering both leads and opportunities) backed by res.partner for contacts and companies, with custom fields for platform-specific properties. We map LegalEdge matters to Odoo crm.lead records, LegalEdge clients to res.partner records, and preserve all attorney assignments by matching LegalEdge user emails to Odoo user accounts. Activities (calls, meetings, notes) land as Odoo CRM activities linked to the corresponding partner and lead. Files attached in LegalEdge are extracted and reattached to the appropriate Odoo record. Custom fields in LegalEdge are created as new Odoo custom fields before migration data is loaded. Workflow automations, court-system integrations, and billing-rate configurations are not migratable and must be rebuilt manually in Odoo. We export LegalEdge workflow definitions as a reference document your team can use to configure Odoo action rules and server actions post-migration. Migration proceeds via Odoo's external XML-RPC API using batched imports of 500–1,000 records with brief pauses between batches to respect Odoo's per-request rate limits on Enterprise plans. A 24–48-hour delta window captures in-flight changes during cutover. All records receive a Source_System_ID__c tag so delta runs can de-duplicate against already-migrated rows.
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 LegalEdge 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.
LegalEdge
Case / Matter
Odoo CRM
crm.lead
1:1LegalEdge matters map directly to Odoo crm.lead records. The matter name becomes the lead name, status maps to stage values, and billing metadata is stored in custom fields on the lead. Attorney assignments resolve by email match to Odoo user accounts. Court links and case-type labels migrate as custom Char fields.
LegalEdge
Client
Odoo CRM
res.partner
1:1LegalEdge clients become Odoo res.partner records. The client name maps to the partner name field, email to email, phone to phone, and address components (street, city, state, country) map to Odoo’s address fields using the appropriate relational IDs. Multi‑matter clients retain all linked lead records under the same partner, preserving the relationship across cases.
LegalEdge
Activity: Call
Odoo CRM
mail.activity (type call)
1:1LegalEdge logged calls migrate as Odoo mail.activity records with activity type set to 'call'. The call subject maps to the activity summary, date maps to the deadline, and duration (in minutes) is stored in a custom Integer field. Call outcome and attorney email are preserved; attorney email resolves to an Odoo user ID for ownership. Each activity is linked to the related res.partner and crm.lead through Odoo's relational fields.
LegalEdge
Activity: Meeting
Odoo CRM
mail.activity (type meeting)
1:1LegalEdge meetings migrate as Odoo mail.activity records with activity type 'meeting'. Meeting title, scheduled date and time, location, and attendees are mapped to Odoo activity fields. The activity is linked to the partner and lead from the originating LegalEdge matter.
LegalEdge
Activity: Note
Odoo CRM
mail.message
1:1LegalEdge case notes migrate as Odoo mail.message records attached to the corresponding crm.lead. The note body text is stored in the message body field using the 'note' subtype. Original creation timestamp and author name are preserved in custom fields (x_note_date and x_note_author) on the message. Any file attachments linked to the note are also migrated and attached to the mail.message record, maintaining context.
LegalEdge
Document / Attachment
Odoo CRM
ir.attachment
1:1Files attached to LegalEdge matters and clients are extracted from LegalEdge storage, renamed with the source matter reference, and uploaded to Odoo's ir.attachment model linked to the corresponding crm.lead or res.partner record. Large files are chunked to stay within Odoo's attachment size limits.
LegalEdge
Custom Properties: Matter
Odoo CRM
Custom fields on crm.lead
1:1Each LegalEdge custom property on a matter is analyzed by type: text fields become Char, numeric fields become Float or Integer, date fields become Date, and pick-list values become Selection fields on crm.lead. FlitStack creates these fields in Odoo before migration data loads. Property labels are preserved in the field help text.
LegalEdge
Custom Properties: Client
Odoo CRM
Custom fields on res.partner
1:1LegalEdge client-level custom properties migrate to custom fields on res.partner using the same type-mapping logic as matter properties. Custom fields on both partner and lead are created in Odoo Studio or via the data migration script before records are imported.
LegalEdge
Billing: Billable Hours
Odoo CRM
Custom field on crm.lead
1:1LegalEdge billable hour entries are aggregated per matter and stored in a custom Float field (Billable_Hours__c) on the crm.lead. Per-entry time logs are preserved as Odoo timesheet records linked to the lead if the Odoo Timesheet app is active; otherwise, summary totals are stored on the lead record.
LegalEdge
Billing: Costs and Invoices
Odoo CRM
Custom field on crm.lead
1:1LegalEdge cost records and invoice numbers are stored in custom Char fields on the Odoo crm.lead: Case_Cost__c and Invoice_Number__c. Full invoice history and line items require the Odoo Accounting app and are handled as a separate accounting migration step after the CRM layer is live.
| LegalEdge | Odoo CRM | Compatibility | |
|---|---|---|---|
| Case / Matter | crm.lead1:1 | Fully supported | |
| Client | res.partner1:1 | Fully supported | |
| Activity: Call | mail.activity (type call)1:1 | Fully supported | |
| Activity: Meeting | mail.activity (type meeting)1:1 | Fully supported | |
| Activity: Note | mail.message1:1 | Fully supported | |
| Document / Attachment | ir.attachment1:1 | Fully supported | |
| Custom Properties: Matter | Custom fields on crm.lead1:1 | Fully supported | |
| Custom Properties: Client | Custom fields on res.partner1:1 | Fully supported | |
| Billing: Billable Hours | Custom field on crm.lead1:1 | Fully supported | |
| Billing: Costs and Invoices | Custom field on crm.lead1: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.
LegalEdge gotchas
No publicly documented API for automated export
PA UJS integration fields are non-standard
Custom fields have no documented schema
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
Discovery and schema mapping
FlitStack ingests a LegalEdge data export covering clients, matters, activities, documents, and custom property definitions. We map each LegalEdge object and field to its Odoo CRM equivalent, flagging custom properties that need new Odoo fields and identifying attorney users for email-based owner resolution. We deliver a field-creation manifest and a data-quality report listing duplicates, missing required fields, and unmapped pick-list values before any data moves.
Data validation and deduplication
We run a data-quality pass on the LegalEdge export: deduplicating clients that share an email address, normalizing state and country names to Odoo's internal ID format, and resolving LegalEdge case status values to Odoo stage names via a value-map. Records with missing required Odoo fields are flagged with a correction proposal. Billing totals are aggregated from line-item time entries per matter and stored in the target custom fields. No data is written to Odoo until validation is signed off.
Odoo schema setup and custom field creation
FlitStack creates all required custom fields in Odoo — on crm.lead for matter-level properties and on res.partner for client-level properties — using the field-creation manifest. We configure pipeline stages to match LegalEdge case statuses, set up a Sales Team for each attorney group, and configure record rules so that migrated records are visible only to the assigned attorney by default. If Odoo Community is the destination, we prepare the CSV import templates; for Enterprise, we configure the XML-RPC endpoint credentials.
Sample migration with field-level diff
A representative slice of 50–100 records (covering a mix of matter types, client sizes, and activity volumes) migrates first into a staging Odoo database. We generate a field-level diff comparing source values to destination field contents, with particular focus on custom field rendering, attorney user resolution, activity linking, and file attachment integrity. You review the diff and approve before the full run. Any mapping adjustments are captured and applied to the full migration script.
Full migration with delta-pickup cutover
The full dataset migrates into the production Odoo database via the configured import method. We apply batched commits with audit log entries for every record operation. A 24–48-hour delta window opens at the cutover time: any LegalEdge record modified or created during the window is captured in a follow-on delta batch. An audit report confirms record counts, mapping coverage, and any records that failed with their error codes. One-click rollback reverts the Odoo database to its pre-migration state if reconciliation uncovers unexpected divergences.
Platform deep dives
LegalEdge
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 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 LegalEdge and Odoo CRM.
Object compatibility
1 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
LegalEdge: Not publicly documented..
Data volume sensitivity
LegalEdge 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 LegalEdge to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your LegalEdge 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 LegalEdge
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.