You are on page 1of 17

9/12/2017 Document 808814.

Troubleshooting Tips for Oracle HRMS Absence Management (Doc ID 808814.1)

In this Document

Purpose
Troubleshooting Steps
I) Understanding and Using Paid Time Off (PTO)
a) Introduction
I) Defining An Accrual Plan
II) Accrual Formulas
III) Using An Accrual Plan
IV) Viewing Accrual Details
V) The Carry Over Process
VI) Technical Details
VII) Writing Accrual Formulas
VIII) Accrual Formula Functions

II) Troubleshooting Methods


1. PTO Carryover Process
a) Not creating Carryover Element
b) Not creating Carryover Element but creating Residual Element
c) Creating Carryover Element with Incorrect Values
d) Process finishes with Error
e) Does not work for anniversary date that is mid-month
f) Future dated carryover element entries
g) Annual Leave not working as expected (not carrying over values)
h) Erroring for few employees and want to bypass the error

2. Incorrect Accrual Balances


a) Accrual Plan Hours in the Entitlement Details is off
b) Net Entitlement Over Ceiling Amount
3. SOE Issues:
a) Mismatch in Accrual Balance in SOE/Accrual Form Vs Checks/Deposit Advices
b) Duplicate PTO Pay elements display in SOE and results in overpayment
4. Absence Entry through Absence Form (Core-HR):
a) Absence Entry through absence form raising error
b) Absence Duration Calculation Incorrect
c) Absence Entry not creating effective date
d) Error in defining Absence Type
e) Issue when Entering Absence Hours in LOA (ESS)
f) To Exclude weekends from absence duration calculation using absence duration formula
5. Error when Entering Absence Hours in Oracle Time & Labor

https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 1/17
9/12/2017 Document 808814.1

6. Other Information
a) How the Duration on Element Entries calculated
b) Eligibility of PTO Plans
c) Stop Accrual Plans from Going Negative
d) Difference between Current Year To Date and Running Total Fields in Absence Detail Form
7. Troubleshooting Custom PTO Fast Formulas
a) Debugging Methodology for Custom PTO Fast Formulas
Replacing the custom formulas for PTO Plan with the seeded formulas and upload the results:
b) Tracing Custom PTO Fast Formulas
1) Trace formula/function with system profile option HR: FastFormula debug level
2) Adding trace statements to a fast formula
3) Running PYUPIP after trace statements entered
References

APPLIES TO:

Oracle Human Resources - Version 11.5.10.0 and later


Information in this document applies to any platform.

PURPOSE

This document is intended as a guide to assist analysts investigate issues surrounding the Absence Management. It is
recommended that you review the documentation on Absence Management in online documentation.

TROUBLESHOOTING STEPS

I) Understanding and Using Paid Time Off (PTO)

a) Introduction

An accrual plan is created to describe how PTO is accrued, and what type of absence is being recorded. There are many
different rules that you may want to define for an accrual plan. For example: if there is a period of ineligibility; when a new
employee joins the plan (e.g. hire date, start of next calendar year, etc); the amount of accrual and what it is based on, for
example, grade, length of service, etc; whether or not you can carry over PTO; if you can buy or sell PTO.
All these different rules can be accommodated by Oracle HRMS PTO Accruals. You may need to create several accrual plans to
deal with different absence types, or different rules of accrual. You can define more than one plan using the same absence
type.

I) Defining An Accrual Plan

An accrual plan is used to define the rules for a type of PTO. It can be used to calculate how much time has been accrued and
how much has been taken by an employee. The count of time taken is calculated by adding up all the days taken by a person
for a particular absence type. Associating an element to the absence type to hold a balance does this. So the first step to
defining an accrual plan is to create an absence type and associate an element to it with an increasing balance.

You will then need to define the accrual plan. It is assumed here that you will use seeded accrual and carry over formulas in
this plan. However, if the rules for your plan are not the same as those in the seeded formulas, then you will need to analyze
your rules and create an accrual formula and a carry over formula of your own.

https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 2/17
9/12/2017 Document 808814.1

1. Enter a plan name


2. Enter a category (this comes from the Quickcode US_PTO_ACCRUAL - you can add new codes to this and it is just used for
information)
3. Pick in the Accrual and Carry Over formulas you want to use
4. Select a Start Rule (optional - it depends on the accrual formula. PTO_PAYROLL_CALCULATION and
PTO_PAYROLL_BALANCE_CALCULATION are the only seeded accrual formulas which takes its start rule from the screen). The
start rule is the time from which a participant starts to accrue PTO. New start rules can be created by adding new values to
the Quickcode US_ACCRUAL_START_TYPE any new start rules will have to be coded into the accrual formula
5. Select days or hours as the unit of time you are recording - ensure this matches the UOM for the input value of the absence
element
6. Select the name of the element and its input value which will be used to hold absences
7. Enter a period of time for which an employee can accrue but not use PTO. This is only entered if a start rule of Hire Date or
Beginning of Year has been entered and you require a period of ineligibility
8. Pick in an ineligibility formula - this is only required if absence details are to be entered via BEE
9. Save your plan
10. Go to the Accrual Bands window and enter the amount accrued for relevant lengths of service. This is optional, but if you
use the PTO_PAYROLL_CALCULATION formula you will need to enter at least one row here
11. Go to the Net Calculation Rules window to view or change the rules for calculating employees net PTO. This works like the
balances screen - you can select element input values whose values will be added or subtracted to the PTO total. For example
you could have an element for PTO Sales and the value of the input value would be the number of PTO days bought (or a
negative amount for sold) by the employee.
When you save the plan, the system will generate five new elements which are named after the plan <plan name> - this
represents the plan. An entry for this recurring element is given to each assignment in the plan; <plan name> Carried Over -
this is used to hold any PTO carried over from one term to the next; <plan name> Residual - this is used to hold any unused
PTO that cannot be carried over. <> Balance and <> Tagging being the other two elements.
The system creates a link for each of these elements which match the link defined for the absence element used in the plan.

