Monday, November 20, 2017

Enabling Fluid for Firefox on Linux for PeopleTools 8.54 and 8.55

In one of our customers we came across an issue by which users connecting to PeopleSoft using Firefox in Ubuntu would be shown the classic home page instead of the Fluid landing page.

After some research, we found out that this would happen in PeopleTools 8.54 and 8.55 due to a known issue. The document 2235517.1 in My Oracle Support actually indicates that this issue is resolved in PeopleTools 8.56.



So we started looking for workarounds, until we finally found one, which was to modify the file under the following web server directory:

%PS_CFG_HOME%\webserv\%domain%\applications\peoplesoft\PORTAL.war\WEB-INF\psftdocs\%site%\browscap

In this file, we included the following changes:

(...)
browserPlatform=MACIPAD;
if mac
browserPlatform=MAC;

# customer - author - BEGIN
if (?=.*Linux)
browserPlatform=WIN8;
# customer - author - END
}

{# Form Factors
(...)
if (iPhone)|(iPad)|(iPod)
browserPlatformClass=ios;
if mac
browserPlatformClass=mac;
browserDeviceTypeClass=pc

# customer - author - BEGIN
if (?=.*Linux)
browserPlatformClass=win;
browserDeviceTypeClass=pc
# customer - author - END
}
if android
browserPlatformClass=android;
(...)

Once this was done, and after rebooting the web server, the issue was solved.

Note: I would like to thank Nicolás Zocco for his invaluable contribution in finding this workaround.

Friday, September 23, 2016

Oracle Open World 2016 from a PeopleSofter point of view: Thursday 22nd and Wrap Up

So Open World 2016 has come to an end. But before the curtains fell, there was still some activity and interesting PeopleSoft sessions to attend.

Reporting and Analytics

My day started with a session name Getting the most Out of PeopleSoft - Reporting and Analytics [CON7075] with the participation of Matthew Haavisto, Jody Schnell and Ramasimha Rangaraju.

Reporting has evolved a lot in the last few years, and not only in PeopleSoft. Gone are (or should be) the days in which a report meant a PDF or a print out. Today reporting is not only interactive but also actionable. I actually delivered a presentation on this topic back in April 2016 at the PeopleSoft Tour in Madrid. I later recorded it in YouTube, but unfortunately it is only available in Spanish.



PeopleSoft is not an exception to this reporting evolution. Tools like Pivot Grids, actionable charts and Simplified Analytics all point to the same direction. Unfortunately, not all users are ready for this transition, as I have heard from many customers that upper management do not want to use a digital device to access the reports, so they still prefer the printed alternatives. And yes, I'm writing this as of September 2016.

Anyway, going back to the session, there were some points that I found particularly interesting:

  • The ability in PeopleTools 8.55 to generate submittable PDFs using BI Publisher. This functionality is particularly useful for government forms, but can also be used to gather and process ad-hoc data from users.
  • Oracle JET has been adopted as the charting engine, giving PeopleSoft a more consistent user experience with other Oracle products. Given the amount of development effort dedicated to Oracle JET charting features, PeopleSoft may take a quick benefit a rapidly evolve its charting capabilities.
  • The introduction of Self Service Scheduling simplifies the execution of reports by linking them to pages and hiding the complexity of run controls to users.

Another point I found interesting was the explanation of how macros adversely affect PS/nVision performance, as they require PeopleSoft to execute them twice, first using the Microsoft recommended openXML method and then, as the first does not support macros, using the traditional PeopleSoft Excel automation. Interesting to know!



Meet the PeopleTools Experts

The next session was one of my preferred ones, as it consists of several round tables where you can directly talk to the PeopleTools development team. It is also useful to hear the concerns and doubts of customers and partners.

There were plenty of questions about Fluid User Interface, Cloud Architecture, Lifecycle Management and so on. If you ever attend Oracle Open World in the future, I strongly recommend this session.

PeopleTools Product Team Panel Discussion

Just after lunch, the next session was this classic of Oracle Open World. It consists in an open discussion between the PeopleTools Product Team and customers and partners. It is always interesting to attend this type of sessions and listed to thoughts and ideas from the PeopleSoft community.


Monitoring and Securing PeopleSoft 

My last session was Hands-On with PeopleSoft: Develop Practices to Harden and Protect PeopleSoft [CON7074] delivered by Greg Kelly. The presentation was basically around the Securing Your PeopleSoft Application Environment document available here. I found it really illustrative, and taking into account my rather shallow knowledge of security, rather scary :). Next time I will make sure I prepare myself upfront to take more advantage of Greg's wide knowledge on the area.

Wrap Up

This was an interesting edition of Oracle Open World in what is related to PeopleSoft. There were not many announcements made since the last edition. Still, I think the PeopleSoft team at Oracle is doing a great job. This is still a great product indeed.

