Javier Delgado

Subscribe to Javier Delgado feed
Comments, tips & tricks on PeopleSoft products and technology.
Updated: 17 hours 43 min ago

Enabling Fluid for Firefox on Linux for PeopleTools 8.54 and 8.55

Mon, 2017-11-20 08:09
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.

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

Thu, 2016-09-22 18:33
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 AnalyticsMy 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 ExpertsThe 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 DiscussionJust 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 UpThis 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.



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

Thu, 2016-09-22 08:26
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 InterfaceI 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 DayToday 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.




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

Wed, 2016-09-21 10:10
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 AdoptionOracle 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 CloudLast 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!


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

Tue, 2016-09-20 06:36
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.






See you at Oracle Open World!

Thu, 2016-09-01 06:08
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!

Changing the page title in Fluid at run-time

Wed, 2016-05-25 07:26
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);");









PeopleSoft Update Image as a Service - Proof of Concept

Mon, 2016-04-18 02:24
Together with PeopleSoft 9.2, Oracle announced the new Continuous Delivery model for delivering patches, based on PeopleSoft Update Manager. The new model allows customers to choose which fixes or enhancements they are interested in, and then just extract the objects related to them and their prerequisites.

The following diagram outlines the process of applying an update using this new delivery model:



In order to apply a change in your Development environment, you would to follow these steps:


  1. Download the latest Update Image from My Oracle Support. The latest images have a size of around 35 Gb for PeopleSoft HCM and for FSCM.
  2. Run a script to unzip the downloaded files and combine them into a single virtual appliance file (.ova).
  3. Import the .ova file into Virtual Box in order to create the virtual machine.
  4. Start the virtual machine and follow the installation steps so it can be used.
  5. Using PeopleSoft Change Assistant, upload your environment information into PeopleSoft Update Manager.
  6. Connect to the virtual machine environment in order to choose which patches or enhancements are going to be applied. The selected patches conform an Change Package.
  7. Run the source steps in the Change Package against the Update Image.
  8. Run the target steps included in the Change Package against the target environment.


Many customers find that the first 4 steps in the process take too much time, particularly when the intention is to apply a single regulatory update or enhancement. In the past, the customer would just download the patch and its prerequisites (which in many cases, for regulatory patches, were already applied) and starts the updating process. The new process requires to invest at least a day in downloading, uncompressing and installing the virtual machine.

On top of the time issues, the virtual machine can only run in a physical box with certain prerequisites. In these times when many organizations have moved to virtualization, it is not always easy to allocate the needed hardware to host the virtual machines.

BNB has conducted a successful Proof of Concept for one of our customers to install the latest Update Image on an Amazon EC2 server and use it to apply the latest patches.

Initially, we had some concerns about if this idea could work with a good performance. After our first real run, we can conclude that the performance is more than acceptable. The new Change Assistant in PeopleTools 8.54 is helping a lot, as it allows to run source and target steps separately. In this way, the source steps can be run in a Windows Amazon EC2 server sitting close to the Update Image, with the obvious performance gains. Still there will be some connectivity needed between your site and the Amazon EC2 servers, mainly to:

  • Upload target environment information from your server into the Update Image.
  • Download the Oracle Database and PeopleTools clients.
  • Download the Change Package once the source steps are finished.

We also faced some challenges in converting the Virtual Box delivered virtual machine into an Amazon EC2 hosted machine. We could eventually solve them and now we have created an AMI to quickly deploy new instances for other PeopleSoft customers. We have also tested the conversion steps multiple times, so we should now be able to have the AMI available just one day after the Update Image is made available by Oracle.

Note: Since the introduction of PeopleSoft 8.55 and DPK, it has become considerably easier to deploy Update Images in cloud infrastructure. Please check this blog post for more information on this.

Installing Update Images in Amazon Web Services

Mon, 2016-04-18 02:22
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 InstanceAt 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 AccessIf 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.


Scaling FLUID pages for iPhone 6

Thu, 2015-10-15 03:06
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:




Formatting Rich Text Comments in BI Publisher

Fri, 2015-08-21 14:27
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 FieldsI 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.

Advantages of using REST-based Integrations in PeopleSoft

Thu, 2015-07-30 09:49
REST-based services support were introduced in PeopleTools 8.52, although you may also build your own REST services using IScripts in previous releases (*). With PeopleTools 8.52, Integration Broker includes support for REST services, enabling PeopleSoft to act as both a consumer and a provider.