II) Accrual Formulas

Accrual formulas are used so that the user has the ability to define how PTO is calculated themselves. There are seeded
formulas one set of which discussed here will perform a standard calculation of PTO that many plans will use. This assumes a
term of one year starting on 1st Jan, with an accrual frequency of a payroll period, and carry over effective from 31st Dec for
one year. Accrual amounts, carryover and ceilings are defined for each plan in the Accrual Bands screen. Then other 2 sets of
seeded formulas are provided as examples for the user to use to base your own formulas on if you require to calculate PTO
using other criteria.
There are three types of formula used by PTO Accruals.
Accruals formula PTO_PAYROLL_CALCULATION
Carryover formula PTO_PAYROLL_CARRYOVER
Ineligibility formula no standard formula - although a seeded formula exists,
PTO_INELIGIBILITY_CALCULATION - because the ineligibility rules for a plan that uses this formula is defined in the plan (i.e.
on the Define Plan screen).
Each plan needs to be associated with two formulas: an accrual formula which will calculate gross PTO entitlement to date,
and a carry over formula which will be called by the Carry Over process and will calculate how much PTO will be carried from
one term to the next.
You should include an Ineligibility formula if your ineligibility rules are defined in your accruals formula (and therefore the
Ineligibility zone of the Define Plan screen is empty) and you will be entering absence amounts via Batch Element Entry (BEE).
BEE will check for ineligibility rules entered in the Define Plan screen, and if it finds none then it will call the ineligibility formula
which will generate a batch line warning if the employee is ineligible to take the absence. If your plan uses the seeded
accruals formula PTO_PAYROLL_CALCULATION then eligibility checking is performed using the Period of Ineligibility zone on
the Define Accrual Plan screen.

III) Using An Accrual Plan

Employees can be enrolled with as many plans as is appropriate. Once enrolled in a plan you will accrue PTO according to the
rules associated with the plan (i.e. the rules specified in the Define Plan screen and the formulas used by the plan).
To enroll an employee onto a plan, you need to give them an entry for the <plan name> element. This element is one of
the 5 elements generated when you define the plan. It is a recurring element so you will start the entry on the date the
employee joins the plan and it will not be end dated until the employee leaves the plan. The input value Continuous Service
Date should be populated only if the plan should calculate the participants length of service from a date other than the date
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 3/17
9/12/2017 Document 808814.1

calculated by the start rule of the plan (the Accrual Start field in the Define Plan screen).
Each period (the PTO_PAYROLL_CALCULATION formula uses the employees payroll period as a PTO period) PTO will be
accrued by the participant. At the end of the year the PTO Carry Over Process must be run to deal with unused PTO for the
participant. When viewing PTO for a participant the amount of PTO accrued and the amount of absence (for the absence type
defined in the plan) are taken into account.

IV) Viewing Accrual Details

The Absence Accruals Screen


This screen is accessed via the Accruals button on the Absence Detail screen. The button is only available if the employee is
enrolled in an accrual plan that uses the displayed absence type. For each plan the employee is enrolled in the screen shows:

Before Net Entitlement - net accrual calculated as of the day before the current absence

After net Entitlement - net accrual calculated as of the start date of the current absence.

In the absence calculations, the whole absence is assumed to be taken on the first day so the net entitlement on the first day
of the absence will generally be the Before amount minus the number of days of the absence. Any other time debited or
credited to the accrual on that date will also be included. Projected Entitlement - net accrual at the end of the current term
taking into account any absences, including future dated absences. Only absences with an Actual Start Date (not just
projected start date) will be included.

The Accruals Window


This screen is accessed via the Navigate View > Accruals screen, or Navigate Fastpath > Accruals.
For each plan the employee is enrolled in the screen shows:
Effective Start Date - the date of the start of the term in which the session date falls
Effective End Date - taken from session date. This can be changed using the Date Track icon
Effective Last Accrual Date - the date that PTO was last added i.e. the end date of the last accrual period before the effective
End Date (e.g. the final day of the previous month if PTO is accrued monthly)
Net Entitlement - number of days accrued between the Effective Start Date and Effective End Date
In the Entitlement Details area, each element type, which contributes to the plan, is listed with a total of days added or
subtracted to PTO. The elements listed here will be the same as those listed in the Net Calculation Rules screen for the plan
and also the accrual plan element, <plan_name>. They show how the Net Entitlement figure has been made up.

V) The Carry Over Process

This process should be run at the end of the accrual term (e.g. the end of the year) of the plan. It uses the maximum carry
over value and the amount of unused accrued time to calculate how much time an employee will carry over to the next term.
If the amount of unused time is greater than the carry over amount then the employee loses the remaining time. The
employees balance of unused accrued time will be cleared down;
Any carry over PTO will be entered in the Carried Over <plan name> element entry;
Any lost PTO will be entered in the Residual <plan name> element entry.

The process should be run at the end of the term when all accruals and absences have been processed. If the process is re-
run then the values previously calculated will be replaced with the new values. So it is OK to run the process more than once -
for example if the employee books some last-minute absence at the end of the term. The parameter Reprocess All Participants
allows you to rerun the process if you have recently added employees to the plan and it will only process those participants
that have not already been processed for this year. The Accrual Term parameter allows you to run the Carry Over process for
the term spanning the Calculation Date parameter or for the previous year.