On the other hand, I have the feeling that PeopleSoft customers are lagging behind in terms of adoption of new features. Now, personally I don't think this is because the update of PeopleSoft to the latest features is complex. Actually, we can say that with Selective Adoption, DPK and other Lifecycle Management tools it has never been this easy to update. The barrier, in my opinion, is not in the product, but in marketing. All Oracle marketing and sales horsepower has been exclusively dedicated during the last years to their cloud offering. Under these circumstances, it is reasonable to have uncertainties about how wise is to perform future investment in PeopleSoft as opposed to moving to the cloud. And we know uncertainty does not accelerate investment...

From a more personal standpoint, this was great event in terms of networking. Being able to meet PeopleSoft talents such as Jim Marion, Graham Smith, Sasank Venama and many others including the PeopleSoft development team is always the best way to nurture and trigger new ideas.

Just my two cents. Thanks for following this blog during this event!

PS: I bought Jim Marion's book from the bookshop at Moscone South and have a good deal of fun and learning guaranteed for my flight back to Madrid.



Thursday, September 22, 2016

Oracle Open World 2016 from a PeopleSofter point of view: Wednesday 21st

We are reaching the end of Oracle Open World. Wednesday ended with the Appreciation Event which included the star appearances of Gwen Stefani and Sting. Both were really appreciated by the public, but I personally found Sting's performance just fantastic.


Anyway, let's live music behind before it clearly shows I don't have a clue about it. Wednesday was also a very intense day around PeopleSoft. I was able to attend very valuable sessions around different aspects of Fluid User Interface and ElasticSearch.

Fluid User Interface

I attended four Fluid-related sessions yesterday, which were:

  • Getting the Most Out of PeopleSoft: PeopleSoft Fluid User Interface [CON7067] by Matthew Haavisto, Pramod Agrawal and Sasank Venama.
  • Discover What Is New in PeopleSoft Approvals: PeopleSoft Fluid User Interface, Page Composer [CON7065] by David Bain, from PeopleTools Product Management.
  • Hands-On with PeopleSoft: A Successful PeopleSoft Fluid User Interface Rollout [CON7063] delivered by David Bain, Kevin De Kock from McMaster University, Graham Smith and Sasank Venama.
  • Extending PeopleSoft Fluid User Interface Applications the PeopleSoft Way [CON7062] by David Bain.

My take from these sessions is that the key for being successful at deploying Fluid is not only taking advantage of nice UI features that Fluid provides, but mainly profiting from the new navigation approach proposed by PeopleTools 8.55.



Now, as simple as navigation may seem at first, it really requires to put some thought when it comes to Fluid. In the classic UI, we were kind of guided by the system to put our components into the portal menu structure and that was pretty much it. When using Fluid UI, we have several alternatives, and the optimal use is not always evident.


These sessions helped better understand when each option is best applicable. You can also check the PeopleSoft Fluid UX Standards page for more information.

In terms of new announcements, not much was presented. Probably the key announcement on Fluid UI is the new Page Composer for Mobile Approvals that is now available with PeopleSoft FSCM Update Image #20 and will soon be available for the other pillars. I've briefly covered it during my Tuesday's review post, but in a nutshell Page Composer will allow to configure the display of Mobile Approval pages by transaction and form factor. All this done in a nice drag & drop web based interface.


Could this be extended to other functionalities apart from Mobile Approvals? Not yet, Oracle says, but they are not discarding that either in the future. From my point of view, I have certain concerns at performance, because the HTML is not produced by the Application Server binary code, but PeopleCode itself. However, this was already the case for MAP-based Mobile Approvals, so I can only see the upside for it. Whether it can be extended or not to other functionalities, we will see.

ElasticSearch


ElasticSearch has been longly awaited in the PeopleSoft community, mainly because it will replace Oracle SES, which was personally one of the most-hated components of PeopleSoft, if anything like love & hate makes sense when talking about technology (nerd alert here!).

There was a very interesting session, Getting the Most Out of PeopleSoft: Transitioning to Elasticsearch [CON7066], delivered by Mathew Haavisto, Ramasimha Rangaraju from Oracle and Kevin Antoff from Wells Fargo.

In this session, Oracle and Wells Fargo presented the Proof of Concept they did together around ElasticSearch as replacement to Oracle SES. The feedback provided by Wells Fargo was extremely positive, almost from any perspective.

Also the transition to ElasticSearch seems simple. Both solutions can actually coexist, meaning that you can install and deploy ElasticSearch while Oracle SES is still operational, providing the opportunity of zero-downtime.