What is REST?
There is plenty of documentation in the Web about REST, its characteristics and benefits. I personally find the tutorial published by Dr. Elkstein (http://rest.elkstein.org) particularly illustrating.

In a nutshell, REST can be seen as a lightweight alternative to other traditional Web Services mechanisms such as RPC or SOAP. A REST integration has considerably less overhead than the two previously mentioned methods, and as a result is more efficient for many types of integrations.

Today, REST is the dominating standard for mobile applications (many of which use REST integrations to interact with the backend) and Rich Internet Applications using AJAX.

PeopleSoft Support
As I mentioned before, PeopleSoft support was included in PeopleTools 8.52. This included the possibility to use the Provide Web Service Wizard for REST services on top of the already supported SOAP services. Also, the Send Master and Handler Tester utilities were updated so they could be used with REST.

PeopleTools 8.53 delivered support for one of the most interesting features of REST GET integrations: caching. Using this feature, PeopleSoft can, as a service provider, indicate that the response should be cached (using the SetRESTCache method of the Message object). In this way, the next time a consumer asks for the service, the response will be retrieved from the cache instead of executing the service again. This is particularly useful when the returned information does not change very often (ie.: list of countries, languages, etc.), and can lead to performance gains over a similar SOAP integration.

PeopleTools 8.54 brought, as in many other areas, significant improvements to the PeopleSoft support. In first place, the security of inbound services (in which PeopleSoft acts as the provider) was enhanced to require that the services are consumed using SSL, basic HTTP authentication, and basic HTTP authentication and SSL, or none of these.

On top of that, Query Access Services (QAS) were also made accessible through REST, so the creation of new provider services can be as easy as creating a new query and exposing it to REST.

Finally, the new Mobile Application Platform (an alternative way to FLUID to mobilise PeopleSoft contents) also uses REST as a cornerstone.

Conclusions
Although REST support is relatively new compared to SOAP web services, it has been supported by PeopleSoft for a while now. Its efficiency and performance (remember GET services caching) makes it an ideal choice for multiple integration scenarios. I'm currently building a mobile platform that interacts with PeopleSoft using REST services. This is keeping me busy and you may have noticed that I'm not posting so regularly in this blog, but hopefully in some time from now I will be able to share with you some learned lessons from a large scale REST implementation.


(*) Although it's possible to build REST services using IScripts, the Integration Broker solution introduced in PeopleTools 8.52 is considerably easier to implement and maintain. So, if you are in PeopleTools 8.52 release or higher, Integration Broker would be the preferred approach. If you are in an earlier release, actually a PeopleTools upgrade would the preferred approach, but I understand there might be other constraints. :)

Creating Custom Listening Connectors using Integration Broker SDK

Tue, 2015-06-23 03:48
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


PeopleSoft's paths to the Cloud - Part III

Mon, 2015-04-20 07:49
In my previous posts on this series, I have covered how cloud computing could be used to reduce costs and maximize the flexibility of PeopleSoft Development and Production environments. In both cases, I focused on one specific area of cloud computing, Infrastructure as a Service (IaaS).

Today I will explain what kind of benefits can be expected by using another important area: Database as a Service (DBaaS). Instead of using an IaaS provisioned server to install and maintain your database, DBaaS providers take responsibility for installing and maintaining the database.

There are many players in this market, including Amazon, Microsoft and Oracle. The service features may differ, but in a nutshell, they normally offer these capabilities:

  • Backups: the database backups are automated, and you can decide to restore point-in-time backups at any moment. You can also decide when to take a snapshot of your database, which may be eventually be used to create another database instance (for example, to copy your Production database into the User Acceptance environment).
  • High Availability: while some IaaS provider do not support high-availability database solutions such as Oracle RAC (for instance, it is not supported by Amazon EC2), many DBaaS providers include high availability by default.
  • Contingency: some providers maintain a standby copy of your database in another data center. This allows you to quickly restore your system in the case the original data center's services are lost.
  • Patching: although you can decide when to apply a database patch, the DBaaS will do that for you. In many case, you can turn on automatic patching, in order to make sure your database engine is always up to date.
  • Monitoring: providers give the system administrators access to a management console, in which they can monitor the database behavior and add or remove resources as needed.
  • Notifications: in order to simplify the monitoring effort, you normally have the possibility of setting up notifications to be received by email and/or SMS upon a list of events, which may include CPU usage, storage availability, etc.

Under my point of view, these services offer significant advantages for PeopleSoft customers, particularly if your current architecture does not support all the previously mentioned services or you do not have the right DBA skills in-house. Even if your organization does not fall in these categories, the scalability and elasticity of DBaaS providers is very difficult to match by most internal IT organizations.

In any case, if you are interested in using Database as a Service for your PeopleSoft installation, make sure you correctly evaluate what each provider can give you.



Debugging PeopleSoft Absence Management Forecast

Mon, 2015-04-20 07:47
Forecasting is one of the most useful PeopleSoft Absence Management functionalities. It allows users to know which is going to be the resulting balance when entering an absence. The alternative is to wait until the Global Payroll calendar group is calculated, which naturally is far from being an online calculation.

Although this is a handy functionality, the calculation process does not always return the expected results. For some specific needs, the system element FCST ASOF DT, FCST BGN DT and FCST END DT may be needed. These elements are null for normal Global Payroll runs, so the formulas may behave differently in these runs than in the actual forecast execution. If you ever hit a calculation issue in the forecast process that cannot be solved by looking at the element definitions, you may be stuck.

When this type of issues are found in a normal Global Payroll execution, one handy functionality is to enable the Debug information and then review the Element Resolution Chain page. This page shows the step by step calculation of each element and it is particularly helpful in identifying how an element is calculated.

Unfortunately, this information is not available in the standard forecast functionality. Luckily, it can be enabled using a tiny customisation.

In PeopleSoft HCM 9.1, the forecast functionality is executed from two different places:

DERIVED_GP.FCST_PB.FieldFormula - Abs_ForecastSetup function
FUNCLIB_GP_ABS.FCST_PB.FieldFormula - Abs_ForecastExec function

In both PeopleCode events, you will find a sentence like this one:

SQLExec("INSERT INTO PS_GP_RUNCTL(OPRID, RUN_CNTL_ID, CAL_RUN_ID, TXN_ID, STRM_NUM, GROUP_LIST_ID, RUN_IDNT_IND, RUN_UNFREEZE_IND, RUN_CALC_IND, RUN_RECALC_ALL_IND, RUN_FREEZE_IND, SUSP_ACTIVE_IND, STOP_BULK_IND, RUN_FINAL_IND, RUN_CANCEL_IND, RUN_SUSPEND_IND, RUN_TRACE_OPTN, RUN_PHASE_OPTN, RUN_PHASE_STEP, IDNT_PGM_OPTN, NEXT_PGM, NEXT_STEP, NEXT_NUM, CANCEL_PGM_OPTN, NEXT_EMPLID, UPDATE_STATS_IND, LANGUAGE_CD, EXIT_POINT, SEQ_NUM5, UE_CHKPT_CH1, UE_CHKPT_CH2, UE_CHKPT_CH3, UE_CHKPT_DT1, UE_CHKPT_DT2, UE_CHKPT_DT3, UE_CHKPT_NUM1, UE_CHKPT_NUM2, UE_CHKPT_NUM3,PRC_NUM,OFF_CYCLE) values (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21,:22,:23,:24,:25,:26,:27,:28,:29,:30,:31,:32,%datein(:33),%datein(:34),%datein(:35),:36,:37,:38,:39,:40)", &OprID, &RunCntl_ID, &CalcRunId, &TxnID, 0, &SpaceFiller, "Y", "N", "Y", "N", "N", "N", &ApprByInd, "N", "N", "N", "N", &RunPhaseOptN, &RunPhaseStep, &SpaceFiller, &SpaceFiller, 0, 0, &SpaceFiller, &SpaceFiller, "N", "ENG", &SpaceFiller, 0, &SpaceFiller, &SpaceFiller, &SpaceFiller, "", "", "", 0, 0, 0, 0, "N");

You will notice that the RUN_TRACE_OPTN field is set to "N". If you use "A" instead as the trace option value, you will obtain the Element Resolution Chain:

SQLExec("INSERT INTO PS_GP_RUNCTL(OPRID, RUN_CNTL_ID, CAL_RUN_ID, TXN_ID, STRM_NUM, GROUP_LIST_ID, RUN_IDNT_IND, RUN_UNFREEZE_IND, RUN_CALC_IND, RUN_RECALC_ALL_IND, RUN_FREEZE_IND, SUSP_ACTIVE_IND, STOP_BULK_IND, RUN_FINAL_IND, RUN_CANCEL_IND, RUN_SUSPEND_IND, RUN_TRACE_OPTN, RUN_PHASE_OPTN, RUN_PHASE_STEP, IDNT_PGM_OPTN, NEXT_PGM, NEXT_STEP, NEXT_NUM, CANCEL_PGM_OPTN, NEXT_EMPLID, UPDATE_STATS_IND, LANGUAGE_CD, EXIT_POINT, SEQ_NUM5, UE_CHKPT_CH1, UE_CHKPT_CH2, UE_CHKPT_CH3, UE_CHKPT_DT1, UE_CHKPT_DT2, UE_CHKPT_DT3, UE_CHKPT_NUM1, UE_CHKPT_NUM2, UE_CHKPT_NUM3,PRC_NUM,OFF_CYCLE) values (:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21,:22,:23,:24,:25,:26,:27,:28,:29,:30,:31,:32,%datein(:33),%datein(:34),%datein(:35),:36,:37,:38,:39,:40)", &OprID, &RunCntl_ID, &CalcRunId, &TxnID, 0, &SpaceFiller, "Y", "N", "Y", "N", "N", "N", &ApprByInd, "N", "N", "N", "A", &RunPhaseOptN, &RunPhaseStep, &SpaceFiller, &SpaceFiller, 0, 0, &SpaceFiller, &SpaceFiller, "N", "ENG", &SpaceFiller, 0, &SpaceFiller, &SpaceFiller, &SpaceFiller, "", "", "", 0, 0, 0, 0, "N");

By performing this change, you will notice that GP_AUDIT_TBL table starts to be populated with the Element Resolution Chain information. However, it may still not be visible from the page itself, because some tables are only populated temporarily in the forecast execution. In order to enable the access for the forecast runs, you will need to customise the GP_AUDIT_SEG_VW search record by adding the lines in italics to the SQL definition:

SELECT DISTINCT A.CAL_RUN_ID 
 , A.EMPLID 
 , A.EMPL_RCD 
 , A.GP_PAYGROUP 
 , A.CAL_ID 
 , A.ORIG_CAL_RUN_ID 
 , B.RSLT_SEG_NUM 
 , A.FICT_CAL_ID 
 , A.FICT_CAL_RUN_ID 
 , A.FICT_RSLT_SEG_NUM 
 , B.RSLT_VER_NUM 
 , B.RSLT_REV_NUM 
 , B.SEG_BGN_DT 
 , B.SEG_END_DT 
  FROM PS_GP_AUDIT_TBL A 
  , PS_GP_PYE_SEG_STAT B 
 WHERE A.CAL_RUN_ID = B.CAL_RUN_ID 
   AND A.EMPLID = B.EMPLID 
   AND A.EMPL_RCD = B.EMPL_RCD 
   AND A.GP_PAYGROUP = B.GP_PAYGROUP 
   AND A.CAL_ID = B.CAL_ID 
  UNION ALL 
 SELECT DISTINCT A.CAL_RUN_ID 
 , A.EMPLID 
 , A.EMPL_RCD 
 , A.GP_PAYGROUP 
 , A.CAL_ID 
 , A.ORIG_CAL_RUN_ID 
 , A.RSLT_SEG_NUM 
 , A.FICT_CAL_ID 
 , A.FICT_CAL_RUN_ID 
 , A.FICT_RSLT_SEG_NUM 
 , 1 
 , 1 
 , NULL 
 , NULL 
  FROM PS_GP_AUDIT_TBL A 
 WHERE NOT EXISTS ( 
 SELECT 'X' 
  FROM PS_GP_PYE_SEG_STAT B 
 WHERE A.CAL_RUN_ID = B.CAL_RUN_ID 
   AND A.EMPLID = B.EMPLID 
   AND A.EMPL_RCD = B.EMPL_RCD 
   AND A.GP_PAYGROUP = B.GP_PAYGROUP 
   AND A.CAL_ID = B.CAL_ID)

I hope you find this useful. Should you have any question or doubt, I will be happy to assist.

Note: Keep in mind that it is not a good idea to leave the Debug information enabled for Production environments, at least permanently. The time needed to run a forecast calculation with this type of information is significantly higher than without it. So, if you do not want to hit performance issues, my recommendation is to store in a table a flag indicating if the Element Resolution Chain for forecast should be enabled or not.


A command-line alternative to PeopleSoft SendMaster

Mon, 2015-03-30 11:05
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).







