Showing posts with label PEOPLESOFT. Show all posts
Showing posts with label PEOPLESOFT. Show all posts

Friday, June 3, 2022

Blueprint 4D 2022 Conference: See you there!

If you follow me on LinkedIn or Twitter, you may know that I joined Oracle, PeopleTools Strategy team last year.

While my role has changed, I still love the fact that a huge part of my job involves community engagement and interactions.

What better way to interact with the PeopleSoft community than attend an in-person event? That's right, the PeopleTools Strategy team (along with the rest of the PeopleSoft Product Management team) will be attending the Blueprint 4D conference!

Check out this post to find out all the sessions offered by Oracle - with a focus on PeopleTools:
https://blogs.oracle.com/peoplesoft/post/peopletools-sessions-of-interest-blueprint-4d-2022

I will be presenting on the following topics:

  • 107710: Getting the most out of PeopleTools 8.59
  • 107820: Deploying Kibana Analytics: A PeopleSoft Customer Success Story
I look forward to seeing everyone in Vegas!

Sunday, March 14, 2021

Kibana Visualizations: Working with Region Maps

By now, we all must have seen the demonstrations of Kibana Data Visualizer that was made available in PeopleTools 8.58. If not, it is very easy to spin up a PUM image (HCM or FSCM) and get a hands-on experience with this functionality.

While evaluating the delivered Kibana Visualizations, I noticed a few map visualizations.

For example, HCM > Workforce Administrator (Homepage) > Workforce Insight (Dashboard) > Workforce Equity (Tile) > Employee Distribution by Country (Visualization)

How does this work?

As we can see in the footer, the map is rendered to us using the Elastic Maps Service (EMS) which in turn produces basemap tiles leveraging OpenStreetMap data.

We can find more information here:
https://www.elastic.co/elastic-maps-service
https://maps.elastic.co

Further, the out-of-box Kibana functionality would directly request the maps from the browser. The EMS requests are made to the following domains:

  • tiles.maps.elastic.co
  • vectors.maps.elastic.co

If we run into firewall restrictions and unable to allow access to *.maps.elastic.co, we have the option of hosting the EMS locally.

We can find more information here:
https://www.elastic.co/guide/en/kibana/current/maps-connect-to-ems.html

Gotcha

When I dug in a little further to review how the application data (PS Query/Connected Query > Elasticsearch Index > Kibana Index Pattern) is hooked (or joined) to the EMS, I found a strange Kibana bug (?).

Here is the 'Data' tab of the Visualization configuration in Kibana. We can see that the COUNTRY field in PeopleSoft is being used as the aggregation field.

Now, if we go to the 'Options' tab, we will see that the Join Field for the EMS Vector map (World Countries) is set to 'ISO 3166-1 alpha-2 code'.



Wait a minute. The COUNTRY field in PeopleSoft is the 3 character ISO code but somehow it is joined with the 2 character ISO code. How is this possible? Am I right?

We can even preview on EMS to see the codes. If you don't believe me.


After scratching my head for a long time, I found that this is a bug with respect to the display of the Join Field in the Kibana configuration. It possibly may be defaulting to the first value that is in the drop-down. However, once I reviewed the actual JSON configuration (Saved Object) of the visualization, I found that it is in fact using the 'ISO 3166-1 alpha-3 code'. So, it proves that I was not losing my mind (at least as yet!). 😅


Exploring

Next, I wanted to build a map on my own. I used the same data 'Employee Distribution' and represented it per Country and State instead of just the Country.

I created an expression in my PS Query (used in Connected Query source for Search Definition) that concatenates COUNTRY_2CHAR and STATE fields into a single query field.


Next, I created a visualization in Kibana using this field as the Join Field for an 'Administrative region' vector map - 'Region ISO code'.



I look forward to your questions, comments and feedback (please use the comments section below).

Wednesday, March 10, 2021

SignOn PeopleCode: Deflate + Base64 Encode (SAML Request)

Often, I hear questions about PeopleSoft's support for SAML, OAuth or other types of SSO. I have also seen some bolt-on solutions that are available for purchase. My thoughts on this age old question is as follows:

