CRM migration

Migrate from Lexis Affinity to Odoo CRM

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

Lexis Affinity logo

Lexis Affinity

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Lexis Affinity and Odoo CRM.

Complexity

BStandard

Timeline

72–96 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Lexis Affinity organizes law firm data around clients, matters, trust accounts, and document folders — a structure built for legal practice management rather than general sales CRM. Odoo CRM uses a unified res.partner model for both contacts and organizations, with crm.lead holding opportunities, and its accounting module handling invoicing separately from the CRM layer. FlitStack AI reads Lexis Affinity data via its export API and maps every client into res.partner, every matter into crm.lead (tagged with the original matter number for reference), and billable time entries into crm.lead activities or project.task depending on your Odoo configuration. Trust account balances migrate as monetary custom fields on the partner record since Odoo's native accounting module does not replicate legal trust-account semantics without additional configuration. Documents export from Lexis Affinity as file packages and re-upload to Odoo's ir.attachment model linked to the corresponding partner or lead record. Workflow automations built in Lexis Affinity — including matter-stage triggers and billing automations — do not migrate and must be rebuilt in Odoo using its automation rules or Studio workflows. We sequence the migration so partner records resolve before lead records, foreign keys are maintained throughout, and a delta-pickup window captures any new matters entered during the cutover window.

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

Lexis Affinity logo

Lexis Affinity

What's pushing teams away

  • High barriers to exit — particularly the Records/Safe Custody module creates significant data lock-in and migration complexity for departing firms.
  • Hourly consulting fees charged by LexisNexis for even minor data model questions or configuration requests, creating cost uncertainty during evaluation.
  • Perpetual license or long-term commitment expectations from LexisNexis make firms feel locked into the platform before fully evaluating fit.
  • Complex multi-module architecture means firms often pay for features they do not use, with pricing not transparent at the module level.
  • Steep learning curve and bespoke training requirements create friction during onboarding and slow time-to-value.

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

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

Lexis Affinity

Client

maps to

Odoo CRM

res.partner

1:1
Fully supported

Lexis Affinity client records map directly to Odoo res.partner. The partner record carries the original client ID as a custom field for traceability. Multiple contacts per client (attorney, billing contact) create separate res.partner records linked to the primary client partner.

Lexis Affinity

Matter

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Each Lexis Affinity matter becomes an Odoo crm.lead record. The original matter number is stored in Matter_Number__c (custom Char field) on the lead. Matter status (open, closed, pending) maps to Odoo lead stage values. Multiple matter types (litigation, corporate) may require separate field-mapping profiles per type.

Lexis Affinity

Matter Type

maps to

Odoo CRM

crm.lead / tag_ids

1:1
Fully supported

Lexis Affinity matter type codes (e.g., LIT, CORP, REAL) map to Odoo tag records. Tags are applied to the crm.lead for filtering. If Odoo has fewer than 20 tags, the mapping is straightforward; larger type sets require a custom selection field.

Lexis Affinity

Time Entry

maps to

Odoo CRM

crm.lead activity / project.task

1:1
Fully supported

Billable time entries migrate as crm.lead activities with type='log_note' when Odoo project module is inactive. When the project module is active, time entries become project.task work records linked to the matter-lead. Each entry preserves the original date, duration, narrative, and attorney attribution.

Lexis Affinity

Bill / Invoice

maps to

Odoo CRM

account.move

1:1
Fully supported

Lexis Affinity bills map to Odoo account.move records (type='out_invoice') under the accounting module. Bill status (draft, sent, paid) maps to Odoo state values. If the accounting module is not active, bills migrate as custom fields on crm.lead for later conversion. Line items carry description and hours from the originating time entries.

Lexis Affinity

Trust Account Balance

maps to

Odoo CRM

res.partner custom field / account.move

1:1
Fully supported

Lexis Affinity trust account balances have no direct Odoo equivalent since legal trust accounting requires a dedicated chart of accounts with trust-specific journal codes. We migrate the last-known balance as Trust_Balance__c (Decimal) on res.partner and flag the record for accounting-side reconciliation before go-live.

Lexis Affinity

Document / File

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Lexis Affinity documents export as file packages (PDF, DOCX, MSG) and re-upload to Odoo as ir.attachment records linked to res.partner or crm.lead via res_model and res_id. Folder hierarchy is lost; we reconstruct folder names as tags on the attachment for navigation. Inline images in notes are downloaded and rehosted as attachment files.

Lexis Affinity

Calendar / Appointment

maps to

Odoo CRM

calendar.event

1:1
Fully supported

