Thursday, March 20, 2025

Fluid Approval Framework using Page Composer

 Approval workflow is the distinctive designer to configure Approval Framework without writing any code. In traditional approaches, one needs to create different pages or components to present requestor and approver data.

Recently, Peoplesoft has delivered Page composer for all workflow Processes and easily linked to approval tile. The Page Composer feature enables users to design their own Fluid Application Pages to make it more in line with the business needs. The feature allows users to design pages for different form factors and to include fields and tabs using the registered components delivered with the feature. It is metadata driven so the users can modify the styling and layout of select areas on component pages without having to code or customize delivered PeopleSoft application pages.

Below are the step to configure a Process ID with Approval Tile –

  • Using Mobile Approval option page, Configure setup for Approval  -Enterprise Components > select Approvals > Approvals > Mobile Approval Option.
  • Select Transaction Tab –

PS4_1

  • Fill all the necessary information like Order, Transaction ID, Transaction name, Process ID, Root Package ID, Approve, Deny, and Small Image etc.
  • Left Side panel shows Process ID with pending Approvals and Right side shows Approval Details (summary of the transaction).

PS4_2

Below are the steps to configure Process ID with Developer Registration –

  • Enterprise Component > Page Composer Administrator > Developer Registration.
  • Select Definition as ‘Approval’ and System Source. Click on Search
  • The Approvals definition the only definition currently registered for Page Composer. Use the Search pane to search for the Approval transactions that are registered to AWE
  • Click on Add Approval Type to add new process ID.

PS4_3

  • After Click on ‘Add Approval Type’, Screen looks like this, here configure approval page object with record definition.

PS4_4

  • Add necessary details on the page like description, Display Type, Page Name, Form Factor, Sequence, and Page Reserved Field.
  • Click on Composite Key Fields and Secondary page display

PS4_5

  • Select Cross Reference Record and Process ID.
  • Add application source record and fields

PS4_6

  • Similarly, Field Event link open secondary page to initialize any value to that field.

Below are the steps to configure Process ID with Page Composer –

  • Enterprise Component > Page Composer > Page Composer.
  • Select ‘Approvals’ as Definition and System Source.
  • Select Process ID that has registered to Developer Registration.
  • After Selecting Process ID Page Composer’s Page Look like below image.

PS4_7

  • Approval Summary comes initially, here just drag and drop Field from toolbox.

PS4_8

  • Approval Summary changes reflect on Approval tile page.

PS4_9

  • Header Details and line details shows actual transaction page.

PS4_10PS4_11

  • Toolbox are also provide to configure according to different Form Factors.

PS4_12

Note:  Now Peoplesoft Uses Page Composer for Approvals only. However, may be extend the functionality for other purposes also.


Enabling Fluid Approvals (MAP) in PS Environments

 Starting PeopleTools 8.54 approvals in PeopleSoft applications can be enabled for Fluid usage using Mobile Application Platform (MAP) technology. Setting up this feature was quite tricky in earlier days involving wide range of manual configuration and validation steps.

In the recent update images for demo environments delivered in PT 8.55 most of these steps are pre-configured. However couple of manual steps are needed post deployment to enable fluid approvals.

After deploying a new PS demo environment, when you login notice the approval tile displaying the default image, clicking on this tile will open a new page displaying the same image.

FL_Mobile_Approvals

Perform “Local node introspection and deployment” for IB service – HMAP_APPROVALS

- Navigate to PeopleTools, Integration Broker, Integration Network WorkCenter.
- Under the Administration folder, click the Introspection and Deployment link.
- In the Search for Items - Introspection/Deployment page, select the Service - option to enable the Service field.
- Enter HMAP_APPROVAL in the Service field.
- Click Search.
- Enter the service HMAP_APPROVAL appears in the Select Items to Process group box.
- Select the HMAP_APPROVAL check box.
- Click Continue.
- On the Target page, select the Local Node option and then click Continue.
- On the Introspection/Deployment page, click the Introspect button.
- On the Introspection Results page, select all of the service operations that have the check boxes selected.
- Click the Deploy button.

After performing this task verify the fluid approvals tile to check if it is showing the count of pending approvals, if yes then configuration is complete. Click on the tile to check if the pending approvals page opens up.

FL_Mobile_Approvals _2

If an error message appears as below then proceed checking the following item.

