CRM migration
Field-level mapping, validation, and rollback between Legal Case Tracker and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Legal Case Tracker
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Legal Case Tracker and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Legal Case Tracker organizes work around matters (cases), clients, documents, time entries, and billing line items tied to legal workflows. Odoo CRM models the same universe as Leads, Opportunities, and Contacts (res.partner) with an optional Project or Timesheet module for billable tracking. The migration carries every case, contact, document attachment, and time record into Odoo CRM using Odoo's XML-RPC API, creating crm.lead records for new intake and crm.opportunity records for active matters with stage names matching your Legal Case Tracker status labels. Custom fields on cases map to Odoo custom Char, Selection, or Many2one fields depending on datatype. Odoo has no native legal billing construct—trust account ledgers, client retainers, and billing invoices must be rebuilt in Odoo Accounting. Automation rules, template documents, and matter-specific workflow triggers do not migrate and need manual reconstruction in Odoo's Studio or server actions. The migration also preserves original creation timestamps, assignment histories, and any linked notes so that reporting continuity is maintained. Additionally, Odoo CRM's built-in email integration can be configured to automatically log client communications against each opportunity, replacing Legal Case Tracker's email tie functionality.
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 Legal Case Tracker 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.
Legal Case Tracker
Case/Matter
Odoo CRM
crm.lead / crm.opportunity
1:1Legal Case Tracker matters map to crm.lead for new-intake cases and crm.opportunity for active matters in the pipeline. Odoo requires a crm.lead to be converted to crm.opportunity via the Convert to Opportunity wizard, which creates the opportunity and links it to a res.partner contact. The mapping plan defines which Legal Case Tracker status values route to lead versus opportunity.
Legal Case Tracker
Client/Contact
Odoo CRM
res.partner
1:1Client records in Legal Case Tracker map directly to res.partner in Odoo. Odoo res.partner serves both the CRM and the accounting modules, so contacts created here are immediately available for invoicing and purchase workflows. Legal Case Tracker contact roles (Attorney, Client, Opposing Counsel) map to res.partner categories or custom tags in Odoo.
Legal Case Tracker
Document/Attachment
Odoo CRM
ir.attachment
1:1Document files attached to Legal Case Tracker matters are downloaded and re-uploaded as ir.attachment records in Odoo. The res_model field is set to crm.lead or crm.opportunity depending on the target object, and res_id references the migrated record's integer ID. Files are stored in Odoo's filestore directory; large documents (over 25MB) may require Odoo Document module or external storage configuration.
Legal Case Tracker
Time Entry
Odoo CRM
account.analytic.line
1:1Billable hours logged against Legal Case Tracker matters map to account.analytic.line records when Odoo Timesheet module is active. Each time entry becomes a timesheet line linked to the migrated crm.opportunity via the project_id and task_id context. Non-billable entries map to internal notes or tasks. Original date, duration, description, and user reference are preserved.
Legal Case Tracker
Expense
Odoo CRM
hr.expense
1:1Expenses incurred against Legal Case Tracker matters map to hr.expense records linked to the corresponding opportunity. Vendor name, amount, date, and description transfer directly. Odoo Expense approval workflow must be configured separately to route expenses through your firm's approval chain.
Legal Case Tracker
Status/Stage
Odoo CRM
crm.stage
1:1Legal Case Tracker status labels (Open, Pending Review, Closed Won, Closed Lost) map value-by-value to crm.stage records. Each stage in Odoo has a sequence integer and a probability percentage that applies to the opportunity's forecast. Stage-entered timestamps from Legal Case Tracker are preserved as custom datetime fields on the opportunity.
Legal Case Tracker
Custom Field (Text/Number/Date)
Odoo CRM
ir.model.fields (Char/Integer/Float/Date)
1:1Legal Case Tracker custom fields on matters map to Odoo custom fields created via Settings > Technical > Custom Fields. Field type determines the Odoo field_type: short text maps to Char, long text to Text, numbers to Integer or Float, dates to Date. A migration-time script creates each custom field on the crm.lead or crm.opportunity model before data loads.
Legal Case Tracker
Custom Field (Dropdown/Picklist)
Odoo CRM
ir.model.fields (Selection)
1:1Legal Case Tracker picklist custom fields with defined value options map to Odoo Selection fields. The selection options are encoded as a Python list of tuples in the field definition: [('value1','Label 1'),('value2','Label 2')]. If a picklist value has no Odoo counterpart, it is preserved as-is and a note is added to the migration plan for manual review.
Legal Case Tracker
Custom Field (Contact Lookup)
Odoo CRM
ir.model.fields (Many2one)
1:1Legal Case Tracker lookup fields referencing contacts map to Odoo Many2one fields pointing to res.partner. The field definition requires the comodel_name set to 'res.partner'. During migration, the contact ID from Legal Case Tracker is translated to the corresponding res.partner ID generated in Odoo.
Legal Case Tracker
Practice Area / Category
Odoo CRM
crm.tag / crm.team
many:1Legal Case Tracker practice-area tags and matter categories merge into Odoo's tag system (crm.tag) and sales team assignments (crm.team). Multiple Legal Case Tracker categories on one matter become multiple crm.tag records on the opportunity. Team assignment maps based on attorney owner in Legal Case Tracker—each unique owner becomes a crm.team or is assigned as the opportunity's user_id.
Legal Case Tracker
Billing Invoice Line
Odoo CRM
account.move.line (future)
1:1Legal Case Tracker invoice line items tied to matters have no Odoo CRM equivalent. These records must be rebuilt using Odoo Accounting (account.move) once the CRM migration is complete. FlitStack preserves the invoice data as reference records in a holding table so your accounting team can reconstruct invoices in Odoo.
Legal Case Tracker
User / Attorney
Odoo CRM
res.users
1:1Legal Case Tracker users (attorneys, paralegals, staff) map to res.users records in Odoo. User matching is done by email address. If a Legal Case Tracker user has no corresponding Odoo user, they are flagged in the migration plan—their cases are assigned to a fallback user (typically the admin) and their name is stored in a custom x_original_owner field for reference.
| Legal Case Tracker | Odoo CRM | Compatibility | |
|---|---|---|---|
| Case/Matter | crm.lead / crm.opportunity1:1 | Fully supported | |
| Client/Contact | res.partner1:1 | Fully supported | |
| Document/Attachment | ir.attachment1:1 | Fully supported | |
| Time Entry | account.analytic.line1:1 | Fully supported | |
| Expense | hr.expense1:1 | Fully supported | |
| Status/Stage | crm.stage1:1 | Fully supported | |
| Custom Field (Text/Number/Date) | ir.model.fields (Char/Integer/Float/Date)1:1 | Fully supported | |
| Custom Field (Dropdown/Picklist) | ir.model.fields (Selection)1:1 | Fully supported | |
| Custom Field (Contact Lookup) | ir.model.fields (Many2one)1:1 | Fully supported | |
| Practice Area / Category | crm.tag / crm.teammany:1 | Fully supported | |
| Billing Invoice Line | account.move.line (future)1:1 | Fully supported | |
| User / Attorney | res.users1: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.
Legal Case Tracker gotchas
Time entries may use non-standard duration formats
No native document export endpoint exists
Role-based access flags may disrupt user assignment after migration
Calendar events without a parent-case link import as orphaned records
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
Audit Legal Case Tracker data model and extract records via API
FlitStack AI connects to Legal Case Tracker's REST API using OAuth 2.0 credentials provided during onboarding. We export all cases, contacts, documents, time entries, and custom field definitions in a single pass. The export script logs the total record count per object, identifies records with missing required fields, and flags custom field definitions with non-standard datatypes for mapping review before the Odoo schema is built.
Create Odoo custom fields and pipeline stages
Before any data moves, FlitStack creates all required custom fields on the crm.lead and crm.opportunity models using Odoo's ir.model.fields API via XML-RPC. Each Legal Case Tracker custom field generates a corresponding Odoo field with the correct field_type and, for Selection fields, the full list of options. crm.stage records are created to match Legal Case Tracker status labels, with sequence numbers and probability values assigned. The Odoo schema plan is shared with your admin for review before step three begins.
Create Odoo users and map attorneys by email
Legal Case Tracker users are matched to Odoo res.users by email address. For each user, FlitStack verifies the res.users record exists; if not, the case owner is set to the migration admin and the original Legal Case Tracker owner ID is stored in a custom reference field. Sales teams (crm.team) are created based on Legal Case Tracker practice-area groupings or department assignments, and team members are linked to corresponding Odoo users.
Migrate contacts to res.partner and cases to crm.lead
Client contacts load into res.partner first since crm.lead records depend on the partner_id foreign key. Cases load as crm.lead records with all standard fields (name, description, stage_id, user_id) and custom fields populated from Legal Case Tracker. Document attachments download from Legal Case Tracker and re-upload to Odoo as ir.attachment records with the correct res_model and res_id set. Time entries are written to a holding table or directly to account.analytic.line if the Timesheet module is active.
Run field-level diff on sample and convert leads to opportunities
FlitStack runs a sample migration on a representative slice of 100–500 records covering contacts, cases, documents, and time entries. A field-level diff report compares source values against destination field contents so you can verify custom field mapping, stage name resolution, and owner assignment before the full run. After sample approval, a bulk conversion script calls convert_opportunity() on all active cases to create crm.opportunity records in the correct pipeline stages.
Cut over with delta pickup and post-migration audit
The full migration runs against Odoo with a 24–48 hour delta-pickup window capturing any records modified in Legal Case Tracker during cutover. FlitStack logs every API operation in an audit table. A post-migration reconciliation report compares record counts by object and flags any records that failed to insert due to constraint errors. One-click rollback reverts the Odoo database to its pre-migration state if reconciliation uncovers critical data integrity issues.
Platform deep dives
Legal Case Tracker
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Legal Case Tracker and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Legal Case Tracker and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Legal Case Tracker and Odoo CRM.
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
Legal Case Tracker: Not publicly documented.
Data volume sensitivity
Legal Case Tracker 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 Legal Case Tracker to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Legal Case Tracker 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 Legal Case Tracker
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.