Hidden ACM Plugins

In episode #120 of the PeopleSoft Administrator Podcast, there is a discussion on the deltas in the PTEM_CONFIG App Package from 8.55 to 8.56.  In 8.56 there appears to be a ton of delivered ACM Plugin App Classes, but as Dan explains, these App Classes are completely empty.  This is a major tease because there are some really interesting ACM Plugin App Class names such as PTScriptExecutor and PTWebServerConfigUpdate that have no implementation code in 8.56.

Continue reading

Validating Time-Based One-Time Passwords

There are various techniques to enforce multi-factor authentication in web applications. One approach is to use Time-Based One-Time Passwords (TOTPs) as an additional authentication factor. I did a write-up on how to implement Google Authenticator to enforce this style of multi-factor authentication in PeopleSoft. In that article, I use a custom Java class on the app server to implement the TOTP validation algorithm. The problem with this approach is that it causes an undesirable app server dependency.  I recently came across an article that demonstrates a JavaScript implementation of the TOTP algorithm. Since we have the ability to run JavaScript on the app server using Java’s built-in JavaScript interpreter, then we can make use of this JavaScript implementation of the TOTP algorithm to validate user submitted TOTPs. I would like to share a handy project that demonstrates this dependency-less TOTP validation technique.

Continue reading

ACM Plugin Configuration Properties

I am finally starting to get up to speed with Automated Configuration Management (ACM) Plugins.  ACM is something that the guys over at psadmin.io have been talking about for some time now and I think this is a great new PeopleTools functionality.  I have experienced an unfortanute limitation around the allowed character length of the input configuration properties for the some of the ACM plugins that I am currently working on. It turns out that the input configuration properties for ACM plugins are limited to a measly 254 characters.  This is a problem for plugins that require lengthy configuration properties.  For the plugins that I am creating, I wanted a way to easily create and mange plugin configuration properties without having any character length constraints.

Continue reading

Managing Large HTML Objects

I wanted to share a quick tip on managing third-party JavaScript libraries in HTML objects in PeopleTools.  The tip is to manage these HTML objects in the Branding Framework in the PIA rather than using App Designer.  I have found that App Designer does not play well with handling large JavaScript libraries as it tends to add newlines in the code after line lengths reach a certain point.  Minified JavaScript libraries are notorious for having extremely long line lengths and this is an issue for App Designer.

Continue reading

Overriding Web Server Properties in the PIA

A while back I did a tutorial on how to define your own web profile custom properties.  In that post I demonstrated how custom meta-HTML variables can be defined on the web profile that can then be used in the server’s static HTML files.  This technique is good for providing an easy way to manage the web server properties in the PIA.  Something that I did not mention in that post is that we can use the web profile custom properties page in the PIA to manage (and override) existing web server properties defined on the server.  I have had good experiences using this technique to override delivered web server properties defined in the various .properties files on the web server.  An example use case of this technique is to override properties in the text.properties file to achieve JavaScript injection on the PeopleSoft sign in page.  In this post, I will demonstrate how we can use this technique so that we can have a custom sign in experience without having to customize delivered files.

Continue reading

PeopleCode Syntax Highlighting in Ace Editor

Ace is an embeddable code editor written in JavaScript.  My first exposure to the Ace Editor was when I started to use the Cloud9 IDE for non-PeopleSoft development.  I like using web-based tools because they prevent me from being tied to a particular machine to do work.  With tools like Cloud9, I can develop software from any one of my internet-connected devices.  PeopleSoft development is a bit different than developing software in other languages as App Designer is needed to edit PeopleCode programs. I would rather not have to always rely on a client-based application to edit PeopleCode.  This is the reason that I embarked on writing a JavaScript-based PeopleCode editor powered by Ace.  The Ace Editor provides many desirable features that can be found in most modern editors and it also allows for language-specific syntax highlighting. Today I would like to share the PeopleCode syntax mode that I created for the Ace Editor.

Continue reading

Easy REST Requests

One of the biggest pain points with using Integration Broker to consume third-party REST web services is the creation of all of the required metadata definitions.  If I want to perform a simple REST request to a third-party URL, then I am stuck having to create Message, Service, Service Operation, and Routing definitions.  Sometimes I just want the ability to test an API without having to create all of these definitions.  It turns out that there are a couple of delivered methods within the %IntBroker class that allow developers to code the consumption of a REST API without the need to create all of the metadata definitions listed above.  The two methods that I will be discussing are the ProvideRestTest and ConnectorRequest methods.

Continue reading

Response Manipulation with Portal Custodian

What in the world is the Portal Custodian?  I asked myself this very question when I came across a delivered file named portalCustion.xml on the PeopleSoft web server.  The Portal Custodian is an undocumented functionality that allows for regular expression pattern matching replacements on the portal content served by the web server.  The portal content is the “wrapper” that the psp servlet puts around the page content.  This means that we have the ability to modify the contents within the portal header and footer before the client receives the response from the web server.  I discovered and tested this functionality in a PeopleSoft application running PeopleTools 8.56, but it is quite likely that this feature exists in older Tools releases.   In this post, I will walk through how we can use this interesting feature to manipulate response data.

Continue reading

Compile and Run PeopleCode Online

There are many times where I come across some sample PeopleCode on the internet and I want to execute the PeopleCode in my environment to see the output.  The route I take to test drive some PeopleCode usually involves me opening up an existing object in App Designer, pasting in the sample code, and then going to the PIA to see the results.  I find this process rather tedious to perform just to see the output of some sample code.  Not to mention, I have to make sure I go back into App Designer and clean up the object I modified.  More often than not, I already have a PeopleSoft session open in my web browser when I am exploring PeopleCode online.  So what I decided to do was build an online utility for compiling and running PeopleCode directly in the PIA.  In this post, I will share this helpful utility for anyone that is interested in this functionality.

Continue reading

Generating QR Codes in PeopleSoft

The PeopleCode language is not known for natively supporting cutting edge technical functionalities.  However, it is common for the PeopleSoft Developer to be thrown a technically advanced requirement from time to time.  When this sort of occasion arises, I like to extend PeopleCode with Java.  The possibilities are practically endless when extending PeopleCode with Java.  The problem though, is that the PeopleSoft app server may not be equipped with the proper Java packages to execute the required Java functions.  While we have the ability to deploy additional Java classes to the PeopleSoft app server, this practice is not always acceptable.  A clever alternative is to use the built-in JavaScript interpreter in Java and write JavaScript to overcome the technical hurdle.   In this post, I will demonstrate how I am able to use Java’s ScriptEngineManager class to execute JavaScript to generate QR codes in PeopleSoft.

Continue reading