Monday, September 29, 2014

Business Unit, Company and Regulatory Region in PeopleSoft

Over the time the three entities Business Unit, Company and Regulatory Region have always confused me as to how differently are they used when setting up the PeopleSoft HRMS system for any organization. I have read People books many times to understand them but believe me you will always run around the concept but never get to it unless you see a live scenario.

Related Articles:

How COBRA Act works in US


In nutshell, when PeoleSoft HRMS is setup the:
  • Business Units are defined from security standpoint
  • Companies are defined from the standpoint of how many subsidiaries, operations an organization has
  • Regulatory Regions are defined from the standpoint of what are all the regions with different rules and regulations are there in a particular country where the organization operates.

Assume there is an organization named XYZ Corporations. It operates in 4 countries with its 7 development centers across these 4 countries, 1 Business Services in US and 1 Technology Services in India.

Country                              Location                                        Type of Operation

USA                                   2 (Texas, Illinois)                             Development Center
USA                                   1 (California)                                   Business Services
CAN                                   2 (Ontario, Quebec)                         Development Center
IND                                    2 (Bangaloru ,Mumbai)                     Development Center
IND                                    1 (Chennai)                                      Technology Services
GBR                                   1 (London)                                       Development Center        


Let's look at how the Business Units, Regulatory Regions and Company will be defined while setting up PeopleSoft HRMS system for the XYZ Corporations.

Business Unit in PeopleSoft

As stated earlier Business Units are always defined from security standpoint. Though it might not be true in few cases but it is in most of them at least where I have worked so far. So, while defining Business Units for XYZ Corporations the main aspect which will be looked at is:

How the restriction to see the control data will be imposed on these locations?

The requirements are:
  1. The three locations in US shouldn't be able to see each others control data.
  2. One country shouldn't be able see the control data defined for another country.
So, based on the requirement and from security standpoint below will be the Business Unit setup:

Country                             Business Unit        Description         

USA                                   USA01                    Business Unit for Texas     
USA                                   USA02                    Business Unit for Illinois     
USA                                   USA03                    Business Unit for California       
CAN                                   CAN                       Business Unit for Canada        
IND                                    IND                        Business Unit for India      
GBR                                   GBR                       Business Unit for Great Britain       


There are three locations for XYZ Corporation in US hence to enforce data restrictions on each other, three Business Units - two (USA01, USA02) for the Development Centers in Texas and Illinois respectively and third (USA02) for the Business Services in California.  Likewise, three more business units - CAN, IND, GBR for Canada, India and Great Britain to ensure that the setup reflects the requirement.

Company in PeopleSoft

As stated in the beginning, Companies are defined from the standpoint of how many operations, subsidiaries an organization has across the globe. In our case the XYZ Corporations has operations in 4 countries, have two subsidiaries XYZ Business Services US and XYZ Technologies Services India hence the Company Setup would look like:

Country                            Company                        Company Name

USA                                   XUS                                XYZ US
USA                                   XBSU                              XYZ Business Services US
CAN                                   XCA                                XYZ Canada
IND                                    XIN                                 XYZ India
IND                                    XTSI                               XYZ Technology Services India
GBR                                   XUK                               XYZ UK   

Regulatory Region in PeopleSoft

In PeopleSoft, a regulatory region is considered any region with specific rules and regulations or more importantly the tax regulations. It can either be a country or specific parts in a country for example, in US tax regulation varies from state to state but in India its uniform all across the country so in the PeopleSoft context, for the country like US there will be as many regions as the number of states but for India there will be only one Region as there is only one tax regulation.
So assuming that the country US and Canada have varying tax regulations from their one state to another, accordingly the Regulatory Region setup will look like:

Country                            Reg Region                 Description  

USA                                   USA01                        USA Texas
USA                                   USA02                        USA Illinois
USA                                   USA03                        USA California
CAN                                   CAN01                       Canada Montreal
CAN                                   CAN02                       Canada Quebec
IND                                    IND                            India
GBR                                   GBR                           Great Britain   