Manually applying Global Payroll Rules Packages downloaded from an Update Image

Mon, 2015-03-23 09:47
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 PackageThe 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.

Installing Languages on PeopleSoft Update Images

Sat, 2015-03-21 03:52
One of great things about PeopleSoft Update Manager images is that they could be used as a Demo environment to try the latest and greatest features of the PeopleSoft application. All you need to do is to download the image and install it and you can already play with the application.

However, the initial install of the Update Image will only have the English language enabled. If you are using PeopleSoft Update Manager, once you upload the target environment and define the change package, the application will automatically install the languages you have in place in your own environment. However, if you just want to install the Update Image and you do not have a target environment to upload, this approach is not feasible.

Below I describe the steps to follow in order to install additional languages into an Update Image without having a target environment.


1.- Launch the Update Image.

2.- Install the client database connectivity tools by running the installer shipped in the oracle-12c-client-64bit shared folder.

3.- Connect to the database using SQL Developer and run the following command:

insert into PS_PTIASPTARGETLNG values ('ESPDEMO', '<language>');

4.- Install the PeopleTools client by running the installer located in the client-854 shared folder.

5.- Connect to the Update Image environment using Application Designer and open the PTIASPLANG_VW.PTIASPLANGCD.FieldFormula PeopleCode. Once in there, add the lines in bold.

