Tuesday, 29 September 2026

Validate Overlapping Time Entries using Time Entry Rule

Validating Overlapping Time Entries in Oracle Fusion Time and Labor with a Fast Formula

Validating Overlapping Time Entries in Oracle Fusion Time and Labor with a Fast Formula

Oracle Fusion Cloud HCM · Time and Labor · Fast Formulas · Time Entry Rules

Introduction

Employees frequently enter time on timecards with overlapping start and stop times, for example one entry from 09:00–13:00 and another from 12:00–17:00. Left unchecked, this inflates hours and causes payroll and compliance issues. In this post I share a Time Entry Rule (TER) Fast Formula that detects overlapping DETAIL time records and raises an error on each affected row.

Business Scenario

The requirement was to stop a timecard from being saved or submitted when two worked-time entries overlap, while ignoring absence entries. The formula compares every pair of detail rows once and flags both rows in each overlapping pair so the user can see exactly which entries need correction.

Formula Details

ItemValue
Formula NameXX_VALIDATE_TIME_OVERLAP_RULE_FF
Formula TypeTime Entry Rule (TER)
PurposeThrows an error when two DETAIL records overlap based on Start/Stop times

Inputs

InputDescription
HWM_CTXARY_RECORD_POSITIONSArray of record positions (e.g. DETAIL) for each row
StartTimeStart time of each entry
StopTimeStop time of each entry
PayrollTimeTypePayroll time type of each entry
AbsenceTypeAbsence type of each entry (0 / empty for worked time)

Rule Template Parameters

ParameterDescription
MESSAGE_CODEMessage returned on overlap (default XX_TIME_OVERLAP_MSG)
WORKED_TIME_CONDITIONTime category ID for worked time (default 0)

How It Works

  1. Defaults and inputs: Default values are declared for every input so the formula never fails on missing data.
  2. Context and parameters: The formula reads the formula and rule IDs from context, then fetches the message code and time category from the rule template.
  3. Outer loop: It iterates through each row. Only DETAIL rows that are not absences are evaluated.
  4. Normalize times: Start and stop times are truncated to the minute with TRUNC(..., 'MI') so seconds do not cause false results.
  5. Inner loop: Each row is compared only with subsequent rows (jidx > nidx), which avoids duplicate comparisons. The absence type is read for each compared row, and absence rows are skipped while the loop continues through the remaining records.
  6. Overlap test: Two entries overlap when currStart < otherStop AND currStop > otherStart. Entries that merely touch (one ends exactly when the next begins) are not treated as overlapping.
  7. Error output: The message from GET_OUTPUT_MSG is written to the output array at both row positions, and the array is returned.
  8. Logging: ADD_RLOG writes entry, comparison, error, and exit messages, which makes troubleshooting through the rule log straightforward.

The Fast Formula

/* +======================================================================+
   | Formula Name : XX_VALIDATE_TIME_OVERLAP_RULE_FF                    |
   | Formula Type : Time Entry Rule (TER)                                |
   |                                                                      |
   | Description :                                                        |
   | Validates overlapping time entries based on Start/Stop times.        |
   | Throws error when two DETAIL records overlap.                        |
   +======================================================================+ */

/* ===============================
   Default Values
   =============================== */
DEFAULT FOR HWM_CTXARY_RECORD_POSITIONS IS EMPTY_TEXT_NUMBER
DEFAULT FOR StartTime IS EMPTY_DATE_NUMBER
DEFAULT FOR StopTime IS EMPTY_DATE_NUMBER
DEFAULT FOR PayrollTimeType IS EMPTY_TEXT_NUMBER
DEFAULT FOR AbsenceType IS EMPTY_NUMBER_NUMBER 

INPUTS ARE
  HWM_CTXARY_RECORD_POSITIONS,
  StartTime,
  StopTime,
  PayrollTimeType,
  AbsenceType

/* ===============================
   Context
   =============================== */
ffs_id  = GET_CONTEXT(HWM_FFS_ID, 0)
rule_id = GET_CONTEXT(HWM_RULE_ID, 0)

NullDateTime = '1900/01/01 00:00:00'(DATE)

RecPositionDetail = 'DETAIL'

/* ===============================
   Rule Template Parameters
   =============================== */
pMsgcd     = get_rvalue_text(rule_id, 'MESSAGE_CODE', 'XX_TIME_OVERLAP_MSG')
pTimeCatId = get_rvalue_number(rule_id, 'WORKED_TIME_CONDITION', 0)

