Friday, 27 April 2012

PeopleSoft in Windows 2008

If you run PeopleSoft application servers on Windows 2008 then you should be aware of this issue. I hope you find it useful.


Pagelets that render Query output or pagelets that do any kind of XSLT processing of content will throw an error under cterain conditions.  The error is

Error executing pagelet.

Detailed error description:

An error has occurred while trying to perform the XSL transformation. This is because either (1) the DataSource did not return valid XML or (2) the XSL for transformation is invalid.


I discovered a few things in analysing this problem....

1) When PeopleTools renders Query content into a pagelet it does an XSLT transformation.  This transformation requires read/write access to the folder path specified in  %TEMP% environment variable.
2) The %TEMP% environment variable is set when you start the application server domain and is set to be the same as the user that ran PSADMIN (ie the current logged in users setting of %TEMP%).
3) Windows 2008 by default has the User temporary folders per session = TRUE.  This has the effect of assigning a unique temporary folder to each user that logs in by suffixing the %TEMP% variable with a number.  This folder is deleted when the user logs out.

So, you can see that if you start the application server with User temporary folders per session = TRUE then the application server has it's %TEMP% directory set to a path that will eventually disappear when the user that ran PSADMIN logs out. If the path does not exist then peopleTools has no place to place temporary files when it does the XSLT processing . . . and .... you get an error.


The workaround to this is to set User temporary folders per session = FALSE.  This is not really a solution as you will still end up with the %TEMP% variable set to the SAME as the current logged in user and this could be a different user to the one that application server processes will run under (determine by the Oracle Proc Mgrs service user).  Oracle are aware of this and when I hear of a planned resolution I'll post here.

Navigation = Control Panel > Administrative Tools > Terminal Services > Remote Desktop Session Host Configuration