Sunday, August 9, 2009

Mass Loading Time into Timesheet

Last week there was a question on ittoolbox on how we can mass upload time into Time and Labor. I had mentioned in an earlier post that one of the features I would love to have in T&L would be one to upload reported time through a spreadsheet, because it is quite a common requirement to have a feature to mass upload time (especially during conversion projects). Here are the options one can mull over if ever it's required to mass load time into time and labor:

1. If you want to quickly enter time from PIA for a group of employees, then use the 'Report Rapid Time' utility. This can be found under the navigation - Time and Labor --> Report Time --> Rapid Time. Ensure that you run the 'Submit All Rapid Time' process after the above step. The only disadvantage with the above process is that you still need to key in the time as it's done online/
2. If on the other hand you want to automate the process completely by using an AE, you could explore the following options:
(a) Write a CI on the Report Rapid Time component and load time directly into the rapid time table and then run the Submit Rapid Time process.
(b) Use a File Layout and insert data into the TL_ST_ELPTIME table if you are loading Elapsed Time or TL_ST_PCHTIME if you are loading Punch time and then run the TL_ST_LIB Application Engine. The TL_ST_LIB AE will insert the data into the reported time table.
(c) Or if you want to directly insert into the RPTD_TIME table, then use the CI 'TL_RPTD_TIME_CI'

Wednesday, August 5, 2009

Deciphering the skeleton of Peoplesoft HRMS modules

The more I get to work on various modules, the more I find similarities between their basic architecture. For example, sample the architectural similarity between Payroll for North America, Time and Labor and Absence Management.

NA Payroll T&L Absence Management
Paygroups Workgroups GP Paygroups
Earning Program TRC Program Element Group
Earnings/Deductions TRCs Absence Takes
Calendars NA Calendars
Pay Run ID NA Calendar Run ID
Company NA Pay Entity
NA T&L Rules Formulas

It has also been my experience that almost all modules in Peoplesoft HRMS is designed to link the smallest functional unit of that module to the employee. For example, the smallest unit in T&L in TRC and everything that we do in Time and Labor is designed to link the correct TRC and quantity to an employee. The same would be the case for Absence Management and NA Payroll where the smallest unit would be an Absence Take and Earnings/Deductions respectively. Once you have this fundamental understanding, everything else will automatically fall in place.
Another powerful analogy is to an inverted pyramid where the smallest unit of the module will be at the tip at the bottom and the employee on the flat base at the top. The architecture of most modules I know builds up like an inverted pyramid from the smallest unit to aggregate in size and finally attach itself to an employee.

A simple example from Time and Labor would be the case of how a TRC is linked to an employee. At the bottom of the pyramid there is the TRC, above that is the TRC Program, above that there is the workgroup and finally at the base there is the employee. You can seamlessly extend this analogy to other modules as well.

A quick list of Absence Management Tables

I was thinking of writing a short yet extremely useful post and the first thing that came to my mind is Application Tables....For a table driven product like peoplesoft, getting to know the main records and their function is a huge plus.
So here is a very quick list of important tables in Absence Management.

1. PS_GP_PIN - Table that stores the pin details of all elements in GP/AM. Use to retrieve the Pin Name or Pin Code corresponding to a pin number.

2. PS_GP_ABS_EVENT - Major transaction table in Absence Management. All absences reported get stored in this table. The data in this table the raw reported absence. This table is analogous to the TL_RPTD_TIME table in Time and Labor.

3. PS_GP_RSLT_ABS - Table containing the calculated result of reported absence takes. The source for this table is GP_ABS_EVENT. This table is analogous to the TL_PAYABLE_TIME table. This table will contain one row for each day of the absence event. For example, an employee might report sick leave from the 1st to 5th of a month. GP_ABS_EVENT will have a single entry for the above event with a start date and end date. But, GP_RSLT_ABS will have five rows with each row containing the number of hours or days of absence.

4. PS_GP_RSLT_ACUM - Table containing the results of the accumulators in GP/AM. Accumulators can be used to track absence balances, cumulative takes, cumulative paid hours etc. This table is populated only after the absence calculation COBOL is run.

5. PS_GP_CAL_RUN - Table containing details regarding the Calendar Group ID. The Calendar Group ID is the major run control parameter used for running the absence processes and is a collection of various calendars.

6. PS_GP_PI_GEN_DATA - Any absence event that need to be sent to payroll will require a positive input (in terms of an Earning Code) to be defined. The positive input can be attached to a take in the Absence Take setup page. This table contains the corresponding positive input for the processed absences.

7. PS_GP_ABS_SS_STA - This table is coupled with the GP_ABS_EVENT table and is a workflow table. This table can be used to know the workflow status of an absence event. A separate entry is created for each workflow actions like Submit, Approval etc. This table can be very useful to track details regarding the approval/workflow status of an absence event.

Sunday, August 2, 2009

A short T&L quiz for the starters!