/* ===============================
   Header Values
   =============================== */
sum_lvl = Get_Hdr_Text(rule_id, 'RUN_SUMMATION_LEVEL', 'DETAIL')

/* ===============================
   Logging
   =============================== */
l_status = add_rlog (
              ffs_id,
              rule_id,
              'Enter: XX_VALIDATE_TIME_OVERLAP_RULE_FF'
           )

/* ===============================
   Initialize
   =============================== */
out_msg_ary = EMPTY_TEXT_NUMBER

max_ary = HWM_CTXARY_RECORD_POSITIONS.COUNT

nidx = 0

/* ===============================
   Main Loop
   =============================== */
WHILE (nidx < max_ary) LOOP
(
  nidx = nidx + 1

  currPos = HWM_CTXARY_RECORD_POSITIONS[nidx]
  aiAbs_nidx = 0
  IF (AbsenceType.EXISTS(nidx)) THEN ( aiAbs_nidx = AbsenceType[nidx] )

  IF (currPos = RecPositionDetail and aiAbs_nidx = 0) THEN
  (
      currStart = NullDateTime
      currStop  = NullDateTime

      IF (StartTime.EXISTS(nidx)) THEN
      (
         currStart = trunc(StartTime[nidx],'MI')
      )

      IF (StopTime.EXISTS(nidx)) THEN
      (
         currStop = trunc(StopTime[nidx],'MI')
      )

      jidx = 0

      WHILE (jidx < max_ary) LOOP
      (
         jidx = jidx + 1

         aiAbs_jidx = 0
         IF (AbsenceType.EXISTS(jidx)) THEN ( aiAbs_jidx = AbsenceType[jidx] )

         /* Compare only subsequent, non-absence rows to avoid duplicates */
         IF (jidx > nidx AND aiAbs_jidx = 0) THEN
         (
            comparePos = HWM_CTXARY_RECORD_POSITIONS[jidx]

            IF (comparePos = RecPositionDetail) THEN
            (
                otherStart = NullDateTime
                otherStop  = NullDateTime

                IF (StartTime.EXISTS(jidx)) THEN
                (
                   otherStart = trunc(StartTime[jidx],'MI')
                )

                IF (StopTime.EXISTS(jidx)) THEN
                (
                   otherStop = trunc(StopTime[jidx],'MI')
                )

                l_status = add_rlog(
                    ffs_id,
                    rule_id,
                    'Compare Row=' || TO_CHAR(nidx) ||
                    ' [' || TO_CHAR(currStart) ||
                    ' - ' || TO_CHAR(currStop) || ']'
                    ||
                    ' With Row=' || TO_CHAR(jidx) ||
                    ' [' || TO_CHAR(otherStart) ||
                    ' - ' || TO_CHAR(otherStop) || ']'
                )

                /* ===============================
                   Overlap Logic
                   =============================== */

                IF (
                     currStart < otherStop
                     AND
                     currStop > otherStart
                   )
                THEN
                (
                    msg_txt = GET_OUTPUT_MSG('HWM', pMsgcd)

                    out_msg_ary[nidx] = msg_txt
                    out_msg_ary[jidx] = msg_txt

                    l_status = add_rlog(
                        ffs_id,
                        rule_id,
                        'ERROR Overlap detected Row=' ||
                        TO_CHAR(nidx) ||
                        ' overlaps Row=' ||
                        TO_CHAR(jidx)
                    )
                )
            )
         )
      )
  )
)

/* ===============================
   Exit
   =============================== */
l_status = add_rlog (
              ffs_id,
              rule_id,
              'Exit: XX_VALIDATE_TIME_OVERLAP_RULE_FF'
           )

RETURN out_msg_ary

Setup Steps

  1. Create the message XX_TIME_OVERLAP_MSG in the HWM application (Manage Messages) with your error text.
  2. Create the Fast Formula of type Time Entry Rule and paste the code above.
  3. Create or edit a time entry rule template and reference the formula, setting the MESSAGE_CODE and WORKED_TIME_CONDITION parameters.
  4. Add the rule to a rule set and attach it to the relevant time processing profile.
  5. Enter overlapping entries on a timecard and review the rule log to confirm the behavior.

