Wednesday, April 22, 2015

Process Scheduler RUN STATUS



This property specifies the run status of a process request as a number. This property is used with the UpdateRunStatus method to change the status of a request. Values are:
RunStatus
Description
1
Cancel
2
Delete
3
Error
4
Hold
5
Queued
6
Initiated
7
Processing
8
Cancelled
9
Success
10
Not Successful
11
Posted
12
Unable to post
13
Resend
14
Posting
15
Generated
16
Pending


Integration Broker Troubleshooting Tips

The purpose of this document is to provide some of the troubleshooting tips while working with Integration broker issues. This document gives the error message and possible causes behind the error.

Problem 1: Cannot find message in Message Monitor
Possible causes:
1. User does not have security for the message channel.
2. The message monitor criteria have filtered out the message.

Problem 2: Messages are being processed in an incorrect order
Possible cause:
1. The Channel has been partitioned, and the resulting subchannels do not match what was assumed for the ordering of the messages.

Problem 3: Message Instance not created
Possible cause:
1. Message is inactive.

Problem 4: Message Instance stays in NEW status.
Possible cause:
1. The pub/sub servers are not booted.
2. The Message Dispatcher has crashed or has been brought down.
3. The Item is not at the top of the queue. All messages with the same Channel/ Subchannel are in the same queue
4. Run appmsgpurgeall.dms
5. Restart PUBSUB processes
6. Force cleanup from the monitor message -> domain status
7. Test your message by routing it through another channel to make sure that it is not an issue with the channel.

Problem 5: Message Instance stays in STARTED status.
Possible cause:
1. All Message Handlers have crashed or have been brought down. Processing will resume when Message handlers come brought back up
2. The Message dispatcher processing the message is on another machine, and either the machine or the application server domain is down.

Problem 6: Message Instance stays in WORKING status.
Possible cause:
1. Message Handler has crashed.
2. The Message Handler processing the message is on another machine, and either the machine or the application server domain is down. The Message handler working on the message is "blocked". The service will timeout, and the Message Dispatcher will retry the message.

Problem 7: Publication Contract not created
Possible cause:
1. Channel routing rules not set up properly.

Problem 8: Publication Contract stays in NEW status
Possible cause:
1. Publication Dispatcher has crashed or has been brought down.
2. Message Channel paused.
3. Node paused
4. Previous message had a status of RETRY, ERROR, or TIMEOUT.
5. The Publication Contract is not at the top of the queue. All Publication Contracts with the same Channel/ Subchannel and subscribing node are in the same queue

Problem 9: Publication Contract stays in RETRY status
Possible cause:
1. The remote node cannot be "pinged" successfully. The publication contract will be processed when the remote node comes back up.
2. No publication handler available, either because it's crashed or it has been brought down.

Problem 10: Publication Contract stays in WORKING status
Possible cause:
1. The publication handler processing the contract is on another machine and either the machine or the domain is down. Processing should continue when the pub/sub system on the other machine comes back up.

Problem 11: Subscription Contract not created.
Possible causes:
1. Message Subscription is inactive.
2. Channel routing rules not set up properly.

Problem 12: For a message published by the local node, subscription contract not created for local node even when Message Subscription is active and "Invoke for local publication" is checked.
Possible cause:
1. The local node was not included in the routing rules for the channel. To subscribe to its own publications, the local node must be included in the channel routing rules.

Problem 13: Subscription Contract stays in NEW status.
Possible causes:
1. The Subscription Dispatcher has crashed or has been brought down.
2. Message Channel Node or System paused.
3. Message Definition not Active.
4. Previous message had a status of RETRY, ERROR, or TIMEOUT.
5. The Subscription contract is not at the top of the queue. All Subscription Contracts with the same Channel/ Subchannel and subscription owner are in the same queue.

Problem 14: All publication Contracts remain in a NEW status.
The queue was blocked from a Publication Contact that was in a status of ERROR from two weeks prior. User did not see the error on the message monitor because he was only looking at today. User entered xx day in and the ERROR publication appeared. Canceled the error and all subsequent publication contracts processed successfully.
Problem: Subscription Contract stays in STARTED status.
Possible causes:
1. The Subscription Handler has crashed or has been brought down.

