CRM migration

Migrate from InTouch to Odoo CRM

Field-level mapping, validation, and rollback between InTouch and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

InTouch logo

InTouch

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

100%

10 of 10

objects map 1:1 between InTouch and Odoo CRM.

Complexity

BStandard

Timeline

2–5 business days

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

InTouch CRM operates as a lightweight, contact-centric sales tool with basic pipeline tracking and email automation. Odoo CRM extends that model into a modular ERP ecosystem where res.partner serves as the unified record for contacts and companies, and crm.lead handles both inbound leads and opportunities. The migration carries all InTouch records—contacts, companies, deals, activities, and custom fields—into Odoo's relational model. The key technical decisions are merging InTouch's separate contact and company objects into Odoo's res.partner with address book differentiation, mapping InTouch pipeline stages to Odoo CRM stages scoped by sales team, translating InTouch custom fields to Odoo x_ prefixed fields via Odoo Studio, and resolving InTouch owner assignments to Odoo res.users records by email match. FlitStack AI executes the transfer via Odoo's XML-RPC API using the admin credentials you provide, running a test migration of a representative slice before committing the full dataset. Workflows, email templates, and automations built in InTouch do not migrate—they require manual reconstruction using Odoo Automations and Studio after go-live. We document every mapping decision so your Odoo administrator can validate field values before you switch over.

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

InTouch logo

InTouch

What's pushing teams away

  • Advanced customisation for dashboards, reporting, and workflow branching is limited, causing firms with complex or non-standard transaction types to outgrow the platform's flexibility.
  • The mobile app receives consistent criticism for poor usability and feature gaps compared to the desktop interface, which frustrates fee-earners who work on-site at properties.
  • The transition from the legacy flash-based version to the modern platform disrupted established users' workflows, and some firms report the learning curve on the new UI was steeper than expected.
  • Firms requiring deep third-party integrations with accounting software, Land Registry portals, or practice management suites find InTouch's native integration ecosystem too narrow for their needs.

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 InTouch objects map to Odoo CRM

Each row shows how a InTouch 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.

InTouch

Contact

maps to

Odoo CRM

res.partner

1:1
Fully supported

InTouch contacts map to Odoo res.partner records with contact_type='contact'. The company field in InTouch populates parent_id on the res.partner record, linking the contact to its company partner. Email, phone, address, and job title fields transfer directly. If no company is specified in InTouch, the contact lands as a standalone res.partner.

InTouch

Company

maps to

Odoo CRM

res.partner

1:1
Fully supported

InTouch companies map to Odoo res.partner records with contact_type='company'. The company name maps to name, domain to website, and industry to industry_id (with value mapping for InTouch industry pick-list values). Address fields transfer to street, city, state_id, country_id, and zip. Employee count maps to employee_count for reference.

InTouch

Deal

maps to

Odoo CRM

crm.lead

1:1
Fully supported

InTouch deals become Odoo crm.lead records with type='opportunity'. The deal name maps to name, amount to expected_revenue, close date to date_deadline, and owner to user_id via email resolution. Pipeline and stage map to team_id and stage_id respectively, requiring InTouch pipeline names to have corresponding Odoo CRM stage records scoped by team.

InTouch

Pipeline

maps to

Odoo CRM

crm.team + crm.stage

1:1
Fully supported

Each InTouch pipeline becomes an Odoo crm.team record. Within each team, InTouch pipeline stages translate to crm.stage records with sequence order and probability values matching the source. Stage names transfer as stage names in Odoo. Teams with no pipeline association default to the Odoo Sales Team.

InTouch

Pipeline Stage

maps to

Odoo CRM

crm.stage

1:1
Fully supported

Stage names map from InTouch to Odoo via value-by-value correspondence. FlitStack preserves stage probability percentages as Odoo stage probability values when those exist in InTouch. Custom stage names require Odoo admin review to ensure the stage sequence in Odoo matches InTouch's funnel order.

InTouch

Custom Field (Matter Template)

maps to

Odoo CRM

ir.model.fields (x_ prefixed)

1:1
Fully supported

InTouch custom fields per matter template require Odoo Studio field creation before data migration. FlitStack delivers a field creation manifest listing the InTouch field name, Odoo field technical name (x_customfieldname), field type (char, selection, date, float), and whether the field is required. Fields are created on res.partner or crm.lead before the data load phase.

InTouch

Activity (Call, Email, Meeting, Note)

maps to

Odoo CRM

mail.activity / mail.message / calendar.event

1:1
Fully supported

