Quantcast
Channel: Apps2Fusion Articles
Viewing all 930 articles
Browse latest View live

Enforcing User Specific Validations in Global Absence Recording

$
0
0

Introduction

During the implementation of Absence Management module there may have been situations where there is a need to have validations which would be applicable depending on who among (Employee, Line Manager or HR Admin) is booking the absence.

There could be some rules which will be applicable when employee tries to book a leave for himself (self-service transaction) but a different set of rules would be applicable if line manager books the same leave for his direct-reports. On same lines there could be a different set altogether when HR Admin tries to book a leave. 

As of current date application allows configuring different approval rules based on the initiator but unfortunately there is no delivered configuration to achieve the same during absence booking. But, this doesn’t mean we cannot have some alternative. In this post, I would try to demonstrate how we can write custom logic within “Global Absence Entry Validation” Fast Formula to ensure different messages are displayed depending the user ( Employee / Manager / HR Admin).

So, without further delay let’s get started with a worked-out example.

Worked Out Example

Before we start with the demonstration we would need to ensure we have some basic pre-requisite steps are in place. They are:

  1. Creating a User-Defined Absence Type
  2. Creating Custom Error Messages which would be displayed during absence recording.
  3. Create a Fast Formula of “Global Absence Entry Validation” type which should be associated with the absence type.
  4. Active login credentials of one employee, his line manager and HR Admin.

 

Creating User-Defined Absence Type

For this example we will create a simple absence type (named “Test Absence”). Some salient features of the Absence are:

Attribute Name

Attribute Value

Absence Type Name

Test Absence

 Effective Start Date

 01-Jan-1951

 Legislative Data Group

US Legislative Data Group 

 UOM

Hours 

 Status

 Active

 Plans

No Plans Associated 

 Reasons

No Reasons Associated 

Insufficient Balance Enforcement 

Not Enabled for Employees,  Managers and Administrators 




 

Creating Custom Error Messages

We would create 5 custom Error Messages.

Navigation is Setup and Maintenance -> Manage Messages -> Create Message

Messages are defined in “Absence Management” application and module is “Absence Recording”

Details of Message are as below:

Message Name

Message Number

Message Type

Short Text

TEST_ABSENCE_COMMON_ERR_MSG

9000001

Error

Absence cannot be greater than 45 hours.

TEST_ABSENCE_DEFAULT_ERR_MSG

9000002

Error

Please save the transaction before submitting.

TEST_ABSENCE_ADMIN_ERR_MSG

9000003

Error

Admin Users should inform the employee before booking this absence.

TEST_ABSENCE_LINE_MGR_ERR_MSG

9000004

Error

You are booking this absence on behalf of your direct report.Line Manager should inform the employee before booking this absence.

TEST_ABSENCE_EMP_ERR_MSG

9000005

Error

Please reach out to your HR Representative or Line Manager if you wish to book this absence

 

 

Creating a Fast Formula

We would create a Fast Formula (TEST_DBI_VALUE).

Formula Text

/*******************************************************************

FORMULA NAME: TEST_DBI_VALUE

FORMULA TYPE: Global Absence Entry Validation  

DESCRIPTION:  Validation Formula attached to "Test Absence" 


Change History:

Name                    Date                         Comments

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

Ashish Harbhajanka      19-03-2020                         Initial Version 

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

*********************************************************************************/

DEFAULT FOR PER_ASG_PERSON_NUMBER IS 'X'

DEFAULT FOR ANC_ABS_ENTRS_USER_MODE is 'XXXX'


INPUTS ARE IV_START_DATE,IV_END_DATE,IV_TOTALDURATION



ln_person_number = PER_ASG_PERSON_NUMBER

lc_user_mode = ANC_ABS_ENTRS_USER_MODE

lc_admin = 'ADMIN'

lc_mgr   = 'MGR'

lc_emp   = 'EMP'

lc_default = 'XXXX'


/*

VALID = 'N'

ERROR_CODE = 'W'

ERROR_MESSAGE = 'Value of lc_user_mode is: ' || lc_user_mode

RETURN VALID,ERROR_CODE,ERROR_MESSAGE

*/


IF IV_TOTALDURATION > 45

THEN

(

VALID = 'N'

ERROR_CODE = 'E'

ERROR_MESSAGE = 'TEST_ABSENCE_COMMON_ERR_MSG' /* 'Absence cannot be greater than 45 hours' */

RETURN VALID,ERROR_MESSAGE

)


IF lc_user_mode = lc_default

THEN

(

VALID = 'N'

ERROR_CODE = 'E'

ERROR_MESSAGE =    'TEST_ABSENCE_DEFAULT_ERR_MSG'  /* 'Please save the transaction before submitting.' */

RETURN VALID,ERROR_CODE,ERROR_MESSAGE

    )

IF lc_user_mode = lc_admin

THEN

(

VALID = 'N'

ERROR_CODE = 'E'

ERROR_MESSAGE = 'TEST_ABSENCE_ADMIN_ERR_MSG' /* 'Admin Users should inform the employee before booking this absence.' */

RETURN VALID,ERROR_CODE,ERROR_MESSAGE

    )


IF lc_user_mode = lc_mgr

THEN

(

VALID = 'N'

ERROR_CODE = 'E'

ERROR_MESSAGE = 'TEST_ABSENCE_LINE_MGR_ERR_MSG' /* 'You are booking this absence on behalf of your direct report. 

Line Manager should inform the employee before booking this absence.' */

RETURN VALID,ERROR_CODE,ERROR_MESSAGE

    )


