Oracle EBS and Fusion Cloud Coexistence Patterns
Type: ERP Integration
System: Oracle EBS (12.2) + Fusion Cloud ERP (25A)
Confidence: 0.82
Sources: 6
Verified: 2026-03-09
Freshness: 2026-03-09
TL;DR
- Bottom line: Running EBS and Fusion Cloud simultaneously requires Oracle Integration Cloud (OIC) as the middleware layer, with clear source-of-truth designations per data entity and bidirectional sync flows for shared master data.
- Key limit: OIC Connectivity Agent is mandatory for on-premise EBS; OIC message pack consumption roughly doubles during coexistence due to bidirectional flows.
- Watch out for: ID conflicts when both systems generate document numbers independently — implement non-overlapping number ranges or cross-reference mapping tables.
- Best for: Organizations migrating module-by-module from EBS to Fusion Cloud over 6-24 months needing seamless cross-system operations.
- Authentication: OIC handles credential management — EBS via ISG username/password through Connectivity Agent, Fusion via OAuth 2.0 JWT bearer.
System Profile
This card covers the technical architecture and integration patterns for running Oracle E-Business Suite 12.2 and Oracle Fusion Cloud ERP simultaneously during a phased migration. It addresses data synchronization, master data governance, cross-system transaction flow, and reporting consolidation.
| System | Role | API Surface | Direction |
| Oracle E-Business Suite 12.2 | Legacy ERP (modules being retired) | PL/SQL, ISG SOAP/REST, Business Events | Bidirectional |
| Oracle Fusion Cloud ERP 25A | Target ERP (modules going live) | REST API, SOAP, FBDI, Business Events | Bidirectional |
| Oracle Integration Cloud Gen 3 | Integration hub | EBS Adapter, ERP Cloud Adapter | Orchestrator |
| Unified Data Warehouse | Consolidated reporting | BIP, OTBI, ODI | Inbound from both |
API Surfaces & Capabilities
| Integration Pattern | OIC Component | Direction | Latency | Volume | Use When |
| Event-driven sync | EBS Adapter (Business Events) | EBS → Fusion | Seconds | Low-medium | Master data changes trigger updates |
| Scheduled poll | OIC Scheduler + EBS Adapter | EBS → Fusion | Minutes | Medium-high | Batch sync at intervals |
| REST-to-REST | ERP Cloud Adapter → EBS ISG | Fusion → EBS | Seconds | Low | Fusion events needing EBS processing |
| FBDI bulk load | OIC File Adapter + ERP REST | EBS → Fusion | Hours | High | Initial loads and reconciliation |
| Business Events | ERP Cloud Adapter | Fusion → EBS | Seconds | Low-medium | Fusion events triggering EBS processing |
Rate Limits & Quotas
Per-Request Limits
| Limit Type | Value | System | Notes |
| EBS ISG concurrent sessions | 50 (default) | EBS | Configurable |
| Fusion REST POST max records | 500 | Fusion Cloud | Use FBDI for higher volumes |
| OIC flow timeout (sync) | 300 seconds | OIC | Use async for long operations |
| OIC Agent connections | 10 concurrent | OIC Agent | Per instance; deploy multiple for HA |
| FBDI concurrent imports | 5 | Fusion Cloud | Coordinate scheduling |
Rolling / Daily Limits
| Limit Type | Value | Window | Notes |
| OIC message packs | 5K-50K/month | Monthly | Bidirectional coexistence doubles consumption |
| EBS ISG daily API calls | No hard limit | N/A | Constrained by server capacity |
| Fusion Cloud REST API | Fair-use throttling | Per pod | Shared across all integrations |
Authentication
| Flow | System | Method | Managed By | Notes |
| EBS inbound | EBS (ISG) | Username/password | OIC Connection | Stored in OIC secure vault |
| EBS outbound | EBS → OIC | Business Event subscription | OIC EBS Adapter | Agent-based |
| Fusion inbound | Fusion Cloud | OAuth 2.0 JWT Bearer | OIC ERP Cloud Adapter | Automatic token management |
| Fusion outbound | Fusion → OIC | Business Event subscription | OIC ERP Cloud Adapter | Native cloud adapter |
Authentication Gotchas
- EBS ISG services must be deployed and granted before OIC can discover them [src4]
- OIC Connectivity Agent credentials expire — monitor heartbeat failures [src1]
- If EBS uses OAM SSO, integration user must bypass OAM for API access [src4]
Constraints
- Every shared data entity must have exactly one designated source-of-truth system
- Cross-system document numbering requires non-overlapping ranges or mapping tables
- GL period close must be synchronized across both systems
- Fusion quarterly updates are mandatory — coexistence flows must be regression-tested quarterly
- OIC message consumption approximately doubles during coexistence
- Reporting requires unified data warehouse or FDI with ODI feeds from EBS
Integration Pattern Decision Tree
START — Running EBS and Fusion Cloud in coexistence
├── Which modules are in each system?
│ ├── Financials in Fusion, Procurement in EBS
│ │ ├── AP Invoices → EBS → OIC → Fusion GL
│ │ └── Supplier master → EBS is source of truth
│ ├── Procurement in Fusion, Financials in EBS
│ │ ├── PO/Invoice → Fusion → OIC → EBS GL
│ │ └── Supplier master → Fusion is source of truth
│ └── HCM in Fusion, ERP in EBS
│ ├── Employee → Fusion HCM → OIC → EBS HR
│ └── Payroll → Fusion → OIC → EBS GL
├── What data needs to sync?
│ ├── Master data → Designate source of truth + OIC flow
│ ├── Transactional data → One-way from source module
│ └── Reference data → Sync before go-live; event-driven after
├── Sync frequency?
│ ├── Real-time (< 30s) → OIC event-driven
│ ├── Near-real-time (1-15 min) → OIC scheduled poll
│ └── Batch (hourly/daily) → OIC scheduled + FBDI
└── Conflict resolution?
├── Source-of-truth wins
├── Last-write-wins (timestamp)
└── Manual review queue
Quick Reference
Coexistence Integration Flows by Module Split
| Module Split | Key Data Flows | Sync Pattern | Source of Truth | Critical Timing |
| Financials in Fusion, Procurement in EBS | AP invoices → GL journals | Batch (hourly) | EBS for suppliers, Fusion for GL | Before period close |
| Procurement in Fusion, Financials in EBS | PO → Invoice → GL | Event-driven + batch | Fusion for suppliers, EBS for GL | Before payment run |
| SCM in EBS, Financials in Fusion | Inventory transactions → GL | Batch (daily) | EBS for items, Fusion for GL | Before inventory close |
| HCM in Fusion, Payroll in EBS | Employee → Payroll → GL | Scheduled (daily) | Fusion for employees | Before payroll run |
| Full parallel run | All master + transactional | Bidirectional real-time | Per entity | Continuous |
Step-by-Step Integration Guide
1. Deploy OIC Connectivity Agent
Install the agent on a VM with access to EBS and outbound HTTPS to OIC. [src1]
./oic_agent_installer.sh \
--agent-group-identifier=EBS_AGENT_GROUP \
--oic-url=https://<oic-instance>.integration.ocp.oraclecloud.com
Verify: Agent status shows CONNECTED in OIC Console.
2. Configure EBS ISG Services
Deploy and grant required services in ISG so OIC can discover and invoke them. [src4]
BEGIN
fnd_soa_util.grant_service(
p_service_id => '<service_id>',
p_grantee_type => 'USER',
p_grantee_key => 'OIC_INTEGRATION_USER'
);
END;
Verify: OIC EBS Adapter connection test succeeds.
3. Create OIC Integration Flow for Master Data Sync
Build a scheduled integration polling EBS for changed entities and syncing to Fusion. [src1]
Verify: Test record created in EBS appears in Fusion within sync interval.
4. Implement Cross-Reference ID Mapping
Create mapping table linking EBS and Fusion IDs for shared entities. [src5]
CREATE TABLE erp_xref (
xref_id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
entity_type VARCHAR2(50) NOT NULL,
ebs_id VARCHAR2(100) NOT NULL,
fusion_id VARCHAR2(100),
sync_status VARCHAR2(20) DEFAULT 'PENDING',
last_synced TIMESTAMP,
source_system VARCHAR2(10) NOT NULL,
CONSTRAINT uq_xref UNIQUE (entity_type, ebs_id)
);
Verify: SELECT COUNT(*) FROM erp_xref WHERE sync_status = 'SYNCED' shows records after first sync.
Code Examples
Python: Cross-System Supplier Sync
# Input: EBS supplier changes, Fusion REST endpoint
# Output: Synced supplier records with cross-reference mapping
def sync_suppliers(last_sync_time):
ebs_resp = requests.get(f"{EBS_URL}/suppliers",
params={"modifiedAfter": last_sync_time.isoformat()}, auth=EBS_AUTH)
for supplier in ebs_resp.json().get("items", []):
fusion_id = lookup_xref("SUPPLIER", supplier["VendorId"])
if fusion_id:
requests.patch(f"{FUSION_URL}/suppliers/{fusion_id}",
json=map_fields(supplier), headers=FUSION_HEADERS)
else:
resp = requests.post(f"{FUSION_URL}/suppliers",
json=map_fields(supplier), headers=FUSION_HEADERS)
save_xref("SUPPLIER", supplier["VendorId"], resp.json()["SupplierId"])
cURL: Test Cross-System Connectivity
# Test EBS ISG
curl -s -w "\nHTTP: %{http_code}\n" \
"http://<ebs-host>:<port>/webservices/rest/supplier/v1/suppliers?limit=1" \
-u "<user>:<password>"
# Test Fusion Cloud
curl -s -w "\nHTTP: %{http_code}\n" \
"https://<pod>.fa.us2.oraclecloud.com/fscmRestApi/resources/latest/suppliers?limit=1" \
-H "Authorization: Bearer $FUSION_TOKEN"
Data Mapping
Cross-System Entity Mapping
| Entity | EBS Table | Fusion REST Resource | Key Mapping | Conflict Resolution |
| Supplier | AP_SUPPLIERS | /suppliers | VENDOR_ID → SupplierId | Source-of-truth wins |
| Customer | HZ_PARTIES + HZ_CUST_ACCOUNTS | /accounts | CUST_ACCOUNT_ID → PartyId | Source-of-truth wins |
| Item | MTL_SYSTEM_ITEMS_B | /inventoryItems | INVENTORY_ITEM_ID → ItemId | EBS master during transition |
| GL Account | GL_CODE_COMBINATIONS | /ledgerAccounts | CODE_COMBINATION_ID → AccountId | Fusion master for GL |
| Employee | PER_ALL_PEOPLE_F | /workers (HCM) | PERSON_ID → PersonId | HCM source always |
Data Type Gotchas
- EBS VENDOR_ID is NUMBER; Fusion SupplierId is also NUMBER but in a different sequence — never assume ID equivalence [src5]
- EBS stores multi-org data with ORG_ID context; Fusion uses Business Unit — map ORG_ID to BU [src2]
- EBS dates use database timezone; Fusion REST returns UTC — convert explicitly [src3]
Error Handling & Failure Points
Common Error Codes
| Code | System | Meaning | Resolution |
| OIC-CONN-AGENT-001 | OIC | Agent unreachable | Restart agent; check firewall |
| 401 | Fusion | OAuth token expired | Check IDCS app is active |
| ISG-AUTH-FAIL | EBS | ISG auth failure | Reset integration user password |
| DUPLICATE_KEY | Fusion | Record exists | Check xref table; use upsert |
| JBO-25013 | Fusion | Row lock contention | Queue + serial processing |
Failure Points in Production
- OIC Agent VM restart loses in-flight messages: Fix:
Idempotent flows + checkpoint tracking; agent HA. [src1]
- GL period close timing mismatch: Fix:
Pre-close reconciliation job verifying all journals received. [src2]
- Cross-reference table drift: Fix:
Monthly reconciliation comparing xref against both systems. [src5]
- Fusion quarterly update breaks OIC flows: Fix:
Test all flows in Preview environment before each update. [src3]
Anti-Patterns
Wrong: Direct database replication without transformation
# BAD — Table structures are incompatible between EBS and Fusion
Oracle GoldenGate: EBS.AP_SUPPLIERS → Fusion.POZ_SUPPLIERS
# Data models are completely different
Correct: API-mediated synchronization through OIC
# GOOD — OIC handles field mapping, ID xref, error handling
EBS (ISG REST) → OIC (Transform) → Fusion (REST API)
Wrong: Overlapping document number sequences
# BAD — Both systems generate PO-2026-001
# Creates reconciliation nightmares
Correct: Non-overlapping number ranges
# GOOD — EBS: PO-E-000001, Fusion: PO-F-000001
# Clear system origin in every document number
Wrong: No source-of-truth designation
# BAD — Both systems accept updates independently
# Sync overwrites one change with the other
Correct: Single source of truth per entity
# GOOD — Suppliers mastered in EBS until Procurement migrates
# EBS: Full CRUD | Fusion: Read-only (synced from EBS)
Common Pitfalls
- Not planning for OIC message consumption: Bidirectional flows consume 2x message packs. Fix:
Batch transactions to reduce message count. [src6]
- Timezone differences in reconciliation: EBS and Fusion may report different timestamps for same transaction. Fix:
Normalize all timestamps to UTC. [src3]
- Parallel period close without coordination: Causes subledger-to-GL discrepancies. Fix:
Verify cross-system journals before closing periods. [src2]
- Single-point-of-failure OIC Agent: Any downtime stops all data flow. Fix:
Deploy 2+ agent instances in HA group. [src1]
Diagnostic Commands
# Check OIC Agent status
curl -s "https://<oic-url>/ic/api/integration/v1/monitoring/agents" \
-H "Authorization: Bearer $OIC_TOKEN" | jq '.items[] | {name, status}'
# Check failed OIC integration flows
curl -s "https://<oic-url>/ic/api/integration/v1/monitoring/instances?status=FAILED&limit=10" \
-H "Authorization: Bearer $OIC_TOKEN" | jq '.items[] | {flowName, status, startTime}'
# Check cross-reference table health
# SELECT entity_type, sync_status, COUNT(*) FROM erp_xref GROUP BY entity_type, sync_status;
Version History & Compatibility
| Component | Version | Status | Coexistence Impact |
| OIC Generation 3 | Current | GA | Recommended for new integrations |
| OIC EBS Adapter | 24.10 | Current | Supports EBS 12.2 ISG REST + SOAP + Events |
| OIC ERP Cloud Adapter | 24.10 | Current | Supports Fusion 25A REST + Events |
| EBS 12.2 ISG | RUP 12.2.12+ | Supported | Latest RUP recommended |
When to Use / When Not to Use
| Use When | Don't Use When | Use Instead |
| Running EBS and Fusion simultaneously during phased migration | Planning initial migration strategy | oracle-ebs-to-fusion-migration/2026 |
| Need real-time data sync between EBS and Fusion | One-time data migration only | FBDI bulk load |
| Module-by-module cutover spanning 6-24 months | Big-bang cutover | Standard migration guide |
Important Caveats
- Coexistence is inherently temporary — document everything for teardown
- OIC licensing costs during coexistence can be significant — budget for 2x message consumption
- Fusion quarterly updates are mandatory and may break coexistence flows
- Cross-system reconciliation is labor-intensive — budget dedicated resources
- The longer coexistence runs, the more complex and costly it becomes — set hard deadlines
Related Units