The Define Accrual Plan screen and the Bands screen allow you to make changes to the plan at any time. So you must ensure
that you do not make a change to the plan or its bands after you have run the carryover process. If you do, then the changes
will not be taken into account for the current term - you will need to rerun the Carryover process which will pick up the
changes and calculate correctly.

VI) Technical Details

Tables Used
PAY_ACCRUAL_PLANS holds the plan definitions.
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 4/17
9/12/2017 Document 808814.1

PAY_ACCRUAL_BANDS holds the amount of accrual for each length of service band for a plan.
PAY_NET_CALCULATION_RULES holds the calculation rules as defined in the Net Calculation Rules screen (from the Define
Plan screen). This is a list of element input values that contribute to the PTO for the plan.

Elements Used
Absence element - an element must be used to record absences. This could be associated with an absence type (so that an
entry is automatically created when an absence is corded) or could be entered manually or via BEE.

Elements generated when the plan is created:

<plan name> - an entry for this element indicates that the employee is participating in the plan;
<plan name> Carried Over - holds any PTO carried over from one term to the next;
<plan name> Residual - holds any unused PTO that cannot be carried over.

<plan name> Tagging


<plan name> Balance

Calculations

- Calculating PTO Accrued for an employee


The amount of PTO accrued for a participant is calculated by the accrual formula and it requires a parameter of Calculation
Date. The formula is run in the following circumstances:
1. When an absence is entered and the Accruals button is pressed to take the user to the Associated Accrual Plans screen. The
start date of the absence is used for Calculation Date;
2. When you view PTO entitlement in the Accruals screen. The session date is used for Calculation Date.
3. When the Carry Over process is run. Calculation Date is entered as a parameter for this concurrent process.

- Calculating PTO taken


The Absence Accruals screen and the Accruals screen display the amount of PTO taken. Both screens calculate this amount by
adding up the duration of the relevant type of absence taken by the employee. The duration is calculated from the input value
entries for any entries of the element associated with the plan for that employee.

- Calculating Carry Over

The amount of PTO that can be carried over from one term to the next is calculated by the Carry Over formula which is run by
the Carry Over process. It uses the amount of unused PTO and the amount of carry over allowed to create element entries for
the Carry Over and Residual elements.

- Ineligibility checking
Ineligibility checking is performed based on the ineligibility rules entered on the Define Plan screen when the plan is created. If
this is left blank however, the accrual formula can be ede the checks relevant to your plan.
The ineligibility formula is only run if you create absence element entries via BEE and you have not defined ineligibility criteria
for your plan but instead check for ineligibility in your accrual formula. When you validate the batch, BEE checks to see if
ineligibility rules have been defined in PAY_ACCRUAL_PLANS. If you have not then it will run the associated ineligibility formula
for the plan linked to the absence element.
The formula checks to ensure that the employee is eligible to use accrued PTO on the effective date of the absence element
entry in a batch line. If the employee is not eligible, then a warning will be generated for the batch line.

VII) Writing Accrual Formulas

If your accrual plan uses the rules listed under the PTO_PAYROLL_CALCULATION / PTO_PAYROLL_CARRYOVER formulas then
you can pick these in when you define the plan. In that case you do not need to write a formula.
If you have a plan with different rules such as the length of the accrual term, how much time is accrued by each employee,
when new employees can begin accruing and using time, and how much time can be carried over into a new accrual term
then you will need to write your own formulas for accrual calculation and carryover.
The best idea is to query up one of the seeded formulas which is the closest to your rules (see the above descriptions of the
rules associated with each set of formulas), and create a new formula based on that.
The accrual formulas are made up of a main formula (the one picked in on the Define Plan screen) and a sub-formula that is
called by the main formula. The main formula includes the necessary checks and any rules you require for the plan. It then
calculates PTO accrued up to the required calculation date by calling the sub-formula for each PTO period from the start of the

https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 5/17
9/12/2017 Document 808814.1

term to the calculation date. The sub-formula calculates the PTO accrued in the specified period and adds it to a running total.
Accrual formulas make a lot of use of a global variables. They are not the same as the FastFormula global variables which are
defined in the Globals form and set a value which will rarely if ever change. The package pefmlfnc.pkb defines PL/SQL tables
which are used to hold any global variables used in the accrual formulas. The variable definitions are stored in the three
PL/SQL tables (one of each type - text, date and number) held within a package.
The reason for creating this new type of variable is that the value is required to be accessible to more than one formula, so a
local variable would not work; and the value should be updateable from within a formula which is not possible with
FastFormula globals.
Accrual global variables are variables that can be assigned values, or accessed by all of the accrual-type formulas. A global
variable set in one formula can be access in another.
New accrual formula functions are provided which allow you to set a value to a global variable within a formula. There are also
new functions that take parameter values and the contexts from the formula to assign values to global variables.

VIII) Accrual Formula Functions

In addition to the standard FastFormula functions, several new functions can be used in accrual and carryover formulas.
GET_ABSENCE (start_date, calculation_date) -> calculates the total amount of absence contributing to an accrual plan
between two dates.
Each absence must have a start and end date and must start between start_date and calculation_date,
e.g. GET_ABSENCE(01-JAN-2000, 30-JUN-2000)
GET_CARRY_OVER (start_date, calculation_date) -> calculates the amount of carryover (based on Carry Over element entries)
with an effective date on or between the two input dates. It also checks if the carry over has expired and will not include it if it
has.
GET_OTHER_NET_CONTRIBUTION (start_date, calculation_date) -> calculates any PTO contributions other than absence and
carryover between the two input dates. These additional contributions are defined in the Net Calculation Rules screen for the
plan.