IF lc_user_mode = lc_emp

THEN

(

VALID = 'N'

ERROR_CODE = 'E'

ERROR_MESSAGE = 'TEST_ABSENCE_EMP_ERR_MSG' /* 'Please reach out to your HR Representative or Line Manager if you wish to book this absence' */

RETURN VALID,ERROR_CODE,ERROR_MESSAGE

    )

 

 

Login Credentials

For this example we will perform all transaction on Employee (Martin Conway , Employee Number 925)

Details about various user which will be used in this example are below:

User Type

User Name

Employee

Martin.Conway

Manager

Bob.Boyle

Administrator

HCM_IMPL

 

Absence Booking As Administrator

We will login as HCM_IMPL and try to book an Absence of “Test Absence” for Martin such that absence duration is greater than 45 hours. In this case we should get the common error (this is a error which would be shown for all types of users)

Now we will reduce the duration to less than 45 hours and try to book an absence. 

Now we will save the transaction and if we re-submit we will get a error message which is specific to Administrator

Absence Booking as Manager

Now we will login as Bob.Boyle (who is line manager of Martin) and if we book more than 45 hours we will get the common error

Now we will reduce the duration to less than 45 hours and try to book an absence. 

Now we will save the transaction and if we re-submit we will get a error message which is specific to Manager

 

Absence Booking as Employee (Self-Service)

We will login as Martin.Conway and try to book an absence of more than 45 hours

Now, we will reduce the absence duration to less than 45 hours and we should encounter the error that transaction is not saved.

Now we will save the transaction and if we re-submit we will get a error message which is specific to Employee (Self-Service)

 

Summary

So this is how we can have different error message for different type of user. We can also have a common error which would be applicable to all types of users.

Hope this was useful.

That’s all from my side, have a nice day ahead.


Position Synchronization in Oracle HCM Cloud

$
0
0

Introduction

Position synchronizationis when assignments inherit the values of a predetermined position. So if a set of values like job title, location, and manager are detailed in an assignment, you can synchronize those values with an associated position. We would like to use position synchronization so that assignments can inherit details from an associated position, which in turn creates less work when you want to enter new positions. Synchronization also ensures data is consistent across similar positions and hierarchies.

Since position synchronization is used to save time, you can choose from a list of attributes to synchronize across the board.

When position synchronization is used, these are some of the data fields you can carry over:

  • Department
  • Job
  • Location
  • Grade
  • Grade Ladder
  • Manager
  • Full Time or Part Time
  • Regular or Temporary
  • Assignment Category
  • FTE and Working Hours
  • Start Time and End Time
  • Probation Period
  • Union, Bargaining Unit and Collective Agreement
  • Synchronize Mapped Flexfields

In this post here we would demonstrate how to enable position synchronization and how does it impacts worker’s assignment records.

Enabling Position Synchronization at Enterprise Level

For this example, we would enable position synchronization and check all flags. For the “Manager” field we will choose “Use HCM position hierarchy

 

Position Synchronization Setup at Legal Employer

For this example, we would choose a Legal Employer “US1 Legal Entity” and the Enable Position Synchronization is set as “Use Enterprise” (screenshot below):

 

Creating a New Position

In the next step we will create a custom position (TP_POS01_PSYNC). Some details related to the positions are below:

Attribute Name

Attribute Value

Effective Start Date

01/01/1951

Name

TP_POS01_PSYNC

Business Unit

US1 Business Unit

Department

Accounting US

Job

Accountant

Full Time or Part Time

Full time

Regular or Temporary

Regular

Type

Pooled

FTE

5

Headcount

5

Overlap Allowed

No

Seasonal

No

Budgeted Position

Yes

Working Hours

40

Working Hours Frequency

Weekly

Standard Working Hours

40

Frequency

Weekly




The above details when mapped the UI should appear as below (screenshot)

 

Hiring a New Employee and Assigning Newly Created Position

In the next step we would create a new employee (Hire Date as 01/01/2019, Legal Employer as “US1 Legal Entity” and assign Position as “TP_POS01_PSYNC”). We observed that the moment we choose position other attributes are populated automatically.

 

Making Changes to Position Data 

In the next step we will change the Department and Job attribute value associated with this position (changes are made in “CORRECTION” mode)

The New Value of Department is “Business Services US” and Job is “Analyst” . After making the change we can submit the transaction.

Running Synchronize Person Records from Assignment ESS Job

One would need to run “Synchronize Person Records from Assignment” ESS job to make sure the changes made to Position Metadata reflects on assignment record

The ESS Jobs requires few parameter values to be entered namely:

  • Past Period to be considered in days 

 

(if you set this parameter to 60 days, then any assignment records with start dates during the previous 60 days are synchronized from positions. By default, Past Period to Be Considered in Days is set to 30 days.)

 

  • Run at Enterprise Level

 

(You can choose either ‘Y’ or ‘N’, if you choose ‘Y’ it would run for entire enterprise)

 

  • Legal Employer

 

(If you want to run the process for only a specific Legal Employer, then set “Run at Enterprise Level” to ‘N’ and pass a valid value for Legal Employer)

For this run we will pass “Past Period to be considered in days” as 500 , Run at Enterprise Level as ‘N’ and Legal Employer as “US1 Legal Entity

 

