Showing posts with label PeopleTools. Show all posts
Showing posts with label PeopleTools. Show all posts

Wednesday, August 13, 2025

Five Reasons to Adopt the Application Services Framework

PeopleSoft's Integration Broker has support for REST and JSON. But, it is clear from the metadata, design, and history that Integration Broker favors SOAP and XML (Web Services). Is there a better alternative? YES! As of PeopleTools 8.59, we have a module designed specifically for REST: the Application Services Framework (ASF).

Here are five reasons you should consider ASF for your next integration project:

1. URL Design

REST focuses on objects and data. In an enterprise system, business objects might be Employees, Students, or Vouchers. In ASF, we might call these root resources. Continuing with the Voucher example, we might have the following URLs:

  • .../ap/vouchers
  • .../ap/vouchers/000000012567

When constructing an Application Service, we would have the "ap" service, which would then have a "vouchers" root resource. We could then define URI templates for:

  • vouchers (get a list of all vouchers)
  • vouchers/000000012567 (get a specific voucher)

We would further define HTTP methods, such as GET, PUT, PATCH, or POST, to fetch, update, or create business objects within the respective collections.

The Application Services framework helps us design URLs by first thinking about the module → then the collection → and then the specific object (generic to specific).

When we browse the Internet, we expect to find an organized collection of documents (endpoints) conveniently filed in meaningful folders. Computers browse the Internet, and those computers should expect an organized collection of business "documents" as well.

2. 201 Created Success Status Code

Web Services and SOAP use a protocol within a protocol. The typical Web Service request uses HTTP as the transport protocol and SOAP for the transaction protocol. Therefore, a Web Service might return a 200 HTTP status code to report success even though the SOAP transaction failed.

REST HTTP status codes have meaning. HTTP status codes in the 200 range represent successful responses. The most important HTTP status codes for a PeopleSoft developer are 200, 201, 202, and 204. These are the ONLY HTTP success status codes supported by ASF. Integration Broker REST-based Service Operations, on the other hand, support several other 200-level status codes, but with one critical omission: REST-based Service Operations do not support 201. 201 is the status code for "created." Assuming a PUT or a POST, the proper response may be a 201 - Created. This is critical. If the service handler immediately creates a transaction, then it should return a 201. The Application Services Framework supports this, but traditional REST Service Operations do not.

3. 401 Unauthorized Bad Request Status Code

PeopleSoft takes control of the HTTP Authorization header for several reasons. Here are a couple:

  • To determine if the requester is authorized to access the requested service.
  • To assume the identity of the user making the request, allowing PeopleCode to run as the proper user.

If PeopleSoft determines the requester does not have access (based on roles and permission lists), then PeopleSoft will return the 401 Unauthorized HTTP status code. This happens at the Integration Broker level, and it is fantastic!

But what if your business logic needs to return a 401 Unauthorized? Traditional REST-based Service Operations do not allow this.

Consider the following example. Let's say that a user is authorized for our /ap/vouchers service (the example above). That user might be authorized to access certain vouchers, such as .../ap/vouchers/000000012567, but not .../ap/vouchers/000000012568. This is called row-level security. In this scenario, we should return a 401 - Unauthorized. The user is authorized for the service, but not the data.

Traditional REST-based Service Operations do not allow you to return a 401 Unauthorized EVER. ASF does. 401 is an acceptable failure response from an Application Service.

4. OpenAPI

Metaphorically speaking, OpenAPI is the WSDL of REST. ASF generates OpenAPI specifications for us. We can plug these OpenAPI URLs or downloaded descriptors into various consumers, including Oracle Digital Assistant, Oracle Integration Cloud, Oracle Visual Builder, and more!

5. PeopleCode

ASF was designed to expose Application Classes as REST services. The framework includes an API designed to construct single-row and multi-row responses. The API was designed for REST with support for HTTP status codes and HTTP methods.

6. (Bonus) Metadata Design

ASF metadata consists of:

  • Module
  • Root Resource
  • URI Templates
  • Parameters
  • Result States
  • HTTP Headers
All of these are common and expected REST metadata concepts. Traditional REST Service Operations, on the other hand, include Messages, Services, Service Operations, and Documents; metadata structures that are more appropriate for Web Services than REST.


What to learn more? Create a free account at jsmpros.com and explore our free webinar replays to learn the basics of the Application Services Framework. Next, join us for our three-day live virtual Integration Tools Update course. Prefer to learn at your own pace? This same material is available on demand! Watch the videos whenever and wherever you like, and then complete the hands-on activities on your own server.

Wednesday, July 23, 2025

PTF: Recorder is unable to load... Now What?

I love PTF! With Selective Adoption, Continuous Delivery, and Customization Isolation strategies, PTF is more important than ever. Since Event Mapping, Drop Zones, and Page and Field Configurator don't appear on compare reports (and that is the point), we need a tool like PTF to expose regressions we would have found through the traditional retrofit analysis. The traditional retrofit approach required us to analyze and retrofit every customization. Event Mapping, Drop Zones, and Page and Field Configurator free us to focus on just what broke during the upgrade. And this is why PTF exists. The PTF regression test is how we find what broke. PTF is the linchpin that holds the whole isolated customization strategy together. Without it, we either go live with undiscovered errors or we continue to analyze and retrofit everything.

But what if you launch the PTF recorder and suddenly see this?


