PeopleSoft – Performance Monitor (Setup)

Smart Panda - Oracle PeopleSoft

Smart Panda - PeopleSoft in the Cloud

PeopleSoft – Performance Monitor (Setup)

Setting up Performance Monitor is one of those once every couple of years quests that I get tasked with. There is no need to re-invite the wheel on this as Oracle provides a great Red-Paper on setting this up.

My Oracle Support:
PeopleSoft Performance Monitor Red Paper (Doc ID 747510.1)

The easiest way to start with the install is to actually do a PeopleTools System Database install. Using the PeopleSoft PeopleTools Install Guide for your Tools version follow the instructions to create a database manually.  There is a delivered install for PeopleTools System Database right in the PeopleTools home.  You create it just like you create a Financials or HCM application database. Use the ptddl.sql delivered script to setup the PeopleTools tablespaces.

One thing that is unique about the PeopleTools Database, the core user is not VP1 or PS as in the other applications, it is: PSADMIN. PTWEBSERVER is still the web profile user by default.

Another odd issue I ran into with my last install was not being able to log in, and that was resolved by verifying that the correct license code was present on the PSOPTIONS table.

Smart Panda – PeopleSoft – Performance Monitor Red Paper (April 2013 – most current I can find as of March 2017)

PeopleSoft – Some Users unable to open some pages

Smart Panda - PeopleSoft

Smart Panda - Button

PeopleSoft – Some Users unable to open some pages

PeopleSoft – PSAPPSRV crash when some users try opening some pages

PeopleSoft – Personalization Corruptions

Not really too sure what title to use on this one.  One of my users started to report a problem that only she could replicate.  Every other user was able to login and navigate and open the page in question. We ended up cloning the user and the clone user had no issue opening the page.  Trace actually did not show the problem, but with a little creativity I was able to find the following case on MOS:

E-PIA: When A User navigate to some application pages, the Application Server Crash with Unrecoverable Exception Error. However, a Cloned User will work correctly (Doc ID 2033430.1)

The gift of the story turned out that the user had changed their personalizations or the personalizations had become corrupt. So I executed the following SQL:

DELETE FROM PSUSEROBJTYPE WHERE OPRID = ‘{PROBLEMUSER}’ AND MENUNAME = ‘CREATE_PAYMENTS’ AND PNLGRPNAME = ‘PYCYCL_DATA_INQ’;

You can delete all the personalizations for the problem user, but if you know the menu and component name you can isolate the specific personalization that is causing the problem. In this cause it was the Accounts Payable Pay Cycle Management Details Inquiry that was causing the one user all the issues.

PeopleSoft: Application Server Load Balancing & Failover

Smart Panda - PeopleSoft in the Cloud

Smart Panda - PeopleSoft in the Cloud

Application Server Load Balancing & Failover

PeopleTools has come a long way in regards to load balancing and failover.  I honestly don’t know when they brought in these features, however, in 8.54 and above these failover and load balancing work and based on the testing I have done they work correctly.  There are different options you can specify in the configuration.properties file to load balance requests and also for failover in case a domain is down.

Configuring Weighted Load Balancing

With weighted load balancing, you can set the “weight” of the load, or amount of requests, being directed to a particular server. Weight values are integers 1–10, with 1 being low and 10 being a heavy load. Servers that can handle extra work can take heavy loads, while servers that are either less powerful or are being used in other capacities can take lower loads. You specify weighted load balancing by modifying the server values in the psserver property in the PeopleSoft Internet Architecture configuration.properties file, using the following format.

psserver=HostServer1:Port1#Weight,HostServer2:Port2#Weight

Example: psserver=appserver1:9000#3,appserver2:9010#1 – In this case, appserver1 would receive 3x more requests than appserver2.

You an also specify strict failover assignments with weighted load balancing, with the following options:

Configuring Failover

You can configure with strict failover with weighted backup or strict failover with sequential backup. This is done by adding the failover servers in curly brackets at the end of the server entry:

psserver=<host>:<port>#wt{failover servers}

Example: With the failover string, you can set weighted backup by separating failover server with a comma (,).

