CRM migration
Field-level mapping, validation, and rollback between Oracle Eloqua and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Oracle Eloqua
Source
Odoo CRM
Destination
Compatibility
13 of 14
objects map 1:1 between Oracle Eloqua and Odoo CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from Oracle Eloqua to Odoo CRM is a platform-category migration. Eloqua is an enterprise B2B marketing automation platform built around Contacts, Accounts, Custom Data Objects, Campaigns, and engagement tracking; Odoo CRM is the sales CRM layer within an open-source ERP suite, built around Contacts, Companies, Opportunities, Pipelines, and Activities. The primary challenge is restructuring a marketing-centric data model into a sales-centric one. We resolve the Contact-to-Contact and Account-to-Company mapping, split multi-object CDO structures into Odoo custom fields or Project tasks, and map Eloqua engagement events to Odoo's CRM Activity records (calls, emails, meetings, tasks, notes). We flag Lead Scoring models, Campaigns, Programs, and Segments as rebuild-required because they have no export mechanism in Eloqua and no native Odoo equivalent. Odoo's XML-RPC API with rate-limit handling drives the data transfer; the 5GB file cap on Eloqua bulk exports is managed through chunked extraction before XML-RPC ingestion. Workflows, automation logic, forms, landing pages, and email assets do not migrate as functional equivalents; we deliver written inventories for manual rebuild by the customer's admin team.
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 Oracle Eloqua 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.
Oracle Eloqua
Contact
Odoo CRM
Contact
1:1Eloqua Contacts map directly to Odoo CRM Contacts. All standard fields (FirstName, LastName, Email, Phone, Address) and custom fields migrate as direct field-to-field mappings. The Eloqua ContactType and marketability flags (opt-in, bounced, unsubscribed) map to Odoo's opt_in field and a custom marketing_status selection field. Import is sequenced after Companies because the Contact's CompanyId (many2one) reference must resolve at insert time. Odoo's XML-RPC API ingests contacts in batches of up to 100 per request with exponential backoff on rate-limit responses.
Oracle Eloqua
Account
Odoo CRM
Company
1:1Eloqua Accounts map to Odoo Companies. The organization name, domain, industry, address fields, and custom fields migrate as direct mappings. Country and State fields in Odoo require ID references rather than string values; we resolve these via Odoo's res.country and res.country.state lookup tables during the transform phase. Company is created before Contact import so that the many2one relationship is satisfied at the moment of Contact insert.
Oracle Eloqua
Custom Data Objects (CDOs)
Odoo CRM
Custom Fields or Project Tasks
lossyEloqua CDOs are customer-defined objects with independent schemas. Odoo has no native CDO equivalent, so we pre-create the destination schema using Odoo Studio custom fields on the Contact or Company object for simple CDOs, or Odoo Project Tasks with custom fields for multi-record CDOs that require a separate data table. We export the CDO schema (field names, data types, picklists) during discovery, create the Odoo custom field structure via the Settings interface, then import CDO records with lookup resolution to the parent Contact or Account. Each CDO migration is scoped independently because schema complexity varies significantly.
Oracle Eloqua
Campaign
Odoo CRM
Opportunity (metadata only)
1:1Eloqua Campaign metadata (name, status, start and end dates, campaign type, budget, targeting criteria) migrates as Opportunity records in Odoo CRM with a custom eloqua_campaign_id field for audit. The multi-step campaign canvas logic (wait steps, conditional branches, trigger-based actions) is tightly coupled to Eloqua's campaign engine and cannot be exported. We document the campaign structure in a written campaign map during discovery, including step order, branching logic, and trigger conditions, for the customer's admin to manually rebuild in Odoo Marketing Automation app or as a Project task checklist.
Oracle Eloqua
Program
Odoo CRM
Project (metadata only)
1:1Eloqua Programs (orchestration containers within Campaigns) migrate as Odoo Project records with Program metadata preserved in custom fields. The Program's step sequence, engagement rules, and nurture logic do not export. We deliver a Program logic inventory document during discovery that lists every Program's name, objective, step count, and action types so the admin can rebuild as Odoo Marketing Automation rules or a manual Project task checklist.
Oracle Eloqua
Segment and Shared List
Odoo CRM
CRM Group or Tags
1:1Eloqua Segments define dynamic contact audiences based on filter criteria; Shared Lists are static contact collections. We export segment filter definitions and list membership counts. Dynamic segment filter logic cannot be reconstructed automatically in Odoo because Odoo's CRM has no native segmentation engine for dynamic audience building. We deliver a segmentation inventory document listing each segment's filter conditions and contact count for manual rebuild using Odoo CRM Groups or tag-based filtering. Shared list memberships are preserved by adding all contacts in a list to a corresponding Odoo CRM Group.
Oracle Eloqua
Email Asset
Odoo CRM
Email Template (partial)
1:1Eloqua Email assets export as HTML content, subject lines, sender and reply-to addresses, and basic configuration. We transfer the HTML body and metadata. Rendering-specific elements such as Eloqua's field merge tokens, dynamic content blocks, and images embedded in Eloqua's asset library require manual rebuild in Odoo's email template builder because the destination email engine uses different token syntax and image hosting. We preserve the HTML source and a list of dynamic elements that need manual recreation.
Oracle Eloqua
Form
Odoo CRM
Website Form Configuration
1:1Eloqua form field configurations (field names, field types, required flags, submission handling rules) export from the Custom Object Record Services and form metadata. We deliver a form field inventory documenting field names, types, labels, and submission logic for manual rebuild in Odoo's Website Form builder or Survey app. The visual layout and design of forms do not migrate and require rebuilding in Odoo's drag-and-drop form editor.
Oracle Eloqua
Lead Scoring Model
Odoo CRM
Not Applicable
1:1Eloqua's weighted demographic and behavioral Lead Scoring models are stored in proprietary configuration that has no export mechanism. We document the current scoring model structure during discovery: scoring categories, weight percentages, demographic triggers, and behavioral thresholds. The customer's admin rebuilds the model in Odoo using a combination of custom fields, computed scores, and optional third-party scoring apps available on the Odoo Marketplace. We do not attempt to export or approximate the scoring values.
Oracle Eloqua
Activity: Email Open/Click
Odoo CRM
CRM Activity (note)
1:1Eloqua tracks email engagement events (opens, clicks, bounces) as activity records linked to Contacts. We export these as Odoo CRM Note activities with the original event type, timestamp, and asset name preserved in custom fields. The engagement event type maps to a selection field (opened, clicked, bounced, unsubscribed) and the related email asset is referenced by name. Note body captures the event summary for the activity timeline.
Oracle Eloqua
Activity: Form Submission
Odoo CRM
CRM Activity (note)
1:1Eloqua form submission events export as Odoo CRM Note activities. The note records the form name, submission date, fields submitted, and the associated Contact. We preserve the field-level submission data in the note body for rep context during the activity timeline review.
Oracle Eloqua
Activity: Page Visit
Odoo CRM
CRM Activity (note)
1:1Eloqua page visit events (tracked web pages) export as Odoo CRM Note activities with the page URL, visit timestamp, and session duration preserved in custom fields. Odoo does not have native web tracking, so these migrate as historical activity records for reference rather than live tracking data. The customer's admin rebuilds web tracking using Odoo's Website analytics or a third-party integration if continued tracking is required.
Oracle Eloqua
Picklist
Odoo CRM
Selection Field
1:1Eloqua picklists (controlled vocabulary for custom fields) export as CSV including display names and stored values. We re-create them as Odoo selection fields or many2one relations to a dedicated res.config.data model depending on picklist size and usage frequency. Small picklists (under 20 values) become Odoo selection fields; large picklists with independent records become dedicated many2one targets so that new values can be added without a field migration.
Oracle Eloqua
Image and Attachment
Odoo CRM
Document
1:1Eloqua asset library images and attachments download via the Bulk API asset endpoints. We re-upload them to Odoo's Document Management module (ir.attachment) and link them to the corresponding Contact, Company, or Opportunity record via res_id and res_model. Externally hosted images referenced by URL remain accessible; images embedded directly in Eloqua's asset library are preserved as binary downloads and re-uploaded to Odoo Documents.
| Oracle Eloqua | Odoo CRM | Compatibility | |
|---|---|---|---|
| Contact | Contact1:1 | Fully supported | |
| Account | Company1:1 | Fully supported | |
| Custom Data Objects (CDOs) | Custom Fields or Project Taskslossy | Mapping required | |
| Campaign | Opportunity (metadata only)1:1 | Fully supported | |
| Program | Project (metadata only)1:1 | Fully supported | |
| Segment and Shared List | CRM Group or Tags1:1 | Fully supported | |
| Email Asset | Email Template (partial)1:1 | Fully supported | |
| Form | Website Form Configuration1:1 | Fully supported | |
| Lead Scoring Model | Not Applicable1:1 | Fully supported | |
| Activity: Email Open/Click | CRM Activity (note)1:1 | Fully supported | |
| Activity: Form Submission | CRM Activity (note)1:1 | Fully supported | |
| Activity: Page Visit | CRM Activity (note)1:1 | Fully supported | |
| Picklist | Selection Field1:1 | Fully supported | |
| Image and Attachment | Document1: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.
Oracle Eloqua gotchas
Contact-based pricing model inflates migration scope
No native export or migration tooling in Eloqua
Bulk API soft limits throttle large data transfers
5 GB import file size cap complicates bulk data loads
SOAP API deprecated; REST/Bulk APIs require endpoint caching
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 data audit
We audit the source Eloqua environment across tier (Basic/Standard/Enterprise), contact volume, Account count, CDO list (schema and record count per CDO), active Campaign count and complexity, Segment definitions and contact counts, engagement history volume, picklist definitions, and any existing CRM integrations. We also inventory all active automations, scoring models, and email assets requiring documentation. The discovery output is a written migration scope document covering record counts, schema mapping decisions, and a list of all objects requiring manual rebuild (Lead Scoring, Campaigns, Programs, Segments, Forms).
CDO schema design and Odoo custom field creation
For each Eloqua CDO, we design the Odoo destination schema before any data moves. Simple CDOs with fewer than 10 fields become Odoo Studio custom fields on the Contact or Company object. Complex CDOs with independent record structures and relationships become Odoo Project Tasks with custom fields to preserve the multi-record data model. We create all custom fields via Odoo Settings before migration begins and validate that the XML-RPC API can write to each new field.
Sandbox migration and reconciliation
We run a full migration into an Odoo test database using production-like data volume. The customer's Odoo administrator reconciles record counts (Contacts in, Companies in, Activities in), spot-checks 25-50 random records against the Eloqua source, and validates that picklist values render correctly in Odoo's UI. Any field mapping corrections, data type adjustments, or picklist gaps are resolved in this phase before production migration begins.
Production migration in dependency order
We run production migration in strict record-dependency order: Companies (from Eloqua Accounts, establishing the Company ID map), Contacts (with many2one CompanyId resolved, and marketability flags preserved in custom fields), CDO records (with parent Contact or Company lookup resolved), Picklists (re-created as selection fields or many2one targets before any dependent field import), Email assets (HTML and metadata for documentation), Form configurations (field inventory for manual rebuild), Activity history (email engagement, form submissions, page visits as CRM Note activities), and Image and Attachment assets (downloaded from Eloqua and re-uploaded to Odoo Documents). Each phase emits a row-count reconciliation report before the next phase begins.
Campaign, Program, and Scoring inventory delivery
We deliver the written inventory documents: the Campaign logic map (step order, branching logic, trigger conditions for each Campaign), the Program structure document, the Segmentation inventory (filter criteria and contact counts for each segment), the Lead Scoring model documentation (weight categories, thresholds, behavioral triggers), and the Form field inventory. These documents are the handoff artifacts for the customer's admin team to begin manual rebuild of automations in Odoo Marketing Automation or as Project task checklists.
Cutover, validation, and post-migration support
We freeze new Eloqua record creation during the cutover window, run a final delta migration of any records modified since the last batch, then enable Odoo CRM as the system of record. We perform a final record count reconciliation against the source and validate that all Contact-to-Company relationships resolved correctly. We provide a one-week hypercare window to resolve any data quality issues reported by the customer's sales team. We do not rebuild Eloqua automations, scoring models, or email templates inside the migration scope; those are separate engagements or internal admin tasks.
Platform deep dives
Oracle Eloqua
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Oracle Eloqua and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Oracle Eloqua and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Oracle Eloqua 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
Oracle Eloqua: Bulk API: 2,000 records/hour per sync type; REST API: 10-20 concurrent requests depending on tier.
Data volume sensitivity
Oracle Eloqua exposes a bulk API — large-volume migrations stream efficiently.
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 Oracle Eloqua to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Oracle Eloqua 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 Oracle Eloqua
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.