Problem 15: Subscription Contract stays in WORKING status.
Possible causes:
1. The Subscription Handler has crashed or has been brought down. Check in Application Messaging Gateway Administrator
2. Also look for any errors in App Serv Log

Problem 16: Subscription Contract in ERROR status.
Possible causes:
1. Subscription PeopleCode errors
2. Application data errors.

Problem 17: Subscription Contract in TIMEOUT status.
Possible causes:
1. Subscription PeopleCode errors
2. If the message works sometimes, and sometimes does not this may be a problem with the application server configuration. Tune up your application server min/max values, or reconfigure your domain to a medium or large domain. Also, changing the recycle count for these services from 0 to 25,000 or 10,000 may eliminate this problem.

Problem 18: Unable to ping a node.
Possible causes:
1. The web server for the Gateway is down.
2. The Gateway is not configured properly.
3. The app server for the node is down.
4. Verify url is correct. Copy url in browser address, should see "PeopleSoft <tools release> Application Messaging gateway".
(note: be sure that url in the manage lookup contains // before an ip address or machine name)

NOTE: In PeopleBooks it is stated as "//http://HRMS-01/servlet/psft.pt8.gateway.GatewayServlet"
it should read "http://HRMS-01/servlets/gateway" notice the "//" are missing from the begining and is should read "servlets" not "servlet"

Problem 19: "Access denied, source node not found" message even when source node defined on target database.
Possible cause:
1. Known bug: Message Node caching not working. If a new node is added, reboot appserver.

Problem 20: "Bad Gateway, General Exception error .." message when pinging node.
Possible cause:

1. Check Opid/ Password of node on Configuration Servlet page. (http:// ?/servlet/gateway.administration)

Problem 21: "Access denied. Target and source message node password's do not match." message even when no passwords are defined on target and source nodes.
Possible cause:
1. Target application server has entry in Distinguished Name field in source node's message properties.
2. Target URL must be defined with https:// on target node in source application server.

Problem 21.1: "Access denied. No password defined on source message node."
Possible cause:
In 8.1x Source Message Node properties has entries in 'Password' and 'Re- verify Password'.
Solution: Blank these fileds and ping the source node it worked fine.

Problem 22: "Page cannot be displayed message when attempting to bring up Gateway or gateway Administration page.
Possible cause:
3. Make sure Apache/ Jserv started.
4. Make sure aliases are correct in zone.properties

Problem 23: Ping failed, Application server log message saying cannot find JVM.
Resolution: The application server was on a different machine as the web server. The Sun JRE 1.2 was downloaded on the web server machine. Sun JRE 1.2 was re-downloaded on the application server machine and the setting JavaVM Shared Library in psappsrv.cfg file was set to point to the location of this JRE.

Tuesday, April 21, 2015

Client Setup for using PUM Images: PeopleTools Client, Change Assistant, and Client Connectivity

Configuring the Microsoft Windows Client Running Change Assistant:

Change Assistant needs to be run from a Microsoft Windows client.
        It is recommended that you dedicate a Microsoft Windows client machine that is not used for other PeopleSoft purposes for each Update image. It is necessary to configure this Microsoft Windows client machine to access all your target environments, as well as the Update image. This setup is necessary for Change Assistant to communicate with the Update image and target databases in 2-tier mode in order to install updates.


The Microsoft Windows client needs to include:

--An Oracle Database Client at a version level that is certified for the PeopleSoft PeopleTools release included on the Update image.

--An Oracle Database Client for the target database platform (if the target RDBMS is not Oracle).

For a target database that is not Oracle, you must always install the database client for your database platform.

For a target database that is Oracle, it will be necessary to install a second Oracle Database Client if the target database is not at the same PeopleTools release level as the Update image.

--A PeopleTools Client for Oracle database platform at the same version level of the Update image.

--A PeopleTools Client for the target database platform at a version level supported by the PI.

--Change Assistant installed from the PS_HOME directory for the PeopleSoft Update Image.

Useful Security Queries

1) Users with a Particular Role:
Select ROLEUSER, ROLENAME FROM PSROLEUSER WHERE ROLENAME = 'DP_ALLPNLS' ORDER BY ROLEUSER

2) Users with a particular Permission list:
Select OPRID, OPRCLASS
FROM PSOPRCLS
WHERE OPRCLASS = 'EVERYONE'
ORDER BY OPRID

