Position Management Reports

1) To establish reporting hierarchies, you will need to create a top position that reports to itself. Once you have created a hierarchy, you can run POS006A, Build Position Tree Structure Codes, so that you can generate the Indented Position Hierarchy report, POS006, to report on your organizational chart.

2) To establish a top position, add the position, save your entries, then enter the same position number in the Reports To Posn field and press Save again.

3) You can generate the Vacant Position Report (POS007), which shows all vacant budgeted positions in the system, and the Position Status Report (POS001), which lists all positions and their status.

4)To generate a list of positions in the system, you can run the Active/Inactive Positions Report, (POS002).
You can generate the Incumbent History (POS003) report, which lists current and former incumbents in all positions in the system, grouped by department.

5)You can generate the Active Position History report (POS004), which shows data on all active positions in the system. If you choose, the report generates job requisitions for all active, vacant, and approved budgeted positions. As you update data in fields that match in the Position Data and incumbent Job Data panels, periodically you will want to check the data to ensure the system contains the right information in both places.

6)You can run an SQR audit, POS008, to determine any data that does not match in the two panel groups.

 

Managing Your HR System by Employee or Position ?

When PeopleSoft is set up to manage the workforce by employee, job codes are utilized to classify job data in general categories, such as Administrative Assistant, or Sales Representative. Employees are linked to a job code on their job data records, where other distinguishing information about the employee’s job is entered as well. In this scenario, many employees share the same job code, even though they might perform their work in different departments, locations, or companies.

When PeopleSoft is configured to manage the workforce by position, job codes are still used for general classification, but positions are employed to uniquely identify each role associated with the job code. In this instance, a position associated with the Administrative Assistant job code might be an Administrative Assistant in the Marketing Department in Cupertino or an Administrative Assistant in the Human Resources Department in Houston. Basic information about the job, such as salary plan and EEO classification, remain the same for each of these positions, but other characteristics can be different, and these differences are indicated on the position record. Employees are linked to positions, and all of the data elements, both job code and position-related, are defaulted to their job data records. Positions usually have a one-to-one relationship with employees, unlike job codes, which generally have a one-to-many relationship.


Options

Implement Workforce by Employee
If the organization is fluid, a broader groupings of employees is utilized, and new jobs are often created—then driving the system by employee would be the optimum choice. This method is useful if for organizations expanding rapidly, or for organizations that often have new projects requiring the creation new jobs or job types regularly.

Implement Full Position Management
If the organization is fairly static, jobs and job descriptions are mostly fixed, and people move in and out of them—then driving the system by position would be the optimum choice. For example, government agencies and hospitals, which budget by position, often well in advance of filling them, find this method very useful.

Implement Partial Position Management
In order to reap the benefits of both worlds, PeopleSoft can be set to optimize partial position management. In some areas of the organization, driving the system by employee is preferred, while in other areas of the organization, the business process requires driving the system by position. For example, you might find that driving the system by position serves well for only some departments or management levels in the company, and that driving the system by employee works well for others. PeopleSoft Human Resources provides the flexibility to use both. By selecting a setting on the installation table called partial position management either method can be utilized.

Impact of Implement Workforce by Partial Position Management
· Maintenance: Requires set up and maintenance of positions for those employees hired or transferred into position managed departments.
· Conversion: With this option, employee data records do not have to be associated with positions prior to conversion. This impacts Tandem, Digital and ASD. Positions could be assigned to employees post-conversion.
· Upgrade to future versions: Not an issue as this is current PeopleSoft functionality.

 

Use full HRMS Process

1) Set Up HRMS, Security, Core Row Level Security, Security Tree Audit Report, Department Tbl & Departmental

Use to create a list of discrepancies between the data you've entered in the Departments component and the departments you've added to the current security tree.

2) Main Menu > Set Up HRMS > System Administration >Database Processes
ID Change / ID Delete process

 

Actions that trigger Future-Dated Security Rows

Actions that trigger Future-Dated Security Rows
Setup HRMS >Security > Security Intall Settings Page
Select the actions that will trigger the SavePostChange PeopleCode in the components using the JOB record to create a future-dated security row in SJT_PERSON when they are used in a future-dated row in the Job Data pages. The system will not create security rows for future-dated rows with actions other than those listed here.
To create future-dated rows, you need to select the Include Future Dates check box on the Security Type Table. This enables you to use future-dated security for some security access types and not others.

 

IScripts

