CRM migration
Field-level mapping, validation, and rollback between Dispatch Pro and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Dispatch Pro
Source
Odoo CRM
Destination
Compatibility
11 of 11
objects map 1:1 between Dispatch Pro and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Dispatch Pro organizes around work orders, technicians, and service appointments — a dispatch-first data model built for field-service operations running on ServiceTitan's platform. Odoo CRM organizes around crm.lead (which combines HubSpot-style leads and opportunities), res.partner as the unified contact-account object, and crm.team scoped by salespersons. The migration must translate Dispatch Pro's flat work-order structure into Odoo's lead-plus-pipeline model, resolve customer records as Odoo partners, and carry over technician assignments as Odoo custom fields since Odoo has no native technician-to-job booking concept. We access Dispatch Pro via its API endpoints and export work orders, customer profiles, and custom property definitions in a sequenced run: customers first (for foreign-key resolution), then jobs mapped to Odoo crm.lead records with stage values derived from Dispatch Pro job status. Custom fields from Dispatch Pro become Odoo ir.model.fields with the original Dispatch Pro field name stored as a help-text reference. Workflows, dispatch-board rules, and technician scheduling logic do not transfer — we export your Dispatch Pro playbook as a rebuild reference for Odoo Studio or a custom module.
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 Dispatch Pro 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.
Dispatch Pro
Job (Work Order)
Odoo CRM
crm.lead
1:1Dispatch Pro work orders map directly to Odoo crm.lead records. The job name becomes the lead name, job status maps to an Odoo pipeline stage, and the job amount maps to Odoo's expected_revenue field. Dispatch Pro job IDs are preserved in Odoo's id_name reference field for traceability.
Dispatch Pro
Job Status
Odoo CRM
crm.lead.stage_id
1:1Dispatch Pro job statuses (Scheduled, Dispatched, En Route, In Progress, On Hold, Completed, Cancelled) map value-by-value to Odoo CRM stage records. Each Dispatch Pro status value requires a matching stage created in Odoo before migration so stage_id references resolve correctly on import.
Dispatch Pro
Customer
Odoo CRM
res.partner
1:1Dispatch Pro customer records (name, phone, email, address) migrate to Odoo res.partner. The contact_type field is set to 'contact' for individuals and 'company' for businesses identified as commercial entities in Dispatch Pro. Primary customer records are created first so job-to-customer foreign keys resolve during job import.
Dispatch Pro
Job Address / Service Location
Odoo CRM
res.partner (address fields) / crm.lead
1:1Dispatch Pro service address fields (street, city, state, zip) migrate to the partner address fields on the customer record. If the service location differs from the customer billing address, a separate partner record is created with type 'other' and linked to the primary customer partner.
Dispatch Pro
Technician
Odoo CRM
res.users / custom field on crm.lead
1:1Odoo has no native technician entity. Dispatch Pro technicians are matched to Odoo res.users by email for users who will work in the CRM. Unmatched technicians are stored as a custom Char field on the lead (x_technician_assigned) so the assignment data is preserved even when no Odoo user account exists for that technician.
Dispatch Pro
Job Custom Fields
Odoo CRM
ir.model.field / x_* custom fields on crm.lead
1:1Dispatch Pro custom fields on jobs (e.g., job_type, priority_level, custom_tag) require Odoo custom field creation before import. Each custom field definition is created as an x_ field on crm.lead using Odoo Studio or a data migration script. Field type matching is verified: text fields become char/text, numeric fields become float, date fields become date.
Dispatch Pro
Job Activity / Timeline
Odoo CRM
mail.message on crm.lead
1:1Dispatch Pro job activity log entries (status changes, technician notes, dispatcher actions) migrate as Odoo mail.message records linked to the crm.lead. The original timestamp and actor name are preserved in the message body. This preserves the job's chronological history inside Odoo's activity feed.
Dispatch Pro
Job Attachments / Photos
Odoo CRM
ir.attachment / crm.lead attachments
1:1Files and photos attached to Dispatch Pro jobs are downloaded and re-uploaded to Odoo as ir.attachment records linked to the corresponding crm.lead. The original filename and content type are preserved. Inline images embedded in job notes are extracted and stored as separate attachments.
Dispatch Pro
Job Type / Category
Odoo CRM
crm.lead.tag_ids / custom field
1:1Dispatch Pro job type values (e.g., Repair, Installation, Warranty, Maintenance) map to Odoo crm.lead.tag_ids as a tag record per job type. Alternatively, if job type controls pipeline routing, a custom selection field is created on crm.lead and populated via value mapping. The mapping choice is confirmed during the sample migration review.
Dispatch Pro
Customer Tags / Segments
Odoo CRM
res.partner.category_id
1:1Dispatch Pro customer tags (e.g., VIP, Commercial, Residential) migrate as res.partner.category_id entries. Tags are created in Odoo first, then linked to partner records during the customer import phase. Multiple tags per customer are supported via the category_id many2many relationship, and they enable segmentation and filtering in Odoo reporting, preserving the original grouping logic from Dispatch Pro.
Dispatch Pro
Source / Lead Origin
Odoo CRM
crm.lead.source_id
1:1If Dispatch Pro records the origin of a customer or job (Phone, Web, Walk-in, Referral), those values map to Odoo's crm.lead.source_id selection field. Custom source values require Odoo configuration before migration or are stored in a custom Char field as a fallback.
| Dispatch Pro | Odoo CRM | Compatibility | |
|---|---|---|---|
| Job (Work Order) | crm.lead1:1 | Fully supported | |
| Job Status | crm.lead.stage_id1:1 | Fully supported | |
| Customer | res.partner1:1 | Fully supported | |
| Job Address / Service Location | res.partner (address fields) / crm.lead1:1 | Fully supported | |
| Technician | res.users / custom field on crm.lead1:1 | Fully supported | |
| Job Custom Fields | ir.model.field / x_* custom fields on crm.lead1:1 | Fully supported | |
| Job Activity / Timeline | mail.message on crm.lead1:1 | Fully supported | |
| Job Attachments / Photos | ir.attachment / crm.lead attachments1:1 | Fully supported | |
| Job Type / Category | crm.lead.tag_ids / custom field1:1 | Fully supported | |
| Customer Tags / Segments | res.partner.category_id1:1 | Fully supported | |
| Source / Lead Origin | crm.lead.source_id1: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.
Dispatch Pro gotchas
Dispatch Pro is a ServiceTitan-only licensed module
Optimization behavior may not carry over after migration
Slow support response during migration cutover
Eight priority levels may not map 1:1 to destination CRM
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 Dispatch Pro data model and build Odoo schema plan
FlitStack AI extracts the full Dispatch Pro object inventory via API — jobs, customers, technicians, custom field definitions, and activity log entries. We compare the Dispatch Pro data model against Odoo's crm.lead and res.partner schema and produce a schema plan: which Odoo stages to create, which custom fields to add to crm.lead and res.partner, and how to handle the technician-to-user resolution. This plan is reviewed with your Odoo admin before any Odoo configuration begins.
Provision Odoo custom fields and stage records
Using FlitStack's Odoo connector, we create all required ir.model.field records for Dispatch Pro custom fields (x_technician_assigned, x_job_start_time, x_original_create_date, x_dispatch_job_id, x_dispatch_customer_id, and any custom job properties identified in the audit). We also create the crm.stage records mapped from Dispatch Pro job statuses so stage_id references resolve during import. This step runs against a staging Odoo database first and is validated before production.
Resolve Dispatch Pro technicians to Odoo res.users
Dispatch Pro technician records are matched against Odoo res.users by email address. Technicians who have an Odoo user account gain a linked lead assignment; those without an account are stored in the x_technician_assigned custom field as a text reference. Your team decides during the sample migration review whether to invite remaining technicians as Odoo users or keep the text reference. No lead is imported without a technician resolution decision.
Run sample migration with field-level diff
A representative slice — typically 100–500 Dispatch Pro jobs and customers — migrates to the staging Odoo database. FlitStack generates a field-level diff showing each source field value against the destination crm.lead field value. You verify stage mapping correctness, technician resolution, customer-partner splitting, and custom field population. Sample results are reviewed in a synchronous call before the full run is approved.
Execute full migration with delta-pickup cutover window
Full Dispatch Pro export runs against the production Odoo database. A delta-pickup window of 24–48 hours captures any Dispatch Pro records modified during the cutover. FlitStack logs every insert, update, and skip operation in an audit CSV. One-click rollback reverts Odoo to the pre-migration snapshot if reconciliation uncovers data integrity issues. After rollback verification, the Dispatch Pro read-only access is revoked and Odoo becomes the live CRM.
Platform deep dives
Dispatch Pro
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Dispatch Pro and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Dispatch Pro and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Dispatch Pro 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
Dispatch Pro: Not publicly documented in available research.
Data volume sensitivity
Dispatch Pro 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 Dispatch Pro to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Dispatch Pro 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 Dispatch Pro
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.