CRM migration
Field-level mapping, validation, and rollback between LeadTrac and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
LeadTrac
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between LeadTrac and Odoo CRM.
Complexity
BStandard
Timeline
24–72 hours
Overview
LeadTrac organizes data around separate Lead, Contact, Company, Deal, and Activity objects with owner and team assignments. Odoo CRM uses a fundamentally different architecture: a single crm.lead model holds both leads and opportunities (distinguished by type='lead' vs type='opportunity'), res.partner serves as both contacts and companies (with parent_id for hierarchy), and pipeline stages are stored in crm.stage with sequence ordering for kanban display. We map LeadTrac's Lead to Odoo's crm.lead (type='lead'), LeadTrac's Contact and Company to res.partner (with contact_type='contact' or 'contact' for companies), LeadTrac's Deal to crm.lead (type='opportunity'), and LeadTrac's activities to crm.activity records linked by active_model and active_id. Owner resolution happens by email match against Odoo res.users. Custom fields on LeadTrac require manual field creation in Odoo Settings > Technical > Models before migration values can land. Workflows, document templates, and telephony configurations do not migrate — we export definitions for manual rebuild in Odoo Studio. The migration uses Odoo's XML-RPC API (available via External API on Odoo Custom Plan), with Odoo.sh or self-hosted deployments using xmlrpc/2/common and xmlrpc/2/object endpoints. A 24-48 hour delta-pickup window captures any records modified in LeadTrac during the cutover window, and our audit log tracks every operation with one-click rollback if reconciliation fails.
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 LeadTrac 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.
LeadTrac
Lead
Odoo CRM
crm.lead
1:1LeadTrac Lead maps to Odoo crm.lead with type='lead'. The lead's status, source, and priority fields map to Odoo's stage_id, source_id, and priority. Owner email matches res.users to populate user_id. Custom LeadTrac fields land as custom fields on crm.lead after ir.model.fields creation.
LeadTrac
Contact
Odoo CRM
res.partner
1:1LeadTrac Contact maps 1:1 to Odoo res.partner with contact_type='contact'. The name field is parsed from LeadTrac's firstname and lastname fields, concatenated into Odoo's single name field. Email, phone, mobile, street, street2, city, state, zip, and country fields map directly to their corresponding res.partner fields. Partner_id on LeadTrac leads maps to parent_id on res.partner, establishing the company association.
LeadTrac
Company
Odoo CRM
res.partner
1:1LeadTrac Company maps to Odoo res.partner with contact_type='company'. The company name from LeadTrac becomes the res.partner name field. Domain/website, industry classification, and employee count map to website, industry_id, and employee_count fields respectively. Annual revenue maps to turnover. Parent-child hierarchy between companies in LeadTrac maps via parent_id on res.partner, preserving organizational structure.
LeadTrac
Deal
Odoo CRM
crm.lead
1:1LeadTrac Deal maps to Odoo crm.lead with type='opportunity'. The deal name becomes crm.lead name, amount maps to expected_revenue, close_date maps to date_closed, and pipeline stage maps to stage_id against crm.stage records. Probability values are re-applied based on Odoo's stage configuration. Partner_id links the opportunity to the res.partner account. Owner email matches assign user_id, and priority maps to the priority field on crm.lead.
LeadTrac
Pipeline Stage
Odoo CRM
crm.stage
1:1Each LeadTrac pipeline stage becomes a crm.stage record with name, sequence, and legend_priority. Stage probability values map to Odoo's probability field on crm.lead. Teams with multiple LeadTrac pipelines create multiple crm.stage groups — Odoo's kanban view groups by stage_id and team_id.
LeadTrac
Sales Team
Odoo CRM
crm.team
1:1LeadTrac team and group structures map to Odoo crm.team records. Team members are resolved by matching their email addresses to existing res.users records, and these users populate the crm.team member list. The team leader assignment maps to crm.team's user_id field (also called team_leader). Opportunities inherit their team_id from either the creating user or from an explicitly assigned team during migration. If a LeadTrac team has no matching Odoo team, one is created.
LeadTrac
Activity (Call, Email, Meeting)
Odoo CRM
crm.activity + mail.message
1:1LeadTrac activity logs map to Odoo crm.activity records linked via active_model='crm.lead' and active_id. Activity type (call, email, meeting) maps to activity_type_id. Subject maps to summary, notes map to note field, and original timestamps preserve activity_date. Email activities also generate mail.message records for thread continuity.
LeadTrac
Attachment / Document
Odoo CRM
ir.attachment
1:1LeadTrac document files map to Odoo ir.attachment. Original filename maps to datas_fname, binary content maps to db_datas, and MIME type maps to mimetype. Res_model and res_id link the attachment to the target record (crm.lead or res.partner). Files over 115MB require chunked upload via Odoo's file upload mechanism.
LeadTrac
Custom Field
Odoo CRM
ir.model.fields
1:1LeadTrac custom fields require manual field creation in Odoo Settings > Technical > Models. We provide a custom field manifest listing field name, type (char, integer, selection, many2one), and target model. After ir.model.fields creation, migration values populate the custom columns on crm.lead or res.partner.
LeadTrac
Lead-Contact Association
Odoo CRM
crm.lead.partner_instructor_id / parent_id
1:1LeadTrac's association between Lead and Contact objects maps via crm.lead partner_id linking to res.partner. The partner_id field stores the primary contact for a lead or opportunity. When LeadTrac allows multiple contacts per lead, Odoo's crm.lead stores only a primary partner_id — additional secondary contacts are preserved as custom field references or activity log notes for manual linking in Odoo after migration.
LeadTrac
Owner / User
Odoo CRM
res.users
1:1LeadTrac owner_id and assigned user fields resolve by email match against Odoo res.users. Unmatched owners are flagged before migration — teams either create Odoo users first or assign records to a fallback user (typically admin). User active status and access rights are validated during resolution.
LeadTrac
Notes / Text Logs
Odoo CRM
crm.activity + mail.message
1:1LeadTrac text notes and log entries map to crm.activity records with activity_type_id='note' and summary containing the note text. Timestamps and owner_ids are preserved. For rich-text notes, we migrate to mail.message with subtype='comment' to maintain formatting and threading in Odoo's activity timeline.
| LeadTrac | Odoo CRM | Compatibility | |
|---|---|---|---|
| Lead | crm.lead1:1 | Fully supported | |
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner1:1 | Fully supported | |
| Deal | crm.lead1:1 | Fully supported | |
| Pipeline Stage | crm.stage1:1 | Fully supported | |
| Sales Team | crm.team1:1 | Fully supported | |
| Activity (Call, Email, Meeting) | crm.activity + mail.message1:1 | Fully supported | |
| Attachment / Document | ir.attachment1:1 | Fully supported | |
| Custom Field | ir.model.fields1:1 | Fully supported | |
| Lead-Contact Association | crm.lead.partner_instructor_id / parent_id1:1 | Fully supported | |
| Owner / User | res.users1:1 | Fully supported | |
| Notes / Text Logs | crm.activity + mail.message1: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.
LeadTrac gotchas
No public API means all data extraction is manual or vendor-dependent
Document and FlexNote export requires separate vendor access
Small review base and minimal independent benchmarks
Custom Properties schema not externally documented
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
Extract LeadTrac data and audit schema
FlitStack AI connects to LeadTrac via API (REST endpoints for leads, contacts, companies, deals, activities, attachments) and extracts all standard and custom objects. We capture object schemas including custom field definitions, pick-list values, and relationship IDs. An initial data quality audit flags duplicate records, missing required fields, and orphaned relationships (e.g., leads referencing deleted contacts). We generate a discovery report listing record counts per object, custom field inventory, and any data anomalies requiring cleansing before migration.
Create Odoo custom fields and stage mapping
Based on the LeadTrac custom field manifest, your Odoo admin creates ir.model.fields entries in Settings > Technical > Models for each non-standard LeadTrac field. FlitStack AI delivers a step-by-step field creation guide specifying field name, type, and target model. Simultaneously, we build the stage mapping matrix: LeadTrac pipeline stages mapped to crm.stage records with names, sequences, and probability values. We also map LeadTrac sales teams to crm.team records. This step requires your Odoo admin to apply the field definitions before the migration load phase begins.
Load res.partner records (contacts and companies)
FlitStack AI loads LeadTrac Companies first as res.partner records with contact_type='company', then Loads LeadTrac Contacts as res.partner with contact_type='contact'. Company parent-child hierarchy maps via parent_id. Email addresses are validated for uniqueness. Owner resolution matches LeadTrac owner_id email against res.users — unmatched owners are flagged in a pre-flight report. After res.partner records exist, we load LeadTrac Deals as crm.lead with type='opportunity', linking partner_id to the resolved res.partner, and Load LeadTrac Leads as crm.lead with type='lead'. Stage_id mapping applies the value_mapping from pipeline stage names to crm.stage ids.
Migrate activity history and attachments
With crm.lead and res.partner records in place, FlitStack AI loads activity history as crm.activity records linked via active_model='crm.lead' and active_id pointing to the target opportunity or lead. Activity type values map to crm.activity.type records (Phone Call, Email, Meeting, Note). Email activities also generate mail.message records for thread continuity in Odoo's chatter. File attachments migrate as ir.attachment records with res_model set to 'crm.lead' or 'res.partner', res_id pointing to the parent record id, and binary content populated from LeadTrac file exports. Files over Odoo's size limit are chunked or referenced via external URL.
Run test migration with field-level diff and delta pickup
FlitStack AI runs a test migration using a representative sample (typically 100-500 records spanning leads, contacts, companies, deals, and activities) against a staging Odoo environment. We generate a field-level diff comparing source values to destination field contents, verifying stage mapping, owner resolution, and custom field population. You review the diff and approve or request adjustments. After approval, the full migration runs against production Odoo. A 24-48 hour delta-pickup window captures records created or modified in LeadTrac during the cutover. Our audit log records every create and update operation, and one-click rollback reverts the Odoo database to pre-migration state if reconciliation fails.
Platform deep dives
LeadTrac
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between LeadTrac and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across LeadTrac and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between LeadTrac 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
LeadTrac: Not publicly documented.
Data volume sensitivity
LeadTrac 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 LeadTrac to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your LeadTrac 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 LeadTrac
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.