CRM migration
Field-level mapping, validation, and rollback between Oracle EBS CRM and Twenty CRM. We move data and schema; workflows are rebuilt natively in Twenty CRM.
Oracle EBS CRM
Source
Twenty CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Oracle EBS CRM and Twenty CRM.
Complexity
BStandard
Timeline
6-10 weeks
Overview
Moving from Oracle EBS CRM to Twenty CRM is a migration from a monolithic on-premise ERP-CRM suite to a modern open-source CRM with a clean PostgreSQL-backed architecture. Oracle EBS CRM has no REST API for CRM data — all extraction requires direct database queries against the tightly coupled APPS schema where CRM, ERP, and HR data coexist in a single Oracle instance. We connect with read-only database credentials scoped to the CRM schemas, enumerate the correct base tables at discovery, and sequence the migration parent-before-child to preserve referential integrity. Accounts map to Twenty Companies, Contacts to Persons, and Opportunities to Opportunities with the original stage and owner preserved. Territory assignments, activities, and notes migrate with their relationship links intact. Oracle Workflows and Forecasts do not migrate as code — we document every active Workflow for manual rebuild in Twenty's automation tools. The result is a clean CRM layer in Twenty that represents your EBS data faithfully without dragging the ERP footprint along.
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 EBS CRM 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 EBS CRM
Account
Twenty CRM
Company
1:1Oracle EBS Accounts are stored in the ARHZTARZ base tables and exposed through the APPS schema. We query RA_CUSTOMERS and AR_CUSTOMER_ACCOUNTS for active account records, extracting account name, address, primary contact, and account type. The mapping resolves to Twenty Company records using the account name as the dedupe key. Multi-org EBS deployments require scoping the query to the relevant Operating Unit by filtering on ORG_ID in the AR tables. We preserve the original EBS account number as a custom field eb_legacy_account_number__c for audit and reconciliation.
Oracle EBS CRM
Contact
Twenty CRM
Person
1:1EBS Contacts reside in base HR or AR schemas depending on whether they are employees or external parties — typically HZ_PARTIES joined to HZ_CONTACT_POINTS. We extract name, email, phone, job title, and relationship to Account (the HZ_CUST_ACCOUNT_ROLES link table). The mapping preserves the link to the parent Company in Twenty via the Person-Company relationship. We flag any contact record that exists in EBS without a corresponding Account as a standalone Person in Twenty.
Oracle EBS CRM
Opportunity
Twenty CRM
Opportunity
1:1Opportunities in EBS are stored in the CZ (Collaborative Selling) or deprecated ASF schemas depending on the CRM module version. We identify the correct schema at discovery time by querying DBA_TABLES for CZ_ tables and extract stage, amount, close date, owner, and pipeline. Stage names map to Twenty Opportunity stage values and probability percentages. Owner resolution happens by email match against the FND_USER table extracted during user discovery.
Oracle EBS CRM
Territory
Twenty CRM
Workspace / Team
lossyTerritory definitions in EBS CRM are stored in AS_TERRITORIES with hierarchical org structures and per-OU assignment rules. Twenty does not have a native multi-org model — it uses workspaces and team-based access control. We map EBS territories to Twenty Workspaces, with the territory hierarchy flattened into workspace-child relationships. Each EBS territory assignment (which salesperson owns which account) becomes a team membership record in Twenty. The customer configures the workspace layout during migration scoping.
Oracle EBS CRM
Sales Activity / Task
Twenty CRM
Task
1:1Activities and tasks are stored across multiple EBS CRM schemas — the deprecated Teleservice tables or the modern Interaction Center tables — depending on which CRM module is installed. We identify the correct source table at discovery, extract subject, description, status, due date, owner, and the relationship to the parent Contact or Account. The original EBS activity timestamp becomes the ActivityDate in Twenty. Call disposition and duration map to custom task fields in Twenty.
Oracle EBS CRM
Note / History
Twenty CRM
Note
1:1Notes and audit history in EBS CRM are stored in generic note tables (FZ_NOTES or equivalent) or in the application-level audit trail. We extract them as text with timestamps and owner references. Each note is linked to the parent Person, Company, or Opportunity in Twenty via the Note's target relationship. We flag any note record that references a deleted or unmigrated parent as orphaned and include it in the reconciliation report.
Oracle EBS CRM
Attachment
Twenty CRM
Attachment
1:1Attachments in EBS CRM are stored as LOB data in the database (BFILE or CLOB columns) or on the file system depending on the attachment configuration. We extract attachments as BASE64-encoded blobs with the original filename and MIME type preserved, and attach them to the corresponding migrated record in Twenty. We flag any attachment that exceeds the target system's file size limits for customer resolution before import.
Oracle EBS CRM
User / Employee
Twenty CRM
User
1:1Users in EBS CRM are employees sourced from PER_ALL_ASSIGNMENTS_F in the HR schema with CRM-specific responsibilities assigned via FND_RESPONSIBILITIES. We extract the FND_USER and FND_RESPONSIBILITY tables to get the user mapping matrix. Owner resolution in Twenty uses the email address as the dedupe key. Users present in EBS with no email address go to a reconciliation queue. The customer provisions matching Twenty users before the migration phase begins.
Oracle EBS CRM
Custom Object
Twenty CRM
Custom Object
1:1Custom objects in EBS CRM are stored in user-defined tables within the base product schemas and often reference FK columns pointing to core tables like RA_CUSTOMERS or OE_HEADERS. We extract the DDL for each custom table, create the equivalent Twenty Custom Object schema (including custom field definitions, field types, and lookup relationships) before importing any data, and then import the custom records with their relationship references resolved to the migrated parent records in Twenty. Custom object naming follows the customer's established convention.
Oracle EBS CRM
Lead
Twenty CRM
Person / Opportunity
lossyOracle EBS CRM does not have a native standalone Lead object separate from Account and Contact. Pre-sales prospect data typically lives as incomplete Account or Contact records. We identify these during discovery by querying for records with no revenue, no closed date, and early-stage status. These records become Persons in Twenty with a lead_qualification_status__c custom field set to Pending. The customer defines the qualification criteria during scoping.
Oracle EBS CRM
Workflow
Twenty CRM
(no equivalent — documented for rebuild)
1:1Oracle Workflows (stored in WF_ tables and implemented via PL/SQL packages) encode routing, approval, and notification logic specific to EBS. These definitions cannot be exported as structured data and have no equivalent construct in Twenty CRM, which uses a different automation model. We document every active Workflow at discovery — capturing triggering event, routing conditions, and approver assignments — in a structured report delivered to the customer's admin for rebuild in Twenty's automation tools.
Oracle EBS CRM
Forecast
Twenty CRM
(no equivalent)
1:1Forecasting in EBS CRM is implemented through the Collaborative Selling module and stores forecast data in versioned CZ tables with tight coupling to Opportunity and Territory objects. There is no standard export mechanism. We do not migrate forecast data. We preserve the Opportunity records that feed the forecast so that Twenty's native pipeline and reporting capabilities can be used to rebuild the forecast view post-migration.
| Oracle EBS CRM | Twenty CRM | Compatibility | |
|---|---|---|---|
| Account | Company1:1 | Fully supported | |
| Contact | Person1:1 | Fully supported | |
| Opportunity | Opportunity1:1 | Fully supported | |
| Territory | Workspace / Teamlossy | Fully supported | |
| Sales Activity / Task | Task1:1 | Fully supported | |
| Note / History | Note1:1 | Fully supported | |
| Attachment | Attachment1:1 | Fully supported | |
| User / Employee | User1:1 | Fully supported | |
| Custom Object | Custom Object1:1 | Fully supported | |
| Lead | Person / Opportunitylossy | Fully supported | |
| Workflow | (no equivalent — documented for rebuild)1:1 | Fully supported | |
| Forecast | (no equivalent)1: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 EBS CRM gotchas
No native REST API for EBS CRM data extraction
APPS schema coupling spans CRM, ERP, and HR in one database
Premier Support for EBS 12.1 ended — Extended Support for 12.2 has a cost cliff
Oracle Workflow engine has no direct migration path to cloud CRM automation
Per-module licensing creates billing ambiguity at destination
Twenty CRM gotchas
Import order is enforced and critical
Export limited to 20,000 records and visible columns only
Soft-deleted records count toward uniqueness and trigger restores
API rate limits cap at 200 req/min on Organization tier
No native email sequences — follow-up cadences require external tools
Pair-specific challenges
Migration approach
Discovery and database access provisioning
We audit the source Oracle EBS environment by querying the APPS schema with read-only credentials to enumerate CRM tables, identify the correct Opportunity schema (CZ vs ASF), discover custom object tables and their FK relationships, and extract the FND_USER and FND_RESPONSIBILITY matrices for owner reconciliation. We also identify the Operating Units in scope and document the attachment storage configuration (database LOB vs file system). The customer provisions database access credentials and confirms the network path. The discovery output is a written schema map and migration scope document.
Data quality assessment and cleansing
We run discovery queries to identify data quality issues: duplicate Accounts, Contacts with missing email addresses, Opportunities with no owner, orphaned notes, and attachment records pointing to deleted parents. We deliver a data quality report with row counts per issue category and recommendations for cleansing before migration. Cleansing is the customer's responsibility; we can provide SQL scripts for common fixes if the customer's DBA approves running them against the production database. We do not cleanse data on the source system — all cleansing recommendations are for the customer's review and action.
Twenty destination setup and schema deployment
We configure the Twenty CRM destination environment. This includes creating the Workspaces that map to EBS Operating Units (or a single Workspace if single-org), defining custom fields on Company, Person, and Opportunity to carry EBS legacy identifiers (eb_legacy_account_number__c, eb_legacy_contact_id__c, etc.), and pre-creating any Custom Objects with their field definitions and lookup relationships. Twenty's Custom Object feature is available without tier restrictions, so schema design is scoped to the customer's actual needs. The Twenty instance can be self-hosted by the customer or provisioned on their chosen cloud infrastructure.
Sandbox migration and reconciliation
We run a full migration into a staging environment using production-like data volume. The customer reconciles record counts: Companies in, Persons in, Opportunities in, Activities in, Notes in. We spot-check 25-50 records against the EBS source and the customer signs off the mapping before production migration begins. Any mapping corrections, custom field additions, or workflow changes happen in staging. This step also validates that the Twenty instance's performance under load is acceptable for the customer's data volume.
Production migration in dependency order
We run production migration in the following order: User provisioning validation (email-matched against FND_USER), Companies (from EBS Accounts), Persons (from EBS Contacts with Company lookup resolved), Opportunities (with owner, stage, and amount preserved), Activities and Tasks (with parent relationship to Person or Company resolved), Notes, Attachments (BASE64 import), Custom Objects (last, with all lookup references resolved). Each phase emits a row-count reconciliation report before the next phase begins. We use batch processing with error logging to identify and flag any record-level failures without halting the migration.
Cutover, final validation, and Workflow handoff
We freeze EBS CRM writes during cutover, run a final delta migration of any records created or modified during the migration window, then enable Twenty as the system of record. We deliver the Workflow inventory document to the customer's admin team for rebuild in Twenty's automation tools. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's team. We do not rebuild Oracle Workflows as Twenty automations inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Oracle EBS CRM
Source
Strengths
Weaknesses
Twenty CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard CRM migration. 1 of 8 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Oracle EBS CRM and Twenty CRM.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
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 EBS CRM: Not applicable — direct database query, throttling depends on customer's DB server capacity and concurrent workload.
Data volume sensitivity
Oracle EBS CRM 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 EBS CRM to Twenty CRM migration scoping. Not seeing yours? Book a call.
Walk through your Oracle EBS CRM to Twenty 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 EBS CRM
Other ways to arrive at Twenty 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.