Oracle EBS FND_USER_PKG Script Generator: API to Create User, Add Responsibility and Reset Password
This generator writes the FND_USER_PKG calls Oracle E-Business Suite administrators use to script user maintenance: create a user, add a responsibility, reset a password and end-date a responsibility, with SQL to check the result. It targets EBS 12.1 and 12.2.
Fill in
Must meet your SIGNON_PASSWORD_LENGTH, SIGNON_PASSWORD_HARD_TO_GUESS and related profile rules.
PER_ALL_PEOPLE_F.PERSON_ID, unquoted. Leave NULL for non-employees.
FND_RESPONSIBILITY.RESPONSIBILITY_KEY, not the display name.
Used only in the commented ADDRESP call in Block 4 for a future end date; DELRESP itself end-dates as of today.
Block 1: create the user
BEGIN
FND_USER_PKG.CREATEUSER(
x_user_name => UPPER('JSMITH'),
x_owner => NULL,
x_unencrypted_password => 'Welcome#2026',
x_start_date => TO_DATE('2026-10-22', 'YYYY-MM-DD'),
x_email_address => 'jsmith@example.com',
x_employee_id => NULL);
COMMIT;
END;
/Block 2: add a responsibility
BEGIN
FND_USER_PKG.ADDRESP(
username => UPPER('JSMITH'),
resp_app => 'INV',
resp_key => 'XX_INV_INQUIRY',
security_group => 'STANDARD',
description => 'Added by script, ticket CHG-1042',
start_date => TO_DATE('2026-10-22', 'YYYY-MM-DD'),
end_date => NULL);
COMMIT;
END;
/Block 3: reset the password
SET SERVEROUTPUT ON
DECLARE
l_ok BOOLEAN;
BEGIN
l_ok := FND_USER_PKG.CHANGEPASSWORD(
username => UPPER('JSMITH'),
newpassword => 'Welcome#2026');
IF l_ok THEN
COMMIT;
DBMS_OUTPUT.PUT_LINE('Password changed');
ELSE
ROLLBACK;
DBMS_OUTPUT.PUT_LINE('Password change failed: ' || FND_MESSAGE.GET);
END IF;
END;
/Block 4: end-date a responsibility
-- DELRESP end-dates the assignment (it does not delete the row)
BEGIN
FND_USER_PKG.DELRESP(
username => UPPER('JSMITH'),
resp_app => 'INV',
resp_key => 'XX_INV_INQUIRY',
security_group => 'STANDARD');
COMMIT;
END;
/
-- To end-date on a future date (2026-12-31) instead, call ADDRESP again with end_date set:
-- FND_USER_PKG.ADDRESP(username => UPPER('JSMITH'), resp_app => 'INV', resp_key => 'XX_INV_INQUIRY',
-- security_group => 'STANDARD', description => 'Added by script, ticket CHG-1042',
-- start_date => TO_DATE('2026-10-22', 'YYYY-MM-DD'), end_date => TO_DATE('2026-12-31', 'YYYY-MM-DD'));Verification SQL
SELECT u.user_id, u.user_name, u.start_date, u.end_date, u.email_address,
u.employee_id, u.password_date, u.last_logon_date
FROM fnd_user u
WHERE u.user_name = UPPER('JSMITH');
SELECT u.user_name, r.responsibility_key, r.responsibility_name,
d.start_date, d.end_date
FROM fnd_user_resp_groups_direct d
JOIN fnd_user u
ON u.user_id = d.user_id
JOIN fnd_responsibility_vl r
ON r.responsibility_id = d.responsibility_id
AND r.application_id = d.responsibility_application_id
WHERE u.user_name = UPPER('JSMITH')
ORDER BY r.responsibility_name;Run as APPS in a session that is not inside a running request. Confirm parameter names with SELECT object_name, argument_name, position FROM all_arguments WHERE owner = 'APPS' AND package_name = 'FND_USER_PKG' AND object_name IN ('CREATEUSER','ADDRESP','CHANGEPASSWORD','DELRESP'). Whether the user is forced to change the password at next login depends on PASSWORD_DATE; check it with the verification SQL rather than assuming.
Script your joiner-mover-leaver process
Send us your access request form; we map it to FND_USER_PKG calls with approvals and an audit trail for your instance.
Optional. The tool and every export work without this. No spam.
How to use it
Enter the user name, a password that satisfies your password profiles, email and, for employees, the HR PERSON_ID (unquoted, or NULL). For responsibilities, enter the application short name and RESPONSIBILITY_KEY, which differs from the display name; find it with SELECT responsibility_key, responsibility_name FROM fnd_responsibility_vl WHERE responsibility_name LIKE '...'. The security group is STANDARD unless you run security groups. Run only the blocks you need, then the verification SQL. Keep the script in your change ticket rather than editing users ad hoc.
- CREATEUSER fails if the user name already exists
- ADDRESP on an existing assignment updates its dates and description
- Never paste production passwords into shared scripts; use a one-time password
Why the API and not table inserts
A user and their responsibilities are stored in FND_USER and FND_USER_RESP_GROUPS_DIRECT, but the API also maintains what the tables do not show: the encrypted password, and the Workflow directory roles and user role assignments that drive menus, notifications and approvals. Inserting rows directly leaves the Workflow directory out of step, so users see missing responsibilities or broken worklists, and Oracle Support will not help with it. FND_USER_PKG goes through the same code path as the Define User form, so audit columns, password rules and directory synchronisation are handled.
Worked example and checking the result
With the defaults, Block 1 creates JSMITH starting 22 October 2026 with an email and no employee link. Block 2 adds the XX_INV_INQUIRY responsibility under INV in the STANDARD security group. The first verification query shows the FND_USER row with START_DATE, EMPLOYEE_ID and PASSWORD_DATE; the second lists the direct responsibility assignments with their dates. After Block 4, the same row shows END_DATE set to today, and the user loses the responsibility at their next sign-on or responsibility switch. Indirect responsibilities granted through roles in User Management are not in FND_USER_RESP_GROUPS_DIRECT and are not touched by DELRESP.
Gotchas and audit
Run as APPS. User names are stored in upper case, so the blocks apply UPPER. Password rules come from profiles such as Signon Password Length and Signon Password Hard to Guess; CHANGEPASSWORD returns FALSE when a rule fails. EBS stores passwords encrypted and there is no supported way to read one back, so reset rather than look up. EBS does not support deleting users: end-date them (FND_USER_PKG.DISABLEUSER) to keep history. For audit, enable Sign-On: Audit Level and keep the ticket number in the assignment description.
Frequently Asked Questions
What is the API to create a user in Oracle EBS R12?
FND_USER_PKG.CREATEUSER. Pass x_user_name, x_owner (NULL or 'CUST'), x_unencrypted_password, x_start_date, x_email_address and optionally x_employee_id, then COMMIT. It creates the FND_USER row with an encrypted password and synchronises the Workflow directory, which a direct insert would not.
What is the API to add a responsibility to a user?
FND_USER_PKG.ADDRESP with username, resp_app (application short name), resp_key (RESPONSIBILITY_KEY), security_group (usually STANDARD), description, start_date and end_date. Calling it again for an existing assignment updates the dates, which is also how you set a future end date.
How do I reset an Oracle Apps user password from the backend?
Call FND_USER_PKG.CHANGEPASSWORD(username, newpassword), check the BOOLEAN result and COMMIT if TRUE. If it returns FALSE, read FND_MESSAGE.GET for the rule that failed. There is no supported query that returns the current password; reset it instead.
How do I end-date a responsibility with the API?
FND_USER_PKG.DELRESP(username, resp_app, resp_key, security_group) end-dates the direct assignment as of today; it does not delete it, so history and audit stay intact. For a future date, call ADDRESP with the end_date you want.
If you want access requests checked against your EBS roles and drafted as scripts for an administrator to approve, running on your own servers, we can set that up.
Related Tools
Oracle 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.
OracleOracle EBS Inactive User Cleanup SQL Generator
Set a number of idle days and generate queries to list inactive users, expiring passwords, and a reviewed script to disable them.
OracleOracle EBS User Access Review Template
A periodic access review record for EBS users and responsibilities, with scope, evidence, exceptions and reviewer sign-off.
OracleOracle EBS Responsibility Design Worksheet
Plan custom responsibilities row by row: menu, request group, data group, MO security profile and the business role each one serves.
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_REQUEST.SUBMIT_REQUEST Code Generator
Keep exploring
Free tools
- 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 FND_REQUEST.SUBMIT_REQUEST Code GeneratorFill 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.
- Oracle EBS Concurrent Program Parameters and Responsibility SQL GeneratorThree SQL queries for any concurrent program: definition and executable, parameters in order with value sets and defaults, and the request groups and responsibilities that can submit it.
ERP fixes and how-tos
- 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 change the APPS password in Oracle EBS with FNDCPASSHow to change the APPS, schema and application user passwords in Oracle EBS with FNDCPASS: syntax by mode, the R12.2 data source step, and mistakes that lock out the system.
- SQL query to find profile option values by level in Oracle EBSSQL to list Oracle EBS profile option values at site, application, responsibility and user level using FND_PROFILE_OPTIONS and FND_PROFILE_OPTION_VALUES, with level IDs.
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 add AI agents to Oracle E-Business SuiteHow to add AI agents to Oracle E-Business Suite R12: tool layer over ISG services and open interfaces, approval gates, and on-prem model hosting options.