The following groups of functions are used in a different way.

When the function is called it sets a number of global variables which can then be retrieved in the formula using the
GET_DATE, GET_NUMBER and GET_TEXT functions.
When a function is called it will return a 0 if it was successful, otherwise there has been an error.
GET_PAYROLL_PERIOD(date) -> determines the payroll period spanning the input date and sets global variables to hold the
period start and end dates and the period number. E.g. This shows how to call this function and then use the GET_DATE and
GET_NUMBER functions to retrieve the values set in the global variables
E = GET_PAYROLL_PERIOD(01-JAN-2000)
Calculation_period_sd = GET_DATE(PAYROLL_PERIOD_START_DATE)
Calculation_period_ed = GET_DATE(PAYROLL_PERIOD_END_DATE)
Calculation_period_pnum = GET_NUMBER(PAYROLL_PERIOD_NUMBER)
GET_ACCRUAL_BAND(number) -> determines the appropriate accrual band for the input length of service.
It sets the global variables annual_rate, upper_limit and ceiling for that band.
E = GET_ACCRUAL_BAND(years_service)
annual_rate = GET_NUMBER(ANNUAL_RATE)
upper_limit = GET_NUMBER(UPPER_LIMIT)
ceiling = GET_NUMBER(CEILING)
GET_PERIOD_DATES(date1, unit, date2, number) -> sets the global variables period_start_date and period_end_date for a
period of time.
The period duration is specified by the number and unit inputs (eg 1 and M would be one month). The period must span the
date1 input and starts on a date that is a multiple of the duration forwards or backwards from date2.
Eg GET_PERIOD_DATES(10-MAR-200, M, 06-JUN-2000, 2) -> would find calculate a period_start_date of 06-FEB-2000 and a
period_end_date of 06-APR-2000 because the duration is 2 months and 06-APR-200) is 2*2months (i.e. 4 months) before 06-
JUN-2000 and 10-MAR-2000 is between the period_start_date and the period_end_date.
E = GET_PERIOD_DATES(10-MAR-200, M,6-JUN-2000, 2)
period_start_date = GET_DATE(PERIOD_START_DATE)
period_end_date = GET_DATE(PERIOD_END_DATE)
GET_ASSIGNMENT_STATUS(date) -> determines the assignment status on the input date and populates the global variables
assignment_effective_sd (start date), assignment_effective_ed (end date) and assignment_system_status
assignment_effective_sd = GET_DATE(ASSIGNMENT_EFFECTIVE_SD)
assignment_effective_ed = GET_DATE(ASSIGNMENT_EFFECTIVE_ED)
assignment_system_status = GET_TEXT(ASSIGNMENT_SYSTEM_STATUS)

https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 6/17
9/12/2017 Document 808814.1

PUT_MESSAGE(expr)
adds the input expr to the stack to be output at the end of the formula by the Accruals form. E =
PUT_MESSAGE(HR_74013_PTO_FML_ASG_INELIG)

Functions To Call a Formula


These functions allow you to call other formulas either once or in a loop. They require all the contexts that are available to the
Accruals formula type. They are used in the accrual formula to call a sub-formula which will calculate accrual for a single
period.
CALL_FORMULA(formula_name) -> calls the named formula with no inputs and no outputs
LOOP_CONTROL(formula_name) -> calls the named formula. That sub-formula must have a return parameter called
CONTINUE_LOOP. If that is set to Y then calls the same sub-formula again. If the CONTINUE_LOOP parameter contains N
then the loop is ended and the main formula continues processing.

Functions To Set and Retrieve Global Variables


These functions allow you to set and get values from global variables inside your formula.
SET_TEXT(variable_name, value)
SET_NUMBER(variable_name, value)
SET_DATE(variable_name, value)

These 3 functions assign the input value to the input global variable. Use the appropriate function depending on the data type
of the variable.
E = SET_DATE(PERIOD_SD, Accrual_start_period_sd)
GET_TEXT(variable_name)
GET_NUMBER(variable_name
GET_DATE(variable_name)

These 3 functions retrieve the value of the input global variable. Use the appropriate function depending on the data type of
the variable.
E = GET_NUMBER(TOTAL_ACCRUED_PTO)
CLEAR_GLOBALS -> takes all the global variables that have been set by SET_TEXT, SET_NUMBER and SET_DATE and resets
them all to null.
REMOVE_GLOBALS -> removes all global variables.
ISNULL(variable_name) -> checks to see if the named global variable is null or not. Y is returned if it is null and N is returned
if its not null.

II) Troubleshooting Methods

General Approach
Check My Oracle Support to see if the error or the issue reported has a case history. If so there may be a patch or workaround
that can be applied for this case. The best technique for searching the repository is to keep your queries as simple as possible.
For instance, search on Form Name, package name, error code, etc. This is likely to be more rewarding than a search based
on more general terms.

1. PTO Carryover Process

a) Not creating Carryover Element

This can happen for the following reasons

The default element links are missing:

Refer Note 748000.1: 'PTO Carryover Process Completes Successfully but does not Create Carryover Elements'.

https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 7/17
9/12/2017 Document 808814.1

The 5 default accrual plan elements links are:

Base PTO Accrual element


Carryover element
Residual element
Payroll balance
Tagging

Incompatible fast formulas defined in Accrual Plan Setup:

The issue can be caused if the Carryover formula (Seeded formula Template) and the Accrual formula (Seeded formula
Template) is not compatible with each other.
Refer Note.803465.1: PTO Carryover Process Completes Successfully But Has No Carryover Elements.

b) Not creating Carryover Element but creating Residual Element

This can happen if the default 'Max Carryover' value is not defined in accrual bands in the PTO accrual setup and all
Carryover Value is passed to Residual element.

Refer Note 757965.1: 'PTO Carry Over Completed Successfully But No Carryover Element Created In New Year' and follow the
steps below:

Go into the responsibility: HRMS Manager


Navigate to MENUPATH > Total Compensation > Basic > Accrual Plan > Query the Plan > Click on Accrual bands tab >
Add the Max Carryover Value ('99999') > Save.
Run the PTO Carryover Process with 'Calculation Date' as last payroll date earned date, and term as 'Current'

c) Creating Carryover Element with Incorrect Values

This can happen for the following reasons:

Custom Fast Formula calculating incorrect Carryover Value


Follow Step 7 (a) - Debugging Methodology for Custom PTO Fast Formulas
Incorrect parameters (Calculation Date/Term) passed to the PTO Carryover Process
Refer Note 261694.1: Running the PTO Carry Over Process
Custom Carryover Process calculating incorrect Carryover Value This has to be debugged by you as it is beyond the
scope of Oracle Support to debug customization.

d) Process finishes with Error

This can happen for the following reasons:

Invalid Fast Formula

i) If seeded fast formula then - Bounce the database


ii) If custom fast formula then - Correct the error within the formula
iii) Compile the fast formulas using either of the two options:

a) Run the Bulk Compile from concurrent request

b) Run the executable FFXBCP (from $FF_TOP/bin) with the following syntax from Unix:

i) To compile a specific formula


FFXBCP apps/<apps password> 0 Y %% '<formula name>'

ii) To compile all UN-COMPILED formula


FFXBCP apps/<apps password> 0 Y -U %% %%
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 8/17
9/12/2017 Document 808814.1
Note: Can happen for both custom and seeded formula

Terminated employees:
Error message shows Active PTO accrual element entries for terminated employees

i) End date the PTO accrual element entry for all terminated employees
ii) Enter Final Process Date for terminated employees
- This should skip the terminated employees

Missing Payroll Calendar:


Check whether Payroll Calendar is defined for next year(eg. APP-PAY-33238)

i) Setup Payroll Calendar for next 2 years

e) Does not work for anniversary date that is mid-month

This can happen for the following reasons:

Payroll balance reset date:

If the Net Entitlement is reset before the anniversary date then if the Carryover Process is run on anniversary date incorrect
values will be carried over. The Carryover Process when run on the anniversary date can only carry the Net Entitlement value
on that Calculation Date.

Refer Note 761386.1: PTO Carry Over Not Working For Anniversary Date That Is Mid-Month

Custom Fast Formula:

The Custom Fast Formulas can be the cause of the issue. Follow Step 7 (a) - Debugging Methodology for Custom PTO Fast
Formulas

f) Future dated carryover element entries

This can happen if the accrual plan is resetting on anniversary date and the Carryover process is run using Accrual Term
parameter as 'Current'.
Refer Note 261694.1: Running the PTO Carry Over Process
The solution is to run the Carryover process using Accrual Term parameter as 'Previous'.

g) Annual Leave not working as expected (not carrying over values)

Calculation Date: 01-Jan-2010


Accrual plan name: Annual Leave Accrual
Actual Term: Previous

This can happen if you have the accrual plan payroll balance reset setup. If you have setup the Payroll Balance Reset Date to
01-Jan, the accrual balance for the accrual plan will get re-set to zero on 1st Jan. If you are not using Payroll Balances, then
you can set the "Payroll Balance Reset Date" as "No Balance". This should allow you to Carryover the PTO accrual balance
from previous year to next year.

h) Erroring for few employees and want to bypass the error

To carry on the processing (i.e. to bypass the error and complete the process for other employees), will suggest do the
following workaround in Test instance with the issue:
a) Set the MAX_ERRORS_ALLOWED in pay_action_parameter table to a value more then the number of employees with error
If the MAX_ERRORS_ALLOWED parameter is already set, increase as needed. (Refer Note 431181.1)

https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 9/17
9/12/2017 Document 808814.1

b) Re-run the carryover process

c) Verify whether the process completed

d) When the process is done then you can DELETE the parameter from pay_action_parameters

e) Migrate the solution to PROD

f) If needed manually do the Carryover Element adjustment for employees with error.

Important:

------------

How to Trace PTO Carryover Process for One Employe

Refer - How to Run and Debug the Carryover Process for One Employee (Doc ID 261617.1)

2. Incorrect Accrual Balances

a) Accrual Plan Hours in the Entitlement Details is off

This can happen for the following reason:

Fast Formula Calculation

The calculation of PTO accrued in the PTO Accrual Formula and the Looping Sub-formula is wrong. The issue can be within the
formula or any of the formula functions the formula is calling.
Check whether the issue is with custom or seeded fast formulas:
i) If issue is with seeded formulas then
- Verify the setup and collect a trace for analyzes before logging a bug.
ii) If issue is with custom formulas then
- Follow Step 7 (b) - Debugging Methodology for Custom PTO Fast Formulas.

Absence element entry of one PTO Accrual plan is an adjustment element for another PTO Accrual Plan

The absence entered through absence form, will not create any effective date for the element entries. Without the effective
date input value in element entries, this will result in incorrect balance for the 2nd accrual plan for which this element is an
adjustment element.

