CRM migration
Field-level mapping, validation, and rollback between Dispatch and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Dispatch
Source
Odoo CRM
Destination
Compatibility
10 of 11
objects map 1:1 between Dispatch and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Dispatch is a field-service and service-coordination platform focused on scheduling technicians, managing work orders, and tracking job statuses for service businesses. Teams move from Dispatch to Odoo CRM when they need the open-source flexibility of an all-in-one ERP suite — combining CRM with inventory, accounting, and project management in a single PostgreSQL-backed system. The migration carries Dispatch customer records (contacts and companies), job history, and custom properties into Odoo's crm.lead and res.partner objects. The harder problems are mapping Dispatch's work-order and job-tracking records to Odoo's opportunity model, preserving multi-address location data in Odoo's contact model, and handling Dispatch's custom fields in Odoo's ir.model.fields framework. Odoo CRM does not have native work-order or asset-management modules in its base CRM — those require Odoo Field Service or a custom module. We surface this gap in the migration plan so your team can configure Odoo Field Service or rebuild job-tracking logic after migration. Workflows, automation rules, and scheduling logic in Dispatch do not migrate and must be rebuilt in Odoo using its action-server and automated-action tools. We export your Dispatch workflow definitions as a rebuild reference. The migration uses Dispatch's API for record extraction and Odoo's xmlrpc interface for bulk insertion, with a delta-pickup window capturing any in-flight job updates during cutover.
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 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
Contact (Customer)
Odoo CRM
res.partner
1:1Dispatch customer records map directly to Odoo res.partner. Email, phone, and address fields translate cleanly, while optional fields such as street2, latitude, and longitude are captured in matching or custom fields. Dispatch contacts without an assigned company land as individual res.partner records with partner_type='contact'. Multiple service locations per Dispatch customer require one res.partner per location, linked to the parent company via the partner relationship.
Dispatch
Company (Business Account)
Odoo CRM
res.partner (company)
1:1Dispatch business accounts map to res.partner records with partner_type='company'. Odoo's parent_id field handles company hierarchies, and standard fields such as website, industry_id, and employee_count transfer directly. Dispatch company hierarchies (parent/child relationships) map using Odoo's Parent Partner field. Multi-location Dispatch companies split into one parent res.partner plus child partners per location, each inheriting the company's contact information and storing location-specific details.
Dispatch
Job / Work Order
Odoo CRM
crm.lead
1:1Dispatch jobs lack a native Odoo equivalent in base CRM. We map job records to crm.lead as opportunities — job name becomes lead name, job status maps to crm.lead stage_id values, and job description maps to crm.lead description. If Odoo Field Service is installed, jobs map to project.task instead.
Dispatch
Job Status / Stage
Odoo CRM
crm.lead.stage_id
1:1Dispatch job stages (New, Scheduled, In Progress, Completed, Cancelled) map to Odoo CRM stage records via value-by-value mapping. Each Dispatch stage requires a corresponding Odoo stage created in Settings > CRM > Stages before migration. Stage probabilities and fold (won/lost) settings re-applied in Odoo CRM pipeline configuration.
Dispatch
Technician / Dispatcher User
Odoo CRM
res.users
1:1Dispatch technicians and dispatchers map to Odoo res.users by email match. Dispatch user records carry scheduling and assignment data — Odoo user records carry security and workflow ownership. Unmatched Dispatch users flagged before migration; fallback owner assigned or new Odoo users created.
Dispatch
Service Location / Address
Odoo CRM
res.partner (address fields)
1:manyDispatch stores multiple service addresses per customer (street, city, state, zip, GPS coordinates). Odoo res.partner holds one address per partner record. Multiple Dispatch locations split into separate res.partner records linked to the parent company via partner_type='contact' and address type (partner_address_type field). GPS coordinates stored as custom float fields on each location partner.
Dispatch
Job Notes / Attachments
Odoo CRM
ir.attachment
1:1Dispatch job notes and uploaded files migrate as Odoo ir.attachment records linked to the corresponding crm.lead (job). File size limits from Odoo apply (default 25MB per file). Inline images in notes extracted and rehosted as attachment records with res_model='crm.lead' and res_id referencing the migrated job.
Dispatch
Custom Fields (Job Properties)
Odoo CRM
ir.model.fields (custom)
1:1Dispatch custom properties on jobs require Odoo custom fields created via Settings > Technical > Models before migration. Field type mapping: text → char or text, numbers → float or integer, dates → date or datetime, dropdowns → selection. Custom field creation in Odoo requires Enterprise edition or manual database access for Community. We deliver a custom-field setup plan before data lands.
Dispatch
Custom Fields (Contact Properties)
Odoo CRM
ir.model.fields (res.partner)
1:1Dispatch contact-level custom properties map to custom fields on res.partner. Like job custom fields, these require pre-migration setup in Odoo's Technical Settings. Selection-type custom fields in Dispatch map to Odoo selection fields with exact option values preserved. We provide the field-definition JSON so your Odoo admin or consultant creates them before migration.
Dispatch
Activity History (calls, emails, notes)
Odoo CRM
mail.message / mail.activity
1:1Dispatch call logs, email records, and notes map to Odoo mail.message records linked to the corresponding crm.lead or res.partner. Original timestamps preserved as mail.message.date. Dispatch activity owners map to Odoo res.users by email match. Odoo's messaging and activity tracking uses the 'mail' module — these migrate cleanly if Dispatch exposes activity history via API.
Dispatch
Workflows / Automation Rules
Odoo CRM
No equivalent (rebuild required)
1:1Dispatch automation rules (job-status triggers, scheduling logic, notification rules) have no Odoo equivalent in base CRM. We export your Dispatch workflow definitions as a structured JSON document for your Odoo consultant to rebuild using Odoo's automated actions and action server. This is not a data migration — it is a documentation deliverable to support your post-migration configuration.
| Dispatch | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact (Customer) | res.partner1:1 | Fully supported | |
| Company (Business Account) | res.partner (company)1:1 | Fully supported | |
| Job / Work Order | crm.lead1:1 | Fully supported | |
| Job Status / Stage | crm.lead.stage_id1:1 | Fully supported | |
| Technician / Dispatcher User | res.users1:1 | Fully supported | |
| Service Location / Address | res.partner (address fields)1:many | Fully supported | |
| Job Notes / Attachments | ir.attachment1:1 | Fully supported | |
| Custom Fields (Job Properties) | ir.model.fields (custom)1:1 | Fully supported | |
| Custom Fields (Contact Properties) | ir.model.fields (res.partner)1:1 | Fully supported | |
| Activity History (calls, emails, notes) | mail.message / mail.activity1:1 | Fully supported | |
| Workflows / Automation Rules | No equivalent (rebuild required)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.
Dispatch gotchas
API export endpoints gated by Dispatch360 tier
Work Order history split across open and closed states
Custom fields require discovery mapping before import
Attachment extraction requires separate file-store access
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
Run discovery against Dispatch API and schema export
FlitStack AI connects to your Dispatch account via API using scoped read access to enumerate all objects: contacts, companies, jobs, work orders, notes, and custom properties. We export the full schema including custom field names, types, and pick-list values. This output becomes the source of truth for the Odoo object-model mapping plan. Your Dispatch account remains fully operational during this step — we only read data.
Design Odoo schema and custom-field setup plan
Based on discovery, FlitStack delivers an Odoo schema plan: which res.partner and crm.lead fields receive data, which require custom fields, and how Dispatch job stages map to Odoo CRM stages. If you run Odoo Community, we include the custom-field DDL statements your consultant runs against the database before migration. Odoo Enterprise users create fields via the Technical Settings UI. We also identify whether Odoo Field Service is needed for service-dispatch use cases.
Resolve Dispatch users to Odoo res.users by email match
Technicians, dispatchers, and contact owners in Dispatch map to Odoo res.users. We attempt email-based matching — if a Dispatch user email matches an existing Odoo user email, we link records. Unmatched Dispatch users are flagged in a pre-migration report. Your team either invites them to Odoo before migration or assigns their records to a fallback owner. No migrated record lands in Odoo without a valid user_id.
Execute sample migration with field-level diff
A representative slice migrates first — typically 100–500 records spanning contacts, companies, jobs, and activities. We generate a field-level diff showing source values against Odoo field values so you can verify stage mapping, location splitting, custom field population, and owner resolution. You approve the sample output before the full run commits. If anything looks incorrect, we adjust the mapping plan and re-run the sample.
Run full migration with delta-pickup window
Full migration loads all Dispatch records into Odoo using Odoo's xmlrpc bulk-create interface. A delta-pickup window (typically 24–48 hours) captures any Dispatch records modified during cutover so Odoo reflects Dispatch's final state at go-live. FlitStack generates a post-migration audit log listing every record migrated, any that failed, and why. One-click rollback reverts all migrated records if reconciliation uncovers issues. Your Dispatch account remains readable throughout — your team keeps working until you decommission.
Platform deep dives
Dispatch
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 Dispatch 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
Dispatch: Not publicly documented.
Data volume sensitivity
Dispatch 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 to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Dispatch 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
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.