CRM migration
Field-level mapping, validation, and rollback between Oncord and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Oncord
Source
Odoo CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Oncord and Odoo CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Oncord to Odoo CRM is a platform-class migration. Oncord is a website-builder-first all-in-one with no documented public API and no formal migration tooling, which shapes every step of the export phase. Odoo CRM is the CRM module of an open-source ERP suite used by over 5 million organizations; it exposes a full XML-RPC API but uses a Lead-then-Contact model that requires reconciliation against Oncord's single Contact object. We map Oncord Contacts to Odoo Leads or Contacts based on deal stage, map Groups to Odoo Tags or Channel records, map Products (where the Commerce add-on was active) to Odoo Product templates, and map Custom Fields through Odoo's ir.model.fields API. Automation workflows, marketing drip sequences, and website-builder content do not migrate; we deliver a written inventory of every Oncord Automation with a recommended Odoo Automated Action or Studio workflow equivalent for the customer's admin to 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 Oncord 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.
Oncord
Contact
Odoo CRM
Lead or Contact (split required)
1:manyOncord's single Contact object maps to Odoo Lead for records without an active sale and to Odoo Contact attached to an Account for records with a deal history or commerce association. We apply a split rule based on Oncord's contact tags, group membership, and any deal association. The original Oncord contact ID is preserved in a custom field x_oncord_id on both Lead and Contact for audit reconciliation.
Oncord
Group
Odoo CRM
Tag or Channel
1:1Oncord Groups function as static segmentation lists. We map each Group to an Odoo Tag record on the res.partner model, or to a Channel if the group represents a sales team or routing list. Tags are linked via the res.partner.tag.rel many-to-many table. On Lite plans, filters restricted to Groups only are noted as a constraint in the mapping inventory.
Oncord
Custom Fields
Odoo CRM
Custom Fields (ir.model.fields)
1:1Oncord CustomFields are extracted via its internal API component and mapped to Odoo custom fields created via ir.model.fields before migration. We handle type mapping: Oncord text and number fields map to Odoo char and float fields; date fields map to Odoo date; dropdown fields map to Odoo selection fields with the same options list. All custom fields must be deployed to Odoo before any partner records are imported.
Oncord
Product (Commerce add-on)
Odoo CRM
Product Template
1:1Oncord Products (available only when the Commerce add-on was active) map to Odoo Product Template records. We extract product name, description, price, SKU, inventory count, images, and any custom product fields. Products with variants (size, color) map to Odoo Product Template with Product Variant lines. If the customer had the Commerce add-on, product data migration is included; if Commerce was never active, no product records exist to migrate.
Oncord
Discount and Coupon (Commerce add-on)
Odoo CRM
Coupon Program or Loyalty Program
lossyOncord discount rules and coupon codes map to Odoo's Loyalty Program or Coupon Program depending on whether the discount applies to a specific order or a general promotion. Eligibility conditions and usage limits are documented as a written mapping for the customer's Odoo admin to configure in the CRM or eCommerce module post-migration.
Oncord
Event (Marketing add-on)
Odoo CRM
Calendar Event
1:1Oncord Events with RSVP and attendee lists map to Odoo Calendar Event records. Event name, date, location, capacity, and attendee list (linked back to Contact records) migrate. If the customer uses the Odoo Events module instead of the calendar, Events map to event.event records. Attendee status (attending, not attending, maybe) maps to calendar.event.type or a custom selection field.
Oncord
Owner / User
Odoo CRM
User
1:1Oncord admin users map to Odoo User records. We resolve by email match. Any Oncord Owner without a matching Odoo User goes to a reconciliation queue for the customer's admin to provision. Role semantics differ: Oncord's admin and editor roles have no direct Odoo equivalent, so we assign the Odoo Standard User or Portal User access level based on the customer's indicated function.
Oncord
Web Form (Marketing add-on)
Odoo CRM
Form Builder
1:1Oncord Web Forms and their field-to-contact-property mappings are documented in the written handoff inventory. Odoo's Form Builder or a third-party module (like website_form_builder) replaces Oncord forms. We do not migrate form code or embed scripts; we deliver a field-level map of every Oncord form so the customer's admin can recreate the form structure in Odoo.
Oncord
Automation Workflow (Marketing add-on)
Odoo CRM
Automated Action or Studio Workflow
1:1Oncord automation workflows trigger on contact activity, group membership, or time-based schedules. We document the workflow structure (triggers, conditions, actions) in the written inventory. Migration of automation as code is not in scope. The customer receives a detailed list of every Oncord Automation with its trigger logic and a recommended Odoo Automated Action or Studio workflow equivalent, plus the specific Odoo version and module required to implement each one.
Oncord
Activity history (calls, emails, meetings, tasks)
Odoo CRM
Mail Activity or Project Task
1:1Oncord engagement records (calls, emails, meetings, tasks, notes) map to Odoo Mail Activity records or Project Task records depending on whether the destination Odoo instance includes the Project module. Email content maps to Odoo mail.message linked to the partner. Call disposition and duration map to custom fields on the activity record. Activity timestamps are preserved to maintain the timeline for sales reps.
Oncord
Account / Billing (if Commerce and Accounting connected)
Odoo CRM
Partner (with address and fiscal fields)
1:1Oncord Contacts with associated billing or shipping addresses map to Odoo res.partner records with the address fields populated. If the customer used Oncord's Xero or MYOB sync (available with Commerce add-on), address and company data is already structured for Odoo partner mapping. We preserve the Oncord contact source field as x_oncord_source on the partner for marketing attribution.
Oncord
Company information
Odoo CRM
Company (res.company) or Contact with company_type = company
1:1Oncord contacts that represent organizations rather than individuals map to Odoo res.company records or to contacts with company_type set to company and linked as child contacts. Oncord's business type or industry field maps to Odoo's industry_id (res.partner.industry) selection field.
| Oncord | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Lead or Contact (split required)1:many | Fully supported | |
| Group | Tag or Channel1:1 | Fully supported | |
| Custom Fields | Custom Fields (ir.model.fields)1:1 | Fully supported | |
| Product (Commerce add-on) | Product Template1:1 | Fully supported | |
| Discount and Coupon (Commerce add-on) | Coupon Program or Loyalty Programlossy | Fully supported | |
| Event (Marketing add-on) | Calendar Event1:1 | Fully supported | |
| Owner / User | User1:1 | Fully supported | |
| Web Form (Marketing add-on) | Form Builder1:1 | Fully supported | |
| Automation Workflow (Marketing add-on) | Automated Action or Studio Workflow1:1 | Fully supported | |
| Activity history (calls, emails, meetings, tasks) | Mail Activity or Project Task1:1 | Fully supported | |
| Account / Billing (if Commerce and Accounting connected) | Partner (with address and fiscal fields)1:1 | Fully supported | |
| Company information | Company (res.company) or Contact with company_type = company1: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.
Oncord gotchas
Email accounts are not included in the base subscription
Lite plan restrictions gate most CRM and marketing data
No formal export or migration tooling exists
Commerce and Marketing are optional paid add-ons
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 tier confirmation
We audit the customer's Oncord account across plan tier, active add-ons (Marketing, Commerce), custom field definitions, Group count, product count, event count, automation count, and engagement volume. We confirm whether Lite plan restrictions apply, because Commerce and Marketing data may not exist for customers on restricted tiers. We pair this with an Odoo edition review: Odoo Community is free but requires manual upgrades; Odoo Online or.sh is the cloud-hosted SaaS tier; Odoo Enterprise adds studio, automation, and approval workflows. The discovery output is a written migration scope with confirmed object list and record counts.
Schema deployment in Odoo staging environment
We deploy the destination schema in an Odoo staging or sandbox environment using XML-RPC API calls to create ir.model.fields (custom fields) before any data is written. We configure Lead and Contact fields, Account fields, Tags, Product templates, and any custom selection fields. If the customer uses Odoo Project or Helpdesk, those modules are enabled and configured at this stage. Schema must be complete before any partner, product, or activity records are imported because Odoo enforces field existence at write time.
Oncord data extraction
We extract data from Oncord via the CustomFields API component and on-demand account backups. The export is structured by object: Contacts with all standard and custom fields, Groups with membership lists, Products with variant data and images, Events with attendee RSVPs, and engagement history. Export completeness is verified against Oncord's own backup file. We flag any fields or records that cannot be extracted via the available tooling before the transformation phase begins.
Data transformation and split rule application
We transform extracted data into Odoo's import format. The primary split rule (Contact to Lead or Contact plus Account) is applied at this stage. Groups become Tags. Custom field values are mapped to the new Odoo field IDs. Owner emails are mapped to Odoo User IDs via the email reconciliation queue. Product SKUs are verified against the Odoo product template list. Any duplicates identified in the source data are flagged in a deduplication report for the customer to resolve before import.
Sandbox migration and reconciliation
We run a full migration into the Odoo staging environment using XML-RPC API batch inserts with exponential backoff on rate limit responses. The customer's admin reviews record counts (Contacts in, Leads in, Accounts in, Products in, Activities in), spot-checks 25-50 records against the Oncord source, and signs off the mapping before production migration begins. Any field mapping corrections are made in the staging phase, not in production.
Production migration in dependency order
We run production migration in record-dependency order: User provisioning (validated manually), Companies and Contacts with AccountId resolved, Leads with the split applied, Products and Price List entries (if Commerce add-on was active), Product variants, Events with attendee relations, and Activity history. Each phase emits a row-count reconciliation report before the next phase begins. Odoo's XML-RPC API batch size is managed against Odoo's internal transaction limits to avoid server errors on large inserts.
Cutover, validation, and automation handoff
We freeze Oncord writes during cutover, run a final delta migration of any records modified during the migration window, then enable Odoo as the system of record. We deliver the Automation workflow inventory document to the customer's Odoo admin or implementation partner for rebuild. We do not rebuild Oncord Automations as Odoo automated actions inside the migration scope. We support a one-week hypercare window where we resolve reconciliation issues raised by the customer's team.
Platform deep dives
Oncord
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Oncord and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Oncord and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Oncord 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
Oncord: Not publicly documented.
Data volume sensitivity
Oncord 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 Oncord to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Oncord 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 Oncord
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.