ESI Contributions in Global payroll for India

Common wisdom
Employee State Insurance (ESI) is a type of insurance scheme that addresses Indian employees whose gross wage is INR 15000 or lesser. Employee contributes 1.75% and Employer contributs 4.75 of the monthly gross wage.

Common questions

Question 1: When an employee receives an increment, can the Employer stop ESI deductions and contributions from that month onwards?

The answer is “No”. In the scheme of ESI, the whole financial year is split into two blocks – April to September and October to March.

When an employee has contributed to ESI atleast once in a block, the employee must continue to contribute to ESI for the rest of the block. Lets say, someone receives an increment, from 1-June onwards, that bumps their ESI gross from 14000 to 17000. Since the employee has contributed to ESI in April and May, he/she must continue to contribute to ESI until September.

Question 2: In that case, what is the wage based on which ESI should be calculated?

There is a common misconception that when ESI gross for an employee exceeds 15000 (the limit set by govt and revised from time to time), ESI deductions should be based on the limit. No, ESI should be deducted on the actual ESI gross regardless of the limit.

Going back to the example above, the employee’s ESI deduction in June will be 1.75% of 17000 and not 1.75% of 15000.

How is this handled in PeopleSoft’s Global Payroll for India?

ESI deduction is based on Generation control ESI GC ENROLL, which is based on ESI FM ENROLL GC. I have re-produced the formula and left a few comments also.

Lines 5 through 36 handle block 1, while lines 37 and later handle block 2.

Look out for AC[ESI_FYTDA] on line 27. Anytime that accumulator is greater than zero, the generation control turns true.

Similarly, look out for the historical rule HR[ESI HR 2ND SEG]. The historical rule computes total of ESI deductions made in block 2 (October to March). Anytime it turns out non-zero, the generation control is set to true.


IF AC[ESI GROSS WAGES] > 0 THEN

IF ( AR[ESI AR ENROLLMENT] = 1 AND FM[AGE60 FM] = 1 AND VR[ESI VR EFF STATUS] = 'A' ) THEN /* If enrolled in ESI and Aged < 60 */

IF FM[ESI FM 1ST SEG] = 1 THEN /* In block 1 - Period  b/w 1st April and 30th Sep*/

IF FM[ESI FM 1ST MTH SEG] = 1 THEN

IF AC[ESI GROSS WAGES] < VR[ESI VR GROSS CHECK] THEN /* ESI Gross Check = 15000*/

1 >> FM[ESI FM ENROLL GC]

ENDIF

ELSE

IF SY[LAST HIRE DT] >= SY[PERIOD BEGIN DATE] THEN /*New hire and first payroll*/

IF ( AC[ESI GROSS WAGES] < VR[ESI VR GROSS CHECK] ) THEN

1 >> FM[ESI FM ENROLL GC]

ENDIF

ELSE

IF ( AC[ESI GROSS WAGES] < VR[ESI VR GROSS CHECK] OR AC[ESI_FYTDA] > 0 ) THEN

1 >> FM[ESI FM ENROLL GC]

ENDIF

ENDIF

ENDIF

ELSE /* In block 2 - Period Begins after 30th Sep*/

IF FM[ESI FM 1ST MTH SEG] = 1 THEN

IF AC[ESI GROSS WAGES] < VR[ESI VR GROSS CHECK] THEN

1 >> FM[ESI FM ENROLL GC]

ENDIF

ELSE

IF SY[LAST HIRE DT] >= SY[PERIOD BEGIN DATE] THEN /* New hire and first payroll*/

IF ( AC[ESI GROSS WAGES] < VR[ESI VR GROSS CHECK] ) THEN

1 >> FM[ESI FM ENROLL GC]

ENDIF

ELSE

HR[ESI HR 2ND SEG] >> VR[GP TEMP001 NUM] /* Historical rule to identify ESI deductions in Block 2*/

