Tuesday, February 13, 2018

Deleting Employee ID and Employee Record in Peoplesoft


Imagine what it would be like when you are in a scenario which require you to delete an Employee ID or an Instance of employee ID, possibly because you have mistakenly hired an employee or the employee hired didn’t turn up on first day or left the organization on the same day (Wonder what made him leave the same day.. 🙄 poor guy..)

Alright.. What next?? Get rid of the Employee ID in peoplesoft...🤐 Nightmare!!! Isn’t it..?

One thing that immediately strikes all techy geeks is to identify all the records which contains EMPLID field and run delete scripts against that employee. Seriously..??  Want to know a secret? There is much simpler solution than this.. 😉

Deleting EMPLID

Peoplesoft has a delivered process(HR_PER502) which can delete an employee ID. Just enter the employee ID here and leave the rest to be taken care by the process. 

Set Up HCM > System Administration > Database Processes > ID Delete


















Although the above process eases our work, I should point out that Peoplesoft does not recommend deleting an Employee ID that has already been processed through Payroll. 

Let’s say that you still delete an Employee after payroll has been run for that ID, leaving in a state with all pay calculation totals messed up, it will be incredibly difficult to harmonize the numbers leading to Audit/Compliance issues. Hence you should never take the back-door route to fix an error that has occurred, Perhaps, I would recommend adding a Termination row in such cases to keep a clean audit.

Keep in mind that the above process does not delete all audit records (starting with AUDIT_...)

Changing EMPLID

There will be instances where you want to change the EMPLID to a different ID, for example, an Employee who rejoins the company and hired with a new employee ID instead of a Rehire action. 

You know what? You can use the same process to change an EMPLID to a new number.  

Set Up HCM > System Administration > Database Processes > ID Change


















Deleting Employee Record

But wait – there’s more. Another useful delivered process which helps us to delete an Employee Record instance which was created by mistake, it can be accessed from the following navigation. 

Set Up HCM > System Administration > Database Processes > ERN Delete Process > ERN Delete Process














The system prevents the deletion of EMPLID/EMPL_RCD combinations which are used in key processes like payroll, benefits and time reporting. 

To sum up, Instead of performing minor heart surgery on the database by running multiple delete scripts, it is often suggested to go with Peoplesoft delivered processes discussed above. Feel free to drop in your feedback/suggestions. 😊

Sunday, January 28, 2018

Behavior of think-time Functions in PeopleSoft

Some issues are uncommon, weird and hard to understand what exactly went wrong. One such weird issue in peoplesoft is related to Think-time functions. I know many of my colleagues who were stressed to the core and said ‘Its time to leave this planet’ because of this peculiar issue in Peoplesoft. Come!! Let’s sort this one out.

Think-time PeopleCode event (<think-time event>), but a SQL update has occurred in the commit interval.

In this article, let’s see what think-time functions are, and some of the limitations that require our attention when dealing with such functions.


Basically, any function that waits for user input or external process to complete is a think time function. Messagebox, for instance, waits for user to click Ok or Cancel button… Exec() function running in synchronous mode which suspends processing until the triggered process is complete.

Listed below are the think-time function in PS

  • DoCancel
  • DoModal
  • DoModalComponent
  • Exec(Only when it runs in Synchronous Mode)
  • AddAttachment, MAddAttachment, ViewAttachment, DetachAttachment
  • InsertImage, CropImage
  • CreateObject, ObjectDoMethod, ObjectSetProperty, ObjectGetProperty(When object Required User- action)
  • Prompt
  • RemoteCall
  • RevalidatePassword
  • WinExec(Only in Synchronous mode)
  • Winmessage and Messagebox(Depending on Style Parameter)
  • Calls to an External DLL

Think-time functions in Application Engine

Are you using Exec() or RemoteCall() in AE to run a batch file or a remote process? You should consider the following then:

Exec(&unixCmd, %Exec_Asynchronous + %FilePath_Absolute); /*Running in Asynchronous mode*/
&ExitCode = Exec(&unixCmd, %Exec_Synchronous + %FilePath_Absolute); /*Running in Synchronous mode*/

Running Exec() in Asynchronous mode is not a think-time function, as the AE process does not wait for the invoked command to complete. With Synchronous mode it is different, because the AE process needs to wait for the invoked command to complete. OH!! That’s Pathetic.. Don’t expect it to wait for you if you haven’t committed pending transactions, you will end up in think-time event error. 

