CRM migration
Field-level mapping, validation, and rollback between Legal Workspace and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Legal Workspace
Source
Odoo CRM
Destination
Compatibility
10 of 10
objects map 1:1 between Legal Workspace and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Legal Workspace organizes legal practice data around matters, clients, and documents, with contacts linked to client organizations and time entries attached to matters. Odoo CRM uses res.partner for both individuals and organizations (with a company_type field distinguishing them) and crm.lead for leads and opportunities that can be converted to partner records. The migration maps Legal Workspace client contacts to res.partner records, client organizations to res.partner records with company_type set to 'company', and matters to crm.lead opportunities with stage values that correspond to matter status. We preserve original creation timestamps, assigned attorneys (mapped by email to Odoo users), and document attachments re-uploaded to Odoo attachments. Workflows, document templates, billing rules, and automation triggers do not migrate — these require Odoo-side configuration using Odoo's built-in studio, automated actions, or server actions. The migration runs via Odoo's xmlrpc API with batched imports for large datasets. During migration, we also validate data integrity by cross-checking field lengths, required constraints, and unique identifiers before committing each batch.
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 Workspace 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 Workspace
Contact (individual)
Odoo CRM
res.partner
1:1Legal Workspace individual contacts migrate to Odoo res.partner records with company_type set to 'person'. The email field maps directly to partner email; phone and address fields map to Odoo's standard contact fields. Multiple addresses per contact collapse to the primary address unless child_ids relationships are configured.
Legal Workspace
Client Organization
Odoo CRM
res.partner
1:1Legal Workspace client organizations map to res.partner with company_type set to 'company'. The organization name becomes the partner name; industry and employee count map to custom fields or Odoo's industry_id if the selection list is configured. Parent-child organizational hierarchies use Odoo's parent_id field on res.partner.
Legal Workspace
Matter
Odoo CRM
crm.lead
1:1Each Legal Workspace matter becomes an Odoo crm.lead opportunity. Matter title maps to crm.lead name; matter description maps to crm.lead description. The assigned attorney maps via email lookup to res.users.id and populates crm.lead user_id. Matter status values map to Odoo CRM stage_id values using a value_mapping table.
Legal Workspace
Matter Status
Odoo CRM
crm.stage
1:1Legal Workspace matter status values ('Open', 'Pending Review', 'Closed Won', 'Closed Lost') map to Odoo CRM stage records. Stages are created in Odoo under CRM > Configuration > Stages if they do not exist. Each stage has a name, sequence, and fold flag controlling whether the stage appears collapsed in pipeline view.
Legal Workspace
Time Entry
Odoo CRM
account.analytic.line
1:1Legal Workspace billable hours map to Odoo timesheet entries (account.analytic.line) linked to the migrated matter via project_id and task_id if Odoo's timesheet app is active. If the timesheet module is not in use, time entries migrate as custom fields on the crm.lead record for reference and reporting continuity.
Legal Workspace
Document / Attachment
Odoo CRM
ir.attachment
1:1Documents attached to Legal Workspace matters are downloaded and re-uploaded to Odoo's ir.attachment table. Each attachment stores res_model ('crm.lead') and res_id referencing the migrated matter record. Original filenames and MIME types are preserved; create_date from the source record transfers as attachment create_date.
Legal Workspace
Billing / Invoice Record
Odoo CRM
account.move
1:1Legal Workspace invoice records migrate to Odoo account.move entries with move_type='out_invoice' for client invoices. Invoice line items map to account.move.line records linked via product_id. If Odoo accounting is not active, invoice metadata migrates as custom fields on the crm.lead for financial reference.
Legal Workspace
User / Attorney
Odoo CRM
res.users
1:1Legal Workspace attorney and staff user records are matched to Odoo res.users by email address. Fields like bar_number, practice_area, and billing_rate migrate as custom fields on res.users since Odoo's standard user model does not include these legal-specific attributes. They preserve historical user data for reporting continuity.
Legal Workspace
Custom Matter Field
Odoo CRM
ir.model.field (custom)
1:1Legal Workspace custom fields on matters (e.g., case_number, court_location, opposing_counsel) require pre-creation in Odoo under Settings > Technical > Database Structure > Models before migration. We map each custom field to the corresponding custom field on crm.lead, using field type matching (char, text, date, selection, many2one) from the source schema.
Legal Workspace
Activity Log
Odoo CRM
mail.message
1:1Legal Workspace activity entries (calls logged, emails sent, notes added) migrate as Odoo mail.message records linked to the crm.lead via res_model and res_id. Activity type distinguishes between call, email, meeting, and note — mapped to Odoo's mail.activity.type taxonomy for reporting parity.
| Legal Workspace | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact (individual) | res.partner1:1 | Fully supported | |
| Client Organization | res.partner1:1 | Fully supported | |
| Matter | crm.lead1:1 | Fully supported | |
| Matter Status | crm.stage1:1 | Fully supported | |
| Time Entry | account.analytic.line1:1 | Fully supported | |
| Document / Attachment | ir.attachment1:1 | Fully supported | |
| Billing / Invoice Record | account.move1:1 | Fully supported | |
| User / Attorney | res.users1:1 | Fully supported | |
| Custom Matter Field | ir.model.field (custom)1:1 | Fully supported | |
| Activity Log | 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 Workspace gotchas
Document templates and custom fields are configuration data, not matter data
Integrated timer entries and manual time records use different storage paths
No public API or developer portal
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
Audit Legal Workspace schema and custom fields
We export the full Legal Workspace object schema — contacts, organizations, matters, custom fields, and document metadata — to identify every field that needs mapping. Custom fields are flagged for Odoo-side pre-creation. The audit report includes field type, pick-list values for selection fields, and relationship cardinality (N:1, N:N) for review before mapping logic is written. We also provide a data sample for manual validation before coding begins.
Create Odoo custom fields and CRM pipeline stages
Based on the schema audit, we deliver a custom field creation checklist for your Odoo admin. Each custom field on crm.lead and res.partner (case_number, practice_area, billing_rate, etc.) is listed with the target field name, type, and selection values. We also provide stage name mappings for matter status values so your admin can configure the CRM pipeline stages in Odoo before data lands.
Resolve user and attorney assignments by email
Legal Workspace user records are matched against Odoo res.users by email address. Unmatched users are listed in a pre-migration report with the option to invite them to Odoo first or designate a fallback user. No matter record migrates without a resolved crm.lead user_id — orphan assignments are blocked before the migration run to prevent downstream reporting gaps. This step ensures every opportunity owner is assigned before data is loaded.
Run sample migration with field-level diff
A representative slice — typically 100–300 records spanning contacts, client organizations, and matters — migrates first. We generate a field-level diff comparing Legal Workspace field values to Odoo field values so you can verify attorney resolution, stage mapping, custom field population, and document attachment count before committing to the full run. This validation step reduces risk of data mismatches and ensures stakeholder confidence before the final load.
Execute full migration with delta-pickup window
The full dataset migrates in API-batched loads, with parent objects (organizations, contacts) migrating before child objects (matters, time entries) to satisfy Odoo's foreign key constraints. A delta-pickup window captures any records created or modified in Legal Workspace during cutover. All operations are logged in an audit table; one-click rollback reverts Odoo to pre-migration state if reconciliation reveals unexpected gaps. This ensures data completeness and allows a smooth transition without prolonged downtime.
Platform deep dives
Legal Workspace
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Legal Workspace and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Legal Workspace and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Legal Workspace 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
Legal Workspace: Not publicly documented — typical SaaS limits assumed and confirmed during scoping.
Data volume sensitivity
Legal Workspace 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 Workspace to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Legal Workspace 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 Workspace
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.