What are iScripts ?
IScript is PeopleCode that has access to the Request and Response objects. Just like JSP and ASP, you, the developer, writes code to read parameters from the request and write information, data, etc to the response. Unfortunately, just like ASP, the response object's write methods only render text.
How do you create an IScript?
IScripts follow the same design pattern as FUNCLIBS. An IScript is a PeopleCode function stored in a record definition. The record definition name must start with WEBLIB_. The function can be in any field event of the record definition. By convention, we generally use the field ISCRIPT1 and the event FieldFormula. The function name, however, must start with IScript_ and cannot take any parameters or return a value.
How do you call an IScript?
IScripts can be called a number of ways. How you call it depends on the purpose of the IScript. If your IScript is a pagelet, then you will create a CREF for your IScript in the portal registry under Portal Objects > Pagelets. If your IScript is called from JavaScript (Ajax, etc), then you call your IScript using a URL like http://server:port/psc/site_name/portal_name/node_name/s/WEBLIB_name.FIELDNAME.FieldFormula.IScript_name. To make it easier, you can generate an IScript URL using the PeopleCode built-in function GenerateScriptContentURL.
What is the difference between iScript Peoplecode other Peoplecode ?
iScript Peoplecode cannot refer to the component specific methods , functions and system variables. iScript executes out side the scope of the component buffer and uses respone and request objects. Non-iScript peoplecode has access to component buffer and they are invoked according to component process flow. iScript functions is invoked direclty by url which has response to browser.
see Enterprise PeopleTools 8.49 PeopleBook: PeopleCode API Reference > Internet Script Classes (iScript)).
you might be interested in looking at some examples. Chris Heller posted a couple of IScripts that can be used as
Bookmarklets.

 

How to find which temporary table instance used.

How to find which tempory table instance is allocated to a process ?
How to find which tempory table instance is Used/Allocated to a process Instance in peoplesoft ?

It is very useful if we can view the data in the temp table once process ran to Error/No Success / Success.

Usually Peoplesoft starts allocating the temp table instance from 4 (Where Online temp table instance count in the psoptions table is 3) and allocate in order for execution of AE in Parallel.
If the same record is used in the other applicaiton engine programs as well it will be difficult to predict which temp table will be allocated to an Process execution (Process Instance).

Following are ways to find the temp table instance used by a process instance.

1) When process is running - In Process monitor Process Instance - Details > View locks. we can view the locks on the table. It will contain allocated temp table instance.

2) When Process ran to No Success Or Error Or Cancelled the temp table instance allocated to that Process instance will not released so that it can be by other process we can release temp table in the following component.
PeopleTools > Applicaiton Engine > Manage Abends

3) When process has ran to Success and if you need to find the temp table instance used by that process instance you can query record PS_AETEMPTBLMGR
It will give you the Process instance , RECNAME , Temp table instance allocated to that process.

 

Temporary Table processing failure during allocation phase.

Facing the following error ?
Temporary Table processing failure during allocation phase.
Description: The Application abended due to a problem encountered during the internal housekeeping of Temporary Tables.
The possible failure points are as follows:
C++ memory allocation for adding new temp tables to the existing internal array.

The reason for this error will be mainly due to temp tables which are not built. The no.of instances mentioned in the AE Program properties is more than the actual Physical number of the temp tables in present in the database. During the allocation phase it allocates the next temp table which not existed physically in the data base and will cause the above all problem.

To find the no.of the temp table instances that will be built query this following record
pstemptblcntvw. This will include the table no.of instance count across all the application engine and online temp table instance.

Missing temp table instance can be found by the following query

SELECT r.recname , n.n instance , c.temptblinstances +o.temptblinstances temptblinstances FROM pstemptblcntvw c , psrecdefn r , (SELECT rownum-1 n
FROM psrecdefn WHERE rownum <= 100) n , psoptions o WHERE r.recname = c.recname AND n.n <= c.temptblinstances+o.temptblinstances AND NOT EXISTS( SELECT 'x' FROM user_tables t WHERE t.table_name = DECODE(r.sqltablename, ' ', 'PS_'||r.recname, r.sqltablename) ||DECODE(n.n,0,'',n.n) ) ORDER BY 1,2

 

%Updatestats not working PeopleSoft

%Updatestats - No Performance change ? %Updatestats - No improvement.