The simple solution here is to issue a Commit before Exec() is invoked. If AE was written to be Restartable, then make sure that the previous step is committed before the step executing Exec. For AE with ‘Disable Restart’ checked, a CommitWork() has to be issued before Exec(). Easy right?

Think-time functions in Component Interface

Think-time functions are usually suppressed and ignored in CI. So, in such cases better to write a separate logic for CI.

If %CompIntfc then
/*Logic for CI*/
Else
/*Get user Input*/
End-if;

Think-time Functions in Peoplecode

Winmessage() and MessageBox() behaves as a think-time function only when the style parameter specifies more than one button. When you make the style parameter to show only Ok Button(0), then it behaves like a normal function. If style is neglected, Winmessage() displays both Ok and Cancel Button which acts as a think-time function. Hence you must always specify with style parameter like Winmessage(“Test Message”, 0) to show only Ok button.

Sometimes you would have noticed that your MessageBox or Winmessage does not work before call to a Transfer or TransferExact function. If you want to display your message, then change the style to show OK and Cancel Button.

It’s not so hard to debug when you receive error in peoplecode related to think-time functions. PeopleBooks suggests us not to use think-time functions in SavePreChange, Workflow, RowSelect, SavePostChange, and any peoplecode event that executes as a result of ScrollSelect, ScrollSelectNew, RowScrollSelect, or RowScrollSelectNew function call, and any peoplecode event that executes as a result of Rowset class Select or SelectNew method. If you are using think-time functions in one of the above events, just get red of it.



Monday, January 22, 2018

PeopleSoft - Data Conflict Issues

“Come on!!! This is such a simple and straightforward component.. It’s not fair… Why am I running into this issue…”. Ever felt disheartened like this when you see these kind of error messages? 


Data being added conflicts with existing data(18,2 

or 

Changes conflict with another data item. (18,5)


Chill out!! You are not alone.. Let’s set this right..
The prime cause of this issue is because of writing into a PS Record with duplicate key values. Basically, there exists a row with some key values and you are trying to add another row with same key combination, so look out for how did you end up with such duplicate rows. 
I have itemized a few steps which needs validation when you encounter this error

Get the Basics Right – Record Level Structure

Remember your first lesson in creating multiple levels in PS? Yes.. Level 1 record must contain key fields from Level 0 Record and an additional key. Check out if your key structure is right, otherwise fix it now.

Stop Clashing with Component Processor – No Auto Select & No Auto Update Property

Either you do the selection of rows from tables or allow the component processor to do it for you. When you populate a grid or scroll area through peoplecode, you must check the ‘No Auto Select’ property. Likewise, when you have decided to take care of updating the backend records, better select the ‘No Auto Update’ option. When you ignore this, you end up updating the same row twice leading to this issue. 
Thoroughly check all the grid and scroll area properties from your main and secondary pages and make sure you don’t clash with the component processor.


I would recommend allowing the component processor to do its job unless you have some business requirement that requires selection or updation through peoplecode. Atleast try avoiding SQLEXEC statements to insert or update records which are readily available in your component buffer. Why reinvent the wheel??

Weird Field Assignments

Let’s say you have a field named ‘COMPANY’ which is a key field in one of your records and a peoplecode in ‘PreBuild’ or ‘Rowinit’ event sets a default value to this field. If this field is editable and user enters some value and saves it, the next time when user opens the page again, the default value is displayed again and if you try to modify this key field and save again, you will encounter Data Inconsistency issue.
So always look for such weird field assignments/modifications, 
Check out for Saveprechange or Savepostchange events, if some code is modifying your key values.
Did you overlook your record peoplecode? There are chances that the same record is being used in multiple components and the code written for some other purpose gets triggered for our business transaction resulting in data conflict issues.

Out of sync Sequence Numbers

When you use sequence numbers in your page that needs to be incremented and updated every time, better not to go with SQLEXEC Update statements, Instead use the delivered getNextNumberwithGapsCommit() function. This can help avoid data inconsistency issues. 

Clear App Server Cache

For no reason, if most of the users receive data conflict issues, I would suggest to clear the app server cache. Believe me, it helps sometimes.

Tuesday, January 9, 2018

You are not authorized to access this component. (40,20)

I once had a very dreadful day at office breaking my head trying to solve what looked like a very simple security issue. ‘You are not authorized to access this Component (40,20)’. If you are having one such distressing day today, then don’t worry, you have landed at the right place and we are going to fix this right away.

This is one of the most prevalent security issue in Peoplesoft faced by every Peoplesoft developer atleast once in their lifetime. We have prepared a simple checklist indicating all the possible scenarios where this issue could happen with quick solutions for the same.

    Security Access:

   First and foremost, check whether you have access to the component/page you are trying to access. Use the following query to verify if you have access.

SELECT R.rolename ,

  RC.classid

FROM psroleuser R ,

  psroleclass RC

WHERE RC.Rolename = R.Rolename

AND R.roleuser    = '<OPRID>'

AND RC.classid   IN

  (SELECT CLASSID

  FROM psauthitem AUTH

  WHERE AUTH.baritemname='<COMPONENT_NAME>'

      AND AUTH.pnlitemname  ='<PAGE_NAME>'

  )

Non-existing permission list assigned to the role:

There will be instances where a permission list exists in a role but not in the database. This usually happens when project is migrated from one database to another but does not include the permission list. Use the below query to identify if you have any such permission list missing.

Select R.rolename

, RC.classid

From psroleuser R

, psroleclass RC

Where RC.Rolename = R.Rolename

And not exists

(Select 'X' from psclassdefn C

Where C.classid = RC.classid)

-- And R.roleuser = '<OPRID>'


Still not able to access? Why not try running the Portal Security Sync process from the following Navigation.

  PeopleTools - Portal - Portal Security Sync

Issue with Transfer function:

There are scenarios where the system should change the flow of transaction from one component to another using Transfer function. In such cases, verify if the below points are taken care.
   i) Have you specified the correct action mode while using Transfer function?
    Transfer( False, MenuName.DEFINE_PAYROLL_PROCESS, BarName.SETUP,             ItemName.ACCOUNT_CODE_TABLE, Page.ACCT_CD_TABLE, "L", &Parmrec); 