Still, we need to make sure we adopt ElasticSearch quickly. Support for Oracle SES will end 18 months after the ElasticSearch solution is made generally available. When will that happen? The almighty Safe Harbor Statement does not allow us to know the precise date, but I got the feeling that it is not going to be far from now (it will be delivered as part of PeopleTools 8.56 but will also be enabled for a future patch of PeopleTools 8.55).

I cannot wait to play around with it. I would be particularly interested in using cloud services of ElasticSearch together with PeopleSoft, so we don't need to use our own infrastructure. We will see if that is feasible when it is finally delivered.

Heading for the Last Day

Today will be the last day at Oracle Open World. I will try to post my last review of Oracle Open World at the end of the day, but if I can't, it will be for sure during the week-end when I'm back in Spain.

If you are here at Oracle Open World, please say hello. It doesn't get better than this where it comes to networking opportunities.




Wednesday, September 21, 2016

Oracle Open World 2016 from a PeopleSofter point of view: Tuesday 20th

We are now at full steam in what regards PeopleSoft at Oracle Open World. As my jet lag gets better (today I woke up at 4.30am, quite an achievement), so does the announcements at the PeopleSoft specific sessions.

The day started with a general keynote facilitated by Safra Catz and Thomas Kurian. I have found the second part most interesting as it went deeper into the announcements made last Sunday by Larry Ellison. Compared to my last presence at OOW two years ago, it is quite noticeable to see how some technologies such as Big Data have now made their way to the headlines while others like Docker have appeared apparently from nowhere. This is what I like about the IT industry, the pace of change eliminates any possibility of boredom.


But of course this blog is about PeopleSoft, so let's focus on that. Yesterday I have the opportunity to attend the following sessions:
  • General Session: Today’s PeopleSoft is Intuitive, Powerful, and in the Cloud [GEN5077] delivered by Paco Abrejuan.
  • PeopleSoft Technology Roadmap [CON7061] by Jeff Robbins.
  • Hands-On with PeopleSoft: Value of PeopleSoft in Oracle Cloud [CON7072] also by Jeff Robbins.
The first session outlined the most significant functional and technical enhancements that we should expect in the near future, while Jeff focused in more detail in some of the technical ones.

All in all, some serious announcements were made. All of them were in line with Oracle's recommendation to customers in order to maximise their investment:
  • Implement PeopleSoft Fluid UI
  • Fully execute on Selective Adoption
  • Deploy PeopleSoft to Oracle Cloud


Fluid UI

This is probably the area that concentrated most of the announcements. Every enhancement is now using Fluid UI, so its adoption seems to be the best way for customer to protect their PeopleSoft investment.

This is of enhancements that seemed more interesting to me:
  • The Expenses module is now present in Fluid UI. This was one of the first mobile-enabled modules, although it was originally built using iScripts, which made its maintenance rather difficult. The new pages in Fluid look much better and I'm sure it will be easier to maintain.
  • A new Classic Plus style will be delivered in PeopleTools 8.56, giving traditional UI pages a closer look and feel to the Fluid UI ones. This stylesheet will not make these pages responsive, but it should significantly improve the user experience when navigating back and forth Fluid and traditional UI pages. 


  • ElasticSearch will be replacing Oracle SES as of PeopleTools 8.56, meaning that both SES and Verity will be deprecated. I cannot say I'm sad about these news.

  • Mobile Approvals will now be implemented in Fluid and not MAP. This does not necessarily mean a different look, but it should make the maintenance simpler, as from my point of view MAP is more complex to debug when comparing to Fluid.

  • Related to Mobile Approvals but extensible to other pages is the new Page Composer, a fancy tool allowing to create and modify pages from the web browser. Amazing, isn't it?


One important note to be made is that Oracle idea is to gradually remove support for those traditional UI pages that have Fluid UI counterparties. So, if you are not yet in Fluid UI, you should start seriously considering it.

Selective Adoption

Oracle would like to see more and more customers taking advantage of the Selective Adoption delivery model. Jeff Robbins gave an interesting presentation on how this actually means to build a DevOps organisation in synch with the PeopleSoft Support and Development team.

Looking backwards, Oracle has introduced in the last few years a lot of improvements in order to make Selective Adoption easier, like the use of Oracle Cloud for Update Images or the capability to identify those enhancements not affected by customisations.

From my point of view, the key barrier to implement Selective Adoption remains the maintenance procedures at PeopleSoft customers. Selective Adoption has not only changed the way we apply patches and enhancements to PeopleSoft applications, but also the way we should budget and plan our maintenance efforts.



A key announcement made during these sessions was that PeopleTools will not be delivered for the moment using the Continuous Delivery model, so we should expect to see a PeopleTools 8.57, 8.58 and so on. This contradicts the announcement made during last Oracle Open World, but I do not think it is necessarily bad news.

PeopleSoft in the Cloud

