Oracle HCM Position Table Guide

Share

Introduction

The Oracle Fusion HCM Position Table is a core technical object that every HCM consultant, reporting analyst, and integration developer eventually works with. Whether you’re building OTBI reports, writing BI Publisher extracts, or developing HDL loads, understanding how position data is stored in Fusion is critical.

In Oracle Fusion HCM (26A), the position model is tightly integrated with workforce structures, security, and approvals. The Position Table acts as the backbone for storing position-related attributes such as job, department, location, headcount, and synchronization settings.

From a consultant’s perspective, this is not just a table—it’s a central data object driving workforce planning, budgeting, and approvals.


What is Oracle Fusion HCM Position Table?

The Position Table in Oracle Fusion HCM refers primarily to the database table:

PER_POSITIONS_F

This is a date-effective table that stores all position-related records.

Key Characteristics:

  • Date Effective (Start & End Dates)

  • Supports multiple versions of the same position

  • Stores organizational attributes

  • Links with jobs, departments, grades, and locations

  • Used across modules like:

    • Workforce Structures

    • Recruiting

    • Workforce Compensation

    • Approvals

Important Related Tables

Table NamePurpose
PER_POSITIONS_FCore position details
PER_POSITIONS_TLTranslated position names
PER_ALL_ASSIGNMENTS_MEmployee assignment linked to position
HR_ALL_ORGANIZATION_UNITS_FDepartment details
PER_JOBS_FJob information
PER_LOCATION_DETAILS_FLocation data

Why Oracle Fusion HCM Position Table is Important

In real implementations, the Position Table becomes critical in:

  • Position Control Model

  • Headcount Planning

  • Approval Workflows

  • Security Profiles

  • Reporting & Analytics

If you don’t understand this table, you cannot:

✔ Build accurate reports
✔ Debug assignment issues
✔ Develop integrations using HDL or APIs
✔ Configure position synchronization


Key Concepts Explained Clearly

1. Date Effectivity

The Position Table uses:

  • EFFECTIVE_START_DATE

  • EFFECTIVE_END_DATE

This allows tracking of changes over time.

👉 Example:

  • Position A created on Jan 1

  • Updated department on March 1

Both versions exist in the table.


2. Position vs Assignment

  • Position → Organizational placeholder

  • Assignment → Employee record

Link:

 
PER_ALL_ASSIGNMENTS_M.POSITION_ID = PER_POSITIONS_F.POSITION_ID
 

3. Position Synchronization

When enabled:

  • Changes in position automatically update assignments

Example:

  • Change department in position

  • Employee assignment updates automatically


4. Headcount Control

Fields:

  • MAX_PERSONS

  • FTE (Full-Time Equivalent)

Used in:

  • Budgeting

  • Hiring approvals


5. Active vs Inactive Positions

Controlled using:

  • ACTIVE_STATUS

  • Hiring allowed flag


Real-World Integration Use Cases

Use Case 1: BI Publisher Report for Position Hierarchy

Client requirement:

  • Extract all positions with reporting hierarchy

Tables used:

  • PER_POSITIONS_F

  • Supervisor Position ID


Use Case 2: HDL Load for Position Creation

Scenario:

  • Bulk upload 10,000 positions

File:

  • Position.dat

Mapping:

  • PositionCode → POSITION_CODE

  • Department → ORGANIZATION_ID


Use Case 3: OIC Integration for Position Sync

Using OIC Gen 3:

  • Trigger: Position created

  • Action: Send to third-party workforce planning system

Flow:

  1. REST API call from Fusion

  2. OIC transformation

  3. Target system update


Architecture / Technical Flow

How Position Data Flows

  1. User creates position via UI

  2. Data stored in PER_POSITIONS_F

  3. Linked to:

    • Job

    • Department

    • Location

  4. Assignment references position

  5. Reports & integrations fetch data

Data Flow Diagram (Conceptual)

 
Position UI → PER_POSITIONS_F → Assignments → Reports / OIC / HDL
 

Prerequisites

Before working with Position Table:

Functional Setup

  • Enterprise Structure configured

  • Jobs created

  • Departments defined

  • Locations configured

Technical Access

  • BI Publisher access

  • OTBI access

  • SQL access (PaaS / BICC / ATP)


Step-by-Step Build Process

Scenario: Extract Position Data Using BI Publisher


Step 1 – Navigate to BI Publisher

Navigator → Tools → Reports and Analytics


Step 2 – Create Data Model

  • Select SQL Query

  • Use sample query:

 
SELECT
P.POSITION_ID,
P.POSITION_CODE,
PT.NAME,
P.EFFECTIVE_START_DATE,
P.EFFECTIVE_END_DATE,
P.ACTIVE_STATUS
FROM
PER_POSITIONS_F P,
PER_POSITIONS_TL PT
WHERE
P.POSITION_ID = PT.POSITION_ID
AND PT.LANGUAGE = ‘US’
 

