CRM migration

Migrate from My Legal Software to Twenty CRM

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

My Legal Software logo

My Legal Software

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

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

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

My Legal Software stores legal practice data around matters (cases), contacts, time entries, and billing records. It has no native CRM-style pipeline — deals are matters with legal status values. Twenty CRM uses a standard CRM data model: People, Companies, Opportunities, Tasks, Notes. There is no native legal matter object in Twenty; matters and their legal metadata become Opportunities with custom fields, and time entries become Tasks. FlitStack AI sequences the migration so Companies import first, then People (linked by companyId), then Opportunities (referencing companies and people), then Tasks. Any attorney or user references resolve by email match against Twenty workspace members. Workflows, billing automations, and trust-accounting logic do not migrate — FlitStack documents the source logic as a rebuild reference for your team to recreate in Twenty's workflow builder. The migration uses CSV export from My Legal Software mapped to Twenty's import API, with API fallback for large record sets.

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

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 My Legal Software objects map to Twenty CRM

Each row shows how a My Legal Software 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.

My Legal Software

Contact / Client

maps to

Twenty CRM

People

1:1
Fully supported

My Legal Software's client and contact records map directly to Twenty CRM's People object. First name, last name, email, phone, address, job title, and contact type all have direct field equivalents. Contacts without a primary company link in My Legal Software land as unlinked People records in Twenty.

My Legal Software

Contact (Primary)

maps to

Twenty CRM

People + Company link

1:1
Fully supported

My Legal Software stores the primary contact and billing contact separately. In Twenty CRM, People link to one primary Company via companyId. FlitStack selects the most-recently-modified company association as primary; billing contact details migrate as custom fields on the People record.

My Legal Software

Company / Firm

maps to

Twenty CRM

Company

1:1
Fully supported

My Legal Software firm and organization records map to Twenty CRM's Companies object. Company name, website, industry, employee count, and annual revenue have direct field equivalents. Parent-company hierarchies in My Legal Software collapse to a single Parent Company link in Twenty's Companies object.

My Legal Software

Matter / Case

maps to

Twenty CRM

Opportunity

1:1
Fully supported

My Legal Software's matter is the core legal record — it holds case number, status, responsible attorney, practice area, billing rate, and trust balance. Twenty CRM has no native legal matter object; matters become Opportunities with a legal-case-number custom field (Case_Number__c), and matter status maps to Opportunity Stage via value mapping. Responsible attorney resolves by email match to Twenty workspace members.

My Legal Software

Matter Status

maps to

Twenty CRM

Opportunity StageName

1:1
Fully supported

My Legal Software matter status values (Open, Pending, Closed Won, Closed Lost) map to Twenty CRM Opportunity stage values. FlitStack builds an explicit stage-mapping table during the migration plan: Open → 'New', Pending → 'Working', Closed Won → 'Closed Won', Closed Lost → 'Closed Lost'. Custom status values in My Legal Software get explicit mapping decisions documented in the migration plan.

My Legal Software

Time Entry

maps to

Twenty CRM

Task

1:1
Fully supported

My Legal Software time entries (hours, billable status, activity type, work description, attorney reference) map to Twenty CRM Tasks with custom fields. The hours field maps to a custom number field (Hours__c), billable status to Billable__c, and activity type to Activity_Type__c. The attorney reference resolves to the Twenty workspace member by email match.

My Legal Software

Notes

maps to

Twenty CRM

Note

1:1
Fully supported

My Legal Software case notes and contact notes migrate directly to Twenty CRM's Notes object. Notes attach to the corresponding People, Company, or Opportunity record by cross-reference lookup. FlitStack preserves original create timestamps and note authors during the migration, ensuring full audit trail continuity for legal practice records. Any orphaned notes without valid record links are flagged for manual resolution before final cutover.

My Legal Software

Document / Attachment

maps to

Twenty CRM

File (re-upload)

1:1
Fully supported

My Legal Software document attachments have no direct equivalent in Twenty CRM's file model. FlitStack exports documents to a local folder structure mirroring the matter hierarchy and provides a re-upload guide for importing files into Twenty's file storage. File names are preserved to aid re-linking after upload.

My Legal Software

Trust Account Fields

maps to

Twenty CRM

Custom fields on People / Opportunity

1:1
Fully supported

