Some learnings from XSLT

I’ve started using XSLT to transform XML in the Pagelet Wizard recently and wanted to share some tips from what I have learned.

1) XMLper - Transform - This is a handy, easy to use, free, online XSL transformer. Input the XML you want to transform and the XSL to do it, and it gives you the output, or associated errors. The specific error messages are really handy, especially if you are doing XSL for Pagelets in PeopleSoft as you just get an error saying it’s failed.

2)  Generating HTML using XSL is tricky, unless you have a very straightforward and simple structure (in which case you probably don’t even need a stylesheet). The engine tries to close any open tags in a ‘greedy’ way. For example, the following caused me great angst:

<div>
  <xsl:if test=”position() mod 4 = 0”>
    </div>
    <div>
   </xsl:if>
</div>

What I was trying to do here was create a new div in certain circumstances. However, XSL still needs to be valid XML and the above snippet of couse is not. In order to get around this, you can write the HTML as text values and then when its processed by the XSL engine it is read as text but when rendered by the browser it’s treated as HTML. This can be done as follows:
<div>
  <xsl:if test=”position() mod 4 = 0”>
        <xsl:text disable-output-escaping=”yes”>&lt;/div&gt;</xsl:text>
         <xsl:text disable-output-escaping=”yes”>&lt;div&gt;</xsl:text>
   </xsl:if>
</div>

3) Getting JavaScript to run is also a pain, and can be achieved in the same manner as above:


<script type=”text/javascript”>
     <xsl:text disable-output-escaping=”yes”>
            your script here
     </xsl:text>
</script>

Several recommendations online suggested using <xsl:comment>, but I found that this left the code completely commented out, and therefore didn’t run - I wonder if this may be a specific PeopleSoft problem though.
Another option is to use CDATA sections for JavaScript, which avoids the compiler getting confused by the code.

4) You can put logic into a for loop to only run the code in the loop in those conditions:

<xsl:for-each select=”/NavCollection/Contents/NavItem[position() &lt;= (ceiling(last() div 4))]”>
      — Only run what is inside this loop so long as the current position number meets the criteria
</xsl:for-each>
Oracle CloudWorld London

Earlier this week I was fortunate to get a chance to attend the sold-out Oracle CloudWorld event in the ExCeL centre near London City Airport. It’s the first time I’ve been to the venue, but it was well organised with some strong speakers, decent food while networking between sessions, and even a DJ keeping us entertained as we walked between demo pods.

First up was Oracle co-President Mark Hurd who was a far more engaging speaker than I’d expected - and surprisingly lively too, despite being a long way from his home time-zone. Mark was followed by Thomas Kurian (Executive VP, Product Development) who dived into a lot more of the detail on Oracle’s cloud offering.

There were a lot of insights that I picked up from these speakers, including:

- Oracle Cloud will include bug tracking and source code management

- IaaS is coming later this year. It’ll be a little different from AWS however as it’s on Exadata systems and Oracle take care of the admin/backups etc.

- There are 30m users on the Oracle Cloud, processing over 1bn transactions a day - not bad for a service that didn’t really start until 2008/9

- Oracle’s 60,000 strong sales team has been running on Fusion CRM since last year

- There are 3 updates a year to Fusion, but there’s the option to skip one if it clashes with an important period for the company (unlike some other cloud vendors)

I also learnt a new word - co-mingled - which was used in the context of multi-tenant implementations and the risk of one company accidentally being able to see data from another company.

Mark also showed this picture of the two most recent papal elections, which demonstrates the rapid proliferation of mobile better than any bar graph ever could:

Also giving a keynote was Alan Lepofsky of Constellation Research who gave a great talk on Social Media within HCM, CRM, Financials etc. Alan went beyond the usual social justifications (communities and sharing? we’ve had those for ages!) and gave lots of examples of practical usage with solid ROI.

His main theme was that the work environment has changed. There is no more ‘knowledge is power’. Now everyone has a voice and there’s much more transparency. He also said that the work/life balance is blurred and the walls between home and work are crumbling. One of the drivers for social is that it reduces the amount of email traffic, which everyone would appreciate.

I also attended a Fusion HCM joint session with Oracle’s Clive Swan and Standard Life (who implemented Fusion in around 10 months in co-existence model with their EBS Core HR system). It was a good session and although they’re very happy with the system that they have (and they’re implementing more modules) they also made it very clear that there was considerable pain that came with being an early adopter.