Lexis Affinity calendar entries migrate as Odoo calendar.event records linked to the res.users owner. Start datetime, stop datetime, and description carry over. Attendees (client contacts) are added as calendar.event partners when email addresses resolve to existing res.partner records. When a matching partner record does not exist, the attendee is stored as a display name until the contact is created in Odoo.

Lexis Affinity

User / Staff

maps to

Odoo CRM

res.users

1:1
Fully supported

Lexis Affinity staff records map to Odoo res.users by email match. Rate-per-hour migrates as Rate_Hourly__c (Decimal) on res.users. Users without matching email are flagged before migration; the firm either creates Odoo accounts first or assigns records to a fallback user.

Lexis Affinity

Custom Field (Matter)

maps to

Odoo CRM

crm.lead custom field

1:1
Fully supported

Lexis Affinity custom matter fields (e.g., Court Name, Opposing Counsel, Case Value) require Odoo custom fields on crm.lead. We create Char, Date, or Selection fields based on the source field type. Multi-value selection fields map to Odoo tags or many2many relation fields depending on the cardinality.

Lexis Affinity

Workflow Automation

maps to

Odoo CRM

No equivalent

1:1
Fully supported

Lexis Affinity workflow rules, matter-stage triggers, and billing automations are not extractable in a form Odoo can import. We export workflow definitions as a JSON spec so your Odoo admin can rebuild them using Odoo Studio or server actions. This export is delivered alongside the migration plan.

Lexis Affinity

Client Communication Log

maps to

Odoo CRM

mail.message / crm.lead activity

1:1
Fully supported

Logged client emails and notes in Lexis Affinity migrate as Odoo mail.message records on the crm.lead (internal notes) or as crm.lead activities with type='log_note'. Original timestamps and author user are preserved. Email threading is not reconstructed — each entry lands as a standalone note.

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.

Lexis Affinity logo

Lexis Affinity gotchas

High

Records and Safe Custody module creates migration lock-in

High

DataForm custom field schemas are per-firm and must be reverse-engineered

Medium

Trust account sub-account types map differently to destination ledgers

Medium

Workflow automations do not export and must be rebuilt manually

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

  • Trust account balances require manual reconciliation after migration

    Lexis Affinity's trust accounting module uses a controlled-money ledger with per-client trust balances, interest-calculation rules, and bank reconciliation built into the platform. Odoo does not have a native legal trust-account schema — the accounting module uses standard chart-of-accounts entries. We migrate the last-known trust balance as a custom Decimal field (Trust_Balance__c) on res.partner, but the firm must configure Odoo's accounting chart of accounts with trust-specific journal codes and reconcile the migrated balance against those accounts before processing new transactions. Failure to do this before go-live creates a discrepancy between the trust ledger and Odoo's general ledger.

  • Matter-number cross-references require a custom field to survive migration

    Odoo CRM's crm.lead model has no native field that mirrors Lexis Affinity's matter-number identifier, which firms use for billing, court filings, and internal reference. We store the original matter number in a custom Char field (Matter_Number__c) on crm.lead, but this requires the Odoo admin to create that custom field before the migration runs. If the custom field does not exist at load time, the matter number is lost. We include the field-creation spec in the pre-migration setup plan so this does not cause data loss, but it is a pre-flight dependency that must be completed.

  • Workflow automations do not export in a transferable format

    Lexis Affinity workflow rules — matter-stage triggers, billing approval chains, client communication automations — are stored in a proprietary rule engine that does not produce an exportable automation definition. Odoo's automation module (Studio, server actions, activity schedules) requires manual reconstruction. FlitStack delivers a JSON specification of every Lexis Affinity workflow rule including its trigger condition, action type, and affected fields so the Odoo admin has a rebuild reference, but the automation itself must be reconstructed by a Odoo developer or power user.

  • Document folder hierarchies require manual reconstruction in Odoo

    Lexis Affinity stores documents in a folder hierarchy tied to matter structure — for example /Matter-2024-0142/Correspondence/, /Matter-2024-0142/Pleadings/. Odoo's ir.attachment model has no native folder concept; documents attach directly to the record. We migrate files as individual ir.attachment records linked to the corresponding crm.lead or res.partner and tag each with the original folder path. If the firm needs a folder-like navigation experience, the Odoo Document Management module must be activated and folders created manually before or after migration.

  • Multi-matter-type field profiles create Odoo custom-field proliferation

    Law firms running multiple Lexis Affinity matter types (litigation, corporate, real estate, family) often have distinct custom field sets per type — opposing counsel on litigation matters, deal value on corporate matters. Odoo crm.lead uses a single model for all opportunity types; these divergent fields all become custom fields on crm.lead regardless of matter type. We create them as Char, Date, or Selection fields as appropriate, but a matter type with 15 custom fields from Lexis Affinity results in 15 Odoo custom fields on crm.lead that appear on every lead regardless of type. Firms with more than 10 matter types should consider splitting into separate Odoo pipelines or using Odoo Studio's stage-based visibility to reduce field noise.