PeopleSoft Application Engine skips %UpdateStats in the following circumstances.

  • A commit is not allowed, as in within an Application Engine program called from PeopleCode.

  • The program issues a non-select SQL statement since the last commit occurred.

    In such a situation, data is likely to have changed.

  • You are deferring commits in a Select/Fetch loop in a restartable program.

    PeopleSoft Application Engine skips %UpdateStats even if the previous condition is false.

    Activating %UpdateStats

    %UpdateStats can be disabled by setting the DbFlags application server domain parameter.

    This parameter has two values that apply to %UpdateStats:

  • 0 – enable %UpdateStats.

  • 1 – disable %UpdateStats.

%UpdateStats is enabled by default for NT/2000 and z/OS Process Schedulers.

Enabling/Disabling %UpdateStats for Batch Processing

To enable/disable %UpdateStats for batch processing:

  1. Initialize the PSADMIN program on Unix System Services to administer the Process Scheduler PSOS390.

  2. Select either Configure a Process Scheduler Server or Edit a Process Scheduler Configuration File.

  3. If you select the first option, set the value for DbFlags to 0 to enable or 1 to disable %UpdateStats.

  4. If you select the second option, locate the related section in the file and change DbFlags to 0 to enable and 1 to disable %UpdateStats.

  5. To fully enable %UpdateStats for COBOL to run on the mainframe (Server PSOS390), you need to modify the program PSPTSQLRT. Note that several lines are delivered commented out in the program.

Reference:- People Books.

 

RunAeAsync failed - PSAESRV


Recently faced an issue in one of the Process Scheduler, PSAESRV service was dying within few seconds the PRCS was started.

Error Found in LOGS: RunAeAsync parameter data validation failed..

Solution:

The problem was with Process definition for one AE program that had been modified to include the trace info. When this was done, the user by mistake selected override from the parameter list drop down instead of append. The result was that the whole parameter list line was replaced with only the trace info, so the program could not run & the program was in the initiated state, this invalid parameter list was causing the above issue.

Once this process was identified & canceled the PSAESRV services was running without any issue.

Tools Version: Version 8.49

 

Difference Between DBMS_STAT and ANALYZE

The advantage of DBMS_STAT is
- easier to automate
- can analyze external tables.
- can gather system statistics ( 9i onwards )
- DBMS_STATS gathers statistics only for cost-based optimization; it does
not
gather other statistics. For example, the table statistics gathered by
DBMS_STATS include the number of rows, number of blocks currently containing
data, and average row length but not the number of chained rows, average
free space, or number of unused data blocks.

ANALYZE calculates global statistics for partitioned tables and indexes
instead
of gathering them directly. This can lead to inaccuracies for some
statistics,
such as the number of distinct values. DBMS_Stats won't do that.

People code has a meta tag that can be used to update the stats on the record which will improve the performance of the record.

For Oracle Database.

%UpdateStats - It will expand to DBMS_STATS.GATHER_STATS. This can be used in the Application Engine and COBAL

%UpdateStats(record name ,[HIGH/LOW])
Default is LOW.

pecifying LOW produces the statement

execute DBMS_STATS.GATHER_TABLE_STATS (ownname=> 'PT8468908', tabname=>'PSSTATUS', estimate_percent=>20, method_opt=> 'FOR ALL INDEXED COLUMNS SIZE 1',cascade=>TRUE)

Specifying HIGH produces the statement

execute DBMS_STATS.GATHER_TABLE_STATS (ownname=> 'PT848908', tabname=>'PSSTATUS', estimate_percent=> dbms_stats.auto_sample_size, method_opt=> 'FOR ALL INDEXED COLUMNS SIZE 1',cascade=>TRUE)

Oracle has an implicit commit after the %UpdateStats statement executes.

 

PeopleSoft Component Versions


Below post will help you
determine the versions of Various components in PeopleSoft...

People Tools

1. Change directory to $PS_HOME/appserv

2. Run the following command to check the peopletools version

$ ./psadmin –v

Note: PS_HOME – Where the tools is installed…

Tuxedo

1. Run the following command to check the TUXEDO version

tmadmin -v

Alternate Method

1. Login into the Box.

2. Change directory to $TUXDIR/udataobj

3. Check the lic.txt for tuxedo version.

Weblogic

1. Change directory to $BEAHOME/wl*

2. Check file registry.xml for weblogic version

Note: BEAHOME – Where the weblogic is installed…

Jrockit

1. Change directory to $BEAHOME/wl*/jrockit*/jre/bin

2. Run the following command to get the Jrockit version

$ ./java –version

