Sunday, 20 September 2020

Fetch browser data into Component Buffer

It's Hidden in the Field.
Photo by Patrick Mueller

I had to remind myself recently of how to solve a particular problem that I first solved probably over 15 years ago (probably in version 8.01 of PeopleTools).  

If I use JavaScript to fetch some data from the browser then how do I get this new local data back into the component processor and make it available to PeopleCode?

This might be useful to someone out there so here's how it's done.  I'm going super simple with this example so that hopefully the concepts are clear.  

Let's assume we have a Page with a single Field - DESCR (Description).  We're going to use JavaScript to fetch the Operating System of the local machine.  A button will then pass that back to the Component Processor and in the FieldChange event we'll display the Operating System name in the DESCR field.

(1) First I need to get my Javascript into the page.  There are many ways to do this but for this example I'm just going to add an HTML area to the page and set it's value to be my JavaScript during the PageActivate of the Page.

This is my JavaScript to get the Operating System.


// Get the Operating System name from the appVersion property*/
var OSName="Unknown Operating System"; 
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows"; 
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS"; 
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux"; 

// Set the hidden field on page using the PageField Name
document.getElementById("MY_DESCR1").value = OSName;

// The hidden field can also be referenced by using RECORD_FIELDNAME
// document.getElementById("GRS_TEST_WRK_DESCR1").value = OSName;

And the code to inject this into my Page at runtime.

NOTE: When the HTMLAREA value is set in PageActivate the JavasScript at this stage has not been rendered in the browser and therefore it hasn't executed yet.  This is important to note as anything which the JavaScript does on the page at render time will not be available to the Component Processor until the next rountrip.

ALSO NOTE:  It might matter where you put your JavaScript on the page.  HTML pages do not load all at once and so HTML elements that your JavaScript reference may not have rendered at the time they execute and may not be available.  For the purposes of this simple test we can get away with adding the JavaScript to the end of the Page but a much more thorough discussion on this can be found here

(2) Pass the JavaScript variable to the local PeopleSoft Page.  Fields on a PeopleSoft Page are located inside the <FORM> object so that when the next HTTP POST event (or roundtrip) occurs the collection of Field objects or (HTML INPUT elements) in the form are posted (sent) back to the web server and then to the application server to be made available in the Component Buffer.

Normally we use data entry elements on the Page to capture human input but in this instance our JavasScript is doing the inputting.  However, we don't necessarily want our Operating System name to be visible on the Page so we add a hidden Field on the Page and set the value of this using JavaScript. In this example the hidden Field name is DESCR1 and we're going to make it invisible.

Setting the Page Field Invisible property not only makes the field hidden from human view but the way in which PeopleSoft does this (quite rightly) is to not include the Field in the HTML page response thus making it invisible to JavaScript too.  We solve this problem by also setting the Generate in HTML property and Modifiable by Javascript* property.

NOTE: If you don't set the Modifiable by Javascript property then you'll get this error.

This is because the HTML element for the Field will be present in the HTML but is not permitted to be changed. Actually, JavaScript will modify the Field value but the next roundtrip will catch this illegal operation and throw the error.  This feature might be useful if you wanted to apply some special HTML/CSS wizardry to  Field data but didn't want to display the default PeopleSoft styled Field.

One other Page Field property is useful to set on our hidden field and that's the Page Field Name.  All Page Fields can be referenced by the RECORD_FIELDNAME and this is set as the Element ID.  However, as we all know, it's possible to have the same Field appear multiple times on a page and having a method of uniquely identifying a specific instance of a Field is useful and sometimes essential.  

The line of JavaScript which sets the hidden field is this one:
/*Set the hidden field on page*/
document.getElementById("MY_DESCR1").value = OSName;
or, alternatively using the RECORD_FIELDNAME.  
// The hidden field can also be referenced by using RECORD_FIELDNAME
document.getElementById("GRS_TEST_WRK_DESCR1").value = OSName;
(There's a lot of useful information online to help understand how to reference HTML elements.  Here's a good place to start ).

(3) Pass the hidden field into the Component Buffer.  Because our JavaScript has been used to set a field  the data is still on the local browser and will not be available to PeopleCode in any events until the next roundtrip.  This can be a Save, Refresh, non-deferred FieldEdit/Change, RowInsert/Delete, etc).  Think of it as if a human had just entered the data into a field.   

In Summary

