Lookup codes are the backbone of Oracle Fusion HCM's coded values. Every time you see a dropdown in the UI — action types, worker types, phone types, marital status — those values come from lookups stored in FND_LOOKUP_VALUES. If you write OTBI reports, build HDL files, or develop integrations, you need to know these codes. This is the reference you will bookmark.
On This Page
- What Are Lookups
- Finding Lookups in the UI
- ACTION_TYPE
- ACTION_REASON
- ASSIGNMENT_STATUS_TYPE
- ASSIGNMENT_CATEGORY
- WORKER_TYPE
- SYSTEM_PERSON_TYPE
- ADDRESS_TYPE
- PHONE_TYPE
- EMAIL_TYPE
- MARITAL_STATUS
- SEX (Gender)
- NAME_TYPE
- ABSENCE_TYPE & ABSENCE_REASON
- FND_LANGUAGES
- SQL Queries for Lookups
- Creating Custom Lookups
- Tips & Gotchas
What Are Lookups
A lookup is a code-to-meaning mapping. The code is what gets stored in database columns (e.g., E), and the meaning is what users see in the UI (e.g., "Employee"). Lookups live in FND_LOOKUP_VALUES and related tables.
Lookup Types
| Type | Who Can Modify | Examples |
|---|---|---|
| Standard | Oracle only (seeded, read-only to customers) | WORKER_TYPE, SYSTEM_PERSON_TYPE, ASSIGNMENT_STATUS_TYPE |
| Extensible | Customer can add new codes (not modify seeded ones) | ACTION_TYPE, ACTION_REASON, PHONE_TYPE |
| User / Custom | Customer creates and manages entirely | Custom DFF lookups, organization classifications |
Key distinction: Standard lookups are locked — you cannot add, remove, or rename values. Extensible lookups let you add your own codes alongside Oracle's seeded ones. Custom lookups are yours to create and manage.
Finding Lookups in the UI
- Navigate to Setup and Maintenance
- Search for the task: Manage Common Lookups
- In the Lookup Type field, enter the lookup name (e.g.,
PER_ASSIGNMENT_CATEGORY) - Click Search to see all codes, meanings, descriptions, and enabled flags
For HCM-specific extensible lookups, use Manage Extensible Lookups instead. The navigation is similar but shows extensible lookup types.
ACTION_TYPE
Action types define what happened to a worker: hire, termination, promotion, etc. Used in PER_ALL_ASSIGNMENTS_F and PER_PERIODS_OF_SERVICE. Extensible
| Code | Meaning | Description |
|---|---|---|
| HIRE | Hire | Initial hire of a new employee |
| REHIRE | Rehire | Rehiring a previously terminated employee |
| ADD_CWK | Add Contingent Worker | Adding a contingent worker (contractor) |
| TERMINATION | Termination | End of employment |
| END_CONTINGENT_WORKER | End Contingent Worker | End CWK placement |
| PROMOTION | Promotion | Grade/job promotion |
| TRANSFER | Transfer | Department, location, or BU transfer |
| MANAGER_CHANGE | Manager Change | Change in reporting manager |
| DATA_CHANGE | Data Change | General data correction or update |
| EMPL_STATUS_CHANGE | Employment Status Change | Active to suspended, etc. |
| LOCATION_CHANGE | Location Change | Work location change only |
| JOB_CHANGE | Job Change | Job change without promotion |
| POSITION_CHANGE | Position Change | Position reassignment |
| PROBATION_COMPLETION | Probation Completion | End of probation period |
| DEMOTION | Demotion | Grade/job demotion |
| GLOBAL_TRANSFER | Global Transfer | Transfer across legal entities |
| ADD_ASSIGN | Add Assignment | Adding a secondary assignment |
ACTION_REASON
Action reasons provide the "why" behind an action. Paired with ACTION_TYPE. Extensible
| Code | Meaning | Typical Action |
|---|---|---|
| RESIGNATION | Resignation | TERMINATION |
| RETIREMENT | Retirement | TERMINATION |
| REDUNDANCY | Redundancy / Layoff | TERMINATION |
| DEATH | Death | TERMINATION |
| MISCONDUCT | Misconduct | TERMINATION |
| END_OF_CONTRACT | End of Contract | TERMINATION / END_CWK |
| POOR_PERFORMANCE | Poor Performance | TERMINATION / DEMOTION |
| BUSINESS_NEED | Business Need | TRANSFER / LOCATION_CHANGE |
| CAREER_DEVELOPMENT | Career Development | PROMOTION / TRANSFER |
| REORGANIZATION | Reorganization | TRANSFER / POSITION_CHANGE |
| PERSONAL_REASONS | Personal Reasons | RESIGNATION |
| RELOCATION | Relocation | LOCATION_CHANGE / TRANSFER |
ASSIGNMENT_STATUS_TYPE
Controls the current state of an assignment. Stored in PER_ALL_ASSIGNMENTS_F.ASSIGNMENT_STATUS_TYPE_ID. Standard
| Code | Meaning | Description |
|---|---|---|
| ACTIVE_PROCESS | Active - Payroll Eligible | Normal active assignment, processed by payroll |
| ACTIVE_NO_PROCESS | Active - No Payroll | Active but excluded from payroll runs |
| INACTIVE | Inactive | Assignment is not active (post-termination) |
| SUSPEND_PROCESS | Suspended - Payroll Eligible | Suspended with payroll (e.g., leave with pay) |
| SUSPEND_NO_PROCESS | Suspended - No Payroll | Suspended without payroll (e.g., unpaid leave) |
ASSIGNMENT_CATEGORY
Employment category for the assignment. Extensible
| Code | Meaning | Description |
|---|---|---|
| FR | Full-Time Regular | Standard full-time employment |
| FT | Full-Time Temporary | Full-time with end date |
| PR | Part-Time Regular | Ongoing part-time employment |
| PT | Part-Time Temporary | Part-time with end date |
| SE | Seasonal | Seasonal employment |
| FC | Full-Time Contractor | Contingent worker, full-time |
| PC | Part-Time Contractor | Contingent worker, part-time |
WORKER_TYPE
Defines the type of worker for a work relationship. Stored in PER_PERIODS_OF_SERVICE. Used in HDL WorkRelationship files. Standard
| Code | Meaning | Description |
|---|---|---|
| E | Employee | Standard employee with an employment relationship |
| C | Contingent Worker | Contractor, consultant, temporary worker |
| N | Nonworker | Person with no work relationship (e.g., board member, volunteer) |
SYSTEM_PERSON_TYPE
System-level person type classification. Stored in PER_PERSON_TYPE_USAGES_F. Standard
| Code | Meaning | Description |
|---|---|---|
| EMP | Employee | Active employee |
| CWK | Contingent Worker | Active contingent worker |
| EX_EMP | Ex-Employee | Previously terminated employee |
| EX_CWK | Ex-Contingent Worker | Previously ended contingent worker |
| PENDING_WORKER | Pending Worker | Person with future-dated hire (pre-hire) |
| APL | Applicant | Job applicant (recruiting) |
| CONTACT | Contact | Emergency contact, dependent, beneficiary |
| OTHER | Other | Non-categorized person type |
ADDRESS_TYPE
Address type for person addresses in PER_ADDRESSES_F. Extensible
| Code | Meaning | Description |
|---|---|---|
| HOME | Home Address | Primary residential address |
| Mailing Address | Mailing/correspondence address (may differ from home) | |
| WORK | Work Address | Work location address (typically from HR_LOCATIONS_ALL) |
PHONE_TYPE
Phone type codes stored in PER_PHONES.PHONE_TYPE. Extensible
| Code | Meaning | Description |
|---|---|---|
| H1 | Home Phone | Primary home phone number |
| W1 | Work Phone | Primary work phone number |
| M | Mobile | Mobile / cell phone number |
| F | Fax | Fax number |
| WF | Work Fax | Work fax number |
| H2 | Home Phone 2 | Secondary home phone |
| W2 | Work Phone 2 | Secondary work phone |
| HF | Home Fax | Home fax number |
EMAIL_TYPE
Email type codes stored in PER_EMAIL_ADDRESSES.EMAIL_TYPE. Extensible
| Code | Meaning | Description |
|---|---|---|
| W1 | Work Email | Primary work email address |
| H1 | Home Email | Primary personal/home email address |
| W2 | Work Email 2 | Secondary work email |
| H2 | Home Email 2 | Secondary personal email |
MARITAL_STATUS
Marital status codes stored in PER_PERSON_LEGISLATIVE_F.MARITAL_STATUS. Legislation-specific — some codes vary by country. Extensible
| Code | Meaning |
|---|---|
| S | Single |
| M | Married |
| D | Divorced |
| W | Widowed |
| L | Legally Separated |
| DP | Domestic Partner |
| ND | Not Disclosed |
SEX (Gender)
Gender codes stored in PER_ALL_PEOPLE_F.SEX and PER_PERSON_LEGISLATIVE_F.SEX. Standard
| Code | Meaning |
|---|---|
| M | Male |
| F | Female |
| NS | Not Specified / Prefer Not to Say |
Note: Some legislations (e.g., Australia, Germany) support additional gender codes like X (Indeterminate/Intersex/Unspecified). These are configured per legislation code.
NAME_TYPE
Name type codes in PER_PERSON_NAMES_F.NAME_TYPE. Standard
| Code | Meaning | Description |
|---|---|---|
| GLOBAL | Global Name | Standard name format (First, Middle, Last). Required for all persons. |
| LOCAL | Local Name | Country-specific name format (e.g., Japanese kanji, Chinese characters) |
| DISPLAY | Display Name | Name as displayed in the UI (often auto-derived) |
| LIST | List Name | Name format for list views (typically "Last, First") |
| FULL | Full Name | Full concatenated name |
| ORDER | Order Name | Name used for sorting/ordering |
ABSENCE_TYPE & ABSENCE_REASON
Absence types and reasons control leave management. These are highly configurable and vary by implementation, but Oracle seeds common types. Extensible
Common Absence Types
| Code | Meaning | Typical Category |
|---|---|---|
| VACATION | Vacation / Annual Leave | Paid Time Off |
| SICK | Sick Leave | Paid Time Off |
| PERSONAL | Personal Leave | Paid Time Off |
| BEREAVEMENT | Bereavement Leave | Paid Time Off |
| JURY_DUTY | Jury Duty | Paid Time Off |
| MATERNITY | Maternity Leave | Statutory Leave |
| PATERNITY | Paternity Leave | Statutory Leave |
| FMLA | Family Medical Leave (US) | Statutory Leave |
| UNPAID | Unpaid Leave | Unpaid |
| MILITARY | Military Leave | Statutory Leave |
Important: Absence types are NOT stored in FND_LOOKUP_VALUES like other lookups. They are configured as absence type definitions in the Absence Management work area and stored in their own tables. The codes above are common naming conventions, but your implementation may differ.
FND_LANGUAGES
Language codes used throughout Oracle Fusion for translations. Common codes found in _TL (translation) tables. Standard
| Code | Meaning |
|---|---|
| US | American English |
| GB | British English |
| FR | French |
| D | German |
| E | Spanish |
| JA | Japanese |
| ZHS | Simplified Chinese |
| ZHT | Traditional Chinese |
| KO | Korean |
| PT | Portuguese |
| PTB | Brazilian Portuguese |
| AR | Arabic |
| NL | Dutch |
| I | Italian |
SQL Queries for Lookups
Use these queries in OTBI, BI Publisher, or SQL Developer to look up valid codes programmatically.
Query All Values for a Lookup Type
SELECT lookup_code, meaning, description, enabled_flag, start_date_active, end_date_active FROM fnd_lookup_values WHERE lookup_type = 'ACTION_TYPE' AND language = 'US' AND enabled_flag = 'Y' AND NVL(end_date_active, SYSDATE + 1) > SYSDATE ORDER BY lookup_code;
Query HCM-Specific Lookups (PER Lookup Types)
SELECT flv.lookup_type, flv.lookup_code, flv.meaning, flv.description FROM fnd_lookup_values flv WHERE flv.lookup_type LIKE 'PER%' AND flv.language = 'US' AND flv.enabled_flag = 'Y' ORDER BY flv.lookup_type, flv.lookup_code;
Find Which Lookup Type a Code Belongs To
-- "What lookup type contains the code 'ACTIVE_PROCESS'?" SELECT lookup_type, lookup_code, meaning FROM fnd_lookup_values WHERE lookup_code = 'ACTIVE_PROCESS' AND language = 'US';
Count All Lookup Codes by Type
SELECT lookup_type, COUNT(*) AS code_count FROM fnd_lookup_values WHERE language = 'US' AND enabled_flag = 'Y' AND lookup_type LIKE 'PER%' GROUP BY lookup_type ORDER BY code_count DESC;
Creating Custom Lookups
You can create your own lookup types for custom DFFs, extensible flexfields, or integrations.
Steps to Create a Custom Lookup
- Navigate to Setup and Maintenance
- Search for Manage Common Lookups
- Click the + (Create) button
- Enter a Lookup Type name (e.g.,
XX_CUSTOM_STATUS). Prefix withXX_or your company code to avoid conflicts with Oracle-seeded types. - Set the Module to the appropriate application
- Add Lookup Codes with meanings and descriptions
- Save and close
Best practice: Always prefix custom lookup types with a company-specific code (e.g., XX_ACME_) to clearly distinguish them from Oracle-seeded lookups and avoid upgrade conflicts.
Adding Codes to Extensible Lookups
- Navigate to Setup and Maintenance
- Search for Manage Extensible Lookups
- Search for the lookup type (e.g.,
ACTION_REASON) - Click the + button in the Lookup Codes section
- Enter your new code, meaning, and description
- Set Enabled to Yes and optionally set start/end dates
- Save
Tips & Gotchas
Case Sensitivity
- Lookup codes are case-sensitive.
HIREis not the same ashireorHire. - Always use the exact case shown in the lookup definition
- In HDL files, mismatched case is one of the most common causes of "invalid lookup" errors
Lookup Code vs. Meaning
- The code (e.g.,
E) is what is stored in the database column - The meaning (e.g., "Employee") is what users see in the UI
- When building integrations or HDL files, always use the code, not the meaning
- OTBI reports may show the meaning — use the code column if you need to filter or join
Extensible vs. Standard
- Standard lookups are read-only. If you need a value that doesn't exist, talk to Oracle Support — there is no workaround.
- Extensible lookups let you add codes. Do not modify or disable Oracle-seeded codes — other features may depend on them.
- Custom lookups are entirely yours. Use them for DFFs and custom integrations.
Date-Effective Lookups
- Lookup codes can have
START_DATE_ACTIVEandEND_DATE_ACTIVE - Always filter by date when querying to avoid using disabled or future-dated codes
- End-dating a code does not remove it from historical records — it just hides it from dropdowns going forward
Legislation-Specific Lookups
- Many lookup types (marital status, gender, ethnicity) have legislation-specific variants
- A code valid in one country may not exist in another
- Check the
LEGISLATION_CODEcolumn when querying to get country-appropriate values
Explore the Lookup Tables Directly
View the full schema for FND_LOOKUP_VALUES and every HCM table that references lookup codes.
View FND_LOOKUP_VALUES Schema