My Legal Software trust accounting fields (trust balance, matter balance, operating balance, billing rate) have no native Twenty CRM equivalent. These migrate as custom fields on People or Opportunity — Trust_Balance__c, Matter_Balance__c, Billing_Rate__c — and are flagged as reference data that requires post-migration validation against actual account records.

My Legal Software

Custom Field (Legal-Specific)

maps to

Twenty CRM

Custom Field

1:1
Fully supported

My Legal Software custom fields (practice area, legal case number, originating attorney, matter open date, matter close date, etc.) require pre-creation in Twenty's Settings → Data Model before data imports run. FlitStack delivers a custom field creation checklist and creates the fields on the correct objects (People or Opportunity) before the CSV import sequence begins.

My Legal Software

User / Attorney

maps to

Twenty CRM

WorkspaceMember

1:1
Fully supported

My Legal Software users and attorneys are staff records referenced by ID across contacts, matters, and time entries. Twenty CRM requires workspace members to exist before their records can be assigned. FlitStack imports workspace members first by email, then resolves user references in all subsequent object imports by matching the source user email to the Twenty WorkspaceMember.

My Legal Software

Calendar / Scheduling

maps to

Twenty CRM

Task

1:1
Fully supported

My Legal Software deadline and court-date calendar entries map to Twenty CRM Tasks with due dates and assignees. Court appearances and filing deadlines are imported as Tasks with a custom calendar-type indicator. Recurring court dates that depend on external calendar integrations cannot be replicated — these are flagged for manual rebuild in Twenty's workflow builder.

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

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

  • Twenty CRM has no native legal matter object — matters become Opportunities with custom fields

    My Legal Software's entire data model orbits the Matter (case) record: case number, practice area, billing rate, trust balance, responsible attorney, and originating attorney all live on the matter. Twenty CRM has no legal matter object — matters map to Opportunities and the legal metadata becomes custom fields. Custom fields must be created in Settings → Data Model before any CSV import runs, because Twenty's import creates records, not fields. FlitStack delivers a pre-flight custom field checklist and creates Case_Number__c, Practice_Area__c, Billing_Rate__c, Trust_Balance__c, and Originating_Attorney__c on the Opportunity object before the migration sequence starts. If a custom field is missing, the import skips the column silently and the data is lost.

  • Twenty CSV import requires parent records to exist first — Companies before People, People before Opportunities

    Twenty CRM's import engine enforces referential integrity: you cannot import a Person with a companyId reference if the Company record does not already exist, and you cannot import an Opportunity linked to a Person that has not yet been created. My Legal Software stores contacts and matters in a flat or semi-relational structure where circular matter references are possible (e.g., related matters). FlitStack sequences the migration to respect Twenty's dependency order: Companies first, then People with companyId links, then Opportunities referencing people and companies, then Tasks. Any circular matter-to-matter references in My Legal Software are flagged during the audit phase and resolved by assigning one matter as the primary — duplicate matter records get a Related_Matter__c custom field pointing to the source system ID.

  • Workflows, billing automations, and trust-accounting rules do not migrate — must be rebuilt in Twenty's workflow builder

    My Legal Software workflows, billing automation rules (trust-accounting triggers, matter-stage billing actions), and automated legal process sequences are platform-specific and have no transferable format. Twenty CRM's workflow builder uses a different automation model — triggers on record creation, field updates, and time-based actions. FlitStack AI migrates data and schema only; workflows and automations must be rebuilt manually. We provide a Workflow Reconstruction Reference document that enumerates every My Legal Software workflow with its logic, conditions, and actions so your team can recreate them in Twenty's workflow builder. Trust-accounting logic (retainer tracking, client trust ledger entries) has no functional equivalent in Twenty CRM and must be handled in a separate accounting system post-migration.

  • Twenty's 20,000-record per-import limit means large My Legal Software datasets must be chunked

    My Legal Software practices with 40,000+ matters, 80,000+ contacts, and 200,000+ time entries exceed Twenty CRM's documented 20,000-record per-CSV-import ceiling. FlitStack splits large exports into sequential batches by object type and import order, maintaining referential integrity across batches using the source_system_id cross-reference. The delta-pickup window runs after all batches complete, capturing any records modified during the chunked migration window. Practices with more than 100,000 total records should budget additional time for multi-batch sequencing and pre-migration data audit to identify inactive records that can be archived rather than migrated.

  • Multi-contact matter assignments collapse to a single primary contact link in Twenty CRM

    My Legal Software allows multiple contact roles on a matter (primary contact, billing contact, referring contact, opposing counsel) with each role independently linked to the matter. Twenty CRM's Opportunity Contact Roles model supports only one primary contact role per opportunity. FlitStack migrates the most-recently-modified contact association as the primary (maps to Opportunity.peopleId), and preserves the other contact roles as a custom multi-select field (Other_Contact_Roles__c) containing the contact names and role types from My Legal Software. During reconciliation, your team decides whether to surface additional contacts on the Opportunity as Notes with role context, or use a custom junction object if Twenty's custom object model is preferred.