Tips and Considerations

  • Use the rule log (ADD_RLOG output) while testing; remove or reduce verbose logging in production for performance.
  • Entries with a missing start or stop time default to 1900/01/01, so review how incomplete entries should be handled in your implementation.
  • Parameters such as pTimeCatId and PayrollTimeType are read but not used in the overlap test. They are available for extending the logic, for example to restrict checks to specific time categories.
  • Complexity is O(n²) per timecard, which is fine for typical daily entry counts.

Conclusion

This formula gives timekeepers immediate, row-level feedback on overlapping entries and keeps bad data out of payroll. It can be extended to filter by time category, project, or payroll time type. I hope it helps you in your Oracle Fusion Time and Labor implementations. Feedback and enhancements are welcome in the comments.

Displaying Worker Profile Photos in Oracle Fusion OTBI Reports

Displaying Worker Profile Photos in Oracle Fusion OTBI Reports

In Oracle Cloud HCM, standard Oracle Transactional Business Intelligence (OTBI) reports typically display tabular alphanumeric details such as Person Number, Display Name, Job, and Department. However, business stakeholders frequently request visual rosters, headcounts, or executive directory dashboards that include worker profile images.

While OTBI subject areas do not expose person photo BLOB objects directly as reportable columns, we can dynamically render worker photos inline by leveraging Oracle Fusion’s internal image servlet path combined with OTBI’s Treat Text as HTML data formatting. In this technical walkthrough, we configure an end-to-end report in Workforce Management - Person Real Time to surface worker images seamlessly.

📌 Technical Architecture Profile

Target Subject Area Workforce Management - Person Real Time
Key Dimension Attributes "Worker"."Person ID", "Worker"."Person Number", "Worker"."Name"
Servlet Endpoint Pattern /hcmUI/personImage?personId=<PERSON_ID>
Column Properties Setting Data Format > Treat Text as: HTML
Supported Views Table Views, Pivot Views, Performance Tiles (Browser/Dashboard View)

Step 1: Create Analysis & Select Columns

Begin by creating a standard OTBI analysis using the Person Real Time subject area.

Navigation: Tools > Reports and Analytics > Browse Catalog > New > Analysis

  1. Select Subject Area: Workforce Management - Person Real Time.
  2. From the Worker folder, add the baseline identifying attributes:
    • Person Number
    • Person ID (required for the image servlet hook)
    • Name
  3. Add an additional dummy column or duplicate Person ID to convert into the image display column.
Selected Columns in OTBI Analysis Criteria
Figure 1: Selected Criteria columns in Workforce Management - Person Real Time.

Step 2: Construct the HTML Image Servlet Formula

Oracle Fusion HCM serves worker profile pictures via an authenticated lightweight endpoint located at /hcmUI/personImage?personId=<value>. By concatenating this relative URL into an HTML <img> tag and casting the numeric Person ID to a character type, the report dynamically requests each worker's image at runtime.

  1. Click the Settings (gear icon) on the column designated for worker photos and select Edit Formula.
  2. Rename the Column Heading to Person Image.
  3. Enter either of the following formula expressions in the Column Formula editor:
OTBI Column Formula: Image Tag Concatenation
'<img src="/hcmUI/personImage?personId=' || CAST("Worker"."Person ID" AS char) || '">'

Optional: If you wish to enforce consistent sizing directly within the HTML markup, specify height and width attributes:

'<img src="/hcmUI/personImage?personId=' || CAST("Worker"."Person ID" AS char) || '" height="60" width="60" style="border-radius: 50%;">'
Edit Column Formula in OTBI
Figure 2: Entering the relative image servlet formula in the Edit Column Formula dialog.

Step 3: Enable 'Treat Text as HTML' in Column Properties

By default, OTBI escapes markup characters to prevent cross-site script injection, rendering the formula string literally (e.g., displaying the raw <img ...> string). To execute and render the image tag, you must update the column data format:

  1. Click the Settings (gear icon) on the Person Image column and select Column Properties.
  2. Navigate to the Data Format tab.
  3. Select the checkbox Override Default Data Format.
  4. Under the Treat Text as dropdown, select HTML.
  5. Click OK to confirm.
Opening Column Properties
Figure 3: Accessing Column Properties from the column action menu.
Configuring Treat Text as HTML in Data Format tab
Figure 4: Selecting Treat Text as HTML under Data Format.

Step 4: Reviewing Results in Table View