Step 3 – Define Parameters

Example:

  • Position Code

  • Effective Date


Step 4 – Create Report Layout

  • Use RTF Template

  • Map fields


Step 5 – Save and Run

  • Submit report

  • Validate output


Testing the Technical Component

Test Scenario

Create a position:

  • Position Code: FIN_MGR_001

  • Department: Finance

  • Job: Finance Manager


Validation Steps

  1. Query PER_POSITIONS_F

  2. Verify:

  • Position exists

  • Correct effective dates

  • Active status = ‘A’


Expected Result

  • Position visible in UI

  • Assignment can be created

  • Report shows correct data


Common Errors and Troubleshooting

1. Missing Position in Report

Cause:

  • Wrong effective date filter

Fix:

 
SYSDATE BETWEEN EFFECTIVE_START_DATE AND EFFECTIVE_END_DATE
 

2. Duplicate Records

Cause:

  • Multiple effective-dated rows

Fix:

Use:

 
ROW_NUMBER() OVER (PARTITION BY POSITION_ID ORDER BY EFFECTIVE_START_DATE DESC)
 

3. Assignment Not Updating

Cause:

  • Synchronization disabled

Fix:

Enable:

  • Position Synchronization


4. HDL Load Failure

Cause:

  • Invalid Department ID

Fix:

  • Validate ORGANIZATION_ID


Best Practices

1. Always Handle Date Effectivity

Never write queries without:

 
SYSDATE BETWEEN EFFECTIVE_START_DATE AND EFFECTIVE_END_DATE
 

2. Use TL Table for Names

  • PER_POSITIONS_F → IDs

  • PER_POSITIONS_TL → Names


3. Avoid Hardcoding IDs

Use joins instead of static values.


4. Use Secured Views in Production

Instead of direct tables:

  • Use secured views like PER_POSITIONS_F_V


5. Optimize Performance

  • Avoid unnecessary joins

  • Use indexed columns like POSITION_ID


6. Validate Data Before HDL Loads

Always cross-check:

  • Job ID

  • Department ID

  • Location ID


Real Implementation Scenarios

Scenario 1: Banking Client – Position Control

  • Strict headcount control

  • Positions must be approved before hiring

Solution:

  • MAX_PERSONS enforced

  • Approval workflow configured


Scenario 2: IT Company – Dynamic Workforce

  • Frequent restructuring

  • Positions change often

Solution:

  • Date-effective updates

  • Synchronization enabled


Scenario 3: Manufacturing Client – Multi-location Setup

  • Same position across plants

Solution:

  • Separate positions per location

  • Linked to location ID


Frequently Asked Interview Questions

1. What is PER_POSITIONS_F?

It is the core table storing position data in Oracle Fusion HCM.


2. Why is it date-effective?

To track historical and future changes.


3. Difference between Position and Job?

  • Job → Role definition

  • Position → Specific slot in organization


4. How is Position linked to Assignment?

Using POSITION_ID.


5. What is Position Synchronization?

Automatic update of assignment when position changes.


6. What is MAX_PERSONS?

Defines headcount limit.


7. What is FTE?

Full-time equivalent value.


8. Which table stores position names?

PER_POSITIONS_TL


9. How to get active position?

Use effective date filter.


10. What is POSITION_CODE?

Unique identifier for position.


11. How to load positions?

Using HDL Position.dat file.


12. What happens if position is inactive?

Cannot assign employees.


13. How to avoid duplicate records?

Use ROW_NUMBER logic.


14. What is ORGANIZATION_ID?

Department reference.


15. Which tool is used for reporting?

OTBI / BI Publisher


Expert Tips

  • Always validate position hierarchy before reporting

  • Use OIC Gen 3 for real-time integrations

  • Avoid direct table access in SaaS production

  • Understand business model (Position vs Job model) before design

  • Debug issues using SQL first before UI


Summary

The Oracle Fusion HCM Position Table (PER_POSITIONS_F) is one of the most critical technical components in the HCM data model. It connects workforce structures, assignments, approvals, and reporting.

From real project experience:

  • Most reporting issues come from incorrect joins

  • Most integration failures come from wrong IDs

  • Most functional issues come from misunderstanding synchronization

If you master this table:

✔ You can build powerful reports
✔ You can debug production issues quickly
✔ You can design better integrations


FAQs

1. Can multiple employees share one position?

Yes, based on MAX_PERSONS value.


2. Is position mandatory in Fusion HCM?

No, depends on business model (Position vs Job model).


3. How to track position history?

Using effective start and end dates.


For more detailed reference, you can explore Oracle’s official documentation:

https://docs.oracle.com/en/cloud/saas/index.html


Share

Leave a Reply

Your email address will not be published. Required fields are marked *