People Tools 8.51 has new interesting feature – Test framework as part of people tools objects.
It will be an interesting feature for Testing/Functional and Development teams.
Find out how it works - demo videos.

Organizations that manage critical applications such as HR or their Supply Chain with Peoplesoft run many jobs both within the Process Scheduler as well as outside of the Peoplesoft environment. The scheduling facilities included in Peoplesoft are rudimentary and are not capable of managing workload outside of Peoplesoft making it challenging to get an end-to-end business view or to avoid manual processes that can cause outages.

ERP systems are the mainstream systems in most of the organization. Different ERP system and other system in the organization has to co-exist in the organization to support the business processes.

Business Need

Integrate the PeopleSoft production environment with other systems

Eliminate errors and processing delays

Enhance the PeopleSoft built-in scheduler capabilities

broad range of platform and application support integrate different system in the organization.

In an organization multiple batch process across different applications needs to scheduled in particular order. manage, monitor and analyze the impact of different batch process on business process is very essential.Some of the companies use Crontab - in the unix to schedule the jobs in the PeopleSoft and other applications. It will be common place to analyze and manage scheduling. This is platform dependent and doesn't support all the process types.

There are few Scheduling softwares - Which can manage the different batch processes across different platform and applications and server as a common point to manage and monitor the different business processes. Workflow of different business process can be created with these softwares/applications.job dependencies, workload balancing, and event-based job execution can be managed easily.

3 - Third party Schedulers that are popularly used with Peoplesoft ERP systems.1) Unicenter Autosys 2) Control - M3) Tivoil Work schedular

There are Peoplesoft adapters so that these schedulers can connect to Peoplesoft system.

The Adapter connects to the PeopleSoft Enterprise database and collects the data it needs to define the task. The Adapter submits the task, waits for Oracle’s PeopleSoft Enterprise Process Scheduler to finish running the task, and retrieves the status changes in the PeopleSoft Enterprise database. The status can be viewed from the Schedular Operator Console and the PeopleSoft Enterprise Process Monitor.

The integration is accomplished by inserting PeopleSoft Enterprise job or process information into various database tables that emulate a submission through the PeopleTools GUI. Once the PeopleSoft Enterprise work has been scheduled, it is monitored to completion, reflecting status changes back to the Scheduler.

1. Select Trace at the login screen or add “&trace=Y” to the login URL OR - To set trace flags, click here (use this link.

2. Choose the options in the tracing screen and login.
3. Perform the actions you wish to record.
4. Once complete logout and retrieve the file from the /appserv//LOGS directory.
The trace file name will include your login name.

Tracing online PeopleCode and SQL (Alternative)

1. Login to PeopleSoft and navigate to PeopleTools > Debug.
2. Choose the options and save.
3. Perform the actions you wish to record.
4. Once complete logout and retrieve the file from the/appserv//LOGS directory. The trace
file name will include your login name.

Cobol Tracing
1. Open the Cobol SQL process type for the platform you are running on.
2. Enter 255 in the command line field between two forward slashes “//”.
3. Save the record.
%%PRCSNAME%% %%DBTYPE%%/%%DBNAME%%/%%OPRID%%/%%OPRPSWD%%/%%RUNCNTLID%%/%%INSTANCE%%/255/%%DBFLAG%%
4. Run the process and retrieve the COBOL sqltrace from the process monitor.

In the given example, user wants to hide and unhide the grid from the page by selecting the check box option on the page. If the check box is checked the grid should be visible else hide the grid & delete the values present in the grid.The check box is at level 0 & the grid is at level 1.

Function HideAllRows() can be used to hide the grid, & function ShowAllRows() can be used to unhide the grid.

HideAllRows hides all rows of the rowset.
For the given example, write the below people code at field change of check box.

In Peoplesoft where we read data from the files, especially for inbound interface , conversion and one time data load. Date is usually read as character field in different format and converted to date. We need to validate the date for further processing. It will be good if we can validate date field in SQL (set processing) than the validating using people code (row by row). Oracle doesn't have very useful function IsDate() not sure why.

Lets see how we can do set processing for the date validation.

1) Regular expression came to my mind to check the pattern and validate the date easily.

Select 'X' from dual
Where REGEXP_LIKE ('1999-10-10','^(1920)\d\d[- /.](0[1-9]1[012])[- /.](0[1-9][12][0-9]3[01])$')
This is simple regular expression which matches only the date format. It doesn't check for leap years and 30,31 days for all the months.

This regular expression is quite big difficult right every time correctly. Need to copy paste where ever it is requried.

