CRM migration
Field-level mapping, validation, and rollback between InTouch and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
InTouch
Source
Odoo CRM
Destination
Compatibility
10 of 10
objects map 1:1 between InTouch and Odoo CRM.
Complexity
BStandard
Timeline
2–5 business days
Overview
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.
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 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
Odoo CRM
res.partner
1:1InTouch 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
Odoo CRM
res.partner
1:1InTouch 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
Odoo CRM
crm.lead
1:1InTouch 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
Odoo CRM
crm.team + crm.stage
1:1Each 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
Odoo CRM
crm.stage
1:1Stage 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)
Odoo CRM
ir.model.fields (x_ prefixed)
1:1InTouch 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)
Odoo CRM
mail.activity / mail.message / calendar.event
1:1InTouch 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
Odoo CRM
res.users
1:1InTouch 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
Odoo CRM
ir.attachment
1:1InTouch 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)
Odoo CRM
crm.lead (type='lead')
1:1If 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.
| InTouch | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner1:1 | Fully supported | |
| Deal | crm.lead1:1 | Fully supported | |
| Pipeline | crm.team + crm.stage1:1 | Fully supported | |
| Pipeline Stage | crm.stage1:1 | Fully supported | |
| Custom Field (Matter Template) | ir.model.fields (x_ prefixed)1:1 | Fully supported | |
| Activity (Call, Email, Meeting, Note) | mail.activity / mail.message / calendar.event1:1 | Fully supported | |
| Owner / User | res.users1:1 | Fully supported | |
| Attachment / File | ir.attachment1:1 | Fully supported | |
| Lead (InTouch inbound lead records) | crm.lead (type='lead')1: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.
InTouch gotchas
Custom fields are template-bound and require pre-migration schema review
Contact export runs asynchronously and can exceed one hour for large rolls
Legacy flash-era data may have inconsistent field encoding in exports
Matter export is not a self-service feature on all tiers
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 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.
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.
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.
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.
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
InTouch
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across InTouch and Odoo CRM.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
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
InTouch: Not publicly documented.
Data volume sensitivity
InTouch 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 InTouch to Odoo CRM migration scoping. Not seeing yours? Book a call.
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 consultationAdjacent paths
Other ways to leave InTouch
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.