3) Users with a particular Primary permission list:
Select OPRID, OPRCLASS FROM PSOPRDEFN
WHERE OPRCLASS = 'EVERYONE'
ORDER BY OPRID

4) Users with a Particular Row security Permission List:
SELECT OPRID, ROWSECCLASS
FROM PSOPRDEFN
WHERE ROWSECCLASS = 'EVERYONE'
ORDER BY OPRID

5) Users, Role & Class with Access to a particular page:
Select B.ROLEUSER,C.OPRDEFNDESC, A.ROLENAME, A.CLASSID
FROM PSROLECLASS A , PSROLEUSER B , PSOPRDEFN C
WHERE A.ROLENAME = B.ROLENAME
AND B.ROLEUSER = C.OPRID
AND C.ACCTLOCK = 0
AND A.CLASSID IN (SELECT DISTINCT CLASSID
FROM PSAUTHITEM
WHERE PNLITEMNAME = 'VCHR_SUMMARY_PG'
AND DISPLAYONLY = 0)
ORDER BY B.ROLEUSER

6) Roles & Class with Access to a particular page:
SELECT A.ROLENAME, A.CLASSID
FROM PSROLECLASS A, PSROLEDEFN B
WHERE A.CLASSID IN
(SELECT DISTINCT CLASSID
FROM PSAUTHITEM
WHERE PNLITEMNAME = 'VNDR_LOC')
AND A.ROLENAME = B.ROLENAME
ORDER BY A.ROLENAME

7) Permission Lists & Details with Access to a Particular page:
SELECT * From PSAUTHITEM
WHERE PNLITEMNAME =  'VNDR_LOC'

8) Roles Assigned to a particular User:
SELECT ROLEUSER, ROLENAME
FROM PSROLEUSER
WHERE ROLEUSER = 'nukas'
ORDER BY ROLENAME

10) Permission lists Assigned to a particular user:
SELECT OPRID, OPRCLASS
FROM PSOPRCLS
WHERE OPRID = 'nukas'
ORDER BY OPRCLASS

11) Roles & Permission lists Assigned to a Particular User:
SELECT A.ROLEUSER, A.ROLENAME, B.CLASSID
FROM PSROLEUSER A, PSROLECLASS B
WHERE A.ROLEUSER = 'nukas'
AND A.ROLENAME = B.ROLENAME

12) Permission lists assigned to a particular Role:
SELECT * FROM PSROLECLASS
WHERE ROLENAME = 'APDEVELOPER'
ORDER BY CLASSID

13) All Pages Accessible by a user:
SELECT A.ROLEUSER, A.ROLENAME , B.CLASSID,
C.MENUNAME, C.BARNAME, C.BARITEMNAME,
C.PNLITEMNAME, C.DISPLAYONLY, C.AUTHORIZEDACTIONS
FROM PSROLEUSER A, PSROLECLASS B, PSAUTHITEM C
WHERE A.ROLEUSER = 'nukas'
AND B.CLASSID = C.CLASSID
ORDER BY A.ROLENAME, B. CLASSID,
C.MENUNAME, C.BARITEMNAME, C.PNLITEMNAME

14) All Pages Accessible by a Role:
SELECT DISTINCT A.ROLENAME, B.CLASSID,
C.MENUNAME, C.BARNAME, C.BARITEMNAME,
C.PNLITEMNAME, C.DISPLAYONLY, C.AUTHORIZEDACTIONS
FROM PSROLEUSER A, PSROLECLASS B, PSAUTHITEM C
WHERE A.ROLENAME = 'APDEVELOPER'
AND B.CLASSID = C.CLASSID
ORDER BY B.CLASSID,
C.MENUNAME, C.BARITEMNAME, C.PNLITEMNAME

15) All Pages Accessible by a Permission list:
SELECT * FROM PSAUTHITEM
WHERE CLASSID = 'AEPNLS'
ORDER BY MENUNAME, BARITEMNAME, PNLITEMNAME

