CRM migration
Field-level mapping, validation, and rollback between Field Harmony and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Field Harmony
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Field Harmony and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Field Harmony targets field-service teams with scheduling, dispatch, and technician-management tools built around a proprietary data model. Teams migrate to Odoo CRM when they need the broader ERP footprint — integrated sales, accounting, inventory, and CRM in one platform — while retaining their existing customer and job data. The core migration challenge is that Field Harmony stores work orders and service history as primary objects, while Odoo CRM models these as crm.lead (for leads and opportunities) with res.partner for contacts and companies. FlitStack AI extracts Field Harmony contacts, companies, job records, and custom fields via API, then maps them into Odoo's crm.lead, res.partner, and product.product models. Service-status and scheduling data that has no direct Odoo equivalent migrate as custom fields on crm.lead. We preserve original create dates, owner assignments, and timestamp history. Workflows, automations, and scheduling logic do not migrate — those must be rebuilt using Odoo Studio or server actions. A sample migration with field-level diff runs first, followed by a delta-pickup window that captures any records modified 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 Field Harmony 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.
Field Harmony
Contact
Odoo CRM
res.partner
1:1Field Harmony contacts map directly to Odoo res.partner records. Set is_company=False for individual contacts to distinguish them from companies. Company association preserved via parent_id linking to the res.partner record where is_company=True. Email, phone, street address, city, state, zip, and country fields migrate as direct field mappings with value mapping for state and country to Odoo state_id and country_id records.
Field Harmony
Company
Odoo CRM
res.partner
1:1Field Harmony companies map to res.partner where is_company=True to designate them as organization records. Parent-child company hierarchies in Field Harmony translate directly to parent_id relationships on the Odoo res.partner model. Multi-location companies may require multiple res.partner address records with each location linked via child_ids to the primary company record.
Field Harmony
Work Order
Odoo CRM
crm.lead
1:1Field Harmony work orders are the primary job entity containing all service information. These map to Odoo crm.lead as opportunities with type='opportunity'. Service type, job status, scheduled date, and assigned technician migrate as custom fields since Odoo crm.lead has no native work-order model. Original work-order IDs preserved as Source_System_ID__c for audit traceability and delta-run matching.
Field Harmony
Job Line Item / Parts Used
Odoo CRM
sale.order.line
1:1Parts and line items from Field Harmony work orders require a two-step approach: migrate the crm.lead first, then create linked sale.order records if Odoo Sales app is active. If only CRM app is active, parts data migrates as custom fields on crm.lead. The Odoo Sales module provides native line-item tracking for parts, labor, and pricing.
Field Harmony
Technician / Staff
Odoo CRM
res.users
1:1Field Harmony technicians map to Odoo res.users. Email-based matching links technicians to existing Odoo user accounts. Unmatched technicians flagged before migration — either create Odoo users first or assign to a fallback user during the migration run. Technician schedule, territory, and service area data preserved as custom char fields on res.users.
Field Harmony
Customer Address / Location
Odoo CRM
res.partner
1:1Field Harmony stores service locations separately from customer contacts. These map to res.partner records with type='delivery' or type='other' linked via parent_id to the primary customer res.partner record. GPS coordinates and location-specific data preserved as custom latitude and longitude fields on the address res.partner.
Field Harmony
Scheduling / Dispatch Data
Odoo CRM
crm.lead custom fields
1:1Field Harmony scheduling data — including appointment slots, route assignments, technician dispatch status, and GPS route data — has no Odoo CRM equivalent. Migrate as custom fields on crm.lead: Scheduled_Date__c, Assigned_Technician__c, Dispatch_Status__c, and Route_Data__c. Scheduling logic must be rebuilt using Odoo Studio, server actions, or third-party field-service applications.
Field Harmony
Attachments / Photos
Odoo CRM
ir.attachment
1:1Field Harmony attachments including job photos, signature captures, parts images, and document uploads migrate to Odoo ir.attachment records linked to the corresponding crm.lead or res.partner via res_model and res_id fields. File size limits apply: Odoo default maximum is 25MB per file, with larger files requiring chunked upload configuration.
Field Harmony
Custom Fields
Odoo CRM
ir.model.fields
1:1Field Harmony custom fields added per object via settings UI require Odoo custom field creation via Settings > Technical > Custom Fields or via developer mode. Custom fields on contacts, companies, work orders, and technicians each need separate Odoo field definitions with matching data types before migration data can populate them.
Field Harmony
Service History / Activity Log
Odoo CRM
mail.message / crm.lead
1:1Field Harmony service history including completed jobs, status changes, technician notes, and customer communications migrates to Odoo crm.lead as internal notes using mail.message records with message_type='notification'. Original timestamps and technician attribution preserved in the message record. Note that Odoo activity model (crm.lead activities) is separate from historical log entries.
Field Harmony
Reports / Dashboards
Odoo CRM
No equivalent
1:1Field Harmony custom reports and dashboards do not migrate to Odoo as they are platform-specific implementations. Odoo CRM native reports, custom reports via Odoo Studio, and PostgreSQL-based analytics provide replacement functionality. The underlying migrated data is fully available for reporting in Odoo once migration completes and dashboards can be rebuilt in Odoo Studio.
Field Harmony
Workflows / Automations
Odoo CRM
No equivalent
1:1Field Harmony drag-and-drop workflows and automation rules do not migrate as they use proprietary workflow definitions. These must be rebuilt in Odoo using Studio for simple automations, server actions for complex logic, or the Odoo Workflow Editor application available in the Odoo Apps store. FlitStack can export workflow definitions as a reference document to guide the Odoo rebuild process.
| Field Harmony | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner1:1 | Fully supported | |
| Work Order | crm.lead1:1 | Fully supported | |
| Job Line Item / Parts Used | sale.order.line1:1 | Fully supported | |
| Technician / Staff | res.users1:1 | Fully supported | |
| Customer Address / Location | res.partner1:1 | Fully supported | |
| Scheduling / Dispatch Data | crm.lead custom fields1:1 | Fully supported | |
| Attachments / Photos | ir.attachment1:1 | Fully supported | |
| Custom Fields | ir.model.fields1:1 | Fully supported | |
| Service History / Activity Log | mail.message / crm.lead1:1 | Fully supported | |
| Reports / Dashboards | No equivalent1:1 | Fully supported | |
| Workflows / Automations | No equivalent1: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.
Field Harmony gotchas
No publicly documented API for direct data extraction
Custom field schema invisible without live access
Attachment volume can balloon migration windows
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 Field Harmony schema and custom fields
FlitStack reads Field Harmony's object definitions via API — identifying all standard and custom fields on contacts, companies, work orders, and technicians. We generate a schema inventory listing every migratable field, its data type, pick-list values, and whether it has a clear Odoo equivalent. Custom fields are flagged for Odoo field-creation checklist. This audit runs before any migration planning and produces the field registry that drives the rest of the process.
Create Odoo custom fields and stage definitions
Based on the schema audit, we create Odoo custom fields on crm.lead and res.partner for every Field Harmony field with no native Odoo equivalent. Stage definitions in Odoo CRM are created to match Field Harmony work-order statuses. If the Odoo Sales app is active, we configure sale.order.line for parts and labor line items. This step requires Odoo admin access — we provide a detailed setup checklist so your admin can pre-create the schema before data validation runs.
Resolve technicians to Odoo users by email
Field Harmony technicians are matched against Odoo res.users by email address. Unmatched technicians are flagged before migration — your team creates Odoo user accounts for them or assigns their records to a fallback user during migration. No work order lands in Odoo without a valid user_id assignment. This step also maps Field Harmony territory data to custom fields on res.users.
Migrate companies before contacts; contacts before work orders
Odoo requires parent-child sequencing: res.partner records with is_company=True must exist before contacts link via parent_id. Work orders reference customers via partner_id, so contacts must exist first. FlitStack sequences the migration so companies migrate first, then contacts with parent_id linking, then work orders with partner_id and user_id lookups resolving correctly. Any circular reference or missing parent is flagged before the run commits.
Run sample migration with field-level diff
A representative sample migration runs first — typically 100–500 records spanning contacts, companies, work orders, technicians, and attachments. We generate a detailed field-level diff comparing Field Harmony source values against Odoo destination values so you can verify mapping correctness, stage assignments, owner resolution, custom field population, and attachment linking. You review the diff output and sign off before the full migration run proceeds, ensuring all transformations meet your expectations.
Full migration with delta-pickup and audit log
The full migration runs against Odoo via XML-RPC API. A delta-pickup window (24–48 hours) captures any records created or modified in Field Harmony during cutover. FlitStack logs every operation to an audit trail, and one-click rollback is available if reconciliation fails. After final validation, you receive a migration summary report showing record counts, mapping verification, and any records that require manual review.
Platform deep dives
Field Harmony
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Field Harmony and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Field Harmony and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Field Harmony 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
Field Harmony: Not publicly documented..
Data volume sensitivity
Field Harmony 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 Field Harmony to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Field Harmony 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 Field Harmony
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.