Navigate to the Results tab. The browser resolves the relative servlet URI for each row, loading and displaying the corresponding employee photo directly beside their demographic details.

OTBI Report Output Showing Employee Photos
Figure 5: Live OTBI analysis output rendering worker profile images inline.

Architectural Considerations & Key Limitations

⚠️ Important Implementation Gotchas:
  • Export Limitations (Excel & PDF): When exporting this report to Microsoft Excel or PDF, the image will not embed as a graphic object. Because OTBI does not fetch and serialize the binary image during spreadsheet rendering, Excel will display either blank cells or raw HTML markup. This technique is intended primarily for interactive online dashboards and catalog table views.
  • Relative URI vs. Absolute URLs: Using the relative path /hcmUI/personImage?personId=... ensures that your report remains fully portable across environments (DEV, TEST, and PROD pods) without hardcoding server hostnames or requiring modification post-migration.
  • Session Authentication: The image endpoint requires an active Fusion session. If an unauthorized user attempts to query the direct image URL, the servlet returns a redirect to the identity provider (SSO) login.
  • Fallback Behavior: If an employee has not uploaded a profile picture, Oracle Fusion’s servlet automatically renders a default placeholder avatar silhouette.

🔑 Key Implementation Summary

  • Endpoint: Concatenate '/hcmUI/personImage?personId=' || CAST("Worker"."Person ID" AS char) || '">'.
  • Rendering Mode: Set Column Properties > Data Format > Treat Text as HTML.
  • Best Fit: Use for interactive HR dashboards, manager portals, and directory queries where visual identification enhances user experience.
Oracle Cloud HCM Analytics OTBI Reporting & Visualization

AI Agent: Spreadsheet Data Loader Advisor for HSDL

AI Agent: Spreadsheet Data Loader Advisor for HSDL – Complete Setup & Runtime Walkthrough Guide

Bulk data entry in Oracle Cloud HCM has traditionally relied on technical HCM Data Loader (HDL) pipelines or desktop-dependent HCM Spreadsheet Data Loader (HSDL) workbooks. In Update 26C, Oracle transforms this experience with the release of the AI Agent: Spreadsheet Data Loader Advisor for HSDL.

Delivered as an autonomous workflow agent running inside AI Agent Studio and surfaced directly on Redwood pages via Guided Journeys, this advisor allows users to upload raw delimited CSV files and execute HSDL batch loads through natural conversation. Below is the complete step-by-step implementation guide covering security permissions, ESS indexing jobs, CSV header matching rules, and the complete runtime demonstration with every step illustrated.

📌 Technical Architecture Profile

Target Release Oracle Fusion Cloud HCM Update 26C
Delivered Agent Name Spreadsheet Data Loader Advisor
Agent Workflow Code ORA_DATALOADER_HSDL_AGENT
Deployment Architecture Guided Journey (Workflow Agent) on Redwood Pages / AI Agent Studio / AI Chat
Supported File Inputs Delimited CSV Files (Cross-platform: macOS, Linux, Windows)
Delivered Privileges Access HCM Spreadsheet Data Loader Advisor & Access HCM Data Loader Advisor

Step 1: Configure Administrator Profile Options

Enabling the AI Agent and Guided Journey infrastructure requires setting four profile options at the Site level. Setting ORA_ASE_SAS_INTEGRATION_ENABLED to Yes is critical, as it activates the Permission Groups button on role configuration screens in Security Console.

Navigation: Setup and Maintenance > Search Tasks: Manage Administrator Profile Values

Profile Option Code Required Value Level Functional Purpose
ORA_ASE_SAS_INTEGRATION_ENABLED Yes Site Enables Smart Agent Services & activates Permission Groups in Security Console
ORA_PER_GUIDED_JOURNEYS_ENABLED Y Site Enables Guided Journeys framework across Fusion HCM
ORA_PER_GUIDED_JOURNEYS_SETUP_REDWOOD_ENABLED Y Site Enables Redwood configuration for Guided Journeys Setup
ORA_HCM_VBCS_PWA_ENABLED Y Site Enables Redwood Visual Builder Progressive Web App framework

Step 2: Security Role Architecture (Duty Role, Job Role & User Assignment)

Access to the HSDL AI Agent is governed through dedicated duty and job roles utilizing Permission Groups. Follow these sub-steps in the Security Console (Tools > Security Console):