(...)
Function AssembleDMoverCommand() Returns array of string
   Local array of string &arrRet = CreateArrayRept("", 0);
   
   Local string &srvName;
   Local string &userID;
   Local string &userPwd;
   Local string &dmsLogPath;
   Local string &dmsPath;
   Local string &psdmtxPath;
   Local string &mlDatPath;
   
   Local string &paramName;
   Local string &paramValue;
   REM prepare data mover parameters from database;
   Local SQL &sqlParam = GetSQL(SQL.PTIASPDMPARAM);
   While &sqlParam.Fetch(&paramName, &paramValue)
      Evaluate &paramName
      When "USERID"
         &userID = &paramValue;
         Break;
      When "USERPWD"
         &userPwd = &paramValue;
         Break;
      When "DMSPATH"
         &dmsPath = &paramValue;
         Break;
      When "PSDMTXPATH"
         &psdmtxPath = &paramValue;
         Break;
      When "SVRNAME"
         &srvName = &paramValue;
         Break;
      When "DMLOGPATH"
         &dmsLogPath = &paramValue;
         Break;
      When "MLDATPATH"
         &mlDatPath = &paramValue;
         Break;
      When-Other
         Break;
      End-Evaluate;
   End-While;
   &sqlParam.Close();
   
   Local string &cmdString;
   &cmdString = &psdmtxPath | " -CT " | %DbType;
   If All(&srvName) Then
      &cmdString = &cmdString | " -CS " | &srvName;
   End-If;
   /* BNB - J.Delgado - 08 Mar 2015 - BEGIN */
   Local string &tmp;
   &tmp = &userPwd;
   /* BNB - J.Delgado - 08 Mar 2015 - END */
   If All(&userPwd) Then
      &userPwd = Decrypt("mldmpswd", &userPwd);
   End-If;
   /* BNB - J.Delgado - 08 Mar 2015 - BEGIN */
   If None(&userPwd) Then
      &userPwd = &tmp;
   End-If;
   /* BNB - J.Delgado - 08 Mar 2015 - END */
   &cmdString = &cmdString | " -CD " | %DbName | " -CO " | &userID | " -CP " | &userPwd | " -FP " | &dmsPath;
   
   REM DMover executable file location, whole DMover command, DMS Log File, Dat file Path, DMS file Path are pushed into the array for following process;
   &arrRet.Push(&psdmtxPath, &cmdString, &dmsLogPath, &mlDatPath, &dmsPath);
   Return &arrRet;
