CRM migration

Migrate from Legl to Odoo CRM

Field-level mapping, validation, and rollback between Legl and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

Legl logo

Legl

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

11 of 11

objects map 1:1 between Legl and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Legl organizes data around legal-industry concepts: businesses with registration numbers, contacts tied to AML and KYC compliance, engage requests tracking client due diligence, risk assessments covering regulatory checks, and configurable multi-step workflows for onboarding. Odoo CRM uses crm.lead (which can represent a Lead or Opportunity depending on stage), res.partner (unified company-contact model), and crm.stage for pipeline states. No Odoo native object handles AML compliance records or risk assessments — those require custom fields on res.partner or dedicated models. We migrate Legl businesses to res.partner (company mode), Legl contacts to res.partner (individual mode), engage requests and risk assessments to custom fields on the partner record, payments as account.move lines attached to partners, and activities to Odoo mail.message and crm.activity. Legl workflows do not migrate — Odoo automation rules run at the object level and must be rebuilt in Odoo Studio. Our migration engine reads Legl via REST API (3,600 requests/hour sustained), transforms records into Odoo XML-RPC payloads, and batches uploads to stay within Odoo's per-user API throughput limits. A delta-pickup window captures records modified during cutover. We deliver a sample migration with field-level diff before committing the full run.

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

Legl logo

Legl

What's pushing teams away

  • UK-centric — international firms outside the SRA/AML UK framework don't get the same out-of-the-box compliance fit.
  • Pricing is published as 'from $50/user/month' (small firms) scaling to $20–30/user/month at enterprise scale per third-party listings, but exact rates require a sales conversation, so smaller firms cannot self-serve.
  • Compliance-tool focus means firms eventually needing full practice management (time, billing, matter management) still need a separate system — Legl is not a full PM replacement.
  • Integration footprint to general legal practice management systems (Clio, Actionstep, Leap) is partner-led rather than published as packaged connectors, requiring API work in some cases.
  • Mid-market positioning leaves both very small (1–5 fee earner) and very large (1,000+ fee earner) firms underserved relative to dedicated alternatives.

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 Legl objects map to Odoo CRM

Each row shows how a Legl 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.

Legl

Legl Business

maps to

Odoo CRM

res.partner (company mode)

1:1
Fully supported

Legl business maps directly to Odoo res.partner with is_company=True. Company name maps to name, domain to website, and industry to industry_id. Registration number, VAT number, and registration date have no Odoo standard fields — these become x_registration_number, x_vat_number, and x_registration_date custom fields on res.partner. The Legl business ID is stored as x_legl_business_id for delta-run deduplication.

Legl

Legl Contact

maps to

Odoo CRM

res.partner (individual mode)

1:1
Fully supported

Legl contact maps to Odoo res.partner with is_company=False. First name and last name combine into the Odoo name field; email maps to email, phone to phone, and mobile to mobile. Job title from Legl has no standard Odoo partner field — it becomes x_job_title custom field. The Legl contact ID is stored as x_legl_contact_id for traceability.

Legl

Legl Contact.primary_business_id

maps to

Odoo CRM

res.partner.parent_id

1:1
Fully supported

Legl's primary_business_id link on a contact translates to res.partner.parent_id pointing to the corresponding Legl Business mapped as res.partner (company). This satisfies Odoo's requirement that individual contacts have a parent company. Legl contact-secondary-business associations are preserved as additional res.partner records linked via child_ids chain.

Legl

Legl Engage Request

maps to

Odoo CRM

res.partner custom fields

1:1
Fully supported

Legl engage requests track AML/CDD workflow state per business. Odoo CRM has no native engage-request object. We create x_engage_status (selection: pending, in_review, approved, rejected), x_engage_completed_date (datetime), and x_engage_reviewer (char) on res.partner. The engage request ID is stored as x_legl_engage_id for reference. If your firm tracks multiple engage requests per business, a separate res.partner relation table is required.

Legl

Legl Risk Assessment

maps to

Odoo CRM

res.partner custom fields

1:1
Fully supported

Legl risk assessments hold KYC check results with type, status, PDF URL, and completion timestamp. Odoo CRM has no native risk-assessment object. We create x_risk_type (selection: business, individual, enhanced_due_diligence), x_risk_status (selection: pending, passed, failed, requires_review), x_risk_completed_date (datetime), and x_risk_pdf_url (char) on res.partner. The risk assessment ID is stored as x_legl_risk_id.

Legl

Legl Payment

maps to

Odoo CRM

account.payment linked to res.partner

1:1
Fully supported

Legl payments (for subscription billing or client invoicing) map to Odoo account.payment records linked to the res.partner representing the paying entity. Amount, currency, and payment_date map directly. Legl payment status (pending, completed, failed) maps to Odoo payment state. Payment ID stored as x_legl_payment_id. Requires Odoo Accounting app to be installed.

Legl

Legl Workflow

maps to

Odoo CRM

No equivalent — documentation for Odoo Studio rebuild

1:1
Fully supported