What happened? The PTF recorder is a Chrome/Edge plugin. That plugin needs to be loaded for the recorder to function. The PTF application attempts to install this plugin each time it launches the recorder. Depending on your enterprise settings, however, Chrome may deny that request. This is what happened to me. Enterprise customers have been dealing with this since PeopleSoft switched to the Chrome recorder. However, this is what surprised me: I'm simply using a standard Chrome download on an unmanaged server. In fact, PTF used to work just fine on this very server, and this behavior is a recent development. Perhaps Chrome altered its security policy?

Fortunately, this is a known and documented issue. Enterprise customers with highly controlled Chrome environments have been experiencing this issue since PTF switched to the Chrome recorder. Take a look at MOS Doc ID 2922127.1. This document outlines the steps necessary to correct the issue. Following those steps, I launched Chrome as an Administrator by:

  1. Typing Chrome into the Windows Menu and
  2. Right-clicking the Google Chrome entry and choosing Run as Administrator from the popup menu

I then navigated to chrome://extensions/ and turned on Developer Mode:



Finally, I dragged the Chrome extension psTstRecCh.crx file onto the Chrome extension window:



But after a restart, it still didn't work. I could now see the extension listed in Chrome, but it was disabled, and no matter how many times I clicked, it wouldn't enable itself!




Even though the extension was installed, Chrome wouldn't trust it. Even as an Administrator, I could not enable the extension. The final step is to override Chrome's behavior by encouraging it to trust Oracle's PTF extension. We do this through the Windows Registry. The appropriate Windows Registry keys are listed in PeopleBooks under Installing a PTF Client > Configuring Browser Settings. Here is the contents of my *.reg file I imported into my Windows Registry.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionAllowedTypes]
"1"="extension"

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallAllowlist]
"1"="boainbfkaibcfobfdncejkcbmfcckljh"

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallBlocklist]
"1"="*"

Please note that editing the Windows registry can be risky and potentially cause serious problems, including system instability or even rendering Windows unbootable. Therefore, it's crucial to proceed with extreme caution and only if you are confident in your actions. Always back up the registry before making any changes, and keep detailed records of modifications.

And that was all it took! My PTF recorder is now working as well as ever!

At JSMpros, we teach PeopleSoft tips like this every week. Check out our schedule to see what we are offering next! Have a large group you would like to train? Contact us for scheduling and group pricing.

Thursday, October 13, 2022

PeopleTools 8.60 GA

 Are you wondering when PeopleTools 8.60 will be generally available? Watch for it on OCI tomorrow! Here are the announcements from this week's PeopleSoft Reconnect conference:

  • PeopleTools 8.60.01 GA cloud-first release date is October 14, 2022
  • PeopleTools 8.60.02 GA on-premise release date is December 1, 2022
We posted a list of changes for 8.60 in our Blueprint 4D conference notes. Check it out!

JSMpros monitors releases very closely to ensure we deliver relevant, timely training using modern tools and infrastructure. That is why we teach all of our classes on PeopleTools 8.59 today and will switch to 8.60 when it is ready.

Monday, September 19, 2022

Mock Service URLs for PeopleSoft Testing

 As you create, learn, and discover Integration Broker's capabilities, it is helpful to have mock APIs for testing purposes. Here is a list of my favorites.

Many of these services have secure and non-secure alternatives. The value of insecure testing is you don't have to import certificates. On the other hand, the secure versions help you prove your PeopleSoft certificate import skills.

Do you have some sample APIs you use? If so, please share them in the comments!

At JSMpros, we teach PeopleSoft REST and SOAP integrations regularly. Want to learn more? Check out our Integration Tools Update course to learn best practices and strategies for incorporating REST and JSON into your development process!

Wednesday, July 20, 2022

Which Query Security Tree?

Here is the scenario:

A user needs to create a query, but doesn't have security access to view a record. The user asks you for help.

Before running or writing queries, a user must have access to records through Query Security Trees. We assign records to trees, trees to permission lists, permission lists to roles, and roles to users. The solution is trivial: grant security access through a security tree. The difficult part is deciding which tree and which permission list. When I receive a request like this, I have two groups of questions:

  1. Is there already a query security tree that grants access to the target record? If so, which one and which permission lists? Would any of those permission lists be appropriate for this user?
  2. Is there already a query security tree available to this user that would be a good fit for this record?

Here are some SQL statements I created to help answer these questions.

Find existing trees that include the target record:

Finding Permission Lists that grant access to a specific record is more challenging. Locating permission lists that contain a tree that contains a record is trivial. Narrowing that list based on Access Group is more challenging because Access Groups represent node hierarchies and therefore require recursive logic:

Do you have SQL statements and tricks to help you manage Query Security? If so, share them in the comments!

At JSMpros, we teach PeopleTools tips like this every week. Check out our website to see what we are offering next!

Tuesday, July 12, 2022

Announcing: PeopleSoft Developer Day 2022!

Announcing PeopleSoft Developer Day 2022 with all new Content! Join us online Thursday, August 18th for a full-day PeopleSoft education experience. Filled with PeopleTools development tips and best practices, we designed this opportunity to help you build better solutions faster. Space is limited so register now!

Register Now!