InTouch logged calls map to mail.activity records with activity_type_id='call'. Emails map to mail.message with message_type='email'. Meetings map to calendar.event with partner_ids linking attendees. Notes map to mail.message as comments. All activity records preserve original creation timestamps and author attribution via user email matching.

InTouch

Owner / User

maps to

Odoo CRM

res.users

1:1
Fully supported

InTouch owner IDs resolve to Odoo res.users records by email address match. Contacts and deals without a resolvable owner attach to a designated fallback Odoo user (your admin specifies this). The mapping preserves the owner history so opportunity reports show the original InTouch assignee.

InTouch

Attachment / File

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

InTouch file attachments on contacts, companies, or deals download and re-upload to Odoo's ir.attachment table linked to the corresponding res.partner or crm.lead record. The original filename and content type are preserved. Odoo's attachment size limits (default 25MB per file) are respected during the transfer.

InTouch

Lead (InTouch inbound lead records)

maps to

Odoo CRM

crm.lead (type='lead')

1:1
Fully supported

If InTouch stores unqualified inbound leads separately from deals, those map to Odoo crm.lead records with type='lead'. These records are available for Odoo's lead-to-opportunity conversion workflow, which creates a new opportunity record and links it to the converted partner record. Lead source information transfers to the Odoo medium_id field when a matching medium exists.

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.

InTouch logo

InTouch gotchas

High

Custom fields are template-bound and require pre-migration schema review

Medium

Contact export runs asynchronously and can exceed one hour for large rolls

Medium

Legacy flash-era data may have inconsistent field encoding in exports

Low

Matter export is not a self-service feature on all tiers

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

  • InTouch contact-company model diverges from Odoo res.partner architecture

    InTouch maintains separate Contact and Company objects with a many-to-one relationship from contacts to companies. Odoo uses a single res.partner table where contact_type='company' represents organizations and contact_type='contact' represents people, with parent_id linking child contacts to the company partner. Migrations must establish the company partner first, then link contacts via parent_id. Contacts in InTouch without a company assignment migrate as standalone res.partner records without a parent, which is valid in Odoo but may affect reporting if your Odoo dashboard assumes company hierarchy. FlitStack generates the partner linkage plan before data loads so your admin can resolve any ambiguous assignments.

  • Odoo custom field creation must precede data migration

    InTouch custom fields per matter template have no direct Odoo equivalents and cannot be created during the API data load. Odoo requires custom fields to be registered in ir.model.fields before records using those fields can be inserted. FlitStack delivers a custom field manifest that maps each InTouch field name to an Odoo Studio field (x_ prefixed, type-matched) on the target model (res.partner or crm.lead). Your Odoo admin must create these fields in the target environment before FlitStack runs the migration. The manifest includes the field label, technical name, type (char, selection, date, float, boolean), and whether the field should be required or searchable. Fields not created in time are skipped in the initial pass and flagged for a post-creation supplemental load.

  • Pipeline-to-team mapping requires Odoo team pre-configuration

    InTouch pipelines have no native Odoo equivalent at the object level. Each InTouch pipeline must map to an Odoo crm.team record, and each pipeline stage must have a corresponding crm.stage record within that team. Odoo stage IDs are scoped by team_id, meaning the same stage name can exist independently in different teams. FlitStack cannot create Odoo teams and stages via the API without the appropriate Odoo administrator credentials and module access. The migration plan requires your Odoo admin to create the team-stage structure matching your InTouch pipeline topology before migration runs. If you skip this step, deals map to the default Sales Team and default stage sequence, which may not reflect your InTouch funnel order.

  • InTouch owner email resolution depends on existing Odoo users

    InTouch stores owner references as user IDs with associated email addresses. Odoo requires owner assignment via user_id on crm.lead and write_uid on res.partner. FlitStack matches InTouch owner emails to res.users records by email. If an InTouch owner has no corresponding Odoo user account, the record attaches to a designated fallback user and the unassigned owner is flagged in the migration report. Your team must create Odoo user accounts for all active InTouch owners before migration, or accept the fallback assignments. This is especially important for audit and compliance scenarios where opportunity ownership must match the original InTouch assignee.

  • Activity history volumes can exceed Odoo batch API limits

    InTouch records every call, email, meeting, and note as a separate activity. High-activity accounts can accumulate hundreds of thousands of activity records. Odoo's XML-RPC API has per-request payload limits and enforces transaction timeouts on large writes. FlitStack chunks activity migrations into batches of 500 records, inserting mail.activity, mail.message, and calendar.event records sequentially. Records with missing parent IDs (e.g., a call logged against an InTouch contact whose Odoo ID is unknown) are deferred to a second pass after all contacts and companies are confirmed in Odoo. This two-pass approach adds a small amount of migration time but ensures referential integrity across all activity links.