Legl workflows are organization-level multi-step automation with configurable steps, assignee rules, and status transitions. Odoo automation rules operate per-object and cannot replicate Legl's cross-entity workflow model natively. We export Legl workflow definitions as a structured JSON document and deliver an Odoo Studio rebuild guide mapping each Legl step to Odoo server actions and automated actions on crm.lead or res.partner.

Legl

Legl Activity (calls, meetings, notes)

maps to

Odoo CRM

mail.message and crm.activity

1:1
Fully supported

Legl activity records (call logs, meeting records, notes attached to a business or contact) migrate to Odoo mail.message entries on the corresponding res.partner. Original timestamps and author information are preserved. Call duration maps to mail.message.x_duration_seconds as a custom field. Meeting subject and location map to the body field.

Legl

Legl Business Owner

maps to

Odoo CRM

res.users linked by email match

1:1
Fully supported

Legl stores owner_id on each business record. We resolve this to an Odoo res.users record by matching the owner email against Odoo user login. Unmatched owners are flagged before migration — your Odoo admin either creates the user first or assigns records to a fallback user. Owner ID stored as x_legl_owner_id for audit.

Legl

Legl Integration Connections

maps to

Odoo CRM

No equivalent — third-party connections must be rebuilt

1:1
Fully supported

Legl integrates with Clio, Actionstep, DPS, P4W, Proclaim, ShareDo, and Quill. These third-party connections cannot migrate. Each integration must be rebuilt in Odoo via Odoo's app connector ecosystem, direct API webhook, or a middleware tool. We document the Legl integration endpoints active in your account as a rebuild reference.

Legl

Legl Organisation Settings

maps to

Odoo CRM

res.company configuration

1:1
Fully supported

Legl organisation-level settings (company name, address, branding) map to Odoo res.company. Legl API organisation endpoint provides the source data. Odoo company currency, fiscal year, and letter format settings must be configured manually post-migration — we provide a configuration checklist as part of the handoff package.

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.

Legl logo

Legl gotchas

Medium

Beta API endpoints carry schema stability risk

Medium

Sandbox access requires direct support contact

Low

Payment checkout URLs reference external Stripe sessions

Low

AML audit dashboards require real-time data from connected PMS

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 API throughput is constrained by per-user concurrent call limits

    Odoo's XML-RPC interface does not publish a public rate ceiling, but in practice the server enforces per-user concurrent call limits that throttle migration throughput. Legl's API allows 3,600 requests/hour (sustained) with a burst of 120 requests/minute. Extracting data from Legl is fast; loading into Odoo is the bottleneck. We batch Odoo writes into chunks of 50 records per XML-RPC call and pace uploads to avoid Odoo worker queue saturation. Large migrations (50,000+ records) may require multiple Odoo user sessions or a direct PostgreSQL insertion strategy for the initial load, followed by XML-RPC validation passes.

  • Legl engage requests and risk assessments require custom field creation in Odoo before data lands

    Odoo CRM has no native objects for AML compliance tracking or KYC risk assessment — these are Legl-specific concepts with no crm.lead or res.partner field equivalent. Before migration runs, your Odoo admin (or our team via Odoo Studio) must create x_engage_status, x_risk_type, x_risk_status, and their companion datetime and reference fields on res.partner. If your firm tracks multiple engage requests or risk assessments per business entity, a separate LeglEngageRequest model in Odoo (via Odoo Studio or custom module) is needed — one-to-many relation not handled by simple custom fields. We provide the exact field definitions and Odoo Studio export file as part of the pre-migration schema setup plan.

  • Lead-to-partner conversion in Odoo drops unmapped custom fields unless inheritance is adjusted

    When an Odoo crm.lead is converted to an Opportunity, Odoo calls _convert_opportunity which creates a res.partner (if the lead has no partner_id) and optionally links the lead to that partner. Custom fields on the crm.lead record — including our x_engage_status and x_risk_type fields — do not automatically propagate to the newly created partner unless _convert_opportunity is extended in a custom module. Since Legl compliance data lives on res.partner (not on crm.lead), any leads converted post-migration will lose their Legl compliance context. We mitigate this by migrating Legl businesses and contacts directly to res.partner as company/individual partners, bypassing crm.lead for compliance-heavy records. Only Legl records that represent active sales opportunities are created as crm.lead.

  • Legl's N:1 contact-to-business model requires primary-company designation in Odoo

    Legl allows a contact to be associated with multiple businesses (primary_business_id plus secondary associations). Odoo's res.partner model uses a single parent_id to designate the company for an individual contact. Secondary business associations collapse into child_ids on the secondary company partner, which can cause confusion in Odoo's contact tree view. We migrate the Legl primary_business_id as the Odoo parent_id, flag secondary associations in x_secondary_business_ids as a custom char field storing a semicolon-separated list of Legl business IDs, and recommend that your Odoo admin rebuilds multi-company contact associations using Odoo's Contacts menu and the partner's Contact Information tab post-migration.

  • Legl workflow definitions cannot migrate — Odoo automation rules run at object level

    Legl workflows are organization-level constructs with configurable steps, assignee rules, stage transitions, and conditional branching that span multiple entity types (business, contact, engage request). Odoo automation rules (Automated Actions, Server Actions, CRM Sales Team automations) operate on individual Odoo models — there is no Odoo-native equivalent for cross-object, multi-step workflow orchestration at the Legl level. We export your Legl workflow definitions as structured JSON including step sequence, assignee logic, and conditional rules, then deliver an Odoo Studio rebuild guide mapping each Legl step to the corresponding Odoo automated action trigger on crm.lead, res.partner, or a custom engage-request model. Rebuild effort depends on Legl workflow complexity — single-step workflows take under an hour; complex multi-step onboarding flows may require two to three days of Odoo Studio configuration.