Last Oracle Open World we heard a lot of announcements related to making PeopleSoft easier to deploy in the cloud. As Graham Smith said during his session on Monday, PeopleSoft has been always able to run in the cloud, but now it is just easier to make the transition.

In this edition of Oracle Open World, one of the main announcements for PeopleSoft is the new Cloud Manager. This will be particularly useful when using Oracle Compute Cloud as the IaaS/PaaS platform.


Oracle Cloud Manager can be used for several purposes, including:

  • Subscribing to updates and applying them automatically in Demo enviroments.
  • Quickly provision new environments for specific purposes such as development, testing or training.
  • Lifting and shifting PeopleSoft Dev/Test instance to the Oracle Cloud.

All in all, and although I have always been a happy user of Amazon Web Services, Oracle's Cloud value proposition for PeopleSoft applications seems to be getting better and better.

Postcards from Oracle Open World

This time I did have some time to visit around the exhibition halls and different booths. Wednesday looks exciting with sessions and the Appreciation Event (I hope this time I do not lose my wristband like in 2014). 

In the meanwhile, I leave you some pictures. Keep tuned for more updates!

Shouldn't it be in the clouds?

I don't see Hillary as an option :-(

Nice one!


Tuesday, September 20, 2016

Oracle Open World 2016 from a PeopleSofter point of view: Sunday 18th and Monday 19th

In every crisis there is an opportunity.

This is what I thought as I woke up for the second day in a row before 2.30am due to my jet lag here in San Francisco. So I decided to use this marvellously quiet time to write my first blog article about my experience here at Oracle Open World 2016.

Sunday was good to warm up our engines. We completed the event registration. I am saying we because as I was very lucky to come here with two of my colleagues (César García Galán and Carmen Larrumbide) plus Daniel Plaza from Consum.


Unfortunately I missed Sasank Vemana's session on Sunday morning on hacks for PeopleSoft Development. I read on Twitter that it was a great session. On Monday I had the opportunity to meet Sasank personally and it is easy to see he has a lot of knowledge share (you can check his blog for some samples).

Then I attended a very interesting session on PeopleSoft HCM Networking [SIG7845] conducted by Christina Yue from the Quest International User Group. I found this session very valuable, mainly because of customers' willingness to share their experiences and challenges with PeopleSoft HCM.

Next on the menu was the welcome keynote featuring Larry Ellison among others. There is no much point in me describing the contents as you can access the recorded keynote here. Attending his keynotes is always an interesting experiences. Two things surprised me in this case:

  • The number of times he mentioned Workday as a way to compare Oracle Cloud Application growth against theirs. I have attended the same opening keynote two years ago, and it is surprising how much the time dedicated to hit Workday increased. I guess this is the ultimate recognition of the strength of the competition between them, which I think it is good for the industry.
  • The focus on making Oracle a leading provider of Infrastructure as a Service, directly competing with Amazon Web Services. This will be a tough one for Oracle from my point of view, but one thing you cannot deny about Larry is that he is never shy on the challenges he picks.
Monday was more intense from a PeopleSoft point of view. I have attended a couple of general sessions in which you could sense that on premise applications like PeopleSoft are totally secondary in Oracle applications strategy. Still, I have to say that the PeopleSoft team at Oracle did a great job putting up a great sessions agenda for this event. So kudos for Marc Weintraub and the rest of the PeopleSoft team at Oracle.

There is no better event guide for Oracle Open World as a PeopleSoft professional than the session held by Marc Weintraub and Greg Parikh: PeopleSoft Talk Live! Your Event Guid [CON7031]. This gave a quick overlook of what are going to be the hot topics regarding PeopleSoft in this event, of which I have noted:
  • Elastic Search
  • Cloud Manager
  • Fluid interface
  • Selective adoption
Also some interesting announcements were made. I've particularly found interesting the launch of Spotlight Series videos giving in-depth reviews of certain topics. You can find them in PeopleSoft Information Portal. Another very interesting announcement is that sample PeopleSoft Test Framework scripts will be delivered with PeopleSoft images from now on. You can check this in My Oracle Support.

Just a bit later, I attended the great Graham Smith session on PeopleSoft Cloud Architecture and its Practical Applications and Use Cases [CON3672]. I have always been a fan of Graham's PeopleSoft blog, so being able to attend one of his sessions was a great experience. There are more of his sessions to come, so this is just the beginning!

My day ended with our own session about how we improved User Experience through the use of PeopleSoft Fluid [CON2405]. This was my first experience presenting at Oracle Open World and it certainly was a great one. I would like to thank Consum and Daniel Plaza for giving us the opportunity of sharing the lessons learned in our Fluid project with them in this session.


