CRM migration

Migrate from My Legal Software to Odoo CRM

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 logo

My Legal Software

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between My Legal Software and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

My Legal Software logo

My Legal Software

What's pushing teams away

  • Session timeouts occur without warning during active use, causing attorneys to lose unsaved case notes and form entries mid-session, which reviewers flag as a recurring frustration.
  • Pricing is not published on the website and requires contacting sales for a custom quote, making it difficult to assess total cost of ownership during the migration planning phase.
  • Advanced users report that the platform lacks depth in complex practice areas and customization options compared to purpose-built tools for larger or specialized law firms.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How My Legal Software objects map to Odoo CRM

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

maps to

Odoo CRM

res.partner

1:1
Fully supported

My 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

maps to

Odoo CRM

res.partner (commercial partner)

1:1
Fully supported

My 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

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Each 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

maps to

Odoo CRM

project.project

1:1
Fully supported

For 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

maps to

Odoo CRM

account.analytic.line

1:1
Fully supported

My 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

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

My 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

maps to

Odoo CRM

mail.message

1:1
Fully supported

My 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

maps to

Odoo CRM

calendar.event

1:1
Fully supported

My 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

maps to

Odoo CRM

ir.model.fields (custom)

1:1
Fully supported

My 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

maps to

Odoo CRM

account.move

1:1
Fully supported

My 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

maps to

Odoo CRM

res.users

1:1
Fully supported

My 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

maps to

Odoo CRM

None (must rebuild)

1:1
Fully supported

My 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.

Gotchas + challenges

What specifically takes care here

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 logo

My Legal Software gotchas

Medium

Unexpected session timeouts cause lost unsaved work

Medium

Pricing requires sales contact and is not published

Low

Multi-year billing and trust records may reference inactive Case IDs

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Odoo res.partner unifies contacts and companies, breaking My Legal Software's separate client-company model

    My Legal Software stores clients and companies as distinct tables with an association record linking them. Odoo collapses this into a single res.partner record where is_company=True identifies organizations. We resolve this by: mapping My Legal Software companies to is_company=True partners first, then mapping My Legal Software individual clients to is_company=False partners that carry the associated company as parent_id on res.partner. The original client-company link from My Legal Software is preserved in a custom x_mls_company_id field on the res.partner record. If your My Legal Software data has clients with multiple associated companies (an N:1 or N:N relationship in My Legal Software), Odoo will store one as parent_id and surface the others in a custom x_mls_additional_companies JSON field — your Odoo administrator decides how to handle the multi-company case in your firm.

  • My Legal Software custom form fields require Odoo ir.model.fields creation before migration can reference them

    My Legal Software allows firms to define custom fields per matter type — practice_area, opposing_counsel, court_jurisdiction, or settlement_amount. Odoo has no pre-existing equivalent for most of these. We create the corresponding ir.model.fields records on the crm.lead model with the correct ttype (selection for pick-lists, char for text, float for monetary values, date for date fields). Selection-type custom fields require an ir.model.fields.selection record per allowed value. We generate a field-creation script as part of the migration plan so your Odoo administrator can review and apply it before the data migration run. If the custom field uses a data type Odoo does not support natively, we flag it as x_mls_custom_field and store the raw value as text for manual resolution.

  • My Legal Software matter status values must map to Odoo crm.stage records that exist in the destination database first

    Odoo crm.lead.stage_id is a many2one pointing to crm.stage, which is a record in the database — not a pick-list defined in configuration. If your My Legal Software matter statuses (Open, Pending, Archived, etc.) have a specific stage ordering and probability values your firm relies on for reporting, those stages must be created in Odoo before the migration runs. We deliver a stage-creation plan as part of the migration package: a JSON payload that creates the crm.stage records with the correct sequence, name, and fold values matching your My Legal Software status logic. The migration then uses those stage IDs in the value-mapping table so the crm.lead records land in the correct pipeline stage immediately on import.

  • Billable time entries without an associated matter cannot auto-link to an Odoo project or analytic account

    My Legal Software allows time entries to be logged at the firm level or against a client without a specific matter. In Odoo, account.analytic.line records require a project_id to appear in timesheet reports and to flow through Odoo's timesheet invoicing policy. We handle this by creating a default 'General / No Matter' project.project record in Odoo during setup and assigning unmatched time entries to that project. You can reassign them to specific matters after migration using Odoo's timesheet kanban view. We flag each such entry with a x_mls_no_matter=True custom field so your billing team can audit the set before finalizing invoices.

  • My Legal Software workflow and automation rules do not migrate — they must be rebuilt in Odoo's Studio or ir.actions.server

    My Legal Software automations operate on matter-level triggers: auto-assign to attorney on creation, send reminder emails on approaching deadlines, escalate based on status changes. Odoo's equivalent constructs are ir.actions.server (for automated actions), mail.tracking.value (for change logging), and Odoo Studio flows. These are fundamentally different data structures — there is no import-compatible format. We export your My Legal Software automation definitions as a structured JSON document listing each rule's trigger_condition, action_type, and associated_matter_type. Your Odoo administrator reviews this document and rebuilds the automations using Odoo's Studio or a developer-assisted ir.actions.server configuration. The JSON is delivered alongside the migration plan before the data run begins.

Migration approach

Six steps for a successful My Legal Software to Odoo CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

My Legal Software logo

My Legal Software

Source

Strengths

  • Consolidates case management, billing, document storage, and marketing into a single integrated platform.
  • User-friendly interface consistently praised by small firm reviewers for ease of adoption and daily use.
  • Built-in client communication portal and case notes sharing reduce reliance on external collaboration tools.
  • Responsive customer service with high satisfaction scores on third-party review platforms.
  • Flexible storage allows uploading files without strict size limits per the G2 review data.

Weaknesses

  • Session timeouts occur without warning, risking loss of unsaved work during active sessions.
  • Pricing model is opaque and requires contacting sales, complicating budget forecasting.
  • Platform is best suited for smaller firms and lacks the depth required by complex or large-scale practices.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across My Legal Software and Odoo CRM.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    My Legal Software: Not publicly documented.

  • Data volume sensitivity

    B

    My Legal Software doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your My Legal Software to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about My Legal Software to Odoo CRM data migrations

Answers to the questions buyers ask most during My Legal Software to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most My Legal Software to Odoo CRM migrations complete in 48–72 hours of clock time for setups under 10,000 records. Law firms with 100,000+ records spanning decades of matter history, extensive document attachments, and multiple custom form field types extend to 10–14 days. The longest planning step is creating the crm.stage records and ir.model.fields custom fields that match your My Legal Software matter-status logic and custom field types before data can be written.

Adjacent paths

Related migrations to explore

Ready when you are

Move from My Legal Software.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day