One of the most amusing soundbites of the day came from a video shown by host Kate Russell. The lady being interviewed (I can’t recall her name) said that when hiring she labels people either a ‘drain’ or a ‘radiator’, depending upon whether they drain or radiate positivity and energy - and that you should surround yourself with radiators, not drains. Wherever you walked for the rest of the day you could hear people discussing who was a ‘radiator’ …

PeopleSoft and Web Browsers

image

I’ve always found the subject of which web browser PeopleSoft certifies with which version of the application a little confusing and hard to get definitive answers to. Although MOS has a section on this, it isn’t particularly slick to navigate. While researching this for some pre-sales work for a prospective client I also discovered that it’s not just the web browser the client has to get right, it’s the underlying operating system also.

For instance, with the latest version of PeopleSoft, Oracle certifies IE8 on Windows 7, but doesn’t support you using IE8 on Windows XP or Windows Vista. Confusing.

We thought it’d be a good idea if Succeed put together a simplified and clearer explanation of exactly what is certified and what isn’t. 

Click here to download the document.

Oracle names Succeed “Industry Partner of the Year 2013”

At the recent Oracle Specialised Partner Awards 2013, Succeed won Industry Partner of the Year 2013, beating Accenture, Capgemini, Deloitte, Hitachi Consulting to the top spot.

I was privileged to accept the award on behalf of Succeed, which has been earned through the hard work of all our consultants over the years, and the strong relationships we strive to build with our customers.

From conversations with a number of people at the awards, I am getting an increasing sense of the importance of providing a full consulting and delivery service for customers, built on mutual respect and partnership. It appears that in current market conditions, customers are looking for small, but established niche partners to work with, who can provide both agility and deep experience in their specialised sector. This also needs to be sprinkled with thought leadership to breathe innovation and differentiation into the business case. New systems need to be engaging to use, and truly deliver business efficiencies.  Building trusted, and long term relationships appears to be back in fashion – we hope to continue to build on this trend, and our previous successes as we move into FY13/14.

What makes Tools 8.53 worth the upgrade?

We’ve done a lot of investigation into PeopleTools 8.53 at Succeed. We were part of the beta program, but we were also aware that as it is a cornerstone for the imminent 9.2 applications that it would be of key interest to a lot of our clients.

Although there are a number of documents that have been published on what Tools 8.53 contains, many of them are long and of a detailed, technical nature. We felt that our clients would value a shorter, more visual, high-level overview of the key features.

To this end, we created a document to fit that purpose. Rather than keep it just to Succeed and our customers, we thought we’d share it with everyone:

The most compelling features in PeopleTools 8.53

Archive It Or Lose It

There’s a delivered Application Engine program for archiving Application Messages. This is a useful thing to do because it reduces the size of the App Messaging runtime tables and improves the performance of Integration Broker.

There’s also a handy Archive checkbox on the Queue management page:

Now what would you expect to happen when you run the archiving process if this checkbox is unticked?

Personally, I would expect the process to leave messages in that queue well alone and just get on with archiving the ones in queues where it is ticked. However this is not what happens. When you run the process any messages in queues that don’t have this checkbox ticked are DELETED.

Looking at PeopleBooks it appears that this is the intended behaviour:

So the program is “working as designed”, but I’m not sure the design is as flexible as it should be. Without customisation there appears to be no way of archiving a subset of messages, deleting others and keeping the rest, which some users may wish to do.

Succeed wants others to succeed too

image

Succeed Consultancy was founded with generosity in mind and having enjoyed success over recent years is pleased to share some of this success with others not so fortunate by giving some of our profits to various charities.

This year Succeed has primarily given to Watford Community Church investing in the Leegere partnership. This project is based in one of the poorest countries in the world: Burkina Faso. In their local dialect, Djula, there is a special term used by a landowner when they call friends for help when working in the fields. Maybe they need help for planting, harvesting or working the ground; if there is more work than they can handle, they call for a ‘Leegere’ – a group of people to come and help them make the most of the season/land/seed/weather for maximum productivity. The video shows what our gift has been able to do in a community: a new church building, a house for a pastor and a micro-finance scheme to start a pig farm.

We also encourage our staff to be involved in charitable activities. We will match funds raised by employees that do sponsored events, and each year we will have an internal poll to identify a Succeed Charity of the Year; this year, the A21 Campaign was chosen. This charity works to eliminate human trafficking in the 21st Century.

Using jQuery Sliders with PeopleSoft