End-Function;
(...)

Note: This change removes the requirement of a previous target environment upload. 

6.- Connect to the PeopleSoft application using PIA. Associate the PTIASPMLLOAD Application Engine process to the AE_REQUEST component.



7.- Run the PTIASPMLLOAD process using the Request AE page. The language to be installed should associated to the PTIASPMLLDAET.PTIASPPROPVAL field.


Once the process is run, make sure you reboot the web server and application server in order to use the Update Image in the newly installed language.


PeopleTools 8.54 Features: Dynamic Alert Sliding Windows

Thu, 2015-02-05 23:54
One of my first memories in the PeopleSoft world was from by training bootcamp when I joined PeopleSoft. The instructor was showing us the Process Monitor functionality in PeopleSoft 7.5, where the button used to refresh the list of scheduled processes was represented by fetching dog named Sparky shown to the right of this paragraph.

It actually surprised me that an application button had a name, but that was the PeopleSoft style. Anyway, the poor dog did not last too much. In year 2000, with the introduction of PeopleSoft 8, our beloved Sparky was replaced by a boring Refresh button.

PeopleTools 8.54 has pushed this functionality to the next generation, making it potentially redundant. One of the new features in this release is the ability to show the status of the process within the same page were it is scheduled. This is a major usability improvement, as the users do not need to navigate to Process Monitor to check the status of the process instance. True, in previous PeopleTools versions there was also the possibility of running the process with output to Window, which using REN Server would achieve a similar result. The main drawback of REN Server is that it opened a new page/tab even before the process was finished, making the navigation more complicated.

