CRM migration

Migrate from Oracle Siebel to Twenty CRM

Field-level mapping, validation, and rollback between Oracle Siebel and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.

Oracle Siebel logo

Oracle Siebel

Source

Twenty CRM

Destination

Twenty CRM logo

Compatibility

75%

9 of 12

objects map 1:1 between Oracle Siebel and Twenty CRM.

Complexity

BStandard

Timeline

3-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from Oracle Siebel to Twenty CRM is a schema redesign, not a record copy. Siebel uses a deep party-based architecture where Contacts and Organizations both extend S_PARTY as a shared root table, with separate extension tables (S_CONTACT, S_ORG_EXT) storing the additional fields. Twenty CRM uses a flat object model with Contacts, Companies, and Opportunities as first-class records. We extract S_PARTY as the first migration pass, then import the extension tables in parent-first order to satisfy foreign-key integrity. Siebel's industry-specific tables (S_FN_HLDNG, telecom extensions, life sciences packs) map to Twenty custom objects that we create during schema design. Siebel's workflows, Siebel Tools configurations, and EAI adapters do not migrate because they are bound to the Siebel runtime; we deliver a written inventory of every workflow, sequence, and integration endpoint for the customer's admin to rebuild in Twenty. Quotes and Orders from Siebel have no direct Twenty equivalent and are handled as Opportunity attachments or custom objects scoped during discovery.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

Oracle Siebel logo

Oracle Siebel

What's pushing teams away

  • Performance complaints are widespread—users report slow page loads, laggy interactions, and server-side bottlenecks that consume significant time during daily workflows.
  • Siebel's browser and mobile support lags behind modern SaaS CRMs; reviewers note IE-only requirements and the absence of a compelling mobile solution for field teams.
  • High configuration and customization complexity creates a steep learning curve, requiring dedicated training programs before business users become productive.
  • Integration with non-Oracle systems is a known friction point; reviewers report that third-party system connectivity requires additional effort and error handling.
  • Oracle's product roadmap direction and naming/packaging changes create uncertainty about long-term support, pushing some customers toward Oracle Fusion CX or pure SaaS alternatives.

Choosing

Twenty CRM logo

Twenty CRM

What's pulling them in

  • Top open-source CRM on GitHub with 40.6K stars, giving teams full source code access and infrastructure ownership without per-feature licensing surprises.
  • Free self-hosting under AGPL-3.0 means unlimited users and custom objects for the cost of cloud infrastructure alone, typically $20–100/month.
  • Pricing page explicitly mocks competitors for charging add-on fees for API access, webhooks, and workflows — transparency that resonates with RevOps teams burned by Salesforce.
  • Unlimited custom objects and fields with no price impact, letting teams shape the data model to their business rather than forcing business into rigid schemas.
  • Modern TypeScript/React/PostgreSQL stack means developer-led teams can extend, self-host, or integrate without fighting legacy architecture.

Object mapping

How Oracle Siebel objects map to Twenty CRM

Each row shows how a Oracle Siebel object lands in Twenty 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

S_PARTY

maps to

Twenty CRM

Contact + Company (base records)

1:many
Fully supported

Siebel's S_PARTY is the shared root table for both Contacts and Organizations. Every S_CONTACT and S_ORG_EXT record holds a PARTY_ID foreign key referencing its parent S_PARTY ROW_ID. We extract S_PARTY as the first migration pass, split the rows by PARTY_TYPE_CD ('Person' vs 'Organization'), and create the corresponding Twenty Contact and Company records. The original S_PARTY ROW_ID is preserved as a cross-reference field siebel_party_id__c on both record types for audit and reconciliation.

Oracle Siebel

S_CONTACT

maps to

Twenty CRM

Contact (extension)

1:1
Fully supported

Siebel's S_CONTACT stores Contact-specific fields (job title, birth date, assistant details) that extend the S_PARTY Person row. We import S_CONTACT as a second pass after S_PARTY, using the PARTY_ID foreign key to link each extension row to the correct Twenty Contact. All standard contact fields (name components, email, phone, address) are mapped to Twenty's Contact fields. Custom S_CONTACT extension columns (S_CONTACT_X) map to Twenty Contact custom fields created during schema design.

