CRM migration

Migrate from Legl to Twenty CRM

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

Legl logo

Legl

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

100%

12 of 12

objects map 1:1 between Legl and Twenty CRM.

Complexity

BStandard

Timeline

72–96 hours of clock time

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Legl structures its data around legal-practice concepts: Business records, Person entities, Risk Assessments, Engage Requests, Payments, and Workflow definitions. Its API exposes these as discrete resource endpoints with relationship IDs but no native bulk-export UI — migration requires API pagination with rate-limit management (3,600 req/hr, burst 120 req/min). Twenty CRM accepts data via CSV import through its UI or REST/GraphQL batch endpoints (100–200 req/min depending on plan tier), with import order enforced: Companies first, then People (linked via companyId), then Opportunities, then custom objects last. The migration must therefore sequence Legl's API responses into a staged import that satisfies Twenty's foreign-key requirements. We map Legl Business objects to Twenty Companies, Legl Person records to Twenty People, and Legl's risk-assessment and engage-request data to Twenty custom objects. Legl workflows (automation definitions, escalation paths) cannot migrate — they require a manual rebuild using Twenty's workflow builder, and we provide a structured export of Legl workflow JSON as the rebuild reference. The cutover mechanism uses scoped read access against Legl's API with a 24–48 hour delta pickup window to capture any records created or modified during the switchover. Audit logging and one-click rollback protect against reconciliation failures.

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

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

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

Legl

Business

maps to

Twenty CRM

Company

1:1
Fully supported

Legl Business records (company name, domain, address) map directly to Twenty Companies. The Legl businessId becomes a custom reference field (Source_Business_ID__c) for traceability. Legl business hierarchies (parent/child via hs_parent_company_id) map to Twenty's Parent Company link if present. If the Legl business includes a parent/child hierarchy, we map the top-level business to the primary Company and link subsidiaries via the Parent Company field for a clear organizational tree.

Legl

Person

maps to

Twenty CRM

Person

1:1
Fully supported

Legl Person records (name, email, phone, job title, address) map to Twenty People with direct field correspondence. Primary businessId links the Person to a Company record. Email uniqueness is preserved for Workspace Member matching during owner resolution. We also verify email uniqueness across the dataset to avoid duplicate Workspace Members and to ensure accurate ownership assignments during import.

Legl

RiskAssessment

maps to

Twenty CRM

Custom Object: RiskAssessment

1:1
Fully supported

Legl RiskAssessment records have structured fields: risk level, assessment date, template name, reviewer, and a PDF artifact URL. We create a Twenty custom object named RiskAssessment with matching custom fields. The PDF is downloaded and re-uploaded as a Twenty File attached to the record.

Legl

EngageRequest

maps to

Twenty CRM

Custom Object: EngageRequest

1:1
Fully supported

Legl EngageRequest tracks client onboarding status per department and reviewer. Fields include status, clientId, department, reviewer, and CDD completion flag. We create a Twenty custom object with a status pick-list mirroring Legl's state machine. Reviewer maps to a Twenty Workspace Member lookup.

Legl

Payment

maps to

Twenty CRM

Custom Object: Payment

1:1
Fully supported

Legl Payment records include amount, currency, status, bankAccountId, and createdAt timestamp. We create a Payment custom object in Twenty with amount, currency, and status fields. The Legl payment ID is stored as Source_Payment_ID__c for audit traceability. All payment amounts are normalized to the target currency, and any missing currency data defaults to the workspace's primary currency setting.

Legl

BankAccount

maps to

Twenty CRM

Custom Object: BankAccount

1:1
Fully supported

Legl bank account records map to a Twenty BankAccount custom object with fields for account reference and linked business. The relationship to Payment records is preserved by storing the BankAccount custom object ID on the Payment record. The BankAccount custom object also stores the associated Legl businessId for reference, allowing quick cross-checking during reconciliation.

Legl

Workflow

maps to

Twenty CRM

Not Migrated

1:1
Fully supported