A. Create the Custom Duty Role (AL_TEST_AGENT_DUTY_ROLE)

  1. Click Create Role.
  2. Set Role Name to AL_TEST_AGENT_DUTY_ROLE and Role Code to AL_TEST_AGENT_DUTY_ROLE.
  3. Select Role Category as HCM - Duty Roles.
  4. Under Duty role for, select the radio button Permission Groups.
Figure 1: Creating custom duty role with 'Permission Groups' radio checked.
  1. Navigate to Step 5: Role Hierarchy and click the Roles and Permission Groups sub-tab.
  2. Click Add Role, search for, and add the following two permissions:
    • Access HCM Spreadsheet Data Loader Advisor (Code: ORA_DR_HRC_ACCESS_HSDL_LOADER_ADVISOR)
    • Access HCM Data Loader Advisor (Code: ORA_DR_HRC_ACCESS_DATA_LOADER_ADVISOR)
  3. Proceed to the Summary step and click Save and Close.
Figure 2: Adding HSDL and HDL Advisor permission groups under Duty Role Hierarchy.
Figure 3: Summary verification for AL_TEST_AGENT_DUTY_ROLE.

B. Create the Custom Job Role & Assign to User

  1. Click Create Role.
  2. Set Role Name to AL_TEST_DL_AGENT_JOB_ROLE and Role Code to AL_TEST_DL_AGENT_JOB_ROLE.
  3. Select Role Category as HCM - Job Roles and check Enable Permission Groups.
Figure 4: Creating AL_TEST_DL_AGENT_JOB_ROLE with Permission Groups enabled and adding duty role membership.
  1. Under Role Hierarchy > Roles and Permission Groups, search for and add the newly created duty role: AL_TEST_AGENT_DUTY_ROLE.
  2. Save and close the Job Role.
  3. Navigate to Users in Security Console, edit the target user account (e.g., Mitch Blum), and attach AL_TEST_DL_AGENT_JOB_ROLE. Save and close.
Figure 5: Attaching AL_TEST_DL_AGENT_JOB_ROLE to user account in Security Console.

Step 3: Run Document Preparation & Indexing ESS Processes

The HSDL Advisor relies on Retrieval-Augmented Generation (RAG) and document indexing to understand business objects and existing active templates. Navigate to Tools > Scheduled Processes and submit the following three background jobs in sequence:

⚠️ Sequential Execution Requirement: Run each process only after the preceding process has completed with a status of Succeeded. Files cannot be loaded or interpreted by the agent until Process Agent Documents finishes successfully.
  1. Send Pending LDAP Requests: Synchronizes role memberships and permission groups across application security.
  2. Prepare HCM Data Loader AI Agent: Configures agent parameters and sets up initial business object mappings.
  3. Process Agent Documents (ProcessRAGDocuments): Processes and publishes HSDL business object metadata, template structures, and documentation into the agent vector store.
Figure 6: Monitoring Scheduled Processes to verify indexing completion.

Step 4: CSV File Preparation & Header Mapping Rules

The HSDL Advisor does not create new HSDL templates. Instead, it consumes a delimited CSV file, reads the attribute columns in the header row, checks which existing active HSDL template is suitable for that data, and initiates the load.

Header Row Identification Rule

The headers in the CSV file must correspond to attributes defined under the HDL Business Objects page (Data Exchange > View Business Objects) or active HSDL template field names.

  • Row 1 is mandatory headers: Do not include titles, blank rows, or company notes above the first row.
  • Attribute name alignment: Use exact or recognizable attribute labels (e.g., EffectiveStartDate, BusinessUnitName, PositionCode).
  • File Format: Always save as CSV UTF-8 (Comma delimited) (*.csv).

Sample CSV Layout: Position Business Object

Here is the exact CSV format used in the demonstration (Position_load.csv) configured to load Position attributes:

EffectiveStartDate,BusinessUnitName,PositionCode,Name,DepartmentName
01-01-1951,US1 Business Unit,123450,Name_123450,Benefits US

Step 5: Testing & Running the Advisor in AI Agent Studio

Administrators can test and demo the advisor directly in AI Agent Studio before publishing to end users:

1. Locate Workflow in AI Agent Studio

Sign in as an Administrator (e.g., Curtis Feitty), navigate to AI Agent Studio > Workflows, and search for Spreadsheet Data Loader Advisor (Code: ORA_DATALOADER_HSDL_AGENT). Click the Run (Play) icon to launch the chat interface.