If we put all this together this is what's happening.
1) We add our JavaScript is added to the page in Page Activate. (The JS hasn't run yet).
2) The Page HTML is generated by the Application Server and returned through WebLogic to the browser.
3) The browser renders the HTML and, if we've been clever (or lucky), our JavaScript will execute once the page is loaded.
4) The JavaScript grabs the data we're interested in and sets the value property of our Invisible, Modifiable by JavaScript, Generate in HTML enabled Page Field.
5) This Page Field is part of our Form and so will be passed back to be included in our Component Buffer during the next roundtrip (Save, Refresh, non-deferred FieldChange/FieldEdit, etc).
6) Once it's in the Buffer we can get to it like any other Field.

I hope this is useful to someone.  There might be other ways of doing this and other observations, gotchas or things to look out for so please feel free to share in the comments below.

Wednesday, 22 July 2020

Cloud Manager Magic # 11

24 July 2020 Update:   See Step (8) for update.

It's been nearly 2 years since Cloud Manager gave us fully automated PeopleTools Upgrading - the magic button. You can read my reaction to it here.

On 10 July 2020 the Oracle PeopleSoft team released Cloud Manager 11  (VFO and CFO ) with features like multi node backup, database refresh, new OCI shapes, stop/start VMs associated with an environment, Kibana and Elasticsearch on mid-tier node, extended us of the native OCI File System and much more.

Very excited to get my hands on CM11 but I resisted the temptation to just install a new instance using the OCI Resource Manager stack available on Oracle Cloud Marketplace.  Instead, I decided to upgrade my existing CM10 instance.   Here's how this breathtaking piece of fully automated Selective Adoption magic went.  I've broken it down into steps with some commentary that I hope will be useful to someone.

(1) Subscribe to the Interaction Hub channel updates in the CM Repository.  If you didn't know Cloud Manager application is part of the Interaction Hub.  I had already subscribed to the IH channel after first installing CM10 back in December 2019 in order to pickup essential PRPs required to provision 8.58 environments..  All the necessary DPK files for CM will be automatically download once the channel is subscribed.  I strongly recommend that you  only do a backup of the CM system when there are no outstanding repository downloads.  If you get your File System files and the CM meta data out of synch then it be difficult to rectify these.

(2) Backup Cloud Manager.  My chosen method of backing up Cloud Manager, before I begin a major upgrade, is to simply shutdown the PeopleSoft domains and backup both the boot volume and attached block volume storage devices using the OCI console.  It takes just a few minutes and allows me to restore back the entire VM back to the pre-upgraded state.

(3) Setup Cloud Manager for update.  If you've been using CM10 before then you've probably already gone into Cloud Manager Settings > Manage Updates so that you could apply the required PRPs.  If not, then just specify the necessary OCI and PeopleSoft PUM attributes making sure you select the correct subnets - ft for the Full Tier and win for the PeopleSoft Client.

(4) Verify required DPKs.  Don't worry if you forget this step.  I didn't realise that patch 03 was required to be in the Repository even though my plan was to apply patch 05.  It's because the base IH image is shipped on 03.  So.... watch out for this little warning highlighted below as we'll see later.  You need 8.58.03 patch in the repository.  If you need it just unsubscribe and subscribe again specifying the minimum patch level to download.

(5) Click the Apply button and select the target tools patch (05 in my case) for CM11 plus a final chance to review the Update Attributes.

This will kick off a self update process. You can't monitor some parts of the upgrade while logged into the very system that's being upgraded so the next screen provides a set of scripts that allow you to monitor progress (get_status), retry a failed step and mark a step as manually completed.  Putty into your CM instance as user opc to execute these.

(6) Validation and Creation of PUM Source steps
The self update process begins with a pre-update validation and patching of the mechanism which does the self updating.  This is a kind of patching the patching process before it begins.  During Step 1 the PIA and App domains will restart so if you're in you'll get kicked out while this happens.

Next, a PUM Source template is created so that an instance of IH Image 11 Update Source environment can be provisioned.  This will have a name of CDMSLFUPDnnnn and will be a Full-Tier and Windows Client topology.

The PUM Source Environment takes about 2 hours to build.  I think the reason why the Pre Tools Validation step can't happen earlier is because CM doesn't know what base Tools version is needed by the PUM Source until it''s provisioned.

This is a minor issue easily resolved by unsubscribing and subscribing to the Linux and Windows PeopleTools 858 Channel.  Once downloaded you can restart the failed step 4 by clicking the arrow button and selecting Retry Failed Step.

(7)  All the other steps will continue in sequence.  Once it gets to Upgrading PeopleTools step it's unlikely you'll be able to remain logged in.  If you drop into Putty you can use the delivered script to get the status of the self update process.

(8) That's it.  Amazing!  