Want to learn PeopleSoft Core HR module thoroughly? I have several videos with total duration of 12 hours.


Following is the link to the YouTube videos Core HR
Click here to see course contents

Click here to know how it works

However, if you want to save money by purchasing whole module instead of in parts then visit this page to get more details PeopleSoft Functional and technical online training

Thursday, September 25, 2014

Employee Class (EMPL_CLASS) Field in PeopleSoft

What would you do if someone asks you to fetch a report of all the hourly employees ?
Well, I think you will certainly refer to the field EMPL_TYPE (Employee Type) with the value H (Hourly) for hourly employees. Similarly, for Full or Part time employees you would refer to the field FULL_PART_TIME (Full/Part), for the organization relationship its PER_ORG and for Regular or Temporary employees its the field REG_TEMP.

PeopleSoft Functional and Technical Online Training with Prerecorded sessions

But what if you have been asked to fetch a report of:
  • All the salaried employees who went on global assignments 
  • All the regular salaried employees.
  • All the salaried employees who have a fixed term contract with organization
  • All the trainees
       etc...

These are some additional classifications of employees but to identify them we can't simply use these existing fields as they won't serve the purpose however, we can definitely write some complex SQLs using these fields to do the same.
But why to write complex SQL just to identify certain category of employee when we have a better alternative which is Employee Class field. So basically the field Employee Class (EMPL_CLASS) defines the additional classification of employee in PeopleSoft for example in our case following could be the Employee Classes for each category.
  • All the salaried employees who went on global assignments - Expats
  • All the regular salaried employees - Salary Permanent
  • All the salaried employees who have a fixed term contract with organization - Fixed Term
  • All the trainees - Trainee

So with the Employee Class defined for each of these types, it's now very easy to identify them because in this case we have to refer to just one field which is much easier than writing complex SQLs.


PeopleSoft Functional and Technical Online Training with Prerecorded sessions



Want to learn PeopleSoft Core HR module thoroughly? I have several videos with total duration of 12 hours.


Following is the link to the YouTube videos Core HR
Click here to see course contents

Click here to know how it works

However, if you want to save money by purchasing whole module instead of in parts then visit this page to get more details PeopleSoft Functional and technical online training

Friday, September 12, 2014

FTE For Multiple Jobs in PoeopleSoft

We have already seen and discussed about the formula used to calculate the FTE and its elements in detail here - How the FTE is Calculated in PeopleSoft but the discussion we are going to have about FTE is certainly different than what we have already seen.
Its about how the FTE is calculated for the employees who hold more than one jobs in the organization. For example,  If an employee holds senior software position and in addition to that they work as technical trainer for few hours in the same organization then how the FTE will be calculated for them.

Please also see

Let's take an example, an employee has been hired as a full time Senior Software Engineer so conceptually the FTE should be 1 and in fact the same is reflecting in the job information shown below:



Fair enough..!  The employee now gets an additional assignment of Technical Trainer which requires 20 hours of their work and that means they will now have to spend 20 out of 40 full time hours in their first job which is Senior Software Engineer and remaining 20 hours in the second newly assigned job as a Technical Trainer. So let's add this additional assignment from Add Additional Assignment component (For details about how to add additional assignment visit - ). After providing all the field values when the Save button is clicked, It will certainly display below warning:
--------------------------------------------------------------------------------------------------------------
Warning -- Combined FTE of active jobs for employee AE45VK98 has exceeded 1.0. (1000,684)

The sum of FTEs of all active jobs (with employee status Active, Leave, Leave With Pay, Suspended or Short Work Break) for this employee has exceeded 1.0.
 

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

I think most of you would be familiar with this warning message but do all of us know the significance of it?


Let's get to the bottom of this.  