Figure 7: Locating and launching the Spreadsheet Data Loader Advisor workflow in AI Agent Studio.

2. Initiate Chat & Upload CSV

In the chat interface, click the prompt: "Help me load data from a CSV file". The agent explains that it will inspect the header row, identify attributes, suggest active HSDL templates, map columns, and initiate the load. Attach and upload Position_load.csv using the paperclip attachment icon.

Figure 8: Initiating conversational data load and uploading Position_load.csv.

3. Automatic Object Identification & Template Approval

The agent inspects the file, outputs "Identified business object : Position", and displays a table of available active templates (Position / Code: ORA_PER_POSITION and Positions_Translations). Click Approve to proceed with the recommended template.

Figure 9: Business object identification and interactive template recommendation table.

4. Job Initiation & Review Confirmation

Upon clicking Approve, the agent transitions through Thinking... and confirms: "Data load was successfully initiated for the file with request ID : 10036474". It provides direct links: "Review Spreadsheet: here" and "Navigate To Recent Spreadsheet Loads" along with the exact data set name.

Figure 10: Successful HSDL load initiation message with Request ID and audit links.

5. Verify in Data Exchange Work Area

Navigate to Data Exchange > Recent Spreadsheet Loads to verify the background load status, imported row counts, and data set details.

Figure 11: Auditing the batch execution under Data Exchange > Recent Spreadsheet Loads.

Step 6: Deploying the Advisor to Redwood Pages via Guided Journey

To expose the advisor directly to users on operational Redwood pages (such as Position Creation or Data Exchange), configure a Guided Journey task and bind it in Visual Builder Studio:

A. Create the Guided Journey

  1. Navigate to My Client Groups > Show More > Journeys Setup > Guided Journey.
  2. Click Create to initialize a new Guided Journey.
  3. Add a task with the following values:
    • Task Name: HCM Spreadsheet Data Loader AI Agent
    • Task Description: Upload csv files and initiate HSDL
    • Task Type: Agent
    • Agent Type: Workflow Agent
    • Workflow Agent: HCM Spreadsheet Data Loader Advisor
  4. Save the Guided Journey and record the generated Guided Journey Code and Task Code.

B. Bind in Visual Builder Studio

  1. Open any target Redwood page (such as the Position creation page).
  2. From the Settings and Actions user menu, select Edit Page in Visual Builder Studio.
  3. Select an existing project or create a new VB Studio workspace project.
  4. Under Page Properties, locate the Set Guided Journey Page property at the Page level and select your Guided Journey.
  5. Use Preview to test the advisor's interactive CSV upload, then Publish the workspace.

What’s Coming Next: Enhancements in 26D

Oracle has already previewed significant functional additions arriving in Update 26D to expand conversational diagnostics and status auditing:

  • Real-Time Load Progress: Conversational tracking of data set execution status, including counts of loaded objects.
  • In-Line Error Diagnostics: Detailed failure breakdowns displaying message type, source process, full error text, and occurrence counts.
  • Natural Language Historical Search: Ask queries like "Show me the largest loads submitted last week" or "Find loads submitted by user Mitch Blum".
  • Structured Summary Tables: Direct tabular responses containing data set names, row counts, creation dates, templates used, and spreadsheet links.

🎯 Key Implementation Takeaways

  • Role Setup with Permission Groups: Select the Permission Groups radio button on the duty role after setting ORA_ASE_SAS_INTEGRATION_ENABLED to Yes.
  • Scheduled Processes Ordering: Always verify that Prepare HCM Data Loader AI Agent and Process Agent Documents have succeeded before attempting CSV loads.
  • Template Discovery: The agent does not create new templates; your CSV headers must match attributes of existing, active HSDL templates in the pod.
  • Cross-Platform Ready: Business users on macOS, Linux, or ChromeOS can now execute HSDL loads directly through browser conversation without installing Windows desktop integration tools.
Oracle Fusion Cloud HCM Update 26C Spreadsheet Data Loader Advisor Setup Guide

Sunday, 27 September 2026

Oracle HCM 26C: Absence Plans & Types Redwood Experience

Oracle Cloud HCM 26C Deep Dive: Absence Plans and Absence Types in Redwood Experience

With Update 26C, Oracle Cloud HCM brings major configuration milestones to Absence Management by introducing the Redwood UI for Absence Types and Absence Plans setup. This release modernizes administrative maintenance, reorganizes classic tabs, deprecates legacy rules, and introduces conditional rule-building while aligning with Visual Builder Studio (VB Studio) business rules.