The new functionality is called Dynamic Alert Sliding Windows, which is still more boring than Sparky, but what matters is the functionality, not the name. These notifications are enabled in the Process Scheduler System Settings page:


In this page, the administrator chooses which Status are going to be displayed to the user when running a process. As you see, the functionality is quite easy to setup and a significant step forward in usability of batch process scheduling.

Note (Feb 6th 2015): There is a great blog post by Srinivas Reddy demonstrating this functionality from an user perspective. Here is the link: http://srinivasreddy18.blogspot.it/2015/02/peopletools-854-dynamic-alert-sliding.html




PeopleTools 8.54 Feature: Support for Oracle Database Materialized Views

Fri, 2014-12-19 17:04
One of the new features of PeopleTools 8.54 is the support of Oracle Database Materialized Views. In a nutshell, Materialized Views can be seen as a snapshot of a given view. When you query a Materialized View, the data is not necessarily accessed online, but instead it is retrieved from the latest snapshot. This can greatly contribute to improve query performance, particularly for complex SQLs or Pivot Grids.

Materialized Views Features
Apart from the performance benefits associated with them, one of the most interesting features of Materialized Views is how the data refresh is handled. Oracle Database supports two ways of refreshing data:


  • On Commit: data is refreshed whenever a commit takes place in any of the underlying tables. In a way, this method is equivalent to maintaining through triggers a staging table (the Materialized View) whenever the source table changes, but all this complexity is hidden from the developer. Unfortunately, this method is only available with join-based or single table aggregate views.

Although it has the benefit of almost retrieving online information, normally you would use the On Commit for views based on tables that do not change very often. As every time a commit is made, the information is refreshed in the Materialized View, the insert, update and delete performance on the source tables will be affected.Hint: You would normally use On Commit method for views based on Control tables, not Transactional tables.
  • On Demand: data is refreshed on demand. This option is valid for all types of views, and implies that the Materialized View data is only refreshed when requested by the administrator. PeopleTools 8.54 include a page named Materialized View Maintenance where the on demand refreshes can be configured to be run periodically.




In case you choose the On Demand method, the data refresh can actually be done following two different methods:


  • Fast, which just refreshed the rows in the Materialized View affected by the changes made to the source records.


  • Full, which fully recalculated the Materialized View contents. This method is preferable when large volume changes between refreshes are usually performed against the source records. Also, this option is required after certain types of updates on the source records (ie: INSERT statements using the APPEND hint). Finally, this method is required when one of the source records is also a Materialized View and has been refreshed using the Full method. 


How can we use them in PeopleTools?
Before PeopleTools 8.54, Materialized Views could be used as an Oracle Database feature, but the DBA would need to be responsible of editing the Application Designer build scripts to include the specific syntax for this kind of views. On top of that, the DBA would need to schedule the data refresh directly from the database.

PeopleTools 8.54 introduces support within PeopleSoft tools. In first place, Application Designer will now show new options for View records:



We have already seen what Refresh Mode and Refresh Method mean. The Build Options indicate to Application Designer whether the Materialized View date needs to be calculated upon its build is executed or if it could be delayed until the first refresh is requested from the Materialized View Maintenance page.

This page is used to determine when to refresh the Materialized Views. The refresh can be executed for multiple views at once and scheduled using the usual PeopleTools Process Scheduler recurrence features. Alternatively, the Refresh Interval [seconds] may be used to indicate the database that this view needs to be refreshed every n seconds.

Limitations
The main disadvantage of using Materialized Views is that they are specific to Oracle Database. They will not work if you are using any other platform, in which case the view acts like a normal view, which keeps a similar functional behaviour, but without all the performance advantages of Materialized Views.

Conclusions
All in all, Materialized Views provide a very interesting feature to improve the system performance, while keeping the information reasonably up to date. Personally, I wish I've had this feature available for many of the reports I've built in all these years... :-)

Pages