Solution - Modify the business process to stop entering absences through absence form. Have to enter absence through OTL
and/or BEE, as then the system will have the effective date in the element entries.

b) Net Entitlement Over Ceiling Amount

This can happen as the ceiling applies only to the Gross accruals calculation and not the Net Entitlement. The ceiling is used
when calculating the "plan hours". Other net contribution elements attached to the assignment that impact the accrual plan
can put the net entitlement over the ceiling.
Refer Note 336156.1: PTO Accruals are Exceeding Defined Ceiling Amount
There are two different cases here:

Case 1: Addition of Adjustment Element (eg Carryover) makes accrued hours close to limit/ceiling:

Say you add an adjustment element (Carryover) of 36 days. The new net entitlement is 36 and the ceiling is 40, that means
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 10/17
9/12/2017 Document 808814.1

that the employee will accrue till 40 and then stop accruing until s/he starts using some of those hours by taking some time
off. Once the net entitlement gets below 40, the accrual will begin again.

Case 2: Addition of Adjustment Element already makes accrued hours over limit/ceiling:

Say you add an adjustment element (Carryover) of 57 days. The new net entitlement is 57 and the ceiling is 40, the accrual
formula will not make an automatic adjustment and get the Net Entitlement to 40. The accrual formula only impacts the "plan
hours" and not any other element entitlements. The employee will stop accruing until s/he starts using some of those hours by
taking some time off. Once the net entitlement gets below 40, the accrual will begin again. After this the accrual plan days will
not pass the 40 Days (Ceiling Amount), unless you again add an adjustment element which puts Net Entitlement over 40 days.

This is intended functionality of the accrual formula.

Note: If in Case 1, the net entitlement does not stop at 40 then the issue is with the accrual formula. If you are using seeded
formula, then log a service request.

3. SOE Issues:

a) Mismatch in Accrual Balance in SOE/Accrual Form Vs Checks/Deposit Advices

The View Accrual Form and the SOE strictly use the Fast Formula to create (tally) the balances. The Checks and Deposit
Advices retrieve the information from latest balances.

This can happen for the following reason:

The PTO function called in the Archive, Check Writer and Deposit Advice report is different then the one called from the
SOE. Both the functions should be returning same values but they are not.

PTO package called from SOE: per_accrual_calc_functions.get_net_accrual


PTO package called from Archive/Deposit Advice: pay_us_pto_accrual.get_net_accrual

Refer to Note.258166.1 PAYWSACV - Vacation Balance is Not Correct in the View> Employee Accruals Form:for more
information.

Take a PYUPIP trace using Note 130374.1: 'Using PYUPIP in Oracle HRMS' and analyze

b) Duplicate PTO Pay elements display in SOE and results in overpayment

The issue can be for the following reason:


A new Earnings Element is created for the absences and the Absence Type is setup with one of the seeded absence categories
Sick or Vacation.
This absence element is then assigned to the PTO Accrual plan.
The seeded absence categories have seeded Pay Elements associated with them.
This setup results in both the seeded Pay Element and the Custom Earnings Element getting displayed in the SOE with double
payments.

Solution (if business requirement needs a custom Earnings Element):

Create new Earnings absence element


Create new absence type and attach this new element with a custom absence category
Only the Custom Earnings Element will get displayed in the SOE

Solution (if business requirement does not require a custom Earnings Element):

Create new Information absence element


Create new absence type and attach this new element with seeded absence categories Sick or Vacation
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 11/17
9/12/2017 Document 808814.1

Only the Seeded Earnings Element will get displayed in the SOE

4. Absence Entry through Absence Form (Core-HR):

a) Absence Entry through absence form raising error

The issue is the missing absence element link or the employee does not meet the eligibility setup in the element link.
Verify the element link setup
(eg. 'APP-PAY-07448: THE PERSON IS NOT ELIGIBLE FOR THE ELEMENT ASSOCIATED WITH THIS')
Refer Note.728944.1: 'App-Pay-07448 When Attempting To Enter Employee Absences'

b) Absence Duration Calculation Incorrect

This can happen for the following reasons:

The Absence Profile Option Values not set


Missing Absence Duration Calculation Setup
Modified/Customized Absence Duration Formula

Method of Absence Duration calculation


-------------------------------------------------------
To set up the application to calculate the duration of an absence automatically, there are two options:
Option 1
Set the HR: Schedule Based Absence Calculation profile option to 'Yes',
Setup the worker's schedule and calendar events from their primary assignment to calculate absence durations.

Note: To use this option, you must first define schedules and calendar events that are relevant to your enterprise and
assign them to various levels in your work structures.

You can refer to Setting Up Availability, Oracle HRMS Workforce Sourcing, Deployment, and Talent Management Guide

Option 2
Create a basic formula using template BG_ABSENCE_DURATION formula. Make sure the formula name is
BG_ABSENCE_DURATION.

Set the profile option HR: Schedule Based Absence Calculation profile option to 'No'
If you want the absence duration calculation to update automatically each time you change the absence dates, you must
set the profile option HR: Absence Duration Auto Overwrite to Yes

See: Writing Formulas to Calculate Absence Duration, Oracle HRMS FastFormula User Guide

c) Absence Entry not creating effective date

When an absence is entered through the Absence Form the system creates the absence element entry for the correct payroll
period with only hours as the input value. The effective date is never populated.
This is different from when an Absence Element Entry gets Transferred and Populated from BEE/OTL - it populates both the
hours and the effective date for the absence element entry.
Refer Note.737734.1: Does Effective Date Populate in Element Entry for Absence Entered from Absence Form

d) Error in defining Absence Type

