Monday, September 19, 2011

How to Use CTRL-J in Firefox

When hitting Ctrl-J in Firefox, a new Firefox download window appears. In Microsoft Internet Explorer, hitting Ctrl-J shows PeopleSoft page information.

To view page information using Firefox browser, hold down the ctrl key and quickly hit "J" TWICE.

 

Also see the Resolution on My Oracle Support : E-PIA How to Use CTRL-J in Firefox [ID 756546.1]

Friday, September 02, 2011

How to Use CTRL+J in Google Chrome browser to display PeopleSoft Information

Hi, I use chrome for most of my browsing needs. However, when I login to "Peoplesoft", I generally use a shortcut Ctrl+J  to access some details that are specific to Peoplesoft. However, chrome has a predefined shortcut combo assigned with Ctrl+j. Does anyone know how to Disable it/Bypass it? On IE, pressing it twice will bypass the assigned shortcut. What's the procedure in Chorme?

Here is the solution, both works for me.

1. First press and hold J then press CTRL and release J.

2. Press CTRL+SHIFT+J Twice

For more details see the following link : http://www.google.com/support/chrome/bin/answer.py?answer=95655

Thursday, September 01, 2011

Display Prompt on a Search dialog box

If you have a prompt defined on a search record, it does not get displayed if you have component properties –> Internet tab set to use Basic Mode. (Default). Only Advanced mode displays the prompt on the search dialog box.

image

Friday, August 19, 2011

PeopleTools 8.50/8.51 AJAX issues

After immediately upgrading to PeopleTools 8.50, we have encountered several issues that were related to new AJAX features introduced in 8.50. Here is the list of such issues

 

1.  Getting frequent error 501 not implemented on the browser with IE7 and IE8.

2.  Component page reset. Users are getting kicked out to first page or the search dialog box in the middle of a multi page transaction and losing the data they have entered.

3.  Suddenly the page will become unresponsive and entire browser will freeze and will require restart of the browser.

All the 3 symptoms were annoying for the users and we eventually traced it to AJAX feature, that results in loss of POST data.

Turning off the AJAX setting resolved all 3 issues. Here is a way to turn off the AJAX

Go to PeopleTools –> Web Profile > Open the Web profile you use for e.g. DEV or PROD.

Go to Custom Properties and Add a Property AJAX of type Boolean and set its value to false. This will turn off the AJAX. To enable it again make it true or remove the row. Bounce all the Web servers using this web profile to make this setting take effect.

image

Though the above changes resolves the issue, this is not desirable and also may not be supported in future peopletools release. I have found this issue to be related to a bug in IE7 and IE8 when used with Windows XP OS. Fortunately microsoft includes the hotfix to resolve the issue, however registry change needs to be made to enable the hotfix. For more details, see this following KB : http://support.microsoft.com/kb/895954 - When you use Microsoft Internet Explorer or another ! program to perform a re-POST operation, only the header data is posted. See How to enable this hotfix section for registry changes.

Basically, the issue happens as IE sends the AJAX request in 2 tcp ip packets one for the header and one for the body. When network error happens, and ie tries to send the ajax request again, it fails to send the body. This causes PIA to loose the session state and we see the issues described above. The other browsers Firefox, Safari and Chrome do not send ajax request in multiple packets and this issue does not appear there.

Also see this article on further clarification on which registry key needs to be modified : http://www.geoffchappell.com/viewer.htm?doc=notes/windows/ie/featurecontrol.htm

According to this , you can specify the value in any one of the following location, in order of decreasing precedence.

  • HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Internet Explorer\Main\FeatureControl
  • HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main\FeatureControl
  • HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl
  • HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl

Please leave comments, if applying the above registry changes resolves the issue.

PeopleSoft has also published this resolution on My Oracle Support (MOS) - E-PIA: PeopleTools 8.50 and 8.51 - Intermittent "Error 501--Not implemented" Messages when Navigating to a Page Using IE7 or IE8 Browser. Doc ID : 1337266.1

Wednesday, June 15, 2011

Determine WebLogic Version in PT 8.50

cd $PS_HOME/webserv/peoplesoft/bin

. ./setEnv.sh

java weblogic.version

Tuesday, May 24, 2011

User does not see a Pagelet on a HomePage

Even though user has a access to Pagelet, he does not see it on a HomePage. This indicates that WebServer Pagelet cache is corrupt. Only way to make it work correctly is to restart the webserver. But if this happens in the middle of a day, you can use this trick to force the webserver Homepage pagelet cache refresh.