Migration approach

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

  1. Audit My Legal Software data — identify records, relationships, and legal-specific fields

    FlitStack exports a full data inventory from My Legal Software: all contacts, companies, matters, time entries, notes, and custom fields. We count records by type, flag inactive records (no activity in 2+ years recommended for archival), identify custom fields by object, and surface any non-standard legal metadata (trust balances, billing rates, practice area values) that requires custom field creation in Twenty. The audit output is a Data Migration Plan with record counts, field inventory, and a decision log for collapsing multi-contact matter assignments and handling circular matter references.

  2. Create custom fields and invite workspace members in Twenty CRM

    Before any data moves, FlitStack creates all required custom fields in Twenty's Settings → Data Model: Case_Number__c, Practice_Area__c, Billing_Rate__c, Trust_Balance__c, Matter_Balance__c, Originating_Attorney__c, Source_System_ID__c, Hours__c, Billable__c, Activity_Type__c, and Contact_Type__c. Custom fields must exist before CSV import — the import creates records, not fields. Simultaneously, FlitStack imports Twenty workspace members by email so that user references in matters and time entries resolve correctly during the Opportunity and Task import steps.

  3. Run a sample migration with field-level diff on a representative record slice

    A representative slice (100–300 records spanning contacts, companies, matters, and time entries) migrates first. FlitStack generates a field-level diff comparing source values against the Twenty record after import, so you can verify that practice area values mapped correctly to the custom select, billing rates landed in Billing_Rate__c, and attorney emails resolved to Twenty workspace members. This step catches missing custom field definitions, value-mapping gaps, and owner-resolution failures before the full migration commits.

  4. Execute full migration in dependency order with delta-pickup window

    Full migration runs in the correct Twenty import sequence: Companies (with ParentId for hierarchies), then People (linked by companyId), then Opportunities (with legal case metadata in custom fields and assigneeId resolved by email match), then Tasks (time entries with Hours__c, Billable__c, and Activity_Type__c), then Notes. A delta-pickup window (24–48 hours) captures any matters or contacts modified in My Legal Software during the cutover window. FlitStack generates an audit log of every operation, and one-click rollback reverts Twenty to the pre-migration state if reconciliation reveals critical mismatches.

  5. Post-migration reconciliation and workflow rebuild handoff

    FlitStack delivers a reconciliation report comparing record counts, custom field completeness, and relationship integrity (contacts linked to correct companies, opportunities linked to correct people, time entries linked to correct attorneys). Any unresolvable owner references or orphan records are flagged for manual review. We provide a Workflow Reconstruction Reference document listing every My Legal Software workflow, billing automation, and trust-accounting rule with its logic and conditions — your Twenty admin uses this to rebuild automations in Twenty's workflow builder. Document attachments are delivered as a structured file folder hierarchy for manual re-upload to Twenty's file storage.

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

Standard CRM migration. 2 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 Twenty CRM.

  • Object compatibility

    B

    2 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 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 My Legal Software to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Small practice migrations with under 10,000 contacts, matters, and time entries complete in 48–72 hours of clock time. Mid-size practices with 10,000–50,000 records typically need 3–5 days including the data audit, custom field creation, sample migration, and delta pickup. Practices exceeding 50,000 records or using extensive legal-specific custom fields (trust accounting, multi-contact matter assignments) extend to 1–2 weeks. The longest single step is custom field planning and creation in Twenty before data imports run.

Adjacent paths

Related migrations to explore

Ready when you are

Move from My Legal Software.
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