Friday, 23 January 2015

Tangerine Stylesheet Bug

Swan Style - High Contrast Blue/White Labels
Many of my users have complained about the poor contrast of colours in the 8.53 Tangerine style. The old Swan style had high contrasting white text on blue background and our useability tests and feedback of PeopleSoft 9.2 applications showed that users didn't like the pale "tangerine" text on the pale blue background.

Good news is that this is a bug and is easily fixed.

It wasn't until just before we went live on FSCM 9.2 on tools 8.53 that we discovered there's a bug in the stylesheet classes that controls label font weight in group box, grid and scroll headers.

The scroll, group box and frame headers are all supposed to be BOLD.  You can see the difference in the image above.  On a busy page the bold font gives a much better contrast and makes the page much easier to read and navigate.

Tangerine style in 8.53 alongside 8.54 - Note the BOLD higher contrasting headers

Seems like this is fixed in 8.54 tools but not in any 8.53 patch I know of.  (checked in 8.53.19 but still not fixed).

It's really easy to fix yourself and well worth it.

There are at least 9 style classes that need to be modified (or overriden using a sub-stylesheet if you prefer not to edit the delivered PTSTYLDEF_TANGERINE). These are the ones I've identified but there are almost certainly more (for example pagelet header labels).

For each class set the Font Weight attribute = Bold.

  • PAGROUPDIVIDER
  • PSGROUPBOXLABEL
  • PSLEVEL1GRIDLABEL
  • PSLEVEL1GRIDLABELTP
  • PSLEVEL1SCROLLAREAHEADER
  • PSLEVEL2SCROLLAREAHEADER
  • PSLEVEL3SCROLLAREAHEADER
  • PSSRCHGROUPBOXLABEL
  • PTPAGELETHEADER














Wednesday, 31 December 2014

PeopleSoft Portal: Introduction to XSL

At the UKOUG Apps 2014 conference in Liverpool I presented on the subject of "PeopleSoft Portal: Things you can do."....  I ran out of time and some of my live demo didn't work...  sorry folks.

One of the subjects we touched on was using XSL (eXtensible StyleSheet Language)  to tranform Pagelet content.  XSL may be a bit of a mystery to some..... so I wanted try and shed a bit of light on it.  I hope you find this helpful.

In the Pagelet Wizard - if you choose Custom as the Display Format then you can edit the XSL used to transform the data source XML (Query, Navigation Collection, etc).


One of the most frequent questions I get asked about this is "are there any tools for creating and editing XSL?".  The short answer to this is "Yes" but, at the end of the day XSL is a programming language and there's only so far tools will take you before you need to start learning the details of the language.

This blog (and maybe others to come) will hopefully get people started on the basics.

Let's first take a look at the XML produced by an example data source.  In this example I'm using a PS Query that's delivered with every PeopleSoft installation - XRFWIN.

  1. Use the Pagelet Wizard to create a new Pagelet with data source type of Query using XRFWIN and select Custom at the Display Format step.
  2. Depending on your PeopleTools release you will have a number of XSL Templates to choose from.  You can create your own in PeopleTools > Portal > Pagelet Wizard > Define XSL.
  3. Copy and past the XML text into a file and save it.
  4. Let's take a look at the structure of this data.  There are 3 main sections to this XML document:
    • HEADER - a single header in
    • DEFINITION - a collection of containing an element for each field in the Query definition.  In our example XRFWIN has only one fieldname.
    • DATA - a collection of elements containing the actual Query results.


  5. Now let's look at the XSL structure.  This is helpfully annotated by PeopleSoft with some useful comments.  I used the XSLtemplate called "Bullet List".  XSL is a mix of HTML and XSL instructions found in tags prefixed with
    • a main XSL template calls three other templates
      • a header template - /queryresult/queryfields
      • a detail rows template - /queryresult/queryrows
      • a footer template - /queryresult/queryproperties
      Bullet List XSL Template (sections have been collapsed in this views)

In working with XML and XSL it's useful to use a good, purpose built editor.  I use Altova Spy but there are other tools available (StylusStudio is the only other one I have some experience of).  If you're serious about working with XSL then it's worth investing in good tools.  Altova Spy has a very useful step through debugger.  Watch the video below for walk through the XRFWIN example.  It really is a great way to learn about XSL.


Wednesday, 17 December 2014

Forgotten Password Bug

Discovered an issue today in the Forgotten Password functionality in PeopleTools (8.52, 8.53 and 8.54 and probably 8.50)

Symbol characters are used in the random password that is generated and emailand to the end user.  Unfortunately, the open and close chevron ( < and > ) symbols are two of the characters used.

Forgotten Password Email Text is stored in HTML and the new password is merged into this text using a variable name of <<%PASSWORD>>.  So, as you can imagine, any password that contains one of these 2 chevron symbols causes the email text to get corrupted and will either show no password or a shortened password in the delivered email.

The fix to this is as simple as removing these symbols from the array &Array_Special in FUNCLIB_PTSEC.OPRPSWD.FieldFormula SetPasswordArrays() function.


Friday, 12 December 2014

Control Fluid Landing Page by Role

One of the questions that came up at the recent UKOUG Apps 14 conference was about controlling user access to the Fluid Landing Page based on security Roles.  We're talking here about controlling which users see the Fluid Landing Page when they login.

The default homepage can be set Globally in personalizations and user's can optionally override this.