3) if the regular expression is getting difficult, then can create a PL/SQL function and use that function in the sql to validate.
we can use the above sql itself in the function. or use the following.

In the Peoplesoft Implementation project we can create such function once and can be used in many SQL/Peoplecode/AE's. It is difficult to maintain this procedure in different instances like Dev,FIT,SIT,UAT,PPROD,PROD, but is it worth the effort.

ALL, SOME and ANY :- These operators are not widely used in the SQL, these keywords exists in both Oracle and MS SQL. These keywords can be very useful in developing many peoplesoft realated query. It makes the query simple to write and understand.

Eg:- If you want the list of employees who are terminated in all the assignments (employee records).

1) Select EMPLID from PS_PERSON A
Where 'I' = ALL (Select HR_STATUS from PS_CURRENT_JOB J
Where J.EMPLID = A.EMPLID )

2) Select EMPLID from PS_PERSON A
Where 'A' &lt;> ANY (Select HR_STATUS from PS_CURRENT_JOB J
Where J.EMPLID = A.EMPLID )

ANY or SOME: Compares a value to each value in a list or returned by a query. Must be preceded by =, !=, >, <, <=, >=. Evaluates to FALSE if the query returns no rows.
ALL: Compares a value to every value in a list or returned by a query. Must be preceded by =, !=, >, < , <=, >=. Evaluates to TRUE if the query returns no rows.

It is doesn't do anything new, it is just user friendly wrap keywords. The optimizer expands a condition that uses the ALL comparison operator followed by a parenthesized list of values into an equivalent condition that uses equality comparison operators and AND logical operators.The optimizer transforms a condition that uses the ANY or SOME operator followed by a sub query into a condition containing the EXISTS operator and a correlated sub query.

Due to this behaviour of the optimizer in Oracle SQL, we need to analyze sql for the performance before we take decision to use it in the production. These constructs have been useful for me in doing the data analysis and creating the quick query to get list of the employee based on certain condition.

Many times we need to load the data in to Peoplesoft Loading tables or other tables for conversion and interface and bulk load for minor data migrations.

SQL Loader is very fast and easy way for loading the data. It is not used much in real-time with productions instance, but with BPEL you can automate the loading of data in to tables in real-time. SQL Loader fast and very efficient.

There is some of the Basics of SQL Loader.

SQL Loader:

SQL*Loader is the primary method for quickly populating Oracle tables with data from external files. It has a powerful data-parsing engine that puts little limitation on the format of the data in the datafile. SQL*Loader is invoked when you specify the sqlldr command.

SQL*Loader can be used to do the following:

Load data across a network. This means that a SQL*Loader client can be run on a different system from the one that is running the SQL*Loader server.

SQL*Loader Control File: The control file is a text file written in a language that SQL*Loader understands. The control file tells SQL*Loader where to find the data, how to parse and interpret the data, and where to insert the data.

Run control parameters are accessed at the first step in all the AE programs. It will be stored in AET record and will be processed across different steps and sections. If the run control parameters are stored in the multiple records with parent child relations ships. Eg:- list of the job codes , Departments & Business units. Since we cannot store multiple rows in the AET/State record, we access these records in the sql directly where it is required to access the parameters. It method works fine until same user runs the same process with same run control id again with different run-control parameters before the earlier process completes its execution.

Problems :- first process will end up using the incorrect parameters that is assigned for the second process.
Result can be unexpected, based on the run-control parameters changed by the user. Accessing the run control parameters in the AE program other than beginning step can always create problem.

Solution :-
User training can be one of the solution, but it will be better if the program can handle it without any additional user training.

Create an additional table with keys OPRID, RUN_CNTRL_ID and other keys and fields specific to the run-control parameters of the AE process. In the beginning step, insert all the multi-row runcontrol parameters in to this record and level zero parameters in the AET record. In the process, where ever you need to use the multi-row runcontrol parameters use the new record created , instead of the actual runcontrol table used on the page/component. Delete these rows from this new record at the end of the process. Access and deletion of the rows from the table should be based on the key fields OPRID,RUN_CNTRL_ID.

JDeveloper is a tool that can be integrated to AppDesigner for a graphical XSLT mapper with AE transform programs.

Here are the pre-reqs for using XSL Mapper. If any of the pre-reqs have not been met it won’t launch
1. Configure the gateway by loading in all target connectors via the Gateway component, and configuring the IntegrationGateway.Properties file. Specifically, you must set the value for the DEFAULT APP SERVER in this file

2. Set the value for the TARGET LOCATION field on the PS Service Configuration page. The value of this field should point to the location of the PeopleSoftServiceListeningConnector on the gateway