I have some fantastic new content to share with you; tips and ideas that will help you deliver better, modern solutions with less effort. We lead our Developer Day webcast once per year, and pack it with a variety of PeopleTools topics. This year we'll focus on the following topics:

  • Fluid: we want you to build highly engaging, informative, modern, mobile-friendly solutions, and we want you to do it with less effort. With that in mind, we have some Fluid-specific tricks to share with you.
  • Integration: digital assistants are incredibly popular. But what makes them possible? Integration. Cloud, on-premise, payment gateways, purchasing... there are so many opportunities for integration and we want to make sure you know all the productivity secrets.
  • Isolating Customizations: with continuous delivery and the cloud's "always current" policy, it is critical that we learn to uptake new features as fast as possible. But to do that, we must reduce our customization retrofit timeline. We have great ideas to share with you in this regard, including regression testing best practices.
  • PeopleCode: nearly every PeopleSoft solution involves PeopleCode. But here's the problem: PeopleCode can be hard to read. We want to help you by showing you ways to write better, human-readable PeopleCode.

 

Register now to reserve your seat for this dynamic one-day event on Thursday, August 18th. Registrants receive 60-days access to the recording, a copy of the Q&A roster, and sample code downloads.

Take advantage of this opportunity for only $447 per person. If you have a group of 10 or more, contact us at info@jsmpros.com for a quantity discount.

Register Now!

Friday, June 10, 2022

It's a wrap! Blueprint 4D 2022 PeopleTools Recap

We just finished the fantastic Blueprint 4D conference, full of great sessions and incredible networking. It is always a pleasure to meet our JSMpros student alumni and connect with members of the PeopleSoft community.

The conference started with a great lineup from Product Strategy, including Paco sharing a broad perspective of what to expect in future PeopleSoft applications, and then focused strategy breakout sessions. It is very clear PeopleSoft is still a top-tier ERP solution. If you are a PeopleSoft developer, here are some things to watch in future releases:

  • New theme for PeopleTools 8.60. We've been watching the steady transition to the Oracle Redwood theme, and it appears the transition is complete.
  • Global Search is visible all the time, not just on homepages. To make room, PeopleSoft moved the page title down a row, in line with the component header.
  • Recent and favorite icons from the 8.59 homepage move up to the left side of the header. To make room, the back button is collapsed to an image.
  • The global actions header is now detached from an optional component-specific header. While the proliferation of dot-dot-dot menus may seem confusing, I'm pleased with the change as it is now visibly clear if a component has custom actions.
  • Configurable search is coming! Configurable search appears to be based on keyword search, which is a viable option if real-time indexing is enabled. Configurable search will be available for both Classic and Fluid. In summary, configurable search lets you configure search fields and list box items, rather than relying exclusively on search record metadata. Besides Configurable Search, using keyword search (Elastic at this time) also allows you to search for transactions from the global search bar, and the global search bar will show transaction search suggestions from your keyword search history.
  • Fluid is getting SQL Search. My interpretation of this new feature is that Fluid will finally leverage search record metadata to build search pages for us just like Classic. This will be a great time saver since current Fluid search strategies include Pivot Grids, Elastic Search, custom search pages, and custom components.
  • PeopleSoft will transition from Elastic Search to OpenSearch to be consistent with Oracle Cloud. No mention of the impact on Kibana. The timing for this is unknown as the 8.60 planned release will use ELK 7.10. Regardless, the change should be transparent as our users use the PeopleSoft search framework, not Elastic directly. Elastic changed the license with 7.11, which is why Oracle is staying with 7.10 for now, and will migrate to OpenSearch, which is based on ELK 7.10. Oracle encourages to continue creating Kibana dashboards, building indexes, etc as the change should be transparent.
  • Future releases of Cloud Manager should support using Data Science to automatically scale up and down based on load and customer-configured thresholds.
  • CSS custom properties (variables) will replace branding macros. I am very excited about this. We just released a YouTube video showing how to apply a hover effect to rows through CSS. As of 8.59, we must hardcode the hover color, border, etc. In the video, I specifically stated these colors are different than 8.57 and earlier, and hard-coded colors could present a maintenance challenge. If we can leverage PeopleSoft CSS variables, we may be able to reduce future maintenance. With each release, we still expect variable changes (new variables, etc.) just as prior releases brought new Branding Macros, but finding and updating the list with future additions should be trivial with a text compare tool.

Campus Solutions

  • PI 24 delivered Drop Zones to the following three components: Personal Details, Biographic Details, and Emergency Contacts. This is fantastic as it allows us to collect additional information about students without customizing the Oracle-delivered pages.
  • Future Fluid components will include Drop Zones and CAF.
  • 2023 planned Fluid releases include Transfer Credit, Degree Progress, Research Activities, and Program Enrollment.
  • Roadmap items include Integration with Student Management Cloud and Student Financial Planning (cloud)
  • Continued WCAG 2.1 enhancements.
  • Continued Classic Plus conversions.

Notes from Sasank's 8.59 PeopleTools session

  • Search: suggestions show history, corporate history, and the menu.
  • For your history and corporate history to appear in the list, you must enable the following indexes: PTSF_RECENT_KW and PTSF_RECENT_MENU
  • For your recent history to appear, you should also enable real-time indexing.

PeopleTools Platforms Roadmap