psserver=Host1:Port1#Wt{Host3:Port3#Wt,Host4:Port4#Wt},Host2:Port2#Wt – In this case, Host 3 and Host 4 are failover servers when Host 1 is down.

Example: To set sequential backup, you separate multiple backup servers using a semicolon (;).

psserver=Host1:Port1#Wt{Host3:Port3;Host4:Port4},Host2:Port2#Wt – In this case, the system assigns Host 4 the requests when both Hosts 1 and 3 are down.

 

PeopleSoft Object Owner Id (Objectownerid)

Smart Panda - Propeller Hat

Smart Panda - Propeller Hat

PeopleSoft Object Owner: (OBJECTOWNERID)

Many years ago PeopleSoft introduced the object owner id which helps identify pretty much every PeopleSoft object (records, pages, content references, etc….) into where that object belongs.

This past week while working on a security matrix, the matrix needed to be broken down by module.  While with a little SQL magic and a little help from Excel and its filters the task was made significantly easier. In order to get a listing of the object owner ids within the system you can use look them up in the PSXLATITEM table.

SELECT * FROM PSXLATITEM WHERE FIELDNAME = ‘OBJECTOWNERID’ ORDER BY FIELDVALUE

If you want a specific application, Finance Objects have objectownerid starting with “F”, Human Resources “H”, Supply Chain “D”, Campus Solutions “S”, PeopleTools = “PPT”.  I also found some modules had multiple objectownerid values.

 

Smart Panda - Idea
This handy bit of SQL courtesy of my friend Issam came in really handy, I honestly had never worked with the “WITH” function.  This code is specific to SQL Server 2014, but with a tweak or two it will work in Oracle 12 without an issue.  I am sure it will run in earlier versions, but as I have limited experience with the “WITH” function, it was only tested with MSSQL 2014 and Oracle 12c.

WITH PR (PORTAL_NAME, PORTAL_PRODUCT, PORTAL_SEQ_NUM, OBJECTOWNERID, PORTAL_OBJNAME, PORTAL_LABEL, PORTAL_REFTYPE, PORTAL_URI_SEG1, PORTAL_URI_SEG2, MYPATH) AS (
SELECT P.PORTAL_NAME, P.PORTAL_PRODUCT, P.PORTAL_SEQ_NUM, P.OBJECTOWNERID, P.PORTAL_OBJNAME, P.PORTAL_LABEL, P.PORTAL_REFTYPE, PORTAL_URI_SEG1, PORTAL_URI_SEG2, cast(P.PORTAL_LABEL as varchar(4000)) AS MYPATH FROM PSPRSMDEFN P
WHERE P.PORTAL_LABEL = ‘Root’
AND P.PORTAL_NAME = ‘EMPLOYEE’
UNION ALL
SELECT P_ONE.PORTAL_NAME, P_ONE.PORTAL_PRODUCT, P_ONE.PORTAL_SEQ_NUM, P_ONE.OBJECTOWNERID, P_ONE.PORTAL_OBJNAME, P_ONE.PORTAL_LABEL, P_ONE.PORTAL_REFTYPE, P_ONE.PORTAL_URI_SEG1, P_ONE.PORTAL_URI_SEG2, cast( (MYPATH + ‘ –> ‘ + P_ONE.PORTAL_LABEL) as varchar(4000)) AS MYPATH FROM PR P INNER JOIN PSPRSMDEFN P_ONE ON P.PORTAL_NAME = P_ONE.PORTAL_NAME
AND P.PORTAL_REFTYPE = ‘F’
AND P.PORTAL_OBJNAME = P_ONE.PORTAL_PRNTOBJNAME WHERE P_ONE.PORTAL_LABEL <> ‘Root’ AND P_ONE.PORTAL_NAME = ‘EMPLOYEE’ )

SELECT PORTAL_NAME, PORTAL_PRODUCT, PORTAL_SEQ_NUM, OBJECTOWNERID, PORTAL_OBJNAME, PORTAL_LABEL, PORTAL_REFTYPE, PORTAL_URI_SEG1, PORTAL_URI_SEG2, MYPATH FROM PR;

GO