Once the process completes the ESS Job status will be completed and there will be a log file and output file available which will hold details about the ESS Job and the assignment records processed.

A quick look on the output file will show following details:

Similarly log file will show the details about the assignment record processed:

Verifying the Employee Record 

As a last step we would navigate to the Employee Record for (William Rodgers) and verify if the changes are reflecting as expected.

 

From the above snapshot we can clearly see that the changes are reflected as the Department and Job attributes have been updated with new values. One more point to note is that there is a new Action as “Synchronization From Position” reflecting on assignment record and also the sequence has changed from 1 to 2.

Summary

So, this is how we can synchronize assignment records with position details if position synchronization is enabled.  Synchronize Person Assignment from Position updates all affected assignments with the changes from the position. This includes:

  • Changes due to position synchronization.
  • Past or future-dated changes to the position hierarchy.
  • Rollback of line manager changes in assignments for reverse termination.
  • Line manager hierarchy changes.
  • Flexfield-mapping changes.
  • Changes in position loaded using HCM Data Loader (HDL).

And with this we have come to the end of this article. Hope this was a good read and would be useful in your current / upcoming implementations.

Thanks all for your time and have a nice day ahead.

Understanding the Use and Importance of Different XMODE Values while Executing a BI Report

$
0
0

Introduction

In one of the previous article titled Executing a fusion cloud bi report by a simple click on springboard icon we have seen how can me run a BI Report from a simple click on navigator icon. One major limitation of that approach is that the end-user gets access to the BI Catalog Server and he may add/edit and even delete other catalog components. As such it is desired that while the end user should be able to consume the report he/she should not be able to have access to any of the Report Metadata.

In this post we would demonstrate how we can accomplish this by making use of “XMODE” property.

This “XMODE” property controls what all actions can be performed on a specific report. A detailed description of the same is as below:

XMODE Value

Description

0

View in Full Report Viewer

1

Hide BI Publisher Banner, hide parameters, can change layout, other actions: export only

2

Hide BI Publisher Banner (No Header)

3

Hide BI Publisher Banner,hide parameters (No Parameters)

 

We would try to verify the same with a worked-out example.

 

Worked-Out Example

Before starting the demonstration of how XMODE values alter the report viewing experience of end user we would need to ensure that there is a pre-existing parameterized report in the environment. For this example, we have a report named “PersonAbsenceAccrualEntryDetailsReport” in my environment. If you are interested to see how this report is created please feel free to refer this link here.

The Sample output of PersonAbsenceAccrualEntryDetailsReport is shown below:

 

From the above screenshot we can clearly see that all the Admin controls are visible . Now we can pass on different values of “XMODE” and we will observe that the report view would change.

 

XMODE Value: <BLANK>

XMODE Value

 

BI Endpoint URL

https://<pod>/xmlpserver/Custom/Practice+Samples/PersonAbsenceAccrualEntryDetailsReport.xdo

Report View

 

XMODE Value : 0

XMODE Value

0

BI Endpoint URL

https://<pod>/xmlpserver/Custom/Practice+Samples/PersonAbsenceAccrualEntryDetailsReport.xdo?_xpf=&_xpt=0&_&_xmode=0

Report View



XMODE Value : 1

XMODE Value

1

BI Endpoint URL

https://<pod>/xmlpserver/Custom/Practice+Samples/PersonAbsenceAccrualEntryDetailsReport.xdo?_xpf=&_xpt=0&_&_xmode=1

Report View

 

XMODE Value : 2

XMODE Value

2

BI Endpoint URL

https://<pod>/xmlpserver/Custom/Practice+Samples/PersonAbsenceAccrualEntryDetailsReport.xdo?_xpf=&_xpt=0&_&_xmode=2

Report View









XMODE Value : 3

XMODE Value

3

BI Endpoint URL

https://<pod>/xmlpserver/Custom/Practice+Samples/PersonAbsenceAccrualEntryDetailsReport.xdo?_xpf=&_xpt=0&_&_xmode=3

Report View

 

So this is how we can make use of XMODE value and ensure controls on which all properties are made visible and controlled by end user.

Creating One-Click BIP Reports

I hope some of you have read a previous post about executing a cloud BI Report by a simple click on springboard icon, if not please feel to read the same from this link here. Now we will create two versions of this report namely:

  1. One for Admin User 
  2. Report End User ( with XMODE – 2)

 

We would create a “Report Group” titled “One-Click BIP Reports”

 

This Report Group will have one Report Titled “Person Absence Accrual Entry Details Report - Report Admin View”

This Report Group will have one Report Titled “Person Absence Accrual Entry Details Report - Report Consumer View”

Once configured the Group and Report would appear as below:



Running the Reports from Admin Login

We will first login to the application with an Admin User (HCM_IMPL) and then navigate to “One-Click BIP Reports”. We can then click on “Person Absence Accrual Entry Details Report – Report Admin View” 

And this would open below page

 

And when the same user clicks on “Person Absence Accrual Entry Details Report – Report Consumer View” the below page will open:

Running the Reports from Employee Login

Now we will try to login to application as an Employee and check the report output when we click on “Person Absence Accrual Entry Details Report – Report Admin View” we could see the following output:

 

And when we click on “Person Absence Accrual Entry Details Report – Report Consumer View” we will see the following output:

Summary

Based on the observations above one can clearly infer that for Admin users one should always use the Normal URL (the one which doesn’t has any XMODE value passed) while for end users it is always advised to run the report with XMODE as 2. Hope, this was useful and you guys were able to learn something from this. Thanks all for your time and have a nice day ahead.