Migration approach

Six steps for a successful Legl to Odoo CRM data migration

  1. Audit Legl data inventory and configure Odoo schema

    We inventory all Legl objects accessible via the REST API — businesses, contacts, engage requests, risk assessments, payments, activities, and workflows — and record their record counts, field inventories, and association cardinalities. Simultaneously, we configure the Odoo CRM schema: we create all required custom fields on res.partner (engage status, risk type/status, Legl IDs), configure pipeline stages in crm.lead to match any Legl sales-process records, set up Odoo users matched to Legl owner emails, and install the Odoo Accounting app if payment migration is required. We deliver a schema setup checklist before data extraction begins.

  2. Extract Legl data via REST API with rate-limit-aware pagination

    Legl's REST API at api.legl.com/v1 exposes list and retrieve endpoints for all major objects. We paginate through each object type using Legl's cursor-based pagination, respecting the 3,600 requests/hour sustained limit. Engage requests and risk assessments are fetched per business using the /businesses/{id}/engage_requests and /businesses/{id}/risk_assessments sub-endpoints. All records are written to a local staging store with original timestamps, owner IDs, and Legl internal IDs preserved. We flag any records with missing required fields before the transform phase.

  3. Transform records and resolve owner cross-references

    Legl records are transformed into Odoo XML-RPC payloads. Legl businesses become res.partner (is_company=True) with custom compliance fields. Legl contacts become res.partner (is_company=False) with parent_id pointing to the primary business partner. Owner IDs from Legl are resolved against the Odoo user list by email match; unmatched owners are flagged with a fallback assignment rule (designated admin user or unassigned bucket). Engage requests and risk assessments are written as field values on the corresponding res.partner. Legl workflow definitions are serialized to JSON and stored as an attachment on the Odoo res.company record for rebuild reference.

  4. Run sample migration with field-level diff and validate

    A representative sample — typically 200–500 records covering businesses, contacts, engage requests, and risk assessments — is migrated first. We generate a field-level diff comparing source Legl values against the destination Odoo record values for every mapped field. Compliance custom fields, owner resolution, and partner hierarchy are verified manually against the source data. You review the diff and sign off before the full migration runs. Any field mapping errors are corrected in the transform layer before re-running the sample.

  5. Execute full migration with delta-pickup window and post-migration audit

    The full dataset is migrated in batches of 50 records per Odoo XML-RPC call, paced to avoid worker saturation. A delta-pickup window opens at migration start: any Legl records created or modified after the extraction snapshot are re-fetched at cutover and applied as a final delta pass. An audit log records every record written, every field mapped, and every owner resolved. We run a reconciliation count against Legl record totals. One-click rollback reverts all Odoo writes if reconciliation fails. We deliver the Odoo Studio rebuild guide for Legl workflows and a custom-field reference sheet for your Odoo admin.

Platform deep dives

Context on both ends of the pair

Legl logo

Legl

Source

Strengths

  • Purpose-built for law firm client onboarding and AML compliance workflows
  • ISO 27001:2013 certified platform with documented information security controls
  • Well-structured REST API with OpenAPI spec and browsable HTML interface
  • Rate limits are generous at 3600 req/hour with a sandbox environment for integration testing
  • Connects natively with major legal PMS platforms including Clio, Actionstep, Proclaim, and P4W

Weaknesses

  • Legl functions as an overlay/orchestration layer rather than a full practice management system
  • No public pricing published — sales-led engagement required to obtain tier details
  • Zero reviews on G2 and no presence on Capterra makes independent evaluation difficult
  • Beta API endpoints for RiskAssessments may change schema without advance notice
  • Historical transaction journals and matter narrative content are not exposed via API — reside in connected PMS
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. All 8 core objects map 1:1 between Legl and Odoo CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Legl and Odoo CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Legl and Odoo CRM.

  • 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

    Legl: 3600 requests per hour sustained, burst rate of 120 requests per minute.

  • Data volume sensitivity

    B

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

Estimator

Estimate your Legl 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 Legl to Odoo CRM data migrations

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

Can't find your answer?

Walk through your Legl to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most Legl-to-Odoo migrations complete within 48–72 hours of clock time for datasets under 10,000 total records. Larger datasets with extensive engage-request and risk-assessment histories, or setups with more than 20 custom fields, extend to 5–10 days. The longest single phase is the Odoo schema setup (custom fields, stage configuration) — typically one to two days — because Legl's compliance objects require custom-field creation in Odoo Studio before data can land. API extraction from Legl adds two to four hours per 10,000 records at the sustained rate limit.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Legl.
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