CRM migration

Migrate from LegalE to Twenty CRM

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

LegalE logo

LegalE

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between LegalE and Twenty CRM.

Complexity

CModerate

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

LegalE and Twenty CRM represent fundamentally different approaches to legal practice management. LegalE typically operates as a browser-based legal CRM with proprietary data storage, limited API access for exports, and per-seat or tiered billing that scales unpredictably as client counts grow. Twenty CRM is an open-source platform built on TypeScript, NestJS, React, and PostgreSQL — offering full data ownership, REST and GraphQL APIs, custom objects without feature gating, and pricing that remains transparent whether you self-host or use their cloud tier. The migration carries all LegalE records into Twenty's object model: contacts and companies map directly to People and Companies, matter or case records map to Opportunities with custom fields for legal-specific properties like practice area, jurisdiction, or billing arrangement. We sequence the migration so company records land first, then people linked to those companies, then opportunities referencing those people. Activity history (notes, tasks, document links) migrates as Twenty Notes and Tasks attached to the parent record. Custom legal fields from LegalE — such as bar numbers, matter types, or conflict-check results — become custom fields on the corresponding Twenty object. Workflows, templates, and automation logic do not transfer and must be rebuilt using Twenty's workflow engine. The migration runs via Twenty's CSV import API (with bulk record support for large firms), and a delta-pickup window captures any changes made during cutover.

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

LegalE logo

LegalE

What's pushing teams away

  • Limited third-party reviewer footprint makes independent feature validation difficult during evaluation.
  • Public pricing and feature breakdowns are not published, so side-by-side comparisons require direct sales engagement.
  • Integration catalogue is narrow — Microsoft 365 and document storage are the typical connection points; modern SaaS connectors are bespoke.
  • Reporting and analytics depth lags larger ELM platforms (TyMetrix, Onit, SimpleLegal); teams needing matter-level spend benchmarking outgrow it.
  • Mobile experience is functional but not differentiating — outside-counsel collaboration and on-the-go legal review favor cloud-native competitors.

Choosing

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How LegalE objects map to Twenty CRM

Each row shows how a LegalE object lands in Twenty CRM, including any object-level transformations, lookup resolution, or schema-design dependencies.

Typical mapping — final map is confirmed during the sample migration step.

LegalE

Contact / Client

maps to

Twenty CRM

People

1:1
Fully supported

LegalE client records map directly to Twenty CRM People objects. Every person record carries a name, email, phone, and job title. The company association migrates as a companyId relation — the parent Company must land first so the foreign key resolves. Records without a company association attach to a default 'Unassigned' company created during setup.

LegalE

Company / Law Firm

maps to

Twenty CRM

Company

1:1
Fully supported

LegalE company records (law firm names, corporate client organizations) map directly to Twenty CRM Companies objects. Industry, size, website, and address fields migrate as standard Company fields. Parent-child company hierarchies use the same ParentId pattern — the parent company must migrate first or circular references are flagged and resolved before the run.

LegalE

Matter / Case

maps to

Twenty CRM

Opportunity

1:1
Fully supported

LegalE matter or case records do not have a direct One-to-One equivalent in Twenty's default Opportunity object. We map them to Opportunities and add custom fields for legal-specific properties: Practice_Area__c (text), Jurisdiction__c (text), Matter_Status__c (select), Billing_Arrangement__c (select). The Opportunity stage maps to a Matter_Stage field with legal-relevant values: Intake, Active, Pending, Closed.

LegalE

Practice Area

maps to

Twenty CRM

Custom Field on Opportunity

1:1
Fully supported

If LegalE stores practice areas (Family Law, Corporate, Litigation, etc.) as a structured field, we create a Practice_Area__c custom select field on Twenty's Opportunity object. Values map one-to-one. If practice areas are stored as tags or free-text, they migrate as a text array in a custom field and can be converted to select options post-migration.

LegalE

Billing Arrangement

maps to

Twenty CRM

Custom Field on Opportunity

1:1
Fully supported

Hourly, flat-fee, contingency, and pro-bono billing arrangements from LegalE migrate to a Billing_Arrangement__c custom select field on Opportunity. Value mapping is direct where the pick-list matches; non-matching values are preserved as a text fallback and can be normalized in Twenty after migration.

LegalE

Attorney / Staff Assignment

maps to

Twenty CRM

WorkspaceMember / Assignee

1:1
Fully supported

