Saturday, June 1, 2019

Payee %1 is being processed in Group List %2 run by User %3. There could be other overlaps.

The below error usually occurs when we run the payroll for a payee using group list who is already being processed by another user through another Group List.

Payee %1 is being processed in Group List %2 run by User %3. There could be other overlaps.

To resolve it, the user needs to be deleted from the other group list used by the other user. Just run below SQL and re-run the payroll for payee in error.
DELETE FROM PS_GP_GRP_LIST_RUN WHERE oprid = '';

ORA-00001: unique constraint (SYSADM.PS_GP_PI_GEN_SOVR) violated in Global Payroll

This error usually occurs when the COBOL process GPPDPRUN errors out and we run it again on top of that. It basically tries to insert the same set of rows on the payroll processing tables with the earlier set of rows already present. And when it does that it throws the UNIQUE CONSTRAINT error.

The first thing that we need to do is check the process log where we will get the clue as to where exactly process failed. Important thing to notice here is, if you process the payroll through streams then it's better to check which particular stream caused the COBOL to fail. Once the stream is located then just cancel that particular stream and re-run it, the error will be gone.

However, if the payroll is processed without streams then the whole payroll needs to be cancelled and re-run which will resolve the issue.

Saturday, April 6, 2019

PeopleSoft Installation: Change from host-only to bridged to enable internet in VM

When you deploy Linux based PeopleSoft VM on Virtual Box, system enables Host-Only Adapter so that host and guest can communicate with each other. Most likely, guest machine is assigned an IP 192.168.56.101 though it might differ also.
But the issue with this type of setup is that, guest machine can't communicate with external network which means Web Services to communicate with third part systems can't be created and to deal with this we need to change the adapter setting in Virtual Machine so that it can communicate both with host and external network. The best contender for the same is Bridged Adapter but that's not just enough as we have to also do couple of other things for this to work so lets get started.

Change network setting

Change the network type form host only to bridged adapter under network setting in Virtual Box as shown below:


Obtain new IP address of VM

Restart the VM and check the new IP address by issuing ifconfig command and note down new IP address

The new IP address of VM is 192.168.100.60

Changes in host system

Do following changes in the host machine

tnsnames.ora file

File Location - C:\oracle\product\12.1.0\client_1\network\admin
change the IP address to new IP address i.e. from 192.168.56.101 to 192.168.100.60

Hosts file

File Location - C:\Windows\System32\drivers\etc
change the IP address to new IP address i.e. from 192.168.56.101 to 192.168.100.60 for host hcm92.ps.com

Change in guest machine

Login into VM and change the IP address to new IP address i.e. from 192.168.56.101 to 192.168.100.60 for hcm92.ps.com
Hosts file location - /etc/hosts


Friday, April 5, 2019

Segmentation not created for a payee in PeopleSoft Global Payroll

Recently we had an issue when payroll wasn't creating segments for a new country for which we were implementing GP. We spend nearly two days trying to figure out what exactly was causing this.

These are possible reasons:

Unprocessed Iterative Triggers

If one or more iterative triggers of previous period are in unprocessed state then segmentation for those employees will not be processed. If so then delete those triggers using below SQL
DELETE FROM PS_GP_RTO_TRGR WHERE COUNTRY = <payee's country> AND EMPLID = <emplid> AND TRGR_STATUS = 'U' AND CAL_RUN_ID <> <Current Calendar Group>;

There might also be unprocessed iterative triggers created for the country other than payee's country which will cause this hence delete those triggers too.

Unprocessed Retro Triggers

If one or more retro triggers for other countries are in unprocessed state then segmentation for those employees will not be processed. If so then delete those triggers using below SQL
DELETE FROM PS_GP_ITER_TRGR WHERE COUNTRY <> <payee's country> AND EMPLID = <emplid> AND ITER_TRGR_STATUS = 'U';

Segmentation Triggers