Oracle Siebel

S_ORG_EXT

maps to

Twenty CRM

Company

1:1
Fully supported

Siebel's S_ORG_EXT stores Organization/Account fields that extend the S_PARTY Organization row. We import S_ORG_EXT in the second migration pass alongside S_CONTACT, after S_PARTY rows are committed. The primary S_PARTY ROW_ID becomes the siebel_party_id__c cross-reference. Siebel's multi-level Account hierarchy (parent-org-to-child-org) is mapped to Twenty's Company primary key lookup to self, which we flatten during import if the hierarchy depth exceeds Twenty's single-level parent-Company model.

Oracle Siebel

S_OPTY

maps to

Twenty CRM

Opportunity

1:1
Fully supported

Siebel Opportunities map directly to Twenty Opportunities. We extract the opportunity name, revenue amount, close date, stage (S_STAGE), probability, next step, and primary Contact and Organization links. Siebel's pipeline stage history is preserved as a JSON attachment or as timeline Activities against the Opportunity. The S_OPTY primary key is stored as siebel_opty_id__c for reconciliation.

Oracle Siebel

S_DOC_QUOTE

maps to

Twenty CRM

Opportunity (custom) or Attachment

lossy
Fully supported

Siebel's S_DOC_QUOTE and S_QUOTE_ITEM have no direct Twenty CRM equivalent. Twenty does not ship a native Quote object. During scoping, the customer selects one of three strategies: (1) migrate quotes as Opportunities with line items and a quote value field, (2) store quote PDFs as Twenty Attachments linked to the Opportunity, or (3) create a custom Quote custom object in Twenty matching the S_DOC_QUOTE schema. A Conemis case study of Siebel-to-Microsoft Dynamics migration (21 million records, 40 objects) documents that quote line items and quote-to-order relationships require careful HTML cleanup and conditional transformation rules.

Oracle Siebel

S_ORDER

maps to

Twenty CRM

Opportunity or Custom Object

lossy
Fully supported

Siebel Orders (S_ORDER, S_ORDER_ITEM) represent the fulfillment stage of the quote-to-cash cycle. If the customer selects the custom Quote object strategy, Orders are tracked as a status field on Quote. Otherwise, Orders migrate as Opportunities with a Closed Won stage and Order-type designation. The S_ORDER.SERVER_ID becomes siebel_order_id__c for cross-reference.

Oracle Siebel

S_SRV_REQ

maps to

Twenty CRM

Case

1:1
Fully supported

Siebel Service Requests (Cases) map to Twenty Cases. We extract the SR number, status, priority, resolution description, assigned Contact, and Organization link. Siebel's internal status workflow (New, Pending, In Progress, Resolved, Closed) maps to Twenty Case status values. Custom escalation fields in Siebel's industry packs (e.g., S_SRV_REQ_X) require corresponding custom fields in Twenty Cases before migration.

Oracle Siebel

S_EVT_ACT

maps to

Twenty CRM

Task + Event

1:1
Fully supported

Siebel Activities (S_EVT_ACT) represent the full engagement timeline: calls, emails, meetings, and tasks. We map them to Twenty Tasks by type (call, email, meeting), preserving the activity date, owner, description, and the parent Contact or Organization link. Siebel's activity type codes (EVT_MTG, EVT_CALL, EVT_TASK) map to Twenty's task type enumeration. Custom activity extension fields (S_EVT_ACTX) require corresponding custom fields in Twenty before import.

Oracle Siebel

S_ASSET

maps to

Twenty CRM

Opportunity or Custom Object

1:1
Fully supported

Siebel Assets (S_ASSET) represent installed products and financial holdings linked to an Account. For standard product asset tracking, we migrate S_ASSET to Twenty Opportunities with a custom asset-type designation. For financial services customers with S_FN_HLDNG records, we create a custom Holdings custom object in Twenty with fields for product, quantity, account, and portfolio. The customer defines the custom object name during scoping.