Add a new page to Homepage tab as a required fix. (PeopleTools –> Portal –> Structure and Content –> Portal Objects –> HomePage –> Tabs – Home).

Go to the Tab Content Tab and add the new Pagelet as require fix and select the column, usually the last column. Save it and relogin with user id who is complaining that he is not able to see the pagelet. He should now see the missing pagelet. Remove the newly added pagelet, as it is no longer needed. You can use the following sql to determine what pagelet user has access to .

 

SELECT * FROM PSPRUHTABPGLT where oprid = '7420060' ORDER BY portal_col_num,portal_row_num;

 

For further reference, Go to MOS (My Oracle Support) and see the following resolution.

E-PORTAL: What Are The Tables Used By Portal Technology? [ID 651342.1]

Monday, May 16, 2011

Page data is inconsistent with database

If you are getting this message, while saving the page, please refer to following resolution on MOS (My Oracle Support).

E-AS: How to Trace "Page data is inconsistent with database" error? [ID 655907.1]

Step 1: Set the following in psappsrv.cfg

TracePPR=1
TracePPRMask=32767

Step 2: Go to the PIA and before logging on, add &trace=Y (uppercase y) at the end of the web address and press the keyboard Enter key. Check the the first 5 SQL options and for PeopleCode the 'List Program' and 'Each statement' options.

Step 3: Log in to PIA and reproduce the error.

Step 4: Check the trace, especially the portion which contains this information:
PSAPPSRV.28630    1-167605 11.00.03    0.001 Record RO_LINE_ATTR.ROW_LASTMANT_DTTM database value "2007-06-11-10.58.44.000000" page value "2007-06-11-10.05.30.000000"
The trace should clearly show the field which is producing the error as well as the values populated both on database side and page side.

One of the most common reason for this happening is

You are using a view to select data into a Scroll based on a table and No Auto Select option is turned on. The number of columns in view and scroll area base table differs and additional column in base table contain not null values. You use Auto update for Scroll and change the value of the field in a scroll and save.

To resolve this issue, add the same number of  columns to view as the base table or if possible, make the same view as a base record for the scroll that you use for selection.

Other reason is using SQLExec in SavePostChange to update the Base Table Record and therefore changing the value.

Tuesday, April 26, 2011

Prompt Values specified on Add Mode Search Record is not enforced when using ExcelToCI

If you are creating Component interface by default it will not enforce the prompt values specified on Add search record and will let you input any values even though they are not valid. This is an issue when inserting new rows using ExcelToCI as it allows the user to enter invalid values without giving any error message.

To avoid this issue, open up the Add mode Search record for the component and go to Record field properties for the search fields and check Search Edit check box.  This will enforce the use of valid values when adding a new row using Component interface used in ExcelToCI. By default Search Edit is not checked. 

Here is the description of this field in PeopleBooks.

Search Edit    Enabled only if Search Key is selected. Selecting this option enforces the required property and table edits on the search page. It also enforces these edits under circumstances where the search page would normally be bypassed. With this option, the user no longer has the ability to perform partial searches on this field.

Here is the MOS (My Oracle Support) Link that documents this issue.

E-CI: Component Interface Does Not Validate Record Edits (Against Prompt table) When Using Create [ID 664377.1]

Does Row Level Security Work in ExcelToCI? (Doc ID 972241.1)

As per the above resolution, row level security is not enforced using ExcelToCI.

Thursday, April 21, 2011

Integration Gateway: General Connection Failed (158,10836)

We send a XML Message to Vertex using HTTPTargetConnector  in an app engine program in batch mode.
Occasionally we see that the Return response is the following : Integration Gateway: General Connection Failed (158,10836)

On seeing some other resolution the following could be the cause of this message.
This error is thrown when there is no valid response.

Possible errors include:
Bad gateway URL
Sync Service Timeout set and Service actually timed out.
Java exception thrown - Check Application Server for possible Java exception.
Since URL is correct and there is no Java exception, I think the reason is Sync Service Timeout set and Service actually timed out.

When I was reading PeopleBooks for HTTPTargetConnector Properties there is a Header Property called Timeout for which the default value is 50 seconds.

Here is the explanation from the peoplebook.
Specify the time in milliseconds for the connector to wait for the message to transmit. If the timeout period expires without a successful transmission, the transaction fails.
The default value is 50000 (50 seconds).

 