Adding Business Object Validation Rules in Oracle HCM Cloud Application

$
0
0

Introduction

In one of the previous article Creating Custom Transaction Rules under HCM Experience Design Studio Feature in Oracle Fusion HCM we have seen how we can make custom rules to configure business transactions and pages. While the transaction design studio allowed making fields mandatory / optional, make fields hidden / visible the “Auto Complete Rules” takes customization to a whole new level. It allows defaulting field values based on certain condition and also provides an option to incorporate validation rules.

One very important point to note here is that “Autocomplete Rules” rules would apply only on responsive pages and not on classic ones (I understand might seem like a little incorrect but the only supporting logic could be that one probably would not be using Classic and Responsive pages both at same time, so if you/your organization decide to go the responsive way it is still ok).

In this post we will demonstrate how to incorporate an Error Message when we try to perform a transfer action between 5th to 10th of every month. Similarly, one can also apply rules like “Hiring Cannot happen after 15th of every month” or “Termination should not be performed on the last day of the month” etc. We can also have rules to default values during a specific business process but in this example we would restrict ourselves to only the validation rule and try to understand the autocompletion rules feature.

Worked Out Example

As a first step we should ensure that we login to the application with a user having appropriate credentials (user having access to create Sandbox) and then we would need to create a sandbox.

Navigation is : Login To Application -> Navigator -> Configuration -> Sandbox

 

Once we click on Sandbox a new page will open where we can choose the different tools and create a sandbox (we will name it as “AH_AutoCompletionRules)



Next we will need to navigate to Home Page and Click on “HCM Experience Design Studio”

 

Once we click on the link (highlighted in yellow in above screen-shot)  new page will open and we should choose the “Autocomplete Rules” . There are different actions against which we can choose the AutoComplete Rules and they would appear on the drop-down list on the work area

 

 

Also there are different types of rules which can be created namely:

  1. Add Business Object Defaulting Rule
  2. Add Business Object Validation Rule
  3. Add Business Object Field Validation Rules
  4. Add Business Object Field Modification Rules

 

 

Creating Business Object Validation Rule

For this example we would choose “Action Occurrences” and “Add Business Object Validation Rule”. Once we click on those a new page will appear. We would need to populate the following fields 

 

Rule Information

Name

Transfer not allowed between 5th and 10th of the month

Description

Transfer not allowed between 5th and 10th of the month

Active

Checked

Rule Logic

{


   The value of variable Action Code = (f) Get String Value from HCM Params (f) (EMP_Groovy_ActionTypeCode (f)  Action Occurrences.Current Row)

The value of variable DayOfAction = (f) Day of ((f) Action Occurrences.Action Date)


IF

(

 (f) Action Code Equals (f) EMPL_TRANSFER AND

 (f) DayOfAction Greater Than or Equals (f) 5 AND

 (f) DayOfAction Less Than or Equals (f) 10

)

( Show an Error with a message (f) Transfer not allowed between 5th and 10th of the month

)


}

  

 

 

And with this the rule creation part is complete.

 

Performing a “Transfer” Action and Verifying Results

As a next step, we will try to perform a “Transfer” action and verify results

We could see from the above screenshot that the Date of Transfer is 09-Mar-2020 which is between 5th and 10th of the month and hence we encounter the error. Now if we change the date to say 11-Mar-2020 we should be able to proceed and no error will be encountered.

 

Summary

So this is how we can make use of “Autocomplete Rules” to add custom validation while performing different transactions within Oracle Fusion HCM Application. We can also add business object defaulting rules as well as add validation rules to business object field but that we will cover up in a subsequent article.

With this I have come to the end of this article and hope this was a good read.

Thanks all for your time and have a great day ahead.

Adding Business Object Field Validation Rules in Oracle HCM Cloud Application

$
0
0

Introduction

Lots of new features are available in the latest release of Oracle HCM Cloud Application (Release 13 20A). One of the feature which has been introduced in the latest release is “Add Business Object Field Validation Rules” under “Autocomplete Rules” within “HCM Experience Design Studio” 

“Add Business Object Field Validation Rules” as the name suggests allows us to fire various validations based on the data value stored in a business object field. I can understand if you could not make out the above statement (honestly speaking I was not able to understand the same too). But, we will try to understand the same with an worked out example.

In this example, we will try to demonstrate how to throw an error when a specific field (First Name) holds a specific value (Test). In other words, we will try to build a custom rule such that whenever some one tries to enter the string value of “Test” in the First Name field (during name change action) an error message will be displayed. 

Worked Out Example

As a first step we should ensure that we login to the application with a user having appropriate credentials (user having access to create Sandbox) and then we would need to create a sandbox.

Navigation : Login To Application -> Navigator -> Configuration -> Sandbox

 

Once we click on Sandbox a new page will open where we can choose the different tools and create a sandbox (we will name it as “AH_AutoCompletionRules)

Next we will need to navigate to Home Page and Click on “HCM Experience Design Studio”

Once we click on the link (highlighted in yellow in above screen-shot)  new page will open and we should choose the “Autocomplete Rules” . There are different actions against which we can choose the AutoComplete Rules and they would appear on the drop-down list on the work area

 

Also there are different types of rules which can be created namely:

  1. Add Business Object Defaulting Rule
  2. Add Business Object Validation Rule
  3. Add Business Object Field Validation Rules
  4. Add Business Object Field Modification Rules

 

 