The only thing I regret about speaking at Oracle Open World is that our session was at the same time Jim Marion's one: Getting the Most of PeopleSoft: PeopleSoft PeopleTools Tips and Techniques [CON7070]. I guess it was a great one as usual. I can't wait until his presentation is released in the conference site!

This is all for today. Stay tuned for other updates. I would prefer sleeping a bit more, but acceptance is the way to happiness.






Thursday, September 1, 2016

See you at Oracle Open World!

This year I will be attending again Oracle Open World, as I did in 2014. I'm really looking forward learning what is new in PeopleSoft and networking with lots of interesting people from around the globe.




However, this year will be special for me as we will be presenting one of the sessions. The presentation will be delivered by César García Galán, a fellow consultant at BNB, Daniel Plaza Pardo, PeopleSoft HCM key user at Consum Cooperativa, one of the leading retailers in Spain, and me.

The session will be about how Consum is investing on Fluid user interface in order to improve the user experience. It will take place on Monday 19th September at 4.15pm. If you are attending Oracle Open World and interested in taking part of the sessions, please register on session CON2405. I hope you can make it!

Wednesday, May 25, 2016

Changing the page title in Fluid at run-time

One of our customers asked us to implement nested landing pages, in which some tiles would open a second landing page and eventually a third one and so on. Let me illustrate the use case with some screenshots (I apologise as they are in Spanish, but it should be useful anyway). This would be how the main landing page would look like:


By clicking the "Formación y Desarrollo" tile, a new landing page will be displayed:


And eventually, you can click a tile in this landing page which opens a third one. Let's pick "Formación Acceso al Puesto" for instance:


Unfortunately, the customer could not take advantage of the Master - Detail Framework as they are on PeopleTools 8.54 and this functionality is only available in release 8.55 (which is more complex to upgrade to as Crystal Reports are no longer supported).

So, we decided to build a custom component for our nested landing pages. The component would be called again and again with different URL parameters, in such a way the history could be maintained and the user could go to the previous step instead of going back all the way through the top landing page.

As we were reusing the same component, we needed to adjust the page title in PeopleCode. There involved not only updating the page title itself, but also making sure the back button showed the title of the previous page.


Changing the Navigation Bar Title

By default, the title is set to the component label in the menu. Luckily, there is a good number of examples in the standard functionality on which the title is set at run time, so this one was not particularly difficult to implement. The code that makes the trick is the following:

PTLAYOUT.PAGETITLE_GROUPBOX.Label = &title;

This code needs to be placed in the page activate event. If placed anywhere else, the standard PT_HEADERPAGE Activate code will override the title back to the default one.

Another option is to create a custom header page and add it to the component, but at least from the back button functionality point of view, it did not seem an easy solution.

Changing the Back Button Title

This one was trickier. PeopleSoft maintains a navigation history stack in Javascript which is populated with the default page title at load time using the following Javascript call:

AddToHistory('Cns Navgrppage', '', '', 'CNS_NAVGRPPAGE', 1, 27);

So, in order to keep the right page title in the navigation stack, we needed to update it. Fortunately, there is another Javascript function provided by PeopleSoft called UpdateHistory. The PeopleCode function AddOnLoadScript is particularly helpful when trying to run Javascript functions after the page is loaded. This is the way we implemented the call also in the page activate PeopleCode event:

AddOnLoadScript("UpdateHistory('" | &title | "', undefined, undefined, undefined, 1);");









Monday, April 18, 2016

Installing Update Images in Amazon Web Services

The last PeopleSoft Update Manager (PUM) images have been delivered in two formats: the traditional VirtualBox image and a newly introduced format: NativeOS.



NativeOS takes advantage of PeopleTools 8.55 Deployment Packages (DPK), which is the cornerstone for the PeopleSoft Cloud Architecture. This new cloud architecture facilitates the deployment of PeopleSoft applications in the cloud, not only covering Oracle Public Cloud but also other providers such as Amazon Web Services (AWS), Google Cloud and Microsoft Azure.

Creating the AWS Instance

At BNB we have been using Amazon Web Services for a while, so it was our natural choice for installing the PeopleSoft HCM Update Image #17. We have done so in a Windows 2012 server using the m4.large instance type, which allocates 2 vCPUs and 8 Gb of RAM. In terms of disk, we have allocated 200 Gb in order to have the needed space for the image download and installation.

Once the instance was created, we downloaded the NativeOS update image from My Oracle Support. Once of the good advantages of NativeOS deployments is that the size of the download is less than the traditional VirtualBox one. Still, the size is considerable, but the network throughput in AWS instances is quite good.

Before proceeding with the installation, you need to edit the c:\windows\system32\drivers\etc\hosts file in order to include the internal server name in it:

127.0.0.1 <server name>.<zone>.compute.internal

The full server name can normally be found in the desktop top right corner.

