CRM migration
Field-level mapping, validation, and rollback between My Legal Software and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
My Legal Software
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between My Legal Software and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
My Legal Software organizes law firm data around clients, matters, documents, and billable hours. Odoo CRM uses a unified res.partner model (combining contact and company records), crm.lead for opportunities and case tracking, project.project for matter-level project management, and account.analytic.line for time tracking that feeds directly into Odoo's native invoicing. We extract your My Legal Software records via the platform's export interface and REST API, transform the schema to match Odoo's PostgreSQL-backed models, then push data through Odoo's xmlrpc interface respecting field-level validation and relational integrity. We map client records to res.partner (splitting name fields into name components), matter records to crm.lead with stage values mapped to Odoo pipeline stages, time entries to account.analytic.line linked to the corresponding partner and project, and file attachments to ir.attachment records associated with the parent Odoo record. My Legal Software custom form fields map to Odoo's ir.model.fields as custom fields on res.partner or crm.lead. Automations, email templates, and workflow rules do not migrate — we export those definitions as JSON for your Odoo administrator to rebuild using Odoo's Studio or automation rules engine. The result is a fully reconciled Odoo instance with your historical client data intact and every relational link preserved.
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 My Legal Software 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.
My Legal Software
Client / Contact
Odoo CRM
res.partner
1:1My Legal Software stores clients as a separate entity from companies. Odoo res.partner unifies both — we split My Legal Software name fields into partner name components and set is_company=true for entities that are companies. The original My Legal Software client ID is preserved as an external ID string field for traceability.
My Legal Software
Company / Firm
Odoo CRM
res.partner (commercial partner)
1:1My Legal Software company records map to Odoo res.partner with is_company=True. Parent-child relationships between My Legal Software companies map to Odoo's parent_id field on res.partner. The commercial_partner_id field is derived from the topmost parent in the hierarchy. This ensures that company-level analytics and reporting work correctly in Odoo's CRM and accounting modules.
My Legal Software
Matter / Case
Odoo CRM
crm.lead
1:1Each My Legal Software matter becomes an Odoo crm.lead opportunity. The matter name maps to crm.lead name; the matter status maps to crm.lead stage_id through a value-mapping table. Primary client (res.partner) is set as partner_id on the lead. matter_type or practice_area from My Legal Software maps to a custom picklist field in Odoo for segmentation.
My Legal Software
Matter / Case
Odoo CRM
project.project
1:1For firms that use complex matters with multiple tasks, deadlines, and billing milestones, we also create a project.project record alongside the crm.lead. The project is linked to the same res.partner and carries the matter's description and custom fields. Odoo's project.task model then tracks individual work items within the matter.
My Legal Software
Billable Time Entry
Odoo CRM
account.analytic.line
1:1My Legal Software time entries map to Odoo account.analytic.line records linked to the associated project (project_id) and res.partner (partner_id). The hours amount maps to unit_amount in analytic lines. Odoo's timesheet invoicing policy then allows these lines to generate account.move invoice lines automatically.
My Legal Software
Document / File Attachment
Odoo CRM
ir.attachment
1:1My Legal Software file attachments are re-uploaded to Odoo's ir.attachment table linked to the corresponding res.partner, crm.lead, or project.project record via res_model and res_id fields. File name, MIME type, and file size are preserved. Inline images in matter notes are extracted and stored as separate binary attachments.
My Legal Software
Case Note / Activity Log
Odoo CRM
mail.message
1:1My Legal Software case notes map to Odoo mail.message records with message_type='comment'. They are linked to the res.partner or crm.lead via res_model and res_id. Original author and create_date are preserved — the mail.message create_uid and create_date fields carry that information.
My Legal Software
Calendar Event / Deadline
Odoo CRM
calendar.event
1:1My Legal Software calendar entries and matter deadlines map to Odoo calendar.event records. Start datetime and stop datetime are preserved. The event is linked to the relevant crm.lead or project.task via res_model and res_id. Attendees map to calendar.attendee records linked to res.partner.
My Legal Software
Custom Form Field
Odoo CRM
ir.model.fields (custom)
1:1My Legal Software custom fields defined per matter type require Odoo custom fields on crm.lead or project.project. We create ir.model.fields records with the appropriate ttype (char, text, selection, float, date, etc.) and relate them to the model. Selection-type custom fields use a value-mapping table to preserve the pick-list options.
My Legal Software
Invoice / Billing Record
Odoo CRM
account.move
1:1My Legal Software invoices map to Odoo account.move records of type='out_invoice'. The invoice lines reference the analytic lines (account.analytic.line) that were created from billable time entries, preserving the line-item relationship. Partner payment terms from My Legal Software map to Odoo's property_payment_term_id on res.partner.
My Legal Software
Staff / User
Odoo CRM
res.users
1:1My Legal Software staff members map to Odoo res.users records. Resolution is by email match — each My Legal Software owner_email is matched to an Odoo user login. Unmatched owners are flagged before migration and assigned to a fallback user (or invited to Odoo first). Staff role in My Legal Software maps to Odoo access groups.
My Legal Software
Workflow / Automation Rule
Odoo CRM
None (must rebuild)
1:1My Legal Software automation rules and follow-up sequences do not have an equivalent in Odoo CRM that can receive a direct data migration. We export the rule definitions as JSON including trigger conditions, action types, and associated matter types. Odoo administrators rebuild these as ir.actions.server records or Studio automation rules in the destination system.
| My Legal Software | Odoo CRM | Compatibility | |
|---|---|---|---|
| Client / Contact | res.partner1:1 | Fully supported | |
| Company / Firm | res.partner (commercial partner)1:1 | Fully supported | |
| Matter / Case | crm.lead1:1 | Fully supported | |
| Matter / Case | project.project1:1 | Fully supported | |
| Billable Time Entry | account.analytic.line1:1 | Fully supported | |
| Document / File Attachment | ir.attachment1:1 | Fully supported | |
| Case Note / Activity Log | mail.message1:1 | Fully supported | |
| Calendar Event / Deadline | calendar.event1:1 | Fully supported | |
| Custom Form Field | ir.model.fields (custom)1:1 | Fully supported | |
| Invoice / Billing Record | account.move1:1 | Fully supported | |
| Staff / User | res.users1:1 | Fully supported | |
| Workflow / Automation Rule | None (must rebuild)1: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.
My Legal Software gotchas
Unexpected session timeouts cause lost unsaved work
Pricing requires sales contact and is not published
Multi-year billing and trust records may reference inactive Case IDs
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 My Legal Software data via export and API
We connect to your My Legal Software instance using read-only credentials and export records in structured CSV or JSON. We extract clients, companies, matters, time entries, documents, case notes, and calendar events in dependency order — clients first, then matters, then time entries and documents that reference them. For binary file attachments, we download each file to local storage and generate a manifest mapping file ID to file path. All exports include the source record's create_date, write_date, and owner information. We verify record counts against your My Legal Software reports before proceeding to transformation.
Create Odoo schema (stages, custom fields, project structure)
Before any data is written to Odoo, we create the required crm.stage records with your matter-status values, create ir.model.fields custom fields on crm.lead and res.partner for My Legal Software custom form fields, and (if applicable) create the project.project records for matters requiring project-level task tracking. We generate this schema as an Odoo data file (CSV or XML) that your administrator applies in a staging database first. We validate the schema against the exported field names to confirm every My Legal Software field has a destination before transformation begins.
Run sample migration with field-level diff
A representative slice of 100–500 records — spanning clients, matters, time entries, documents, and notes — migrates first into a staging Odoo database. We generate a field-level diff comparing each source field value against the destination field value in Odoo. You review the diff to confirm: matter status-to-stage mapping is correct, billable hours landed in the right analytic lines, and documents are accessible on the correct crm.lead or res.partner. We iterate on the transformation rules until the sample passes your reconciliation criteria before the full run commits.
Execute full migration with delta-pickup window
The full dataset migrates into your production Odoo instance via xmlrpc API with transactional batch commits. A delta-pickup window of 24–48 hours runs concurrently: any records created or modified in My Legal Software during the migration window are captured and applied as an incremental update after the main run. Owner resolution by email match is applied across all records — unmatched owners are flagged in a report and assigned to a fallback user (or invited to Odoo) before the final reconciliation. We generate an audit log CSV listing every record migrated, its source ID, destination ID, and migration timestamp.
Deliver reconciliation report and automation export
Post-migration, we run a reconciliation query comparing total record counts, sum of billable hours, and document attachment count between My Legal Software and Odoo. The report highlights any records that could not be migrated (with reason codes: missing required field, attachment too large, unresolved owner). We deliver the automation-export JSON alongside the reconciliation report. One-click rollback is available for 72 hours after go-live if reconciliation reveals systemic issues — this restores Odoo to its pre-migration snapshot state.
Platform deep dives
My Legal Software
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 My Legal Software 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
My Legal Software: Not publicly documented.
Data volume sensitivity
My Legal Software 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 My Legal Software to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your My Legal Software 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 My Legal Software
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.