In this post, we analyze what moved, what changed across each plan type's configuration screens, the underlying database footprint, known issues, and the pre-enablement checklist to review before enabling these Redwood setup pages.

🎥 Reference Materials & Session Walkthrough

This breakdown accompanies the Oracle Support walkthrough session: Watch Absence Types Redwood Experience Walkthrough and the official release notes: Oracle Readiness 26C: Absence Types Redwood Experience.


1. Enabling Redwood Setup Pages (Profile Options)

Both setup pages are delivered disabled by default. Administrators can activate them at the Site level using Manage Administrator Profile Values:

Profile Option Code Default Target Setup Page & Description
ORA_ANC_PLANS_VBCS_UI_ENABLED N Enables the Redwood VBCS UI for Absence Plans configuration.
ORA_ANC_TYPES_VBCS_UI_ENABLED N Enables the Redwood VBCS UI for Absence Types configuration.

2. Redwood Absence Plans: Architecture & Key Changes

The Redwood Absence Plan setup introduces dynamic field exposure—rule details and child parameters are revealed only when they functionally apply.

A. Navigation & Header Updates

  • Basic Details moves into the plan header.
  • History is now directly accessible from the Details tab.

B. Progressive Disclosure for Balance Dispositions

Balance disposition options now control when their related configuration fields appear:

  • Rollover positive balance: When selected, the rollover rules section is enabled with: Rollover Rule, Rollover Limit, Rollover Target Plan, and Conversion Factor.
  • Transfer positive balance: When selected, the transfer rules section is enabled with: Limit Rule, Limit, Limit Formula, Limit Proration Rule & Formula, Plan Category, and Target Plan Formula.

C. Intuitive Condition Builder for Accrual Matrices

The Add Accrual matrix now includes a more intuitive Condition Builder instead of the legacy expression builder to define criteria.

D. Entries and Balances Defaults

  • Transfers and Adjustments options are unchecked by default.
  • Year End Disbursements is disabled by default and has been moved under post rollover and carryover in the Year End Processing section of the Accruals tab.

3. Absence Plans: Configured Screens & Tabs by Plan Type

Across all absence plan types, Plan Attributes has been renamed to Details, and the legacy Additional Details tab has been reorganized and renamed to Event Processing where applicable. The available tabs and setup screens for each plan type in Redwood include:

Plan Type Configured Tabs / Screens in Redwood Structural & Functional Scope
Accrual
  • Details (Renamed from Plan Attributes)
  • Participation
  • Accruals
  • Entries and Balances
  • Event Processing (Renamed from Additional Details)
Includes the new intuitive Condition Builder for matrix setup and Year End Disbursements under Year End Processing.
Compensatory
  • Details (Renamed from Plan Attributes)
  • Participation
  • Plan Rules
  • Entries and Balances
  • Event Processing (Renamed from Additional Details)
Replaces the Accruals tab with Plan Rules for managing compensatory time earn/expiry logic and event updates.
Donation
  • Details (Renamed from Plan Attributes)
  • Participation
  • Entries and Balances
  • Event Processing (Renamed from Additional Details)
Streamlined layout for peer-to-peer or pool recipient ledgers, disposition rules, and event triggers.
Qualification
  • Details (Renamed from Plan Attributes)
  • Participation
  • Entitlements
  • Entries and Balances
Houses entitlement band matrices evaluated along rolling backward/forward or calendar term definitions.
Agreement
  • Details (Renamed from Plan Attributes)
  • Entitlements
  • Entries and Balances
Omits the Participation tab; configurations focus directly on agreement terms, entitlements, and balance tracking.
No Entitlement
  • Details (Renamed from Plan Attributes)
  • Participation
  • Entries and Balances
Pass-through setup for unpaid leaves routing rate reduction entries to payroll without an accrual matrix.

4. Redwood Absence Types: What Deserves Immediate Attention in 26C

A. Splitting "Display Features" into Two Dedicated Tabs

In classic UI, attributes and rules were grouped under Display Features. In Redwood, these are split into two dedicated tabs:

  • Display Features Tab: Consists of sections and attributes.
  • Rules Tab: Consists of all the rules.

B. Supplemental Region → Single Display Value for "Additional Fields"

