CRM migration

Migrate from Fieldproxy to Odoo CRM

Field-level mapping, validation, and rollback between Fieldproxy and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.

Fieldproxy logo

Fieldproxy

Source

Odoo CRM

Destination

Odoo CRM logo

Compatibility

92%

11 of 12

objects map 1:1 between Fieldproxy and Odoo CRM.

Complexity

BStandard

Timeline

48–72 hours

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Fieldproxy logo

Fieldproxy

What's pushing teams away

  • G2 reviewers report intermittent technical issues and errors during ticket management, with support response times occasionally delaying urgent resolutions.
  • Documentation coverage is thin — users and migration teams have limited self-service reference material when troubleshooting or scoping data exports.
  • Support responsiveness varies; some reviewers experienced delays when raising non-critical but blocking issues during operational hours.
  • Custom workflow complexity can outpace the platform's ability to surface them clearly, making it harder to audit what automations exist before migrating away.

Choosing

Odoo CRM logo

Odoo CRM

What's pulling them in

  • Teams choose Odoo CRM for its modular architecture — one base install with one-click app additions means they can adopt CRM alone and add accounting, inventory, or sales later as the business grows.
  • Small businesses pick Odoo because the Community edition is free and open-source, with no per-user or contact limits, allowing full evaluation before committing to a paid Enterprise tier.
  • The drag-and-drop Kanban pipeline and AI lead scoring are highlighted across G2 reviews as concrete features that make lead management faster and more visual than spreadsheet-based workflows.
  • Odoo's native integration with email, live chat, SMS, VoIP, and WhatsApp means inbound leads from multiple channels feed into a single pipeline without third-party middleware.
  • Companies in retail, supply chain, and construction value that Odoo's CRM module shares the same PostgreSQL database and UI as its ERP modules, eliminating data silos between sales and operations.

Object mapping

How Fieldproxy objects map to Odoo CRM

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

maps to

Odoo CRM

res.partner

1:1
Fully supported

Fieldproxy 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

maps to

Odoo CRM

crm.lead

1:1
Fully supported

Fieldproxy 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)

maps to

Odoo CRM

Custom fields on crm.lead + sale.order

1:1
Fully supported

Fieldproxy 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

maps to

Odoo CRM

res.users

1:1
Fully supported

Fieldproxy 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

maps to

Odoo CRM

res.partner (address fields) + custom fields

many:1
Fully supported

Fieldproxy 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

maps to

Odoo CRM

crm.stage

1:1
Fully supported

Fieldproxy 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

maps to

Odoo CRM

mail.message

1:1
Fully supported

Fieldproxy 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

maps to

Odoo CRM

ir.attachment

1:1
Fully supported

Fieldproxy 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

maps to

Odoo CRM

ir.model.fields (custom)

1:1
Fully supported

Any 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

maps to

Odoo CRM

ir.model.fields (custom) on res.partner

1:1
Fully supported

Custom 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

maps to

Odoo CRM

N/A

1:1
Fully supported

Fieldproxy 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

maps to

Odoo CRM

N/A

1:1
Fully supported

Fieldproxy 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.

Gotchas + challenges

What specifically takes care here

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 logo

Fieldproxy gotchas

High

Custom Workflows do not export as portable definitions

Medium

API rate limits and bulk endpoints not publicly documented

Medium

Spare Parts inventory requires quantity reconciliation

Odoo CRM logo

Odoo CRM gotchas

High

Odoo.sh version gating blocks assisted migrations from trial

High

Enterprise modules fail to install on Community after database restore

Medium

Custom module view inheritance breaks between Odoo major versions

Medium

Custom fields risk losing their application context on Community

Low

API access for Community is gated behind the Custom Plan