In PeopleSoft, each assignment or job has its own FTE which tells how much percentage of full time hours an employee is working on the job and sum of all these FTEs should always be equal to 1 unless the employee is working overtime. In our case the employee has two jobs in the same organization - Senior Software Engineer and Technical Trainer and and both require 50 % of full time hence the total full time hours (40 hours) will be distributed accordingly.

So, Ideally the FTE should be  0.5 + 0.5 = 1 but if you look at the employee's job information, the combined standard hours are 60 and hence the combined FTE is 1.5 which indicates employee is working overtime which is not correct. that's why the system throws the warning (Shown above) about exceeding combined FTE.




But why did it happen, why the FTE has exceeded 1?

Its because when another job is added the system adds the FTE  to the existing Job's to calculated the combined FTE. So in our case, the person was hired as Senior Software Engineer and the FTE for this job was 1. Then we added another assignment for this person for the role Technical Trainer and the FTE for this job was 0.5.
Therefore, system calculated combined FTE = 1 + 0.5 = 1.5

What should we have done instead?
As already stated, when the person gets a new assignment as Technical Trainer then they are supposed to spend 50 % of full time or 20 hours in this and rest 50 % in the existing one (Senior Software Engineer) and the same should be replicated in the system. Hence, before adding a new assignment we should have first changed the Standard Hours to 20 for the first job (Senior Software Engineer) and then the new assignment should have been added again with Standard Hours as 20.

So, before adding a new assignment, open the first job and change the Standard Hours value in Job Information tab to 20, and then add a new assignment with Standard hours value as 20. The combined FTE will now be 1 as shown below which is perfectly reflecting the hour distribution in both the jobs:





Note that the hours mentioned in this article are weekly hours and not the daily hours.
Full Time hours - 40 (Weekly)  FTE 1
50 % of Full Time - 20 (Weekly)  FTE 0.5



Please also see


Want to learn PeopleSoft Core HR module thoroughly? I have several videos with total duration of 12 hours.


Following is the link to the YouTube videos Core HR
Click here to see course contents

Click here to know how it works

However, if you want to save money by purchasing whole module instead of in parts then visit this page to get more details PeopleSoft Functional and technical online training

Wednesday, September 3, 2014

Understanding Component Interface in PeopleSoft

It was in 2010 when I first came across Component Interface and honestly I tried everything possible to get the mystery solved as to what is the rationale behind having such an entity in the first place. But, when the things started unfolding every passing day, I began realizing that life in PeopleSoft would have lot tougher had the CI not been there.

So lets cut to the chase and understand what is this component interface that we are talking about. Before we go any further I would like to share a word of advice to all PeopleSoft techies that if you guys aren't comfortable with CI then go through this article and get the concepts clear because its gonna make your life hell lot easier.