IF ( AC[ESI GROSS WAGES] < VR[ESI VR GROSS CHECK] OR VR[ESI TOT2ND SEG VAL] > 0 ) THEN

1 >> FM[ESI FM ENROLL GC]

ENDIF

ENDIF

ENDIF

ENDIF

ENDIF

ELSE

0 >> FM[ESI FM ENROLL GC]

ENDIF

Advertisements

Datamover Export and Import PeopleSoft

There are quite a few techniques available in PeopleSoft to export and import the table from the database, one of which is Datamover.
Data Mover Export
set log C:\EXPORT.log;                                                  — Place where log file is maintained
set output C:\QC146tabdmp.dat;                             — This is the place where the exported data is stored.
export FO_CSF_FIELD;                                                —  Table that needs to be exported.
export RS_ASSIGNMENT;
export RS_SO_HDR;
export CA_BI_DRIVER4;
Data Mover Import
set log C:\IMPORT.log;                                              — Place where log file is maintained
set input C:\QC146tabdmp.dat;                             — This is the place where the exported data is retrieved.
import FO_CSF_FIELD;                                             —  Table that needs to be imported from the .dat file.
import RS_ASSIGNMENT;
import RS_SO_HDR;
import CA_BI_DRIVER;
Note: PeopleSoft DataMover stores the exported file in as encrypted binary file and it cannot be reused in any other way, you can only use Datamover to export and import the dat file which the DataMover generates.

How to configure/setup PeopleSoft Core HRMS

Organization Master Data Setup

After the initial installation settings are done, the first step in configuring the application for an organisation is to Set-Up the Organisational Master Data. This data is also referred as Foundation Data.

The following organizational data will be setup:

  • Company
  • Business Unit & Set IDs
  • Locations
  • Departments
  • Job Master Data

SetID


With Set ID’s definition it is possible to control what a business unit can access within a table, as they are used to restrict or grant access to different data in a single table thereby allowing table set sharing. In Xyz Company, each LOB (Line of business) maintain separate department, designation etc. SetID will be created for each line of business so that each LOB can view respective data.

Navigation: People Tools >Utilities >Administration> TableSet IDs
Business Units

The Business Units are logical organizational entities, determinant on many control tables, which are a way of tracking specific business information for reporting and for data collection. InXyz Company, business unit will be created for each LOB.

Navigation: Set Up HRMS> Foundation Tables >Organization> Business Unit

Companies

The purpose of the Company table is to define organization’s legal business entities.
In PeopleSoft length of company field is 3 characters.

The Companies are created in Company component, divided in 4 pages

  • Company Location
  • Default Settings
  • Phones
  • Rules Definition

Navigation: Set Up HRMS> Foundation Tables >Organization >Company


Company– Location tab

Company is defined with code, the effective date from which it exists, short and long description of the company and the address. It can be associated with the Location, if it was already set up, and the corresponding set ID.

PeopleSoft allows 3 characters for Company code. Also, the EFFDT can be set for all companies as ’01-01-1900’ to avoid any data discrepancies.
Company– Default Settings tab

This page is used to specify default company information, like regulatory region and currency code. The values can be overridden at job level. Payroll for North America will be ignored, as well as the linked fields.

Company– Phones tab:
This page can be used to define the company’s industry (type of industry and industry sector) and the phone numbers of the company, like business, fax, etc.

Company– Rules Definition tab:

This page can be used to define the decimal precision for Full-Time Equivalency, so the purpose is to enter the number of decimal positions that the system will use to calculate FTE. FTE is used for calculating the employees pay on basis of hours worked. This feature will not be required for DB.

Location

The purpose of establishing Locations in PeopleSoft application is to clearly identify physical local place where the employees work.

PeopleSoft Locations would be mapped with the actual Xyz Company office locations. For each location the default holiday-schedule will also be specified.

Navigation: Set Up HRMS >Foundation Tables >Organization > Location

Location – Location Address tab