Pair-specific challenges

  • Odoo API access requires Custom plan — Community edition cannot receive data via API

    Odoo Community edition exposes only limited XML-RPC read access. Full API write operations — the mechanism FlitStack uses to create crm.lead, res.partner, and ir.attachment records — require the Odoo Custom (Enterprise) plan. If your target Odoo instance is on Community, you must upgrade before migration begins. This is a blocker, not a workaround: Odoo Community cannot receive bulk migrated data via external API calls, and CSV imports do not handle relational links (partner_id, user_id) correctly without manual post-processing.

  • Job-to-lead split requires manual pipeline design before data lands

    Odoo CRM pipeline stages live inside Sales Teams (crm.team), and each team has its own set of stage pick-list values. Fieldproxy has a flat job-status list with no team concept. We must pre-create at least one Odoo Sales Team and a matching set of crm.stage records that mirror Fieldproxy statuses (New, Scheduled, In Progress, On Hold, Completed, Cancelled) before jobs migrate. If you have multiple Fieldproxy job categories, each category may need its own Odoo pipeline and Sales Team. This schema setup is a prerequisite — data cannot land correctly without it.

  • Work-order line items have no native Odoo CRM structure — partial data or post-migration rebuild required

    Fieldproxy jobs carry line items: parts used, labor hours, materials consumed. Odoo crm.lead has no line-item child record. We store a parts-and-labor summary in custom fields on the crm.lead for historical reference, but Odoo Sale Orders — the proper place for line items — must be created separately. We can generate draft Odoo Sale Orders from the migrated job data using Odoo's import tool, but this requires post-migration validation and cannot happen atomically with the lead migration.

  • Technician GPS and geofence data has no Odoo equivalent — preserved only as coordinate metadata

    Fieldproxy tracks technician location via GPS and stores geofence boundary data for service sites. Odoo CRM has no geolocation, route-tracking, or geofence model. We preserve the last known GPS coordinates from a technician's most recent job visit as custom fields on the res.partner record (latitude/longitude). Live tracking data, historical route information, and geofence definitions cannot be migrated because Odoo has no native place to store or display this type of location data within the CRM module.

  • Odoo custom field naming conflict with studio-generated fields

    Odoo Studio (available on Enterprise plans) prefixes all user-created fields with x_studio_ when writing to the database. Fields created via custom Python modules may use x_ or the module name prefix instead. FlitStack reads your Odoo field metadata via ir.model.fields before migration and uses the exact field name from the schema — if you rename an x_studio field in Odoo Studio, its database column name stays the same. Name conflicts (two custom fields with identical technical names) cause migration failures and are caught in pre-flight validation.

Migration approach

Six steps for a successful Fieldproxy to Odoo CRM data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Context on both ends of the pair

Fieldproxy logo

Fieldproxy

Source

Strengths

  • 24-hour deployment with dedicated Solution Consultant — workspace is live and wired to QuickBooks, Stripe, Calendar, and WhatsApp by day one.
  • Unlimited-users pricing model — no per-seat cost escalation as teams grow.
  • YC-backed with 400+ customers, 50K+ technicians, and 99.9% uptime SLA.
  • AI-powered scheduling, task routing, and spare-parts replenishment are built into the platform rather than add-ons.
  • Mobile apps for iOS and Android with offline-first sync for field technicians in low-connectivity areas.

Weaknesses

  • API documentation is not publicly indexed — rate limits, bulk endpoints, and schema details are not available for pre-migration assessment.
  • Custom workflow automations are not exportable and must be manually rebuilt on the destination platform.
  • Documentation quality is a known complaint — limited self-service reference material for technical users and migration teams.
Odoo CRM logo

Odoo CRM

Destination

Strengths

  • Modular open-source architecture lets teams start with CRM and add ERP apps as needs grow, all sharing one PostgreSQL database.
  • Free Community edition with no contact limits and full source code access means zero licensing cost for evaluation and small deployments.
  • Drag-and-drop Kanban pipeline with AI lead scoring gives a visual, prioritized view of the sales funnel without requiring custom configuration.
  • Native integrations with email, live chat, SMS, VoIP, WhatsApp, and social media feed all inbound leads into a single unified inbox.
  • Active Odoo Community Association (OCA) maintains dozens of community-maintained modules on GitHub for extended functionality.

Weaknesses

  • Gmail and email integration reliability is a recurring complaint — threads drop and conversations scatter across inboxes, disrupting sales team workflows.
  • Enterprise edition pricing stacks quickly: multiple apps at per-user rates ($25–$50/user/month) plus Odoo.sh hosting costs more than many SMBs anticipate.
  • Setup and configuration complexity increases significantly once custom fields, automation rules, and multiple installed modules are in play.
  • Odoo.sh trial databases run on a version (e.g., 18.3) that is not directly migratable to Odoo.sh, blocking the assisted migration path Odoo advertises.
  • Version upgrades between major Odoo releases (e.g., 17→18) frequently break custom module view definitions and XPath expressions, requiring manual remediation.

Complexity grading

How hard is this migration?

Standard CRM migration. All 8 core objects map 1:1 between Fieldproxy and Odoo CRM.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Fieldproxy and Odoo CRM.

  • Object compatibility

    A

    All 8 core objects map 1:1 between Fieldproxy and Odoo CRM.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Fieldproxy: Not publicly documented.

  • Data volume sensitivity

    B

    Fieldproxy doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Fieldproxy to Odoo CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Fieldproxy to Odoo CRM data migrations

Answers to the questions buyers ask most during Fieldproxy to Odoo CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most Fieldproxy-to-Odoo migrations complete in 48–72 hours of clock time for under 25,000 records. The longest step is setting up Odoo pipeline stages and custom fields to match Fieldproxy job types before data lands. Heavier setups with 100,000+ records, multiple job categories, or extensive custom properties extend to 7–14 days. The sample migration with field-level diff adds 4–8 hours but prevents full-run surprises that would cost more time to fix post-migration.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Fieldproxy.
Land in Odoo CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day