Legl Workflows (internal escalations, client onboarding funnels, department-tailored processes) are JSON-defined automation objects with no direct Twenty equivalent. We export the full workflow JSON via GET /workflows as a rebuild reference document for your Twenty admin to reconstruct in Twenty's workflow builder.

Legl

SanctionsReport

maps to

Twenty CRM

Custom Object: SanctionsReport

1:1
Fully supported

Legl SanctionsReport records from /sanctionsReport endpoints contain match results and search metadata. These migrate to a Twenty custom object with match status and search timestamp fields, linked to the relevant Business (Company) record. The match status field captures whether the sanctions check returned a hit, partial match, or clear result, preserving the original verdict for compliance audits.

Legl

CompanyReport

maps to

Twenty CRM

Custom Object: CompanyReport

1:1
Fully supported

Legl CompanyReport records aggregate compliance data per business. Migrated as a Twenty custom object with report type, generated date, and linked Company reference. Report PDF artifacts are re-uploaded as Twenty Files. Each CompanyReport record also includes a link to the original PDF file, which is re-hosted in Twenty's file storage for convenient access by compliance officers.

Legl

Note / Attachment

maps to

Twenty CRM

Note / File

1:1
Fully supported

Legl notes and file attachments on any object type migrate to Twenty Notes and Files respectively. Original timestamps and author references are preserved. Inline images in notes are extracted and rehosted as Twenty Files. File attachments retain their original file names and MIME types, and are stored under a dedicated Twenty Files folder for each migrated object type.

Legl

Organisation

maps to

Twenty CRM

Workspace Settings

1:1
Fully supported

Legl Organisation metadata (GET /organisation) configures firm-level settings. These translate to Twenty workspace configuration items: workspace name, timezone, and currency defaults. User accounts map to Twenty Workspace Members invited before data import. We also map Legl user roles to Twenty workspace permissions, ensuring that access controls reflect the original firm hierarchy after migration.

Legl

Ongoing Monitoring

maps to

Twenty CRM

Custom Object: OngoingMonitoring

1:1
Fully supported

Legl Ongoing Monitoring records (POST /DisableOngoingMonitoring) track continuous compliance checks per business. We create a Twenty custom object with monitoring status, linked Company, and last-check timestamp fields. The custom object also includes a link to the associated Company record, allowing compliance teams to view the monitoring history alongside other company details.

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

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

  • Legl API rate limits constrain export throughput for large datasets

    Legl's API enforces 3,600 requests per hour sustained with a 120 requests per minute burst. For migrations with 30,000+ records across Business, Person, RiskAssessment, EngageRequest, and Payment objects, this means export runs require pagination with exponential backoff and careful distribution across multiple API windows. We manage the retry logic and burst pacing automatically, but the Legl API ceiling extends the migration timeline compared to platforms with higher rate limits. Twenty's import side (100–200 req/min on cloud tiers) can accept records faster than Legl can supply them in burst scenarios.

  • Twenty's import order enforcement blocks out-of-sequence loads

    Twenty's CSV import UI enforces foreign-key sequencing: Companies must be loaded before People (via companyId), and both must exist before Opportunities are imported. RiskAssessments, EngageRequests, Payments, and BankAccounts — which link to Business records — must land after the Company migration is complete. We sequence the migration export from Legl in dependency order and run a validation pass that confirms all referenced Company IDs are present in Twenty before each batch commits. Any orphaned references are flagged and resolved before the next import stage runs.

  • Legl workflows have no direct Twenty equivalent and must be rebuilt

    Legl Workflow definitions (internal escalations, client onboarding funnels, department-tailored processes) are stored as structured JSON objects accessible via GET /workflows. Twenty's workflow builder constructs automations through a UI-driven interface with triggers, conditions, and actions. These are fundamentally incompatible data formats — the automation logic cannot be mechanically translated. We export the complete Legl workflow JSON as a structured rebuild reference document. Your Twenty admin uses this to manually reconstruct each workflow in Twenty's builder. We surface the workflow export as a standalone deliverable before the data migration runs.

  • Legl PDF artifacts (RiskAssessment reports, CompanyReport outputs) need re-upload to Twenty Files

    Legl RiskAssessment and CompanyReport objects include PDF artifact URLs (returned as part of the assessment object payload). These files are not embedded in the API response — they are download links requiring a separate HTTP fetch per document. For migrations with hundreds of assessments, this adds per-file network overhead and must complete before the import batch closes. We fetch each PDF, apply the correct record association in Twenty, and link it to the migrated RiskAssessment or CompanyReport record. Network timeout handling and retry logic are applied per file.

  • Legl Workspace Members (reviewers, assignees) must be pre-invited to Twenty before owner resolution

    Legl's reviewer assignment fields (reviewerId on EngageRequest, assignee on Workflow steps) reference internal Legl user IDs. Twenty resolves assignee and owner fields by matching to existing Workspace Members. We perform an email-based lookup against Twenty: Legl user emails are matched to invited Twenty Workspace Members. Any Legl reviewer without a corresponding Twenty user account is flagged before migration, and their records are temporarily assigned to a fallback Workspace Member. We recommend inviting all active Legl users to Twenty before the migration run begins.

