CRM migration
Field-level mapping, validation, and rollback between Method:Field Services and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Method:Field Services
Source
Odoo CRM
Destination
Compatibility
12 of 12
objects map 1:1 between Method:Field Services and Odoo CRM.
Complexity
BStandard
Timeline
72–96 hours
Overview
Method:Field Services organizes field operations around Work Orders, Field Crew dispatch, and QuickBooks synchronization—its CRM layer stores contacts, companies, estimates, and a sales pipeline that mirrors job status. Odoo CRM models the same concepts as crm.lead for leads and opportunities, res.partner for contacts and companies, and sale.order for quotations, with pipeline stages managed through crm.stage records tied to sales teams. The migration carries everything Method stores natively—contacts with addresses, companies with billing details, work order history, estimates, and pipeline stage assignments—into Odoo's relational model. The harder problems are translating Method's work-order-to-job-status workflow into Odoo's opportunity stages, mapping dispatcher and technician assignments to Odoo user records by email match, and preserving estimate-to-invoice lineage where it exists. Automations and custom screens in Method have no Odoo equivalent and must be rebuilt using Odoo Studio. FlitStack uses Odoo's XML-RPC API to write records in dependency order—partners first, then leads/opportunities, then activities—honoring Odoo's foreign-key constraints and ir.sequence numbering for quotations.
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 Method:Field Services 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.
Method:Field Services
Contact
Odoo CRM
res.partner
1:1Method contacts map directly to Odoo res.partner records with company_type='person'. Email, phone, address, and custom fields transfer as partner fields. Company-linked contacts use res.partner's parent_id for the company relationship. This structure allows contacts to be linked to parent company records, enabling hierarchical views of customer data and proper billing/shipping assignments within Odoo's standard partner model.
Method:Field Services
Company
Odoo CRM
res.partner
1:1Method companies map to res.partner with company_type='company'. Billing address, shipping address, and industry classification transfer to the partner record. Multi-location companies may require multiple partner records with parent_id linking. This handles scenarios where the same company operates across different sites, with each location stored as a child partner record while maintaining the parent company relationship for reporting and consolidated views.
Method:Field Services
Work Order
Odoo CRM
crm.lead
1:1Method work orders map to Odoo crm.lead as opportunities. Job status (Scheduled, In Progress, Completed) maps to pipeline stage. Technician assignment, job location, and time-tracking entries transfer as custom fields on the crm.lead record. This preserves all operational details while fitting into Odoo's standard opportunity framework, allowing teams to leverage built-in CRM reporting and pipeline management tools.
Method:Field Services
Estimate
Odoo CRM
sale.order
1:1Method estimates map to Odoo sale.order in quotation state. Line items, pricing, and customer reference transfer. If the Sales app is not installed, estimates land as crm.lead with a custom estimate_reference field for traceability. This ensures estimates aren't lost in migration and can be converted to sales orders later when the Sales module is activated, maintaining the complete audit trail.
Method:Field Services
Sales Pipeline Stage
Odoo CRM
crm.stage
1:1Method pipeline stages map value-by-value to Odoo crm.stage records within each sales team. Stage order, probability, and category (e.g., New, Won, Lost) are preserved. Stages without a direct Odoo equivalent become custom stages created before migration. This approach maintains your existing sales process logic in Odoo while allowing flexibility for unique stage definitions that don't have native counterparts in the standard CRM.
Method:Field Services
Dispatcher
Odoo CRM
res.users
1:1Method dispatchers resolve to Odoo res.users by email match. Unmatched dispatchers are flagged before migration; you either create Odoo users first or assign their records to a fallback user. Dispatcher permissions map to Odoo group membership (Sales / Field / Portal).
Method:Field Services
Field Crew Technician
Odoo CRM
res.users / res.partner (portal)
1:1Technicians map to Odoo res.users if they need system login, or to res.partner with portal access if they only interact via Odoo's customer portal. Work order assignments transfer as custom fields on crm.lead referencing the technician's partner record. This dual approach accommodates different access levels and ensures technicians can view their assignments through the portal without requiring full system credentials.
Method:Field Services
Time Tracking Entry
Odoo CRM
account.analytic.line
1:1Method time entries transfer to Odoo account.analytic.line if the Timesheet app is installed. Without it, time data lands as custom datetime fields on the related crm.lead. Original duration, date, and technician user are preserved. If the Timesheet module is activated post-migration, these custom fields can be mapped to proper analytic line records for enhanced reporting and billing integration.
Method:Field Services
Attachment / E-signature
Odoo CRM
ir.attachment
1:1File attachments and e-signature images on work orders re-upload to Odoo ir.attachment records linked to the crm.lead. Original filenames and MIME types are preserved. Odoo's 25MB per-file limit is enforced; large files are flagged before migration. This ensures all supporting documentation travels with work orders and remains accessible within the opportunity record, maintaining compliance records and customer communication history.
Method:Field Services
Custom Property (Work Order)
Odoo CRM
ir.model.fields (x_ prefixed)
1:1Method custom fields on work orders create corresponding custom fields on crm.lead in Odoo via Studio before migration. Field type mapping: text to char, number to float or integer, date to date, pick-list to selection. Nomenclature follows Odoo's x_ prefix convention for custom fields.
Method:Field Services
Customer Communication History
Odoo CRM
mail.message / mail.activity
1:1Method's communication log entries (emails, call notes) migrate to Odoo mail.message records linked to res.partner or crm.lead. Call activities with duration and outcome map to mail.activity with type='call'. Original timestamps and author are preserved. This maintains the full customer interaction history within Odoo's native chatter system, enabling teams to review past communications directly on the opportunity or contact record.
Method:Field Services
QuickBooks Sync Reference
Odoo CRM
Custom Char field on res.partner / sale.order
1:1Method's QuickBooks customer ID and invoice reference fields have no native Odoo equivalent. We preserve these as custom char fields (qb_customer_id__c, qb_invoice_ref__c) on the relevant records for audit trail and future reconciliation if a QuickBooks connector is installed. This prevents data loss and allows your finance team to cross-reference historical transactions once a connector is configured, supporting continuity in financial reporting.
| Method:Field Services | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | res.partner1:1 | Fully supported | |
| Company | res.partner1:1 | Fully supported | |
| Work Order | crm.lead1:1 | Fully supported | |
| Estimate | sale.order1:1 | Fully supported | |
| Sales Pipeline Stage | crm.stage1:1 | Fully supported | |
| Dispatcher | res.users1:1 | Fully supported | |
| Field Crew Technician | res.users / res.partner (portal)1:1 | Fully supported | |
| Time Tracking Entry | account.analytic.line1:1 | Fully supported | |
| Attachment / E-signature | ir.attachment1:1 | Fully supported | |
| Custom Property (Work Order) | ir.model.fields (x_ prefixed)1:1 | Fully supported | |
| Customer Communication History | mail.message / mail.activity1:1 | Mapping required | |
| QuickBooks Sync Reference | Custom Char field on res.partner / sale.order1: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.
Method:Field Services gotchas
Role-based pricing means Dispatchers cost 3× Field Crew
API daily rate limits scale with active license count
Custom fields require manual screen assignment post-creation
Work Order and Field Crew apps are separate pack dependencies
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 Method data model and export via API
FlitStack connects to Method:Field Services via its REST API using your account credentials. We pull a complete inventory of all tables accessible via the API: Contact, Company, WorkOrder, Estimate, SalesTransaction, and any custom tables. We also retrieve the custom field definitions from Method's tables/fields configuration endpoint so we know field types and pick-list values. API rate limits are respected (5,000 base + 1,000 per license). The export produces structured JSON per object, with foreign-key references preserved as IDs for later resolution. We validate record counts against your stated scope and flag any tables that require custom field creation in Odoo before migration.
Create Odoo schema: stages, teams, users, and custom fields
Before any data is written, your Odoo admin (or FlitStack's Odoo consultant) creates the target schema. We deliver a schema manifest: crm.stage records keyed to each Method pipeline stage, crm.team records for each dispatch team, res.users for all active dispatchers and technicians, and custom fields on crm.lead for work-order-specific data (technician, job location, time entries, signature). Custom fields use Odoo Studio's field creation UI and follow the x_ prefix convention. This step is the longest planning step for Method migrations because custom fields on work orders often number 10–30 per installation.
Resolve owner and user references by email match
Method stores dispatcher and technician assignments as user references (email or internal ID). Odoo requires a res.users record to assign user_id on crm.lead. We run an email match against your Odoo user list: any email with a matching active Odoo user gets the Odoo user ID written to the record. Unmatched emails are flagged in a pre-flight report with the option to create Odoo users before migration or assign to a fallback owner. Contacts without a primary company get attached to a default 'Unassigned Partner' res.partner record. This step prevents foreign-key violations during the crm.lead write phase.
Migrate partners, then leads, then activities in dependency order
Odoo enforces referential integrity: res.partner records must exist before crm.lead can reference them via partner_id, and crm.lead must exist before mail.message can link to it. We sequence the migration in three phases: (1) res.partner for all contacts and companies, (2) crm.lead for work orders and crm.lead for estimates (as leads with custom fields), with stage_id and team_id set before custom fields are written, and (3) ir.attachment for files and signatures, mail.message for communication history, and account.analytic.line for time entries. Each phase generates a write log and a de-duplication report. Duplicate detection uses Method's internal object IDs stored in x_source_id.
Run sample migration with field-level diff, then cutover with delta pickup
A representative slice (typically 200–500 records spanning contacts, companies, work orders, and estimates) migrates first. We generate a field-level diff between the Method JSON export and the Odoo XML-RPC response so you can verify stage mapping, technician assignment, custom field population, and attachment linkage. After your sign-off, the full migration runs. A delta-pickup window (24–48 hours) captures any records created or modified in Method during cutover. Audit log captures every operation. One-click rollback is available if reconciliation fails. We deliver a final reconciliation report comparing Method record counts to Odoo record counts per object.
Platform deep dives
Method:Field Services
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 Method:Field Services 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
Method:Field Services: 5000 + (1000 × active license count) requests per day, per organization.
Data volume sensitivity
Method:Field Services 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 Method:Field Services to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Method:Field Services 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 Method:Field Services
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.