Oracle Fusion Application Composer provides a way to define user-initiated actions using Groovy scripts. These scripts often support buttons on UI pages to trigger integration or business logic.
However, a key limitation is that Groovy scripts invoked this way are capped to 60 seconds execution time. This becomes a problem when:
Although Object Workflows can be used for asynchronous Groovy execution, they are harder to monitor, debug, and maintain.
To address the timeout limitation and provide an asynchronous pattern that is stable across environments, we use the following strategy:
This approach is robust, P2T-safe, and gives visibility into the job execution via standard ESS monitoring tools.
Here’s how to implement this pattern step by step:
in Oracle Fusion Application Composer by offloading long-running or external processes to an asynchronous OIC integration using an ESS Job and BIP HTTP connection.
This solution is fully P2T-safe and supports robust integration logic without affecting user experience or UI performance. We’ll walk through all steps—from Groovy code to setup screens—in a single post.
To keep the solution safe across P2T refreshes, we define a REST web service connection in Application Composer that points to an internal Fusion endpoint using SAML authentication. This avoids external web service references in Groovy and makes the connection stable post-clone.
Sample Configuration:
LocalFscmRESThttps://fa-internal.oracleoutsourcing.com:10663/fscmRestApi/resources/latest/##REL_URL##
Screenshot – Application Composer Web Service Setup:
Instead of calling the OIC integration directly from Groovy, we submit an ESS job using the internal web service defined above. The ESS job is configured to run a BIP report, which in turn triggers the OIC call.
Below is a working Groovy example used inside a custom object function:
def conn = adf.webServices.LocalFscmREST
def httpHeaders = ['Content-Type': 'application/json']
conn.requestHTTPHeaders = httpHeaders
def payload = [
"OperationName": "submitESSJobRequest",
"JobPackageName": "/oracle/apps/ess/custom",
"JobDefName": "PalletPrint",
"ESSParameters": RecordName
]
def response = conn.POST("erpintegrations", payload)
return response.toString()
Screenshot – Groovy Function Submitting ESS Job:
On the BIP (BI Publisher) side, define an HTTP Data Source that will invoke your OIC integration URL. This BIP connection is used in the report template called by the ESS job.
Configuration:
OIChttpsyour-oic-instance.oraclecloud.com443
Screenshot – BIP HTTP Connection Setup:
Once the report is executed by the ESS job, it will invoke the configured OIC endpoint with any required payload, enabling seamless orchestration of downstream logic.
This integration architecture allows you to:
At CID Software Solutions, we have implemented this pattern for global clients looking to scale their custom logic without compromising maintainability or upgrade safety.
If you’re facing similar limitations in your Oracle Fusion implementation, contact our team to find out how we can help.
Tags: Oracle Fusion, Groovy, ESS Job, BIP, OIC Integration, Application Composer, Custom Object, Web Services, Asynchronous