FL_Mobile_Approvals _1

Check if the routing definition associated with the active service operations in HMAP_APPROVAL service is set to active. Typically following service operations are activated while performing the introspection and deployment step described above. Routing definitions between local node e.g. PSFT_HR and target node – WADL_NODE must be activated.

HMAP_APPROVAL_DETAIL_XXX_GET
HMAP_APPROVAL_MAIN_XXX_GET
- 'XXX' represent application name e.g. 'HCM'

Fluid_UI_Routing

Once activated check if the approval tile is displaying the pending approvals count and when clicked opens up the fluid pending approvals page.

Please note the 2 steps discussed here are only applicable to PUM images 16 and above, which are delivered in PT 8.55 and uses DPK for deployment.

For PS environments earlier to that additional configuration steps may be required. As this setup has proven quite tricky since its introduction, there exists quite a few discussions in Oracle support and customer forums.

I found the below article in Oracle support which consolidates various errors and resolution steps to be quite useful – Doc ID 1990593.1

Segregation of Information Technologies

 

The vast field of Information Technology (IT) can be categorized into various domains based on their functionality and use cases. Below is a structured classification of major IT landscapes, covering databases, programming languages, cloud providers, development methodologies, AI, and more.


1. Databases

Databases store, manage, and retrieve structured and unstructured data.

1.1. Relational Databases (SQL)

  • Oracle Database – Enterprise-grade RDBMS with high performance and scalability.
  • Microsoft SQL Server – Microsoft’s RDBMS with strong enterprise integration.
  • MySQL – Open-source and widely used for web applications.
  • PostgreSQL – Advanced open-source RDBMS with extensive SQL compliance.
  • IBM Db2 – IBM’s RDBMS with high reliability and analytics features.
  • MariaDB – A fork of MySQL offering enhanced performance.
  • SQLite – Lightweight, file-based database for embedded applications.

1.2. NoSQL Databases

  • MongoDB – Document-based NoSQL database for flexible schema storage.
  • Cassandra – Distributed NoSQL database for handling large volumes of data.
  • Redis – In-memory key-value store for caching and high-speed data processing.
  • DynamoDB – AWS-managed NoSQL database for scalable applications.
  • CouchDB – NoSQL document-oriented database with JSON storage.
  • Neo4j – Graph database for relationship-based data storage.

1.3. Data Warehouses & Analytical Databases

  • Amazon Redshift – Cloud-based data warehouse for large-scale analytics.
  • Google BigQuery – Serverless, fast, and scalable data warehouse.
  • Snowflake – Cloud-native data warehouse for analytics.
  • Apache Hive – SQL-based warehouse for Hadoop.

2. Programming Languages

Languages used for software development, web applications, AI, and automation.

2.1. System & Low-Level Programming

  • C – Foundation of modern programming, used for OS and embedded systems.
  • C++ – Extension of C with object-oriented programming.
  • Rust – Memory-safe system programming language.
  • Assembly Language – Low-level language for hardware-level programming.

2.2. Web Development

  • JavaScript (JS) – Primary language for frontend development.
  • TypeScript – A superset of JavaScript with static typing.
  • PHP – Server-side scripting language for web applications.
  • Ruby – Web framework language (Ruby on Rails).
  • Node.js – JavaScript runtime for backend development.

2.3. Application & Backend Development

  • Java / J2EE – Enterprise application development.
  • .NET / C# – Microsoft’s framework for Windows and web apps.
  • Python – Widely used for web apps, AI, and automation.
  • Go (Golang) – Scalable cloud and system programming.
  • Perl – Used for scripting and text processing.

2.4. Mobile Development

  • Swift – Apple’s primary language for iOS development.
  • Kotlin – Official language for Android development.
  • Dart (Flutter) – Used for cross-platform mobile applications.

2.5. AI & Data Science

  • Python – Libraries like TensorFlow, PyTorch, Pandas.
  • R – Used for statistical computing and data analysis.
  • Julia – High-performance language for scientific computing.

3. Cloud Computing Providers

