Oracle Integration Cloud (OIC) is Oracle's fully managed iPaaS (integration Platform as a Service), now in its third generation (Gen 3). It provides application integration, process automation, a visual builder, and an embedded file server. OIC Gen 3 is built on Oracle Cloud Infrastructure (OCI) and uses a microservices architecture with containerized services for independent scaling. Beginning with Gen 3, OIC has been split into two separate products: Oracle Integration 3 (handling integration configuration) and OCI Process Automation (handling workflow and decision modeling). [src1, src2]
This card covers both Standard and Enterprise editions. Standard Edition includes SaaS and technology adapters (REST, SOAP, FTP, database) but excludes on-premises adapters and process automation. Enterprise Edition adds on-premises connectivity via the connectivity agent, B2B features, process automation, and advanced capabilities. This card does NOT cover Oracle SOA Cloud Service or Oracle API Gateway (separate products).
| Property | Value |
|---|---|
| Vendor | Oracle |
| System | Oracle Integration Cloud (OIC) Gen 3 |
| API Surface | REST, SOAP, Adapters (80+), File Server, B2B |
| Current Version | 25.x (continuous release) |
| Editions Covered | Standard, Enterprise |
| Deployment | Cloud (OCI) |
| API Docs | Oracle Integration 3 Documentation |
| Status | GA (Gen 3 mandatory; Gen 2 end-of-support) |
OIC is not a single API — it is an integration platform that orchestrates flows between systems using adapters. The key "surfaces" are its adapter types and the integration patterns they support. [src1]
| Capability | Protocol | Best For | Concurrency | Edition | Real-time? | Bulk? |
|---|---|---|---|---|---|---|
| Application adapters (Oracle SaaS) | REST/SOAP | Oracle Fusion ERP, HCM, SCM, CX | Per message pack | Standard+ | Yes | Via scheduled |
| Technology adapters | REST/SOAP/FTP/JMS/Kafka | Database, file, messaging connectivity | Per message pack | Standard+ | Yes | Yes |
| On-premises adapters | Via connectivity agent | On-prem databases, EBS, JDE, PeopleSoft | Agent-limited | Enterprise only | Yes | Yes |
| B2B adapter | EDI/AS2 | Trading partner document exchange | Per message pack | Enterprise only | Yes | Yes |
| File Server | SFTP | Staged file processing, large payloads | Embedded | Standard+ | No | Yes |
| Process Automation | BPMN 2.0 | Human workflows, approvals, decisions | Separate product | Enterprise only | Yes | No |
| Visual Builder | REST/UI | Low-code application development | Separate metering | Enterprise only | Yes | No |
| RPA | UI automation | Systems without APIs | Robot-based | Enterprise only | No | No |
OIC billing is based on message packs, not API call counts. Understanding message sizing is critical to cost forecasting. [src3, src4]
| Limit Type | Value | Applies To | Notes |
|---|---|---|---|
| Messages per pack per hour (Cloud License) | 5,000 | Standard cloud license | Each 50KB in+out = 1 message |
| Messages per pack per hour (BYOL) | 20,000 | Bring Your Own License | Requires existing Oracle Fusion Middleware license |
| Messages per pack per month (SaaS) | 1,000,000 | Oracle Integration for SaaS | Monthly aggregate, not hourly |
| Max message packs (Cloud License) | 12 | Per instance | 12 x 5,000 = 60,000 msgs/hr max |
| Max message packs (BYOL) | 3 | Per instance | 3 x 20,000 = 60,000 msgs/hr max |
| Grace threshold | 1.3x | Hourly average over 24h | Exceeding 1.3x average triggers billing for additional pack |
| Message size unit | 50 KB | Per message | 270KB payload = 6 messages (rounded up) |
| Minimum charge | 1 message pack/hour | Always | Even with zero usage, 1 pack/hr minimum |
| Limit Type | Value | Applies To | Notes |
|---|---|---|---|
| Active integrations | 800 | Per instance | Raised from 700 in Gen 2 |
| Parallel branches | 5 | Per parallel action | New in Gen 3 |
| Connectivity agent instances | Multiple | Enterprise Edition | For on-premises connectivity |
| Scheduled integration min interval | 1 minute | Scheduled integrations | Frequency depends on pattern |
OIC Gen 3 uses OCI IAM (successor to IDCS) for identity management. Basic authentication for Oracle-provided REST APIs was removed in Gen 3. [src2]
| Flow | Use When | Token Lifetime | Refresh? | Notes |
|---|---|---|---|---|
| OAuth 2.0 Client Credentials | Server-to-server integration invocation | 3,600s (1 hour) | Yes | Recommended for automation |
| OAuth 2.0 Authorization Code | User-context operations, Visual Builder | Session-based | Yes | Requires callback URL |
| OAuth 2.0 Resource Owner | Legacy migration only | Session-based | No | Not recommended for new development |
| OCI IAM API Key | OCI API calls (instance management) | Per-request signature | N/A | For managing OIC instances |
| Connectivity Agent Token | Agent-to-OIC communication | 3,600s auto-renewed | Yes (automatic) | Do not modify default expiry |
urn:opc:resource:consumer::all is required to trigger integrations via OAuth — missing this scope is the most common auth configuration error.START — User needs to integrate systems using Oracle Integration Cloud (OIC)
|-- What edition do you have?
| |-- Standard Edition
| | |-- All systems are cloud-based (SaaS)?
| | | |-- YES -> Proceed with adapter selection
| | | +-- NO (on-premises) -> STOP: upgrade to Enterprise Edition
| |-- Enterprise Edition -> Proceed
|
|-- What's the integration pattern?
| |-- Real-time (event-triggered, <1s response)
| | |-- Oracle SaaS to Oracle SaaS?
| | | |-- YES -> App-Driven Orchestration with Oracle SaaS adapter
| | | +-- NO -> App-Driven Orchestration with REST/SOAP trigger
| | +-- Need human approval step?
| | |-- YES -> OCI Process Automation (Enterprise)
| | +-- NO -> Standard App-Driven Orchestration
| |
| |-- Batch/Scheduled (periodic, high volume)
| | |-- Data volume < 5,000 records/hour?
| | | |-- YES -> Single scheduled integration (1 message pack)
| | | +-- NO -> Scheduled + file-based staging via File Server
| |
| |-- Event-driven (Business Events, webhooks)
| | |-- Source is Oracle SaaS?
| | | |-- YES -> Oracle SaaS adapter with Business Event subscription
| | | +-- NO -> REST adapter webhook trigger or Kafka adapter
| | +-- Need guaranteed delivery?
| | |-- YES -> Parking lot pattern with ATP database
| | +-- NO -> Fire-and-forget with error notification
| |
| +-- File-based (FBDI, large file transfer)
| +-- File Server (SFTP) + Scheduled integration + Stage File
|
+-- Error tolerance?
|-- Zero-loss -> Parking lot pattern + ATP DB + resubmit flow
+-- Best-effort -> Scope-based fault handling + email notification
| Category | Examples | Count | Edition |
|---|---|---|---|
| Oracle SaaS | ERP Cloud, HCM Cloud, SCM Cloud, CX Sales, NetSuite | 20+ | Standard+ |
| Database | Oracle DB, MySQL, SQL Server, PostgreSQL | 5+ | Standard+ |
| Technology | REST, SOAP, FTP, File, JMS, Kafka, AS2 | 15+ | Standard+ |
| Third-Party SaaS | Salesforce, ServiceNow, Workday, SAP, Shopify | 20+ | Standard+ |
| On-Premises | E-Business Suite, JD Edwards, PeopleSoft, Siebel | 10+ | Enterprise |
| AI/ML | OCI AI Services, OpenAI, Anthropic LLMs | 3+ | Standard+ |
| Healthcare | FHIR, HL7 | 2 | Standard+ |
| Messaging | Oracle AQ, RabbitMQ, Azure Service Bus | 5+ | Standard+ |
| Edition | Pay-as-You-Go | Annual Commit | BYOL Discount |
|---|---|---|---|
| Standard | ~$808/month per pack | ~$539/month per pack | ~60% off |
| Enterprise | ~$1,617/month per pack | ~$1,078/month per pack | ~60% off |
Select Standard or Enterprise edition based on adapter and process automation requirements. Choose the OCI region closest to your primary data sources. [src1]
# Using OCI CLI to create an OIC instance
oci integration integration-instance create \
--compartment-id <compartment-ocid> \
--display-name "production-oic" \
--integration-instance-type "ENTERPRISE" \
--is-byol false \
--message-packs 1 \
--shape "PRODUCTION"
Verify: OCI Console > Integration > Instances > Check status = Active
Create a confidential application in OCI IAM (IDCS) with the urn:opc:resource:consumer::all scope to enable OAuth-based integration triggering. [src1]
# Test OAuth token acquisition
curl -X POST \
"https://idcs-<tenant>.identity.oraclecloud.com/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: Response contains access_token with expected expiry (default 3600s)
Use the Design > Integrations UI. Select App-Driven Orchestration for real-time or Scheduled Orchestration for batch. Configure trigger and invoke connections. [src1]
# Integration flow structure
Trigger: REST Adapter (receives POST /orders)
-> Map: Transform request to ERP format
-> Invoke: Oracle ERP Cloud Adapter (create Sales Order)
-> Map: Transform response
-> Return: Order confirmation with ERP reference
Verify: Activate integration > Test with sample payload via tracking page
Install the connectivity agent on a host with network access to on-premises systems. Requires JDK 17 (mandatory in Gen 3). The agent establishes an outbound connection to OIC — no inbound firewall rules needed. [src1, src2]
# Requires JDK 17 (JDK 8/11 deprecated in Gen 3)
java -version # Must show 17.x
# Install and configure agent
java -jar oic_connectivity_agent.jar
# Agent auto-registers with OIC via OAuth token
# Do NOT modify the default token expiry (3600s)
Verify: OIC Console > Settings > Agents > Agent status = Running
Wrap all invoke activities in a Scope action. Add a fault handler for structured error processing. Use the parking lot pattern for guaranteed delivery. [src5]
# Error handling pattern
Scope: "Process Order"
-> Invoke: Oracle ERP Cloud Adapter
-> [On Success] -> Map response -> Return
-> [Fault Handler]
-> Log error details
-> Invoke: ATP Database (insert to parking_lot table)
-> Notification: Send error email
-> Re-throw or swallow based on error type
Verify: Tracking page > Errors tab > Verify fault handler execution
Use Scheduled Orchestration for recurring batch operations. Set frequency and configure the scheduler to call asynchronous child integrations. [src5]
# Scheduling best practice
Scheduler (Parent): Runs every 15 minutes
-> Query source system for new/changed records
-> For-Each record batch:
-> Invoke: Async child integration (one-way)
-> Scheduler thread freed for next iteration
# Key: Parent calls ONE-WAY async child
Verify: Monitoring > Integrations > Check scheduled runs and child execution counts
# Input: OIC REST endpoint URL, OAuth credentials
# Output: Integration execution response
import requests
# Step 1: Get OAuth token from OCI IAM
token_url = "https://idcs-<tenant>.identity.oraclecloud.com/oauth2/v1/token"
token_resp = requests.post(
token_url,
data={
"grant_type": "client_credentials",
"scope": "urn:opc:resource:consumer::all"
},
auth=("<client-id>", "<client-secret>")
)
access_token = token_resp.json()["access_token"]
# Step 2: Invoke the integration
oic_url = "https://<oic-host>/ic/api/integration/v1/flows/rest/ORDER_SYNC/1.0/orders"
response = requests.post(
oic_url,
headers={
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
},
json={"orderNumber": "ORD-001", "amount": 1500.00}
)
print(response.status_code, response.json())
# Input: OIC host, OAuth token
# Output: Instance status and message consumption
# Check integration monitoring
curl -X GET \
"https://<oic-host>/ic/api/integration/v1/monitoring/integrations" \
-H "Authorization: Bearer <access-token>" \
-H "Accept: application/json"
# Check failed integration instances (last 24 hours)
curl -X GET \
"https://<oic-host>/ic/api/integration/v1/monitoring/instances?status=FAILED&limit=10" \
-H "Authorization: Bearer <access-token>"
| Feature | Gen 2 | Gen 3 | Notes |
|---|---|---|---|
| Visual mapper | Yes | Enhanced Redwood UI | Drag-and-drop field mapping |
| XSLT functions | Standard set | Expanded built-in set | More string, date, math functions |
| Import mappings | No | Yes | Reuse mappings across integrations |
| Lookups | Domain Value Map (DVM) | Domain Value Map (DVM) | Key/value reference tables |
| Custom functions | XSLT templates | XSLT templates + JavaScript | JavaScript added in Gen 3 |
| Conditional mapping | If-then in XSLT | If-then + Switch | Improved conditional logic |
| Error | Meaning | Cause | Resolution |
|---|---|---|---|
| ORA-00001 | Unique constraint violation | Duplicate record in target | Implement idempotency check; use upsert pattern |
| CASDK-0004 | Connection timeout | Target system unreachable | Increase timeout; check connectivity agent health |
| IC-INVOKE-0015 | Rate/throttle limit exceeded | Too many messages in window | Implement backoff; reduce frequency; add message pack |
| IC-SCHEDULE-0001 | Scheduled integration overlap | Previous run not finished | Increase interval or convert to async child pattern |
| OIC-AUTH-0001 | Authentication failure | Expired token or misconfigured OAuth | Verify OCI IAM confidential app; check scope |
| CASDK-0007 | Payload too large | Response exceeds adapter limits | Paginate or stage to File Server |
Calculate effective messages as ceiling(payload_size_KB / 50) before capacity planning. [src3, src4]Never modify the default OAuth token expiry for the connectivity agent. [src1]Always call child integrations as one-way asynchronous. [src5]Migrate to App-Driven or Scheduled Orchestration before upgrade. [src2]Create separate invoke connections for success and failure callbacks. [src2]Update external systems that construct OIC REST endpoint URLs. [src2]// BAD — blocks scheduler thread for each record
Scheduler (Parent)
-> For-Each record:
-> Invoke SYNCHRONOUS child integration
-> Wait for child response
// Result: scheduler thread blocked, overlap risk
// GOOD — scheduler dispatches and moves on
Scheduler (Parent)
-> For-Each record:
-> Invoke ASYNC (one-way) child integration
-> Parent completes quickly
// Child processes independently
// BAD — one massive integration handles everything
Integration: "Full Order Process"
-> Validate -> Check inventory -> Create customer
-> Create order -> Ship -> Notify
// Any failure restarts entire flow
// GOOD — each step is separate, idempotent
Integration 1: "Validate Order" -> publishes event
Integration 2: "Check Inventory" -> subscribes, publishes
Integration 3: "Create Customer" -> idempotent upsert
// Individual retry, easier debugging
// BAD — counting transactions, not messages
Requirement: 10,000 orders/hour, avg payload 150KB
Plan: 2 message packs (10,000 msgs)
// Reality: ceiling(150/50) = 3 msgs per order
// Actual: 30,000 msgs/hr = 6 packs needed
// GOOD — factor in payload sizing
Messages per order = ceiling(150KB / 50KB) = 3
Effective msgs/hr = 10,000 x 3 = 30,000
Packs needed = ceiling(30,000 / 5,000) = 6
Audit all source/target systems before purchasing. [src3]Calculate: ceiling(payload_KB / 50) x transaction_count. [src3, src4]Inventory all integrations by type; convert before upgrade window. [src2]Install JDK 17 on all agent hosts before Gen 3 upgrade. [src2]URL-decode or handle both %7C and | in external callers. [src2]Use async child pattern or increase interval. [src5]Leave default value unchanged — agent handles renewal automatically. [src1]# Check OIC instance status via OCI CLI
oci integration integration-instance get \
--integration-instance-id <instance-ocid> \
--query 'data.{"Status":status,"Shape":"instance-shape","Message Packs":"message-packs"}'
# List all integrations and their status
curl -s -X GET \
"https://<oic-host>/ic/api/integration/v1/integrations?limit=100" \
-H "Authorization: Bearer <token>" | jq '.items[] | {name, status, version}'
# Check failed integration instances
curl -s -X GET \
"https://<oic-host>/ic/api/integration/v1/monitoring/instances?status=FAILED&limit=10" \
-H "Authorization: Bearer <token>"
# Check connectivity agent health
curl -s -X GET \
"https://<oic-host>/ic/api/integration/v1/agents" \
-H "Authorization: Bearer <token>" | jq '.items[] | {name, status, lastHeartbeat}'
# Monitor message consumption (OCI Monitoring)
oci monitoring metric-data summarize-metrics-data \
--compartment-id <compartment-ocid> \
--namespace oracle_oci_integration \
--query-text 'MessageCount[1h].sum()'
| Version | Release | Status | Key Changes | Migration Notes |
|---|---|---|---|---|
| Gen 3 (25.x) | 2024-2025 | Current | Redwood UI, Projects, parallel execution, RBAC, Rapid Adapter Builder, AI/MCP support | Mandatory upgrade; Oracle-managed, <10 min downtime |
| Gen 3 (24.x) | 2024 | Current | Initial Gen 3 release, microservices, OCI-native | Removed Basic Routing, File Transfer; OAuth required |
| Gen 2 | 2019-2024 | EOL | Full feature set, 700 active integrations | Upgrade path to Gen 3 is automatic |
| Classic (ICS) | 2016-2019 | EOL | Original iPaaS offering | Must upgrade to Gen 2 first, then Gen 3 |
Oracle Integration follows a continuous release model with updates every 2-4 weeks. Gen 2 to Gen 3 upgrades are mandatory and Oracle-managed. Features removed in Gen 3 have documented workarounds but will not be restored. [src2]
| Use When | Don't Use When | Use Instead |
|---|---|---|
| Integrating Oracle SaaS products (ERP, HCM, SCM, CX) | Need API gateway with rate limiting and developer portal | Oracle API Gateway or Apigee |
| Need low-code visual integration designer for Oracle ecosystem | Complex transformation requiring custom Java/Python code | MuleSoft Anypoint or custom middleware |
| Want Oracle-managed iPaaS with prebuilt SaaS adapters | Primarily non-Oracle systems with no Oracle SaaS | Boomi, Workato, or MuleSoft |
| Batch file processing with embedded SFTP file server | Real-time streaming at sub-second latency (>100K events/sec) | Apache Kafka, Oracle Streaming, or Confluent |
| Oracle-to-Oracle integration with business events | Multi-cloud orchestration across AWS, Azure, GCP services | Workato or custom event-driven architecture |
| B2B/EDI trading partner connectivity (Enterprise) | Simple point-to-point API proxy with no transformation | Oracle API Gateway or direct REST calls |
| Capability | Oracle OIC | MuleSoft Anypoint | Boomi | Workato |
|---|---|---|---|---|
| Pricing model | Message packs (5K msgs/hr/pack) | vCore-based | Connection + flow-based | Recipe + connection-based |
| Prebuilt adapters | 80+ | 400+ | 200+ | 1,000+ |
| Oracle SaaS depth | Native (deepest integration) | Good (certified adapters) | Good | Good |
| On-premises support | Connectivity agent (Enterprise) | Mule runtime (on-prem) | Atom (on-prem) | On-prem agent |
| Low-code designer | Visual flow designer | Anypoint Studio + Flow Designer | Visual, drag-and-drop | Recipe builder |
| Process automation | OCI Process Automation (separate) | Not included | Flow Services | Workflow bots |
| B2B/EDI | Built-in (Enterprise) | B2B add-on | B2B/EDI add-on | Limited |
| AI integration | OCI AI, OpenAI, Anthropic, MCP | AI Chain | GPT connector | AI by Workato |
| API management | Separate (Oracle API Gateway) | Built-in (API Manager) | API Management add-on | API platform |
| File handling | Embedded SFTP file server | File connector | Disk connector | File connector |