Oracle Fusion HCM Lookup Codes — Complete Reference Guide

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.

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

  1. Navigate to Setup and Maintenance
  2. Search for the task: Manage Common Lookups
  3. In the Lookup Type field, enter the lookup name (e.g., PER_ASSIGNMENT_CATEGORY)
  4. 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
HIREHireInitial hire of a new employee
REHIRERehireRehiring a previously terminated employee
ADD_CWKAdd Contingent WorkerAdding a contingent worker (contractor)
TERMINATIONTerminationEnd of employment
END_CONTINGENT_WORKEREnd Contingent WorkerEnd CWK placement
PROMOTIONPromotionGrade/job promotion
TRANSFERTransferDepartment, location, or BU transfer
MANAGER_CHANGEManager ChangeChange in reporting manager
DATA_CHANGEData ChangeGeneral data correction or update
EMPL_STATUS_CHANGEEmployment Status ChangeActive to suspended, etc.
LOCATION_CHANGELocation ChangeWork location change only
JOB_CHANGEJob ChangeJob change without promotion
POSITION_CHANGEPosition ChangePosition reassignment
PROBATION_COMPLETIONProbation CompletionEnd of probation period
DEMOTIONDemotionGrade/job demotion
GLOBAL_TRANSFERGlobal TransferTransfer across legal entities
ADD_ASSIGNAdd AssignmentAdding a secondary assignment

ACTION_REASON

Action reasons provide the "why" behind an action. Paired with ACTION_TYPE. Extensible

Code Meaning Typical Action
RESIGNATIONResignationTERMINATION
RETIREMENTRetirementTERMINATION
REDUNDANCYRedundancy / LayoffTERMINATION
DEATHDeathTERMINATION
MISCONDUCTMisconductTERMINATION
END_OF_CONTRACTEnd of ContractTERMINATION / END_CWK
POOR_PERFORMANCEPoor PerformanceTERMINATION / DEMOTION
BUSINESS_NEEDBusiness NeedTRANSFER / LOCATION_CHANGE
CAREER_DEVELOPMENTCareer DevelopmentPROMOTION / TRANSFER
REORGANIZATIONReorganizationTRANSFER / POSITION_CHANGE
PERSONAL_REASONSPersonal ReasonsRESIGNATION
RELOCATIONRelocationLOCATION_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_PROCESSActive - Payroll EligibleNormal active assignment, processed by payroll
ACTIVE_NO_PROCESSActive - No PayrollActive but excluded from payroll runs
INACTIVEInactiveAssignment is not active (post-termination)
SUSPEND_PROCESSSuspended - Payroll EligibleSuspended with payroll (e.g., leave with pay)
SUSPEND_NO_PROCESSSuspended - No PayrollSuspended without payroll (e.g., unpaid leave)

ASSIGNMENT_CATEGORY

Employment category for the assignment. Extensible

Code Meaning Description
FRFull-Time RegularStandard full-time employment
FTFull-Time TemporaryFull-time with end date
PRPart-Time RegularOngoing part-time employment
PTPart-Time TemporaryPart-time with end date
SESeasonalSeasonal employment
FCFull-Time ContractorContingent worker, full-time
PCPart-Time ContractorContingent 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
EEmployeeStandard employee with an employment relationship
CContingent WorkerContractor, consultant, temporary worker
NNonworkerPerson 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
EMPEmployeeActive employee
CWKContingent WorkerActive contingent worker
EX_EMPEx-EmployeePreviously terminated employee
EX_CWKEx-Contingent WorkerPreviously ended contingent worker
PENDING_WORKERPending WorkerPerson with future-dated hire (pre-hire)
APLApplicantJob applicant (recruiting)
CONTACTContactEmergency contact, dependent, beneficiary
OTHEROtherNon-categorized person type

ADDRESS_TYPE

Address type for person addresses in PER_ADDRESSES_F. Extensible

Code Meaning Description
HOMEHome AddressPrimary residential address
MAILMailing AddressMailing/correspondence address (may differ from home)
WORKWork AddressWork location address (typically from HR_LOCATIONS_ALL)

PHONE_TYPE

Phone type codes stored in PER_PHONES.PHONE_TYPE. Extensible

Code Meaning Description
H1Home PhonePrimary home phone number
W1Work PhonePrimary work phone number
MMobileMobile / cell phone number
FFaxFax number
WFWork FaxWork fax number
H2Home Phone 2Secondary home phone
W2Work Phone 2Secondary work phone
HFHome FaxHome fax number

EMAIL_TYPE

Email type codes stored in PER_EMAIL_ADDRESSES.EMAIL_TYPE. Extensible

Code Meaning Description
W1Work EmailPrimary work email address
H1Home EmailPrimary personal/home email address
W2Work Email 2Secondary work email
H2Home Email 2Secondary 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
SSingle
MMarried
DDivorced
WWidowed
LLegally Separated
DPDomestic Partner
NDNot Disclosed

SEX (Gender)

Gender codes stored in PER_ALL_PEOPLE_F.SEX and PER_PERSON_LEGISLATIVE_F.SEX. Standard

Code Meaning
MMale
FFemale
NSNot 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
GLOBALGlobal NameStandard name format (First, Middle, Last). Required for all persons.
LOCALLocal NameCountry-specific name format (e.g., Japanese kanji, Chinese characters)
DISPLAYDisplay NameName as displayed in the UI (often auto-derived)
LISTList NameName format for list views (typically "Last, First")
FULLFull NameFull concatenated name
ORDEROrder NameName 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
VACATIONVacation / Annual LeavePaid Time Off
SICKSick LeavePaid Time Off
PERSONALPersonal LeavePaid Time Off
BEREAVEMENTBereavement LeavePaid Time Off
JURY_DUTYJury DutyPaid Time Off
MATERNITYMaternity LeaveStatutory Leave
PATERNITYPaternity LeaveStatutory Leave
FMLAFamily Medical Leave (US)Statutory Leave
UNPAIDUnpaid LeaveUnpaid
MILITARYMilitary LeaveStatutory 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
USAmerican English
GBBritish English
FRFrench
DGerman
ESpanish
JAJapanese
ZHSSimplified Chinese
ZHTTraditional Chinese
KOKorean
PTPortuguese
PTBBrazilian Portuguese
ARArabic
NLDutch
IItalian

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

  1. Navigate to Setup and Maintenance
  2. Search for Manage Common Lookups
  3. Click the + (Create) button
  4. Enter a Lookup Type name (e.g., XX_CUSTOM_STATUS). Prefix with XX_ or your company code to avoid conflicts with Oracle-seeded types.
  5. Set the Module to the appropriate application
  6. Add Lookup Codes with meanings and descriptions
  7. 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

  1. Navigate to Setup and Maintenance
  2. Search for Manage Extensible Lookups
  3. Search for the lookup type (e.g., ACTION_REASON)
  4. Click the + button in the Lookup Codes section
  5. Enter your new code, meaning, and description
  6. Set Enabled to Yes and optionally set start/end dates
  7. Save

Tips & Gotchas

Case Sensitivity

Lookup Code vs. Meaning

Extensible vs. Standard

Date-Effective Lookups

Legislation-Specific Lookups

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

Related Articles