24 July 2020 Update:  I got so carried away with Cloud Manager reporting that all steps had completed successfully that I completely forgot to go and check in the Cloud Manager Online Documentation to see what else needed to be done,  It clearly states that after the self updating process completes you should login as root and run $PS_APP_HOME/cloud ./ . I wonder why this couldn't be automated?

Note #1: If any point of this had failed it would not have been an amazing experience and how I wonder how easy it would have been to fix and restart the process?  Deep knowledge of the inner workings of Cloud Manager is not easily obtained.

Note #2: Because my branding logo and background Fluid homepage image were both implemented using Event Mapping then they are still there even after a major PeopleTools upgrade.  Nice!

I can't claim to have "done" the CM 11 upgrade but I can claim to have "pushed the buttons".  And all done from my lock-down office by the front door working on a desk bureau handed down to me from my Dad who received it himself as a 21st birthday present.  That makes this desk 60+ years old!  It fits my laptop perfectly - almost like it was designed with this in mind.  It's old... well made.... with a forward thinking design and it's still creating value for another generation.

Monday, 22 June 2020

5 Things: Why PeopleSoft is a great investment

There is a natural temptation to believe that because something is old that it's no longer as good as something newer.

PeopleSoft has been around for more than 30 years but then so has the Mini.  

We could all think of countless examples of this but I'm picking one that's close to my home in Oxford - the home of the Mini.

The Mark 1 Mini car production started in 1959. (PeopleSoft was founded in 1987)

1959 Mini

Would we say that the latest BMW Mini model was old?
2014 Mini

Look.... I'm not an expert in cars and I'm fully aware that all analogies fall down at sometime during scrutiny.  So, what's my point?

Java (prolific programming language)?  25 years old
Python (most popular programming language today) ?  30 years old
Windows operating system?  34 years old
HTTP (the language of the world wide web)?  24 years old
PeopleSoft ?  33 years old

PeopleSoft's name might be old but I'm going to argue that the product today is not.

(1) Oracle is committed to the PeopleSoft product & customers

There has been relentless innovation in the PeopleSoft product line.  A roadmap with no delivery is just noise from a supplier that can't deliver - but this is NOT PeopleSoft.   If you doubt Oracle's commitment to the product and you want proof they will continue to invest and deliver then just look at the new features added in the last few years.  It's breathtaking!   

There is a comprehensive roadmap of new features and enhancement in the pipeline, customer focus groups and advisory boards influencing the product development.   Customers also have a rolling 10 year support commitment.  This is not just tinkering around the edges or doing just enough to keep the lights but a strategic effort by a supplier to add increasing value to an already rich, well liked and valued set of products. 

(2) Meta Data is King

The computer science behind the technical value of meta data based technology is beyond the scope of this blog (and probably my own abilities).  I do believe, however, it's the reason why PeopleSoft could make the relatively seamless jump from 2-tier to 3-tier client server in the 1990's; why PeopleSoft was one of the first ERP systems to provide a web based interface to it's entire application in the 2000's  without a complete re-write of it's application (many tried and ran out of money and failed);  why PeopleSoft was able to provide a mobile responsive UI in the 2010's.  Innovative ideas become easier to design and build in meta data driven applications.  This is the powerful reality that's behind PeopleSoft's agile and speedy delivery of  new features and enhancements.  The associated development tools and frameworks makes it eminently extendable allowing businesses to give themselves a competitive edge by customising and configuring the system to their needs.

(3) Technology is modern

It's quite likely that some of the code running on your Windows 10 PC or your Android phone is more than a few decades old.  That's ok.  Both of these software platforms have gone through quite a few iterations of innovation and improvement that make them very suitable for the modern workplace.

So.... just a few from the PeopleSoft world.
  • PeopleSoft runs in recent versions of WebLogic, Tuxedo, Java, Oracle, DB2, SQL Server databases and  Elasticsearch/Kibana.   These are supported, security patched regularly, used by millions of customers around the world, documented, discussed, taught, presented on in conferences, scaleable, resilient, and etc. Outdated technology platform? Not in my opinion.
  • The PeopleSoft user interface has gone through continuous evolution.  Have you seen PeopleTools 8.58, Guided Self Service, Activity Guides, Related Content, Simplified Analytics, native embedded Elasticsearch capability, embedded Kibana analytics, Related Actions, integrated security across all of these and all available on desktop and mobile devices.  Easy to use, self service and visual UI that runs on mobile?  That's a modern demand of  modern software.
  • Will it run in public cloud?  See (4) below,  That's a modern demand
  • Can I extend, enhance, improve and integrate with my other modern (and some not so modern) systems?  Yes. That's a modern demand that PeopleSoft today can solve
  • Is the product continuously enhanced by the supplier?  Yes.  Selective Adoption's is a power continuous software delivery model.