We could summarize the 8.60 platforms roadmap by stating that PeopleSoft has or will certify on platforms supported by the vendors of those platforms at the time of release. For example, 8.60 drops support for Windows Server 2016. A more accurate way to state that is Microsoft dropped support for Windows Server 2016, making it no longer supported by Oracle. Likewise, IE11 is missing from the browser certification matrix. Given the Oracle OpenSearch announcement made by Dave Bain. It was interesting to note PT 8.60 will release with Elastic 7.10, Kibana 7.10, Logstash 7.10. The 7.10 release predates the ELK 7.11 license change. Mark assured us ELK's support policy and end of service dates are irrelevant because Oracle maintains their own version of ELK with their own patches and their own support. In that sense, you might say we are already on Oracle OpenSearch as OpenSearch is a fork of ELK 7.10.

On another interesting note, PeopleTools 8.60 adds Excel from the Office 365 suite to the list of supported Excel versions. As Mark noted, however, this is not necessarily a product/version certification, but a license model, as Office 365 is not a version, it is a subscription license. This could be interesting as Office 365 is always current and doesn't necessarily follow numbered release versions.

Cloud Manager 14 Highlights

  • Data Science for Auto Scaling: Automatically scale up nodes on increased load. Uses Health center to identify anomolies for scaling.
  • Support for custom domain names to Cloud Manager.

Page and Field Configurator Planned Features

  • Allow page changes dynamically as the user updates information in response to FieldChange events.
  • Use system variables as criteria (date, time, etc.).
  • Streamline selection of fields for the administrator.
  • Track changes made by users to pages (change tracker). This will be field and role-based and will store before and after values. Users will be able to view change history through related content associated with the transaction. Page and Field Configurator configuration component will have a button to activate the Related Content on the target component for you. This related content will work with both Classic and Fluid. Note: This does not replace PeopleTools Audit Tables.
  • Page and Field Configurator will track views of sensitive information, logging each time a user accesses that sensitive information. By the way, this is a common feature of the Pathlock/Appsian Security Platform, usually implemented through click-to-view.
  • Changes coming for search pages: ability to change labels and apply default values.
And finally, as the conference wrapped up, Oracle completed its acquisition of Cerner. I'm expecting to hear more announcements at the HIUG Interact conference next week!

Thank you to everyone that shared at Blueprint 4D! Be sure to mark your calendars for May 8-11 for the 2023 Blueprint 4D conference!

At JSMpros, we lead PeopleTools training using the latest releases and up to date curriculum. Be sure to check out our website to see what we are offering next!

Thursday, March 03, 2022

A Simple Classic to Fluid Conversion

Oracle published a fantastic document describing how Oracle converted from Classic to Fluid. This very educational document is available at Doc ID 1984833.1. Oracle's solution makes sense for Oracle because it offers customers a choice: migrate to Fluid or stay Classic. As customers, do we need to offer that same flexibility? If so, then Oracle's approach is fantastic. I find most customers are either Fluid or Classic (or some derivative thereof), and when we convert a component to Fluid, it stays Fluid. We don't, for example, have part of an organization using a Classic version while another part of the organization uses the upgraded Fluid version. With that in mind, we developed a simpler approach to Fluid conversion: the in-place conversion. This stands in contrast to the clone-and-recreate approach. We put together a playlist with several videos describing our approach:

Be sure to subscribe to our channel so you don't miss future updates!

Want to learn more? Check out our vast Fluid training library, including recorded and live virtual events, online!

Wednesday, February 16, 2022

Where is that Content Reference?

New user 'X' needs access to 'Y.' Piece of cake, right? At least it was in Classic. The entire PeopleSoft navigation model stems from Content References. The classic "Navigator" and bread-crumb menus rendered the "Structure and Content" hierarchy. Finding content references under the classic model was trivial because the online visual rendering matched the "Structure and Content" portal registry hierarchical model. After finding a Content Reference, we could review the menu/component combination as well as existing permission lists to derive a solution.

What about Fluid? Most Fluid components exist somewhere in "Structure and Content." The question is, "Where?" The Fluid navigation model consists of homepages, dashboards, tiles, navigation collections, activity guides, and WorkCenters. And we can add any Content Reference to any one of these definitions. There is no structure. We use two tools to help us find Content References:

  1. Enterprise Components > Find Object Navigation
  2. SQL
If you know the menu/component combination or the CREF ID, you can look up the path using Enterprise Components > Find Object navigation. This is very helpful.

Unfortunately, many Fluid content references share the same component, a framework component such as PT_FLDASHBOARD or PT_AGSTARTPAGE_NUI. Everyone has access to these components. Let's consider the Personal Details tile on the HCM Employee Self-Service homepage. The menu/component combination is exactly the same as Payroll. Both use a framework component. What differentiates one tile from the next is the additional URL parameters. So we put together a SQL statement to help us locate content references by URL fragment. The following SQL is Oracle-specific. Notice the URL in the WHERE clause. Replace that URL with your own. Since this SQL uses regular expressions to filter CLOB data, be sure to regex escape special characters.

There is one other way to find a CREF ID. If the target is a Fluid Dashboard, then you may visit PeopleTools > Portal > Dashboards > Manage Dashboard Pages. The properties link shows both the parent folder and the dashboard's CREF ID.

Are you interested in learning more about PeopleSoft Fluid administration and development? Check out our website for live virtual and on-demand recorded PeopleSoft Fluid training.

Tuesday, January 11, 2022

Hiding Tiles

