CRM migration
Field-level mapping, validation, and rollback between Fieldproxy and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Fieldproxy
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Fieldproxy and Odoo CRM.
Complexity
BStandard
Timeline
48–72 hours
Overview
Fieldproxy stores field-service data in a job-centric model: customers (contacts + companies), jobs (work orders with line items), technicians (users), and activity logs tied to job completion. Odoo CRM does not have a native work-order object — jobs must translate to crm.lead records (either as Leads or Opportunities depending on stage), and Odoo res.partner holds both company and individual contact records in one model. The migration carries every Fieldproxy customer, job, and attachment into Odoo, creating res.partner records for contacts, crm.lead records for open and closed jobs, and mapping technician email addresses to existing Odoo user accounts. Custom fields on Fieldproxy jobs (priority, job type, site address, parts used) become custom fields on Odoo's crm.lead model. Odoo workflows, automation rules, and approval sequences do not transfer — these must be rebuilt in Odoo using its Actions and Server Actions framework. FlitStack runs a test migration against a staging Odoo database, generates a field-level diff, then executes the full migration via Odoo's xmlrpc/JSON-RPC API with a 24–48 hour delta pickup window at 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 Fieldproxy 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.
Fieldproxy
Customer
Odoo CRM
res.partner
1:1Fieldproxy Customer maps directly to Odoo res.partner. Individual contacts and company records both use the same model — set is_company=True for organizations and False for persons. Email, phone, address, and website fields transfer directly. Multi-site customers require one res.partner per site address or a parent-child partner hierarchy.
Fieldproxy
Job
Odoo CRM
crm.lead
1:1Fieldproxy Job is the primary work-order record and maps to Odoo crm.lead. Open jobs with a status of 'scheduled' or 'in_progress' become Odoo Opportunities. Completed or closed jobs can become historical Leads or be merged into the associated res.partner record as a note. Job name maps to crm.lead name; job description maps to crm.lead description.
Fieldproxy
Job (line items / parts)
Odoo CRM
Custom fields on crm.lead + sale.order
1:1Fieldproxy job line items (parts used, labor hours, materials) have no direct Odoo CRM equivalent. Odoo separates estimating (crm.lead) from fulfillment (sale.order). We store line-item summaries as custom text fields on crm.lead for reference and recommend creating Odoo Sale Orders from the migrated jobs post-migration for full order management.
Fieldproxy
Technician
Odoo CRM
res.users
1:1Fieldproxy Technician records represent field employees who log into the mobile app. They map to Odoo res.users by email address — technicians with an Odoo user account get their jobs attributed to their user_id in crm.lead. Technicians without Odoo user accounts become res.partner records flagged with a custom 'Technician_in_Source__c' field for reference.
Fieldproxy
Site / Location
Odoo CRM
res.partner (address fields) + custom fields
many:1Fieldproxy stores service-site addresses separate from customer records. We merge site address into the associated res.partner address fields. For multi-site customers, we create a separate res.partner record per site with the site address as the partner address and the parent_id set to the primary customer partner.
Fieldproxy
Job Status / Stage
Odoo CRM
crm.stage
1:1Fieldproxy job statuses (New, Scheduled, In Progress, On Hold, Completed, Cancelled) map to Odoo CRM pipeline stages. We create a dedicated Odoo pipeline and stage values that mirror Fieldproxy statuses. Stage-to-stage mapping is configured value-by-value in the migration plan before data lands.
Fieldproxy
Job Activity Log
Odoo CRM
mail.message
1:1Fieldproxy records job activities — status change logs, technician notes, customer签核 — as activity entries. These migrate as Odoo mail.message records linked to the crm.lead via res_id and model fields. Original timestamps and technician author are preserved. Rich-text formatting in notes is converted to Odoo's HTML note format.
Fieldproxy
Attachment / Photo
Odoo CRM
ir.attachment
1:1Fieldproxy attachments (job photos, signed forms, parts images) re-upload to Odoo as ir.attachment records linked to the corresponding crm.lead. Files are downloaded from Fieldproxy storage and uploaded to Odoo's filestore. Odoo Community edition has a 25MB per-file limit — large files are flagged for splitting before migration.
Fieldproxy
Custom Fields on Job
Odoo CRM
ir.model.fields (custom)
1:1Any custom fields defined on Fieldproxy Job objects (e.g., job_priority, job_type, parts_catalog_id) are read from the Fieldproxy API and created as custom fields on Odoo's crm.lead model using the ir.model.fields API. Field types are mapped: text to char, number to float, picklist to selection. The migration plan lists each custom field and its Odoo equivalent before the run.
Fieldproxy
Custom Fields on Customer
Odoo CRM
ir.model.fields (custom) on res.partner
1:1Custom fields on Fieldproxy Customer objects — such as tax_id, credit_limit, or service_tier — migrate as custom fields on Odoo res.partner. We apply the same field-type mapping rules as for job custom fields: text to char, numbers to float, picklists to selection fields. Odoo naming conventions require snake_case — Fieldproxy camelCase names are automatically converted to follow this standard.
Fieldproxy
Workflow / Automation Rules
Odoo CRM
N/A
1:1Fieldproxy workflow rules (job assignment logic, notification triggers, status-based routing) have no Odoo equivalent and cannot be migrated. We export the Fieldproxy workflow definitions as a structured JSON document so your Odoo administrator can rebuild them using Odoo's base.automation, server actions, and activity scheduled actions.
Fieldproxy
GPS / Location Data
Odoo CRM
N/A
1:1Fieldproxy stores technician GPS tracks and geofence data tied to job visits. Odoo CRM has no geolocation or route-tracking model. We preserve GPS coordinates from the most recent job visit as custom coordinate fields on the res.partner record, but live tracking data is not migrated as it has no operational equivalent in Odoo.
| Fieldproxy | Odoo CRM | Compatibility | |
|---|---|---|---|
| Customer | res.partner1:1 | Fully supported | |
| Job | crm.lead1:1 | Fully supported | |
| Job (line items / parts) | Custom fields on crm.lead + sale.order1:1 | Fully supported | |
| Technician | res.users1:1 | Fully supported | |
| Site / Location | res.partner (address fields) + custom fieldsmany:1 | Fully supported | |
| Job Status / Stage | crm.stage1:1 | Fully supported | |
| Job Activity Log | mail.message1:1 | Fully supported | |
| Attachment / Photo | ir.attachment1:1 | Fully supported | |
| Custom Fields on Job | ir.model.fields (custom)1:1 | Fully supported | |
| Custom Fields on Customer | ir.model.fields (custom) on res.partner1:1 | Fully supported | |
| Workflow / Automation Rules | N/A1:1 | Fully supported | |
| GPS / Location Data | N/A1: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.
Fieldproxy gotchas
Custom Workflows do not export as portable definitions
API rate limits and bulk endpoints not publicly documented
Spare Parts inventory requires quantity reconciliation
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 Fieldproxy data model and export object inventory
We connect to Fieldproxy via API and enumerate all objects: customers, jobs, technicians, job activities, and attachments. We generate a data inventory report listing record counts, custom field definitions, and relationship cardinalities (e.g., how many jobs per customer, how many attachments per job). This report is the basis for the migration scope document and identifies any objects that exceed Odoo's field-length or attachment-size limits before migration begins.
Set up Odoo pipeline, stages, and custom fields
Before any data moves, we create the Odoo Sales Team, pipeline stages, and custom fields required for the migration. This includes creating x_studio_ fields on crm.lead and res.partner for every Fieldproxy custom property. If your Odoo instance is Community edition, we flag the API-access prerequisite at this stage. The stage setup is reviewed against Fieldproxy's status list to confirm every job status has a home in Odoo before validation runs.
Resolve technicians to Odoo users and validate partner IDs
We match Fieldproxy technician email addresses against Odoo res.users.login to assign crm.lead.user_id during migration. Technicians without Odoo user accounts are flagged and can either be invited to Odoo before migration or mapped as res.partner records with a source flag. We also validate that every Fieldproxy customer has a resolvable res.partner — orphaned customer references without a partner are created as minimal res.partner records to satisfy Odoo's foreign-key requirements.
Run a sample migration with field-level diff
A representative slice of 100–300 records migrates first: customers, jobs across different statuses, a few technicians, and attachment samples. We produce a field-level diff comparing each Fieldproxy field value to the corresponding Odoo crm.lead or res.partner value. You review the diff to confirm job status mapping, custom field values, and technician attribution before the full run commits. This is the last chance to adjust mapping rules at no additional cost.
Execute full migration and apply delta-pickup at cutover
The full migration runs against your Odoo instance via the XML-RPC/JSON-RPC API. All Fieldproxy records create in the correct sequence: res.partner first (for customers and unmatched technicians), then crm.lead with resolved partner_id and user_id, then mail.message activity logs and ir.attachment records. A 24–48 hour delta-pickup window opens at the scheduled cutover time to capture any Fieldproxy records modified during the migration run. The audit log records every operation; one-click rollback reverts the Odoo database to its pre-migration state if reconciliation fails.
Platform deep dives
Fieldproxy
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Fieldproxy and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Fieldproxy and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Fieldproxy 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
Fieldproxy: Not publicly documented.
Data volume sensitivity
Fieldproxy 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 Fieldproxy to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Fieldproxy 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 Fieldproxy
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.