CRM migration
Field-level mapping, validation, and rollback between Oracle Siebel and Odoo CRM. We move data and schema; workflows are rebuilt natively in Odoo CRM.
Oracle Siebel
Source
Odoo CRM
Destination
Compatibility
10 of 14
objects map 1:1 between Oracle Siebel and Odoo CRM.
Complexity
BStandard
Timeline
6-10 weeks
Overview
Moving from Oracle Siebel to Odoo CRM is a fundamental data-model migration, not a record copy. Siebel's party-based architecture uses S_PARTY as a shared root for both Organizations and Contacts, while Odoo uses a flat res.partner model with a type field differentiating company partners from individual contacts. We resolve that structural split during scoping, import Organization partners first, then attach Contact partners under their parent Organization, and preserve the original S_PARTY row ID as a custom Odoo field for audit traceability. Siebel's 30 req/min REST API rate limit and Odoo's 1 req/sec XML-RPC ceiling both constrain throughput; we handle both with batched extraction and parallel session threads on the Siebel side, and with ORM Model.create() list batching on the Odoo side. Siebel custom extension tables, Siebel Tools SRF-dependent fields, Workflow Processes, EAI integrations, and Position-based access-control structures do not migrate; we deliver written inventories for the customer's admin to rebuild post-migration.
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 Siebel 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 Siebel
Organization (S_ORG_EXT + S_PARTY)
Odoo CRM
res.partner (type = company)
1:1Siebel Organization records map to Odoo res.partner with type=company. We extract S_PARTY.ROW_ID as the dedupe key and carry it into a custom field x_siebel_party_id on the Odoo partner for audit traceability. Organization name, address, industry, and primary contact fields map to the corresponding Odoo res.partner fields. Multi-company Siebel deployments with separate business unit Organizations map to separate Odoo company partners; Odoo's multi-company security model can be configured to enforce data isolation per partner if the customer requires it.
Oracle Siebel
Contact (S_CONTACT + S_PARTY)
Odoo CRM
res.partner (type = contact)
1:manySiebel Contact records map to Odoo res.partner with type=contact. Each Contact's S_CONTACT.PAR_BU_ID is resolved to the parent Organization's S_PARTY.ROW_ID, which we use to look up the previously migrated company res.partner and set parent_id on the contact partner. Contacts without a parent Organization link in Siebel are migrated as individual res.partner records with type=individual. Name, email, phone, function, and custom extension fields migrate directly. The original S_PARTY.ROW_ID is preserved in x_siebel_party_id on each contact partner.
Oracle Siebel
Opportunity
Odoo CRM
crm.lead
1:1Siebel Opportunities map to Odoo crm.lead records. The Siebel pipeline stage maps to an Odoo stage within the CRM pipeline, with the stage name and probability preserved. Revenue amounts map to Odoo's expected_revenue and planned_revenue fields. The Opportunity-Account link resolves to the migrated res.partner parent_id. Stage history from Siebel's Pipeline Stage tracking migrates as Odoo lead kanban stage transitions with dates preserved in the lead's history. Closed-Lost and Closed-Won outcomes from Siebel map to Odoo's lost and won stage states respectively.
Oracle Siebel
Quote (S_DOC_QUOTE + S_QUOTE_ITEM)
Odoo CRM
sale.order (state = draft or sent)
1:1Siebel Quote header (S_DOC_QUOTE) maps to Odoo sale.order in draft or sent state depending on Siebel quote status. Quote line items (S_QUOTE_ITEM) map to sale.order.line with product, quantity, and pricing. The Quote-to-Order linkage in Siebel (for quotes converted to orders) maps by matching Siebel order number to Odoo sale.order origin field. Quote status in Siebel—Draft, Active, Accepted, Lost—is preserved in a custom field x_siebel_quote_status on the sale.order. Accepted Siebel quotes that correspond to Odoo sale orders carry the order number in the origin field.
Oracle Siebel
Order (S_ORDER + S_ORDER_ITEM)
Odoo CRM
sale.order
1:1Siebel Orders map to Odoo sale.order records. Order header fields (S_ORDER) map to sale.order fields: order number, order date, partner_id (resolved to the Organization res.partner), shipping address, and total amount. Order items (S_ORDER_ITEM) map to sale.order.line with product, quantity, unit price, and taxes. Document attachments from S_ORDER_DOC migrate as ir.attachment records linked to the sale.order. The Account link and Quote link are preserved as a custom field and the origin field respectively.
Oracle Siebel
Case / Service Request
Odoo CRM
helpdesk.ticket
1:1Siebel Service Request (S_SRV_REQ) records map to Odoo helpdesk.ticket. Case status, priority, category, and assignment fields migrate to the corresponding Odoo ticket fields. The assigned Position or Employee from Siebel is resolved to an Odoo res.users record by email match and mapped to the ticket's user_id. Case-related Activities (S_EVT_ACT with type SR) migrate as mail.message records linked to the helpdesk.ticket. The ticket description field carries the Siebel SR description text. Customers on Odoo plans without Helpdesk can opt to map Cases to crm.lead instead.
Oracle Siebel
Activity / Engagement
Odoo CRM
mail.message + mail.activity
1:1Siebel Activities (calls, emails, meetings, tasks) map to Odoo mail.message records linked to the parent Contact res.partner or Organization res.partner. Activity type, date, owner, duration, and outcome migrate as mail.message fields or custom fields on the message. Meetings with attendees link to mail.activity records. The parent record resolution uses the Siebel Contact's S_PARTY.ROW_ID mapped to the migrated res.partner x_siebel_party_id to locate the correct Odoo partner. Activity ordering is preserved by setting mail.message.date to the original Siebel timestamp.
Oracle Siebel
Literature (S_LIT + Siebel File System)
Odoo CRM
ir.attachment
1:1Siebel Literature metadata (S_LIT) migrates as Odoo ir.attachment records. We extract the file path from S_LIT.PATH, retrieve the corresponding binary file from the Siebel File System, and deliver it as a base64-encoded payload for Odoo attachment re-upload. The literature name and type map to ir.attachment.name and ir.attachment.type. Literature is typically linked to the parent Account or Opportunity in Odoo. If the customer has Odoo Documents installed, we can link literature to the Odoo Documents app for organized content management.
Oracle Siebel
Asset (S_ASSET)
Odoo CRM
product.product or stock.quant
1:1Siebel Financial Assets (S_ASSET) represent installed products or holdings linked to an Account. If Odoo Inventory is in scope, assets migrate as product.product records with type=product and tracked by serial number (stock.quant). If only Odoo CRM is in scope, assets migrate as custom res.partner fields on the Organization partner. Asset linked to S_ORG_EXT is resolved to the migrated res.partner by x_siebel_party_id.
Oracle Siebel
Position
Odoo CRM
hr.employee
lossySiebel Positions (S_POSTN) represent organizational roles and control record visibility through Siebel's position-based access control. Positions migrate as hr.employee records in Odoo with the position name as employee name. The position hierarchy (parent-child S_POSTN relationships) can be mapped to Odoo's department structure if Odoo Employees is in scope. User-to-Position assignments in Siebel (S_USER_POSTN) require manual reconciliation: the customer's Odoo admin provisions res.users accounts and assigns employee records post-migration. This mapping is configuration-dependent on whether Odoo Employees is active.
Oracle Siebel
Custom Extension Tables (S_* EXTENSION)
Odoo CRM
Custom Fields or Custom Partner Properties
lossySiebel custom extension tables built atop Siebel's extension table pattern require per-table analysis. We inspect each S_* EXTENSION table's foreign keys, column types, and SRF-compiled field definitions, then map them to Odoo res.partner custom fields (x_* columns created via Odoo Studio or Python) or to new Odoo model columns if the extension represents a distinct object type. Custom extension tables referencing S_PARTY are the most common and map cleanly as custom fields on the res.partner. We deliver a written extension table inventory with column-level mapping and Odoo field type recommendations.
Oracle Siebel
Holdings (S_FN_HLDNG)
Odoo CRM
account.move.line or custom financial fields
lossySiebel Financial Services Holdings (S_FN_HLDNG) represent financial instrument positions linked to Financial Accounts (S_ASSET). If Odoo Accounting is in scope, holdings migrate as account.move.line records tied to a financial account res.partner. If Odoo CRM only is in scope, holdings migrate as custom fields on the related Account res.partner. This mapping depends on the customer's Odoo module scope and whether Odoo Financial services-specific configuration is required.
Oracle Siebel
Integrations (EAI, Adapters, SOAP/REST Connectors)
Odoo CRM
N/A
1:1Siebel's EAI integration layer—including EAI adapters, business services, SOAP/REST connectors, and inbound/outbound web services—is tightly coupled to the Siebel runtime environment and stored in the Siebel repository. These cannot be exported as portable data and do not migrate. We deliver a written inventory of every Siebel integration endpoint, its data flow direction, and the recommended Odoo replacement approach (native Odoo integration, third-party connector, or custom XML-RPC/XML-RPC/JSON-RPC development). The customer's integration team rebuilds these post-migration.
Oracle Siebel
Workflow Processes
Odoo CRM
N/A
1:1Siebel Workflow Processes are stored in the Siebel repository (SRF) and define business process automation including approval chains, data propagation rules, and process-driven UI. These are not portable data and do not migrate to Odoo. We deliver a written workflow inventory documenting every active Siebel Workflow Process with its trigger conditions, process steps, and a recommended Odoo equivalent (Odoo Studio automation, server action, or computed field). The customer's Odoo administrator or an Odoo implementation partner rebuilds these as part of the post-migration configuration scope.
| Oracle Siebel | Odoo CRM | Compatibility | |
|---|---|---|---|
| Organization (S_ORG_EXT + S_PARTY) | res.partner (type = company)1:1 | Fully supported | |
| Contact (S_CONTACT + S_PARTY) | res.partner (type = contact)1:many | Fully supported | |
| Opportunity | crm.lead1:1 | Fully supported | |
| Quote (S_DOC_QUOTE + S_QUOTE_ITEM) | sale.order (state = draft or sent)1:1 | Fully supported | |
| Order (S_ORDER + S_ORDER_ITEM) | sale.order1:1 | Fully supported | |
| Case / Service Request | helpdesk.ticket1:1 | Fully supported | |
| Activity / Engagement | mail.message + mail.activity1:1 | Fully supported | |
| Literature (S_LIT + Siebel File System) | ir.attachment1:1 | Fully supported | |
| Asset (S_ASSET) | product.product or stock.quant1:1 | Fully supported | |
| Position | hr.employeelossy | Fully supported | |
| Custom Extension Tables (S_* EXTENSION) | Custom Fields or Custom Partner Propertieslossy | Fully supported | |
| Holdings (S_FN_HLDNG) | account.move.line or custom financial fieldslossy | Fully supported | |
| Integrations (EAI, Adapters, SOAP/REST Connectors) | N/A1:1 | Fully supported | |
| Workflow Processes | N/A1:1 | Not 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 Siebel gotchas
Version gating for Siebel Cloud Manager OCI migration
S_PARTY base table requires parent-first migration sequencing
REST API 30 req/min rate limit throttles bulk extraction
Siebel Tools SRF compilation required after extension table changes
Literature files require separate file system export
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 Oracle Siebel environment across Siebel version (to flag pre-18.12 OCI upgrade requirement), data volume per S_PARTY-based table, custom extension table count, active Workflow Processes, integration endpoints, and Siebel File System literature file volume. We pair this with Odoo instance readiness assessment: plan tier (Standard excludes external API), active apps, existing partner data, and whether the deployment is Odoo Online, Odoo.sh, or on-premises. The discovery output is a written migration scope, an object inventory ranked by dependency, and a Siebel Workflow and Integration inventory requiring rebuild post-migration.
Odoo schema design and partner model split rule
We design the destination schema in Odoo. This includes creating the res.partner structure with company partners and child contact partners under parent_id, configuring the crm.lead pipeline with stages mapped from Siebel Opportunity stages, setting up sale.order for Quote and Order migration, enabling helpdesk.ticket for Case migration if Helpdesk is in scope, and defining custom fields for Siebel extension table columns. We design the parent-first partner split rule: all S_ORG_EXT rows migrate as type=company res.partner first, then S_CONTACT rows migrate as type=contact res.partner with parent_id set to the matching Organization partner. The Siebel S_PARTY.ROW_ID is preserved as x_siebel_party_id on each partner record.
Siebel data extraction in S_PARTY-first dependency order
We extract Siebel data in strict parent-first order. S_PARTY is the first extraction pass, providing the row ID map needed to resolve foreign keys in child tables. S_ORG_EXT follows (organization partners), then S_CONTACT (individual contacts with parent_id resolved to the organization map). Opportunity, Quote, Order, Case, and Activity extractions follow. Siebel's 30 req/min rate limit is managed via parallel session threads and field consolidation. Literature files are extracted from the Siebel File System using the path list from S_LIT. We run a full reconciliation count against the source before proceeding to Odoo load.
Data transformation and Odoo XML-RPC load
Extracted records are transformed to match Odoo's schema: Siebel addresses map to Odoo's street, city, state_id, country_id, zip fields; Siebel revenue amounts map to Odoo's currency-formatted fields; Siebel timestamps preserve as Odoo datetime fields. Siebel extension table columns map to Odoo custom fields created in step 2. The Odoo external API rate limit of 1 req/sec is respected by batching records via Model.create() with lists of up to 500 records per XML-RPC call. Accounts load first, Contacts second (with parent_id resolved), then Opportunities, Quotes, Orders, Cases, and Activities. Literature files are uploaded as base64-encoded binary data via ir.attachment create calls.
Validation and reconciliation
We run a reconciliation check in Odoo: partner count (companies and contacts), opportunity count by stage, order count, ticket count, activity message count, and attachment count. We spot-check 25-50 migrated records against the Siebel source to validate field-level accuracy, particularly the parent_id linkage on Contact partners and the stage mapping on Opportunities. Siebel extension table field values are validated in their mapped Odoo custom fields. Any unmapped or truncated fields are flagged for correction before production migration.
Production migration, cutover, and rebuild handoff
We freeze Siebel writes during cutover to prevent delta records from accumulating. A final delta migration captures any records created or modified during the migration window. We enable Odoo as the system of record and validate the production partner graph, opportunity pipeline, and order history in Odoo. We deliver the Siebel Workflow Process inventory, Siebel Integration endpoint inventory, Siebel custom extension table field mapping document, and Siebel Position-to-Odoo employee reconciliation plan to the customer's admin team. We provide a one-week hypercare window for reconciliation issues. We do not rebuild Siebel Workflows, Siebel EAI integrations, or Siebel Tools configurations inside the migration scope; these require Odoo admin configuration or an Odoo implementation partner engagement.
Platform deep dives
Oracle Siebel
Source
Strengths
Weaknesses
Odoo CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. All 8 core objects map 1:1 between Oracle Siebel and Odoo CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Oracle Siebel and Odoo CRM.
Object compatibility
All 8 core objects map 1:1 between Oracle Siebel 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 Siebel: 30 requests per minute per session (REST API).
Data volume sensitivity
Oracle Siebel 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 Oracle Siebel to Odoo CRM migration scoping. Not seeing yours? Book a call.
Walk through your Oracle Siebel 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 Siebel
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.