Signon PeopleCode + SetAuthenticationResult Function + PeopleCode Java Functions

Signon PeopleCode is incredibly flexible and allows us to build any custom SSO integration that might be unique to our requirements. Couple this with the built in SetAuthenticationResult function (to manage redirects and authentication) and PeopleCode Java functions, we have everything that we need to develop an integration with any SSO solution.

Working on PeopleSoft SSO implementations is interesting. No matter what standard or tailored solution we choose, there is always something unique with each environment. I plan to write more follow-up posts on this topic! Stay tuned.

This brings my focus to the purpose of this particular post. A SignOn PeopleCode requirement that was brought to my attention by Diego De Boni - a colleague (and a new friend) in the PeopleSoft community!

The requirement is to Deflate and Base64 encode a string (in this case a SAML Request) in SignOn PeopleCode. This is where PeopleCode Java functions come in handy!

Useful Resources:
What is SAML and how does it work?
SAML Developer Tools - Deflate + Base64 Encode SAML Message

Here is an example of a simple string "ABCDE" that is deflated and Base64 encoded. This string could be replaced with a SAML Request for real use cases.

Before I could come up with a solution, Diego beat me to it and found a way to achieve the Deflate + Base64 encoding using Java in Signon PeopleCode. I asked his permission to share the following sample code as it will help many others in the community. More importantly, it shows the power of this formula:

Signon PeopleCode + SetAuthenticationResult Function + PeopleCode Java Functions

Signon PeopleCode Snippet

I look forward to your comments and feedback (please use the comments section).

Sunday, July 19, 2020

Migrating Custom Kibana Visualizations/Dashboards

In the following DIY blog series, I described how we can use the framework provided in PeopleTools 8.58 to configure our own custom visualizations and dashboards in Kibana and use them in PeopleSoft applications via the 'Kibana Visualizer'.

Refer: DIY - Kibana Dashboards with Application Data

Someone ask a very valid question:
How do we migrate these configurations from one environment (source) to another (target)?

My previous blog post detailed the steps for migrating the Search Definition and associated configuration. This post will describe the steps for migrating the Kibana Visualizations and Dashboards.

Refer: Migrating Custom Search Definition and Configuration

Migration

We used an App Designer project to migrate the Search Definition. We will be using Data Migration Workbench to migrate all the Kibana Visualization/Dashboard related configurations. The following Doc Id from My Oracle Support details the application data sets delivered by Oracle.

E-KB: How to Migrate Kibana Dashboards From One Environment to Another? (Doc ID 2684543.1)

Application Data Set Description Notes
PTSF_KIBANA_DBOARD_DTL Defines the dashboards that are deployed to Kibana. This is the configuration located in PeopleTools > Search Framework > Administration > Deploy Kibana Dashboards
PTSF_KIBANA_DBOARD_ATT Defines the JSON files of a dashboard.
PTSF_KIBANA_DBOARD_ROLE_MAP Defines the roles mapped to a dashboard. This is the configuration located in PeopleTools > Search Framework > Administration > Kibana Privileges
PTSF_KIBANA_DBOARD_CREATE_ROLE Defines the privileges assigned to a role with respect to a Kibana dashboard.
PTSF_KIBANA_SYSDB Defines the system monitoring dashboards that are imported and deployed. This is the configuration located in PeopleTools > Search Framework > Administration > Kibana Privileges
We did not set this up in the examples demonstrated in the DIY series.

In addition to the above configurations, we also need to migrate any Tiles or Related Information configured using PeopleTools > Search Framework > Administration > Kibana Visualizations.

Application Data Set Description Notes
PSPRSM_CREF Content Reference Dashboards configured as Tiles.
RCF_SERVICES RC Services Dashboards configured as Related Information of a Fluid page.

Finally, if we used the following workaround to setup any Kibana dashboards as related content of classic pages, then we need to migrate the configuration using the data sets listed below.

Refer: Kibana Dashboards - Related Content for Classic