Migration approach

Six steps for a successful InTouch to Odoo CRM data migration

  1. Audit InTouch data model and export all record types

    FlitStack connects to InTouch via the credentials you provide and inventories all object types available for export: contacts, companies, deals, pipelines, stages, custom field definitions, activities, and attachments. We generate a record count per object type and identify any non-standard field types (e.g., multi-select pick-lists, rich-text fields) that require special handling. This audit phase also flags InTouch records with missing required fields, duplicate entries by email domain, and owner assignments that lack email addresses—issues that would cause Odoo import failures if not corrected beforehand.

  2. Create Odoo custom fields and sales team structure

    Before any data moves, your Odoo admin (guided by FlitStack's custom field manifest) creates the x_ prefixed fields on res.partner and crm.lead via Odoo Studio. Simultaneously, the admin creates crm.team records for each InTouch pipeline and crm.stage records within each team matching the InTouch stage sequence. FlitStack delivers a pre-migration checklist confirming all fields are created, all teams and stages are configured, and the admin has validated that stage probabilities align with the source funnel. The migration cannot proceed past step 2 until this schema is in place.

  3. Resolve owner mappings and establish fallback assignments

    FlitStack cross-references InTouch owner email addresses against your Odoo res.users table. Owners with matching Odoo accounts are mapped by email. Owners without matches are flagged for your admin to either create a corresponding Odoo user or designate a fallback user. This resolution step is critical because Odoo crm.lead.user_id and res.partner.user_id fields are required for many Odoo reporting and automation features. The final owner mapping table is delivered for your review before migration runs.

  4. Run sample migration with field-level diff

    A representative sample—typically 200–500 records spanning contacts, companies, deals, and activities—migrates first against a staging Odoo database (or a fresh production clone if your team prefers). FlitStack generates a field-level diff comparing source field values against destination field values, highlighting any truncation (e.g., InTouch text fields exceeding Odoo char limits), missing values, or unexpected transformations. Your team reviews the diff and approves the mapping rules before the full migration commits. This sample pass also validates that the Odoo custom fields, team-stage structure, and owner resolution are functioning as expected.

  5. Execute full migration with delta-pickup window

    The full migration loads contacts and companies first (establishing parent_id links), then deals with stage and team assignment, then activities with deferred parent resolution. A delta-pickup window of 24–48 hours after the initial load captures any records modified or created in InTouch during the cutover period. All operations are logged to an audit trail with source record ID, destination record ID, mapping rule applied, and timestamp. One-click rollback reverts all destination records to pre-migration state if reconciliation reveals data integrity issues. After rollback validation, the delta pass applies the captured changes and your team confirms the final record counts match the source.

Platform deep dives

Context on both ends of the pair

InTouch logo

InTouch

Source

Strengths

  • Purpose-built conveyancing workflow templates with Land Registry task automation built in.
  • Fully managed cloud infrastructure with six file replicas across two regions and real-time database replication.
  • Data export capability included at all pricing tiers, not gated behind Enterprise only.
  • Dedicated customer champion and structured onboarding for firms with limited in-house IT capacity.
  • 2FA security enforced for both users and clients accessing the system.

Weaknesses

  • Advanced customisation for dashboards, reports, and workflow branching is limited compared to general-purpose legal platforms.
  • Mobile app is widely reported as under-featured and difficult to use on-site.
  • Native integration ecosystem with third-party accounting, Land Registry, and practice management tools is narrow.
  • Transition from the legacy flash-based interface created workflow disruption for established users that some firms still reference negatively.
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 InTouch 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

    InTouch: Not publicly documented.

  • Data volume sensitivity

    B

    InTouch doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your InTouch 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 InTouch to Odoo CRM data migrations

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

Can't find your answer?

Walk through your InTouch to Odoo CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most InTouch to Odoo CRM migrations complete in 2–5 business days for under 25,000 records with standard custom fields and a single pipeline. The longest single step is configuring the Odoo team and stage structure to match your InTouch pipeline topology, which your admin handles before FlitStack runs. Larger datasets over 100,000 records or migrations requiring Odoo custom module development extend to 7–12 business days. The delta-pickup window adds another 24–48 hours after the initial load.

Adjacent paths

Related migrations to explore

Ready when you are

Move from InTouch.
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