This  page is used to record the Location description, address, phone/Fax, building, floor, country, etc.

Location – Location Profile tab

This page is used to store the location profile information, such as:

  • Salary Default – The Setid and Salary plan will be used to default the salary information
  • Regulatory Region or Region
  • Holiday Schedule – a code defined with the specific holidays of the Location
  • Division – linked with the location

Each Line of Business shares the Locations and thus, one setid will be created for each Line of Business. If a location is common for State and Corporate Office or State and Unit Office a different location code will be configured to enable accurate data security. The list of locations will be finalized in Steering.

Sub-Location : The purpose of establishing Sub Locations in PeopleSoft application is to clearly identify physical local place where the employees work.
PeopleSoft Sub Locations would be mapped with the actual Xyz Company

Departments

The Departments are an important definition of the organizational structure. Based on the Department, the Location code, company and manager ID can be defaulted at the worker level. Xyz Company has currently many Departments/Verticals such as Finance and Accounts, HR, Editorial etc. These departments can be mapped to PeopleSoft departments. These departments typically have parent level department or verticals. Each vertical will have respective corporate head, state heads and unit heads.

Navigation: Set Up HRMS> Foundation Tables> Organization> Departments


Departments – Profile
In this page, Manager Type can be used to define the Manager ID or Manager’s Position number of the department. Since Xyz Company has departments centrally organized, thus, this feature will not be used.

The department/verticals in Xyx Company are listed in the table below.

SNO            Line of Business       Department Code                Department Description
1                   XXXX0                                  100                                                 Actuary
2                   XXXX0                                 120                                                  Admn
3                   XXXX0                                 140                                                  Claims
4                   XXXX0                                 160                                                  Corporate

 Department Tree

In PeopleSoft, Department tree will be built representing the department level hierarchy. It can also be used for governing the data security access but currently Xyz will use Location based data security access.

Navigation: Tree Manager> Tree Manager

Note: Whenever a new department needs to be added to the system, it should be done through the department tree. It is essential to do this to maintain the integrity between the department table and the department tree.

 Job Codes

Xyz Company maintains Designations and Salary grades for an employee. The designation can be mapped to PeopleSoft Job Code. Job Code has standard hours, work period, compensation frequency etc.
Navigation: Set Up HRMS> Foundation Tables>Job Attributes> Job Code Table

 Job Family: It categorizes a job code into a more general grouping. For example, a trust analyst and an operations analyst into a job family called Analyst.

The other tabs such as Evaluation Criteria, Market Pay Match, Default and Non-Base Compensation are used mainly for Compensation and will not be configured in DB.

The table below depicts the Static Positions in Xyz company that will be configured in PeopleSoft.

Job Code           Description
ACT001             Head and Appointed Actuary
ACT002            Manager – Actuary
ACT003            Acturial Mgr (Analytics)
ACT004            Deputy Manager-Actuary
ACT005           Asst Mgr – Actuary

 Currency

Indian Rupees i.e. INR will be the base currency for Xyz Company HRMS system.

Navigation: Set UP HRMS> Foundation Tables >Currency and Market Rates> Currency Code

Salary Plan
Salary Plans define salary components and default values for the components
Navigation: Set Up HRMS > Product Related> Compensation> Base Compensation >Salary Plan

Salary Grade and Step

Xyz Company hires employees in one of the following grades :
Navigation: Set Up HRMS> Product Related> Compensation> Base Compensation> Salary Grade

Set ID     Salary Administration Plan       Salary Grade         Description
XXXX0     S01                                                                AMG                              Assistant Manager
XXXX0     S01                                                                AVP                              Associate Vice President
XXXX0     S01                                                                CEO                               Chief Executive Officer
XXXX0     S01                                                                DCO                               Deputy CEO
XXXX0     S01                                                                DMG                             Deputy Manager
XXXX0     S01                                                                EXA                              Executive Assistant

Salary Grade – Salary Step: One default Salary step will be created for mapping in Job Data

