CRM migration

Migrate from Assembly Trialworks to Twenty CRM

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 logo

Assembly Trialworks

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

90%

9 of 10

objects map 1:1 between Assembly Trialworks and Twenty CRM.

Complexity

BStandard

Timeline

2–5 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Assembly Trialworks logo

Assembly Trialworks

What's pushing teams away

  • Assembly Software is actively steering Trialworks customers toward Neos, its cloud-only successor, and has stopped creating or modifying custom dashboards, making the platform feel like it is entering long-term maintenance mode.
  • Neos is cloud-only with no on-premise option, which forces firms that require local server deployment to either switch platforms entirely or accept a deployment model they never chose.
  • Users report that Neos lacks features Trialworks had, and G2 satisfaction scores for Neos exceed Trialworks, creating pressure without clear functional parity at launch.
  • The forced transition conversation is creating churn anxiety among firms that do not want to migrate to a cloud product but face uncertainty about Trialworks' long-term roadmap despite Assembly's official no-EOL statement.
  • Windows-only workstation requirement and lack of native Mac or mobile support increasingly conflicts with modern law firm BYOD expectations and hybrid work arrangements.

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

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

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Trialworks 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

maps to

Twenty CRM

People

1:1
Fully supported

Party 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

maps to

Twenty CRM

Company

1:1
Fully supported

Insurance 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)

maps to

Twenty CRM

People + WorkspaceMember

many:1
Fully supported

Attorney 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)

maps to

Twenty CRM

Note

1:1
Fully supported

Trialworks 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

maps to

Twenty CRM

Opportunity Custom Fields

1:1
Fully supported

Trialworks 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

maps to

Twenty CRM

People Custom Fields

1:1
Fully supported

Custom 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

maps to

Twenty CRM

Custom Text Field on Opportunity

1:1
Fully supported

Trialworks 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

maps to

Twenty CRM

Custom Select Field (PartyType__c) on People

1:1
Fully supported

Plaintiff, 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

maps to

Twenty CRM

Custom Currency Field (Settlement_Amount__c) on Opportunity

1:1
Fully supported

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

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.

Assembly Trialworks logo

Assembly Trialworks gotchas

High

No public API means migration requires direct SQL database access

High

Assembly has discontinued custom dashboard creation and modification

Medium

FileIT document import requires a parallel folder-to-case mapping step

Medium

Custom fields are firm-specific and must be discovered before mapping

Medium

Firms being pushed toward cloud-only Neos despite needing on-premise

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

  • File attachments do not export via CSV — document re-upload must be planned separately

    Trialworks CSV export captures file path references (via FileIT) but does not package the file binaries into the export package. This means exhibits, pleadings, and correspondence stored in your Trialworks case file library are not carried into Twenty by the migration itself. You need a separate plan: manual re-upload to Twenty's attached Notes, a bulk file-transfer script using Trialworks's file API, or a hybrid approach where we surface every file path in a Note so your team can re-associate documents post-migration. For firms with thousands of documents per case, this is the highest-risk step in the migration scope.

  • Case roles (Plaintiff, Defendant, Claimant) have no native equivalent in Twenty — custom field required

    Trialworks Party records carry a partyType pick-list value distinguishing Plaintiffs, Defendants, Claimants, Co-Counsel, Expert Witnesses, and others. Twenty's People object has no built-in party-role concept — all people records are structurally identical regardless of their role in a matter. FlitStack AI maps each partyType value to a custom select field (PartyType__c) on the People object, but this requires you to define the pick-list in Twenty's Settings → Data Model before migration. If you skip this step, the import validation fails for Party records with a non-blank PartyType value.

  • Trialworks workflows, discovery tracking, and calendaring automations cannot migrate

    Discovery deadlines, court-date reminder workflows, statute-of-limitations alerts, and case-status-change triggers in Trialworks are platform-specific automation logic. Twenty's workflow builder handles generic task triggers and field-update automations but does not replicate Trialworks's litigation automation model. FlitStack AI migrates data and schema only. We can export your Trialworks workflow definitions as a written reference document to support your Twenty admin in rebuilding those automations, but the logic must be recreated manually in Twenty's workflow builder after the data migration completes.

  • Twenty CSV import cannot create fields — all custom fields must exist before the import runs

    Twenty's CSV import function creates records and populates existing fields, but it does not dynamically create custom fields during import. The import flow is: create all custom fields in Settings → Data Model first, then run the CSV import. For an Assembly Trialworks migration with 30+ custom fields (common in PI and civil litigation firms), this means your Twenty admin needs to pre-create every custom field — with correct types (text, number, date, select, multi-select) and pick-list values — before FlitStack AI can import a single Case or Party record. We deliver a field creation checklist as part of the migration plan to keep this organized.

  • Multi-party cases with many attorneys per case create many-to-many People relationships

    A single Trialworks Case can have 5–10 Party records of type Attorney (plaintiff counsel, defense counsel, co-counsel, expert witnesses). In Twenty, each attorney becomes a People record, but Opportunities have no native many-to-attorney assignment model. FlitStack AI creates one People record per attorney and links them via a custom text field (Associated_Attorney_Emails__c) on the Opportunity that lists all attorney emails semicolon-separated. You can also opt for a custom Attorney junction object if your team needs more granular attorney-to-case assignment tracking.

Migration approach

Six steps for a successful Assembly Trialworks to Twenty CRM data migration

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

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

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

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

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

Context on both ends of the pair

Assembly Trialworks logo

Assembly Trialworks

Source

Strengths

  • Windows-native platform with deep Microsoft Office and WordPerfect document generation integration that litigation attorneys know well.
  • SQL Server backend gives IT staff full access to the database for custom reporting, backup, and integration work.
  • Customizable dashboards let individual users surface case metrics and pipeline views tailored to their practice area.
  • Supports on-premise, hosted, and virtual desktop deployment, giving firms flexibility in how they run the software.
  • Structured Claims and Parties data model aligns closely with how PI and liability litigation firms actually organize case information.

Weaknesses

  • No public REST API documented, making programmatic export and import a custom SQL-level operation rather than a standard integration.
  • Assembly has stopped creating or modifying custom dashboards, signaling reduced investment in the platform's feature set.
  • Strictly Windows-only workstations; no native Mac or Linux client, limiting deployment flexibility for modern hybrid work environments.
  • Cloud-only successor (Neos) has no on-premise option, forcing firms with local server requirements to migrate to a different platform entirely if they want to stay current.
  • Support for NeosAI and newer AI-powered features is concentrated in Neos, leaving Trialworks users without access to Assembly's most recent product investments.
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 Assembly Trialworks 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

    Assembly Trialworks: Not applicable—no public API.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

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 consultation

Most Trialworks-to-Twenty migrations complete in 3–7 days of active migration time for setups under 10,000 records with fewer than 20 custom fields. Larger firms with 20,000+ records, complex multi-party case structures, and 30+ custom fields typically need 2–3 weeks including schema setup, sample validation, and document re-upload planning. The schema design step (creating Twenty custom fields) is the longest pre-migration step and runs in parallel with your admin's review.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Assembly Trialworks.
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