CRM migration
Field-level mapping, validation, and rollback between Fieldmagic and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Fieldmagic
Source
Odoo CRM
Destination
Compatibility
8 of 11
objects map 1:1 between Fieldmagic and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Fieldmagic is a field-service-first platform with built-in CRM, job management, scheduling, and mobile technician capabilities that sits on top of a CRM infrastructure. Odoo CRM, by contrast, is a general-purpose CRM with a modular ERP ecosystem that can accommodate field service data but requires deliberate schema design to do so. Migrating from Fieldmagic to Odoo CRM is less a CRM-for-CRM switch and more a platform migration that restructures how your field-service data maps into Odoo's opportunity-based pipeline. FlitStack AI extracts Fieldmagic data using a custom extraction process — Fieldmagic provides CSV import guidance but no bulk API export — and maps customers to res.partner, sites to partner address records, assets to product templates or inventory lots, and jobs to a hybrid of crm.lead custom fields plus project.task records. Job schedules, GPS coordinates, technician assignments, and checklist data that have no Odoo CRM native equivalent are preserved as custom fields on the relevant Odoo objects. Automation workflows, Xero and QuickBooks integrations, and mobile app configuration do not migrate — they require Odoo-side rebuilds. The migration mechanism is a custom ETL process that reads Fieldmagic's internal record structure, resolves owner relationships by email match against Odoo system users, and loads data in the correct order: companies first (since contacts require partner_id), then contacts, then sites and assets, then jobs and quotes. A delta-pickup window captures any in-flight records created or modified during the cutover window so Odoo reflects Fieldmagic's final state at go-live.
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 Fieldmagic 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.
Fieldmagic
Customer
Odoo CRM
res.partner
1:1Fieldmagic customers map directly to Odoo res.partner records with type 'company'. The company name, industry classification, and billing address load as standard Odoo partner fields. A customer_id reference field links back to the original Fieldmagic record for traceability, audit purposes, and delta-run reconciliation against the source system.
Fieldmagic
Contact
Odoo CRM
res.partner
1:1Fieldmagic contacts map to Odoo res.partner records with type 'contact', linked to their parent Customer via partner_id foreign key. Email, phone, job title, and primary site assignment load as standard fields. Multiple contacts per customer are fully supported via Odoo's contact hierarchy, and each contact retains its original Fieldmagic contact identifier for reconciliation.
Fieldmagic
Site
Odoo CRM
res.partner (address)
1:1Fieldmagic sites are physical service locations tied to a customer. They migrate as contact_address records on the customer partner, with the address fields and a custom x_site_name field to preserve the site label. GPS latitude and longitude load as custom float fields on the address record.
Fieldmagic
Asset Type
Odoo CRM
product.template
1:1Fieldmagic asset types (equipment categories like HVAC, Plumbing, Electrical) map to Odoo product templates with type 'service'. The category description and default billing rate migrate as product list_price and description fields. Serviceable asset types get a service_policy field set accordingly.
Fieldmagic
Asset
Odoo CRM
stock.lot / product.product
many:1Fieldmagic assets are equipment items tracked at specific sites. They merge into Odoo as stock.lot records (for serial-number-tracked assets) or product.product records (for non-tracked equipment). Each asset links to the Site partner record and the Asset Type product template via lot_id and product_id respectively.
Fieldmagic
Job
Odoo CRM
crm.lead + project.task
many:1Fieldmagic jobs carry the most migration complexity — they span scheduling, dispatch, checklist completion, technician assignment, billing status, and site. We map job headers and customer data to crm.lead custom fields, while job line items and checklist items map to project.task records. Job status (scheduled, in-progress, completed, invoiced) becomes a custom pick-list field.
Fieldmagic
Quote
Odoo CRM
sale.order
1:1Fieldmagic quotes map directly to Odoo sale.order records. Customer and contact references resolve to res.partner ids via the partner_id field. Quote line items migrate as sale.order.line records containing product_id, product_uom_qty, price_unit, and tax_ids. Quote status values (draft, sent, accepted, lost) map to Odoo order_state workflow states, with the original Fieldmagic quote ID preserved as a custom field for audit and reconciliation.
Fieldmagic
Task
Odoo CRM
project.task
1:1Fieldmagic standalone tasks map to Odoo project.task records. They link to the parent job's project_id if the job was migrated with a project, or exist independently if tasks were not tied to a job. Assigned technician resolves by email match to Odoo system users.
Fieldmagic
Checklist
Odoo CRM
project.task (custom checklist field)
1:manyFieldmagic checklists are per-job inspection or compliance items. They split into multiple project.task records or a custom checklist_lines one2many field on the job's task record. Each checklist item's completed status and notes migrate as a char field on the corresponding line.
Fieldmagic
Contract / Quote Template
Odoo CRM
sale.order.template
1:1Fieldmagic contract pricing and quote templates have no direct Odoo equivalent. We preserve template names, line item structures, and pricing rules as a custom sale.order.template record plus custom fields on sale.order.line that capture the original Fieldmagic contract pricing logic for reference during rebuild.
Fieldmagic
Attachment / File
Odoo CRM
ir.attachment
1:1Fieldmagic file attachments (photos, signed forms, compliance documents) on jobs, sites, and assets migrate as Odoo ir.attachment records. Each attachment links to its parent res.partner, crm.lead, or project.task record. Files are downloaded from Fieldmagic's storage and re-uploaded to Odoo's filestore.
| Fieldmagic | Odoo CRM | Compatibility | |
|---|---|---|---|
| Customer | res.partner1:1 | Fully supported | |
| Contact | res.partner1:1 | Fully supported | |
| Site | res.partner (address)1:1 | Fully supported | |
| Asset Type | product.template1:1 | Fully supported | |
| Asset | stock.lot / product.productmany:1 | Fully supported | |
| Job | crm.lead + project.taskmany:1 | Fully supported | |
| Quote | sale.order1:1 | Fully supported | |
| Task | project.task1:1 | Fully supported | |
| Checklist | project.task (custom checklist field)1:many | Fully supported | |
| Contract / Quote Template | sale.order.template1:1 | Fully supported | |
| Attachment / File | ir.attachment1: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.
Fieldmagic gotchas
Site-Asset hierarchy is a mandatory import dependency
Checklist auto-attachment and completion data require separate handling
Salesforce custom objects and custom fields are not covered by standard import
Contract pricing links to invoicing require value-level mapping
Bulk API extraction is not publicly 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
Custom extraction from Fieldmagic API
FlitStack AI builds a custom scripted extraction that paginates through Fieldmagic's REST API per object type — customers, contacts, sites, assets, jobs, quotes, and checklist items. Because Fieldmagic has no bulk export endpoint, the extraction iterates API records per object, assembles them into a canonical dataset, and produces a manifest of record counts and any API errors encountered. This extraction runs against a scoped read-only API credential provided by your Fieldmagic account — no write operations occur against Fieldmagic during extraction.
Create Odoo custom fields and project structure
Before data loads, FlitStack AI creates all required custom fields in Odoo: x_fieldmagic_id on res.partner and crm.lead for traceability; x_scheduled_date, x_job_status, x_technician_id on crm.lead for job scheduling data; x_latitude and x_longitude on res.partner for GPS coordinates; x_site_name on res.partner for site labels; x_contract_pricing on sale.order.line for contract pricing flags. If your team uses Odoo's project.module for job execution, we also configure the project, stage, and task structure to match your Fieldmagic job status workflow. Custom fields are created via Odoo's Settings > Technical > Fields interface (developer mode) and verified before data mapping begins.
Resolve owner and user relationships by email match
Fieldmagic technician and customer owner assignments are resolved against Odoo system users by email address match. Contacts and jobs without a matched user are flagged with an x_unresolved_owner custom field set to the original technician or owner name. Your Odoo administrator assigns a fallback user or invites the unmatched users to Odoo before the full migration run commits. No job or contact record lands in Odoo without an assigned user_id — the fallback assignment prevents orphan records in the Odoo pipeline view.
Migrate in dependency order with sample validation
Data loads in the correct Odoo foreign-key sequence: res.partner records (companies) first, then contact-level partner records with partner_id links, then address records for sites, then stock.lot or product.product records for assets, then sale.order records for quotes, and finally crm.lead records for jobs with custom field values and cross-references to the partner and asset records. A representative sample migration (typically 100–500 records spanning all object types) runs first. FlitStack AI generates a field-level diff showing source vs. destination values for every mapped field so you can verify GPS data, job status, and technician assignment mapping before the full run commits.
Delta pickup window and go-live cutover
After the full migration run completes, a delta-pickup window captures any Fieldmagic records created or modified during the cutover period — typically 24 to 48 hours. The delta run re-extracts Fieldmagic records by comparing x_fieldmagic_id timestamps against the initial extraction cutoff and inserts or updates the corresponding Odoo records. An audit log records every operation (create, update, skip) with the source system ID, timestamp, and user. If reconciliation reveals discrepancies, FlitStack AI provides a one-click rollback that reverts Odoo to its pre-migration state while your team continues working in Fieldmagic. Odoo goes live once delta records are verified and the audit log shows clean reconciliation.
Platform deep dives
Fieldmagic
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Fieldmagic and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Fieldmagic and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Fieldmagic 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
Fieldmagic: Not publicly documented.
Data volume sensitivity
Fieldmagic 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 Fieldmagic to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Fieldmagic 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 Fieldmagic
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.