CRM migration
Field-level mapping, validation, and rollback between OnePageCRM and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
OnePageCRM
Source
Odoo CRM
Destination
Compatibility
11 of 12
objects map 1:1 between OnePageCRM and Odoo CRM.
Complexity
BStandard
Timeline
2-3 weeks
Overview
Moving from OnePageCRM to Odoo CRM is a structural migration that expands a flat, sales-action-oriented data model into a modular ERP-connected CRM. OnePageCRM stores Contacts (Persons), Organizations, and Deals on separate records with a Next Action date field that drives the Action Stream interface; Odoo uses the crm.lead model for both leads and opportunities with an Activity system. We map Persons to Leads, Organizations to Partners, and Deals to Opportunities with the opportunity linked to the originating lead via Odoo's Convert-to-Opportunity action. Next Action dates transfer as a custom lead priority field. Custom Fields map to Odoo lead Properties, Tags to the crm.tag module, and Predefined Items to the product.product catalog. OnePageCRM's export cannot pull email body text or attachments from contact records; we flag every affected record during scoping and document the gap so the customer decides whether to accept partial migration or use a third-party extraction tool. Autoflow workflows and Saved Actions do not migrate as automation code; we deliver a task-template inventory for Odoo rebuild.
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 OnePageCRM 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.
OnePageCRM
Contact (Person)
Odoo CRM
crm.lead
1:1OnePageCRM Contact (Person) records map to Odoo crm.lead. We preserve name, all email addresses, phone numbers, social URLs, and postal addresses. The Next Action date transfers as a custom field na_next_action_date__c that we create in Odoo before import; the Next Action text is stored as na_next_action_text__c. Contact Status (Prospect, Qualified, Customer) maps to a custom crm.lead.property_char field, and any custom contact fields migrate as lead Properties. The source OnePageCRM contact ID is stored as opc_id__c for reconciliation.
OnePageCRM
Organization (Company)
Odoo CRM
res.partner
1:1OnePageCRM Organizations map to Odoo res.partner records with partner_weights=company (Odoo's company-type partner flag). We preserve company name, phone, address, website, and any custom organization fields as partner Properties. The contact-to-organization linkage from OnePageCRM is resolved by storing the partner ID as a custom field on the migrated crm.lead so that Odoo's Convert-to-Opportunity action can link the opportunity to the correct partner during post-migration conversion.
OnePageCRM
Deal
Odoo CRM
crm.lead (stage = Opportunity)
1:1OnePageCRM Deals map to Odoo crm.lead with the stage field set to a pipeline stage that represents an active opportunity. We preserve deal name, amount, pipeline, stage, close date, margin, commission, cost, and deal flags. If OnePageCRM deal records have an associated Organization, we resolve the partner ID during import to satisfy Odoo's lead-to-partner relationship requirement. Multi-month deal flags migrate as custom fields on the crm.lead.
OnePageCRM
Deal Pipeline
Odoo CRM
crm.team + crm.stage
lossyOnePageCRM's pipeline structure maps to Odoo's crm.team (sales team) and stage configuration. Each OnePageCRM pipeline becomes a separate crm.team in Odoo, and the pipeline stages within it become crm.stage records with probability percentages matching OnePageCRM stage values. We configure the pipeline-stage relationship in Odoo before deal import so stage assignment is consistent across the migration.
OnePageCRM
Custom Fields (Contacts)
Odoo CRM
crm.lead Properties
1:1Admin-created custom fields on OnePageCRM contacts must be pre-created as custom Properties on the crm.lead model in Odoo before migration. We check field type parity: text fields map to char, date fields to date, numeric fields to float, and multi-value fields to char or selection depending on Odoo's capabilities. We provide a custom field checklist during scoping so all source fields have a destination target before migration day.
OnePageCRM
Custom Fields (Organizations)
Odoo CRM
res.partner Properties
1:1Company-level custom fields migrate as custom Properties on the res.partner model in Odoo. We apply the same type-parity mapping logic used for contacts. Fields that exceed Odoo's character limits or use unsupported types (e.g., complex multi-value arrays) are flagged during scoping and dropped with a documented rationale.
OnePageCRM
Custom Fields (Deals)
Odoo CRM
crm.lead Properties
1:1Deal-level custom fields migrate to crm.lead custom Properties, preserving the field name and type. We check probability fields for Odoo stage-compatibility, monetary fields for currency alignment, and date fields for format consistency. Closed Won and Closed Lost deals from OnePageCRM are mapped to the corresponding Odoo stage values with the close date preserved.
OnePageCRM
Tags
Odoo CRM
crm.tag
1:1Tags assigned to OnePageCRM contacts migrate to the crm.tag module in Odoo. We use the flat tag namespace from OnePageCRM and create equivalent tags in Odoo before import. The tag-to-contact relationship is stored via crm.lead.tag.rel during migration. If the customer uses tags for segmentation or filtering, we preserve the full tag set and recommend rebuilding tag-based views as Odoo filters or saved searches post-migration.
OnePageCRM
Statuses
Odoo CRM
crm.lead custom field
1:1OnePageCRM contact statuses (e.g., Prospect, Qualified, Customer) are captured as a custom field on the crm.lead model. The full status taxonomy is documented during scoping, and each status maps to a specific selection value in Odoo. If the customer uses status-driven automation in OnePageCRM, we note the trigger conditions for rebuild in Odoo Automated Actions.
OnePageCRM
Lead Sources
Odoo CRM
crm.lead custom field
1:1Lead Sources (e.g., website inquiry, referral, phone call) from OnePageCRM transfer as a custom selection field on the crm.lead model. We create the selection values to match the source taxonomy exactly and document any Lead Sources that have no natural Odoo equivalent so the customer can consolidate or rename them during the rebuild phase.
OnePageCRM
Predefined Items (Product Catalog)
Odoo CRM
product.product + product.template
1:1OnePageCRM Predefined Items migrate to Odoo product.product records. We preserve item name, price, quantity, grouping (category), and any item-level custom fields as product Properties. Product groupings become Odoo product.categories. If the customer uses Predefined Items in deal creation, we configure the sale_order_line product_id field in Odoo to reference the migrated catalog so that deals can be converted to quotations with the correct product lines.
OnePageCRM
Predefined Actions (Saved Actions)
Odoo CRM
project.task.type + project.task template
1:1OnePageCRM Saved Actions are task template sequences that do not migrate as automation code. We map each named Saved Action to an Odoo project.task.type (stage) and create a task template record that the customer's Odoo admin can reference when rebuilding the task sequences in Odoo's project or helpdesk module. The Odoo project and task module must be activated in the destination instance before this mapping is used.
| OnePageCRM | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact (Person) | crm.lead1:1 | Fully supported | |
| Organization (Company) | res.partner1:1 | Fully supported | |
| Deal | crm.lead (stage = Opportunity)1:1 | Fully supported | |
| Deal Pipeline | crm.team + crm.stagelossy | Fully supported | |
| Custom Fields (Contacts) | crm.lead Properties1:1 | Mapping required | |
| Custom Fields (Organizations) | res.partner Properties1:1 | Fully supported | |
| Custom Fields (Deals) | crm.lead Properties1:1 | Mapping required | |
| Tags | crm.tag1:1 | Fully supported | |
| Statuses | crm.lead custom field1:1 | Mapping required | |
| Lead Sources | crm.lead custom field1:1 | Mapping required | |
| Predefined Items (Product Catalog) | product.product + product.template1:1 | Mapping required | |
| Predefined Actions (Saved Actions) | project.task.type + project.task template1:1 | Mapping required |
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.
OnePageCRM gotchas
Email bodies and attachments are not exported from OnePageCRM
Duplicate detection fires after import, not during
API rate limit of 5 req/s constrains bulk extraction
Custom Fields must be pre-created before import
Merge Import updates existing contacts rather than creating new ones
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
Discovery and scoping
We audit the source OnePageCRM account for record counts (contacts, organizations, deals), custom field inventory (per object), tag taxonomy, pipeline and stage structure, Predefined Items and their groupings, Saved Action templates, and any integration dependencies. We check the account tier (Professional, Business, or Enterprise) because API access and advanced reporting features affect what can be extracted programmatically. The discovery output is a written migration scope, a custom field parity checklist, and a timeline estimate. We also verify that the destination Odoo instance has the CRM, project, and product modules activated and accessible.
Schema preparation in Odoo
We create the destination schema in Odoo before any data is loaded. This includes custom fields on crm.lead and res.partner for all mapped OnePageCRM custom properties, crm.tag entries for the tag taxonomy, crm.team records and stage configurations for each OnePageCRM pipeline, product.category records for Predefined Item groupings, and product.product records for the product catalog. We configure the crm.lead custom fields na_next_action_date__c and na_next_action_text__c to receive the Action Stream data. Schema is deployed to the Odoo staging or production instance via direct configuration.
CSV export from OnePageCRM and deduplication
We extract bulk data from OnePageCRM using the CSV export endpoints for contacts (with notes and call logs), organizations, and deals. We run pre-import deduplication on the contact export using email address as the primary key, flagging duplicate records for the customer's review before load. Any records with email body content are flagged with a data-loss marker so the customer can confirm acceptance before we proceed. Custom field metadata is fetched via the API (throttled to 5 req/s) to verify field types and options.
Staging migration and reconciliation
We execute a full migration into the Odoo staging environment using production-equivalent record volumes. We validate record counts (contacts in, organizations in, deals in, tags assigned, products loaded), spot-check 25–50 randomly selected records against the OnePageCRM source for field-level accuracy, and verify that the Next Action date and text are visible in the crm.lead record. Any mapping corrections or missing custom fields are addressed in this phase before production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: res.partner records (Organizations) first, then crm.lead records (Contacts as Leads), then crm.lead records with stage = Opportunity (Deals), then product.product records, then crm.tag assignments and crm.lead.tag.rel records. Each phase emits a row-count reconciliation report. The na_next_action_date__c and na_next_action_text__c fields are populated during the Contact-to-Lead import phase. Owner resolution uses email matching against Odoo User records.
Cutover, validation, and automation rebuild handoff
We freeze OnePageCRM writes during the cutover window, run a final delta migration for records modified during the migration window, and hand over Odoo as the system of record. We deliver the Autoflow workflow inventory document listing each OnePageCRM workflow's trigger, conditions, and 15-step sequence with a recommended Odoo Automated Action equivalent. We do not rebuild workflows or Saved Actions in Odoo; that work is handled by the customer's admin using Odoo Studio or a certified Odoo partner. We provide a one-week hypercare window for reconciliation issues raised by the sales team.
Platform deep dives
OnePageCRM
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between OnePageCRM and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across OnePageCRM and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between OnePageCRM 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
OnePageCRM: 5 req/s average, 10 req/s burst (sliding window).
Data volume sensitivity
OnePageCRM 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 OnePageCRM to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your OnePageCRM 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 OnePageCRM
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.