CRM migration
Field-level mapping, validation, and rollback between Time Matters(r) and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Time Matters(r)
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Time Matters(r) and Odoo CRM.
Complexity
BStandard
Timeline
2–5 days
Overview
Time Matters and Odoo CRM solve fundamentally different problems. Time Matters was built for law firms — its data model centers on matters (cases), attorney time tracking, document merge templates, and a many-to-many relationship between contacts and matters. Odoo CRM uses a lead-to-opportunity pipeline model where crm.lead records convert into crm.opportunity records and partner contacts (res.partner) live separately from the pipeline. The migration requires flattening Time Matters' matter-centric structure into Odoo's lead/opportunity split, translating event records into Odoo calendar events or mail activities, and mapping Time Matters custom fields onto Odoo's custom field system on crm.lead and res.partner. FlitStack AI sequences the migration to preserve referential integrity: contacts migrate first as res.partner records, then matters map to crm.lead with a contact lookup, then events and tasks attach to the migrated matter records. Since Time Matters has no public API, we use the platform's built-in Custom Export tool to extract data in structured CSV batches, validate field correspondence against Odoo's import specifications, and load via Odoo's XML-RPC API or CSV import with external-ID reconciliation. Custom fields that have no native Odoo equivalent become custom fields on the target model — your Odoo administrator chooses field visibility and stage-gating before go-live. Workflows, merge templates, document automation, and billing rules are not migrated; we export Time Matters workflow definitions as a reference document for your Odoo implementation team to rebuild using Odoo Studio or custom modules.
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 Time Matters(r) 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.
Time Matters(r)
Contact
Odoo CRM
res.partner
1:1Time Matters contacts migrate to Odoo res.partner (contact type). The email, phone, address, and name fields map directly. Odoo res.partner records can be marked as 'contact' or 'invoice address' — the Time Matters contact role is preserved as a note field if no native equivalent applies.
Time Matters(r)
Matter
Odoo CRM
crm.lead
1:1Time Matters matters map to Odoo crm.lead records. The matter name becomes the lead subject (name field). The responsible attorney maps to the crm.lead user_id via email resolution against Odoo users. Matter status (Open/Closed/Pending) maps to a custom selection field; stage assignment in Odoo is set separately during the migration based on your target pipeline configuration.
Time Matters(r)
Matter-Contact Link (N:N)
Odoo CRM
crm.lead.partner_ids / res.partner.contact_ids
many:1Time Matters allows any contact to link to any matter without a single primary designation. In Odoo, crm.lead has a partner_id (primary contact) and a contact_ids many2many field (secondary contacts). We migrate the most-recently-added contact as partner_id and surface remaining links as contact_ids, preserving the full relationship graph in a custom relational table.
Time Matters(r)
Event
Odoo CRM
calendar.event
1:1Time Matters events with a start datetime and duration map directly to Odoo calendar.event. The event description becomes the event body. Meeting type (phone, in-person, court date) maps to event activity type or a custom selection field. Events are linked to the migrated matter (crm.lead) via the res_model='crm.lead' and res_id reference.
Time Matters(r)
ToDo / Task
Odoo CRM
mail.activity
1:1Time Matters ToDos map to Odoo mail.activity records attached to the migrated matter. Activity type (call, email, meeting, upload) maps to Odoo's activity type taxonomy. Due date and assigned user map directly. The activity_note field captures the ToDo description. Completed status maps to activity done/undone state.
Time Matters(r)
Matter Practice Area
Odoo CRM
crm.lead / custom tag (crm.tag)
1:1Time Matters practice area categorization (Family, Criminal, Corporate, etc.) maps to Odoo crm.tag records. Tags are created in Odoo CRM and linked to the migrated crm.lead via the tag_ids many2many field. This keeps the practice area taxonomy visible in the Odoo pipeline without requiring custom field creation.
Time Matters(r)
Note (generic)
Odoo CRM
mail.message
1:1Time Matters notes attached to any record type migrate as Odoo mail.message records on the corresponding Odoo model. The message_body field preserves the full note text. Note create date is stored as a custom datetime field (Original_Create_Date__c) since Odoo's message create_date reflects the import timestamp.
Time Matters(r)
Attachment / Document
Odoo CRM
ir.attachment
1:1Time Matters documents attached to matters migrate as Odoo ir.attachment records. Each attachment is stored with res_model='crm.lead' and res_id pointing to the migrated matter. The original filename, mimetype, and create date are preserved. Files are re-uploaded to Odoo's filestore (or an external storage location you configure).
Time Matters(r)
User / Attorney
Odoo CRM
res.users
1:1Time Matters user and attorney records map to Odoo res.users by email address. Time Matters has no user directory export — we extract user names from the responsible-attorney fields on matters and match them against Odoo users by email domain or name. Unmatched attorneys are flagged for manual Odoo user creation before migration runs.
Time Matters(r)
Custom Fields (Matter)
Odoo CRM
Ir.model.fields on crm.lead
1:1Time Matters custom fields on matters map to custom fields on Odoo crm.lead. Field types translate: date fields become date or datetime on crm.lead; selection lists become selection fields; text fields become char or text. Custom fields are pre-created in Odoo via the migration plan so data lands in the correct columns during the load step.
Time Matters(r)
Custom Fields (Contact)
Odoo CRM
Ir.model.fields on res.partner
1:1Time Matters custom fields on contacts map to custom fields on Odoo res.partner using the same type-mapping logic. If a Time Matters custom field holds attorney bar numbers or client IDs, we preserve it as a char field on res.partner with a descriptive label for compliance reference.
Time Matters(r)
Archived Records
Odoo CRM
Active flag on migrated records
1:1Time Matters archived records migrate with the Odoo active=False flag set on each migrated record. Archived matters land in the Archived stage or with active=False so your team can review them in Odoo's inactive records view without cluttering the active pipeline. This approach keeps your active CRM focused on current matters while preserving complete historical records for compliance and reference purposes.
| Time Matters(r) | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Matter | crm.lead1:1 | Fully supported | |
| Matter-Contact Link (N:N) | crm.lead.partner_ids / res.partner.contact_idsmany:1 | Fully supported | |
| Event | calendar.event1:1 | Fully supported | |
| ToDo / Task | mail.activity1:1 | Fully supported | |
| Matter Practice Area | crm.lead / custom tag (crm.tag)1:1 | Fully supported | |
| Note (generic) | mail.message1:1 | Fully supported | |
| Attachment / Document | ir.attachment1:1 | Fully supported | |
| User / Attorney | res.users1:1 | Fully supported | |
| Custom Fields (Matter) | Ir.model.fields on crm.lead1:1 | Fully supported | |
| Custom Fields (Contact) | Ir.model.fields on res.partner1:1 | Fully supported | |
| Archived Records | Active flag on migrated records1: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.
Time Matters(r) gotchas
No API forces file-only migration with manual export wizard steps
Archived records excluded by default — explicit 'Both' selection required
Include field names checkbox is easy to miss, leaving CSVs headerless
Binary documents and attachments not included in any standard export
Merge template library requires separate file-share export, not in export wizard
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
Build Time Matters export templates and extract source data
FlitStack AI works with your Time Matters administrator to create export templates for each record type: Contacts, Matters, Events, ToDos, and Notes. Each template includes all standard and custom fields. We guide the export sequence so that Contacts export first, followed by Matters, then Events and ToDos. The export runs in the Time Matters desktop application in ASCII CSV format with headers included. Archived records are exported in a separate batch with the Archived Status set to 'Both'. The resulting CSV files are uploaded to FlitStack AI's secure migration workspace for field analysis and mapping validation.
Design Odoo schema and custom fields
Before data loads into Odoo, FlitStack AI delivers a schema setup plan specifying the crm.stage records needed (stage names, sequence order, team assignment), custom fields to create on crm.lead and res.partner (including type, label, and selection values), and the practice-area tag taxonomy. Your Odoo administrator creates these elements in the Odoo Settings > Technical area. The junction table for N:N contact-matter relationships is also created at this step. We provide SQL and field-creation instructions so the schema is ready before any data lands.
Resolve attorney and user assignments by email
FlitStack AI cross-references Time Matters attorney names against Odoo res.users by email address. Any attorney in Time Matters who does not have a corresponding Odoo user account is flagged in a pre-migration report. Your Odoo administrator creates the missing user accounts before the migration run. Records assigned to unresolved attorneys are flagged with a custom field (Original_Attorney_Name__c) and assigned to a fallback Odoo user so no record is orphaned during load.
Run sample migration with field-level diff
A representative sample (typically 200–500 records spanning contacts, matters, events, and ToDos) migrates first. FlitStack AI generates a field-level diff comparing source CSV values against the loaded Odoo records, highlighting any field that failed to map, truncated, or received a default value. The sample validates the practice-area tag mapping, the attorney resolution logic, the event-to-calendar.event relationship resolution, and the N:N junction table construction. You review the diff and approve before the full run commits.
Execute full migration with delta-pickup window
The full data set loads into Odoo via the XML-RPC API or CSV import in dependency order: res.partner first (contacts), then crm.lead (matters linked by partner_id), then calendar.event and mail.activity (events and ToDos linked by res_model and res_id). After the initial load, a delta-pickup window of 24–48 hours captures any matters or contacts created or modified in Time Matters during the cutover period. FlitStack AI generates an audit log for every record operation and a one-click rollback is available if reconciliation identifies missing or duplicated records.
Platform deep dives
Time Matters(r)
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Time Matters(r) and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Time Matters(r) and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Time Matters(r) 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
Time Matters(r): Not applicable.
Data volume sensitivity
Time Matters(r) 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 Time Matters(r) to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Time Matters(r) 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 Time Matters(r)
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.