Wednesday, 11 September 2019

OpenWorld 2019

 Really looking forward to Oracle OpenWorld 2019.  Catching up with friends from PeopleSoft community and learning about all the exciting PeopleSoft product developments are always my highlights.

There's been 3 big themes that we've been focusing on as PeopleSoft users for a few years now.

  1. New features, frameworks and user experience in the PeopleSoft product (never ceases to amaze me just how much the PeopleSoft development teams seem to produce!  )
  2. Reducing the impact of customisations.  Making Customisation Update Safe is one of the keys to taking advantage of the continuous deliver model of the PeopleSoft software lifecycle.
  3. Running PeopleSoft in cloud infrastructure.  PeopleSoft is designed for it and has solutions to many of the automation demands of cloud (an on-premises) infrastructure.  Many organisations are looking to IaaS to reduce their cost of ownership and improve the security, availability and maintenance cycles .
I have the privilege of being selected to present on 2 of these 3 themes at this years conference.  If you're attending the event then I look forward to seeing you and maybe catch you at one of my 2 sessions.

Make Your PeopleSoft Customisations Update Safe (PAN5338)

This panel of PeopleTools experts share their experience of how to customise safely.  Come and join in the discussion. Here's a couple of primers to get you thinking:  Top 5 Customisation Tips from 2018 - PSADMIN.IO Chat on Customisations 
Tuesday 17 Sep @ 5.15pm in Moscone West - Room 2012

Five Top Tips for Running PeopleSoft Cloud Manager (CON4424)

PeopleSoft Cloud Manager is a great tool for getting started in running PeopleSoft in Oracle Cloud Infrastructure.  Here's my top 5 tips (maybe more!) on how to get started.   The Magic Button Blog Post
Wednesday 18 Sep @ 3.45pm in Moscone South - Room 155C

Thursday, 8 August 2019

PeopleSoft and Cloud Day - October 2019

Every year Cedar Consulting organises a fabulous day of education and insight specially for PeopleSoft and Oracle Cloud customers.  This year it gets even better!  Now that Cedar is part of Version 1 we are organising an event for all Oracle Applications customers (PeopleSoft, EBS, Taleo, Oracle Cloud Apps and Infrastructure).

  • Including Rebekah Jackson from the PeopleSoft division bringing all the latest news fresh from Oracle OpenWorld in San Francisco.
  • Customer stories and Oracle demos across all the applications - PeopleSoft, HCM Cloud, ERP Cloud, Taleo, eBiz and JDE.
  • 50 sessions across 6 streams.
  • Useful networking opportunities with other customers using the same Oracle products.
  • and it's free to attend !
If you can make it to London on October 10th
then it'll be great to see you.

Tuesday, 23 April 2019

Drop Zones and HCM Image 030

HCM Image 030 was released on 19 April and with it the first set of Drop Zone enabled pages.

What is a Drop Zone?

The "Zone" is one or more areas on a delivered page defined by Oracle developers into which customers can insert their own subpages using configuration. It's an "Isolating Customisation" tool along with the likes of Event Mapping.

Why have Drop Zones?

The purpose is to provide a mechanism whereby a delivered page can be modified without actually customising it. Dynamically injecting your subpage into the delivered page, through configuration rather than customisation, will neutralise the impact making it much easier in the future to take updates from future Images.

Some Things to Know

  1. Drop Zones are added to delivered pages by Oracle. Customers should not add the Drop Zones themselves . If you do then you'll be customising the page and that defeats the objective of Drop Zones. If you want access to the pages which contain Drop Zones then you need to apply the required updates from PI 030.
  2. Subpage are created by the customer in Application Designer. Nothing particularly special about these subpages and you can place all the usual fields, buttons, frames, group boxes, etc.
    • Fields added to your subpage become an intrinsic part of the component buffer at runtime.  This is a powerful feature especially when combined with Event Mapping.
    • The Drop Zones exist at Level 0.  Any tables added to your subpage will appear at this level and will be automatically saved and updated by the component processor in the usual manner.
    • Grids and Scroll areas can be added to your subpages but you must add a Horizontal Rule object at the end of your subpage to reset the Level back to 0.
    • Read more here on Considerations for Creating Dynamically Injected Subpages
  3. These subpages are "Dropped" into the "Zones" using a configuration entry in page PeopleTools > Portal > Configure Drop Zones.
  4. Delivered pages have initially been redesigned to include Zones at the top and bottom of the page. Full list of pages can be found in Doc ID 1917096.2
  5. Drop Zones are currently only available on Fluid pages. It's possible that Classic pages will adopt this new feature but if you know anything about the Table heavy method of control page layout in Classic you'll know how challenging this might be.