Setting the property value to 120000 (120 seconds or 2 minutes), resolved the issue. Make sure that you modify the Node Connector as well as routing connector properties if one is defined.

 

image

Navigation : PeopleTools –> Integration Broker –> Integration Setup –> Nodes –> Connectors

Property ID: HEADER

Property Name: TimeOut

Value: 120000

Go to Routings Tab and Select the Outbound Routing and Select Connector Properties. If you have a Property defined  for e.g. PRIMARYURL then you will need to add it here as well, otherwise if it is blank then it is not needed to be added here.

Thursday, April 07, 2011

Application Engine Program : PSPAL::Abort: Unexpected signal received

When we create a Application engine program which refers to an State record, and migrate it to other environment without migrating the State record, it gets migrated successfully. Trying to run this program on the Batch Server gives the following error message.

Record XYZ not defined (108,505)
1341: 1301685557: PSPAL::Abort: Unexpected signal received
1341: 1301685557: PSPAL::Abort: Location: /vob/peopletools/src/pspal/exception_sigaction.cpp:492: RecoverableSignalHandler
1341: 1301685557: PSPAL::Abort: Generating process state report to /xxx/xxx/scripts/LOGS/psae.1341/process_state.txt
1341: 1301685557: PSPAL::Abort: Terminating process now.

in Windows
2564: 1301686035: PSPAL::Abort: Unrecoverable exception received
2564: 1301686035: PSPAL::Abort: Location: E:\pt85010b-retail\peopletools\SRC\pspal\exception_winunhandled.cpp:577: PSPAL::UnhandledExceptionFilter::RecoverableExceptionFilter
2564: 1301686035: PSPAL::Abort: Abort diagnostics generation is currently disabled
2564: 1301686035: PSPAL::Abort: Terminating process now.
PeopleTools 8.50.10 - Application Engine
Copyright (c) 1988-2011 PeopleSoft, Inc.
All Rights Reserved

Record XYZ not defined (108,505)
Message Set Number: 108
Message Number: 505
Message Reason: Record XYZ not defined (108,505)

Workaround
Copy the missing AET Record to the target database and it application engine program will work fine.

ExcelToCI Error occurred in routine sendSOAPRequest_SubmitToDB: The operation timed out.

When trying to upload about 7000 rows using ExcelToCI for a custom component, users are getting the following error.

Error occurred in routine sendSOAPRequest_SubmitToDB:
Error:
Number: -2147012894
Description: The operation timed out

After doing my investigation, checking the web server and appserver access log I found the following issues, and here is what i did to resolve the issue. This is not documented anywhere. Please create a resolution if possible to help others.

1. Found that ExcelToCI uses SERVERXMLHTTP MSXML 6.0 object to send the SOAP request to the webserver,
   Set xHTTP = CreateObject("MSXML2.SERVERXMLHTTP.6.0")
   This request has a default 30 second timeout for receiving a packet of response data from the target server,
   See link : http://msdn.microsoft.com/en-us/library/ms760403 for more details on timeouts.

2. After checking the webserver access log (PIA_Access.log), determined that some of the POST request are taking about 59 seconds to complete and therefore we were receiving the error.

To resolve this issue, change the VB Macro code in ExcelToCI spreadsheet as follows

=======================================================

Add this line before xHTTP.send xDoc.xml in StagingAndSubmission Module under function sendSOAPRequest_SubmitToDB
Dim lResolve, lConnect, lSend, lReceive As Long
lResolve = 60 * CLng(1000)
lConnect = 90 * CLng(1000)
lSend = 90 * CLng(1000)
lReceive = 120 * CLng(1000)

xHTTP.setTimeouts lResolve, lConnect, lSend, lReceive
=======================================================

After changing this value, the ExcelToCI was still failing. Once again I checked the web Server and App server log and found that after loading about 50 to 60 rows, request is taking more than 5 minutes to respond and appserver is killing the appserv thread and therefore error was received saying that The Operation time out.

I had two options
1. Increase the XMLHTTP timeout and also increase the appserver timeout or find out why a request is taking more than 5 minutes to complete. Used Precise i3 performance monitoring tool and also the live Oracle
session and determined the following issue.
1. CI was firing sql to fetch location code description using a view that was not correctly joined with other large table using location code.
2. A Save Edit Peoplecode was written at Level 2 to fetch some data from the Oracle table using SQL Exec. This was causing this sql to fire 160,000 times as it was firing for every row in the scroll as new rows are being added.