16) All users with Access to Maintains Security. (Excluding change password and user selfservice):
SELECT B.ROLEUSER, C.OPRDEFNDESC, A.ROLENAME, A.CLASSID
FROM PSROLECLASS A, PSROLEUSER B, PSOPRDEFN C
WHERE B.ROLENAME = A.ROLENAME
AND B.ROLEUSER = C.OPRID
AND C.ACCTLOCK = 0
AND A.CLASSID IN
(SELECT DISTINCT CLASSID
FROM PSAUTHITEM
WHERE MENUNAME LIKE 'MAINTAIN_SECURITY%' AND PNLITEMNAME NOT IN
('CHANGE_PASSWORD', 'USER_SELF_SERVICE')
AND DISPLAYONLY = 0)
ORDER BY ROLENAME, ROLEUSER

17) All Users with Access to Application Designer:
SELECT DISTINCT A.OPRID, B.OPRDEFNDESC
FROM PSOPRCLS A, PSOPRDEFN B
WHERE A.OPRID = B.OPRID
AND B.ACCTLOCK = 0
AND A.OPRCLASS IN
(SELECT DISTINCT CLASSID
FROM PSAUTHITEM
WHERE MENUNAME LIKE 'APPLICATION_DESIGNER%'
AND DISPLAYONLY = 0)

Monday, April 20, 2015

PublicationContractManager::ProcessError/RetryResponse(): 'Unknown error occurred (possibly a Java HTTP exception). Check Application Server log for details. (94,56)'.

ISSUE:
Sending Asynchronous messages from peoplesoft to peoplesoft gives out the error message as “PublicationContractManager::ProcessError/RetryResponse(): ‘UserName not defined in database. (158,55)’.”
PRE CHECK:
1.Check whether the basic  setup of the Integration Broker is good(ie pinging the node and gateway URL to success).
2.Check whether all the corresponding queues, handlers and routings are active.
SOLUTION:
Goto Main Menu->PeopleTools–>Itegration Broker–>Configuration–>Service Configuration
Goto –> Exclude PSFT Auth Token tab–>search for the required service–> check the Exclude Token –>Click Save
This applies to the Peopletools 8.5x.The issue was not addressed in the lower peopletools version.

Tuesday, April 14, 2015

PeopleSoft Audit



To help us keep track of changes done to sensitive data by appropriate user, we use Audit.
Later we can query the Audit record to see the list of changes happened.

In PeopleSoft, we can set Audit at
1. Record Level
2. Field Level
3. Database Level
For Record Level and Field Level, Audit captures changes done to data for the online page. If the data is changed by any program using a SQL statement then Audit is not captured.
For Database Level, It covers both online and database changes done to the transaction record.
Base Records 
The base record is the record that you want to monitor, or audit, as in BU_ITEMS_INV. Presumably; the base record contains fields that you want to monitor. Limit the auditing of tables to the application tables and avoid auditing People Tools tables.
Audit Record
The audit record is a custom record that you create with Application Designer. It stores the audit information for the fields on the base record that the trigger collects. A sample name for audit record might be DPI_BUITM_AUDIT.

Implement Record level Audit 

Record level auditing allows you to have separate audit tables dedicated to one database record.

A)     Choose the Record:
Not all records in PeopleSoft need auditing. When there is such a business requirement, choose the record(s) that needs to be audited.
B)      Create the Audit Record:
The Audit record is essentially a copy of the record being audited. The easiest way to create a copy of your record is to do a Save As. Name the new record under standard record naming convention prefixed with AUDIT_
C)      Remove the unwanted: Delete fields that won’t be audited and Remove all key structures
D)     Add Audit Fields:
Insert the below fields (also known as audit fields) at the top of the new record in the below order
AUDIT_OPRID (Captures the User who performed an action)
AUDIT_STAMP (Captures the date and time when the action was performed)
AUDIT_ACTN (Captures the type of action performed)
AUDIT_RECNAME (Captures the name of the audited record definition. This field is used only when the same audit record is used for auditing multiple records)


On the Record Field Properties for AUDIT_STAMP, we need to check the Auto-Update checkbox. This is essential to correctly populate the date-time stamp.



E)  Build the audit record:
Your Audit record must be a Database record and you should be able to access it using Query.

F) Link them up
Open the Base Record that is to be audited. Open its properties. On the Use tab, under the Record Audit, specify the name of the audit record that we just created as the Record Name. Choose Audit Options based on your requirement.


 