As you see in the above example, the component is registered in ‘Update/Display’ and ‘Correction mode’, whereas Transfer function is trying to access this component in ‘Update/Display All’ mode, which is not correct. Accessing this component in ‘Add’ or ‘Update/Display All’ mode using Transfer function will result in this Security issue.

ii) Have you specified the correct ItemName in Transfer Function? People often tend to misinterpret ItemName with Component name, which is incorrect.

Transfer( False, MenuName.DEFINE_PAYROLL_PROCESS, BarName.SETUP, ItemName.ACCT_CD_TABLE_NEW, Page.ACCT_CD_TABLE, "U", &Parmrec);



As you see in the above example, Item Name is ‘ACCOUNT_CODE_TABLE’ and component name is ‘ACCT_CD_TABLE_NEW’.
The correct way of writing this Transfer function function is:
Transfer( False, MenuName.DEFINE_PAYROLL_PROCESS, BarName.SETUP, ItemName.ACCOUNT_CODE_TABLE, Page.ACCT_CD_TABLE, "U", &Parmrec);

    Mostly by now, you should have been able to fix this issue. If you are still reading this point, then I would suggest you to clear the application server cache and reboot the server and try again.


Saturday, December 9, 2017

Tiles in PeopleSoft fluid homepages

Tiles are building blocks or elements of an Home page that show information to the end user 
And enable an easy way to navigate around the system. Tiles allow users a quick way to perform routine tasks, such as decision making or monitoring. Tiles give users direct access to targeted transactions.

Creating a Tile

The below diagram clearly depicts components of a Tile and the sequence in which they should be created.


Adding tiles to the homepage

Step 1
Give access to the Source

Step 2
Give access to the Target

Step 3
Give access to the homepage

Step 4
Selected the tile to appear on homepage

Step 5
Configure the tile to mandatorily appear on homepage


Want to see a demonstration with real time example on how to create and add tiles to fluid homepage?


I have a complete session which demonstrates:

  1. The Tiles overview
  2. Creating the Tiles
  3. Adding the Tile to fluid homepage
Below is the link to video in YouTube.

PopelSoft Fluid Tiles

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

Sunday, November 19, 2017

How to implement Toolbars in a Page PeopleSoft

Toolbars are replacements of traditional push buttons, they brings many advantages for developers on the table such as:
  • Very easy to implement
  • No alignment required
  • Their page behavior can be controlled from PIA
  • Easy to debug since the underlying code is written in App Class/Package

