This card covers the technical migration path from Oracle E-Business Suite 12.2 (on-premise, all editions) to Oracle Fusion Cloud ERP (Release 24B/25A). It addresses the API surface changes, data migration methods, integration middleware options, and coexistence architecture during the transition period.
| System | Role | API Surface | Direction |
|---|---|---|---|
| Oracle E-Business Suite 12.2 | Source ERP (on-premise) | PL/SQL, SOAP/REST via ISG, Open Interface Tables | Outbound |
| Oracle Fusion Cloud ERP 25A | Target ERP (cloud) | REST API, SOAP, FBDI, ADFdi | Inbound |
| Oracle Integration Cloud (OIC) | Integration middleware | EBS Adapter, ERP Cloud Adapter | Orchestrator |
| Oracle Data Integrator (ODI) | ETL for bulk migration | Batch file processing | Orchestrator |
The fundamental API shift from EBS to Fusion Cloud is the elimination of direct database access. In EBS, integrations commonly used PL/SQL procedures, open interface tables, and concurrent programs. None of these are available in Fusion Cloud.
| API Surface | EBS Equivalent | Fusion Cloud Method | Best For | Max Records/Request | Real-time? | Bulk? |
|---|---|---|---|---|---|---|
| REST API | ISG REST Services | Native REST endpoints | Real-time CRUD, < 500 records | 500 per POST | Yes | No |
| SOAP Web Services | ISG SOAP Services | ERP Cloud SOAP services | Complex operations, metadata | Varies | Yes | No |
| FBDI | Open Interface Tables + Concurrent Programs | Excel/CSV templates uploaded to UCM | Bulk data loading, > 500 records | 100,000 per import | No | Yes |
| ADFdi | Spreadsheet-based entry | Excel add-in for direct data entry | Manual data entry corrections | N/A | Semi | No |
| BIP Reports | Concurrent Programs / XML Publisher | BI Publisher for extracts | Data extraction, reporting | N/A | No | Yes |
| ESS Jobs | Concurrent Manager | Enterprise Scheduler Service | Scheduled processing | N/A | No | Yes |
| Limit Type | Value | Applies To | Notes |
|---|---|---|---|
| Max records per REST POST | 500 | REST API | Use FBDI for higher volumes |
| Max FBDI ZIP file size | 250 MB | FBDI uploads | Individual files within ZIP can be up to 1 GB |
| Max concurrent FBDI imports | 5 | FBDI import jobs | Queue additional imports |
| Max FBDI records per import | 100,000 | Single FBDI batch | Split larger datasets |
| UCM file upload limit | 2 GB | WebCenter Content | For FBDI file staging |
| Limit Type | Value | Window | Notes |
|---|---|---|---|
| REST API calls | Fair-use throttling | Per pod | No hard daily cap; Oracle throttles based on pod load |
| ESS concurrent jobs | Pod-dependent (8-16) | Per pod | Shared across all scheduled processes |
| FBDI imports per day | No hard limit | Per pod | Constrained by ESS job slots |
| OIC message packs | License-dependent (5K-50K/month) | Monthly | Each integration flow execution consumes messages |
| Flow | EBS Method | Fusion Cloud Method | Notes |
|---|---|---|---|
| Server-to-server | ISG username/password | OAuth 2.0 JWT Bearer via IDCS | Recommended for all integrations |
| User-context | SSO (Oracle Access Manager) | SAML 2.0 / IDCS Federation | For UI-based access |
| OIC Adapter | EBS ISG + Connectivity Agent | ERP Cloud Adapter (native) | Agent required for on-premise EBS |
| Basic Auth | Supported in ISG | Supported but deprecated | Use OAuth 2.0 instead |
START — Migrating from Oracle EBS to Fusion Cloud
├── What needs to migrate?
│ ├── Master Data (customers, suppliers, items, COA)
│ │ ├── Volume < 100K → FBDI (single batch per entity)
│ │ ├── Volume > 100K → FBDI with chunking (split into 100K batches)
│ │ └── Ongoing sync needed? → OIC with EBS Adapter (event-driven or scheduled)
│ ├── Open Transactions (POs, invoices, journals)
│ │ ├── Convert in-flight? → Complete in EBS first, migrate as history
│ │ └── Historical data? → FBDI for balances, BIP extract for detail
│ ├── Integrations (with external systems)
│ │ ├── EBS PL/SQL interface → Redesign to Fusion REST API + OIC
│ │ ├── EBS Open Interface Tables → Redesign to FBDI or REST API
│ │ ├── Concurrent Programs → Redesign to ESS Jobs or BIP reports
│ │ └── Custom Forms → Redesign to VBCS pages or REST API
│ └── Custom Reports → Redesign to OTBI, BIP, or FDI
├── Coexistence needed?
│ ├── YES → See oracle-erp-cloud-coexistence-patterns/2026
│ └── NO → Big-bang cutover with parallel run
└── Timeline?
├── < 12 months → Focus on core modules, defer customizations
├── 12-24 months → Standard phased approach
└── > 24 months → Module-by-module coexistence
| EBS Component | Fusion Cloud Replacement | Migration Effort | Notes |
|---|---|---|---|
| PL/SQL API (direct DB) | REST API | High | Complete rewrite required |
| Open Interface Tables | FBDI templates | Medium | Map columns to FBDI format |
| Concurrent Programs | ESS Scheduled Processes | Medium | Rewrite in ESS or BIP |
| Oracle Forms | VBCS Pages | High | UI redesign from scratch |
| Oracle Reports | BIP Reports / OTBI | Medium | Template redesign |
| Discoverer Reports | OTBI / FDI Analytics | Medium | Query logic redesign |
| Workflow (AME/WF) | BPM / Approval Rules | Medium | Approval chain redesign |
| XML Gateway (EDI) | B2B Integration / OIC | Medium | EDI partner remapping |
| ISG SOAP Services | Fusion REST API | Medium | Protocol + payload change |
| DFFs/KFFs | Extensible Flexfields | High | Structure may differ |
| Custom Tables | Extension tables or REST APIs | High | No custom schema in Fusion |
Document all active integrations, customizations, and data volumes. [src5]
-- Query active ISG integrations
SELECT service_name, service_type, direction, status
FROM fnd_soa_services
WHERE status = 'DEPLOYED'
ORDER BY service_type;
Verify: Every integration has a Fusion Cloud replacement method assigned in inventory spreadsheet.
Create dedicated integration user with appropriate data roles, set up IDCS OAuth application. [src1]
curl -X POST "https://<idcs-url>/oauth2/v1/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&scope=urn:opc:resource:consumer::all" \
-u "<client_id>:<client_secret>"
Verify: GET /fscmRestApi/resources/latest/ledgers returns your chart of accounts.
Extract from EBS, transform to FBDI format, upload to UCM, trigger import. [src2]
import requests, base64
FUSION_URL = "https://<pod>.fa.us2.oraclecloud.com"
# Upload FBDI ZIP then trigger importBulkData
resp = requests.post(
f"{FUSION_URL}/fscmRestApi/resources/latest/erpintegrations",
json={"OperationName": "importBulkData", "DocumentId": doc_id,
"JobName": "/oracle/apps/ess/.../SupplierImportJob"},
headers=headers)
Verify: ESS job status shows SUCCEEDED.
Configure OIC with EBS Adapter (on-premise via connectivity agent) and ERP Cloud Adapter for bidirectional data flow. [src4]
Verify: Test end-to-end flow with a single record — verify record appears in both systems.
# Input: EBS supplier extract (CSV)
# Output: FBDI-formatted ZIP ready for Fusion import
import csv, zipfile, io
def transform_ebs_to_fbdi(ebs_csv_path, fbdi_output_path):
COLUMN_MAP = {
"VENDOR_NAME": "Supplier",
"VENDOR_TYPE_LOOKUP_CODE": "SupplierType",
"SEGMENT1": "SupplierNumber",
}
rows = []
with open(ebs_csv_path, "r") as f:
for row in csv.DictReader(f):
rows.append({v: row.get(k, "") for k, v in COLUMN_MAP.items()})
buf = io.StringIO()
writer = csv.DictWriter(buf, fieldnames=list(COLUMN_MAP.values()))
writer.writeheader()
writer.writerows(rows)
with zipfile.ZipFile(fbdi_output_path, "w", zipfile.ZIP_DEFLATED) as zf:
zf.writestr("PozsupplierInt.csv", buf.getvalue())
print(f"Created FBDI ZIP with {len(rows)} suppliers")
# Get OAuth token and test API
TOKEN=$(curl -s -X POST "https://<idcs-url>/oauth2/v1/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&scope=urn:opc:resource:consumer::all" \
-u "<client_id>:<client_secret>" | jq -r '.access_token')
curl -s "https://<pod>.fa.us2.oraclecloud.com/fscmRestApi/resources/latest/businessUnits" \
-H "Authorization: Bearer $TOKEN" | jq '.items[].BusinessUnitName'
| EBS Field | Fusion Cloud Field | Type | Transform | Gotcha |
|---|---|---|---|---|
| AP_SUPPLIERS.VENDOR_NAME | Supplier.SupplierName | String | Direct | Max 360 chars in Fusion (was 240 in EBS) |
| AP_SUPPLIERS.SEGMENT1 | Supplier.SupplierNumber | String | Direct | Must be unique; auto-generation available |
| AP_SUPPLIERS.VENDOR_TYPE_LOOKUP_CODE | Supplier.SupplierType | String | Lookup remap | EBS values may not match Fusion seed data |
| AP_SUPPLIER_SITES_ALL.VENDOR_SITE_CODE | SupplierAddress.AddressName | String | Direct | One-to-many relationship differs |
| PO_VENDOR_CONTACTS.FIRST_NAME | SupplierContact.FirstName | String | Direct | Contact model restructured |
| Code | Meaning | Cause | Resolution |
|---|---|---|---|
| JBO-25013 | Too many objects locked | Concurrent updates to same record | Serialize updates; retry with backoff |
| FND-0 | Import job failed | FBDI data validation error | Check ESS job output for row-level errors |
| 403 | Insufficient privileges | Integration user missing data role | Add required Fusion data role |
| 401 | Token expired/invalid | OAuth token lifetime exceeded | Refresh token; typical lifetime 3600s |
| ADFBC-BC4059 | Duplicate key violation | Record already exists | Implement upsert logic |
Always check ESS output file for row-level errors. [src2]Deploy agent in HA mode with 2+ instances. [src4]Convert all data to UTF-8 before FBDI generation. [src5]Reset Fusion sequences to start after max EBS value + buffer. [src5]# BAD — REST API limited to 500 records per POST
for supplier in all_suppliers: # 50,000 suppliers
requests.post(f"{FUSION_URL}/.../suppliers", json=supplier, headers=headers)
# Takes hours with 50,000 individual API calls
# GOOD — FBDI handles up to 100,000 records per batch
create_fbdi_zip(all_suppliers, "SupplierImport.zip") # Single file
upload_and_import(zip_path="SupplierImport.zip") # Minutes not hours
-- BAD — No direct database access in Fusion Cloud
BEGIN
INSERT INTO po_headers_interface (...) VALUES (...);
COMMIT;
END;
-- This does NOT work in Fusion Cloud
# GOOD — Use REST API for PO creation
requests.post(f"{FUSION_URL}/.../purchaseOrders",
json=po_payload, headers=headers)
Catalog every integration point; estimate 2-4 weeks per complex integration. [src1]Download fresh templates from the target environment before each run. [src2]Test with production-scale data in non-production pod. [src2]Map EBS responsibilities to Fusion roles early. [src5]# Check Fusion Cloud REST API availability
curl -s -o /dev/null -w "%{http_code}" \
"https://<pod>.fa.us2.oraclecloud.com/fscmRestApi/resources/latest/" \
-H "Authorization: Bearer $TOKEN"
# Expected: 200
# Check FBDI import job status
curl -s "https://<pod>.fa.us2.oraclecloud.com/fscmRestApi/resources/latest/erpintegrations?finder=ESSJobStatusRF;requestId=<REQ_ID>" \
-H "Authorization: Bearer $TOKEN" | jq '.items[0].RequestStatus'
# Verify OIC Agent connectivity
curl -s "https://<oic-url>/ic/api/integration/v1/monitoring/agents" \
-H "Authorization: Bearer $OIC_TOKEN" | jq '.items[].status'
# Expected: "CONNECTED"
| Fusion Release | Date | Breaking Changes | Impact on EBS Migration |
|---|---|---|---|
| 25A | 2025-02 | New REST endpoints for Financials | Update integration endpoints |
| 24D | 2024-11 | FBDI template changes for Procurement | Re-download FBDI templates |
| 24C | 2024-08 | OAuth 2.0 enforcement | Migrate from basic auth |
| 24B | 2024-05 | New validation rules for supplier import | Update data cleansing rules |
| Use When | Don't Use When | Use Instead |
|---|---|---|
| Migrating from EBS 12.2 to Fusion Cloud ERP | Already on Fusion Cloud, need coexistence only | oracle-erp-cloud-coexistence-patterns/2026 |
| Planning integration redesign for EBS → Fusion | Need Oracle Retail Suite upgrade | oracle-retail-suite-upgrade-planning/2026 |
| Evaluating migration approaches | Need third-party ERP migration (SAP → Fusion) | Vendor-specific migration guides |