Oracle EBS HR API List: HR_EMPLOYEE_API, HR_PERSON_API and Other HRMS Public APIs
This Oracle EBS HR API list covers the public HRMS APIs developers use most: HR_EMPLOYEE_API, HR_PERSON_API, HR_ASSIGNMENT_API, HR_EX_EMPLOYEE_API and the contact, address, job and position APIs. Search by package, procedure or parameter, then use the call example as a starting point.
| Package.procedure | Purpose | Key IN parameters | Key OUT / IN OUT parameters | Note |
|---|---|---|---|---|
HR_EMPLOYEE_API.CREATE_EMPLOYEE | Hire a new employee: creates the person, period of service and first assignment | p_validate, p_hire_date, p_business_group_id, p_last_name, p_sex, p_person_type_id, p_national_identifier | p_employee_number (IN OUT), p_person_id, p_assignment_id, p_per_object_version_number, p_asg_object_version_number, p_full_name | Legislation-specific variants exist, for example CREATE_US_EMPLOYEE and CREATE_GB_EMPLOYEE |
HR_PERSON_API.UPDATE_PERSON | Update personal details of a person (name, birth date, marital status and similar) | p_effective_date, p_datetrack_update_mode, p_person_id, p_last_name, p_marital_status | p_object_version_number (IN OUT), p_effective_start_date, p_effective_end_date, p_full_name, p_comment_id | Pass hr_api.g_varchar2 / g_number / g_date to leave a value unchanged |
HR_PERSON_API.UPDATE_US_PERSON | Update a person with United States specific fields | p_effective_date, p_datetrack_update_mode, p_person_id | p_object_version_number (IN OUT), p_effective_start_date, p_effective_end_date, p_full_name | Equivalent localized variants exist for other legislations such as UPDATE_GB_PERSON |
HR_ASSIGNMENT_API.UPDATE_EMP_ASG | Update non-criteria assignment details, for example supervisor and manager flag | p_effective_date, p_datetrack_update_mode, p_assignment_id, p_supervisor_id | p_object_version_number (IN OUT), p_effective_start_date, p_effective_end_date | Does not change job, position, grade or organization; use UPDATE_EMP_ASG_CRITERIA for those |
HR_ASSIGNMENT_API.UPDATE_EMP_ASG_CRITERIA | Change assignment criteria: job, position, grade, organization, location | p_effective_date, p_datetrack_update_mode, p_assignment_id, p_job_id, p_organization_id, p_location_id, p_grade_id | p_object_version_number (IN OUT), p_effective_start_date, p_effective_end_date, p_special_ceiling_step_id, p_people_group_id | Check the warning OUT flags it returns, such as salary and payroll warnings |
HR_ASSIGNMENT_API.CREATE_SECONDARY_EMP_ASG | Create an additional assignment for an existing employee | p_effective_date, p_person_id, p_organization_id, p_assignment_number | p_assignment_id, p_object_version_number, p_effective_start_date, p_effective_end_date | Primary assignment is created by CREATE_EMPLOYEE |
HR_EX_EMPLOYEE_API.ACTUAL_TERMINATION_EMP | Terminate an employee by recording the actual termination date | p_effective_date, p_period_of_service_id, p_actual_termination_date, p_leaving_reason | p_object_version_number (IN OUT), p_last_standard_process_date (IN OUT), p_supervisor_warning, p_event_warning | Followed by FINAL_PROCESS_EMP after the last standard process date |
HR_EX_EMPLOYEE_API.FINAL_PROCESS_EMP | Final process an ex-employee after the last standard process date | p_period_of_service_id, p_final_process_date | p_object_version_number (IN OUT), p_final_process_date (IN OUT), p_org_now_no_manager_warning, p_asg_future_changes_warning | Used with ACTUAL_TERMINATION_EMP to complete the termination |
HR_EX_EMPLOYEE_API.REVERSE_TERMINATE_EMPLOYEE | Reverse a termination and reinstate the employee | p_period_of_service_id, p_actual_termination_date | p_object_version_number (IN OUT) | Reversal rules depend on whether the employee was final processed |
HR_CONTACT_REL_API.CREATE_CONTACT | Create a contact and its relationship to an employee | p_start_date, p_business_group_id, p_person_id, p_contact_type, p_last_name | p_contact_relationship_id, p_ctr_object_version_number, p_per_person_id, p_per_object_version_number, p_full_name | Can also link an existing person as the contact |
HR_PERSON_ADDRESS_API.CREATE_PERSON_ADDRESS | Add an address to a person | p_effective_date, p_person_id, p_primary_flag, p_style, p_date_from, p_address_line1, p_country | p_address_id, p_object_version_number | Style selects the country address format; some styles add legislation specific segments |
HR_PHONE_API.CREATE_PHONE | Add a phone number to a person or other parent record | p_date_from, p_phone_type, p_phone_number, p_parent_id, p_parent_table | p_phone_id, p_object_version_number | For employees, p_parent_table is PER_ALL_PEOPLE_F |
HR_JOB_API.CREATE_JOB | Create a job in a business group | p_business_group_id, p_date_from, p_job_group_id, p_segment1 | p_job_id, p_object_version_number, p_job_definition_id, p_name | Segments depend on your Job key flexfield structure |
HR_POSITION_API.CREATE_POSITION | Create a position within a job and organization | p_job_id, p_organization_id, p_date_effective, p_segment1 | p_position_id, p_object_version_number, p_position_definition_id, p_name | Segments depend on your Position key flexfield structure |
HR_ORGANIZATION_API.CREATE_ORGANIZATION | Create an HR organization | p_business_group_id, p_date_from, p_name, p_location_id, p_type | p_organization_id, p_object_version_number | Classifications are added separately |
HR_LOCATION_API.CREATE_LOCATION | Create a location | p_effective_date, p_location_code, p_description, p_style, p_address_line_1, p_country, p_postal_code | p_location_id, p_object_version_number | Style selects the address format used by the location |
HR_APPLICANT_API.CREATE_APPLICANT | Create an applicant with an application | p_date_received, p_business_group_id, p_last_name, p_person_type_id | p_person_id, p_applicant_number (IN OUT), p_per_object_version_number, p_application_id, p_assignment_id | Hire later with HR_APPLICANT_API.HIRE_APPLICANT |
FND_GLOBAL.APPS_INITIALIZE | Set the user, responsibility and application context before calling APIs from SQL*Plus or a script | user_id, resp_id, resp_appl_id | None | Required when running outside a concurrent program or session that already has the context |
Call example (verify parameters against the package specification in your release): BEGIN fnd_global.apps_initialize(user_id => 1234, resp_id => 50000, resp_appl_id => 800); hr_person_api.update_person(p_validate => FALSE, p_effective_date => TRUNC(SYSDATE), p_datetrack_update_mode => 'CORRECTION', p_person_id => 5678, p_object_version_number => l_ovn, p_effective_start_date => l_esd, p_effective_end_date => l_eed, p_full_name => l_full_name, p_comment_id => l_comment_id, p_name_combination_warning => l_name_warn, p_assign_payroll_warning => l_payroll_warn, p_orig_hire_warning => l_hire_warn); COMMIT; END; Parameter lists differ by release (R12.1, R12.2) and legislation. Confirm exact signatures with DESC on the package or in the Oracle Integration Repository. Use p_validate => TRUE to test a call and roll it back.
EBS data access, kept on-prem
Ask how a private AI layer can answer questions over EBS data while it stays on your servers. Optional.
Optional. The tool and every export work without this. No spam.
How to use the reference
Search for the business event you need, such as hire, terminate or change assignment, and read across the row: the package and procedure, the key IN parameters, and the OUT and IN OUT values you must keep. The list is a map, not a full parameter dictionary. Always confirm the full parameter list in your release with DESC on the package spec or in the Oracle Integration Repository, because the signature depends on your version and legislation.
Rules every HRMS API call follows
Initialize the apps context with FND_GLOBAL.APPS_INITIALIZE before calling from outside an application session. Date-tracked records need a date-track update mode such as CORRECTION, UPDATE, UPDATE_OVERRIDE or UPDATE_CHANGE_INSERT and an effective date. The object version number is IN OUT: pass the current value and store the one returned for the next call. Use the hr_api default constants to leave a value unchanged on update.
- Set context with FND_GLOBAL.APPS_INITIALIZE
- Pass p_effective_date and a date-track mode for date-tracked updates
- Keep and reuse the returned object version number
- Use p_validate => TRUE to dry-run and roll back
- Commit yourself; the APIs do not commit
Why use the APIs and not direct table updates
The public APIs enforce HR business rules, maintain date-track history, fire business events and keep related tables consistent. Direct inserts or updates into PER_ALL_PEOPLE_F, PER_ALL_ASSIGNMENTS_F or PER_PERIODS_OF_SERVICE skip that logic and can corrupt data or break payroll and benefits, and they put you outside Oracle support. Use APIs for any write, and use views and SQL only for reading.
Common mistakes
Frequent failures are missing apps context, passing a stale object version number after another update, using the wrong date-track mode for the change, and ignoring warning flags the API returns. Terminations also take two steps, actual termination and final process. Test in a non-production instance with p_validate set to TRUE before bulk loading with a script.
Frequently Asked Questions
What is HR_EMPLOYEE_API.CREATE_EMPLOYEE used for?
It hires a new employee in Oracle EBS HRMS by creating the person record, the period of service and the first assignment in one call. It returns the person id, assignment id, object version numbers and the employee number.
Do Oracle HR APIs commit the transaction?
No. The public HRMS APIs do not issue a commit, so your code must commit or roll back. You can use the p_validate parameter set to TRUE to run all validation and roll the change back automatically.
Where can I find the full parameter list of an HR API?
Use DESC on the package in SQL*Plus or read the package specification in the database, or look at the API in the Oracle Integration Repository for your release. Parameters vary between releases and legislations.
Can I update HR tables directly instead of using the APIs?
You should not. Direct changes bypass date-track handling, business rules and events, and can cause data corruption and unsupported states. Use the public APIs for writes and keep SQL for reporting only.
If you want to query your EBS HR and ERP data in plain language without exposing it outside your network, Netray builds private, read-only AI layers that run on-prem.
Related Tools
Oracle EBS HRMS Employee Table Query Generator
Generates a current-employee query over PER_ALL_PEOPLE_F, PER_ALL_ASSIGNMENTS_F, organizations, jobs and supervisors with the date-track filters done right.
OracleOracle EBS Concurrent Request Phase and Status Reference
Look up every common phase and status combination for a concurrent request, with what it means and the first thing to check.
Microsoft DynamicsBusiness Central API v2.0 URL Builder
Generate correct Business Central API v2.0 endpoints, OData query strings, the OAuth token request and a test call for SaaS or on-premises.
SAPSAP PP Transaction Codes Reference
A searchable cheat sheet of the SAP PP transaction codes planners and consultants use every day, grouped by area.
More Oracle tools
See all- Oracle EBS Inventory Tables Reference
- Oracle EBS WIP Tables Reference
- Oracle EBS Cycle Count Workload Calculator
- Oracle EBS Discrete Manufacturing Go-Live Checklist
- Oracle EBS Inventory Accuracy Readiness Assessment
- Oracle EBS Responsibility Design Worksheet
- Oracle EBS GL Period Close Checklist
- Oracle EBS AP Invoice Interface Template
- Oracle EBS 12.2 Upgrade Readiness Checklist
Keep exploring
Free tools
- Oracle EBS HRMS Employee Table Query GeneratorGenerates a current-employee query over PER_ALL_PEOPLE_F, PER_ALL_ASSIGNMENTS_F, organizations, jobs and supervisors with the date-track filters done right.
- Oracle EBS Employee, HR and Projects Tables ReferenceLookup of the EBS base tables for employees, assignments, organizations and Oracle Projects, with the key columns and joins you need for reports.
- Oracle EBS Inventory Tables ReferenceSearchable lookup of the core Oracle EBS Inventory and Cost Management tables with purpose and key columns, for report writers and technical consultants.
ERP fixes and how-tos
- Oracle EBS REST API: Integrated SOA Gateway and PL/SQL APIsOracle EBS REST and SOAP APIs through Integrated SOA Gateway: find APIs in the Integration Repository, deploy, grant access and call PL/SQL public APIs.
- 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.
- How to Create an Item in Oracle EBSCreate an inventory item in Oracle EBS: Master Items form, master organization, templates, attributes, organization assignment, categories and common errors.
Runs with your ERP
- Esker Order Management and Oracle E-Business SuiteHow Esker captures customer POs from email, fax and PDF and creates sales orders in Oracle EBS: integration, data flows, setup, pitfalls and a private AI layer.
- Cloud Inventory (DSI) with Oracle E-Business Suite: Mobile Barcode InventoryCloud Inventory, formerly DSI, adds offline mobile barcode inventory to Oracle E-Business Suite and JD Edwards. Data flows, setup steps, pitfalls and AI notes.
- Loftware Integration for Oracle EBS: WMS Label RequestsHow the Loftware Integration - Oracle EBS component connects Oracle WMS label requests to Loftware Cloud, Enterprise SP or NiceLabel LMS, plus setup.
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.