The issue can be for the following reasons:

https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 12/17
9/12/2017 Document 808814.1

Incomplete installation
Missing Seeded Routes

Check Patch Level and any related bugs. Run Form Based Trace.
You may have to Apply Datainstaller (Force Install) and HRGlobal driver.

e) Issue when Entering Absence Hours in LOA (ESS)

The issue can be because of Setup in LOA (ESS) or Absences (in Core HR)
Follow the steps to narrow down the cause of the issue:

> First Analyze the Absences Setup:

Check the Absences Setup


Verify whether you can view the correct balances in Absence Form
Enter the same Absence Entry through Absence Form and verify whether any error occurs. Check whether the element
entry gets created with correct input values.
If attached to a PTO plan verify the Accrual Balance in Accrual Balance Form
If the results are not as expected then the issue is with the PTO Setup.
Check the PTO Setup
Run a Trace

> Check the absence formula attached ('BG_ABSENCE_DURATION') or the availability schedule setup

> Check the profile option value at all levels for 'HR: Schedule Based Absence Calculation' and 'HR: Absence Duration Auto
Overwrite'

If the results are as expected then the Absence Setup is not the cause of the issue.

f) To Exclude weekends from absence duration calculation using absence duration formula

1. Open the BG_ABSENCE_DURATION formula and modify/use the function GET_WORKING_DAYS instead of
DAYS_BETWEEN. Retest the issue in Base HR and provide the results.

2. If the issue exists then create Work Schedules at Business Group Level and at Assignment level:

a) Business Group Level


Navigation: HR Manager -> Work Structure -> Organization -> Description -> Query your business group -> Click on Business
Group in Org Class -> Others -> Work Day Schedule -> Enter Details

b) Assignment Level
HR Manager -> People Form -> Assignment Form ->
i) Statutory Information -> Work Schedule -> Select from LOV
ii) Standard Conditions Tab -> Enter Working Hours, Frequency, Normal Time

5. Error when Entering Absence Hours in Oracle Time & Labor

The issue can be because of Setup in Time Entry Rule (in OTL) or PTO Accrual (in Core HR)
Follow the steps to narrow down the cause of the issue:
> First Analyze the Accrual Setup:
Check the Accrual Setup
Verify whether you can view the correct Balance in Accrual Balance Form
Enter the same Absence Entry through Absence Form and verify whether any error occurs. Check whether the element
entry gets created with correct input values.
Verify the Accrual Balance again in Accrual Balance Form

If the results are not as expected then the issue is with the PTO Accrual Setup.

https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 13/17
9/12/2017 Document 808814.1

Check the Setup (PTO Setup, Accrual Bands, Net Calculation Rules, Fast Formulas attached, Absence Element, Links)
Run a Trace

If the results are as expected then the Accrual Setup is not the cause of the issue then follow the next steps

> Next Analyze the Time Entry Rule Setup:


Retrieve the error message in the Time Entry Page
Query the error message in the description of the Time Entry Rule (Eg. 'No sick time available') Navigation ->
Responsibility: US OTL Application Developer -> Time Entry Rules ->Define Time Entry Rules
Verify the Fast Formula
Run a Trace on jsp page (See Note 130374.1 for reference) to analyze further

6. Other Information

a) How the Duration on Element Entries calculated

For recurring elements - application does not enter duration on the element entry - instead a payroll formula calculates the
duration in each payroll period. Hence the payroll formula calculates duration during payroll run.
For non-recurring elements - the duration in the days or hours are recorded as element input value. If a formula is setup then
the absence duration formula calculates the duration when we enter dates on the absence detail window that is different from
a payroll formula. Else the duration is calculated using the workforce schedules.

b) Eligibility of PTO Plans

The eligibility created in links can be used to enroll/de-enroll PTO plan element entries based on employee assignment details.

c) Stop Accrual Plans from Going Negative

Refer to Note: 268171.1: How Do You Stop Accrual Plans from Going Negative?

d) Difference between Current Year To Date and Running Total Fields in Absence Detail Form

Running Total on Absence Detail form is summation of all element entries associated with the absence type from the
date the employee is hired
Current Year To Date Total form is summation of all element entries associated with the absence type in the current
year

7. Troubleshooting Custom PTO Fast Formulas

a) Debugging Methodology for Custom PTO Fast Formulas

Replacing the custom formulas for PTO Plan with the seeded formulas and upload the results:

- Make a copy of your custom formula texts to a file


- Then cut/paste the seeded formula texts (PTO_PAYROLL_BALANCE_CALCULATION or the formula which best suites) into
your formula and compile
- Retest the issue
- When completed, paste your original formula back into the formula

https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 14/17
9/12/2017 Document 808814.1

Note:
If the issue is resolved then the issue is with the custom formula code. You should debug the custom code as Oracle
Support can only provide guidelines if the customization is small.

Follow Step 7 (b) to trace custom PTO fast Formulas.

If the issue is not resolved and the setup looks correct then log a service request with Oracle Support.

Take a PYUPIP trace using Note 130374.1: 'Using PYUPIP in Oracle HRMS' (Step 3 and 4) and analyze

If logging a service request then verify the installed versions of the files pyusptoa.pkh / pkb and peaclcal.pkh / pkb and
pyuspaco.pkh / pkb:

SELECT SUBSTR (text,1,75) text, SUBSTR (name,1,30) Name


FROM all_source
WHERE NAME IN ('PAY_US_PTO_ACCRUAL', 'PER_ACCRUAL_CALC_FUNCTIONS', 'PAY_US_PTO_CO_PKG')
AND line = 2
ORDER BY name;