Following improved the performance.
1.  Remove the related display field from the page. Alternative option is to tune the sql for related display field.
2.  Moved the save edit code to field edit, so that it fires only for the newly inserted rows. Other option is to write conditional logic to see if row is changed.

After these, 2 changes, the process finished inserting 7100 rows in 23 minutes. Only two request exceeded  default timeout. One took 32 and other 35 seconds to respond.

I have also noticed, that if Chunking factor is reduced to 1 to have smaller number of rows processed, PSAPPSRV is restarting due to recycle count of 5000 being reached, and this results in a login Error and HTML (invalid XML) data is being sent to the Excel. Is this the expected behavior?  Only solution to this issue is to increase the recycle count temporarily and change it back to original. Fortunately this parameter is dynamic and does not require restart of the appserver.

Monday, March 21, 2011

Changing the Userid when triggering the subscription peoplecode.

You can use the following IntBroker Class method : SwitchAsyncEventUserContext to change the context of the peoplecode run inside subscription peoplecode. This is to be used by IB only (there are checks to make sure that is the case) and can only be used for IB events that are fired asynchronously (OnRoute, OnSend, OnNotification, etc..). One use case is if you are submitting a process request from a self service user id and you do not want to give access to query security to each user who is triggering the message. This method is added in PT 8.50 and not available for lower tools release.

For more info use : E-IB: User Security required on target db for async messages in 8.48.0x [ID 654592.1]

PeopleBook definition of this method is as follows.

SwitchAsyncEventUserContext


Syntax
SwitchAsyncEventUserContext(UserID, LanguageCode)
Description
Use the SwitchAsyncEventUserContext method to switch the user context within an Integration Broker asynchronous event.
Parameters
UserID
Specify the user ID, as a string, to which you want to switch the context.
LanguageCode
Specify the language code, as a string, for the user ID.
Returns
A Boolean value: true if the switch user was successful, false otherwise.
Example
&returnValue = %IntBroker.SwitchAsyncEventUserContext("VP1", "ENG");

Thursday, February 03, 2011

Which Run Status values are considered "Active" by the Process Scheduler

Question:  Which Run Status values are considered "Active" by the Process Scheduler ?
Answer: The Process Scheduler considers: Initiated, Blocked, and Processing as active slots.

Wednesday, February 02, 2011

Application Run Controls versus Process Run Controls

Please see this on Oracle support Site : (http://support.oracle.com or http://supporthtml.oracle.com for non flash based browsers.

E-PRCS: Master Note: Process Scheduler [ID 1266607.1]

Application Run Controls versus Process Run Controls 
There are two types of "Run Control" stored in different database tables.

Process Run Control (created by the system)
Application Run Control ( created by the Application)

Process Run Control
Process Run Controls are created automatically by the system when a user creates a process request. The process run controls are stored in multiple tables. User ID and Run Control ID are keys to each tables:
PS_PRCSRUNCNTL - Stores user's language code and language option
PSPRCSRUNCNTLS - Stores server name and time zone
PS_PRCSRUNCNTLEOPT - Stores parameters for process request runs to email such as email address, subject, body text…etc.
PS_PRCSRUNCNTLDTL - Stores run control details such as output type, output format, output destination, folder name, email output option for per process type and process name
PS_PRCSRUNCNTLDIST - Stores distribution list

Application Run Control
Application Run Controls are created by user when he/she submits a process to run. It holds parameters required and specific to the process/program. When the Application Run Control is created, it triggers the system to create the Process Run Controls as well using the same Run Control ID as the key.

From the end-user perspective, there's no distinction between Process and Application Run Controls. The Process Run Control is assigned the exact same name/id as the Application Run Control.
However, it's important for application developers to distinguish between the two when creating new application process/program.
Process run control and application run control are stored in different tables.
PeopleTools delivers the table to store only the process run control.
Application developer is responsible for creating the application run control table to store the application run control information.
If a user creates a new application run control to run a report, then the corresponding process run control will be given the same name.

Run Control information is stored in two PeopleTools tables (at least):
PSPRCSRUNCNTLS (stores information from the Process Scheduler request panel) and
PS_PRCSRUNCNTL (stores the language code),
and at least one Application Run Control Table.

Note: From 8.4x PSPRCSRUNCNTLS is introduced which is used in place of PSPRCSRUNCNTL.