CRM migration
Field-level mapping, validation, and rollback between CosmoLex and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
CosmoLex
Source
Twenty CRM
Destination
Compatibility
11 of 11
objects map 1:1 between CosmoLex and Twenty CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
CosmoLex is a legal-practice management platform built around a two-level hierarchy: Clients (contact and billing records) linked to Matters (cases or projects with their own time, billing, and document data). It includes integrated trust accounting, multiple billing methods (hourly, fixed-fee, contingency), and a structured workflow for non-financial-data and financial-data migration. Twenty CRM is a modern open-source CRM built on PostgreSQL, React, and a TypeScript stack — it exposes a REST and GraphQL API, supports CSV import with 20,000-record per-export limits, and uses a three-tier plan structure (Pro at $9/user/month, Organization at $19/user/month, plus free self-hosting under AGPL-3.0). Twenty's data model centers on People, Companies, Opportunities, Tasks, and Notes with unlimited custom objects and custom fields. FlitStack AI maps CosmoLex client records to Twenty People, CosmoLex matters to Twenty Opportunities, and CosmoLex time entries to Twenty Tasks. The responsible attorney resolves by email match against Twenty workspace members. CosmoLex's billing rates, billing method, and matter status migrate as custom fields on the Opportunity since Twenty has no native legal-billing model. Trust account data and custom properties that have no direct equivalent land as custom fields for reference. CosmoLex does not expose a public API — FlitStack extracts data through structured CSV exports and direct database queries for supported setups, then loads into Twenty via CSV import for standard objects and the REST/Bulk API for custom objects and relational fields. Workflows, automations, trust-accounting logic, and billing templates do not migrate and must be rebuilt in Twenty or handled by a separate accounting tool.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a CosmoLex 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.
CosmoLex
Client (Contact)
Twenty CRM
People
1:1CosmoLex clients store individual contact data: name, email, phone, address, and firm association. These map 1:1 to Twenty People records. The client-type field (individual attorney vs. organizational) determines whether a Company record is also created in Twenty. All contact fields including name components, email addresses, phone numbers, and postal addresses are mapped to their corresponding Twenty People fields with no transformation required.
CosmoLex
Client (Organization)
Twenty CRM
Company
1:1CosmoLex clients that are law firms, corporate legal departments, or organizational entities map to Twenty Companies. Company name, domain, industry, and size fields migrate directly. Multi-contact firms maintain the People-to-Company link via the companyId relation. Each organization in CosmoLex becomes a Company record in Twenty with the organization's name, website domain, and industry classification preserved during the transfer.
CosmoLex
Matter
Twenty CRM
Opportunity
1:1CosmoLex matters are the primary work unit — they carry the matter name, number, responsible attorney, status, billing method, and client link. In Twenty, matters become Opportunities with the matter name as the Opportunity name, the matter number as a custom reference field (Matter_Number__c), and the client as the linked Company.
CosmoLex
Time Entry
Twenty CRM
Task
1:1CosmoLex time entries capture date, duration (hours), attorney, task description, and billing method (hourly, fixed, contingency). Each time entry becomes a Twenty Task with the description as the Task title, date as the due/completed date, and hours as a custom numeric field. Billable flag maps to a Task custom field.
CosmoLex
Matter Responsible Attorney
Twenty CRM
Workspace Member (assigned to Opportunity)
1:1CosmoLex Matter Owners and Timekeepers are resolved by email match against Twenty workspace members. Unmatched attorneys are flagged before migration and assigned to a fallback workspace member. The responsible attorney role is stored as the Opportunity assignee in Twenty. This ensures that every migrated opportunity has an assigned owner from the Twenty workspace who can be contacted regarding the associated legal matter.
CosmoLex
Matter Status
Twenty CRM
Custom field on Opportunity
1:1CosmoLex matter status values (Open, Closed, On Hold, Pending) have no direct equivalent in Twenty's Opportunity stage model. A custom pick-list field (Matter_Status__c) is created in Twenty and mapped value-by-value from CosmoLex status values. Firms may optionally map these to Twenty's native Stage field for reporting purposes, but legal-matter lifecycle status is preserved in the custom field for clarity.
CosmoLex
Billing Rate / Method
Twenty CRM
Custom field on Opportunity
1:1CosmoLex supports hourly, fixed-fee, and contingency billing per matter. Twenty has no billing model. The billing method migrates as a custom pick-list field (Billing_Method__c) on the Opportunity, and the hourly rate maps to a custom currency field (Hourly_Rate__c) if populated.
CosmoLex
Trust Account Balance
Twenty CRM
Custom field on Company / People
1:1CosmoLex trust account balances and operating balances are financial data with no CRM equivalent. The current balance migrates as a custom currency field (Trust_Balance__c) on the relevant Company or People record. Trust sub-account breakdown is preserved in a custom text field.
CosmoLex
Matter Custom Fields
Twenty CRM
Custom fields on Opportunity
1:1CosmoLex custom properties on matters migrate to Twenty custom fields on the Opportunity object. Each custom field is evaluated for field-type parity: pick-list values map value-by-value, text fields map directly, date fields map to Twenty date fields. Fields with no match become text fields with original values preserved.
CosmoLex
Note / Document
Twenty CRM
Note
1:1CosmoLex matter notes and document links map to Twenty Notes on the related Opportunity record. Document file attachments are downloaded from CosmoLex's document storage and re-uploaded to Twenty Files, linked to the corresponding Opportunity or People record. The original note body content transfers directly, preserving internal communications, case annotations, and reference materials associated with each matter.
CosmoLex
Unbilled Invoice / AR
Twenty CRM
Custom field on Opportunity / Line item
1:1CosmoLex outstanding invoice balances and unbilled time have no native CRM equivalent in Twenty. Outstanding AR amounts migrate as a custom currency field (Outstanding_AR__c) on the Opportunity. Invoice line-item detail is preserved in a custom long-text field for reference only.
| CosmoLex | Twenty CRM | Compatibility | |
|---|---|---|---|
| Client (Contact) | People1:1 | Fully supported | |
| Client (Organization) | Company1:1 | Fully supported | |
| Matter | Opportunity1:1 | Fully supported | |
| Time Entry | Task1:1 | Fully supported | |
| Matter Responsible Attorney | Workspace Member (assigned to Opportunity)1:1 | Fully supported | |
| Matter Status | Custom field on Opportunity1:1 | Fully supported | |
| Billing Rate / Method | Custom field on Opportunity1:1 | Fully supported | |
| Trust Account Balance | Custom field on Company / People1:1 | Fully supported | |
| Matter Custom Fields | Custom fields on Opportunity1:1 | Fully supported | |
| Note / Document | Note1:1 | Fully supported | |
| Unbilled Invoice / AR | Custom field on Opportunity / Line item1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
CosmoLex gotchas
Financial migration is balances-forward only, not historical
Two-phase migration sequencing is mandatory
Hard costs must be imported as soft costs
No public API for automated bulk export
Chart of Accounts is user-setup after import, not migrated
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Extract CosmoLex data via structured CSV and direct database queries
FlitStack initiates the migration by obtaining fresh exports from CosmoLex using the platform's built-in CSV export (non-financial data: clients, matters, time entries, notes) and the financial-data migration templates. For supported setups, direct database queries supplement the export to capture custom fields and relationship metadata not exposed in the standard CSV layout. All data is extracted read-only — CosmoLex remains fully operational during extraction. FlitStack validates record counts and field completeness against the export metadata before proceeding.
Set up Twenty workspace schema: custom fields, objects, and user accounts
Before any data lands in Twenty, FlitStack creates the custom fields identified in the mapping plan: Matter_Number__c, Matter_Status__c, Billing_Method__c, Hourly_Rate__c, Trust_Balance__c, Outstanding_AR__c, Task_Hours__c, Billable__c, and Source_System_ID__c on the relevant objects. Workspace members are invited and verified so owner resolution can match CosmoLex Timekeeper and Matter Owner emails to Twenty user accounts during the data load. This also includes configuring any custom objects required for legal-specific data that does not fit standard Twenty objects.
Pre-process and sequence the import: Companies, then People, then Opportunities, then Tasks
FlitStack resolves all foreign keys during pre-processing: CosmoLex client_id on matter records becomes companyId pointing to the Twenty Company; matter_id on time entries becomes taskableId pointing to the migrated Opportunity. Multi-client matters and circular references are flagged and resolved per the firm's specified primary-client rule. The import is sequenced in Twenty's required order: Companies first, then People (with resolved companyId), then Opportunities (with resolved companyId and personId), then Tasks (with resolved taskableId). Custom objects and relationship records import last.
Run a sample migration and generate a field-level diff
A representative slice — typically 200–500 records spanning clients, organizations, matters, and time entries — migrates first. FlitStack generates a field-level diff comparing source values against destination field values so the firm's administrator can verify matter-status mapping, billing-method mapping, responsible-attorney resolution, and time-entry linkage before the full run commits. Any field mapping errors are corrected in the pre-processing layer before the full migration is triggered.
Execute full migration with delta-pickup and one-click rollback
The full dataset migrates into Twenty with a delta-pickup window of 24–48 hours following the cutover trigger. Any CosmoLex records modified or created during the migration window are captured and applied. FlitStack produces an audit log of every record operation (create, update, link). If reconciliation reveals data integrity issues, one-click rollback reverts the Twenty workspace to its pre-migration state so the team can re-run after correcting the mapping. CosmoLex is not modified at any point during the process.
Platform deep dives
CosmoLex
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across CosmoLex and Twenty CRM.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
8-object category — typical timelines run 2–7 days end-to-end.
API constraints
CosmoLex: Not publicly documented.
Data volume sensitivity
CosmoLex doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during CosmoLex to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your CosmoLex to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave CosmoLex
Other ways to arrive at Twenty CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.