The legacy Supplemental region is removed and replaced by Additional Fields.

⚠️ Functional Shift: You can now set a single display value for all three user roles (Employee, Manager, and Administrator) for:
  • Authorized Absence
  • Authorization Status Update
  • Blocked Leave Status
  • Notification Date
  • Condition Start Date
When updating an existing absence type in Redwood, any correction or update to the above fields applies the same display value to all three roles!

C. Entry Display Priority Checkbox

The classic Entry display order field is replaced by the Entry display priority checkbox. Enabling this checkbox prioritizes the absence type in the LOV, sorted alphabetically.

D. Maternity & Childbirth Placement Pattern Governance

Maternity fields will no longer be configured within Absence Type setup. When an absence pattern of Childbirth or placement is selected, these fields are automatically displayed and editable on the Redwood entry page for all three roles:

  • Planned absence start date & end date
  • Intend not to return to work
  • Expected Date of Event & Actual Date of Event
  • Matching date (when Event Type is configured as placement)
  • Expected week of event

Action Required: In Redwood, previous type-level display controls for maternity fields are ignored. You must use Visual Builder Studio (VB Studio) business rules to configure display and edit properties.

E. Deprecated and Renamed Elements

  • Renamed: Advanced absence entry is renamed to Detailed absence entry across both classic and Redwood (no functional impact).
  • Deprecated Rule: Late notification evaluation rule is deprecated.
  • Removed Fields: Late notification waived, Late notification, Late notification waiver date, Disease code, and Initial reporting organization are removed.

5. Technical Architecture: Database Tables (Zero Schema Disruption)

Underlying database tables remain unchanged between Classic and Redwood setups:

Underlying Database Table Functional Role & Content
ANC_ABSENCE_PLANS_F Core setup parameters and definitions for absence plans.
ANC_ACCRUAL_BANDS_F Accrual plan length-of-service and rate band configuration.
ANC_PLAN_ELIG_PROFILES_F Eligibility profile linkages associated with absence plans.
ANC_ENTL_BANDS_F / _DTL_F Qualification plan entitlement bands and banding detail definitions.
ANC_ABSENCE_TYPES_F Absence type setup records defining entry parameters.
ANC_ABSENCE_TYPE_REGIONS_F Display Features setup metadata and region configuration.
ANC_ABS_TYPE_RGN_USAGES_F Absence type display region usages across user roles.
ANC_ABS_USAGE_RULES_F Display features usage rules linked to specific types.

6. Known Behaviors & Roadmap Notes (26D & 27A)

Tracked Behaviors to Keep in Mind:

  • Conversion & Validation Formula Display (Fixed in 26D): In Redwood Absence Type setup, Conversion and Validation formulas appeared in Edit mode but did not reflect values in View mode. In 26D+, values remain consistently visible across View, Update, and Correct modes.
  • Accrue On Field for Front-Loaded Plans (Fixed in 27A): In Redwood Absence Plan setup, the Accrue On field was visible in View mode for front-loaded accrual plans (despite being hidden in classic UI and update mode). In 27A+, this field is completely suppressed for front-loaded plans.

7. Five-Step Pre-Enablement Checklist for 26C

Before switching profile options in production environments, complete these validation milestones:

  1. Review High-Volume & Role-Specific Absence Types: Audit any absence type where Authorized Absence, Condition Start Date, or Notification Date had disparate settings between employee and manager roles.
  2. Configure VB Studio Business Rules for Maternity: If your organization uses Childbirth or placement absence patterns, define business rules in Visual Builder Studio to enforce appropriate field-level visibility and editability across roles before cutover.
  3. Audit Accrual Band Matrices: Check that condition logic in the new Condition Builder matches legacy Expression Builder configurations across all active accrual plans.
  4. Verify Rollover & Transfer Balance Dispositions: Confirm that target plans and proration rules correctly resolve under the new progressive disclosure toggles.
  5. Perform End-to-End Regression Testing: Run end-to-end tests covering entry, approval routing in Transaction Console, Fast Formula duration evaluation, and scheduled accrual runs (Calculate Accruals and Balances).

🎯 Conclusion & Takeaway

The 26C Redwood release delivers a streamlined, modern administration interface for Absence Plans and Types. By preparing VB Studio rules for maternity patterns early and understanding the single display value behavior for additional fields, functional leads can execute a seamless, zero-downtime transition to Redwood setup.