Oracle Siebel

S_LIT

maps to

Twenty CRM

File reference + Attachment

1:1
Fully supported

Siebel Literature (S_LIT) stores document metadata and a file system path to the binary. The database export contains only S_LIT metadata (name, type, URL). We extract the file path list, package the corresponding files from the Siebel File System, and deliver them alongside the database export for re-upload as Twenty Attachments or external file references. Literature does not migrate as code or as embedded binary content.

Oracle Siebel

S_POSTN

maps to

Twenty CRM

Workspace Member reference

1:1
Fully supported

Siebel Positions (S_POSTN) represent organizational job roles and drive record-level visibility through the Position-Employee assignment model. Twenty CRM does not have a Position or Organization hierarchy object. We extract Position records as reference data and document the Position-Employee assignments as a CSV for the customer's admin to re-establish in Twenty's workspace member management. S_POSTN does not map to a live Twenty object.

Oracle Siebel

S_<entity>_X (Extension tables)

maps to

Twenty CRM

Custom Object

1:1
Fully supported

Siebel extension tables (tables prefixed S_ with TYPE='EXTENSION') hold custom fields for industry-specific data models (telecom, financial services, life sciences). We migrate each extension table as a Twenty Custom Object. Schema creation happens in Twenty's admin UI before data import. We map foreign keys to parent S_PARTY, S_CONTACT, or S_ORG_EXT rows, and preserve the original Siebel extension table name in the custom object name. Any S_EVT_ACTX custom activity extension fields require corresponding custom fields on Twenty Tasks before activity migration.

Gotchas + challenges

What specifically takes care here

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 logo

Oracle Siebel gotchas

High

Version gating for Siebel Cloud Manager OCI migration

High

S_PARTY base table requires parent-first migration sequencing

Medium

REST API 30 req/min rate limit throttles bulk extraction

Medium

Siebel Tools SRF compilation required after extension table changes

Low

Literature files require separate file system export

Twenty CRM logo

Twenty CRM gotchas

High

Import order is enforced and critical

High

Export limited to 20,000 records and visible columns only

Medium

Soft-deleted records count toward uniqueness and trigger restores

Medium

API rate limits cap at 200 req/min on Organization tier

Low

No native email sequences — follow-up cadences require external tools

Pair-specific challenges

  • Siebel's party-based schema requires parent-first sequencing

    Siebel's S_PARTY base table is the shared root for both S_CONTACT and S_ORG_EXT. A foreign key constraint on both extension tables references S_PARTY.ROW_ID. If we import S_CONTACT or S_ORG_EXT records before their parent S_PARTY rows exist in Twenty, the Contact-Company link breaks and the records become orphaned. We sequence S_PARTY as the first migration pass, validate the row count after commit, then import extension tables in a second pass. For organizations with complex multi-level Account hierarchies (S_ORG_EXT with PARENT_O_ID references), we flatten the hierarchy during transform because Twenty supports only a single level of parent-Company lookup.

  • Twenty lacks a native Quote or Order object

    Siebel's S_DOC_QUOTE and S_ORDER are first-class objects in the quote-to-cash workflow. Twenty CRM does not ship a Quote or Order object. We handle this during scoping by asking the customer to choose between migrating quotes as Opportunity attachments (PDFs), creating a custom Quote custom object in Twenty, or absorbing quote data into Opportunity line items. A published case study of Siebel-to-Microsoft Dynamics migration (Conemis, 21 million records) notes that quote-to-order linkages and HTML line-break formatting in quote fields require explicit transformation rules to avoid data corruption at the destination.

  • Siebel's Position-based visibility has no Twenty equivalent

    Siebel enforces record visibility through Position and Organization hierarchy assignments (S_POSTN, S_EMPLOYEE, S_PARTY_PER). This is a fine-grained, multi-dimensional access control model. Twenty CRM uses a workspace-based permission model where workspace members and permission groups control access. We extract the current Position-Employee assignments as a reference CSV and document the mapping strategy for the customer's admin to re-establish in Twenty's workspace settings. Access-control rules are not migrated as enforceable constraints.

  • Industry-specific Siebel tables need custom objects in Twenty

    Siebel's vertical packs (financial services, telecom, life sciences) include domain-specific tables like S_FN_HLDNG (financial holdings), S_ASSET_MULT (telecom assets), or S_LS_ENRL (life sciences enrollments). Twenty CRM ships as a general-purpose CRM without these industry objects. We create a custom object in Twenty for each industry table found in the source schema, mapping foreign keys to parent records and preserving the Siebel table name in the custom object description. The customer defines the custom object API name during scoping.

  • Siebel Tools custom fields require schema design before migration

    Custom fields added via Siebel Tools live in the Siebel repository and require SRF compilation to appear at runtime. In Twenty, custom fields are created directly in the admin UI without a compile step. However, the set of Siebel custom fields must be inventoried during discovery before Twenty schema design begins. Any custom fields not identified during scoping will not have a destination in Twenty and will be silently omitted from migration unless caught during reconciliation.