Application Data Set Description Notes
RCF_SERVICES RC Services Dashboards configured as Related Content of a Classic page.
RCF_SERVICE_DEFINITION RC Service Definition Custom Related Content Service Definition - Classic Kibana Related Content

Here is a project used for demonstration purposes. This project will be used to demonstrate the migration of all the configurations created in the DIY series.


Imported Kibana Dashboards

The following steps will migrate the dashboards imported into PeopleSoft from Kibana.



Demo


Kibana Privileges



Demo


Kibana Visualization as a Tile



Demo


Kibana Visualization as Related Information (Fluid)



Demo


Kibana Visualization as Related Content (Classic)




Demo



Post Migration Steps

Once we migrate all the data sets using Data Migration Workbench, we should deploy the imported dashboards to Kibana in the target environment. As you can see in the screenshot below, the imported dashboards will appear to be in deployed status. This status is brought forward from the source. Therefore, we must deploy once again in the target environment.


The deploy step takes care of all the configurations in Kibana - index patterns, visualizations and dashboards!

Migrating Custom Search Definition and Configuration

In the following DIY blog series, I described how we can use the framework provided in PeopleTools 8.58 to configure our own custom visualizations and dashboards in Kibana and use them in PeopleSoft applications via the 'Kibana Visualizer'.

Refer: DIY - Kibana Dashboards with Application Data

Someone ask a very valid question:
How do we migrate these configurations from one environment (source) to another (target)?

This post will detail the steps for migrating the Search Definition and associated configuration.

Migration

We can migrate everything related to the Search Definition using an App Designer project. Simply insert the Search Definition and make sure the the 'Related Definitions' are selected as shown below.



Save the 'Project' and migrate to target environment.

Note: If we used any Application Package PeopleCode to configure the Search Definition (Security Configuration) - Document Filter App Class, then we must also include the App Package in the project.

Post Migration Steps

Once we migrate the configuration, we must complete the following administrative steps in the target environment.

1. Deploy Search Definition
2. Schedule Search Index
3. Configure Search Context (optional)
4. Configure Search Group Security

Related Posts

Migrating Custom Kibana Visualizations/Dashboards

Tuesday, July 7, 2020

Kibana Dashboards - Related Content for Classic

In the following DIY blog series, I described how we can use the framework provided in PeopleTools 8.58 to configure our own custom visualizations and dashboards in Kibana and use them in PeopleSoft applications via the 'Kibana Visualizer'.

Refer: DIY - Kibana Dashboards with Application Data

Part 3 described how we can configure a Kibana visualization/dashboard as a Tile within PeopleSoft. There is also another way we can expose the Kibana visualization/dashboard in PeopleSoft. This alternate approach is to configure them as related information/content of a component.

Configure Kibana Visualizations as Related Information/Content of a Component

Let us take the same Kibana dashboards that we built in the DIY series and configure them as related information of a component.

Gotcha: As delivered, this option only works for Fluid components.

So, let us pick a Fluid component - HR_EE_ADDR_FL (Employee Self Service > Personal Details > Addresses) and configure the Kibana dashboards as related information.

Navigation: PeopleTools > Search Framework > Administration > Kibana Visualizations > Component Level (Tab)


Configure Kibana Visualizations as Related Content of a Classic Component

As we saw in the previous section, the 'Component Level' - related information option is only available for Fluid components. Does this mean we cannot use Kibana visualizations/dashboards as related content for Classic? It is true that we cannot use the delivered 'Kibana Visualizations' configuration page for Classic components. But we can simply configure a related content service that points to the 'Kibana Visualizer' component and pass appropriate parameters to display the desired dashboards!

Create Related Content Service


URL and Parameters

The URL and parameters required for the Related Content Service could be determined by inspecting the 'Full View' of any Kibana dashboard displayed via the 'Kibana Visualizer' as shown below.


URL

The below URL is an example of a dashboard (Full View) displayed via the 'Kibana Visualizer' in 'Full View' mode.

http://pi034.hcm92.com:8000/psc/ps_newwin/EMPLOYEE/HRMS/c/PTSF_SEARCH_ADMIN.PTSF_KIBANA_COMP.GBL?DBOARD=URLGEN&DASHBOARD=IB Dashboard&SUMMARY=IB Tile Dashboard&ICDoModeless=1