Comp Rate Code
Comp Rate code represents different components of salary such as basic salary, HRA etc.
Navigation: Set Up HRMS> Foundation Tables> Compensation Rules> Rate Code Class Table

Joining Checklist

Employee’s documents such as education details, experience certificate etc. are verified by HR at the time of joining. HR verifies these documents and employee details against a checklist. The same checklist can be configured in PeopleSoft through following pages.
Navigation: Set Up HRMS > Common Definitions> Checklists>Checklist Items
Navigation: Set Up HRMS>  Common Definitions> Checklists> Checklist
Action/ Action Reason

During an employee’s life cycle in an organization, various activities such as Promotion, Transfer etc. can happen. To record these events, Personnel action and action reasons can be created in PeopleSoft.
Navigation: Set Up HRMS> Product Related> Workforce Administration >Actions

Navigation: Set Up HRMS> Product Related> Workforce Administration >Action Reasons

Following is the list of Actions that is delivered in PeopleSoft.

S.No.         Actions                            Action Reason
1                    Hiring                                    HIR
2                   Promotion                           PRO
3                   Transfer                                XFR
4                   Pay Rate Change               PAY
5                   Data Change                       DTA
6                   Leave of Absence            LOA
7                  Paid Leave of Absence   PLA
8                   Rehire                                   REH
9                  Retirement                          RET
10               Termination                        TDL

Address Type
Different address types such as Home, Business etc. can be defined at Address Type page.

Navigation: Set Up HRMS> Foundation Tables> Personal Address Type

Note: Address type that is not required can be removed.

National ID Type

National ID types such as PAN number, Voter ID Card can be defined here along with display format.

Navigation:  Set Up HRMS> Foundation Tables> Personal> National ID Type

Bank

List of banks used across Xyx Company for employee payroll processing can be configured here.

Navigation: Set Up HRMS >Common Definitions> Banking >Banks

Bank – Branch Tab:

In this page, IFSC code can be mapped to Bank Identifier Code. A custom field will be created for MICR code.

Employee Class
Employee Class will be used to differentiate the level of employee – Unit, State or Corporate.
Navigation: Set Up HRMS Product Related Workforce Administration Labor Administration Employee Class

Three Employee Classes will be configured – Unit, State and Corporate Employee. Employee Class will be assigned in the Job Data of the employee.

Content Items

The academic degrees, Responsibilities (For Editorial), Competencies, Honors and awards etc are defined in the following component. The degree is defined as a content type and the various degrees are referred as the content items of content type degree.

Navigation: Set Up HRMS > Product Related >Profile Management> Content Catalog >Content Items

How PeopleSoft Applications are tested during an Implementation

                         Once the developement is completed the Developer will do unit testing and he/she will be sending out a request to the Migration team to migrate the project to the respective testing environment, say UAT environment.
Generally, UAT will be performed by the Business/ Users / Vendor who are specialized in that particular domain.
Before all the testing starts, the testing team will analyse the product and create a test design for the module/product, based on the Business Requirement Document(BRD) given by the client, and based on the Functional Requirement Specification Document(FRSM), which basically will be created by the Development Team.
Soon after the real testing starts.
Smoke test is generally performed first with few number of test cases in each product to verify the application is ready for the testing. As a practice, testers will test some 10 to 15 % of the total test cases that they have designed. Tester may rise defect if they come across any and the developer will fix it immediately.
Comprehensive testing is a place where the each and every field and functionalities of the application/ product will be tested by the testing team. say 100% of the test cases will be tested by the them. In the course of the testing, if they find any defect they will immediately rise an issue and the development team will fix it in a short span of time.
So, at the end of the comprehensive round the product will come to a shape.
Regression testing is the final round of testing to make sure the product is a fool-proof, This testing will always be done in the code freeze environment, the developer will have no access to the environment in the mean time. Testing team will take some 60% of the test cases that they have tested in the comprehensive round.
In worst case, if the testing team come across any defect then they will rise it with a show stopper and issues will be addressed with a high priority. Now regression will be done to make sure that the code change doesn’t have any impact.
Some critical test cases will be taken for final sanity round and then the product will be given to user for UAT signoff and testing.