It is often necessary to create functionality on a PeopleSoft page where an amount can be entered within a specified range. The user experience for this simple requirement can be greatly improved by adding a slider to the page.

The standard UI of PeopleSoft can easily be extended to include slider functionality by using the jQuery UI slider widget which is, of course, built on top of the jQuery JavaScript library.

To see what is available in terms of slider functionality, visit the jQuery UI website.

The slider can be customised in many ways using the options provided, such as changing from horizontal to vertical and adding minimum and maximum ranges etc.

With a small amount of CSS knowledge, it also becomes quite a simple process to completely change the appearance of the sliders in terms of the backgrounds and other images used.

To implement a slider into a PeopleSoft page, you will need to find a suitable method for serving up the jQuery and jQuery UI libraries so that they are available to your PeopleSoft pages. For a simple demo you can reference the libraries directly from the internet, but for anything more than that, you should consider the other options available depending on your PeopleTools version and the intended scope for using jQuery in your PeopleSoft system. (Such options include serving the libraries from your web server or from the Message Catalog).

The solution itself involves adding one or more HTML areas to your page to contain the required JavaScript and CSS code (subject to having the jQuery libraries available, as mentioned previously).

The JavaScript code can be stored in an HTML object and injected into your page using the GetHTMLText PeopleCode command. 

The JavaScript source code for various slider configurations can be downloaded from the jQuery UI site - the source code for their default slider is shown below:

In the sample page below, I have shown two very simple sliders that have had their handle images overridden, backgrounds changed and minimum/maximum values applied. The values in the edit boxes update instantly as the slider bar is moved. A little extra JavaScript has been used to allow the option of changing the amount directly in the edit box or by using the slider control.

Recent Bundles Affecting Global Payroll UK

Oracle have delivered a number of GP bundles recently, and this post is a summary of what we think is most noteworthy within them. 

Auto Enrolment 

Bundle 2012-D saw Oracle’s first release of the Auto Enrolment solution for PeopleSoft.  We’re working on auto enrolment with a number of our clients and when we installed the delivered solution for one of them it became clear there was more work to be done before it was really ready for use so we’ve been busy working with our client to beta-test the solution.  With staging dates approaching fast we’re looking forward to all of our clients being able to get hold of the updated patch that we’re promised by the end of February. 

RTI 

Bundle 2013-A contains the RTI solution, relevant for customers who are using RTI in the 2012-13 tax year.  From the guidelines HMRC has published we know that the requirements for Full Payment Submission in 2013-14 tax year are different and so we’re waiting for a further release from Oracle before customers who are going on to RTI after the end of this tax year will be able to test the FPS with code they can expect to meet the HMRC 2013-14 requirements.  Now our clients are starting to install the RTI patch we’re able to look at how Oracle have delivered on the hash tag requirements, what dependencies the RTI processes and existing processes have on each other, what processes will become redundant with RTI and more.

P45 Production 

Prior to bundle 2013-A users could only generate a paper P45 using P45 GBR (Navigation: Global Payroll & Absence Mgmt > Absence and Payroll Processing > Reports > P45 GBR).  This was slightly annoying since the P45 Identification GBR and P45 Identification Results GBR components (Navigation: Global Payroll & Absence Mgmt > Termination Processing) gives users more flexibility when generating P45s.  We’re pleased to see that the Paper P45 can now be generated from the P45 Identification pages. 

P60 Production 

The end of year update includes what Oracle is describing as an eP60.  It’s similar to the paper P45, where the content of the form is printed onto an XML publisher template that has been built around the HMRC template.  This is a great step forward compared to having to print the P60 on HMRC stationery but I think an eP60 ought to mean that the P60 is available in via self-service like payslips are.

Average Earnings for Retro Hires

There’s a fix for the average earnings calculation when the period being used for the calculation includes a retro hire period.

Other Fixes

There are some other bits and pieces in 2013-A where it looks like someone’s been having a tidy up. Whether this has come about as a result of work on version 9.2 or as a result of SRs raised by other customers, fixes like applying the relevant tax code in the pay period, not forwarding EDI references during a tax code uplift and verifying service when establishing eligibility for SPP are welcome improvements to the product.

BCITEM.BCTYPE values

The PeopleTools table PSBCITEM (along with PSBCDEFN) holds the definition for Component Interfaces within the system.

The BCTYPE field contains an integer that denotes the type of each property. It will contain one of the following values:

1 = GETKEY

2 = CREATEKEY

3 = Collection

4 = Standard Property

5 = FINDKEY