Oracle EBS Query to Get Concurrent Program Parameters and Responsibilities
This generator writes three queries that answer the questions support teams ask about any Oracle E-Business Suite concurrent program: what runs, which parameters it takes in which order, and which responsibilities can submit it. It works on EBS 11i, 12.1 and 12.2 and needs only read access to the APPLSYS objects through APPS.
Fill in
Matches USER_CONCURRENT_PROGRAM_NAME or CONCURRENT_PROGRAM_NAME. Use % wildcards.
Blank means any application.
Query 1: program definition and executable
SELECT a.application_short_name,
p.concurrent_program_id,
p.concurrent_program_name,
p.user_concurrent_program_name,
e.executable_name,
e.execution_method_code, -- I PL/SQL, P Oracle Reports, Q SQL*Plus, H Host, L SQL*Loader, K Java
e.execution_file_name,
p.output_file_type,
p.enabled_flag,
p.srs_flag
FROM fnd_concurrent_programs_vl p
JOIN fnd_executables_vl e
ON e.executable_id = p.executable_id
AND e.application_id = p.executable_application_id
JOIN fnd_application a
ON a.application_id = p.application_id
WHERE (p.user_concurrent_program_name LIKE 'Journal Import%'
OR p.concurrent_program_name LIKE 'Journal Import%')
AND a.application_short_name = NVL('[Program application short name (optional)]', a.application_short_name)
ORDER BY p.user_concurrent_program_name;Query 2: parameters in submission order
SELECT p.concurrent_program_name,
u.column_seq_num,
u.end_user_column_name,
u.form_left_prompt,
u.application_column_name,
u.srw_param, -- Oracle Reports token
u.required_flag,
u.enabled_flag,
u.display_flag,
u.default_type,
u.default_value,
vs.flex_value_set_name,
vs.validation_type -- I independent, D dependent, F table, N none, P pair, U special
FROM fnd_concurrent_programs_vl p
JOIN fnd_application a
ON a.application_id = p.application_id
JOIN fnd_descr_flex_col_usage_vl u
ON u.application_id = p.application_id
AND u.descriptive_flexfield_name = '$SRS$.' || p.concurrent_program_name
AND u.descriptive_flex_context_code = 'Global Data Elements'
LEFT JOIN fnd_flex_value_sets vs
ON vs.flex_value_set_id = u.flex_value_set_id
WHERE (p.user_concurrent_program_name LIKE 'Journal Import%'
OR p.concurrent_program_name LIKE 'Journal Import%')
AND a.application_short_name = NVL('[Program application short name (optional)]', a.application_short_name)
ORDER BY p.concurrent_program_name, u.column_seq_num;Query 3: request groups and responsibilities that can run it
SELECT p.user_concurrent_program_name,
r.responsibility_name,
r.responsibility_key,
rg.request_group_name,
ga.application_short_name AS group_application,
rgu.request_unit_type, -- P single program, A all programs of the application
r.start_date,
r.end_date
FROM fnd_concurrent_programs_vl p
JOIN fnd_application a
ON a.application_id = p.application_id
JOIN fnd_request_group_units rgu
ON rgu.unit_application_id = p.application_id
AND ( (rgu.request_unit_type = 'P' AND rgu.request_unit_id = p.concurrent_program_id)
OR rgu.request_unit_type = 'A')
JOIN fnd_request_groups rg
ON rg.request_group_id = rgu.request_group_id
AND rg.application_id = rgu.application_id
JOIN fnd_application ga
ON ga.application_id = rg.application_id
JOIN fnd_responsibility_vl r
ON r.request_group_id = rg.request_group_id
AND r.group_application_id = rg.application_id
WHERE (p.user_concurrent_program_name LIKE 'Journal Import%'
OR p.concurrent_program_name LIKE 'Journal Import%')
AND a.application_short_name = NVL('[Program application short name (optional)]', a.application_short_name)
AND (r.end_date IS NULL OR r.end_date > SYSDATE)
ORDER BY r.responsibility_name;The _VL views return names in the session language (USERENV('LANG')); set NLS_LANGUAGE or query the _TL tables for another language. Programs reached only through a request set (unit type S) are not listed by Query 3. Confirm REQUEST_UNIT_TYPE values on your instance with SELECT DISTINCT request_unit_type FROM fnd_request_group_units.
Get a request group access review
Send us the output of Query 3 for your key programs and we flag responsibilities with broader access than they need.
Optional. The tool and every export work without this. No spam.
How to use it
Type part of the program's user name or its short name with % wildcards, for example Journal Import% or GLLEZL, and optionally restrict to an application short name. Run Query 1 to confirm you have the right program, since many seeded programs share similar names across applications. Query 2 lists parameters in COLUMN_SEQ_NUM order, which is exactly the argument1, argument2 order FND_REQUEST.SUBMIT_REQUEST expects. Query 3 lists active responsibilities whose request group contains the program, either directly or through an all-programs-of-this-application unit.
- Use Query 2 before writing any SUBMIT_REQUEST call
- Hidden parameters (display_flag N) still occupy an argument position
- Disabled parameters (enabled_flag N) are not passed
Where this lives in EBS
Concurrent program parameters are stored as a descriptive flexfield whose name is $SRS$. followed by the program short name, owned by the program's application. The context is Global Data Elements, and each parameter is a column usage in FND_DESCR_FLEX_COLUMN_USAGES (view FND_DESCR_FLEX_COL_USAGE_VL) mapped to ATTRIBUTE1, ATTRIBUTE2 and so on. That is why the Parameters window of the Concurrent Program form looks like a flexfield segment form. Request groups live in FND_REQUEST_GROUPS with their members in FND_REQUEST_GROUP_UNITS, and a responsibility points at one group through REQUEST_GROUP_ID and GROUP_APPLICATION_ID.
Worked example: Journal Import
With the default pattern Journal Import%, Query 1 returns the GL program with short name GLLEZL under SQLGL. Query 2 returns its parameters in sequence, with prompts, value sets and defaults; use this list to build the argument list for an automated journal import rather than copying an example from a blog written for another release. Query 3 shows every General Ledger responsibility that can run it. If a user says they cannot see a program, compare their responsibility to this list: the fix is almost always adding the program to that responsibility's request group, not granting a new responsibility.
Gotchas
DEFAULT_TYPE holds a code (C constant, P profile, S SQL statement and others), and DEFAULT_VALUE holds the constant, profile name or SQL text. A parameter with a SQL statement default can behave differently when submitted from PL/SQL, because SUBMIT_REQUEST does not evaluate defaults: you must pass the value yourself. For value sets of type F (table) with an ID column defined, the stored value is the ID column, which is what you pass in arguments. Responsibilities can also be end-dated per user in FND_USER_RESP_GROUPS_DIRECT, so a responsibility listed here may still be unavailable to a particular person.
Frequently Asked Questions
What is the query to get concurrent program parameters in Oracle Apps?
Join FND_CONCURRENT_PROGRAMS_VL to FND_DESCR_FLEX_COL_USAGE_VL on application_id and descriptive_flexfield_name = '$SRS$.' || concurrent_program_name, then to FND_FLEX_VALUE_SETS for the value set. Order by COLUMN_SEQ_NUM to get the submission order. Query 2 above is that query with prompts, flags and defaults.
How do I find which responsibility a concurrent program is assigned to?
Find request group units of type P whose request_unit_id is the program's concurrent_program_id (plus type A units for its whole application), join to FND_REQUEST_GROUPS, then to FND_RESPONSIBILITY_VL on request_group_id and group_application_id. Query 3 does this and filters out end-dated responsibilities.
Why do my SUBMIT_REQUEST arguments land in the wrong parameters?
Arguments are positional and follow COLUMN_SEQ_NUM of the enabled parameters, including hidden ones. Developers often skip a hidden parameter or count from a screenshot. Run Query 2 and map argument1 to the first enabled row, argument2 to the second, and so on.
Does this include programs in request sets?
No. Query 3 covers programs added directly to a request group and application-level units. A program that users run only as part of a request set appears in the group as a set unit, and its stages are stored in the request set tables, so check those separately.
If you want support staff to ask which responsibility runs a program or what a parameter means, and get the answer from your own EBS instance in plain English on your servers, we can set that up.
Related Tools
Oracle EBS FND_REQUEST.SUBMIT_REQUEST Code Generator
Fill in user, responsibility, program and arguments and get a PL/SQL block that submits a concurrent request from the database, optionally adds an XML Publisher layout and waits for completion.
Developer ToolsOracle EBS PL/SQL Concurrent Program Generator (Package plus FND_PROGRAM Registration)
Generates a PL/SQL concurrent program package (errbuf, retcode, date parameter, CSV output, error backtrace) and the FND_PROGRAM calls that register the executable, program, parameters, request group and incompatibility.
OracleOracle EBS SQL for Concurrent Requests Generator
Build ready-to-run SQL for recent, running, pending and long-running concurrent requests from a few filter fields.
OracleOracle EBS User and Responsibility Audit SQL Generator
Fill in a user and responsibility pattern and get ready-to-run queries for active user access, administrator access and duplicate access reviews.
More Developer Tools tools
See all- Oracle EBS Onhand Quantity SQL Generator
- Oracle EBS BOM Explosion SQL Generator
- Oracle EBS Pending Transactions SQL Generator for Period Close
- Oracle EBS Public PL/SQL API Reference (OM, INV, PO, AP, AR, TCA, FND)
- Oracle EBS Forms Personalization Tables and Trigger Events Reference
- Oracle EBS Forms FRM Error Codes Reference (FRM-92101, FRM-40735)
- Oracle EBS XML Publisher RTF Template Syntax Reference
- Oracle EBS OE_ORDER_PUB.PROCESS_ORDER Script Generator
- Oracle EBS FND_USER_PKG Script Generator (Create User, Add Responsibility, Reset Password)
Keep exploring
Free tools
- Oracle EBS Concurrent Program Registration Request TemplateA request form that captures everything an EBS developer needs to register a custom concurrent program: executable, execution method, parameters, request group and incompatibilities.
- Oracle EBS User and Responsibility Audit SQL GeneratorFill in a user and responsibility pattern and get ready-to-run queries for active user access, administrator access and duplicate access reviews.
- Oracle EBS PL/SQL Concurrent Program Generator (Package plus FND_PROGRAM Registration)Generates a PL/SQL concurrent program package (errbuf, retcode, date parameter, CSV output, error backtrace) and the FND_PROGRAM calls that register the executable, program, parameters, request group and incompatibility.
ERP fixes and how-tos
- How to Register a Custom Concurrent Program in Oracle EBSRegister a custom Oracle EBS concurrent program end to end: build the executable, define the program and parameters, and add it to a request group so users can run it.
- SQL to Find Responsibilities Assigned to a User in Oracle EBSReady-to-run SQL against FND_USER, FND_USER_RESP_GROUPS and FND_RESPONSIBILITY_TL to list every responsibility assigned to an Oracle EBS user.
- How to Create a BI Publisher Report in Oracle EBSBuild an Oracle EBS BI Publisher report end to end: write the data model, register the data definition, design the RTF template, and wire it to a concurrent program.
AI on your ERP
- AI for Oracle E-Business Suite, Without Leaving On-PremHosting Oracle EBS 12.2 on-prem or in a private cloud? Add a private LLM over concurrent programs, interface tables and AP/PO data without moving to Fusion.
- AI for Oracle EBS in Industrial Manufacturing: WIP, MRP, and BOM Questions Answered DirectlyAI for Oracle E-Business Suite in industrial manufacturing: WIP jobs, BOMs, MRP, inventory and purchasing answered in plain English, private and read-only.
Integrations
- How to use ChatGPT with Oracle E-Business SuiteUsing ChatGPT with Oracle E-Business Suite: export vs live access, custom GPT actions over ISG REST, enterprise data controls and when to keep data on-prem.
- How to connect Claude to Oracle E-Business SuiteConnect Claude to Oracle E-Business Suite via MCP, the Anthropic API, AWS Bedrock or Vertex, and know when an on-prem open-weight model is the better fit.