Creating Add Business Object Field Validation Rules

For this example we would choose “Person Name” and “Add Business Object Field Validation Rules”. Once we click on those a new page will appear. We would need to populate the following fields 

Rule Information

Name

Ensure First Name field does not contains Test

Business Object Field

First Name

Description

Ensure First Name field does not contains Test

Active

Checked

Rule Logic

{

 The value of variable vFirstName = (f) The new value of First Name

IF  (

       (f) vFirstName Equals (f) Test     

      )

  { Show an error with a message= (f) Test is not a valid name. Please choose a different First Name.        

   }  

}

 

 

And this completes the rule creation part. 

Changing the First Name of an Employee

In the next step, we will search a employee and try to change his “First Name”

Once we click on “Update” it will ask for the New Effective Date (which would have a default value of current system date 3/9/20 for this example)

Once we click on “Ok” a new page will open which would hold the old values

 

Now we will change the value of First Name from “Andrew” to “Test” and try to save the same.

And we could see that the moment we enter “Test” and tab out of the “First Name” we encounter an error.

Summary

So, this is how we can make use of “Business Object Field Validation Rules” to add custom validation on different business object field values. One can also build custom validations based on a combination of two, three or more fields as long as they belong to same business object. A typical example could be to ensure that if Title field is populated then say  Prefix should be left Blank or vice versa, but more on that on some other day. For now I hope you all enjoyed reading this post and would be using this feature in your upcoming / ongoing projects. Thanks all for your time and have a great day ahead.

Automatic Plan Re-Enrollment and withdrawal of existing absences due to change in Hire Date In Oracle Fusion Application Release 20A

$
0
0

Introduction

When there’s a change in the hire date of a person, new processing now ensures that these changes are accurately reflected in plan enrollment. Previously, you had to make these updates manually each time a person’s hire date changes. With this new processing, any existing accruals and balances are rolled back automatically, and invalid absence records and transactions, are automatically withdrawn.

The enrollments will be updated on the basis of the date when the enrollment process evaluated eligibility. For example, assume that the hire date for a person was initially set to Jun 30, 2020 and the person was automatically enrolled in a Vacation plan, dated Jun 30. Suppose the hire date moved to a new date, July 3. The enrollment record is set to July 3, and all the accruals and balances roll back automatically. You will need to run the Update Accrual Plan Enrollments process to make sure the worker is still eligible for the plan and generate new valid accruals and balances. If the employee isn't eligible, the enrollment will end on the day you ran the process.

In this example, we will demonstrate the same.

Worked Out Example

As a first step we will hire an employee as on 01-Jan-2019. Once hired we can navigate to “Manage Employment” and we should be able to view details as shown below:

 

Next we can see that the employee would automatically get enrolled into several accrual plans as shown below:

 

We can see that the “Balance Calculation Date” is not showing any value, which means that the Accrual process has not been run. As such, we will run the “Calculate Accruals and Balances” process with effective date as of “10-Feb-2020”

If we again check the Accrual plan details we should see that the “Balance Calculation Date” is populated and also there is a balance value populated.

Now we will book 3 leaves

 

Now we will change the Hire Date from 01-01-2019 to 01-02-2020. We can perform this step from Manage Work Relationship -> Edit (Hire Date)

Once we submit the transaction, we can see that the Hire Date has changed to 01-02-2020

Also we could see that all absences booked prior to new hire date disappear. One more point to note is that the absence plan enrollment date has changed.

 

Summary

Thus, we have clearly seen that some of the changes like withdraw existing absences, withdraw accruals and re-enrollment of employee from hire date in accrual plan which were previously supposed to be handled manually are now automatically processed.

This is a very good feature and I hope will reduce lot of maintenance work.

And with this I have come to the end of this article, hope this is a good read and you all learned the new features delivered as part of 20A workforce management module (there are lot many other features but we just focused on one specific feature).

Creating A Simple OTBI Analysis Using Sections and Table Prompts

$
0
0

Introduction

Many a times there is a need to re-organize data retrieved by an OTBI Analysis. Sections and Table Prompts helps us to do the same.

We would try to build a very simple analysis by making use of Sections and Table prompts but prior to that it makes sense to understand what Table prompts and Sections are and how they can be used.

Sections

The sections function is used to make the columns that comprise the data sets of analyses appear more meaningful by segregating them into tables of related information. Sections are built after the analysis has been run and can be based on virtually any column. Sections by design can be introduced to or eliminated from analyses almost instantly. This is helpful when different columns need to be grouped, ungrouped or regrouped quickly for emphasis within analyses.

We can find the Sections area when we edit the “Table” view available under Results tab

 

Table Prompts

Table prompts set up in analyses help to display the one desired member of a column at a time and allow for dynamic filtering by consumers. Table prompts, just like sections are built after the analysis has been run and can be run virtually on any column. Table prompts too like sections may be defined in or removed from analyses almost instantly. This is useful when different columns need to be grouped, ungrouped or regrouped quickly for emphasis within analyses.

We can find the Sections area when we edit the “Table” view available under Results tab

 

Worked-Out Example

As we have now got some idea about sections and table prompts , let’s try to create a simple analysis. We will build the analysis on “Workforce Management – Person Real Time” subject area and will have the following columns

Attribute Name

Attribute Value

Country

"Worker"."Employee Mailing County Code"

City

"Worker"."Employee Mailing City Name"

Person Number

