CRM migration
Field-level mapping, validation, and rollback between Assembly Trialworks and HubSpot. We move data and schema; workflows are rebuilt natively in HubSpot.
Assembly Trialworks
Source
HubSpot
Destination
Compatibility
14 of 15
objects map 1:1 between Assembly Trialworks and HubSpot.
Complexity
BStandard
Timeline
48–72 hours
Overview
Teams leave Assembly Trialworks for HubSpot when their practice needs outgrow legal-only case management — specifically when marketing, sales, and client-services functions need a unified CRM that Trialworks was not designed to support. The migration carries everything Trialworks stores natively: parties (contacts), companies, case records (mapped to HubSpot Deals with a legal-matter schema), documents, calendar events, tasks, and billing history. The harder translation problems are mapping Trialworks case-specific fields like court information, opposing counsel, and case status to HubSpot's custom properties model, preserving many-to-many party-to-case associations using HubSpot's association labels, and restructuring document references into HubSpot Files with original folder paths preserved as metadata. HubSpot has no native legal-matter object — we handle this with a custom Deal schema that adds the legal fields Trialworks firms need without sacrificing HubSpot's native pipeline reporting. We sequence the migration using HubSpot's API and the import-by-object approach so associations resolve in the correct order: Companies first, then Contacts with party-to-company links, then Deals with case details, then Activities, then Files. A 24–48h delta-pickup window captures any matter updates made during the cutover window.
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 HubSpot, including any object-level transformations, lookup resolution, or schema-design dependencies.
Typical mapping — final map is confirmed during the sample migration step.
Assembly Trialworks
Party
HubSpot
Contact
1:1Trialworks Parties map directly to HubSpot Contacts. Party type (Attorney, Client, Witness, Opposing Counsel) is preserved as a HubSpot custom property (party_role__c) since HubSpot has no native role field on contacts. Multiple party roles per person are handled via association labels on Deal-Contact links.
Assembly Trialworks
Party (with company affiliation)
HubSpot
Contact + Company association
many:1When a Trialworks Party is affiliated with a Company record, we create a HubSpot Contact and a HubSpot Company, then link them via the native Contact-Company association. Party address, phone, and email all migrate to the Contact record; the Company record captures the firm or organization name.
Assembly Trialworks
Company / Organization
HubSpot
Company
1:1Trialworks Organizations map directly to HubSpot Companies. Company name, address, phone, and website fields migrate as HubSpot Company properties. Parent-subsidiary relationships in Trialworks map to HubSpot's Parent Company field on the Company record.
Assembly Trialworks
Case / Matter
HubSpot
Deal
1:1Trialworks Cases map to HubSpot Deals using a legal-matter Deal schema. The Case Name becomes the Deal name; the Case Number is stored as a custom property (case_number__c). The HubSpot pipeline represents the firm's practice areas (e.g., PI Litigation, Civil Litigation, Family Law) — each practice area is its own pipeline in HubSpot so stage pick-list values reflect the correct workflow.
Assembly Trialworks
Case custom fields (court, opposing counsel, statute of limitations, insurance carrier)
HubSpot
Deal custom properties
1:1Trialworks case-specific fields that have no HubSpot native equivalent are created as HubSpot custom properties on the Deal object: court_name__c (text), opposing_counsel__c (text), statute_of_limitations__c (date), insurance_carrier__c (text), case_type__c (picklist). Each custom property is typed correctly at creation (date fields become date properties, picklists become dropdowns).
Assembly Trialworks
Document / File
HubSpot
HubSpot Files
1:1Trialworks documents are re-uploaded as HubSpot Files attached to the corresponding Case-Contact-Company link. Original folder paths are stored as a metadata property (original_folder_path__c) on each file so document organization can be reconstructed in HubSpot or referenced for discovery purposes.
Assembly Trialworks
Calendar Event / Court Date
HubSpot
Meeting
1:1Trialworks calendar entries map to HubSpot Meetings with original start/end times, title, and description preserved. Meeting associations link to the relevant Deal (Case) so court dates and deadlines appear in the Case record's activity timeline. Owner of the Trialworks event maps to the HubSpot user by email match.
Assembly Trialworks
Task / To-Do
HubSpot
Task
1:1Trialworks Tasks migrate as HubSpot Tasks with original due dates, subject, and completion status preserved. Tasks linked to a specific Case are associated to the corresponding HubSpot Deal. Completed status is preserved as a HubSpot custom property (task_completed__c) since HubSpot's standard Task object does not track historical completion dates.
Assembly Trialworks
Bill / Invoice
HubSpot
Deal Line Item or Custom Object
1:1Trialworks billing records do not have a native HubSpot equivalent. We create a custom object (Legal_Billing__c) with fields for invoice number, amount, date, status, and linked Case (Deal). This preserves billing history for reference without requiring HubSpot's paid Operations Hub invoicing module.
Assembly Trialworks
Time Entry
HubSpot
Custom Object
1:1Billable time entries are stored in a Time_Entry__c custom object linked to the Deal and Contact. Hours, rate, description, and date are preserved as custom properties. This maintains attorney billing history without migrating into HubSpot's native billing tools.
Assembly Trialworks
Insurance / Lien record
HubSpot
Custom Object
1:1PI firms commonly track insurance carriers, policy numbers, and lien status per case. We create an Insurance_Lien__c custom object linked to the Deal, with carrier name, policy number, claim status, and lien amount as properties — preserved for case reference and settlement calculations.
Assembly Trialworks
Note
HubSpot
Note
1:1Trialworks notes migrate as HubSpot Notes attached to the relevant Contact or Deal. Original create date is stored in a custom datetime property (original_note_date__c) since HubSpot's CreatedDate reflects the import timestamp, not the original note date.
Assembly Trialworks
User / Staff member
HubSpot
HubSpot User
1:1Trialworks staff accounts are matched to HubSpot users by email address. If a Trialworks user has no matching HubSpot account, their records are assigned to a designated fallback HubSpot user and flagged for review before the migration completes.
Assembly Trialworks
Opposing Party / Opposing Counsel
HubSpot
Contact (with custom property)
1:1Opposing parties and opposing counsel are imported as HubSpot Contacts with a custom property (party_role__c = 'Opposing Party' or 'Opposing Counsel') distinguishing them from the firm's clients and witnesses. They can be associated to the relevant Case (Deal) just like any other party.
Assembly Trialworks
Witness
HubSpot
Contact (with custom property)
1:1Witnesses are HubSpot Contacts with party_role__c = 'Witness'. Contact information, notes, and any documents linked to the witness record migrate alongside the contact. Witness lists per case are preserved via Deal-Contact association labels.
| Assembly Trialworks | HubSpot | Compatibility | |
|---|---|---|---|
| Party | Contact1:1 | Fully supported | |
| Party (with company affiliation) | Contact + Company associationmany:1 | Fully supported | |
| Company / Organization | Company1:1 | Fully supported | |
| Case / Matter | Deal1:1 | Fully supported | |
| Case custom fields (court, opposing counsel, statute of limitations, insurance carrier) | Deal custom properties1:1 | Fully supported | |
| Document / File | HubSpot Files1:1 | Fully supported | |
| Calendar Event / Court Date | Meeting1:1 | Fully supported | |
| Task / To-Do | Task1:1 | Fully supported | |
| Bill / Invoice | Deal Line Item or Custom Object1:1 | Fully supported | |
| Time Entry | Custom Object1:1 | Fully supported | |
| Insurance / Lien record | Custom Object1:1 | Fully supported | |
| Note | Note1:1 | Fully supported | |
| User / Staff member | HubSpot User1:1 | Fully supported | |
| Opposing Party / Opposing Counsel | Contact (with custom property)1:1 | Fully supported | |
| Witness | Contact (with custom property)1: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
HubSpot gotchas
Marketing Contacts billing model is migration-critical
Feature tier gating is not visible until onboarding
Mandatory onboarding fees inflate year-one cost
HubSpot CSV importer cannot migrate engagements or attachments
Custom objects require Enterprise and a pre-existing schema
Pair-specific challenges
Migration approach
Discovery and schema mapping workshop
FlitStack AI reviews your Trialworks data export — parties, cases, documents, calendar, tasks, and billing — to build a full field-level mapping plan. We identify all custom fields, case types, and practice-area pipelines. A schema plan is delivered showing the HubSpot custom properties and association labels to be created before migration, including a review call with your team to confirm the mapping matches your firm's workflow.
HubSpot environment setup
We create all required custom properties on HubSpot Contacts, Companies, and Deals (case_number__c, court_name__c, party_role__c, etc.), set up per-practice-area pipelines, and configure association labels for party-to-case roles. If you are using HubSpot for the first time, we also configure user accounts and match Trialworks staff emails to HubSpot users. This step runs in parallel with your team's HubSpot onboarding so the environment is ready before data arrives.
Sample migration with field-level diff
A representative sample — typically 100–300 records spanning contacts, companies, cases across your main practice areas, and a sample of documents and calendar entries — migrates first. We generate a field-level diff comparing source values to destination values so you can verify that case type mapping, party role assignment, association labels, and document metadata are correct before committing to the full run. Any field mapping adjustments are made before the full migration proceeds.
Full migration with ordered object loading
Companies load first (HubSpot requires Companies before Contacts via the primary Company association). Contacts load second with party role assignments and Contact-Company links. Deals load third with case custom properties, case-contact associations using the custom role labels, and owner resolution by email. Documents upload fourth with original folder paths preserved as metadata. Calendar events and tasks load fifth with original timestamps. Bills and time entries load last via the custom billing object. The load order prevents foreign-key resolution failures common in out-of-order CRM migrations.
Delta-pickup and cutover
After the full migration completes, a 24–48h delta-pickup window captures any records created or modified in Trialworks during the cutover period. Owner resolution is re-run against the delta to flag any unmapped users. A post-migration validation report shows record counts by object, association completeness, and any records that could not be linked to their expected parent record. One-click rollback is available if the validation report reveals unexpected data gaps.
Platform deep dives
Assembly Trialworks
Source
Strengths
Weaknesses
HubSpot
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 HubSpot.
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 HubSpot migration scoping. Not seeing yours? Book a call.
Walk through your Assembly Trialworks to HubSpot 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 HubSpot
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.