3. Specify the path the JDeveloper Home in the configuration manager (on the windows developer client)

4. Build schemas for all both the source and target messages to be used by the mapper

Many Peoplesoft System is yet to get promoted to 8.50 Tools version. Not many companies has full explored the features of 8.50 (web 2.0) and 9.1 applicaitons. Oracle already has 8.51 RVP. These changes are manly related to user experience and productivity improvement. It seems the quick changes to tools version is driven from the new competing applications which has fresh new application experience for the users.

• PeopleSoft Smart Navigation
• PeopleSoft Test Framework

These are the 2 Peoplesoft main changes which can change the way we use the PeopleSoft applications and implement/support projects are run.
PeopleSoft Smart Navigation

Hierarchical application data can be incorporated into the menu structure, allowing a user to
access application functions directly related to data such as the company org chart or any other data tree.
Contextual menus can be associated with data on a PeopleSoft application page, allowing a
user to take action directly from data on the page without having to navigate the main menu
structure and search again for the data they need.

A user’s search results are temporarily stored directly in the menu structure, allowing a user to
navigate from one record to another without having to re-execute a search – even if they have
moved away from the page.

I was trying to imagine how this look like in the PeopleSoft and what is the driving factor for the quick menu update. Menu changes were done in earlier version 8.50.

It looks like it this change is driven by Workday. Rich user experience in Workday is one of driving factor for customers to choose it.
It seems PeopleSoft like to incorporate these changes in the 8.51 Tools version.

In order to enable Query Administration statistics tracking, navigate to PeopleTools > Utilities > Administration > Query Administration. Click on the Settings tab. Make sure the check box for "Run Query Statistics" has been selected. This setting is saved automatically. Once this check box has been enabled, you will be able to track query statistics in Query Administration.

Note:

Enabling this caused table locking issue in some earlier tools version [8.43.xx,8.44.xx] [Reference: Support URL]. Kindly verify before using this option.

Recently cloned an environment from PROD & surprised to see PRCSYSPURGE process deleting rows from other environment [PROD].

Solution:

On refreshing one environment (Development) with other database (Production) then that means that in PS_CDM_LIST table the field OUTPUTDIR still contains the database name for Production. Changing this helped to resolve the issue.

Send Master enables you to post any data format, including the PeopleSoft Multipurpose Internet Mail Extensions (MIME) message format, to web and application servers over HTTP and HTTPS. You can also use Send Master to simultaneously test groups of different types of service operations, as well as stress test your system.

Send Master also enables you to perform Get functions and to ping application messaging gateways and third-party servers.

Send Master is installed with the PeopleSoft Pure Internet Architecture on Windows and UNIX systems and is delivered as part of the Integration Broker Connector SDK.

Send Master is also delivered as a Windows stand-alone batch file. The stand alone version enables you to use the utility without having to install an integration gateway.

The persistent store "_WLS_AdminServer" could not be deployed: weblogic.store.PersistentStoreException: java.io.IOException: [Store:280021]There was an error while opening the file store file "_WLS_ADMINSERVER000000.DAT"

Related display in people soft is used to display the description/detail of the ID or codes. User has to enter the ID/code or search by description in the prompt page. If the user is familiar with Descrtiption rather than ID or code and user want to select based on that, then we can use Related edit field.

Related edits enable users to enter descriptive values instead of code values and enable prompting on those descriptive values. Changing the value in the control field updates the related edit field, and changing the value in the related edit field updates the value in the control field. If appropriate, the control field can be display-only or even invisible to hide code values from the user.

If user wants to search employee by name rather then EMPLID , then user can key in name and search instead of using the EMPLID.At design time, you set up a related edit field in the same way that you create a related display field, except that you clear the Display Only check box in the Field Use Options group box so that the field is active at runtime

Note:-
1) Edits, including any assigned PeopleCode, are run on the control field. PeopleCode is not run for the related edit field.
2) Edits, including any assigned PeopleCode, are run on the control field. PeopleCode is not run for the related edit field.
3) The related edit field must be an alternate key in the prompt table.
4) If the hidden control field that you select is a required field, PeopleSoft Pure Internet Architecture changes the related edit field into a required field as well.

When the XML Publisher creates the Excel output file with fields having leading Zero (Eg:- Position Number), when the ouput file is opend in the Excel (not in the web browser), the leading zeros in the will be automatically trimed by the Excel. Excel treat this as number, we need force excel to treat this value as character and not as numberic value.

During XML template design, Instead of the using the tag < ? fld_POSITION_NUMBER ? >
use ="< ? fld_POSITION_NUMBER ? > ". It wraps the value with double quotes. Now Excel treat value as character and doesn't trim the leading zeors of value.