The question that was asked was "can I use Role based security to control what the user sees when they login".  As far as I can see there's no delivered way to control this with Roles so on the way home on the train from the conference I coded this little hack using Signon PeopleCode.


  1. Create a new Funclib work record and add the following function 
  2. Register this new function in Signon PeopleCode 
  3. Reboot the application server for the signon code to take effect.
  4. Create the Role named "Fluid User" and give it to a user.  When the user logs in their override by for HPPC personalization will be overriden and set to "F".  This will force the user to the Fluid Landing Page.
  5. You could use Dynamic Role based security to automatically add the "Fluid User" role to users based on pretty much any criteria that you can logically write up in a PS Query.  
I haven't tested this much.  Like I say - I wrote it on the 12:34 from Liverpool to Birmingham and I needed to finish my Grande Latte first before booting up my laptop.

Happy to hear of other ideas and suggestions.

Wednesday, 3 December 2014

UKOUG Apps 2014 Conference




The UK Oracle User Group APPS2014 Conference  -   2 days of PeopleSoft presentations  -  meet senior PeopleSoft executives  - great networking opportunities  -  at the ACC Liverpool

PeopleSoft Apps days are 9 & 10 December 2014




I'm giving a very practical presentation on some of the things you can do with the PeopleSoft Portal.  Every PeopleSoft application has the PeopleSoft Portal embedded... it's what you see when you first login.  How does it work? What can you do with it?  Come and join the discussion on Tuesday 9th at 13:30.    Hope to see you there.





Tuesday, 7 October 2014

Step by Step - "Hello World" Fluid Application

PeopleTools 8.54 delivers Fluid, a complimentary new user interface designed for mobile and desktop devices (see it in action here). If you don't already have tools 8.54 installed grab Image 008 for HCM or FSCM  (see Doc ID 164184.2 on MOS) and follow this simple step by step guide to create your first Fluid application.  If you know Application Designer then all of this will be familiar.

You'll need access to a PeopleTools 8.54 environment and Application Designer.  I hope some find this useful.

Step 1 - Enable the Fluid Homepage

In the FSCM 008 image and maybe the HCM image the link to the Fluid Homepage is not visible (even though it exists in the Portal Registry).  Follow this video to enable the link .  Basically you just need to create a new content reference link based on the existing Fluid Homepage link.

Step 2 - Create a Fluid Page 

Note the new definition type of Page (Fluid).  However, a Fluid Page is just a Standard type Page with the Fluid checkbox ON in Page Properties / Use. 


You'll be prompted to select a Layout Page.  Layouts (as the name suggests) control the page framework. A Fluid Layout page is a Page of type Layout. For this sample app we'll use a simple, predefined layout called PSL_APPS_CONTENT which gives us a simple, single frame view.


Name the page and SAVE.  It will prompt to copy PeopleCode but this page layout has no PeopleCode so it won't matter what you select here.



Let's put a button and a description field on our page.  When the button is clicked we want to display "Hello World".  So, create a work record and add ACCEPT_BTN and DESCR fields along with some PeopleCode on FieldChange event of the button field.

GRS_FLUID_WRK.DESCR = "Hello World";



Now we'll just set the button link properties to tidy up the display,





Step 3 - Create a Fluid Component

Now we'll create a Component and add the new page.


And now the "magic sauce".... TICK the Fluid Mode property on the Fluid TAB.  It's this property that tells PIA to render this component in Fluid rather than "Classic" mode.


Our sample application won't be displaying any data so we'll set the search record to the commonly used INSTALLATION table.

Step 4 - Add Component to Menu

Save your new component and Add to a menu.  As with all other components the purpose of adding to a menu is to allow permission lists to grant security access.




Step 5 - Register the Component

Now, with the Component open click the Register Component button to invoke the portal registration wizard.



To keep things simple we're going to add our Fluid application to the portal folder PTFL_PEOPLETOOLS. You can of course create your own portal folders to organise Fluid Applications or add them to existing folders.


Again, just to keep things in this walk through simple I'm using the ALLPAGES permission list to grant access for my user (in this case VP1) .


Step 6 - Add the new Application Tile to your Homepage

Access the Fluid Home Page. 


Use the Personalize menu item to add a new Tile to your homepage.



Here's what your new Tile should look like.  The icon and label are set in the Structure & Content / NUI Attributes TAB.  (See Appendix below)



 Click the Tile and test your application.

You may notice that it doesn't seem to matter where on the page you place the fields - the layout will always be the same.  This is because unlike the "pixel perfect" Classic interface the Fluid UI is designed to be "responsive" to the size of the display device and so will control the layout of page objects in a free-flow style.  What's controlling the field sequence on the page is the Field Order.

App Designer shows Description following Button
but Field order has Button following Description and so....

Fluid renders according the the Field order.

Appendix - How to control Tile Display

The Tile contents, Size and Behaviour can be set using the NUI Attributes on the CREF in Structure and Content.  The contents can be either 
  • a static label and icon
  • HTML returned by an iScript
  • results from any component
  • results from a PeopleSoft URL
Tile Caption
Tile Dimensions and Content Controls

1 x 2 size Tile




Friday, 3 October 2014

OOW 2014 - Customer Appreciation Party

Aerosmith..... what can I say,  Started in 1970 - these "older guys" can still sing and play.  Amazing.

Walking through the "magic" gateway to Treasure Island - San Francisco


500 buses (shipped in from over a 100 mile radius) carried 40,000 Oracle customers and partners




And just for the sentimental out there here's the classic  "I don't want to miss a thing" (1996 hit I think).