CRM migration

Migrate from Assembly Trialworks to Odoo CRM

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 logo

Assembly Trialworks

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

83%

10 of 12

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

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Assembly Trialworks objects map to Odoo CRM

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)

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Trialworks 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

maps to

Odoo CRM

res.partner

1:many
Fully supported

Each 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

maps to

Odoo CRM

res.partner

1:1
Fully supported

Trialworks 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

maps to

Odoo CRM

mail.activity

1:1
Fully supported

Trialworks 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

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Trialworks 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

maps to

Odoo CRM

account.move.line

1:1
Fully supported

Trialworks 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

maps to

Odoo CRM

res.users

1:1
Fully supported

Trialworks 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

maps to

Odoo CRM

res.partner

1:1
Fully supported

Opposing 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

maps to

Odoo CRM

res.partner

1:1
Fully supported

Insurance 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

maps to

Odoo CRM

ir.attachment + res.partner

many:1
Fully supported

Trialworks 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

maps to

Odoo CRM

x_ field on crm.lead

1:1
Fully supported

Any 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

maps to

Odoo CRM

crm.lead.automated.action

1:1
Fully supported

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

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

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Odoo API rate limit of 1 request per second constrains batch migration speed

    Odoo's XML-RPC API enforces a 1 request per second rate limit on Standard plan, confirmed in Odoo community forums. For migrations exceeding 10,000 Trialworks records (each potentially generating multiple Odoo records), this translates to significant batch duration. FlitStack uses queued job processing with exponential backoff to respect the rate limit without data loss. Migrations can opt for Odoo Custom plan (no rate limit) or self-hosted Odoo Community (no API limits) if speed is critical.

  • Docketing events require manual Odoo activity type configuration before migration

    Trialworks Fast Track categories (court hearings, discovery deadlines, filing due dates, mediation dates) have no native equivalent in Odoo crm.lead's mail.activity model. Odoo ships default activity types (Call, Email, Meeting, To Do) but legal-specific types must be created in Odoo Settings > Technical > Database Structure > Mail Activity Types before migration runs. We deliver an activity-type setup checklist alongside the migration plan so these are ready before data loads.

  • Partner resolution requires res.partner records to exist before crm.lead creation

    Odoo's crm.lead model requires a valid partner_id (res.partner ID) for contact linking, and the ORM enforces referential integrity — a lead cannot be created with a non-existent partner_id. We sequence the migration so all Trialworks parties load as res.partner records first, capture the new Odoo partner IDs, then create crm.lead records with partner_id resolved. Any Trialworks parties with missing email or name data are flagged for manual review before the lead migration phase.

  • Document file size exceeds Odoo attachment limit for large court filings

    Odoo's default ir.attachment size limit is 25MB per file, which frequently falls short for Trialworks case files like digitized discovery document dumps, deposition transcripts, and exhibit packages that routinely exceed this threshold. We split oversized documents into sub-25MB chunks or store a URL reference in the attachment record pointing to the original document location, with a flag noting the split. Odoo Enterprise and self-hosted deployments can increase the limit via ir_attachment_max_width, ir_attachment_max_height, and upload_file_maxsize configuration settings.

  • Odoo CRM stages are team-scoped — multi-practice firm stage isolation requires team setup first

    Odoo CRM pipeline stages are assigned per sales team (crm.team), not globally. Firms with multiple practice areas (personal injury, civil litigation, family law) need separate Odoo crm.team records and stage configurations before migration. Otherwise all migrated matters land in the default team's stage set. We deliver a crm.team and stage-id setup plan as part of the migration package, recommending one team per practice area with stage pipelines matching the Trialworks matter status categories.

Migration approach

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

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

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

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

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

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

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.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 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 Odoo CRM.

  • Object compatibility

    B

    1 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 Odoo 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 Odoo CRM data migrations

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

Can't find your answer?

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 consultation

Most Trialworks to Odoo CRM migrations complete in 48–72 hours for under 10,000 records. The longest phase is pre-migration Odoo schema setup (activity types, custom fields, team stage configuration) which runs in parallel before data loads. Migrations exceeding 50,000 records or complex matter-to-party relationships (N:N mappings, 100+ document attachments per matter) extend to 5–10 days. Odoo's 1 request per second API rate limit is the primary clock-time driver for large batch loads.

Adjacent paths

Related migrations to explore

Ready when you are

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