A practical, production-proven approach for SaaS → Custom application integrations
Enterprise teams building custom
applications often face a recurring challenge:
How do we reliably and efficiently
consume Oracle Fusion SaaS data for transaction entry, search, and
validation—without turning every UI action into a chain of REST API calls?
This blog walks through a repeatable
outbound integration pattern for Oracle Fusion SaaS using Oracle
Integration Cloud (OIC)—one that balances performance, freshness,
operational stability, and multi-environment support.
This is not a theoretical design.
It’s a pattern built for real systems, real users, and real
operational constraints.
The Business Use Case
Custom
Transaction Entry
An organization builds multiple custom
applications to support business-specific processes that are not easily met
by standard Fusion UI:
- Sales Order creation
- Purchase Order creation
- Packing and Shipping
- Field Serving Call creation
These application screens require rich
master data context from Oracle Fusion, including:
- Customer, Account, Sites , addresses, Relationships, Contacts
- Supplier, Sites
- Items & Structures
- Packing Stations, Picker Shipper
- Activity Statuses
This data is required before
the transaction is created, primarily to:
- enable fast search and selection
- validate user input
- reduce errors at submission time
The same pattern is reused across DEV,
TEST, and PROD, and the user base is modest (10–12 concurrent users).
The
First Question Everyone Asks
Why not just call Fusion REST APIs
directly from Custom application?
On paper, REST APIs seem attractive:
- real-time data
- no staging tables
- simple point-to-point calls
In practice, this approach breaks
down quickly for reference-heavy UI scenarios:
- A single screen can require 10+ REST calls
- UI responsiveness depends on Fusion latency
- API throttling becomes visible to users
- Error handling and replay become complex
- DEV/TEST/PROD differences surface as UI issues
This leads to a key architectural
realization:
UI search and selection should not
be tightly coupled to real-time API calls.
The
Architectural Decision
Cache
reference data. Validate at submit.
Instead of calling multiple REST
APIs at runtime, the design introduces a controlled outbound data
synchronization layer:
- Oracle Fusion SaaS remains the system of record
- Custom App maintains a read-optimized cache
- Oracle Integration Cloud orchestrates extraction, transformation, and loading
This approach provides:
- predictable UI performance
- controlled load on Fusion
- simpler operations and troubleshooting
- consistent behavior across environments
Core
Architecture Overview
The cache is used for:
- search
- LOVs
- validations during data entry
Final transaction creation still
uses Fusion REST APIs (for example, Order Management REST for Sales
Orders).
Incremental
Extraction Strategy
Why
Incremental Matters
Master and reference data changes daily
or weekly, not continuously.
Fetching everything every time would be wasteful and slow.
The solution uses incremental
extraction based on LAST_UPDATE_DATE (or equivalent) across all involved Fusion tables.
Two-Integration Pattern in OIC
To support both scheduled and
on-demand refresh, the design intentionally separates responsibilities.
1.
Child
Integration (App-Driven)
Purpose
- Execute the actual extraction logic
- Can be invoked by both schedules and UI actions
Responsibilities
- Read LAST_RUN_DATE from an Custom application log/control table
- Invoke a BIP Report
- Extract only records where LAST_UPDATE_DATE > LAST_RUN_DATE
- Transform and load data into CUSTOM tables
- Update execution metadata (row counts, timestamps,
status)
2.
Parent
Integration (Scheduled)
Purpose
- Provide predictable, automated refresh
Responsibilities
- Run on a fixed schedule ( on weekdays Run every 20
minutes between 9am to 5pm and then every 3 hours , and every 8 hours over
weekend)
- Simply invoke the Child Integration
- No business logic, no transformations
This separation ensures:
- clean reuse
- easier testing
- simpler operational control
On-Demand Refresh from Custom Application
Some business scenarios require
immediate access to the latest SaaS data.
Instead of forcing REST calls into
the UI, the design adds a “Refresh from SaaS” button/control in Custom
UI.
How it works
- User clicks “Refresh”
- Custom UI Invoke
the Child Integration
- Latest changes are pulled using the same incremental
logic
- UI displays refreshed data
This provides:
- near-real-time access when required
- consistent behavior with scheduled runs
- no duplication of logic
The result is a user-controlled
freshness mechanism without compromising architecture.
Data
Modeling Choice: Denormalized Cache
Although the source data spans many
Fusion tables (HZ_* tables for Customer and Suppliers, EGP/INV Tables for Items
, WSH tables for Shipping etc), the cache
uses a one or 2 single denormalized table per Module with only the
columns required by the UI.
Why it works
- simplifies Custom app queries
- improves search performance
- reduces join complexity
- aligns with UI consumption patterns
The table is optimized for read
performance, not as a replica of Fusion’s data model.
When multiple source tables
contribute to a single cached record, incremental logic must be deliberate.
A best practice is to:
- identify business keys impacted by any source
table change
- re-extract the full dataset for those keys
- upsert into the cache
This ensures:
- relationship changes are not missed
- inactivations and merges are handled
- the cache remains logically consistent
Where REST APIs Still Play a Role
This design does not
eliminate REST APIs.
REST APIs are used:
- when creating or updating transactions (Sales Orders, Purchase
Orders Orders,Packing etc)
- optionally at submit time to validate:
- account/site status
- eligibility rules
- blocking conditions
This creates a hybrid model:
- cached data for UX and selection
- REST APIs for authoritative transaction processing
DEV,
TEST, and PROD Considerations
This outbound pattern scales cleanly
across environments:
- each environment runs its own schedules
- each environment maintains its own watermark
- no dependency on real-time API behavior during
development
- easier promotion and troubleshooting
Developers can work in DEV without
impacting PROD API limits or performance.
Why
This Pattern Works
This approach succeeds because it
respects system boundaries:
- Fusion SaaS remains authoritative
- OIC manages integration complexity
- Custom app focuses on UX and business flow
It avoids:
- chatty integrations
- brittle UI-driven APIs
- operational blind spots
And it scales—not just technically,
but organizationally.
Final
Thoughts
Designing outbound integrations from
Oracle Fusion SaaS is not about choosing REST vs BIP.
It’s about choosing where
complexity should live.
For reference-heavy, UI-driven use
cases:
- Incremental extracts + OIC orchestration provide stability and performance
- Targeted REST usage
preserves correctness where it matters most
This pattern has proven effective
for building resilient CUSTOM applications on top of Oracle Fusion
SaaS—and it can be reused across many outbound integration scenarios.