CRM migration
Field-level mapping, validation, and rollback between Assembly Trialworks and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Assembly Trialworks
Source
Odoo CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Assembly Trialworks and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Assembly Trialworks stores legal matters as hierarchical cases with parties, docketing calendars, document repositories, and billing time entries. Odoo CRM flattens this into crm.lead for leads and opportunities, res.partner for contacts and companies, and ir.attachment for documents. The migration must de-construct Trialworks case structures (party roles, matter stages, court dates, filing deadlines) and distribute them across Odoo's relational model — contacts get linked to leads via partner_id, calendar events migrate as Odoo activities, and document attachments re-upload to ir.attachment. Workflows, document-generation templates, and billing rules do not transfer and must be rebuilt in Odoo or manually re-created. We use Odoo's XML-RPC API at 1 request per second to load leads and partners in dependency order: partners first, then leads with partner_id resolved, then activities and attachments. A delta-pickup window captures any matter updates during cutover so Odoo reflects your final Trialworks state at go-live. Each matter maps to a crm.lead record, with the primary party serving as the contact via partner_id, matter status determining the Odoo stage, and court and jurisdiction data preserved as custom fields. Original filing dates and attorney assignments carry over so your new CRM retains the complete case history from day one.
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 Odoo 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
Matter (Case)
Odoo CRM
crm.lead
1:1Trialworks matters map to Odoo crm.lead records. Each matter's primary party becomes the crm.lead's partner_id (res.partner). Matter status translates to Odoo stage via value mapping; court/jurisdiction information stored as custom fields on crm.lead. Original filing dates and attorney assignments carry over for a complete case history from day one.
Assembly Trialworks
Matter
Odoo CRM
res.partner
1:manyEach Trialworks party on a matter generates a res.partner record. Party type (Plaintiff, Defendant, Witness) maps to partner category tags. Individuals and organizations split into separate partner subtypes following Odoo's contact/company model. All party-to-matter relationships are preserved in the migration process.
Assembly Trialworks
Party / Contact
Odoo CRM
res.partner
1:1Trialworks contact records with name, phone, email, and address fields map directly to Odoo res.partner. Address fields (street, city, state, zip, country) translate to Odoo's address fields using partner_address_fields mapping. Phone numbers preserve formatting from the source system.
Assembly Trialworks
Docketing Event / Fast Track
Odoo CRM
mail.activity
1:1Trialworks court dates, discovery deadlines, and filing due dates migrate as Odoo mail.activity records attached to the corresponding crm.lead. Activity type set to 'meeting' or 'todo' based on event category; original deadline stored in activity date_deadline field for reference. All activity notes and descriptions carry over intact.
Assembly Trialworks
Document / File
Odoo CRM
ir.attachment
1:1Trialworks case documents (pleadings, exhibits, correspondence) re-upload to Odoo ir.attachment linked to the crm.lead record. File size up to 25MB per file; larger documents split or stored with external link reference. Original upload dates and file metadata preserved.
Assembly Trialworks
Time Entry / Billing
Odoo CRM
account.move.line
1:1Trialworks billable hours and legal invoices have no direct Odoo CRM equivalent. We preserve time entry data (date, hours, description, attorney) as a custom notes field on crm.lead for reference. Full billing rebuild requires Odoo Accounting module configuration separately.
Assembly Trialworks
Attorney / Staff
Odoo CRM
res.users
1:1Trialworks attorney and staff user records resolve to Odoo res.users by email match. Unmatched users flagged for admin to create Odoo accounts before migration; records assigned to a fallback user during transition. User active status and groups migrate accordingly.
Assembly Trialworks
Opposing Counsel
Odoo CRM
res.partner
1:1Opposing counsel contact details from Trialworks party records map to res.partner with category tag 'Opposing Counsel' for identification. Contact role preserved in partner_category_ids. Email and phone details transfer directly to the partner record.
Assembly Trialworks
Insurance Carrier
Odoo CRM
res.partner
1:1Insurance carrier information stored as a Trialworks party with carrier-specific fields. Maps to res.partner with industry='Insurance' and a custom field for carrier license number if present. Carrier address and contact person details also migrate to the partner record.
Assembly Trialworks
Medical Record Reference
Odoo CRM
ir.attachment + res.partner
many:1Trialworks medical record references (provider, date of service, record type) merge into two Odoo records: a res.partner for the medical provider and an ir.attachment for the record document linked to the crm.lead. Provider specialty and contact info map to partner fields.
Assembly Trialworks
Custom Case Field
Odoo CRM
x_ field on crm.lead
1:1Any Trialworks user-defined fields on matters (e.g., case type, venue, judge, insurance claim number) require Odoo custom field creation before migration. We create x_ prefixed fields on crm.lead model matching the data type and import values during the bulk load. Field labels match source terminology for user familiarity.
Assembly Trialworks
Workflow / Fast Track Rule
Odoo CRM
crm.lead.automated.action
1:1Trialworks Fast Track docketing rules (automated deadline calculations, reminder triggers) do not migrate. We document each Fast Track rule's logic as a plain-English specification for your Odoo admin to rebuild using Odoo Studio automated actions. Rule triggers and conditions are preserved in documentation.
| Assembly Trialworks | Odoo CRM | Compatibility | |
|---|---|---|---|
| Matter (Case) | crm.lead1:1 | Fully supported | |
| Matter | res.partner1:many | Fully supported | |
| Party / Contact | res.partner1:1 | Fully supported | |
| Docketing Event / Fast Track | mail.activity1:1 | Fully supported | |
| Document / File | ir.attachment1:1 | Fully supported | |
| Time Entry / Billing | account.move.line1:1 | Fully supported | |
| Attorney / Staff | res.users1:1 | Fully supported | |
| Opposing Counsel | res.partner1:1 | Fully supported | |
| Insurance Carrier | res.partner1:1 | Fully supported | |
| Medical Record Reference | ir.attachment + res.partnermany:1 | Fully supported | |
| Custom Case Field | x_ field on crm.lead1:1 | Fully supported | |
| Workflow / Fast Track Rule | crm.lead.automated.action1: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
Odoo CRM gotchas
Odoo.sh version gating blocks assisted migrations from trial
Enterprise modules fail to install on Community after database restore
Custom module view inheritance breaks between Odoo major versions
Custom fields risk losing their application context on Community
API access for Community is gated behind the Custom Plan
Pair-specific challenges
Migration approach
Pre-migration Odoo schema setup
Before any data moves, we deliver a schema setup checklist for your Odoo instance: create the crm.team records per practice area, configure pipeline stages matching Trialworks matter statuses, create all custom fields (x_case_type, x_court_name, x_judge_name, x_insurance_claim_number, x_document_category) on crm.lead and ir.attachment models, set up res.partner category tags for party roles (Plaintiff, Defendant, Opposing Counsel, Expert, Insurance Carrier), and configure mail activity types for legal event categories. We provide XML field definition files for Odoo Studio import to speed setup.
Export and profile Trialworks data
We extract data from Trialworks via its hosted export environment or direct database query if self-hosted. Export scope covers matters (cases), parties, docketing events, document metadata, time entries, and user records. We profile the export for data quality: missing email addresses on parties, duplicate matter numbers, undated docketing events, and oversized documents. A data quality report is shared before mapping begins.
Load res.partner records first, then crm.lead with partner_id resolution
Odoo's ORM enforces referential integrity so crm.lead.partner_id must reference a valid res.partner record. We batch-create all Trialworks parties as res.partner records first using XML-RPC create() calls, capturing the returned Odoo partner IDs in a mapping table. Then we map each Trialworks matter to crm.lead, resolving the primary party's partner_id from the captured IDs. Any matters with unresolved parties are held in a retry queue for manual review.
Migrate activities, attachments, and time entry reference notes
Docketing events load as mail.activity records linked to their parent crm.lead using Odoo's mail.activity.create() with res_model='crm.lead' and res_id set to the lead ID. Documents upload to ir.attachment with res_model='crm.lead', res_id pointing to the lead, and name set to the original file name. Time entries consolidate into a custom notes block on crm.lead for attorney reference. All loads respect the 1 request/second Odoo API rate limit using a queued worker.
Sample migration with field-level diff and delta pickup
A representative sample (100–500 records: 20 matters, 50 parties, 100 docketing events, 30 documents) migrates first. We generate a field-level diff report comparing source Trialworks values against the Odoo crm.lead and res.partner field contents, surfacing any mapping discrepancies for your review. After approval, the full migration runs. A 24–48 hour delta pickup window captures any Trialworks matter updates during cutover. Audit log records every operation; rollback available if reconciliation identifies data integrity issues.
Platform deep dives
Assembly Trialworks
Source
Strengths
Weaknesses
Odoo 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 Assembly Trialworks and Odoo 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
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 Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Assembly Trialworks to Odoo 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 Odoo 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.