Once this is done, we are ready to proceed with the DPK installation. For further information on this, I suggest you check My Oracle Support.

Allowing External Access

If you would like to access the PeopleSoft Update Image without connecting with remote desktop to the server, you will need to take some additional steps.

Firstly, you will need to edit the security group linked to your AWS instance so you allow incoming TCP connection at the 8000 port, which is the port used by the PeopleSoft Update Image web server by default.

On top of this, you will need to change the firewall setting in the Windows server itself. This is done within the Windows Firewall with Advance Security application, on which you need to define an inbound rule also allowing 8000 port TCP connections:


Finally, if you want to use the same IP address every time you use the AWS instance, you will need to define an Elastic IP and associate it with the server. This fixed IP address has an additional cost, but if you are planning to distribute the URL to access the PeopleSoft application to other people who does not have access to the AWS Console in order to check the current IP address, it may be the only way to go.


Thursday, October 15, 2015

Scaling FLUID pages for iPhone 6

We are currently developing FLUID pages for a customer on PeopleSoft HCM 9.1. As they cannot benefit from the standard functionality delivered through Update Manager until they upgrade to PeopleSoft HCM 9.2, they have decided to provisionally implement FLUID through customisations.

When doing this, we have identified an issue in iPhone 6 by which the FLUID pages were not correctly scaling:



As you see, the text is barely readable. After some research, we have identified that standard pages deal with this scaling issue by using the following PeopleCode (normally in the component PostBuild event):

Declare Function GetDefaultViewportSetting PeopleCode PTLAYOUT.FUNCLIB FieldFormula;
Declare Function SetViewport PeopleCode PTLAYOUT.FUNCLIB FieldFormula;

Local string &Viewport;
Local number &Pos;

&Viewport = GetDefaultViewportSetting();

If %Request.BrowserDeviceFormFactor = 0 And
      %Request.BrowserPlatformClass = "ios" Then
   &Pos = Find("minimal-ui", &Viewport);
   If &Pos = 0 Then
      &Viewport = &Viewport | ", minimal-ui";
   End-If;
End-If;

SetViewport(&Viewport);
AddMetaTag("format-detection", "telephone=no");

The page now displays in a much better format:




Friday, August 21, 2015

Formatting Rich Text Comments in BI Publisher

In the last years, BI Publisher has become the go to tool to cover most reporting needs in PeopleSoft, replacing other technologies such as Crystal Reports and SQR in many scenarios.



The basic concept behind many reporting tools is separating data and presentation logic, so report designers can work in parallel with developers who know the data model in detail. BI Publisher is the PeopleSoft reporting tool that achieves this separation in a more thorough way. It does so by using XML as the information exchange format between the data generation and the report generator. Practically all systems have a way to export data in XML nowadays, and PeopleSoft is not the exception, with options ranging from Connected Queries, File Layouts to PeopleCode managed XMLDocs. From my point of view, this is major advantage over other technologies like Crystal Reports, which in its PeopleSoft version could only extract data from PeopleSoft queries (if you needed to extract somehow complex information, you would need to create an extraction program).

Other advantages of BI Publisher are the bursting capabilities (separating report output based on certain data fields) and the possibility to generate online reports without using Process Scheduler.

Formatting Rich Text Fields

I have to admit that I'm far from being a reporting expert, but in one of my latest projects I came accross the need to develop several of them. One of these reports needed to display comments previously entered by users in rich text format. BI Publisher provides a function to do so:
<?html2fo:elementname?>
However, this function has a problem I was not able to solve (I admit there could be other solutions but I could not find anything as part of my research in a few forums): if you are building a report with certain style guidelines, the rich text would always be rendered using Arial 12pt as the base font. This resulted in a very funny looking report, with large fonts coexisting with smaller ones. Of course, there was the option to also use Arial 12pt as the report base font, but users are not always ready to change their aesthetic requirements.

In the end, we found out that the html2fo function would render the rich text using the inline style of HTML elements. PeopleSoft normally does not set a font-family nor font-weight (please check the note at the end of the document), so BI Publisher automatically applies the default style, which is Arial 12pt. However if you set the style be yourself, BI Publisher would accept it.

The following code shows an extract of how we set this style:

Function FormatRichTextForBIP(&text As string, &fontSize As string) Returns string;
   Local string &result;
   
   If All(&fontSize) Then
      &result = "<div style='font-family: verdana;font-size: " | &fontSize | ";'>" | &text | "</div>";
   Else
      &result = "<div style='font-family: verdana;'>" | &text | "</div>";
   End-If;
   
   Return &result;
End-Function;


(...)
&reportingRec.COMMENTS.Value = FormatRichTextField(&inputRec.COMMENTS.Value, "12pt");
(...)