Required Parameters for Related Content Service

Parameters Notes
DBOARD URLGEN will ensure that 'Kibana Visualizer' (Full View) is used
DASHBOARD Name of the Kibana Dashboard for Full View
ICDoModeless This will ensure that the Branding header is not displayed

Note: The SUMMARY parameter is not required for the related content service because we will only be using the 'Full View' and don't require the 'Tile View'.

Manage Related Content Service

As a proof of concept, we will add the Related Content Service to PeopleTools > Integration Broker > Service Operations Monitor > Monitoring > Asynchronous Services.



Demo


Conclusion

This proof of concept is in response to a question that was posed on the following blog post.

PeopleTools 8.58 - Application Data and Kibana Dashboards

Can we setup Kibana dashboards as related content of Classic pages? The delivered framework does not provide an option for this setup but we can configure this directly using related content.

Sunday, July 5, 2020

Access Kibana (Admin) Home from PeopleSoft

In the following DIY blog series, I described how we can use the framework provided in PeopleTools 8.58 to configure our own custom visualizations and dashboards in Kibana and use them in PeopleSoft applications via the 'Kibana Visualizer'.

DIY Kibana Dashboards with Application Data

Kibana Admin Login

As part of the DIY configuration process (detailed in Part 2), we need to login to the Kibana Administration page and setup index patterns, visualizations and dashboards. Typically, this step would/should be completed by a developer/analyst/admin type of user. As you can see below, the Kibana Administration page requires a separate login. With the latest integration provided in PeopleTools, we can simply use the same userid/password as in PeopleSoft and also enter the database name.


Access Kibana Administration from PeopleSoft using SSO

PeopleSoft already delivered a security plug-in for Kibana that allows end users to access Kibana visualizations and dashboards from within the PeopleSoft UI. Basically, if users are logged in to PeopleSoft (with a PS_TOKEN), then they can simply access the Kibana visualizations without having to login to Kibana again.

We can take the same logic and create a link in PeopleSoft that will open the Kibana (Admin) Home without requiring a separate step to login to Kibana. In the screenshot below, we can see the user and token parameters in the Kibana iframe URL.


The logic for generating this URL is available in PTSF_KIBANA_COMP.Activate Page PeopleCode.


Custom IScript

We can take the same logic available in the delivered Page PeopleCode and create a custom IScript to redirect to the Kibana (Admin) Home.

Custom Content Reference (CREF)

Next, we can create a custom content reference and associated the IScript created in the previous section. For the sake of simplicity, I added the CREF under PeopleTools > Search Framework > Administration folder. You can change this to an appropriate parent folder of your choice.


Demo


Classic Drop-Down List Styling

Recently, there was a question on my blog related to drop-down list styling.

Refer: Original Question

How do we apply different colors to drop-down list values?

In this post, I will walk through a few examples of how we can use CSS to apply different background colors to drop-down list values. As an example, we will be using the 'Branding System Options' classic page which contains two drop-down lists.

Navigation: PeopleTools > Portal > Branding > Branding System Options

Identifying the style classes to target

The first step to overriding delivered CSS is to identify the style class(es) to target. We can do this using the browser's developer tools.


Overriding CSS using Component Branding

Since we are focusing on Classic UI, we can use the Component Branding feature which is available via the Branding Framework configuration to apply a custom Stylesheet object to the Component (PTBRANDINGSYSTEMOP).

Navigation: PeopleTools > Portal > Branding > Component Branding


Zebra Striping

In this approach we will use the nth-child() CSS to alternate between two different background colors as shown below.


Option 1: All Drop-Down lists on the page/component

Option 2: Specific Drop-Down list on the page/component

Notice the #PSBRSYSTOPT_WRK_PTBRANDTHEME in the CSS selector.

Styling specific rows

In this scenario, we will assume that we already know the rows that we want to style differently. Let's say, we want to display the custom Themes (with "SV_" prefix) differently.


Option 1: If we know the row numbers

Option 2: CSS based on attribute value prefix