CRM migration

Migrate from Time Matters(r) to Odoo CRM

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) logo

Time Matters(r)

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between Time Matters(r) and Odoo CRM.

Complexity

BStandard

Timeline

2–5 days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

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

Time Matters(r) logo

Time Matters(r)

What's pushing teams away

  • The UI and feature set feel dated compared to cloud-first competitors like Clio, MyCase, and Smokeball that offer native mobile apps and modern automation.
  • Billing and accounting modules are widely reported as cumbersome and unintuitive, driving firms to platforms that handle legal billing natively and better.
  • Customer service scores (2.9 on Capterra) reflect frustrations with slow or unresponsive support, especially for firms on older versions.
  • The lack of a public API means no integrations, no automation hooks, and no programmatic way to extract data — forcing firms into manual CSV exports for any migration.
  • Modern competitors offer easier workflow automation; a Reddit thread comparing TimeMatters to MyCase noted that literally everything was easier in the alternative platform.

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 Time Matters(r) objects map to Odoo CRM

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

maps to

Odoo CRM

res.partner

1:1
Fully supported

Time 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

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Time 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)

maps to

Odoo CRM

crm.lead.partner_ids / res.partner.contact_ids

many:1
Fully supported

Time 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

maps to

Odoo CRM

calendar.event

1:1
Fully supported

Time 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

maps to

Odoo CRM

mail.activity

1:1
Fully supported

Time 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

maps to

Odoo CRM

crm.lead / custom tag (crm.tag)

1:1
Fully supported

Time 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)

maps to

Odoo CRM

mail.message

1:1
Fully supported

Time 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

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Time 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

maps to

Odoo CRM

res.users

1:1
Fully supported

Time 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)

maps to

Odoo CRM

Ir.model.fields on crm.lead

1:1
Fully supported

Time 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)

maps to

Odoo CRM

Ir.model.fields on res.partner

1:1
Fully supported

Time 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

maps to

Odoo CRM

Active flag on migrated records

1:1
Fully supported

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

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.

Time Matters(r) logo

Time Matters(r) gotchas

High

No API forces file-only migration with manual export wizard steps

Medium

Archived records excluded by default — explicit 'Both' selection required

Medium

Include field names checkbox is easy to miss, leaving CSVs headerless

High

Binary documents and attachments not included in any standard export

Low

Merge template library requires separate file-share export, not in export wizard

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

  • Time Matters has no API — exports are CSV-only and require export template setup

    Time Matters does not expose a REST or SOAP API. All data extraction uses the built-in Custom Export tool, which requires creating export templates per record type (Contacts, Matters, Events, ToDos) before any data can be pulled. Each export template must have 'Include field names labels as first record' checked. FlitStack AI can build these templates and guide your Time Matters administrator through the export sequence, but the export step cannot be fully automated without manual template creation inside the Time Matters desktop application. Export batches should be run for active records first, then archived records separately, to keep file sizes manageable and avoid timeout during the Odoo import phase.

  • Matter-to-contact N:N relationships require junction-table construction in Odoo

    Time Matters allows any contact to be linked to any matter without a primary designation. Odoo's crm.lead model has a single partner_id field (primary contact) plus a contact_ids many2many field for secondary contacts, but it does not natively support a full N:N relationship matrix between contacts and opportunities. FlitStack AI resolves this by designating the most-recently-modified contact as the primary partner_id, then constructing a custom res.partner.matter.rel junction table in PostgreSQL to preserve the full N:N graph. This junction table is queryable in Odoo views using a custom computed field, but it requires Odoo custom field setup before the migration loads.

  • Odoo crm.lead requires stage_id — Time Matters matter status does not map 1:1

    Every Odoo crm.lead record must belong to a crm.stage record. Time Matters matter status (Open, Closed, Pending) does not correspond directly to Odoo pipeline stages, which are defined per sales team and may have Kanban-specific ordering. FlitStack AI maps matter status to a default stage (New/Qualified) at migration load and surfaces the full mapping plan (including any custom stages you define) before the run commits. If you need different stage assignments per practice area, Odoo's automated action rules can be configured post-migration to re-stage records based on tag_ids — this is not part of the data migration itself.

  • Time Matters merge templates and document automation cannot be migrated

    Time Matters is valued by law firms specifically for its merge template system — DOC/DOT mail-merge documents generated from matter and contact data. These merge templates are Word files with Time Matters-specific merge field syntax and are stored outside the Time Matters database. Odoo generates documents via QWeb report templates or Odoo Studio document builders, which are structurally incompatible with Time Matters merge fields. FlitStack AI cannot migrate merge templates; we export the template field name mappings as a reference CSV so your Odoo implementation team can rebuild the document generation logic in Odoo Studio. Similarly, automated billing rules and time-entry workflows in Time Matters are not migrated — they must be reconstructed in Odoo's sale.order and account.move models.

  • Archived records require separate export batches and Odoo active flag management

    Time Matters distinguishes active from archived records at the record level. By default, the Custom Export tool exports only active records; archived records require a separate export run selecting 'Archived' or 'Both' in the Archived Status step. Archived records must migrate with Odoo's active=False flag so they appear in the Archived stage view in Odoo CRM rather than cluttering the active pipeline. If your firm has a high volume of archived matters (common in law firms with decades of case history), FlitStack AI recommends migrating archived records in a second phase after active records are live, to keep the go-live dataset focused and reduce UAT scope.

Migration approach

Six steps for a successful Time Matters(r) to Odoo CRM data migration

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

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

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

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

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

Context on both ends of the pair

Time Matters(r) logo

Time Matters(r)

Source

Strengths

  • True relational database architecture with many-to-many Contact-Matter relationships
  • Deep merge-template system with field-level control for document assembly workflows
  • Fully customizable field names, form layouts, and practice-area sort tabs
  • Flat-rate pricing with no per-user billing surprises
  • Long-standing product with a stable file format and export infrastructure

Weaknesses

  • No public API — all data movement is manual file-based export
  • Desktop-client-only (on-premises) with no native cloud or mobile access
  • UI and feature set lag behind modern cloud-native legal platforms
  • Low customer satisfaction scores relative to alternatives on G2 and Capterra
  • Billing and accounting modules considered cumbersome by experienced users
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. All 8 core objects map 1:1 between Time Matters(r) and Odoo CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Time Matters(r) and Odoo CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Time Matters(r) and Odoo CRM.

  • 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

    Time Matters(r): Not applicable.

  • Data volume sensitivity

    B

    Time Matters(r) doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Time Matters(r) 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 Time Matters(r) to Odoo CRM data migrations

Answers to the questions buyers ask most during Time Matters(r) to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most Time Matters to Odoo CRM migrations complete in 2–5 days of active migration time for under 25,000 records, assuming export templates are ready and the Odoo schema is pre-built. Firms with over 100,000 records, a high density of matter-event relationships, or archived record requirements extend to 10–18 days. The longest single step is building the export templates in Time Matters if your administrator is unfamiliar with the Custom Export tool — we provide step-by-step guidance for that phase. Odoo stage and tag configuration (Step 2 of our approach) also requires decisions from your team before data loads.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Time Matters(r).
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