Migration approach

Six steps for a successful Oracle Siebel to Twenty CRM data migration

  1. Discovery and scoping

    We audit the source Siebel environment: version, deployment type (on-prem or OCI via Siebel Cloud Manager), active S_ tables, custom extension tables, pipeline and stage definitions, and engagement volume estimates. We extract the Siebel repository schema to identify every S_PARTY subclass, extension table, and custom column. We also inventory active Siebel Workflow Processes, EAI integration endpoints, and Literature file volumes. The discovery output is a written migration scope document with the object inventory, quote handling strategy selection, and a custom object name list for any industry-pack tables found.

  2. Twenty schema design and custom object creation

    We create the destination schema in Twenty's admin UI. This includes creating custom objects for each Siebel extension table (S_<entity>_X), custom fields for any Siebel custom columns that lack a direct Twenty equivalent, and the Quote custom object if the customer selected that strategy. We create the Quote custom object with fields for quote number, date, amount, status, related Contact, and related Company. Custom objects are deployed into Twenty before any data migration begins. Workspace members are provisioned and the migration user is granted appropriate write permissions.

  3. S_PARTY extraction and parent-first sequencing

    We extract S_PARTY as the first database pass, splitting rows by PARTY_TYPE_CD into Person and Organization sets. Person rows become Twenty Contacts; Organization rows become Twenty Companies. The original S_PARTY.ROW_ID is stored as siebel_party_id__c on each record. We validate the row count after commit and confirm the party record count matches the source before proceeding to the extension table import passes.

  4. Extension table import and Contact-Company linking

    We import S_CONTACT extension rows, resolving each PARTY_ID to the corresponding Twenty Contact by siebel_party_id__c. We import S_ORG_EXT rows, resolving each PARTY_ID to the corresponding Twenty Company. For organizations with multi-level Account hierarchies in S_ORG_EXT (PARENT_O_ID references), we flatten the hierarchy during transform and map each child Account to its parent Company via the Twenty parent Company lookup. This step emits a foreign-key reconciliation report showing zero orphaned extension rows.

  5. Opportunity, Case, Activity, and Asset migration

    We import Opportunities (S_OPTY) with AccountId and ContactId resolved via the cross-reference fields. Quotes and Orders migrate per the customer's selected strategy. Cases (S_SRV_REQ) migrate with Contact and Company links resolved. Activities (S_EVT_ACT) migrate as Tasks and Events with parent Contact or Company lookups resolved. Assets (S_ASSET) migrate to the designated Twenty object (Opportunity or custom). Literature files are packaged from the Siebel File System and delivered as a separate file package for re-upload. Each object class emits a row-count reconciliation report.

  6. Cutover, validation, and handoff

    We freeze Siebel writes during the cutover window, run a final delta migration for any records modified during the migration period, then mark Twenty as the system of record. We validate 25-50 randomly sampled records against the source data and deliver the full reconciliation report. We provide the Workflow and Sequence inventory document (Siebel Workflow Processes are not migrated as code), the Position-Employee assignment CSV, and the EAI integration endpoint map for the customer's admin to rebuild in Twenty or via a third-party integration layer. We support a one-week post-cutover window for reconciliation issues raised by the customer's team.

