CRM migration
Field-level mapping, validation, and rollback between Assembly Trialworks and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Assembly Trialworks
Source
Twenty CRM
Destination
Compatibility
9 of 10
objects map 1:1 between Assembly Trialworks and Twenty CRM.
Complexity
BStandard
Timeline
2–5 days
Overview
Assembly Trialworks structures its data around litigation cases — Cases, Parties, Attorneys, Insurance Carriers, Documents, and a hierarchy of case-specific custom fields. Twenty CRM provides standard CRM objects: People, Companies, Opportunities, Notes, and Tasks, with custom-field support via Settings → Data Model. The migration translates Trialworks Cases into Twenty Opportunities with litigation-relevant fields carried as custom properties; Party records become People records with party-role and address data preserved; attorneys map by email match to Twenty workspace members; and document file paths are surfaced in Notes for manual re-upload. The API-driven migration runs against Twenty's REST endpoint at up to 200 calls per minute (Organization tier), with CSV bulk-import as a fallback for larger record batches. Workflows, discovery tracking, and calendaring automations are outside scope and must be rebuilt in Twenty's workflow builder. A 48-hour delta window captures any Trialworks records modified during the cutover before your team switches over to Twenty.
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 Assembly Trialworks 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.
Assembly Trialworks
Case
Twenty CRM
Opportunity
1:1Trialworks Case maps to Twenty Opportunity as the primary record. Case Number and Case Name map to Opportunity.name; case status maps to stage via value_mapping against a pick-list you define. Case-type pick-list values require explicit mapping to your Twenty pipeline stages before migration. Original create date preserved as a custom datetime field since Twenty's CreatedAt is set at migration time.
Assembly Trialworks
Party
Twenty CRM
People
1:1Party records map directly to Twenty People. PartyName becomes the person's display name; address, phone, and email map to the equivalent People fields. PartyType (Plaintiff, Defendant, etc.) has no native equivalent in Twenty — we carry it as a custom select field (PartyType__c) on the People record. Parties without an email are created as People with no email, and you choose whether to merge duplicate entries.
Assembly Trialworks
Insurance Carrier
Twenty CRM
Company
1:1Insurance Carrier records map to Twenty Companies. CarrierName becomes Company.name; address maps to the company address fields. Claim Number is carried as a custom text field on the associated Opportunity so the carrier-to-claim link remains queryable. If a carrier has multiple claimants, the carrier record is created once and linked via OpportunityId.
Assembly Trialworks
Attorney (Party of type Attorney)
Twenty CRM
People + WorkspaceMember
many:1Attorney party records map to Twenty People and are resolved to WorkspaceMembers by email match. If the attorney email matches an existing Twenty workspace member, the People record is linked to that member. If no match, the attorney is created as a People record without workspace access. Opposing counsel is stored as a custom People field on the related Opportunity.
Assembly Trialworks
Document (FileIT)
Twenty CRM
Note
1:1Trialworks documents are represented as Twenty Notes attached to the related Opportunity (Case). The Note body contains the original file path (e.g., \\server\cases\123\exhibit-A.pdf) and document type (Pleading, Correspondence, Exhibit). File attachments themselves require manual re-upload or API-based transfer since Trialworks CSV export does not package file binaries — see the gotchas section for details.
Assembly Trialworks
Case Custom Fields
Twenty CRM
Opportunity Custom Fields
1:1Trialworks firms commonly add custom fields for litigation-specific data: Damages Breakdown, Court Venue, Jurisdiction, Statute of Limitations, etc. All custom fields on Case are recreated as Twenty Opportunity custom fields via Settings → Data Model before migration. We deliver a field creation plan listing field name, type (text, number, date, select), and pick-list values so your Twenty admin can pre-provision them.
Assembly Trialworks
Party Custom Fields
Twenty CRM
People Custom Fields
1:1Custom fields on Party records — such as Bar Number for attorney parties or Insurance Policy ID for insured parties — are recreated as People custom fields in Twenty. The mapping plan names each custom field and its target type so the schema is ready before data lands. Fields that apply only to attorney-type parties are created as optional fields on the People object.
Assembly Trialworks
Case Status History
Twenty CRM
Custom Text Field on Opportunity
1:1Trialworks tracks case status transitions with timestamps. Twenty has no native audit trail for Opportunity stage changes. We preserve the last 10 status transitions as a custom long-text field (Case_Status_History__c) on each Opportunity, formatted as 'Status | Date' lines. This is reference data — it does not drive pipeline logic in Twenty.
Assembly Trialworks
Plaintiff / Defendant Roles
Twenty CRM
Custom Select Field (PartyType__c) on People
1:1Plaintiff, Defendant, Claimant, Co-Counsel, and Expert Witness are party-role values from Trialworks that have no direct equivalent in Twenty. We map each role string to a corresponding value in a custom PartyType__c select field on the People object. You define the full pick-list in Twenty's data model before migration so the import validates cleanly.
Assembly Trialworks
Case Settlement Amount
Twenty CRM
Custom Currency Field (Settlement_Amount__c) on Opportunity
1:1Settlement amounts in Trialworks map to a custom currency field (Settlement_Amount__c) on the Opportunity. Amount__c on the Opportunity holds the case value or damages estimate; Settlement_Amount__c holds the resolved settlement. Both coexist as separate custom fields so your pipeline reporting and settlement accounting remain distinct.
| Assembly Trialworks | Twenty CRM | Compatibility | |
|---|---|---|---|
| Case | Opportunity1:1 | Fully supported | |
| Party | People1:1 | Fully supported | |
| Insurance Carrier | Company1:1 | Fully supported | |
| Attorney (Party of type Attorney) | People + WorkspaceMembermany:1 | Fully supported | |
| Document (FileIT) | Note1:1 | Fully supported | |
| Case Custom Fields | Opportunity Custom Fields1:1 | Fully supported | |
| Party Custom Fields | People Custom Fields1:1 | Fully supported | |
| Case Status History | Custom Text Field on Opportunity1:1 | Fully supported | |
| Plaintiff / Defendant Roles | Custom Select Field (PartyType__c) on People1:1 | Fully supported | |
| Case Settlement Amount | Custom Currency Field (Settlement_Amount__c) on Opportunity1: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.
Assembly Trialworks gotchas
No public API means migration requires direct SQL database access
Assembly has discontinued custom dashboard creation and modification
FileIT document import requires a parallel folder-to-case mapping step
Custom fields are firm-specific and must be discovered before mapping
Firms being pushed toward cloud-only Neos despite needing on-premise
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
Audit Trialworks data and design the Twenty data model
FlitStack AI runs a discovery export from your Trialworks instance capturing all Cases, Parties, Insurance Carriers, custom field definitions, and file-path metadata. We then build a Twenty data-model design doc: a list of every custom field to create in Twenty (with type, pick-list values, and the Trialworks field it maps from), the Opportunity pipeline stages to match your firm's case lifecycle, and the PartyType__c pick-list values. Your Twenty admin creates the fields before we proceed. This step typically takes 3–5 business days depending on custom field volume.
Resolve attorney emails to Twenty workspace members
Twenty workspace members must exist before attorney Party records can be linked. FlitStack AI matches attorney email addresses from Trialworks against your Twenty workspace member list. Unmatched attorneys are flagged with a resolution report — you either invite them to Twenty first or assign their cases to a fallback member. No attorney Party record lands without a resolution decision, preventing orphaned case assignments in Twenty.
Migrate Companies, then People, then Opportunities in load-order sequence
Twenty's relational model requires parent records to exist before children can reference them. We import Insurance Carriers as Companies first, then Party records as People (linked to Companies via companyId), then Cases as Opportunities (linked to the primary plaintiff People record and the Insurance Carrier Company). Running these in the wrong order creates orphaned records that break pipeline reporting in Twenty. The import sequence is: Companies → People → Opportunities → Notes, with each batch validated before the next begins.
Run a sample migration with field-level diff and export file-path inventory
A representative slice of Cases (typically 50–100 records spanning your main practice areas) migrates first. FlitStack AI generates a field-level diff comparing source values against the Twenty records, so you can verify case number mapping, PartyType__c value distribution, settlement amount placement, and attorney email resolution before committing to the full run. We also export a document inventory listing every Trialworks file path so your team knows exactly what needs manual re-upload. Sample validation typically catches one or two custom field definitions that need adjustment before the full dataset runs.
Execute full migration with delta-pickup window and audit log
The full dataset migrates against Twenty's API. A delta-pickup window (typically 24–48 hours) runs after the primary import, capturing any Cases or Parties modified in Trialworks during the cutover. FlitStack AI maintains an audit log of every record created or updated, with source Trialworks ID cross-referenced to Twenty ID. If reconciliation shows unexpected gaps, one-click rollback reverts the Twenty workspace to its pre-migration state. Your team switches to Twenty after the delta window closes.
Platform deep dives
Assembly Trialworks
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 2 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 Assembly Trialworks and Twenty CRM.
Object compatibility
2 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
Assembly Trialworks: Not applicable—no public API.
Data volume sensitivity
Assembly Trialworks 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 Assembly Trialworks to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Assembly Trialworks 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 Assembly Trialworks
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.