In the “setup process definition “ you define the timeout for escalation. The ESCALATIONS Event ID will make sure to escalate if not approved within the “timeout” period.

PTAF_NEM - Is the process that needs to be run for the escalations in the approval workflow.

The PTAF_NEM process, when run kicks off 3 application engine programs one for each of the following events ID

Approval Activity Email
Receipt Notifications
Escalations

The AWE Notification & Escalation process, PTAF_NEM, only sends out one ( 1 ) notification, however, multiple actions can be performed at each timeout. i.e. Notify and Reassign after 2 hours. Or Notify after 1 hour and Notify and Advance after 24 hours.

What cannot be done is to set the Timeout to 1 hour and expect to get a notification every hour that an action has not been taken.

EMP_SERVLET - URL needs to be configured to send the correct url link in the escalation notification emails.

Termination date is auto-populated in the peoplesoft when an employee is terminated in the Job data component. Termination date is suppose to be the termination action EFFDT - 1.

Termination date is configured to be popluated as JOB.EFFDT - 1 in the Action table component.
Termination date will not populated correctly due to a delivered bug in HCM 9.0 as well as HCM 9.1.

When you insert new row in the job data component effective date is defaulted to current date or defaulted from the previous row if it is a future date. Select the action as Termination and look at the termination date it is populated correctly with JOB.EFFDT - 1. Now change the EFFDT field it will not refresh the effdt to JOB.EFFDT - 1 value. It lets you save the component with that information. Any logic based on the termination date will fail.

Delivered code fires on the field change of the Action field alone and not on the EFFDT field. This creates the problem of incorrect termination date.

JOB_DATA (Job Data) - It is one of most important component in the HCM which maintains the employees job history details. It is also one of the complex components which have a lot of business logic involved in it.

There are 5 other components which are very similar to the JOB_DATA component.

In an implementation we customize delivered objects in PeopleSoft. Customizing the Job data component can be very painful as it creates a lot of maintainace issues and lead to additional customizations. A lot of points needs to taken to consideration while any customizations are made to Job data component. Modify the Job record is a very bad customization, avoid modfiy the delivered records.

1) Any new custom record added to JOB_DATA component to capture the additional data on the Job data transactions then you might also need to add that record to other components similar to Job data as mentioned above. Additional customizations.

2) Any additional fields and records in the component will affect the component structure and it will impact directly component interface structure. We need to rebuild all the delivered component Interfaces.
a) HCR_JOB_COMP_DATA_SRV
b) HCR_JOB_DATA_SRV - Component interface is used in Mass Update process (HR_MASSUPD) which is CI based services for Mass changes to the employees like Mass Salary change (periodic salary hike).
This process will be affected based on the way custom record is used in the job data component.

Component Interface is also used in the Automated Step increment process (HR_CMP007) which increments the step of the employee. Any change to the job data component will impact this process as well.

3) If your design handles any CI operations done by the above processes as new custom record is the child record of the parent record job then it will create problem if you use another Step increment process (CMP107) which is an SQR process which doesn't insert into custom record, which result into the improper component buffer in the job data component. Additional customization to custom record or

4) WORKFORCE_SYNC - Delivered IB message from HCM to ELM and CRM. This message is published in the job data (and related components) in save post change event. If auto select option is off for the new custom child record scroll in the job data. When there is only change to the fields of the custom record it sends out a blank message (blank XML),which creates fatal error in the CRM.

5) Any changes in the bundles and fixes from peoplesoft to job data components and its Peoplecode (& similar components)and its pages will lead to reapplying the customizations to these components.

Instance - Defines the scope of the variable where as private and public key words define access levels/Visiblity of the variables. If variable is not defined as Instance then SCOPE of the variable is Local by defult (Local to the created object of the class).

Instance - scope of the variable is across the objects of the same class and scope of the Instance variable is at the class level.

The variables are created when the first object of the class is creted and will be present till last object of the same class is present in the memory.

If the Instance variable is declared as Private it is accessed the way it is accessed i,e only with in the class methods. if variable is declared as Public it is accessed the way you access other public variables. (i,e both within the class and outside of the class).

Simple comparison that can be done..(just for understanding purpose).

Component variables has scope within the component similarly instance variables has scope at the class level across the objects of the same class.

Big question arise when do we need these kind of variables.

1) if you want to count how many objects of the class was created you increment this variable in the constructor of the class.
2) If you have constant value that needs to shared across the objects of the class then you can use the instance variables.
3) Shared variable across the objects like component variable (across the different events of the component).