Cloud platforms offering infrastructure, storage, and computing services.

  • Amazon Web Services (AWS) – Leading cloud provider with IaaS, PaaS, and SaaS solutions.
  • Microsoft Azure – Microsoft’s cloud platform with strong enterprise integration.
  • Google Cloud Platform (GCP) – AI/ML and big data-focused cloud services.
  • Oracle Cloud Infrastructure (OCI) – Oracle’s cloud with database and enterprise solutions.
  • IBM Cloud – AI, quantum computing, and hybrid cloud solutions.
  • Alibaba Cloud – Asia’s leading cloud provider with global services.

4. DevOps & CI/CD Tools

Tools that help in automation, integration, and deployment of applications.

  • Docker – Containerization for applications.
  • Kubernetes – Container orchestration.
  • Jenkins – CI/CD automation tool.
  • GitHub Actions – CI/CD workflows.
  • Terraform – Infrastructure as Code (IaC).
  • Ansible – Configuration management and automation.
  • Puppet / Chef – Infrastructure automation tools.

5. AI, ML & Data Science

Technologies for artificial intelligence, machine learning, and analytics.

  • TensorFlow – Deep learning framework.
  • PyTorch – Machine learning framework.
  • Scikit-learn – Classical ML algorithms in Python.
  • Hugging Face – NLP and transformer models.
  • Apache Spark – Large-scale data processing engine.
  • Dask – Parallel computing for big data.

6. Cybersecurity & Encryption

Security solutions for data protection, identity management, and compliance.

  • Firewall & IDS/IPS – Palo Alto, Cisco, Fortinet.
  • SIEM Solutions – Splunk, IBM QRadar, Elastic Security.
  • IAM – Okta, Microsoft AD, Ping Identity.
  • Encryption – AES, RSA, TLS/SSL.
  • Zero Trust Security – Google BeyondCorp, Zscaler.

7. Big Data & Analytics

Technologies for large-scale data processing and insights.

  • Apache Hadoop – Distributed data storage and processing.
  • Apache Kafka – Real-time data streaming.
  • Flink / Storm – Stream processing engines.
  • Elasticsearch – Search and analytics engine.
  • Power BI / Tableau – Data visualization tools.

8. Enterprise Software & ERP

Enterprise platforms for business operations, HR, and finance.

  • SAP ERP – Enterprise resource planning system.
  • Oracle ERP Cloud – Cloud-based ERP solution.
  • PeopleSoft – Oracle’s ERP for HR and finance.
  • Salesforce – CRM and customer engagement platform.
  • ServiceNow – ITSM and workflow automation.

9. Internet of Things (IoT)

Technologies for connected devices and automation.

  • Arduino / Raspberry Pi – Embedded development platforms.
  • MQTT / CoAP – IoT communication protocols.
  • AWS IoT / Azure IoT Hub – Cloud IoT platforms.
  • Edge Computing – Processing data closer to devices.

10. Blockchain & Web3

Decentralized technologies for secure transactions and smart contracts.

  • Ethereum – Smart contract blockchain.
  • Hyperledger – Enterprise blockchain.
  • Solana / Avalanche – High-speed blockchains.
  • Metamask – Web3 wallet.

Final Thoughts

This classification segregates the IT landscape into clear domains based on technologies and their use cases. 

 

Monday, March 10, 2025

Origin Missing On Your Operator Profile Error While Creating Vouchers

 Error: Origin missing on your operator profile.  Origin is required in order to enter vouchers.

For this you need to add origin to your profile.

1.Add details to your profile at overall prefences.
Navigation: Setup financials/Supply chain > Common Definitions> User Preference > Define user
Preference > Overall Preference 



