Oracle Fusion provides a very powerful framework for executing custom Groovy functions via scheduled ESS jobs.
However, according to official documentation, you cannot pass parameters to these scheduled functions.
Many of our clients have asked for this feature — to allow dynamic behavior based on runtime inputs. Unfortunately, parameterized execution is still only considered an enhancement request with no release date.
At CID Software Solutions, we devised a practical and robust workaround that allows you to pass parameters to Groovy functions scheduled via ESS jobs.
The approach relies on cloning the standard ScheduledCustomGroovyFunctionJob and using the ESS request context to pass and retrieve parameters through SQL and a BIP report.
Schedule Custom Groovy Object Functions job.

sessionId.FND_SESSION_ATTRIBUTES and ESS_REQUEST_PROPERTY to fetch passed parameters.
SELECT fsa.attribute_value AS requestid,
erp.name AS param_name,
erp.value AS param_value
FROM fnd_session_attributes fsa,
ess_request_property erp
WHERE fsa.session_id = '41F49C044B284C39E063C265410A0468'
AND fsa.attribute_name = 'JOB_REQUEST_ID'
AND TO_NUMBER(fsa.attribute_value) = erp.requestid
AND erp.name LIKE 'submit.argument%';
Define the following code as a row-level Groovy function inside your custom object:

You can copy the code from the section below:
def output = new StringBuilder()
output.append("\n")
def sessionId = adf.util.getSession().toString().split('/')[0]
output.append("SessionID=" + sessionId + "\n")
def json = adf.util.runSqlToJson("""
select fsa.attribute_value requestid,
erp.name param_name,
erp.value param_value
from fnd_session_attributes fsa,
ess_request_property erp
where fsa.session_id='${sessionId}'
and fsa.attribute_name='JOB_REQUEST_ID'
and to_number(fsa.attribute_value) = erp.requestid
and erp.name like 'submit.argument%'
order by erp.name
""")
def res = (List)adf.util.parseJson(json)
output.append("Param1=" + res[2]["PARAM_VALUE"] + "\n")
output.append("Param2=" + res[3]["PARAM_VALUE"] + "\n")
return output.toString()
This method gives you full control over parameterized Groovy execution — solving a long-standing limitation in Fusion scheduling. It keeps your solution native, maintainable, and compatible with future Fusion updates.
Need help building advanced ESS jobs, Groovy logic, or Fusion extensions?
CID Software Solutions can help.