1) The assignment of roles to User Profiles based on your business rules.
2) These business rules run against system(s) to assign PeopleSoft access.
3) PeopleSoft security changes in an automatically.
4) The dynamic role rule process removes and grants access to User Profiles

There are three ways can use to execute your rules to find the dynamic role users.
o PS/Query
o LDAP Plug-in
o PeopleCode

PS/Query

1) Access is removed or granted based on the User Profile IDs retrieved by the query.
2) Logic to select the dynamic role users will be present in the SQL of the Query.

Note: -
a) Use PSOPRALIAS_VW or PSOPRALIAS record to create the dynamic role queries.
PSOPRALIAS - Used to store ID values corresponding to various ID types. For example, stores EMPLID for Employee type, CUST_ID for customer ID. It will be easy to join the tables based on the type of the Userid.

b) Don't use any Bind variables in the role queries. They are not designed for resloving the bind variables.

c) Use Disntict caluse in the SQL to make you always retrive uniques id only. Any duplicate will the the dynamic role asssignement.

PeopleCode

1) Access is removed or granted based on the User Profile IDs pushed in to the system array variable
%RoleDynamicMembers.
2) This is used when logic is complicated and cannot be retried from the Query.

PER506 SQR Report - Department Tbl & Departmental - This report lists any departments that you have created in the Department Tree but have not yet added to the departmental security tree, It also lists any changes in departments since the effective date of the current security tree.

Access Peoplebooks from Applicaiton Desinger. Context Help for Application designer.

Follow the setps to configure F1 - context help for the application designer.Press F1 in the application designer to get the help based on the URL configuration below.It can take to the peoplebooks based on the context.

3) PS Pad editor :- This editor is very much similar to the Ultra edit and Edit plus which many of us know.

What makes it special is for the following reasons.

1) Peoplecode.INI file which is code highligter for the peoplecode like in the application designer - Why do we need this one for ?? Read the next reason.

2) Export to Clipboard as RTF feature (File > Export > Export to Clipboard as RTF) is allow you to copy the peoplecode from the editor with the code highlighter and paste in the word document or email. code highlighter formatting is retained.

1) PERS_REFRESH – Refresh Personal Data Process. Based on the setup in the Personal data setup component. Personal data record will be refreshed. Process updates the current data asof the Current date / System date. What fields are populated is configurable in the personal data setup component.

Personal data table with all the PERS_DATA_EFFDT, NAMES, and ADDRESSES (optional) when that data becomes effective. This is should be scheduled as a nightly process in order to catch changes every day.

3) PER099 - Refresh EMPLOYEES Table. Refresh the PS_EMPLOYEES snapshot table as of the selected date or current date. This process also updates the PS_EMPLOYEES_LNG.

4) Refresh all records with the NAME_DISPLAY and NAME_FORMAL fields to reflect changes made to the People Code definition of those fields. You can choose to update records with all name format types or just with one name format type.

• Persons were found in PERS_DATA_EFFDT that do not exist in PERSON
• Persons were found in PERSON that do not exist in PERS_DATA_EFFDT

• Persons were found in EMPLOYMENT that do not exist in PERS_DATA_EFFDT

• Persons were found in JOB that do not exist in EMPLOYMENT

• Persons were found in EMPLOYMENT that do not exist in JOB

• Persons were found in JOB that do not exist in PERS_DATA_EFFDT

• Persons were found in JOB that do not exist in JOB_JR.

• Persons were found in JOB_JR that do not exist in JOB.

• Persons were found in PERSON that do not have a Primary Name in NAMES.

• Persons were found in NAMES that do not have record in PERSON.

• Persons were found in ADDRESSES that do not have record in PERSON.

• Persons exist in DISABILITY that does not exist in PERSON.

• Persons were found in DIVERS_ETHNIC that do not exist in PERSON.

6) Change ID / Delete ID Process – HR_PER502 - This process is used for the correction of the employee ID it updates the all tables with new employee ID. This also used for the deleting ID as well. ID Delete control component contains the exclusion list of the records.

7) Delete ERN Process - HR_EERCD_DEL – This process is used to delete the Employee record Number or Empl RCD of an employee.
ERN Delete Field Names Component– EMPL_RCD different field names in the different records to look for. ERN Delete Exclusion List – List of the table to be excluded from the table.
ERN Delete Control – List of the message for the Exclusion list of table/ field names.

8) Refresh Compensation -
HR_CMP015 – Process to refresh the compensation. Refresh multiple worker compensation packages with current default values, and print a report that displays the new and previous compensation data of the impacted workers. It executes the process executes the same steps as the Default Pay Components button on the Compensation page.