At a conference several years ago, a friend and I were discussing PeopleSoft Fluid. Fluid was new at the time, so my friend was sharing his vision for making Fluid better. One of his ideas was to dynamically hide tiles. For example, if an employee has an Onboarding event, show the onboarding tile. Likewise, if a student has holds or "To Do's," then show a tile. I thought this was a fantastic idea and came up with a few ways to make this happen. If you are using PeopleTools 8.54 through 8.58, here are some options:

  • Use Dynamic Role Rules to add/remove a role that grants access to the target tile. This is the easiest approach and the most adopted method for dynamic access to tiles. For this to work properly, a tile should be marked as required.
  • Use Event Mapping to hide a tile. The PeopleSoft tile homepage is a cleverly formatted Fluid DIV Grid. Each tile represents one row in a grid. Through PageActivate Event Mapping, we can selectively show or hide rows by setting a row's Visible property. As you iterate over the list of rows, evaluate criteria and set the row's visbility accordingly.

What about 8.59? Why did I recommend these strategies for 8.58 and earlier and not 8.59? There is a new PeopleTools 8.59 feature that lets you configure a tile's visibility. Tammy Boyles from Oracle Product Management shared about how HCM uses this new feature last month. Here are the steps:

  1. Create an App Class that extends PTGP_APPCLASS_TILE:API:TileAppFilter.
  2. Put your conditional logic in the IsTileVisible method, returning True to show or False to hide.
  3. Add the content reference attribute TILEAPPFILTER to your tile's content reference.
  4. Open the appropriate homepage content reference and mark the tile as required.

Once you configure a TILEAPPFILTER attribute, the tile will no longer show in the "Personalize Homepage" list of available tiles, so users may no longer add or remove this tile. Therefore, a tile that has a TILEAPPFILTER attribute must be marked as required.

Do you want to see an example? Join us on November 18th, 2021 for Configuration Day 2021 to see this and many other new 8.59 features in action.

At JSMpros, we teach PeopleTools topics like this every week. In fact, this specific topic is part of our continuously updated Configure, Don't Customize course. Be sure to check out our website for more information about this and many other PeopleTools topics.

Tuesday, November 09, 2021

PeopleTools 8.59 new feature: Independent "AddTo" Security

Imagine having a PeopleSoft Favorites feature and no way to add Favorites. After 8.54, many customers found themselves in this situation. Fluid introduced "Add to Homepage" and "Add to Navbar" as fantastic personalization options. Our users love them. For example, I can "pin" my favorite classic components to my homepage for quick and easy access. For power users, this is terrific! And for self-service users? Every component a self-service user visits should already be represented through a Fluid homepage tile. For the casual self-service user, offering an "Add to Homepage" feature often causes more problems than it solves. With that in mind, customers often disable the "AddTo*" feature for self-service users. My friend Simon Chiu explains how in Section Four of his post PeopleTools 8.55 Features: How to Deploy Homepages, Tiles and Branding. From 8.54 to 8.58, disabling Add to Homepage also disables Add to Favorites, which is unfortunate. Favorites are the domain of the user. Nobody questions a user's favorites. Our friend Sasank Vemana shared a solution to "decouple" the AddTo options so we could disable these features independently. Likewise, My Oracle Support published Doc ID 2143709.1, showing how to customize the AddTo* features so customers can remove Add to Homepage while keeping Add to Favorites. Unfortunately, through 8.58, retaining Add to Favorites requires a customization.

What about PeopleTools 8.59? Oracle basically applied this customization to the base PeopleTools code. This feature is now built into PeopleTools. With PeopleTools 8.59, PeopleSoft added the following new roles:

  • DisableAddToFavorites
  • DisableAddToHomepage
  • DisableAddToNavBar

To remove access to Add to Homepage, assign the role DisableAddToHomepage.

Here are a couple of interesting observations of this new feature. First, access seems logically inverted. To remove access, you must assign a role. Normally, we assign roles to grant access. In this case, we assign a role to remove access. Second, we noticed user PS has these roles in the latest HCM PUM, which means out of the box, user PS can no longer add to favorites, homepages, or Navbar.

What are your observations of this new feature? Share your thoughts in the comments. We would love to hear!

Are you interested in learning more about PeopleSoft security or fluid? Check out our latest course offerings at https://www.jsmpros.com/courses/ and events at https://www.jsmpros.com/events/.

Thursday, September 09, 2021

The "Unable to get image extents" Error for SVGs

At JSMpros, we love Scalable Vector Graphics! Fluid loves them because they resize (scale) well. We love them because they are just XML documents describing an image. And since they are XML, we can recolor them with browser developer tools or even a simple text editor. In fact, We have videos showing how trivial it is to clone and alter the colors of Oracle-delivered Fluid icons through browser inspector tools (watch online Manipulating SVG Images).

Since we usually just change colors, we prefer to edit Oracle-delivered SVG images through Chrome's inspector and then copy the entire document to a new SVG file. We can then upload the new file through App Designer and use it anywhere. But we discovered an interesting issue. It appears PeopleSoft's internal code doesn't like our new images. When using the Navigation Collections image inspector or uploading a modified SVG through the online branding module, PeopleSoft throws an "Unable to get image extents" error message. What we didn't realize is that copying XML out of Chrome's inspector doesn't copy the XML prolog. All XML documents begin with an XML prolog

<?xml version="1.0" encoding="utf-8"?>