Add – An Audit table row is inserted when a row is inserted in the base record
Delete – An Audit table row is inserted when a row is deleted from the base record
Change – Audit table row(s) is inserted when a row changes in the base record
Selective – Audit table row(s) is inserted when common field (present in both base record and audit record) changes
G)     Test the Auditing:  
                                                  Based on the Audit option that you have chosen, perform some transaction that can trigger the audit. Now query the audit record and check for new rows. Try to infer the meaning of each row that got added.




H)     AUDIT_ACTN :
A – Row inserted
D – Row deleted.
C – Row changed (updated), but no key fields changed.
K – Row changed (updated), and at least one key field changed.
N – Row changed (updated), and at least one key field changed.

In case of C and K the system writes old values to the audit table. While for N, the new values are written into the audit table.

Implement Field level Audit 

Field-level audits record when you insert, update, or delete a field value. The system writes a row of audit data to the PSAUDIT table for each field marked for audit. You may write multiple rows of audit data for a single transaction.

1.        The PSAUDIT table contains the following fields:

 • AUDIT_OPRID
• AUDIT_STAMP
• AUDIT_ACTN
• RECNAME
• FIELDNAME
• OLDVALUE
• NEWVALUE
• KEY1, KEY2, …
              2.      A field level audit is a record field property. To configure a field level audit
a)     Open the desired record.
b)     Double click the field you would like to audit.
c)      In the Audit section, select Field Add, Field Change, or Field Delete.


 

Field Add: Audits this field whenever a new row of data is added
Field Change: Audits this field whenever the content changes.
Field Delete: Audits this field whenever a row of data is deleted.
 
d)     SELECT * FROM PSAUDIT WHERE RECNAME='YOUR RECORD' AND FIELDNAME ='FIELD NAME'; 
 


Implement Database level Audit 

PeopleSoft's delivered Audit feature works only for changes made from online. We depend on RDBMS's trigger feature to track changes made through non-PeopleSoft methods. PeopleSoft has come up with a Database Level auditing feature using which we can combine both the PS delivered Audit and Database's Trigger feature

Trigger
The trigger is the mechanism that a user invokes upon making a change to a specified field. The trigger stores the audit information in the audit table. PeopleSoft enables you to create triggers. A sample name for a trigger might be VENDOR_TR.
Note: If you modify the record definition of the base record, then you must modify the audit record and re-create the associated trigger.


     Update Database Level Auditing:

Navigation: People Tools > Utilities > Audit > Update Database Level Auditing

1) Search for the PeopleSoft record name to audit. The system by default will create audit trigger record with the base record name suffixed by _TR
2) Select the Audit record name.
3) Audit Options available are Add, Change or Delete
4) Click on "Generate Code". This will create the SQL statement to use for the Trigger creation
5) "Create Trigger Statement" section should have the SQL statement generated by above action

Note:
1) All the information entered above, gets captured in the PeopleTools trigger definition table – PSTRIGGERDEFN.
2) EnableDBMonitoring domain parameter must be set in PSADMIN for this feature to work



Perform Database Level Audit:
Navigation: People Tools > Utilities > Audit > Update Database Level Auditing

1) Select or create a Run Control ID
2) Select either "Create All Triggers" or "Create Trigger(s) On" depending on the requirement
3) Click Run which will trigger the Audit Application Engine - TRGRAUDPROG(Auditing Triggers). This process will fetch every row in PSTRIGGERDEFN and writes Create Trigger statements to the file - TRGCODEX.SQL, where Z represents a digit determined by the number of files that already exist in the output directory.
4) This step only creates the SQL Statement, and it should be run using SQL tool to create trigger(s)
 


To Delete Audit Trigger:
            1) Select People Tools, Utilities, Audit, Update Database Level Auditing
            2) Open the trigger that you want to delete
            3) Clear all the Audit options (Add, Change, and Delete)
           4) Click Generate Code
           5) Click Save
           6) Drop the trigger name from the database
 
Migrating:-
When migrating projects containing records that had audit record changes made to them, ensure the “Set Target Audit Flags from Source” flag is set in Copy Options:
Otherwise, the audit properties for these records won’t get copied across to the target environment.