PS_APP_HOME introduced in PeopleTools 8.52

Traditionally, a PS_HOME contained both PeopleTools and Application related files. This meant that you had to maintain four different PS_HOME folders for each of you DEV, TST, QA and PROD environments. For customers that use more than one PeopleSoft application (and there are many many), the number of PS_HOMEs multiply and get un-manageable at some point in time.

PeopleTools 8.52 introduces PS_APP_HOME which co-exists with a PS_HOME, ofcourse along with the PS_CFG_HOME. That sounds like a lot of HOMEs 😉 What does each of these contain? Simply put, PS_HOME – contains all that your PeopleTools CDs offer, while PS_APP_HOME contains all that your application and language media packs offer. PS_CFG_HOME contains all your application server and process scheduler domain configuration fules.

I personally think that the separation offered by PS_HOME and PS_APP_HOME reduces a lot of administration overhead. And a lot of space too. The separation also tremendously streamlines the application of peopletools patches and promises a shorter time-to-production.

Just that you need to ensure you set PS_APP_HOME to the appropriate environment (DEV/QA etc) before invoking PSADMIN. You would also need to enlist both PS_HOME and PS_APP_HOME in your process scheduler for SQR files, because DDDAUDIT would come from PS_HOME and PER010 from you HR PS_APP_HOME.

Finally, PS_APP_HOME is an optional feature. You could still continue to use PS_HOMEs the traditional way

Tablespace information in Oracle

Every DBA evolves his/her own style over a period of time. They build handy scripts  to carry out each and every activity in the database, including monitoring jobs, gathering tablespace information etc etc. Here is one particular script that I use to gather free/utilized space information on tablespaces.

SELECT A.TABLESPACE_NAME, A.TOTALSPACE TOTALSPACE,(A.TOTALSPACE - B.FREESPACE) USEDSPACE, B.FREESPACE FREESPACE FROM
 (SELECT TABLESPACE_NAME,SUM/1024/1024/1024 TOTALSPACE FROM DBA_DATA_FILES where TABLESPACE_NAME in (select tablespace_name from dba_segments where segment_name in ('SET OF TABLES T1','T2','T3'.'T4'))GROUP BY TABLESPACE_NAME) A,
 (SELECT TABLESPACE_NAME,SUM/1024/1024/1024 FREESPACE FROM DBA_FREE_SPACE where TABLESPACE_NAME in select tablespace_name from dba_segments where segment_name in ('SET OF TABLES T1','T2','T3'.'T4')) GROUP BY TABLESPACE_NAME) B WHERE A.TABLESPACE_NAME =B.TABLESPACE_NAME ;

Sample Output for the above script will be

TABLESPACE_NAME       TOTALSPACE        USEDSPACE       FREESPACE
GPAPP                                           101                      92.4963989       8.50360107
PSINDEX                                      167                     150.486206       16.5137939

Hope it will be useful for you. Comments are most welcome.

“Appreciation is a wonderful thing:It makes what is excellent in others belong to us as well”

PeopleSoft Data Archive Manager

PeopleSoft’s Data Archive Manager offers an excellent framework for building archival scenarios. Due to its nativity, Data Archive Manager intuitively understands relationship between tables while creating scripts to archive data. There is no compromise on data integrity and no data is lost while archiving. By design, Data Archive Manager offers seamless archive and restore options. Personally, I like the fact that at every stage in the process, Data Archive Manager audits the data moved back and forth to a row-count level of accuracy.

And oh, did I mention that Data Archive Manager is bundled along with PeopleSoft, so you don’t have to buy expensive licenses to third-party tools for managing your PeopleSoft data.