LegalE assigns attorneys and staff to matters by user ID. Twenty CRM uses WorkspaceMember for user management. We resolve LegalE user IDs to Twenty WorkspaceMember records by email match — unmatched attorneys are flagged before migration. Unassigned matters receive a fallback assignee designated by your team during scoping.

LegalE

Note / Communication Log

maps to

Twenty CRM

Note

1:1
Fully supported

LegalE note records and communication logs migrate as Twenty CRM Notes attached to the parent People or Opportunity record. Original timestamps, note authors, and any structured fields (conflict-check results, intake notes) are preserved. Notes with attachments require file re-upload to Twenty's storage since the attachment format differs.

LegalE

Task / To-Do

maps to

Twenty CRM

Task

1:1
Fully supported

LegalE task records (deadlines, court filing reminders, client follow-ups) map directly to Twenty CRM Tasks linked to the parent People or Opportunity. Due dates, assignees, and completion status transfer with original timestamps. Recurring tasks that rely on LegalE automation logic are flagged for manual rebuild in Twenty.

LegalE

Document / File Attachment

maps to

Twenty CRM

Files (via Note attachment)

1:1
Fully supported

LegalE document attachments on matters or client records are downloaded and re-uploaded to Twenty CRM. Files attach to the corresponding Note record or are stored as file links in a custom URL field. File size limits and storage costs differ between platforms — FlitStack flags oversized files before migration.

LegalE

Custom Legal Field (Conflict Check, Bar Number, etc.)

maps to

Twenty CRM

Custom Field on People or Opportunity

1:1
Fully supported

Any LegalE custom field that does not map to a standard Twenty object field becomes a custom field created in Settings → Data Model before the migration run. FlitStack documents every custom field with its type, pick-list values, and object assignment in the pre-migration schema plan. Fields must exist before CSV import so the import mapper recognizes them.

LegalE

Client Relationship (Primary Contact, Co-Counsel)

maps to

Twenty CRM

Relation field on People

1:1
Fully supported

LegalE may store relationship metadata between contacts (primary, co-counsel, opposing counsel). Twenty CRM supports relation fields between People records. We map primary contact relationships to a Relation record with type 'Primary Contact'. Other relationship types migrate as Relation records with the original label preserved or a normalized type value.

LegalE

Billing Record / Invoice

maps to

Twenty CRM

Custom Object (Invoice) or Opportunity custom fields

1:1
Fully supported

If LegalE stores invoice history and line items, we assess whether to create a custom Invoice object in Twenty or store summary billing data on the Opportunity. A custom Invoice object captures invoice number, date, amount, status, and linked Opportunity. Invoice line items require a custom Line_Item__c field or a second custom object with a relation to Invoice.

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.

LegalE logo

LegalE gotchas

High

Public technical documentation is sparse

Medium

Per-matter pricing makes historical-data scope matter

Medium

Document attachments require a separate retrieval path

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • LegalE custom fields may export as unstructured notes rather than structured fields

    LegalE's data model sometimes stores legal-specific properties (conflict-check results, bar numbers, matter types) as free-form note text rather than structured fields. When these export as text in the CSV, they lack the field header needed for direct mapping. FlitStack audits the LegalE export before migration and creates custom fields in Twenty for any unstructured values that represent structured data. Your team confirms which note contents map to formal fields during the scoping phase.

  • Import order dependency between Companies, People, and Opportunities

    Twenty CRM's CSV import requires that related records follow a specific order: Companies must exist before People can reference them via companyId, and People must exist before Opportunities can reference them. LegalE typically exports flat CSV files without enforcing this sequence. FlitStack re-sequences the migration load order so foreign keys resolve correctly. Failing to follow this order results in null companyId and personId values that require a second migration pass to fix.

  • Workflow and automation logic has no export path from LegalE

    LegalE conflict-check workflows, matter-intake triggers, billing automation rules, and notification sequences are stored in a proprietary format that does not export as portable code. They must be rebuilt in Twenty's workflow engine using Twenty's trigger-action model (when a record is created, when a field changes, scheduled). FlitStack provides a workflow audit export from LegalE — a structured document listing every active workflow, its trigger conditions, and action steps — to guide your Twenty admin through the rebuild.

  • Document attachments require file re-upload rather than format migration

    LegalE stores document attachments in a platform-specific format that cannot be imported directly into Twenty CRM. Each attachment must be downloaded from LegalE and re-uploaded to Twenty, either as a file attachment on the relevant Note or as a URL in a custom field pointing to your firm's document storage. For large firms with hundreds of matter documents, this step extends the migration timeline and requires coordination on file naming conventions to avoid duplication.

  • Invoice and billing data may require a custom object in Twenty

    LegalE's invoice and billing records (line items, payments received, trust account transactions) may not map cleanly to Twenty's standard Opportunity object, which is designed for sales pipelines rather than legal billing. If your firm needs to preserve invoice history, FlitStack creates a custom Invoice object in Twenty with the necessary fields and a relation to the parent Opportunity. This requires schema setup before the migration and is scoped as an additional phase if needed.