(4) PeopleSoft in the Cloud

We used to install PeopleSoft using a box of CDs.  Remember those days?
Remember these CD Folders ?
Now I can install PeopleSoft on Windows, Linux, on a physical machine or virtual machine, in my own datacentre or a public cloud server all installed and configured to my own liking using a single command.

Has PeopleSoft lagged behind in the DevOps revolution of the last decade?  I don't believe so.  And my belief is not based on what Oracle are planning to release at some time in the future but it's based on what they have already delivered.

Checkout PeopleSoft Cloud Manager if you have any doubts about what's possible.  Cloud Manager only runs on Oracle Cloud Infrastructure but all the install and configuration management tools required for automation are natively built into PeopleTools, augmented by industry leading orchestration tool Puppet.  Throw Ansible andTerraform into the mix and you can automate just about anything on any platform cloud or on-premises.

Why is this important?  Well, companies are realising that their core competencies are in selling insurance, providing healthcare, fighting world poverty, manufacturing goods, providing banking services, providing education, doing pharmaceutical research or in providing professional services and not necessarily in running computer data centres.  For some it will make perfect sense to continue to manage their own hardware, networking, storage and security in an on-premises data centre but for some there is significant gain from paying someone else to solve those problems for you.  Just like we do with our electrical power, buildings, water supply and other commodity services.

The point is, PeopleSoft has been cloud infrastructure ready for quite some time.

There are other reasons why you might consider moving PeopleSoft to cloud infrastructure.  Why not join me for a discussion PeopleSoft in the Cloud on 1 July.

(5) Strong Community

Why is the PeopleSoft community so vibrant?  Why have most customers not ditched this "old product" and gone running to Software as a Service offerings?  Why do most of the PeopleSoft customers around the world speak very favourably about their PeopleSoft system?  (see above for some of the answers to these questions)

Ok... so a few PeopleSoft customers have decided they can run their business better on another software product or cloud software as a service. Nothing new there.  That's always happened.  But there's been no landslide shift to any alternative.  Customers are getting value from their existing investments and continuing to invest.

Ok... so a few customers grumble about the PeopleSoft system.  I get it.  Software is not perfect - it was built, implemented and maintained by humans.  I'd love the chance to understand what the issues really are but it could be that unhappy customers are not fully exploiting all the new features.  My Triumph Tiger 1050 motorcycle makes a lot of unpleasant noise in 2nd gear doing 60 mph.  I might need to invest the time to learn how to put it into 5th gear - it'll go faster, more efficiently and with a much sweeter noise.

The PeopleSoft community worldwide is buzzing with success stories of new features implemented, innovations created, businesses transformed, migrations to cloud infrastructure, Innovator Awards, teaching classes, conferences, webinars, meetups, blogs, podcasts, community channels and partner events.

If you doubt the enthusiasm for PeopleSoft from it's community, the strong commitment from Oracle, or doubt the exciting innovations taking place in businesses all around the world then don't take my word for it - join in the community, see for yourself.

As always, constructive discussion welcome in the comments below.

Tuesday, 17 March 2020

Oracle PeopleSoft India SIG 2020

In December I had the great privilege attending the annual PeopleSoft India SIG meeting held at the Oracle offices in Bangalore.

This is an annual Oracle run special interest group for PeopleSoft customers and partners.  It's my second year attending this event and I love it.  Why?  Because it's a great community of users meeting a great community of Oracle development staff.  And it's an intense 2 days full of very useful information, hands-on activities and an opportunity to talk with product development directly.

Here's a visual walk through of how the 2 days went.

Srilakshmi Ramachandra - Senior Director Product Management & Strategy
This amazing lady and her team are responsible for an outstanding and unique event where PeopleSoft customers and partners are inspired to learn, network and get more from their investment in Oracle applications and technology.

Paco Aubrejuan, Senior VP Product Development
Paco did live demos of chatbots, Kibana and Notifications! (no other Senior VP I know in Oracle does this!)   He gave the event keynote in which he makes crystal clear Oracle’s strong commitment to PeopleSoft applications and customers.

Deepankar Narayanan – VP of Product Development
(Mr PeopleTools Development)

Ram Rangaraju (Senior Director PeopleTools )
Responsible for Search for Core PIA

Pawan Kalra – Senior Development Manager 
(Kibana guy ! )

Mukul Prasad – Senior Product Manager
(specialist OCI architect with a PS Admin background)

Live ChatBot and Kibana hands on labs.

Hungry for knowledge during the hands on labs - Chatbots and Kibana

Tim Durant Senior Director of Software Development - LCM Tools and me chatting about Upgrades