Platform deep dives

Context on both ends of the pair

Oracle Siebel logo

Oracle Siebel

Source

Strengths

  • Deep party-based data model supporting complex multi-entity hierarchies for Accounts, Contacts, and Organizations.
  • Industry-specific vertical templates for telecom, financial services, life sciences, and public sector with pre-built data structures.
  • Granular position-based access control enabling fine-grained territory and role-based record visibility.
  • Comprehensive quote-to-order-to-invoice workflow support with Quote, Order, Order Item, and Document objects.
  • Mature Siebel Migration toolchain with package-based export/import for environment-to-environment moves.

Weaknesses

  • Outdated UI paradigms and browser requirements (IE historically required) that create friction for modern users.
  • Slow server-side performance and page load times reported consistently across user reviews.
  • High configuration complexity requiring specialized Siebel Tools knowledge and dedicated training investment.
  • Limited native integration with non-Oracle third-party systems, creating data silos.
  • REST API rate limited to 30 requests per minute, constraining bulk data extraction performance.
Twenty CRM logo

Twenty CRM

Destination

Strengths

  • AGPL-3.0 open-source license with full source code on GitHub — no vendor lock-in, no sunset risk.
  • Unlimited users and unlimited custom objects on self-hosted, with no feature gating based on headcount.
  • REST and GraphQL APIs available on all paid tiers, not locked behind an enterprise add-on fee.
  • MCP server and webhooks shipped as standard features, not premium upgrades.
  • Modern PostgreSQL-backed data model that developer teams can query, extend, and self-host.

Weaknesses

  • Recent v1.0 release means limited production hardening compared to CRMs with multi-year operational track records.
  • No native email sequencing or sales engagement tools — follow-up cadences require a separate platform.
  • No native two-way email sync or inbox integration, requiring third-party connectors for full activity logging.
  • Self-hosting 'free' pricing hides real infrastructure and DevOps costs that stack up over time.
  • Workflow automation is functional but lacks the complexity needed for sophisticated multi-step sales motions.

Complexity grading

How hard is this migration?

Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.

B

Overall complexity

Standard migration

Derived from compatibility, mapping clarity, API constraints, and data volume across Oracle Siebel and Twenty CRM.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    C

    Field mapping is derived from defaults — final spec confirmed during the sample migration.

  • Timeline complexity

    B

    8-object category — typical timelines run 2–7 days end-to-end.

  • API constraints

    B

    Oracle Siebel: 30 requests per minute per session (REST API).

  • Data volume sensitivity

    B

    Oracle Siebel doesn't expose a bulk API — REST + parallelization used for high-volume runs.

Estimator

Estimate your Oracle Siebel to Twenty CRM migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about Oracle Siebel to Twenty CRM data migrations

Answers to the questions buyers ask most during Oracle Siebel to Twenty CRM migration scoping. Not seeing yours? Book a call.

Can't find your answer?

Walk through your Oracle Siebel to Twenty CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.

Book a free 30 minute consultation

Most migrations land between three and six weeks for environments under 20,000 Contacts and no custom S_ extension tables. Complex enterprise migrations with custom extension tables (S_<entity>_X), multi-level Account hierarchies, large activity histories (over 200,000 engagement records), or financial services industry-pack data (S_FN_HLDNG, S_FN_ACCT) move to ten to sixteen weeks because of custom object schema design, parent-first sequencing, and per-table transformation work. Discovery and scoping add one to two weeks regardless of migration complexity.

Adjacent paths

Related migrations to explore

Ready when you are

Move from Oracle Siebel.
Land in Twenty CRM, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day