Migration approach

Six steps for a successful LegalE to Twenty CRM data migration

  1. Audit LegalE data export and relationship structure

    FlitStack pulls a full export from LegalE covering all contacts, companies, matters, notes, tasks, and any custom fields in active use. We analyze the CSV structure for unstructured fields that represent structured data (e.g., conflict-check results stored in notes), identify duplicate records, and map every foreign key relationship between contacts, companies, and matters. This audit produces the migration schema plan: a document listing every field that will map directly, every field that requires a custom field in Twenty, and the load order for records with dependencies.

  2. Set up Twenty CRM workspace and custom fields

    Before any data moves, your Twenty workspace is configured to receive it. We create all custom fields identified in the audit (Practice_Area__c, Billing_Arrangement__c, Bar_Number__c, Conflict_Check__c, and any others) in Settings → Data Model. If your firm needs a custom Invoice object for billing history, that object and its fields are created at this stage. Workspace members must be invited and accepted so user assignments can resolve by email match during the migration run.

  3. Migrate Companies first, then People, then Opportunities

    We load data into Twenty in the sequence the platform requires: Companies (the 'one' side of relationships) load first, establishing companyId values. People load second, with each record's companyId pointing to the parent Company. Opportunities load third, with personId and companyId linking to the migrated records. Tasks and Notes load last, attached to their parent records. Each batch is validated against the Twenty API before the next batch starts, and any records that fail validation are flagged for remediation before the run continues.

  4. Run sample migration with field-level diff

    A representative slice — typically 200–500 records spanning all object types and including records with custom fields — migrates first. We generate a field-level diff comparing source LegalE values against the Twenty record values so you can verify that bar numbers, practice areas, matter stages, and conflict-check fields mapped correctly. You review the diff before the full run commits. If any mappings need adjustment, the diff identifies exactly which field or value map needs correction.

  5. Execute full migration with delta pickup and rollback plan

    The full record set migrates against Twenty. A delta-pickup window of 24–48 hours captures any records created or modified in LegalE during the cutover window. An audit log records every operation. One-click rollback is available if reconciliation identifies data integrity issues. After rollback is confirmed unnecessary, your team goes live in Twenty. FlitStack provides a post-migration validation report confirming record counts, relationship integrity, and a list of any records that could not migrate with their reason codes for manual resolution.

Platform deep dives

Context on both ends of the pair

LegalE logo

LegalE

Source

Strengths

  • Vertical focus on in-house and corporate legal — workflows fit legal departments better than horizontal CRM.
  • Web-based access without per-device install.
  • Document templating aligned to corporate legal use cases.
  • Flexible per-matter and per-user pricing model.
  • Direct vendor relationship typical of smaller-vendor engagements.

Weaknesses

  • Limited third-party reviewer footprint.
  • Pricing and feature breakdowns not publicly published.
  • Narrow native integration catalogue.
  • Reporting depth trails larger ELM platforms.
  • Mobile experience is functional but not differentiating.
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

Complexity grading

How hard is this migration?

Moderate CRM migration. 1 of 8 objects need a manual workaround.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across LegalE and Twenty CRM.

  • Object compatibility

    C

    1 of 8 objects need a manual workaround.

  • 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

    LegalE: Not publicly documented..

  • Data volume sensitivity

    B

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

Estimator

Estimate your LegalE to Twenty 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 LegalE to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most LegalE to Twenty CRM migrations complete within 48–72 hours of clock time for setups under 50,000 records. Firms with larger record volumes or multiple practice-area custom fields extending beyond 50,000 records typically require 7–10 days. The longest planning step is the pre-migration audit and custom field schema setup — that phase runs 3–5 days before any data moves and is included in the overall timeline.

Adjacent paths

Related migrations to explore

Ready when you are

Move from LegalE.
Land in Twenty 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