Mark Thomas (IT Director, Hays) sharing some fascinating insights into Robotic Process Automation & PeopleSoft

Samidha Rege – Product Manager (PeopleSoft Chatbots) Sharing exciting roadmap involving Oracle Digital Assistants

Selfie with a room full of PS Admins and PeopleSoft techs.  We had just done a deep dive into PeopleSoft Performance Monitor and everyone was still awake !!!

Sasabindu Acharya – Platform Development - Great demo of Kibana in the 8.58 Health Centre.  This is reason alone to upgrade to 8.58.

 Biju Narayanan (Director of Software Development) & Rajesh Muthukrishnan (Product Manager - CM) with a fabulous step-by-step live demo on how to install and setup PeopleSoft Cloud Manager.

Thursday, 6 February 2020

OpenWorld Europe 2020

I'm looking forward to speaking at Oracle OpenWorld Europe as Oracle arrives in London with this event for the second year running.

I'll be joining PeopleSoft customers Allen & Overy and Hays with Robbin Velayedam (Senior Director, PeopleSoft Product Management, Oracle)  to talk about success in maximising investment in PeopleSoft systems.

Join us if you can on Wednesday 12 February @ 14:45 in the Customer First Zone @ The Bridge.

Wednesday, 5 February 2020

Cloud Manager 10

On 12 December 2019 Oracle released Cloud Manager 10.  There are some great new features in this release and I had a chance to share some of my favourites with Dan Iverson from a few weeks ago.  You can listen to our conversation here

Oracle's Dave Bain also walks us through the new features here in the PeopleTools Blog so I don't need to repeat any of this content right now.
I did wonder if the guy with the beard and suit and tie was a PS Admin. I mean, I assume he's in the picture because he's doing an upgrade of PeopleTools from 8.57 to 8.58 on the train... using a mobile phone?  yeh... my kind of PS Admin :-)

I'll probably share more on my experiences with Cloud Manager 10 in the coming months as we at Cedar Consulting continue to put it through it's paces.

But for now... I'll let this video speak for itself.

Friday, 13 December 2019

Sangam19 Conference Report

Last week I was in Hyderabad, India for the 2019 Sangam Conference.  The Hindu word Sangam means confluence or coming together.  The All India Oracle User Group have several Chapters across India and once a year they all come together for the most amazing 2 day conference.

This year the event was at the Hyderabad International Conference Centre and all 800+ delegates enjoyed multiple streams of over 200 Oracle tech & apps sessions across 2 days.

I'd been invited to present at the conference in the PeopleSoft stream where I talked about PeopleSoft Cloud Manager and about some of the latest customisation tools like Drop  Zones.

It's hard to describe in words the enthusiastic atmosphere, colour, sounds, food, selfie-taking craziness of this event.   Try this short video for a glimpse !

What did I learn at this event?  Here's 10 things.
  1. You can switch from RedHat Linux to Oracle Linux without having to re-install everything. .  Why would you want to switch?  Oracle Linux can be patched without a reboot!  Nice!!!!
  2. One PeopleSoft customer (HAYS recruitment specialists) are doing some interesting things with RPA (Robotic Process Automation) against PeopleSoft to save time and money on labour intensive transactions in their PeopleSoft system.
  3. Oracle PeopleSoft customers are migrating their PeopleSoft instances to OCI.
  4. I learned how to survive in a VUCA world from motivational speaker Simerjeet Singh.  (please note... I did not dance!! ) 
  5. I learned what Oracle's Mission is.  
  6. I learned that Indian weddings are lavish beyond anything I've seen at a wedding before! (there were 2 weddings taking place at the same venue as Sangam conference).
  7. PeopleSoft customers are experimenting with ChatBot and Digital Assistant technology.
  8. Wilderness Wood is not a Fortnite game location. But Slurpy Swamp is.
  9. Oracle Enterprise Manager 13c has some nice tools for migrating databases to Oracle Cloud.
  10. I can use ADDM to help monitor and tune SQL in my Oracle Database
And so much more !!!

But it's not just about the Oracle tech stuff that I learned but also about the community of people that I connected with.  Just a few photos to try and convey the Sangam19 experience.

The AMAZING Mr Sai Janikiram - Sangam and AIOUG President

Jenny Tsai-Smith - VP Product Management, Database Development, Oracle

With work colleague Shweta Jain from our Cedar office in Pune

Simerjeet Singh sharing ideas on how to thrive in a VUCA world

Srilakshmi Ramachandra  - Senior Director of PeopleSoft Product Development

Friends from Oracle and Cedar Consulting

This is what we're doing !

In between sessions.