Note: This approach would not work if within the rich text the user has included different font sizes. This basic approach works when no font-family or font-weights are applied within the stored rich text HTML. In any case, this is a solvable issue, although it may require some more work. What you need to do is parse the rich text and replace the desired style clauses.

Tuesday, June 23, 2015

Creating Custom Listening Connectors using Integration Broker SDK

One of my customers recently had the need of allowing a third party web application to attach files into PeopleSoft. After trying a number of different approaches (the integration had to be done at the web application client level, which significantly reduces the options to manipulate the request to PeopleSoft before sending it, particularly when dealing with old web browsers), I gave up and came to the conclusion that I needed a custom listening connector in Integration Broker to implement such integration. 



The process of developing and installing a custom listening connector in Integration Broker is quite well described in PeopleBooks, however, I thought it would helpful to document the process I have followed.

Samples


PeopleSoft comes with some samples of connectors developed using the Integration Broker SDK. The most interesting one for listening connectors is ExampleServletListeningConnector.java located in the following folder:

$PIA_HOME/webserv/IFHRDEV/applications/peoplesoft/PSIGW.war/WEB-INF/SDK/src/samplelisteningconnectors.java

I've used this sample as the basis for my custom connector. In some cases, I also found quite handy to decompile the standard connectors such HttpListeningConnector. I could not find any exhaustive source of documentation of the Integration Broker SDK, so decompiling the existing connectors proved to be a good way to understand how to best use the SDK.

Note: For decompiling the Java class files I have used a very simple tool names cavaj. It is a very simple tool, but still helpful.

Development

Taking the previously mentioned sample as the basis, I have coded my own connector. If you are not interested in the details, you may want to skip to the next section.