Migration approach

Six steps for a successful Legl to Twenty CRM data migration

  1. Audit Legl API objects and prepare Twenty workspace schema

    We run a discovery scan against Legl's API endpoints (/businesses, /persons, /riskAssessments, /engageRequests, /payments, /bankAccounts, /workflows) to catalogue record counts, field inventory, and relationship IDs. Simultaneously, we set up the Twenty workspace: creating all required custom objects (RiskAssessment, EngageRequest, Payment, BankAccount, SanctionsReport, CompanyReport, OngoingMonitoring), configuring custom field types and pick-list options to match Legl's data shapes, and inviting all active Legl users as Twenty Workspace Members so owner resolution can proceed during import.

  2. Export Legl data in dependency order with rate-limit management

    We paginate through Legl's API exports using exponential backoff to respect the 3,600 req/hr sustained limit. Records are assembled into staging CSVs in Twenty's required import order: Companies first (Legl Business), then People (Legl Person linked via businessId), then custom objects last. Workflow JSON is extracted separately via GET /workflows and packaged as a structured rebuild reference document. All exports preserve original timestamps and owner/reviewer IDs for later resolution.

  3. Resolve owners and reviewers by email match

    Legl owner and reviewer IDs are resolved against the pre-invited Twenty Workspace Members by email address. We generate a resolution report listing matched owners, unmatched owners, and the fallback assignment for each unmatched record. Your team reviews and approves the resolution map before any data commits to Twenty. No record lands without a valid Twenty Workspace Member assignment and we re-validate after each import batch for consistency.

  4. Run a sample migration with field-level diff

    A representative slice of 200–500 records spanning each Legl object type migrates into Twenty first. We generate a field-level diff comparing source values against destination field values for each record. You verify RiskAssessment status mapping, EngageRequest department assignment, Payment currency formatting, and Person-to-Company linkage before the full run commits. Sample results determine whether any field mapping needs adjustment before bulk processing.

  5. Execute full migration with delta-pickup and audit log

    Full data migration runs against Twenty using the approved mapping and resolution map. A delta-pickup window of 24–48 hours captures any Legl records created or modified during the cutover window. Every operation is logged to an audit trail covering object type, record count, before/after state, and timestamp. One-click rollback reverts all migrated records to the pre-migration state if reconciliation checks fail.

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
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. 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 Legl and Twenty 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

    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 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 Legl to Twenty CRM data migrations

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

Can't find your answer?

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

Book a free 30 minute consultation

Most Legl-to-Twenty migrations complete in 72–96 hours of clock time for under 30,000 records across all object types. Larger setups with 30,000+ records or multiple custom object schemas (RiskAssessment, EngageRequest, Payment) extend to 7–10 days. The Legl API rate limit (3,600 req/hr) is the primary throughput constraint on the export side, while Twenty's import sequencing (Companies, then People, then custom objects) determines the bulk load schedule.

Adjacent paths

Related migrations to explore

Ready when you are

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