If one or more segmentation triggers for other countries exist and are active for those employees then segmentation will not be processed.
DELETE FROM PS_GP_SEG_TRGR WHERE COUNTRY <> <payee's country> AND EMPLID = <emplid> AND SEG_TRGR_STATUS = 'A';

In our case, all above where the reasons so we basically deleted all those unwanted triggers (Iterative, Retro and Segment) using SQL script and it resolved the issue. The segmentation was processed.

Wednesday, March 27, 2019

Retro trigger not picked up when created through INSERT SQL in PeopleSoft Global Payroll

Global Payroll system is a den of mysteries and one of them is the retro trigger created using INSERT SQL. The issue with this is it doesn't get picked up by the payroll process unless we also create an iterative trigger for the current open period.

In case you haven't noticed, whenever you create a retro trigger manually through PIA, it also creates an iterative trigger as it's shown below:

Retro trigger created through PIA

Iterative trigger is automatically created with source record as GP_RTO_TRGR_VW

So, it means whenever you create retro triggers using INSERT SQL then create an iterative trigger also. Only if you do this the payroll will pick up the retro trigger and process it.
You can use these SQLs to create retro trigger and iterative trigger respectively.

SQL to create retro trigger

Insert into PS_GP_RTO_TRGR (EMPLID,COUNTRY,TRGR_EVENT_ID,TRGR_EFFDT,TRGR_CREATE_TS,RTO_TRGR_SRC,TRGR_STATUS,TRGR_DESCR,RECNAME,FIELDNAME,TRGR_FLD_VAL_CHAR,TRGR_FLD_VAL_DT,TRGR_FLD_VAL_NUM,CAL_RUN_ID) values (,'GBR','JOB',to_date(,'DD-MM-RR'),SYSDATE,'M','U',' ',' ',' ',' ',null,0,' ');

SQL to create iterative Trigger

Insert into PS_GP_ITER_TRGR (EMPLID,CAL_RUN_ID,ITER_TRGR_STATUS,TRGR_CREATE_TS,ITER_TRGR_SRC,COUNTRY,RECNAME,FIELDNAME,TRGR_FLD_VAL_CHAR,TRGR_FLD_VAL_DT,TRGR_FLD_VAL_NUM) values (,,'U',SYSDATE,'O','GBR','GP_RTO_TRGR_VW',' ',' ',null,0);

Wednesday, March 20, 2019

Object not copied, parent definition does not exist in target database (62,33)

We once were doing migration for a project but got stuck when app designer wouldn't copy one of the objects in the project to target instance and kept throwing below error:

Object not copied, parent definition does not exist in target database (62,33)

The error was associated with one AE SQL step and we spend quite some time scratching our head over this. Finally we discovered that we forgot to include the parent section of the SQL Step of the App Engine in the project. In other words, we were trying to migrate a child object without it's parent object.  
Well, it doesn't sound convincing right ? because we very often migrate child objects without their parent objects. But in our case it didn't work because the child object (SQL or PeopleCode) was added newly.
Let's try to understand it in a different way. Consider we have an app engine which contains Sections and Steps and this is how they are related.

App Engine - Section(s) - Step(s)

Consider that we have added a new step under a section so if we have to migrate one of the Steps (PeopleCode or SQL) then we must also take along the corresponding parent Section. If you have included the child object but not it's parent then app designer will throw an error (Shown in the first para).  To resolve this, include the respective parent section.

Saturday, March 2, 2019

Prompt isn't fetching the elements in the Rule Package Definition in PeopleSoft Global Payroll

Have you ever encountered this issue where in the rule package definition, when you try to add desired elements you don't see them in the prompt as shown below:


as you can see the element that you have defined isn't displayed in the prompt and this is related to your Global Payroll access. For instance, in this case I defined a country specific element for GBR but in my Global Payroll profile I have access to All Countries as shown below:


To resolve the issue, just change the flag to Specific Country and also select that particular country you defined the element for i.e. GBR in this case:


Now go back to the Rule Package definition, open the page again and try adding the element. If it doesn't work then log-out/log-in and then try again.