Please also see
Simplified Way to Provide a Page Access in PeopleSoft
Understanding Dynamic prompts in PeopleSoft
Implementing parallel processing using Application Engine in PeopleSoft
Adding and Maintaining Person Of Interest in PeopleSoft
PeopleSoft Set Control Field
Peoplesoft Row Level Security Search Records
SQL Query for Max Effective (MAX (EFFDT) dated row from JOB table
PeopleSoft Set Control Field Concept and Tableset Sharing 
Understanding Future dated security in PeopleSoft 
PeopleSoft 9.1 Person Model
PeopleSoft HRMS Online Training


Let's suppose, one fine day business sent you an excel sheet containing pay increase data of 200 employees and asked to load them into PeopleSoft through Job Data page, what would you do to complete the task ?

We essentially have only two options:
  1. Load each employee one by one through Job Data component in PIA
  2. Run a SQL update to directly load the data into database
     


Looking at the diagram above, one can easily understand how the data flows up to database tables through both of these methods so lets try to determine which method is better.

According to first method, we need to just login into PIA, open the Job Data component and do the transaction for each of the 200 employees one by one which is gonna take forever however, its more reliable and there is no room for the data to be corrupt because when we do the transaction through PIA, the underlying business logic associated with the component is executed which ensures that the data is ultimately loaded into desired tables correctly.

The second method however says that we can directly run an SQL update on the desired tables (JOB, COMPENSATION etc...) for each employees which will ultimately load the data into database. But, this method is highly unreliable as there are great chances of data becoming corrupt and inconsistent since as you can see in the diagram also, its bypassing the business logic which is mandatory here.

Now what ? we are left with the method 1 but as we already saw that doing the transaction for each of the 200 employees one by one is gonna take several hours and moreover, there is a little room for human error due to which data might be wrongly updated, But, if we can somehow automate this manual work then nothing could be better than this.
To automate this we need an entity to which the required field values for the component can be passed and then that entity subsequently can pass those field values to the Job Data component which will ultimately execute the transaction and load the data into database. The entity which we just talked about is nothing but Component Interface.

To understand a component interface let's first understand what is a Component in PeopleSoft?

Please also see
'Override Position Data' and 'Use Position Data' Option in Job Data Page
Hiring a Person in PeopleSoft
How to find the List of Users Assigned to a Role
How the Various Date Fields on Employment Data Page are Updated
PeopleSoft 9.1 Person Model
How to Resolve a Row Level Security Issue in PeopleSoft
Part Time/Full Time, Regular/Temporary and Contingent Workers in PeopleSoft
SQL Query to Find Direct Reports for a Manager in PeopleSoft 
FTE For Multiple Jobs in PoeopleSoft 
How the FTE is Calculated in PeopleSoft
Business Unit, Company and Regulatory Region in PeopleSoft

A Component represents a complete business transactions and is made up of pages. For example, the Job Data component represents various organizational transactions (Rehire, Transfer, Data Change etc...).  In order for a component to carry out a business transaction we must execute it through PIA manually.

But what if we have a requirement where the component need to be called from another application (PeopleCode, Excel to CI, Java, XML etc...) yet the underlying business logic built for component can also be executed to carry out a safe business transaction ?
That's exactly what the CI does, it works as a mediator between these applications and the component by taking the field values from these applications and passing them to the respective component which ultimately completes the business transaction.





The Component Interface encapsulates all the fields of the component its created for, and exposes them to the other applications as shown in the diagram above. But, the fields which are not needed to be exposed can be removed so that only the required fields are left. For example, in our case since we need to update the Compensation Rate for employee hence values only for the key fields, action/action reason, compensation rate need to be provided to the Job Data component  but if we create a CI for Job Data component then by default the CI will contain all the fields of the component. Hence, we can remove all the non-required fields from CI and keep only the required fields,

Let's get back to the requirement at hand, I believe by now you would have certainly understand that the data of 200 employee should loaded only with the use of CI. As I already mentioned that the CI needs to be called from another application but which one will be the most appropriate one that we need to figure out. Since the data has been sent in an excel sheet and moreover its a one time activity so the use of Excel to CI will be most suitable and efficient.
Excel to CI is nothing but, as name suggests, the input values for the selected fields can be passed to CI from MS Excel and then CI reads the input, pass it to the component for further processing.
So now we will pass all the 200 rows of data for the required fields to component interface through MS Excel at once. The CI will then read the data row by row on its own and pass the field values to Job Data component which will ultimately do the transaction. Note that, the way the transactions are done automatically for all 200 rows one by one is the same as if we are doing the transaction through PIA for 200 rows one by one manually.

So if we just include this third method in our first diagram then it will look like:




You can gain in-depth knowledge on CI with a live example by just paying below amount


I have a complete session in two parts which explains:

  1. How CI works - Overview, all the elements of CI etc..
  2. Creating an Inbound interface, that loads data on a multi level component using CI and App Engine
Below are the links to videos in YouTube.

CI Part 1
CI Part 2

Click here to know how it works

However, if you want to save money by purchasing whole module instead of in parts then visit this page to get more details PeopleSoft Functional and technical online training