What I needed to do in my connector was basically two things:

  1. Encode the incoming file using Base64, as binary files could not be processed otherwise by the existing PeopleCode Message API.
  2. Pass any parameters received in the HTTP Header or the URL as part of the IBInfo (Integration Broker information included in every internal Integration Broker message.


If you want to check the actual code, you can download the source code from this link:



Compiling

Once your source code is ready, you need to compile it. The first step for Java compilation is to set the environment variables so they point to the Java SDK. In my case, I was using the PeopleSoft HCM 9.2 Update Image 11, and these were the commands I needed to use:

export JAVA_HOME=/opt/oracle/psft/pt/jdk1.7.0_71
export PATH=$PATH:$JAVA_HOME/bin

Then I went to the directory were my java file was placed and run the following command to compile the file:

javac -cp /home/psadm2/psft/pt/8.54/webserv/peoplesoft/applications/peoplesoft/PSIGW.war/WEB-INF/classes:/home/psadm2/psft/pt/8.54/webserv/peoplesoft/applications/peoplesoft/PSIGW.war/WEB-INF/lib/mail.jar:/opt/oracle/psft/pt/bea/wlserver/server/lib/weblogic.jar FileUploadListeningConnector.java 

The paths may obviously differ in your case, but the important thing is to include the following directories/jar files in your class path:

  • $PIA_HOME/webserv/peoplesoft/applications/peoplesoft/PSIGW.war/WEB-INF/classes
  • mail.jar
  • weblogic.jar

Please note that weblogic.jar was needed because I was using WebLogic as my web server. In case you use WebSphere, you need to change this jar file.

Deployment

Once the file is compiled, you need to copy the resulting class file to the following directory:

$PIA_HOME/webserv/IFHRDEV/applications/peoplesoft/PSIGW.war/WEB-INF/classes/com/peoplesoft/pt/integrationgateway/listeningconnector

The next step is to let WebLogic know that there is a new servlet available. This can be done by editing the following file:

$PIA_HOME/webserv/IFHRDEV/applications/peoplesoft/PSIGW.war/WEB-INF/web.xml

All you need to do is to duplicate the sections referring to ExampleServletListeningConnector and replace those appearances with your connector name. In my case, I was using PeopleTools 8.54, and these were the lines I had to include:

(...)
<servlet>
<servlet-name>ExampleServletListeningConnector</servlet-name>
<servlet-class>com.peoplesoft.pt.integrationgateway.listeningconnector.ExampleServletListeningConnector</servlet-class>
</servlet>
<servlet>
<servlet-name>FileUploadListeningConnector</servlet-name>
<servlet-class>com.peoplesoft.pt.integrationgateway.listeningconnector.FileUploadListeningConnector</servlet-class>
</servlet>
(...)
<servlet-mapping>
<servlet-name>ExampleServletListeningConnector</servlet-name>
<url-pattern>/ExampleServletListeningConnector/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FileUploadListeningConnector</servlet-name>
<url-pattern>/FileUploadListeningConnector/*</url-pattern>
</servlet-mapping>
(...)

Testing

In order to test the new connector, you need to reboot the web server so the changes made to register the new servlet are taken. Once this is done, you can check if the new listening connector is responding by using the declared URL:

http://webserver/PSIGW/FileUploadListeningConnector


Monday, March 30, 2015

A command-line alternative to PeopleSoft SendMaster

If you are familiar with PeopleSoft Integration Broker, I'm sure you have dealt with SendMaster to some degree. This is a very simple but yet useful tool to perform unit tests of the Integration Broker incoming service operations using plain XML (if I'm dealing with SOAP Web Services, I normally use SoapUI, for which there is a very good article on PeopleSoft Wiki).

Most of the time it's enough with SendMaster, but today I came through a problem that required an alternative. While testing an XML message with this tool against an HTTPS PeopleSoft installation, I got the following error message:

Error communicating with server: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

After checking in My Oracle Support, I've found the following resolution (doc 1634045.1):

The following steps will resolve the error:

1) Import the appropriate SSL certificate to the java kestore PS_HOME\jre\lib\security\cacerts or Integration Broker's keystore location i.e pskey file
2) Set sendmaster's preferences  ( via File-Preferences-HTTP tab )  to point to the keystore with the appropriate SSL certificate
3) Test

Unfortunately, I didn't have access to the appropriate SSL certificate, so I've decided to use curl, a pretty old (dating back to 1997 according to all knowing wikipedia) but still useful command line tool.



curl is a command line tool that can be used to test HTTP and HTTPS operations, including GET, PUT, POST and so on. One of the features of this tool is that it can run in "insecure" mode, eliminating the need of a client certificate to test URLs on HTTPS. Both in Linux and Mac OS, the option to run in insecure mode is -k. The command line to test my service operation then looked like:

curl -X POST -d @test.xml -k https://<server>/PSIGW/HttpListeningConnector 

Please note that the @ option actually requests curl to take the data from the file following it. Instead of doing so, you can specify the data in the command line, but it is a bit more cumbersome.

Also, keep in mind that curl is not delivered with Windows out of the box, but you can download similar tools from several sources (for instance, this one).







Monday, March 23, 2015

Manually applying Global Payroll Rules Packages downloaded from an Update Image

Last week we've faced an issue while applying a Tax Update in one of our PeopleSoft HCM 9.2 customers. The Tax Update was delivered as a PeopleSoft Release Patchset, that needs to be first applied to the Update Image before creating the Change Package using PeopleSoft Update Manager.

Unfortunately, during the process, one rules package delivered in the Tax Update was not included within the Change Assistant steps, and therefore it was missed. Some days after, we reported the error to Oracle and they pointed out to the original zip file containing the PeopleSoft Release Patchset, which indeed contained the missing package.

We did not want to repeat the entire Change Package definition steps, as it would have required to restore a couple of backups. Instead, we decided to manually apply the rules package.

Not so fast...

Unfortunately, within Update Manager the Rules Packages are not delivered in the usual format used to import, compare and copy them. Instead, specific steps are followed when Update Manager is used.

In the end, we managed to find a way to manually import the package, which is documented below.

Importing the Rules Package

The rules packages in Update Manager are delivered using the Data Migration Workbench. The process to import them starts by defining the directories from which the Data Migration projects should be picked:

PeopleTools > Lifecycle Tools > Migrate Data > Manage File Locations

The path should point to the PTADSAEPRCS directory within the patch (whose zip file needs to be extracted before). Once the path is defined, the Data Migration project can be copied using the Data Migration Workbench:

PeopleTools > Lifecycle Tools > Migrate Data > Data Migration Workbench

The project should now be uploaded using the Load Project From File link. A list of the projects found the previously defined path will be shown:



Once the project is selected and the Load button pressed, the Project Definition page within the Workbench will be shown:


Applying the Data Migration project is quite simple. In first place, the project needs to be compared using the Compare button and once the comparison has finished, the project has to be submitted for copy (using the Submit for Copy button). 

Note: Data Migration project submissions may need approval. In such case, make sure the request is approved, so the project is actually copied.

The best way to validate whether the project has been correctly copied or not is to check the contents of the PS_GP_PKG_ADS_DFN table, which should now contain the imported rules package.

Rules Package Merge

Once the rules package has been imported, it needs to be merged. The merge process actually takes all the imported rules package and builds a single rule package to simplify its application. Unfortunately, the process is not available from the user interface, but it can still be run using the command line:

<PS_HOME>\psae.exe -CT <database type> -CD <database name> -CO <PeopleSoft user> -CP <PS user password> -R ESP -AI GP_PKG_ADSMR -I 0 -OT 2 -OF 13 -OP <output directory> -CI <connect id> -CW <connect password>

Once the rules package is merged, an usual Rules Package will be accessible within the Global Payroll Packages functionality. From there on, the package can be applied using the steps we were used to.