Since SVG is XML, it is required to have a prolog. Browsers are forgiving and will ignore the missing prolog, but PeopleSoft's internal code doesn't.

So what's the solution? We still edit SVG using Chrome's inspector tool, but now we manually insert the XML prolog as the first line. It appears we aren't the only ones to hit this issue. Check out MOS document 2426154.1 for more details.

Are you interested in learning more about PeopleSoft Fluid and Fluid development? Check out our latest live virtual and on-demand offerings.

Tuesday, August 24, 2021

PeopleSoft Fluid Accordion: Default to Open State

The Fluid Accordion is fantastic for organizing information. My favorite place to use it is in the left sidebar (Side Page 1, Master/Detail, and PSL_TWOPANEL). But it has one interesting quirk: it defaults to closed. Wouldn't it be nice to have PeopleSoft default one of the accordion headings to expanded? We haven't found a property or delivered approach, but we do have a workaround. Check out the 10-minute video below for details. Here is our solution in a nutshell:

  1. Add a custom style class to the accordion heading group box you want to be expanded (we named ours jsm_expanded). This CSS style class acts as an identifier or selector.
  2. Add JavaScript to locate the selector and invoke the click action of the chosen heading.

Here is what that JavaScript would look like:

document.querySelector('.jsm_expanded .ps-link').click();

You can use this JavaScript as-is with the AddOnloadScript PeopleCode function but as the video demonstrates, Master/Detail requires a slightly different approach.

I love the flexibility of Fluid. It is so much easier to inject JavaScript and CSS into Fluid. Are you interested in learning more? We cover the Accordion and related challenges and workarounds in our Fluid 2 course. Be sure to check out the details and register for our next offering.

Did enjoy this PeopleTools Sound Byte? There is more where that came from! Check us out on YouTube and be sure to subscribe for more content!

Thursday, July 15, 2021

Announcing Developer Day 2021!

Announcing PeopleSoft Developer Day! Join me online Thursday, August 19th for a full day PeopleTools experience filled with tips and best practices. Space is limited so register now!

Register Now!

Here are some of the topics we will cover and questions we will answer:

Configuration versus Customization

If you use Event Mapping, is that a customization or configuration? If you replace an AWE event handler, is that configuration or customization? Does it matter? Are there lifecycle consequences? How do you confirm a solution still works after applying maintenance?

PeopleSoft Test Framework

Another way to think of a configuration alternative to customization is as a runtime customization with no compare reports or lifecycle management tools. We will show you how to use PTF to regression test configurations.

PeopleCode Application Classes

Application Classes are the foundation for every modern framework including AWE, Integration Broker, and Event Mapping. We will cover the basics of Application Classes, and then use them to override Approval Framework behavior and to implement Event Mapping.

Event Mapping and Drop Zones

We will warm up with some simple Event Mapping and Drop Zone examples to describe them, and then show you some "what's possible" ideas in Fluid Job Data

Fluid

We'll cover Fluid layout techniques, specifically focussed on Drop Zones, and we'll also show how to create Dynamic Tiles, which also require Application Classes.

JavaScript

The PeopleSoft User experience is HTML, JavaScript, and CSS. We will show you some simple ways to combine JavaScript with Event Mapping to improve the user experience.

Integration

REST is the primary modern integration strategy, so we will cover a couple of simple REST examples, and then show how we can use REST with AWE to send text messages to requesters on final AWE approval.

Approval Workflow Engine (AWE)

We want to send notifications as text messages. To do so, we will have to extend AWE. How would you do this and is it a customization? Find out at Developer Day 2021!

Do you have a group of 10 or more? Contact us at info@jsmpros.com for a quantity discount!

Register Now!

Wednesday, March 24, 2021

Announcing PeopleSoft Fluid Day! A one-day Fluid Webinar

Announcing PeopleSoft Integration Day! Are you ready to learn Fluid? Or, do you already know Fluid, but want to learn more? Join us online Thursday, May 20, 2021 for a full day Fluid Development Experience! Space is limited so register now!

Register Now!

Here are some of the topics we will cover and questions we will answer:

Classic versus Fluid

Both Classic and Fluid use App Designer to create solutions. Both support drag and drop page design. So what are the differences? And if you know Classic, what do I need to learn to be proficient with Fluid?

Mobile

Isn't Fluid mobile? If so, why aren't my grids responsive? What mobile-friendly options exist for grids?

Drag and Drop

PeopleSoft homepages allow us to drag and drop tiles. AWE allows us to drag and drop fields. How can I implement Drag and Drop on my own Fluid pages?

Branding

What does it take to create a branding theme for a PeopleSoft instance? How do you brand both Classic and Fluid? Do I have to use Branding Macros with Fluid? Are there alternatives?

Drop Zones

Where can I use Drop Zones? What can I do with them? What if a component doesn't have Drop Zones? Are there limitations with Drop Zones? Since Drop Zones and Event Mapping don't appear in compare reports, how do we know what to review after a system update?

PeopleSoft Test Framework (PTF)

How do you implement PTF? Are there any challenges to using PTF with Fluid? Are there special considerations for PTF with Event Mapping and Drop Zones?

Do you have a group of 10 or more? Contact us at info@jsmpros.com for a quantity discount!

Register Now!

Wednesday, March 17, 2021

Where do you terminate SSL for PeopleSoft?