Strategy for Adopting Drop Zone

There are a number of pre-requisites for using Drop Zones:

  • You need to be on PeopleTools 8.57 
  • You need the Drop Zone enabled pages from PI 030 (NOTE: If you take the Drop Zone enabled pages but you're on a tools release lower than 8.57 then the pages will still work. The Drop Zones are simply ignored).
  • In the process of applying the Change Package from PI 030 you may find you have customisation impacts to resolve. Your options are:
    • Remove the customisation as it's no longer needed.
    • Re-apply the customisation.
    • Re-design the customisation using Drop Zones and/or Event Mapping.

Using Drop Zones in re-designing a customised page may require you to rethink some aspects of the user interface. Drop Zones generally only exist at the Top and Bottom of the pages and so you'll need to look at grouping together your custom fields. Drop Zones won't solve requirements such as inserting custom fields into delivered grids or scroll areas. Design constraints will require compromise from your business users but the rewards will be faster application of maintenance and reduced cost of ownership.

Having said that "if you can make money, save money or improve customer service quality by customising then go ahead and do it - customize. Why wouldn't you try and get the most out of your investment?" I blogged on this idea here and discussed with Dan, Kyle and Jim at OpenWorld 2018 (listen in at 00:30:50 on the podcast).

So... back to HCM 030 and Drop Zones

Let's take an example from HCM 030 and setup a custom subpage to work with the Employee Self-Service Personal Details Address page (See Fig.1 ).  There are 3 Drop Zones defined on this page and of course you can't see them visually on the page as we have not dropped anything into them yet.
Fig.1 Delivered Address Page

I've created a very simple test subpage to help locate the Drop Zones (See Fig.2 ).
Fig.2 Test Subpage

If we open the Configure Drop Zones page and lookup HR_EE_ADDR_FL Component we see there are 3 sets of Drop Zones;

  • Top and Bottom of the Edit Page (the secondary page that opens when editing Addresses)
  • Top and Bottom of the Lookup Page
  • Top, After Home and Bottom of the Address Page (see Fig.3  )

  • Fig.3 Configure Drop Zone Page
It's not immediately obvious which Drop Zone is which so I'm going to use my test subpage for all of them and see what happens.  (NOTE: For some reason erroneous double rows are being pulled into this page for the secondary page Drop Zones.  I patched my PeopleTools to patch 06 but this didn't resolve it).

Fig.4 App Designer Page Definition showing 3 Drop Zones
See Fig.4  for the Application Designer view of the 3 Drop Zones on the main Addresses page.  It may be necessary to use Application Designer to understand Component structure, Page layout and PeopleCode logic.

The result can be seen in in Fig.5. It's not necessary to clear cache. Just reload the component and like all App Designer changes the effect is immediate.

Fig.5 Results of dynamically injecting subpages into Drop Zones


This is a powerful evolution of PeopleTools and has, once again, beautifully capitalised on the meta data based nature of PeopleTools.  If we combine the power of Event Mapping with Drop Zones we should be able to implement even more value adding change without costly and invasive customisation.

As always feel free to comment with thoughts and suggestions.

Thursday, 18 April 2019

Suppress Logs in Loop - New Trace in 8.57

New in PeopleTools 8.57 is a trace flag you're going to wonder how you ever managed without. (and before you this is not an April Fools joke .  This really is a new feature in 8.57.)

Suppress Logs in Loop - It does exactly what it says it does.  It suppresses trace output for PeopleCode loops.

How does it work?

Here's some sample PeopleCode designed to show the new trace flag behaviour.
For &i = 1 To 100
   &a = &a + 1;

   For &j = 1 To 10
      &b = &b + 1;

WinMessage(&a | ", " | &b);

With the the Suppress logs in loop flag OFF we get 3,409 lines of trace file showing 100 iterations of the first loop and 1,000 iterations of the second loop.

With the Suppress logs in loop flag ON we get a much more readable trace file.

But how useful is this?  Well, to get a quick, easy to read picture of a complex set of functions or class method calls that are nested in a set of crazy loops then this is VERY helpful.  But what if we're troubleshooting a behaviour issue? Let's modify our PeopleCode to include a test in the outer loop which will only evaluate TRUE once.
For &i = 1 To 100
   &a = &a + 1;
   If &a = 2 Then
      &s = "&a has reached the 2nd iteration " | &a;
   For &j = 1 To 10
      &b = &b + 1;

WinMessage(&a | ", " | &b | ", " | &s);

With the Suppress logs in loop flag ON we get an incomplete trace.  Clearly, our code which sets &s is executing but we can't see it in the trace below.

The reason for this is that the trace only logs the first iteration.  It's by design.  Imagine how complex it would be for the trace engine to retrospectively include trace if a condition evaluated differently from one iteration to the next.

Despite this.... I still think this is a very useful feature... and so.... thank you PeopleTools team.

Read more here  in PeopleTools Online

Monday, 1 April 2019

Undocumented Useful PeopleCode Functions

Those of us that have been working on PeopleSoft for a while know that we occasionally stumble across undocumented features and functions.

Logical Operators are one of the fundamental building blocks of computer programming languages.  Evaluating if a predicate (or expression) is logically false or true determines program flow and results in correct and predictable behaviour.  The 3 Logical Operators in PeopleCode (sometimes called logical connectives) are AND, OR and NOT

In this example the Boolean typed variable &foo must be True and variable &bar must be False in order for this predicate to be True.  (In the Truth Table a False and False (i.e. Not False) always returns True).
   If &foo And
         Not &bar Then
         /* do something... */


I've been working on a software project recently and I stumbled upon a new logical operator in PeopleCode.

I found the Maybe operator.

The beauty of this operator is that the evaluation of a Boolean using the Maybe operator might return a False or True but you're never quite sure which.   In this example &foo must be True and variable &bar could be False or True.  The result of the Maybe operator may result in True or may result in False.
   If &foo And
         Maybe &bar Then
         /* do something... */


This simple device can save us writing loads of quite complex code and that makes it a very powerful operator indeed.

There are many other useful shorthand functions we can use for evaluating field values and I'm particularly fond of  the functions AllNoneAllOrNoneOnlyOne and OnlyOneOrNone.  You can read all about there here in the PeopleSoft Online Documentation.

To check if a field has a value we could write
  If &foo <> " " Then

or we could simplify this with...
  If All(&foo) Then

This is particularly useful if you need to evaluate more than one field. So the following...
   If &foo <> " " And
         &bar <> " " And
         &dee <> " " Then
      /* All fields must have a non empty value */

would become a nice tidy....
   If All(&foo, &bar, &dee) Then

      /* All fields must have a non empty value */

And our newly discovered Maybe operator also works as a Function too.  We can therefore return True or Maybe False if &foo has a value.
   If Maybe(&foo) Then
         /* do something... */


Happy coding. And if you too come across any hidden functions please let me know.

Sunday, 10 February 2019

Oracle India PeopleSoft SIG

I've been back in India this week spending time with some of our amazing Cedar Consulting India team who are based in Pune.  In this Cedar office, located in the west of this busy city, we have PeopleSoft and Cloud specialists, developers, PS admins and support people all contributing to the success of our clients around the world.
Some of the Cedar India Team

So proud to be part of this high-class team.

This is my second trip to India and I've totally fallen in love with this amazing country.  Great food, warm climate, Royal Enfield motorcycles and lovely people.  I can honestly say I've enjoyed spending some time with some quite wonderful people.

I then flew down to attend the Oracle India PeopleSoft Special Interest Group meeting. This is a 2 day event organised by Oracle to bring together PeopleSoft customers and partners to learn about PeopleSoft technology and applications and to network with the Oracle development team.

Jam packed room for the Oracle PeopleSoft SIG

Lunch with Ram, Anusha & Kamalesh - Event Mapping dev team

At the Oracle SIG I had an engaging 2 days talking with others about the exciting features of PeopleTools, discussing suggestions for enhancements, solving problems and dreaming up solutions to the challenges of the modern and evolving business world.  I count it a real privilege to belong to this global PeopleSoft community.

Nagendra Krishnappa
Cloud Manager Product Development Manager, Oracle
PeopleSoft as a Service is a very real opportunity for customers to migrate their on-premises PeopleSoft to run in Oracle Cloud Infrastructure (OCI) and to Simplify the Complexity of running their systems.  Moving to OCI enables an unprecedented level of automation in areas such as hardware and network provisioning, security, PeopleTools upgrades and patching and more.  PeopleSoft Cloud Manager is a key enabler in this  and I had the great pleasure to address the subject generally about PeopleSoft as a Service before Nagendra Krishnappa, Cloud Manager Product Manager, Oracle talked about the new features of PCM 08 and about ongoing investment in this exciting PeopleSoft application.

PeopleSoft as a Service - Simplifying the complexity of Selective Adoption
Never been to a PeopleSoft event where Oracle talk about a bunch of new features and then proceed to hand out touch tablets with access to live working systems (in Oracle Cloud of course) for delegates to learn how to use the new features.  Brilliant idea.  We were organised into tables and given uses cases to walk through on live PeopleSoft instances.  We did this with Drop Zones (new feature in 8.57) and Page & Field Configurator (a new Enterprise Components feature in recent images).

Rebekah Jackson (VP Product Strategy, Oracle) fronted both days first outlining Oracle's huge investment in PeopleSoft and then on day 2 opening the discussion on disruptive technology and what PeopleSoft are planning and thinking about in the realm of AI/ML, digital assistants and voice interaction.
Rebecca Jackson - VP, Product Strategy & Development, Oracle
Mark Thomas - Hays and myself talking about PeopleSoft Fluid 

Jeremy Pelley - Product Management Director, Oracle interviewed Mark Thomas from Hays and myself about our real-world experiences of Fluid deployment, development, testing and more.  This was a great opportunity to share stories about the significant value Fluid UI has in PeopleSoft and how the appearance of software systems plays a key role in determining it's popularity not just usability and mobile device enablement.

AI/ML interactive discussions
Oracle also ran an interesting session on Artificial Intelligence and Machine Learning with interactive breakout group sessions trying to identify opportunities to develop solutions in PeopleSoft.

Other sessions included:

* HCM and FSCM roadmaps and product demos
* Data Privacy Framework in PeopleSoft
* Lifecycle Management and tools
* PeopleSoft as a Service in the Oracle Cloud
* Safer Customisations using Configuration Tools and better development practice

and so much more.

If you're in India and you use PeopleSoft then I highly recommend getting involved in organised community events by Oracle and by AIOUG 

See you again soon India.

Sunday, 20 January 2019

Did you know? Home Link Now Works

Here's something I came across a few weeks ago that is so blindingly obvious I was blinded by the obviousness and simply didn't notice it.

Classic PeopleSoft pages have a New Window link.  (If you'd like to see this in Fluid vote here )

When the user clicks the New Window link it opens a new browser window with the same URL as the original but with the _newwin string appended to site name.  This string is resolved into a new session state number by PIA servlet.  The session number preserves the state of each component in each new window.  This works fine until you click the HOME link which will reset the session number back to the original causing the session states of your multiple windows to get mixed up and confused.

However,  THIS NOW WORKS OK!   Somewhere around PeopleTools 8.55 or 8.56 (or maybe even earlier) this seems to have been fixed and I didn't notice.  Watch the video below to see this working. 

It's quite likely everyone already knows this and it was only me that wasn't paying attention.  If this blog does nothing else it'll help vote up the New Window Link on Fluid idea on the Oracle Community Ideas Space.