Migration approach

Six steps for a successful Lexis Affinity to Odoo CRM data migration

  1. Extract Lexis Affinity data via export API

    FlitStack connects to the Lexis Affinity instance using the firm's API credentials and exports all standard objects: clients, matters, time entries, documents, calendar entries, bills, trust account balances, and user records. We pull custom matter fields as part of the schema discovery pass. If the firm's Lexis Affinity plan does not include API access, we work from the platform's CSV/XLSX export function and parse the exported files. The export runs read-only — your team continues working in Lexis Affinity throughout.

  2. Map source schema to Odoo CRM data model

    We build a field-level mapping plan that covers every exported object. Client records map to res.partner. Matters map to crm.lead with the original matter number stored in a custom Char field. Time entries map to lead activities or project.task records depending on whether the Odoo project module is active. Bills map to account.move when the accounting module is configured. We create any missing custom fields on Odoo before data lands, using the spec derived from Lexis Affinity's schema discovery. The mapping plan is reviewed with your Odoo admin before execution.

  3. Resolve user and attorney references by email

    Every Lexis Affinity staff record (attorney, paralegal, billing clerk) is matched to an Odoo res.users record by email address. Users that do not resolve to an existing Odoo account are flagged in a pre-flight report — the firm either creates Odoo user accounts for them before migration or designates a fallback owner for their records. No matter or time entry lands without a responsible Odoo user assigned.

  4. Run sample migration with field-level diff

    A representative sample — typically 100–500 records spanning clients, matters, time entries, and documents — migrates into the configured Odoo instance first. We generate a field-level diff comparing source values against the destination records so you can verify matter-number mapping, stage assignment, attorney resolution, and document linkage before the full run commits. Any mapping errors are corrected before the production migration starts.

  5. Execute full migration with delta-pickup window

    The full dataset migrates into Odoo with foreign keys resolved in the correct sequence: res.partner first, then crm.lead with partner_id lookups, then activities, documents, and accounting records. A delta-pickup window of 24–48 hours runs after the main load to capture any new matters or time entries entered in Lexis Affinity during the cutover. FlitStack produces an audit log of every record created or updated. If reconciliation reveals unexpected gaps, one-click rollback reverts the Odoo instance to its pre-migration state.

  6. Deliver trust-account reconciliation plan and workflow export

    After data lands in Odoo, we deliver a trust-account reconciliation checklist that maps each Lexis Affinity trust balance to the corresponding Odoo journal entry or custom field. We also deliver the workflow definition JSON export so your Odoo admin or integration partner can begin rebuilding automations in Odoo Studio. Post-migration support is available for 30 days to address field-mapping corrections identified during user acceptance testing.

Platform deep dives

Context on both ends of the pair

Lexis Affinity logo

Lexis Affinity

Source

Strengths

  • Comprehensive trust accounting with IOLTA, controlled money, and investment sub-account support for regulatory compliance.
  • Deep bank reconciliation integration with major commercial bank portals for automated GL matching.
  • Records Management and Safe Custody modules purpose-built for legal document retention and escrow obligations.
  • Built-in conflict checking that runs against the full client and contact database before new Matter creation.
  • LexisNexis research content linkable directly from a Matter record for legal research workflows.

Weaknesses

  • High exit barriers due to Records/Safe Custody module — extracting historical documents and vault data requires specialist consulting.
  • Pricing is opaque and requires direct sales engagement with no public per-module breakdown.
  • API access is not widely documented for practice management data — migration work relies on data export rather than programmatic extraction.
  • Workflows and automations are not exportable and must be manually rebuilt on the destination platform.
  • Hourly consulting fees for configuration questions create cost uncertainty during both migration and ongoing use.
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 Lexis Affinity and Odoo CRM.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

    All 8 core objects map 1:1 between Lexis Affinity 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

    Lexis Affinity: Not publicly documented for the practice management module; enterprise customers should confirm limits during onboarding.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Lexis Affinity to Odoo CRM migrations complete in 72–96 hours of clock time for firms with under 10,000 matters and standard field maps. Firms with more than 50,000 records, multiple matter types with divergent custom fields, or an inactive Odoo accounting module extend to 5–10 business days. The longest planning step is building the custom field spec for Odoo crm.lead before data lands. Trust-account reconciliation planning adds 1–2 days on top of the migration window.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Lexis Affinity.
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