"Worker"."Person Number"

Display Name

"Worker"."Employee Display Name"

Enterprise Hire Date

"Worker"."Enterprise Hire Date"

Person Date of Birth

"Worker"."Employee Date Of Birth"

 

The Criteria tab would look like:



Now we want to ensure that we should have a prompt for Country field and for those countries details should be displayed for individual cities section wise For this we would need to define “Country” as a Table prompt and include “City” in Section region as shown below:

 

And once done we could see the following results:

 

Diagnostic Test to find Duplicate MCPD Assignment Records created by Position Synchronization ESS

$
0
0

Introduction

In one of the previous article (Position Synchronization in Oracle HCM Cloud) we have seen how can we synchronize employee’s assignment data attributes with the position data (if position synchronization is enabled). However, many a times this may result in creation of Duplicate MCPD (Multiple Changes Per Day) Assignment Records. It makes sense to correct these kind of corrected data, and hence in order to facilitate this activity Oracle product development has provided two diagnostic tests. The first one lists all the person records who have duplicate MCPD assignment record issue and the second one corrects such records.

In this post we will run “Duplicate MCPD Assignment Records created by Position Synchronization ESS – Report ” diagnostic test.

Let-us see a worked out example.

Worked Out Example

If you have the appropriate roles and privileges (hcm_impl in this case) we can navigate to “Run Diagnostic Tests” 

 

Once you click on “Run Diagnostic Tests” a UI will open and once you enter “Duplicate MCPD Assignment Records created by Position Synchronization ESS – Report” in the Test Name the diagnostic test will appear as shown below:

 

We need to select the Test and click on “Add to Run”. Post that we should open the (Input Status) and we should be able to get insight into the various parameters of the diagnostic test

 

Person Number(s) is an optional parameter. If we provide specific person number values then the test is executed only for those values and if left blank then it runs for entire population.

 

For this example we will leave the parameter value blank run the report. Once submitted the Test Framework UI page would appear as below.

 

And when we click on the Report (highlighted above) we will see the following results

 

Summary

In our example we did not had any person numbers who were having data inconsistencies due to position synchronization, but if you find some records in your environment you should run the diagnostic test “Duplicate MCPD Assignment Records created by Position Synchronization ESS – Correct” by passing the person numbers and the data issues will be fixed.


Automating Absence Plan Discretionary Disbursement in Oracle HCM Cloud

$
0
0

Introduction

Many a times we have to perform Discretionary Disbursement from the various Absence Plans configured in the application. Most of the time this is a manual process but if there is a set of rule to be followed and the number of employees for whom this action needs to be performed is huge it makes sense to automate the process. In this post we would try to achieve the same.

Pre-Requisites

Some of the pre-requisites for this include:

  1. Configuring a Source System Owner 