2.Add Origin
( setup financials > common definitions > User Preference> Define user
Preference >
Procurement > Select (payables online vouchering) and then add origin here.

Payable Online  Vouchering also update.









Monday, March 3, 2025

BI Publisher Bursting in PeopleSoft

 

Overview

Bursting BI Publisher reports breaks up a single report into multiple output files. Every time the value changes in a specific designated field, a new document is generated.

As delivered, PeopleTools wants bursted reports to run from the Process Scheduler delivering reports to the Report Manager. Users access the bursted reports through the report manager.

Bursting is an older technology rarely used in our current architecture. In most cases, there are better ways than bursting to accomplish the requirements.

PeopleSoft BIP Bursting

Caveats

This discussion will cover bursting and bursting template control.

It will not cover:
• Burst Security
• Burst Search Keys
• Report Manager Configuration and usage

Getting Started

Before setting bursting options, start with a working BI Publisher Report running through the process scheduler. The process generates one report with all documents contained in the XML File.

BIP Data Source

The BIP Data Source defines the structure of an XML file.

The BI Data Source only needs a good example of the expected XML Data file.

PeopleToold version 8.59 and any other currently supported version does not require an XML Schema files.

In older BI Publisher versions, an XML Schema is required for bursting and other advanced functions

BIP Report Definition

A basic report definition working from batch

RTF Template

Your RTF Template defines how the data is presented in your report. Bursting is not defined at the template

App Engine to generate the report in batch

Bursted reports should run in batch and post to the Report Manager

The report distribution option in your App Engine PeopleCode should be publish the report (see Appendix A for entire Peoplecode Event)

&oRptDefn = create PSXP_RPTDEFNMANAGER:ReportDefn(&ReportName);
&oRptDefn.Get();
      
&oRptDefn.SetRuntimeDataXMLFile(&xmlFile);

&oRptDefn.ProcessReport(&TemplateId, &LanguageCd, &AsOfDate, &oRptDefn.GetOutDestFormatString(&OutDestFormat));
      
&oRptDefn.Publish("", "", "", &ProcessInstance);

Associated PeopleTools Objects

Pages, components, records, and process definitions to control the process.

Data Source Structure

Bursting a report starts with the design of the source data set.

BI Publisher will only burst on one XML tag in the highest group node of the file. This means the burst field must be in the high-level structure if working with complex report.

When creating a detail report such as a training report or an itemized invoice, ensure the field to burst on is in the highest-level node of the XML File. If using a tool like PSQuery where the data structure is flat, make sure your burst field is in the data area that is not summarized by the tool in a table on a page

Bursting a BI Pub Report

Bursting is controlled though the BIP Report Definition, not the template.

Once you have tested your BI Pub objects and the report is running successfully from the process scheduler, open the BIP Report Definition and navigate to the “Bursting” tab

Navigation: Home > Reporting Tools > BI Publisher > Create BIP Report Definitions

The top of the page contains the “Burst by” field. Clicking on this field’s drop down, a list of all possible burst fields as per your Data Source Definition will appear. If your desired field is not in this list, the data source is not correctly structured for bursting.

In this example, we are busting by the DEPTID field in the XML File.

ReRun the report and review the Report Manager for the generated reports.

The same report run now produced a different report for each distinct DEPTID value in the file. Notice the report name.

In this example, the reports for all employees in DEPTID 22000 are in this document. Each document contains one or more reports as per the Burst Field Value.

Enforce Unique Burst Value

This option forces the report to expect unique values in the Burst By field. The report process will stop and generate an error if a duplicate value is received in the Burst By field.

For example, bursting employee checks by Emplid. With this checkbox selected, the process will error if an employee has two checks.

With this option off, all rows having the same value in the burst field will be combined into a single report.

Bursting Template Selection

We can control which template is used for a burst report through the “Template” section on the BIP Report Definition Bursting page.

Define template control by any field in the highest-level node of the XML File. These templates must already be defined under the “Template” tab of the Report Definition.

In the example above, the report is bursting by Emplid, meaning a document will generate for each EMPLID value in the XML file. The Template is controlled the DEPTID field.

• If the employee’s DEPTID = 10000, then the report will use the X_PT3_BIBRST_ACC template to generate the report
• If the employee’s DEPTID = 13110, then the report will use the X_PT3_BIBRST_HR template to generate the report
• If the employee’s DEPTID is NOT one of the listed values, the default template is used to create the report

It’s important to know that if the “Burst By” field and “Template Controlled by” field are different fields, then all data in a bursted report must have the same value in the “Template” field to use the different template. If at least one row of the Burst section does not have the same value in the Template control field, the report will use the default template.

Here you can see the output from the template control. The templates are essentially the same, just the color scheme has been changed to show us that the different template had been used.

  • Employees in DEPTID 13110 received the purple report
  • Employees in DEPTID 10000 received the green report
  • All other employees received the default template, which has the light blue title and table.

Structural differences with BI Publisher Reports

When bursting BI Pub Reports, it’s important to remember that the BI Publisher Report Generator on the server does not just create multiple reports in one output directory on the file server. The process creates a separate sub-directory under the report’s “/RptInst/” folder for each report.

Where a non-burst BI Publisher process places the result report in the “/RptInst/” folder, the bursting process creates a new individual folder in that “/RptInst/” folder for each of the reports generated. That new sub-folder is simply named with the sequence number of that report. The actual report is in that sub-folder.

Should you run a payroll report for 5,000 employee and burst by EMPLID, the process will create 5,000 sub-directories under the main folder, one for each employee’s report. Below is an example of a report generated 15th in the sequence.

This massive number of additional directories per each run can become a performance issue on your file server if not carefully managed.

Should you use Bursting?

In most cases, no.

There are better ways to control and group BI Reports than bursting. Creating specific data sets before sending them to BI Pub allows finer control of the input and final document produced. You also don’t have to track the sequence a key value appears in the data file against the resulting folder sequence of the bursted reports.

We generally get better system performance running multiple controlled reports rather than parsing a single, huge datafile bursted into multiple reports. BI Publisher recommends we DON’T use PSQuery for larger reports due to the extra overhead of that data source.

*Note: Per MOS Doc ID: Doc ID 962712.1:
PSQuery and rowset data sources may not be the most efficient way to generate the XML file that is used as input to BI Publisher, (XML Publisher). Consider using SQR or other mechanisms to generate the XML file

My Oracle Support

We also get to choose where the report runs: batch, online in the user’s section, or both.

So, I would easily find other better ways to produce the results than bursting.

Appendix A

App Engine PeopleCode Event generating Bursted Report

import PSXP_RPTDEFNMANAGER:*;

Function ExecXmlpReport(&RunControlId As string, &ProcessInstance As number, &ReportName As string, &TemplateId As string, &LanguageCd As string, &AsOfDate As date, &OutDestFormat As number) Returns boolean
   Local PSXP_RPTDEFNMANAGER:ReportDefn &oRptDefn;
   Local number &i;
   Local ApiObject &PSMessages;
   Local number &MsgSetNbr, &MsgNbr;
   Local boolean &bResult;
   Local string &xmlFile;
   Local string &sXMLString, &buffer;
   
   Local array of string &Ar_Files;
   
   &xmlFile = RTrim(X_PT3_BRST_AET.FILENAME);
   
   &nOrigPSMessagesMode = %Session.PSMessagesMode;
   %Session.PSMessagesMode = 1;
   
   try
      /* get the report defn object */
      &oRptDefn = create PSXP_RPTDEFNMANAGER:ReportDefn(&ReportName);
      &oRptDefn.Get();
      
      &oRptDefn.SetRuntimeDataXMLFile(&xmlFile);
      &oRptDefn.ProcessReport(&TemplateId, &LanguageCd, &AsOfDate, &oRptDefn.GetOutDestFormatString(&OutDestFormat));
      
      &oRptDefn.Publish("", "", "", &ProcessInstance);
      
   catch Exception &Err
      WriteToLog(%ApplicationLogFence_Error, &Err.ToString());
      Return False;
   end-try;
   
   %Session.PSMessagesMode = &nOrigPSMessagesMode;
   
   &bResult = True;
   
   /* check session message for errors */
   If %Session.PSmessages.Count > 0 Then
      &PSMessages = %Session.PSmessages;
      For &i = 1 To &PSMessages.Count
         If (&PSMessages.Item(&i).MessageType <= 1) Then
            &MsgSetNbr = &PSMessages.Item(&i).MessageSetNumber;
            &MsgNbr = &PSMessages.Item(&i).MessageNumber;
            WriteToLog(%ApplicationLogFence_Error, MsgGet(&MsgSetNbr, &MsgNbr, "Message Not Found : " | &MsgSetNbr | "," | &MsgNbr));
            &bResult = False;
            Break;
         End-If;
      End-For;
   End-If;
   
   Return &bResult;
End-Function;

If ExecXmlpReport(X_PT3_BRST_AET.RUN_CNTL_ID, X_PT3_BRST_AET.PROCESS_INSTANCE, X_PT3_BRST_AET.REPORT_DEFN_ID, X_PT3_BRST_AET.TMPLDEFN_ID, "", %Date, 2) = True Then
   Exit (0);
Else
   Exit (1);
End-If;

Aggregate Data Into a Single Column - using LISTAGG

  Use LISTAGG as a query expression, to string several rows into a single row, in a single column. Syntax The syntax for the LISTAGG functio...