Note: BEAHOME – Where the weblogic is installed…

JRE

1. Change directory to $PS_HOME/jre/bin

2. Run the following command to get the JRE version

$ ./java –version

Note: PS_HOME – Where the tools is installed…



Note: This might not be applicable for few version of the components...

 

PeopleSoft Timeout Settings


Sharing Some of Timeout Settings PeopleSoft 8.4x here...

## WEB SERVER

session-timeout [web.xml]: Determines the time period that can elapse before the web server (WebLogic or WebSphere) will remove the HttpSession.


## APPLICATION SERVER


JOLT Listener / Client Cleanup Timeout [psappsrv.cfg]: The inactive interval permitted for the server-side JoltSession.

JOLT Listener / Init Timeout [psappsrv.cfg]: The amount of time allowed for the JSL process to start.

Workstation Listener / Client Cleanup Timeout [psappsrv.cfg]:The inactive interval permitted for the server-side Workstation Listener Session.

Workstation Listener / Init Timeout [psappsrv.cfg]: The amount of time allowed for the WSL process to start.

Service Timeout
for each server process [psappsrv.cfg]: The time period permitted for the service to run in the process in question.


## WEB PROFILE

Inactivity Warning: Specify the number of seconds the portal should wait before warning users that their browser session is about to expire.

Inactivity Logout: Specify the value in seconds of the inactivity timeout interval that applies to the PeopleSoft application for which the user is currently authenticated.


 

PeopleSoft Ping

The PeopleSoft Ping feature collects timestamps by sending a specific page to different tiers of the PeopleSoft system, starting at the browser, then going to the web server, the application server, the database and back. The timestamps that are collected are total time elapsed for the round trip, and arrival and departure time at each of the tiers.

PeopleTools -> Utilities -> Peoplesoft Ping

 

CA Showing the SID correctly but the description is wrong...

Sometimes when we configure CA, we see that CA Showing the SID correctly but the description is wrong...in such case to ensure we can check the following link in PIA..

PeopleTools -> Utilities -> PeopleTools Options

Environment Long & Short Name will be displayed here, CA displays the same value shown here when we configure CA while applying patches by giving the Access ID & User ID details...

 

Mass Photo upload process in Peoplesoft

Process to upload the Photos/Pictures in to Peoplesoft

The following code can be used to upload the pictures/Photo of the employees in to Peoplesoft system easily.

/* This code loads the employee photo into the record EMPL_PHOTO record where filename photo will emplid. */

&REC = CreateRecord(Record.EMPL_PHOTO);

&REC.EMPLID.Value = &EMPLID; /* Emplid is retrived from sql */

/* Load the photo into an attachment record. This converts it to a blob. We use a chunk size large enough so that the whole image will be placed in one row. If chunk size is not modifed there will be mulitple rows in the for a single file in the record PSFILE_ATTDET with incrmenting sequence numbers. */
&Result = PutAttachment("record://PSFILE_ATTDET", &EMPLID | ".txt", &FILE_NAME);

/* Retrieve the blob from the file attachment record and put it in the record object and delete the row from the file attach record */
SQLExec("SELECT FILE_DATA FROM PSFILE_ATTDET WHERE ATTACHSYSFILENAME = :1 AND VERSION = 1", &EMPLID | ".txt", &Data);

&REC.EMPLOYEE_PHOTO.Value = &Data;
SQLExec("DELETE FROM PSFILE_ATTDET WHERE ATTACHSYSFILENAME = :1 AND VERSION = 1", &EMPLID | ".txt");

/* Set the version to seconds from year 2000 */
&REC.PSIMAGEVER.Value = (Days365(Date3(1999, 12, 31), %Date) * 86400) + (%Time - Time3(0, 0, 0));

/* Run and insert and update in case the record exist*/
&REC.Insert();
&REC.Update();


Note :- Before execution of this code the MAXCHUNKSIZE field in the PSOPTIONS (Peoplesoft Options should be set to the Max size of the photo file.

You can handle this in code as well by updating the max value to this field and begin of this code.
SQLExec("SELECT MAXCHUNKSIZE FROM PSOPTIONS", &Original);
SQLExec("UPDATE PSOPTIONS set MAXCHUNKSIZE = :1", CU_DB_AET.CHUNKSIZE);

At the end of the process you can replace the original value back.
/* Restore the default chunk size */
SQLExec("UPDATE PSOPTIONS set MAXCHUNKSIZE = :1", &Original);