Most PeopleSoft implementations have some sort of firewall/load balancer appliance in front of PeopleSoft. As an administrator, one question we have to answer is, "Where do we terminate SSL?" And the answer seems so obvious, most don't even ponder the question. What is the obvious answer? Terminate at the load balancer. Why? Because that is why they exist. SSL/TLS is what they do, and they do it well. What's the alternative? Carry SSL all the way to Weblogic, and terminate at the PeopleSoft web server. Weblogic is amazing at what it does, but it isn't a security appliance. And that is why the obvious answer is to terminate at the load balancer. But here is my question:

Are you reencrypting the traffic between the load balancer and PeopleSoft?

Do you encrypt all the way to Weblogic or do you terminate at the load balancer, thereby passing sensitive information in plain text behind the firewall?

Over the last several years I have heard fantastic security presenters recommend SSL termination at the load balancer level (for good reason). But they always end encryption at the load balancer. They don't encrypt behind the firewall. Why not? The most common reason is performance. Encryption isn't free. And if encryption is expensive, why encrypt behind the firewall? Here are two reasons:

  1. Your network might not be as secure as you think it is. A great example is NASA's breach implemented through a Raspberry PI.
  2. PeopleSoft-delivered service operations expect encryption.
As a developer, I defer to the network infrastructure design team. If they say the network is secure, I take their word for it. But take a look at reason #2. There are several PeopleSoft-delivered service operations that verify encryption at the Weblogic level. If I want to use those delivered service operations, I either need to:
  • Carry SSL/TLS all the way to Weblogic or
  • Modify the Service Operation.
Which would you prefer?

Monday, January 04, 2021

Announcing PeopleSoft Integration Day! February 11, 2021

Announcing PeopleSoft Integration Day! Join me online Thursday, February 11, 2021 for a full day integration experience! Space is limited so register now!

Register Now!

Whether integrating with "The Cloud," Twilio, or Chatbots, odds are high you will use REST and JSON. With that in mind, we are excited to devote an entire day to sharing REST and SOAP integration strategies. Join us February 11, 2021 to learn about:

  • REpresentational State Transfer (REST)
  • JavaScript Object Notation (JSON)
  • The Documents Module
  • Producing and Consuming REST
  • Testing tools, such as SoapUI
  • Security, such as bearer tokens (JWT) and other authorization schemes
  • Producing, consuming, and securing SOAP services

Who should attend this webinar?

  • PeopleSoft Developers
  • Project Managers
  • Team Leads

The cost is $250 per person, which is nearly 70% off our standard daily rate. We are recording the event and are offering 60-days access to registered attendees. This is going to be so much fun! Bring your questions. We'll have time for Q&A. The Q&A panel will be available and monitored all day.

Do you have a group of 10 or more? Contact us at info@jsmpros.com for a quantity discount!

Register Now!

Wednesday, April 15, 2020

Fluid Navigation Collection Tile Parameters

The Fluid navigation paradigm starts with role-based homepages and usually finishes with business process-based tiles. And, the most common way to build a business process-based tile is with a Navigation Collection published through Tile Wizard. Now I'm going to ask a question with an obvious answer. OK, so here goes, Do you build them in Dev, Test, or Production? And, I'm sure you answered, "Development, of course." Nicely done! What about migration? Here's the really cool thing: Navigation Collections are just portal registry structures, so we can migrate them just like any content reference: add them to a project. I've seen several comments and posts discussing this.

Now, perform a quick search for PTPPB_GROUPLET. Did you find anything interesting? Here, let me summarize: PTPPB_GROUPLET is an ADS used to migrate Tile Wizard metadata. Next question: Do you need to migrate Navigation Collection Tile Wizard metadata? There is a bit of debate around this one, but the real answer is: It depends. Many Tile Wizard data types depend on Tile Wizard metadata at runtime, but Navigation Collections do not. Tile Wizard is just a tool we use to create the Navigation Collection's content reference. A Navigation Collection Tile Wizard tile is actually processed through a special Activity Guide template, not through a Tile Wizard runtime. So to answer the question, no, you don't need to migrate Navigation Collection Tile Wizard metadata for a Navigation Collection Tile to work properly.

I'm going to ask you another question: Do you think you might want to use Tile Wizard to maintain your Navigation Collection tile? If yes, then you may want to think about migrating Navigation Collection Tiles through PTPPB_GROUPLET. Why? Most of us periodically copy Production over Dev. If we want our Dev resources to persist, we must migrate them to production. Otherwise, we'll lose the ability to maintain Tile Wizard metadata post copy. So no, you don't need to copy Navigation Collection Tile Wizard metadata for Navigation Collection tiles to work. But Yes, you should copy Tile Wizard metadata if you want to be able to maintain your Navigation Collections going forward.

OK, so maybe it is too late, and you now find yourself with Navigation Collection Tiles with no Tile Wizard metadata. Can you still maintain them? While reviewing CS PUM 16, I found myself in this exact situation. It appears that CS includes several Navigation Collection tiles in a "demo" category, but no Tile Wizard metadata. Fortunately, all Navigation Collection Tile metadata is stored with the content reference. All we have to do is manually update the content reference. Here is a list of the parameters, values, and descriptions of each. First, let's start with a sample content reference Portal URL:

c/NUI_FRAMEWORK.PT_AGSTARTPAGE_NUI.GBL?CONTEXTIDPARAMS=TEMPLATE_ID:PTPPNAVCOL&scname=ADMN_TILE_ADMINISTRATION&PanelCollapsible=Y&PTPPB_GROUPLET_ID=JSM_TILE_MAINT&CRefName=ADMN_NAVCOLL_1

This URL starts pretty normal, listing the Fluid Activity guide component as the starting point. Next, like any Activity Guide, we see the Activity Guide template ID. Everything after that is the domain of the Tile Wizard. Here is a list of URL attributes we can change to alter the behavior of our Navigation Collection tile:

TEMPLATE_ID
PTPPNAVCOL for "optimized" and PTPPNONOPT for "non-optimized"
scname
Navigation Collection ID (the real "name", a folder CREF ID)
PanelCollapsible
Y: Include the collapsible button beside the left panel.

The rest of the URL doesn't seem to matter.

Each week, you can find Jim Marion teaching a PeopleTools class somewhere on planet earth. Register for one of his upcoming classes at jsmpros.com.

Sunday, January 05, 2020

Announcing PeopleTools Sound Bytes!

Here at JSMpros, we are super excited to share our new YouTube channel with you: PeopleTools Sound Bytes! Each week we will release a new "Sound Byte" describing a PeopleTools feature, tip, or technique. Some of our sound bytes come from our prerecorded on-demand training. Others are exclusively recorded for our Sound Bytes YouTube channel. For example, we are currently producing a channel-specific series titled, "PeopleTools 8.58 features you can implement today," highlighting new features that are part of 8.58 that you can implement as early as PeopleTools 8.54. Subscribe now so you don't miss an episode!

Do you have a topic you would like us discuss? If so, share your idea with us at https://soundbytes.jsmpros.com/

Tuesday, September 03, 2019

Changing the Search Page Operator Version 2

In 2011, just after PeopleTools 8.50 released, I wrote the post Changing the Search Page Operator. In that post, I demonstrated how to Monkey Patch PeopleSoft to do something you can't do with core PeopleTools: change the default advanced search page operator from Begins With to Between. A lot has changed since I wrote that initial post:

  • PeopleSoft switched from net.ContentLoader to net2.ContentLoader,
  • PeopleSoft released Branding System Options, which supports global JavaScript injection,
  • We began using RequireJS to manage JavaScript dependencies, and
  • The default user experience switched from Classic to Fluid.

Let's create a new version. Before writing any code, let's discuss that last bullet point. This post will focus on Classic. Why? Two reasons:

  1. Fluid doesn't use traditional search pages built from search record metadata and
  2. Roughly 95% of the components in PeopleSoft are still Classic.

This new version of the code will take advantage of Branding System Options and JavaScript dependency management. Our scenario will use the Job Data component (Workforce Administration > Job Information > Job Data. We will cause the Name search operator to default to between:

Let's start by creating JavaScript definitions for each library. Download the following libraries directly from their sources:

In your PeopleSoft system online, navigate to PeopleTools > Portal > Branding > Branding Objects. Switch to the JavaScript tab and create a JavaScript definition for each item. So that your names match our RequireJS configuration, use the names JSM_JQUERY_JS and JSM_REQUIRE_JS. For compatibility reasons, we should also protect our version of jQuery from any other versions of jQuery that may be loaded by PeopleTools. To do this, we create a library named JSM_PRIVATE_JQ_JS that contains the following code:

Next we need a RequireJS configuration that tells RequireJS how to locate each library we intend to use. I named mine JSM_REQUIREJS_CONFIG_JS, but this name is less important because we will select it from a prompt when configuring Branding System Options. Here is our RequireJS configuration:

Note: I snuck an extra library into the RequireJS configuration. Can you figure out what it is? I will be demonstrating this extra library at my session for OpenWorld 2019. Don't worry about removing it, however. As long as we don't reference it, RequireJS will never attempt to load it.

We must create one more JavaScript library to "listen" to page changes, waiting for PeopleSoft to load an advanced search page. Create a library containing the following code. As with the previous, name isn't as important because we will select the name from a list of values during configuration. But in case you are struggling with a creative name, I named mine JSM_SEARCHOP_JS.

Your list of JavaScript files should now look something like:

After uploading our libraries, we can turn our attention to configuration. Navigate to PeopleTools > Portal > Branding > Branding System Options. In the Addtional JavaScript Objects (this should really be named libraries) section, insert the following three libraries in order. Order matters. We first want RequireJS. We then configure RequireJS. Finally, we use RequireJS.

  1. JSM_REQUIRE_JS
  2. JSM_REQUIREJS_CONFIG_JS
  3. JSM_SEARCHOP_JS

About the code that makes all of this happen (JSM_SETSEARCHOP_JS)... It is incredibly similar to the first version. One important difference is that this version is loaded globally whereas the prior iteration was locally scoped to the component. We therefore include a component-specific test. The %FormName Meta-HTML in our JavaScript helps us derive the HTML element that contains the component name. The fieldMap variable contains the mapping between component names and fields that should be changed.

Will this work in Fluid? Unfortunately, no. Fluid does not use search record metadata to generate search pages. It can (with a little work), but not in the same fashion. Fluid also doesn't support branding system options Additional JavaScript Objects. JavaScript automation is still possible, but requires a different approach (Event Mapping to inject, different variables, etc).

Are you interested in learning more about PeopleTools, JavaScript, and HTML? Attend one of our courses online or schedule a live in-person training session.