We recently started off an initiative that would fall under the category of 'Knowledge Management' (well using these terms are such a fad, but it helps to brand the initiative. Put simply it's just a quiz!!) to publish short quizzes/trivias on Peoplesoft every Thursday. I think it does it's small bit in building knowledge within the team - as it's short and simple, generates interest amongst the people, it's attached to a small rewards and recognition scheme and most importantly makes people go back to the basics of the things they work with every day.

So here is a small Time and Labor quiz that I prepared, it would rate 'easy' of the difficulty scale and we had a couple of people getting all the answers right. Why don't you give it a shot?

Question

Answer

Field that identifies whether time has come from TCD or Absence Management


What happens in Time and Labor when an employee goes on Maternity Leave?


Where can you configure the fields that appear on a timesheet?


Name the view that gives schedule details for each day


Name the table that contains the mapping of schedules and employees


Can you save a workgroup without specifying a TRC Program and Rule Program?


Field that can be used to identify whether payable time has been approved or not


After successful completion of time admin, the earliest change date of an employee is reset to which date? (Assuming there are no exceptions)


Which table contains the earliest change date field?


Monday, July 27, 2009

Goldplating vs. Great Customer Experience

Steve McConnell's classic mistakes in Software Project Management defines Developer Goldplating as following:
"Developers are fascinated by new technology and are sometimes anxious to try out new features of their language or environment or to create their own implementation of a slick feature they saw in another product--whether or not it's required in their product. The effort required to design, implement, test, document, and support features that are not required lengthens the schedule."
I find the entire concept of developer goldplating and it's classification as a 'classic mistake' extremely amusing. This is because the unfounded fear of goldplating restricts the creativity and realms of a developer and nips the chances of delving out outstanding customer service. Almost all the projects that I have worked on has had the customer coming back with his/her own 'wishlist' at the very last moment and traditional software engineering theory would say that it has to be treated as requirement creep and will have to be carried out as separate change requests in the future. Well that might sound judicious from the point of view of project management, but not from the view of customer experience management. Any project dedicated to providing a great customer experience should try to address even the last minute requests from the client - this is no goldplating and it will be something the customer will rave about. I know that may be nine out of ten people will not agree on this - but for someone who values a happy customer above anything else, requirement creep management can never come in the way of customer satisfaction!!

Auto-Displaying Search page results

What do you do if the customer comes up to you and says that they find clicking the 'Search' button on the search page cumbersome and would 'love' to have the search results defaulted when the search page loads.
This is where the SetSearchDialogBehaviour function will come to your rescue. Assign wildcard values to your search fields and call the SetSearchDialog behaviour function. This function is normally used in the context of skipping the search page. Theoretically, if a complete value is provided for all search keys before calling the SetSearchDialog behaviour function, then the search page will be skipped and the users will be taken directly into the transaction page. But the actual idea behind the function is that it will auto-trigger the search functionality. So naturally when just a wild card value is given to the search fields and the function invoked, then all the search results will be displayed. For example, if EMPLID is the only search field, the following code can be written to popualte the search results automatically on loading the search page.

/*Write this code in SearchInit.*/
REC.EMPLID.value = '%';
SetSearchDialogBehaviour(0);

Thursday, July 16, 2009

Oracle MINUS function works bottom to top

Remember that the MINUS function in Oracle works bottom to top and the order in which statements are written will change the result set! So select x from a minus select y from b is not the same as select y from b minus select x from a....The bottom part of the query is executed first and a MINUS function will always give those rows present in the bottom part of the query and not in the top half.

Sunday, July 5, 2009

Follow this blog on Twitter!

Twitter has not gained the popularity of a Facebook or LinkedIn in this part of the world - and the first time I took notice of the new kid on the social networking space was when the U.S. State department endorsed the importance of Twitter as a medium of communication for Iranians during the recent turmoil following the presidential elections there. That made me sit up andtake notice, boy if the U.S. State department had to make an appeal to a privately held dot com newbie, then it's got to be a phenomenon.
So the story goes that this blog is now on Twitter and you can follow me and all the updates to this blog at http://twitter.com/peoplesofthrms.
As a sidenote, I believe that it's time enterprise applications embrace Web 2.o applications like Twitter, Facebook and LinkedIn. Oracle is introducing a lot of Web 2.0 technologies like Ajax in the next Peopletools release (8.50), but they need to have a rethink in terms of adopting some of these social networking applications in the core product functionality. I believe that with the widespread adoption and following of these applications, the line between social portals and enterprise portals is slowly fading away - one immediate thought that comes to me is the use of tweets as a supplementary to alerts in Peoplesoft - wouldn't it be 'cool' to get tweets from Peoplesoft when your manager approves your absence request or when he completes your performance document review?

Saturday, July 4, 2009

Best Peoplesoft Time and Labor blog?

This might sound vane, but according to the Google Search engines you are now reading the best blog on Peoplesoft Time and Labor!


While I know that's an insignificant indicator to be proud about, but I hope that my posts have been helpful to consultants seeking information on Peoplesoft HRMS and Time and Labor in particular. I started this blog in 2008 primarily to try my part in filling the lack of quality reference materials available for Peoplesoft functional modules and after being appalled at the prohibitive cost of the training courses available for the product. Do let me know your comments and suggestions to improve the content of this blog and keep those visits coming!!

Search Page security in Peoplesoft Time and Labor

I had detailed how Time and Labor security works in a previous post and today I want to touch upon how customers can configure the security on the Manager Self Service and Administrators for Time and Labor. Currently, there are three distinct ways of configuring search page security in Peoplesoft (including Time and Labor):
1. Use the highly robust and modified Core Row Level security, where any level of flexible security definition can be created with the introduction of Security Access Types in Peoplesoft HRMS 8.9.

2. Use the Direct Reports functionality which most of the MSS pages of Absence Management and e-Performance make use of. This feature will provide a standard page containing the direct reports of a user.

3. Use Time and Labor security to show to users employees in the Static and Dynamic groups that they have access to.

(You can also enforce search security through Search Init peoplecode, but this approach is highly discouraged.)

Most organisations will be designing their search security by making use of the new Row Level security design and in this context, a debatable question is whether we need to use Time and Labor security itself? Also, a number of people ask whether we can use Row Level security for the Time and Labor search pages, or whether it can make use of only Time and Labor security.

The answer is provided by the below decision chart (click on the picture to see a larger view):

All the Search pages in Time and Labor is flexible enough to utilize both Time and Labor security and core Row Level security. This decision depends on how the rowsecclass attached to a user is configured. If the rowsecclass is attached to any Time and Labor group (this can be found from the table PS_TL_GRP_SECURITY), then the user will be able to see only employees belonging to the groups the user's rowsecclass has access to. On the other hand, if there are no Time and Labor groups attached to the rowsecclass of the user, then core row level security available for the user will be used to fetch the employees.

What should be the optimum Time and Labor search security strategy?
If your organisation is using other Peoplesoft HRMS modules then it is best to utilise a common security design for all the modules. So I will always suggest using row level security for Time and Labor pages and not to configure any extra Time and Labor groups for the purpose of row level security.
Time and Labor groups can be created for the purpose of batch processing of employees. It is very useful to create Time and Labor groups and use the group as an input parameter for the Time Administration or Batch Approval or Batch Schedule Assignment processes. Note that a Time and Labor group can be defined without linking it to any row security class and used solely for the purpose of grouping employees together.

Thursday, June 25, 2009

Heard of the TL_XREF_TBL??

True to the Pareto Principle, 80% or more of the work in any Peoplesoft module can be done by knowing just 20% (or far lesser) of the tables in the system. But it's real exciting to explore and look at the rest of the infrequently used tables as most of them will have a very specific purpose which might come to light only under certain rare occassions. One such table is TL_XREF_TBL.

Where is it used?
The XREF table plays a critical part in the integration of Time and Labor and North American Payroll. When Payable Time is loaded from the TL_PAYABLE_TIME table to the paysheets in North American Payroll, the load program consolidates payable time entries before sending to NA Payroll. Consolidation means that the quantity for each TRC is summed up and a single entry with the aggregate quantity is sent to NA Payroll for each TRC under the period in question. During this process, the system assigns a cross reference number (XREF_NUM) to all the consolidated entries of a single TRC. The TL_XREF_TBL stores the XREF_NUM corresponding to each sequence number on the payable time table. The NA Payroll table PS_PAY_OTH_EARNS also contains a filed called XREF_NUM which can be used to find out the pay line entries corresponding to the spefic data that came from time and labor.

What is the practical utility of the table?
For most parts the XREF table is a background table which a developer may never need to use. But it will be very useful to audit the data flow between Time and Labor and N A Payroll. I have used this in scenarios where customers have reported issues with payable time data not coming over to payroll. In this case, the link between payable time entries and paysheet entries can be drawn to the minutest detail using the XREF_NUM.

Automatic Schedule assignment during hire

Schedule Assignment to an employee can be done at multiple levels in Peoplesoft. With the continuous improvement in scheduling that Peoplesoft/Oracle has brought into the product, they introduced a feature to directly assign schedules to employees. This feature is available under the Manage Schedule folder in MSS. A lot of clients require the process of schedule assignment to an employee to be automated at the time of hire and I have seen specific application engines being written for this purpose. That is an unnecessary effort as Peoplesoft already provides that feature with the WORKFORCE_SYNC message. The WORKFORCE_SYNC message will assign a row in the PS_SCH_ASSIGN table with the Use Default Schedule option ticked as Yes. The message itself is triggered on the Save Post Change event in the JOB DATA components. For tools versions higher than 8.47, it will be required to write specific handler logic for this to happen. This is because the assignment was handled by subscription peoplecode in versions lesser than 8.48 and this has become defunct with the architectural changes to the IB framework in 8.48. The steps to do that is:
1. Obtain the code of the schedule assignment from the subscription peoplecode assigned to the WORKFORCE_SYNC message.
2. Create a new Application Package and extent the OnNotify method of the PS_PT App Package.
3. Call the code for the assignment in the OnNotify method. The best practice will be to create a function in a custom FUNCLIB record containing the logic for the schedule assignment and calling just the function from the OnNotify method.
4. Add a new handler to the WORKFORCE_SYNC Service Operation with an OnNotify event defintion and give the application package and method details.
5. Ensure that the service operation is active and that the queue is running. Also generate Local routing if that has not yet been done.
6. You are good to go now!