b) Tracing Custom PTO Fast Formulas

Method 1:
Using Put_Message statements within the Fast Formula (Sample code)
E = PUT_MESSAGE('Total_Accrued_PTO '||to_char(Total_Accrued_PTO))

When querying the net balance within the accrual balance form, the debug messages will get displayed.

Method 2:
1) Trace formula/function with system profile option HR: FastFormula debug level

You will need to trace the formula and/or function to debug the code.
First, the system profile option HR: FastFormula debug level needs to be set in order to gather more detailed information
about the formula and the data that is being passed.
NOTE: YOU WILL NEED TO DISABLE THE PROFILE OPTION ONCE THE TRACE IS COMPLETED.
Set the system profile option HR: FastFormula debug level to 'I' at the responsibility level.
This will give detailed information on the fast formula and is displayed in the pyupip trace output.
Navigate: System Administrator -> Profile -> System
i) Enter Responsibility Name
ii) Query 'HR: FastFormula%'
The following options relate to executing formulas from PLSQL:

X - Required to turn on debugging in the FF PL/SQL execution engine.


R - Routing i.e. PL/SQL execution engine calls are being entered / exited.
C - Formula cache state.
D - DB item cache information.
M - Most Recently Used list.
I - IO table debug. The input/output values supplied to the formula.

The X, R, C, D, M options provide debug information for the inner workings of the formula execution engine and aren't very
helpful to you.

https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 15/17
9/12/2017 Document 808814.1

The 'I' option will be of most use to you because it deals with formula input and output data.
iii) Enter 'I' at the responsibility level

2) Adding trace statements to a fast formula

i) Keep a copy of the custom fast formula


ii) Enter trace line in the formula
Example:
l_trace=DEBUG('XXX Carryover Process')
l_trace=DEBUG('Max Carryover '||to_char(Max_Carryover))
l_trace=DEBUG('Effective Date '||to_char(Effective_date))
l_trace=DEBUG('Expiry_Date '||to_char(Expiry_Date))
l_trace=DEBUG('First_Day_of_Payroll_Year='||to_char(First_Day_of_Payroll_Year))
l_trace=DEBUG('Latest_Start_Date = '||to_char(Latest_Start_Date))
NOTE: If it is a number or date value being returned, a to_char must be added.
NOTE: AFTER TESTING THE FORMULA PLEASE REMOVE THE INSERT STATEMENT IN FUNCTION AND TRACE STATEMENT IN
FAST FORMULA

3) Running PYUPIP after trace statements entered

Once the profile option is set, and the trace statements are set in either the function or formula, you can now run the PYUPIP
on either the form and/or concurrent process that's calling the formula.
Run a PYUPIP trace on the concurrent process; refer Metalink Note 130374.1: Using PYUPIP in Oracle HRMS, pg. 6

8. Helpful Links and Information

A. How To documents for PTO:

Note 261694.1: Running the PTO Carry Over Process


Note 265123.1: How to Customize an Accrual Formula
Note 267289.1: Almost Everything You Wanted to Know About PTO
Note 146702.1: Paid Time Off (PTO) Accruals and Accrual Formulas
Note 261694.1: Running the PTO Carry Over Process
Note 960923.1: How Does the PTO Carryover Expiry Work for Annual Accrual Plan and Carryover Expiry of Six Months?
Note 2096376.1: How to Test PTO Accruals Using Seeded Fast Formulas

B. How To documents for Absence Management:

Note 728182.1: How To Setup and Track FMLA/Absence Hours


Note 562658.1: Troubleshooting Guide for OSP/OMP - UK Absences
Note 302584.1: How to Show Accrual Balances In Leave Of Absence Page
Note 747058.1: How Does One Exclude Weekends and Public Holidays From Absence Duration Calculation
Note 413541.1: How To Exclude Week-ends In Leave Of Absence Calculation In Hrms Self-Service
Note 988377.1: How To Calculate Half Days Using DFF in BG_ABSENCE_DURATION Formula
Note 944683.1: Is There a Sample of BG_ABSENCE_DURATION Formula That Excludes Weekends?
Note.980648.1: How To Display Only Selected Accruals In Absence Management SSHR In R12.1

C. Some Known Issues with PTO Carryover Process:

Note.803465.1: PTO Carryover Process Completes Successfully But Has No Carryover Element
Note.787245.1: Ext/Mod Long Service Accrual Plan is Not Accruing as Expected:
Note.757965.1: PTO Carry Over Completed Successfully But No Carryover Element Created In New Year:
Note.748000.1: PTO Carryover Process Completes Successfully but does not Create Carryover Elements:
Note 758979.1: PTO Carryover Process Finishes with ERROR 'ORA-20001 FFX22J_FORMULA_NOT_FOUND N, 1,
ZA_PTO_ANNUAL_LEAVE_CARRY_OVER'
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 16/17
9/12/2017 Document 808814.1

Note 402404.1: PTO Carryover Process Error ORA-20001 Line 39 Of The Formula PTO_PAYROLL_CARRYOVER
Note 473272.1: PTO Carryover Errors ORA-20001 An Error Has Occurred In A User Defined Function At Line 65 Of The
Formula PTO_PAYROLL_CARRYOVER
Note 733278.1: After Applying FP.K.RUP3 (6699770) Fast Formula Used In PTO ORA-20001 Error Context DATE_EARNED Not
Set:
Note 418621.1: App-Pay-33238 Error Pto_payroll_carryover Opening Absence Form

Didn't find what you are looking for?

https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=z8ccpga6i_1198&id=808814.1 17/17

You might also like