While the developers enjoy these advantages while implementing Toolbars however, once implementated, the end users enjoy the ultimate benefits such as:
  • The page looks more aligned with modern web based pages
  • Easy to navigate through various pages involved in the wizard like applications
  • For the pages with bulk data which makes it long with scrolls, the Toolbars with actionable options can be displayed both in header and footer areas. This makes the end user's job easy to take the actions on page.

These are the steps to implement Toolbars:

  1. Identify the icons/buttons required on the page
  2. Create/modify the buttons that are required to be displayed on Toolbar in the page
  3. Create new Toolbar Definition and add the buttons
  4. Develop the application package/classes which contains underlying code for toolbar action
  5. Add the delivered sub page for toolbars into the page where this needs to be implemented
  6. Add the PeopleCode into the page activate PeopleCode to initialize Toolbars on page
  7. Add the PeopleCode in the FieldChange event to trigger the underlying PeopleCode






Want to see a demonstration with real time example on how to implement Toolbar?


I have a complete session which demonstrates:

  1. The Tooolbar overview
  2. Implementing Toolbar on a page
Below is the link to video in YouTube.

PopelSoft Toolbars

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, November 1, 2017

4 Reasons PeopleSoft will continue to be a leader in HR segment

Over last few years, especially since the advent of Workday, the talks that PeopleSoft, once a leader in the ERP segment is now loosing it's hold in the market share and soon it will be vanished, is going around a lot. Being a PeopleSoft consultant for over 8 years, that's not too long though, it concerns me a lot not because I also believe what People say but more because these excessive talks are changing perception among those who are already working in this technology as well as young aspirants aiming to kick start their career in this.

So, what's going to happen ? Is what being talked about gonna be true or there is something which is gonna change the course of the wheel ?


It's true that some of the PeopleSoft customers are switching over to Workday but while that happens, customers who are in other technologies are also switching over to PeopleSoft and this has been happening for quite a long and that keeps the balance in the industry.


So these are the 4 reasons that make me believe what I believe 


Fluid UI

In this era of compact devices(Smartphones, Tablets, Ultrabooks), the classic user interface really looked old school and was bound to fade out in the end. Apparently Oracle realized it on time and came up with Fluid Technology. PeopleSoft application fluid pages scale gracefully from large screen devices, such as laptops and desktops, to the reduced viewing space of tablets and smartphones. Many commercial websites use a similar design model whereby the presentation and layout of information is adjusted dynamically to conform to the dimensions of the user’s device.

With Fluid, PeopleSoft is has already moved from an application based portal to a modern website based portal. 


No more expensive upgrades

The big fat upgrade process have really been dragging down PeopleSoft from staying afloat like it has always been, so Oracle had to come up with something really path-breaking and they did which we call as PeopleSoft selective adoption wherein we break the large upgrade into small easy-to-apply updates through a tool called PeopleSoft Update Manager (PUM). It really simplifies the maintenance.
 starts with a complete image of PeopleSoft, a cumulative image that includes everything and is updated as often as every 8–10 weeks. PUM simplifies the process of identifying and creating a tailored package for updating your PeopleSoft system with enhancements, bug fixes, and regulatory changes. Change Assistant then takes the tailored package from PUM and automates most of the remaining steps to update the system.

Interaction Hub

Lets first understand what Interaction hub really is.
Assume your organization has these 4 different applications running on different systems to conduct daily business.
  • PeoleSoft HR to conduct HR related business activities
  • PeopleSoft Finance to conduct Finance related business activities
  • A Benefits and Payroll system
  • A system that facilitates time related entries and processing
Typically, an employee in the organization has to login into all these systems and perform various transactions depending upon what their role is which is very common but the problem with this is that they have to login into each system and then navigate to various links/pages to carry out the same.

Now let's say we have a single unified portal where an employee, depending upon their role, can access all these four systems and the related links/pages where they conduct their day to day activities, from this portal with just single sign-on.  That's PeoleSoft interaction hub is all about.

Powered with fluid, interaction hub is now website based portal instead of application based portal having all the necessary navigation to the pages of all the underlying systems enabling users to seamlessly conduct their day to day business activities.

Flexibility

Unlike a pure SaaS solution (Example - Workday) PeopleSoft offers it's customers a development platforms called PeopleTools to tailor the application based on the business needs, So, PeopleSoft can address most complex business requirements. This is one of the features that make PeoplSoft stand out in the ERP crowd.

Customers can have both the options to implement PeopleSoft:
  • On their on-premises infrastructure 
  • On Oracle cloud to eliminate the cost of on-premises infrastructure