I have configured a new Source System Owner ( Navigation: Setup and Maintenance -> Manage Common Lookups -> HRC_SOURCE_SYSTEM_OWNER -> Add New Lookup Value (HRC_LEGACY)

 

  1. Identifying a Absence Plan which has “Discretionary Disbursement” enabled

We need to either find or configure a Absence Plan which has discretionary disbursement feature enabled. For this example, we will use “Vacation”

 

  1. Creating Extract Rule Fast Formula

We need to create two Extract Rule Fast Formula.

  1. WorkTerms Number

We would need to have a custom Extract Fast Formula created which will derive the WorkTerms Number. The Fast Formula Logic is mentioned in below table for ready reference

 

              WorkTerms Number: Extract Rule Fast Formula (Formula Content)

DEFAULT FOR DATA_ELEMENTS IS EMPTY_TEXT_TEXT

DEFAULT FOR PER_ASG_PERSON_NUMBER IS 'X'

INPUTS ARE DATA_ELEMENTS (TEXT_TEXT)


rule_value = ' '

l_workterms_number = 'Y'

l_wt_string = 'ET'

if DATA_ELEMENTS.EXISTS('PersonNumber') then

(

l_person_number = DATA_ELEMENTS['PersonNumber']

l_person_id = DATA_ELEMENTS['PersonId']

  CHANGE_CONTEXTS(PERSON_ID = TO_NUMBER(l_person_id ))

  ( 

    l_workterms_number = l_wt_string || l_person_number

rule_value = l_workterms_number   

   )

)

return rule_value

 

  1. SourceSystemId

We would also need to create a custom Extract Fast Formula to derive SourceSystemId.

 

              SourceSystemId: Extract Rule Fast Formula (Formula Content)

DEFAULT FOR DATA_ELEMENTS IS EMPTY_TEXT_TEXT

DEFAULT FOR PER_ASG_PERSON_NUMBER IS 'X'

DEFAULT FOR GLOBAL_PAY_INTERFACE_EXTRACTION_DATE is '4712/12/31'

INPUTS ARE DATA_ELEMENTS (TEXT_TEXT)


rule_value = ' '

l_source_system_id = 'D'

if DATA_ELEMENTS.EXISTS('PersonNumber') then

(

l_person_number = DATA_ELEMENTS['PersonNumber']

l_person_id = DATA_ELEMENTS['PersonId']

  CHANGE_CONTEXTS(PERSON_ID = TO_NUMBER(l_person_id ))

  ( 

    l_string1 = 'VACATION_CSH'

l_string2 = DATA_ELEMENTS['Value']

l_string3 = GLOBAL_PAY_INTERFACE_EXTRACTION_DATE

    l_source_system_id = l_person_number || '_' || l_string1 || '_' || l_string2 || '_' || l_string3

rule_value = l_source_system_id   

   )

)

return rule_value



  1. Creating a Report to get HDL File format for PersonAccrualDetail.dat Business Object

We would also need to create a Report (with data source as GlobalReportsDataModel) and attach a E-Text Template to the Report to ensure we get data from the application in HDL File Format. We would name the report as DiscretionaryDisbursement.xdo and the location of the report is /Shared Folders/Custom/Practice Samples/AutomateAbsencePlanDiscretionaryDisbursement.The E-Text template would look as below:

 

Worked Example

As all the pre-requisite are in place we can now start with the next steps. We would need to create a HCM Extract of Inbound Interface Type with following details:

 

Attribute Name

Attribute Value

Extract Name

AbsencePlanDiscretionaryDisbursement

Extract Type

Inbound Interface

User Entity

PER_EXT_PAY_EMPLOYEES_UE

Threading Database Item

Extract Employee Person ID

Threading Action Type

Object Actions

Root Data Group Name

GetEmpDetails

Data Group Filter Criteria

(papf.person_number IN ('40', '41', '42', '43', '44','45'))

There is one Record named “Employee Record” which comprises of 9 data elements. Details in table below:

Col

Name

Type

Data Type

Data Source (DS) / Data Value (DV)

1

PersonId

Database Item Group

Number

Extract Employee Person ID (DS)

2

AccrualType

String

Text

CSH (DV)

3

PersonNumber

Database Item Group

Text

Extract Employee Person Number (DS)

4

PlanName

String

Text

Vacation (DV)

5

Value

String

Number

7 (DV)

6

WorkTermsNumber

Rule

Text

WorkTermsNumber (DS)

7

ProcdDate

Database Item Group

Text

Payroll Interface Extraction Date (DS)

8

SourceSystemOwner

String

Text

HRC_LEGACY (DV)

9

SourceSystemId

Rule

Text

VacationPlanDiscretionaryDisbursementSourceSystemId

 

Once configured the Extract Attributes should appear as below:







Next we need to configure “Extract Delivery Options”

Extract Delivery Option : AccrualDetail

Attribute Name

Attribute Value

*Delivery Option Name

AccrualDetail

Output Type

Text

Report

/Custom/Practice Samples/AutomateAbsencePlanDiscretionaryDisbursement/DiscretionaryDisbursement.xdo

Template Name

DiscretionaryDisbursementTemplate

*Output Name

AccrualDetailWCC

*Delivery Type

WebCenter Content

Required

Checked

Encryption Mode

None

Run Time File Name

AccrualDetail

Integration Name

AccrualDetailWCC

 

Extract Delivery Option : PersonAccrualDetail

Attribute Name

Attribute Value

*Delivery Option Name

PersonAccrualDetail

Output Type

Text

Report

/Custom/Practice Samples/AutomateAbsencePlanDiscretionaryDisbursement/DiscretionaryDisbursement.xdo

Template Name

DiscretionaryDisbursementTemplate

*Output Name

PersonAccrualDetail

*Delivery Type

Inbound Interface

Required

Checked

Encryption Mode

None

Override File Extension

.dat

Run Time File Name

PersonAccrualDetail

Integration Name

PersonAccrualDetail

Integration Type

Data Loader

Compressed Delivery Group

DiscretionaryDisbursement.zip

 

Once configured the Extract Delivery Options will appear as below:

 

Once all the above changes are done we should Add a New Parameter “Load Automatically” and set “Visible” property to Yes.

Once done we can Validate the Extract and once it is successfully validated we can Save and Close.

 

In the next step, we would need to Add a Flow Task named “Initiate HCM Data Loader” to AbsencePlanDiscretionaryDisbursement Flow pattern. We can either navigate to Payroll->Checklist-> Search for AbsencePlanDiscretionaryDisbursement or use Refine Extracts->Search for AbsencePlanDiscretionaryDisbursements 

Once the search results are retrieved, we need to click on “Edit” (pencil icon) and choose the following task

Name

Initiate HCM Data Loader

Description

Generate HCM Data Loader File and optionally perform a Data Load

Task Type

Standard Process

 

Once we add the payroll flow task we should click on “Go To Task” and add the following details:

Initiate HCM Data Loader Task Definition: Basic Information (Data Loader Archive Action)

Name

Data Loader Archive Action

Execution Mode

Submit

Data Type

Text

Parameter Basis

Bind to Flow Task

Basis Value

AbsencePlanDiscretionaryDisbursement, Submit , Payroll Process

Usage

Input Parameter

 

Initiate HCM Data Loader Task Definition: Basic Information (Data Loader Configuration)

Name

Data Loader Configuration

Execution Mode

Submit

Data Type

Text

Parameter Basis

Constant Bind

Basis Value

ImportMaximumErrors=100,

LoadMaximumErrors=100,

LoadConcurrentThreads=8,

LoadGroupSize=100

Usage

Input Parameter

 

And with this HCM Extract Setup is complete.

Running the Extract

In this step we will try running the Extract.

 

Once submitted we can monitor the status of the payroll flow instance

 

From the above screenshot we can see that all the process has been successful and hence a Data Load should have got triggered. We can navigate to Data Exchange->HCM Data Loader -> Import and Load Data page to verify this. (While doing a search make sure you set the Created By filter to Blank else the Data Set would not appear)

From the screenshots we can see that the data got loaded successfully. 

In the next step we will verify the same in application. We can perform this verification in two ways.

  1. By Running a SQL Query

SQL Query

select papf.person_number,

       apaed.type,

       apaed.value,

       apaed.source,

       apaed.payment_percentage,

       apaed.person_id,

       apaed.pl_id,

       to_char(apaed.procd_date,'YYYYMMDD') processed_date

from   per_all_people_f papf,

       anc_per_acrl_entry_dtls apaed

where  papf.person_id = apaed.person_id

and    apaed.type = 'CSH'

and    trunc(sysdate) between papf.effective_start_date and papf.effective_end_date

and    papf.person_number IN ('40','41','42','43','44','45')

and    trunc(apaed.procd_date) = trunc(sysdate)

order  by papf.person_number asc

 

And we could see the results in BI Data Model

  1. From Application UI

We would navigate to Person Management-> Search for Person Number 40-> Absence Records and go to Plan Participation Section, Choose “Vacation” plan and we should be able to see disbursement details

 

Similarly, we can check for person# 41,42,43,44 and 45 too.

 

Summary

So this is how we can “Automate Discretionary Disbursement”  from a Absence Plan. In this example, we have hard-coded certain things like SourceSystemOwner, ProcdDate, Value, PlanName and each one of the attribute can be dynamically derived or passed via Extract Input parameter to make the Extract more flexible and re-usable.

The below files can be downloaded:

DiscretionaryDisbursementTemplate (E-Text Template)
AbsencePlanDiscretionaryDisbursement_2020-04-13 (Extract Definition File XML)
VacationPlanDiscretionaryDisbursementSourceSystemID_ExtractRule_FF (Extract Rule Fast Formula for SourceSystemId)
WorkTermsNumber_ExtractRule_FF (Extract Rule Fast Formula for WorkTermsNumber)

Alternative Absence Workflow Approval Routing Based on Absence Reason

$
0
0

Introduction

In context with Absence Management Approval Workflow processes and configurations many a times one way have a requirement where-in certain absence transactions needs to follow an alternative approval routing based on a Descriptive Flex-Field (DFF) enabled on the Absence Recording page. Unfortunately this cannot be achieved as the DFF attributes are not available while defining approval rules on the Absence Approval workflow. But having said so one can still have a workround solution where they can make use of “Absence Reason” field.

In this post we would try to demonstrate the same with a worked out example.

Pre-Requisites

In order to proceed with this approach we need to make sure that there are some pre-existing setups in the system.

  1. Pre-Existing Active Absence Type

There should be a pre-existing absence type present in the system against which we can associate the newly created absence reason. For this example, we will choose the “Sick” absence type.

Worked-Out Example

We would need to do some configuration steps which are described below:

Creating a New Absence Reason

We would need to navigate to Setup and Maintenance -> Manage Absence Reasons-> Create New Reason

Attribute Name

Attribute Value

Effective Start Date

01/01/1951

Name

Sickness Absence Reason - Alternative Approval Routing

Description

New Absence Reason created to demonstrate that an Alternative Approval Hierarchy can be routed based on Absence Reason

Legislation

United States

Status

Active

Management

User-defined

 

 

Associating Absence Reason to Absence Type

Next we would need to associate the absence plan with absence type.

Navigation: Setup and Maintenance->Manage Absence Type-> Search for “Sick” and add absence reason under “Plans and Reasons”

Enable Display Properties for Absence Reason

We would need to enable the “Reason” field under “Manage Absence Type” > Sick (Display Features)-> Primary Absence Details

Enabling Approval Processing for Administrator

As a next step we would also need to enable Approval processing for Administrator.

Navigation: Setup and Maintenance->Manage Absence Type-> Display Features-> Approvals and Processing Rules-> Approval Processing and Approval Reset on Update to Enabled for Administrator

 

 

Configuring “Global Absence Recording” Transaction Workflow

Next, we would need to configure “Global Absence Recording” workflow. 

Navigation: Setup and Maintenance -> Manage Approval Transactions for Human Capital Management-> Global Absence Recording

We need to configure two rules:

Rule: ApprovalReasonKeyForHT

IF (absencesApprovalsRequest.absenceTypeReasons != "Sickness Absence Reason - Alternative Approval Routing") THEN “Management Hierarchy”

Rule: SicknessAbsenceAlternativeApprovalRouting

IF (absencesApprovalsRequest.absenceTypeReasons == "Sickness Absence Reason - Alternative Approval Routing") THEN “Self Auto Approve”



Verification

We will book a “Sick” absence without using “Sickness Absence Reason - Alternative Approval Routing

 

Next, we will book and absence with Absence Reason as “Sickness Absence Reason - Alternative Approval Routing

Once we are done with the Absence Recording we could check the status of the booked absences.

 

We could clearly see that based on the Äbsence Reason used one of the absence has got auto-approved while the other is still awaiting approval.

Now if we change the absence reason for the absence awaiting approval and change it to “Sickness Absence Reason - Alternative Approval Routing”  we expect that the transaction would also change to “Completed” status.

 

 

Summary

So, this is how we can make use of  “Absence Reason” to route the Absence Transactions in an alternative approach. Considering the current pandemic situation there might be organizations who may like to add a absence reason say “COVID-19” such that if employee chooses this absence reason during absence booking then the absences should get auto-approved. This solution would be very useful in such scenario.

Viewing all 930 articles
Browse latest View live


Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>