You are on page 1of 28

Configurable Notifications

Enhancements (21C Update)

Release 13 HCM Cloud Common Features

October 2021 | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
DISCLAIMER
This document in any form, software or printed matter, contains proprietary information that
is the exclusive property of Oracle. Your access to and use of this confidential material is
subject to the terms and conditions of your Oracle software license and service agreement,
which has been executed and with which you agree to comply. This document and
information contained herein may not be disclosed, copied, reproduced or distributed to
anyone outside Oracle without prior written consent of Oracle. This document is not part of
your license agreement nor can it be incorporated into any contractual agreement with
Oracle or its subsidiaries or affiliates.
This document is for informational purposes only and is intended solely to assist you in
planning for the implementation and upgrade of the product features described. It is not a
commitment to deliver any material, code, or functionality, and should not be relied upon in
making purchasing decisions. The development, release, and timing of any features or
functionality described in this document remains at the sole discretion of Oracle.
Due to the nature of the product architecture, it may not be possible to safely include all
features described in this document without risking significant destabilization of the code.

Note: In the images or examples included in this document regarding: user details, company
names, addresses, emails, and/or telephone numbers represent a fictitious sample of data
(based upon made up data used in a demo environment). Any similarity to actual persons,
living or dead, is purely coincidental and not intended in any manner.

1 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
TABLE OF CONTENTS

DISCLAIMER ................................................................................................................................................................... 1
INTRODUCTION ............................................................................................................................................................. 3
Uptake Summary................................................................................................................................................................3
Impacted Customer Scenarios ............................................................................................................................................3
Post-20B Recommended Actions........................................................................................................................................3
1. Disclose Approval History .........................................................................................................................................4
LIMITED AVAILABILITY ........................................................................................................................................................4
STEPS TO ENABLE ...............................................................................................................................................................4
RUN THE TEST ....................................................................................................................................................................5
2. Hide EDIT button from Approvers .............................................................................................................................7
STEPS TO ENABLE ...............................................................................................................................................................7
RUN THE TEST ....................................................................................................................................................................8
3. SQL Pruning (Customer Action Not Required)...........................................................................................................9
WORKED EXAMPLE ............................................................................................................................................................9
IMPLEMENTATION BEST PRACTICES ................................................................................................................................10
4. Client API Uptake ....................................................................................................................................................11
IMPLEMENTATION BEST PRACTICES ................................................................................................................................11
STEPS TO ENABLE .............................................................................................................................................................11
IMPLEMENTATION CONSIDERATIONS..............................................................................................................................12
5. Persisted Task Sequence API Uptake (Customer Action Not Required) ..................................................................13
6. Data Cache: CLOB to XML Type and New APIs .......................................................................................................14
IMPLEMENTATION CONSIDERATIONS..............................................................................................................................20
7. Diagnostic Utility using DATA_CACHE column........................................................................................................21
GETTING STARTED IS EASY ...............................................................................................................................................24
ADDITIONAL RESOURCES .................................................................................................................................................26

2 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
INTRODUCTION
To improve the performance of Oracle Business Intelligence (BI) Publisher notifications, development has made
a number of performance enhancements to BIP notifications in release 20B. For instance, enabling "SQL
Pruning" using Common PLSQL API to retrieve the attributes from Compare/Business Data, and using native
XMLTYPE on DATA Cache instead of CLOB domain which will have an impact on the BIP seeded artifacts:
Reports and Data Models.
Customers’ production environments where changes were made in the OTBI "/Shared Folders/Custom/Human
Capital Management/Workflow Notifications" for HCM BIP Reports / Data models have an Upgrade Impact
after 20B. The modified Reports/Data Models in customer environments may not be compatible with the
seeded (Oracle delivered) reports and data models and may fail in rendering the notification after upgrade
activity.

Uptake Summary
ENHANCEMENT CUSTOMER ACTION

1. Disclose Approval History Yes (optional)

2. Hide EDIT Button from Approvers Yes (optional)

3. SQL Pruning No

4. Client API Uptake Yes (optional)

5. Persisted Task Sequence API Uptake No

6. Data Cache: CLOB to XML Type and New APIs Yes

7. Diagnostic Utility using DATA_CACHE column Yes (optional)

Impacted Customer Scenarios


The following scenarios are most impactful after upgrade:
• If customers modified the BIP RTF templates but did not change the corresponding Data Model.
• Customers modified the BIP Data Model but did not change the associated RTF templates.

Post-20B Recommended Actions


a) Backup existing modified files onto local drive then delete everything from the OTBI "/Shared
Folders/Custom/Human Capital Management/Workflow Notifications".
b) Work, re-work and re-deploy the required changes based on the latest Oracle seeded RTF templates /
data models immediately after the 20B Update.

3 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
1. Disclose Approval History
The general structure of a BIP Notification is comprised of a header, transaction details and approval
history. Most users encounter system performance issues when waiting for the online notification to fetch
the approval history. This uptake will provide the users with an on demand link for the Approval History
region, subject to user clicks. This feature does not apply to BIP email notifications.
Preceding Order : BPM Task > *Product > Family (Defaulted to HCM).
*See Doc ID 2647434.1 ReportAndDataModelMapping.xlsx its column C the exact product code to be used.
PROFILE OPTION LEVELS DESCRIPTION VALUE
BIP_ONLINE_DISCLOSE_HISTORY_HCM Enable/Disable true, false
Disclose
Functionality at
HCM family level
BIP_ONLINE_DISCLOSE_HISTORY_HCM_[PRODUCT] Enable/Disable true, false
Disclose
Functionality at
product level
BIP_ONLINE_DISCLOSE_HISTORY_HCM_[PRODUCT]_[BPM_TASK] Enable/Disable true, false
Disclose
Functionality at
workflow level

LIMITED AVAILABILITY
20B supports 12 work areas:
i) Person ii) Employment iii) Organization iv) Job v) Position vi) Grade vii) Location
viii) ExternalIdentifier ix) DocumentsOfRecord x) ShareInfo xi) Salary xii) VariableCompensation

STEPS TO ENABLE
The profile option is not available by default. You must first create the profile option for the profile value to
be entered.
1.1. Navigate to the Setup and Maintenance work area for Manage Profile Options page. Click New.
1.2. Enter Profile Option Code, Profile Display Name, Application, Module, Start Date, and Description.
1.3. Select the Enabled and Updateable check boxes at the Site level. Click Save and Close.

4 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
1.4. In the Manage Administrator Profile Values page, search BIP_ONLINE_DISCLOSE_HISTORY_HCM
profile option code.
1.5. Set the Profile Value to true at Site level. Click Save and Close.

RUN THE TEST


1.6. Worklist notification

5 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
1.7. Email notification

6 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
2. Hide EDIT button from Approvers
With this new feature, you can disable the Edit option on the worklist approval notification.
PROFILE OPTION LEVELS DESCRIPTION VALUE
BIP_ONLINE_HIDE_EDIT_HCM Show/hide Edit button at true, false
the HCM family level
BIP_ONLINE_HIDE_EDIT_HCM_[PRODUCT] Show/hide Edit button at true, false
the product level
BIP_ONLINE_HIDE_EDIT_HCM_[PRODUCT]_[BPM_TASK] Show/Hide EDIT at the true, false
workflow level

STEPS TO ENABLE
A BPM Task use case: ResignationApproval
Product: PER
2.1. The profile option is not available by default. You must first create the profile option for the profile
value to be entered.
2.2. Navigate to the Setup and Maintenance work area for Manage Profile Options page. Click New.
2.3. Enter Profile Option Code: BIP_ONLINE_HIDE_EDIT_HCM_PER_RESIGNATIONAPPROVAL, Profile
Display Name, Application, Module, Start Date, and Description.
2.4. Select the Enabled and Updateable check boxes at the Site level. Click Save and Close.
NOTE: Creating Profile Option Code through Setup and Maintenance is limited to maximum 80
characters only and must all be in uppercase.

2.5. In the Manage Administrator Profile Values page, search


BIP_ONLINE_HIDE_EDIT_HCM_PER_RESIGNATIONAPPROVAL profile option code.
2.6. Set the Profile Value to true at Site level. Click Save and Close.

7 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
RUN THE TEST
2.7 Worklist approval notification

2.8 Email approval notification


Note: Transaction details link should also be hidden from the Approver as it will redirect users to the
Submit Resignation page for further editing action (tracking BUG 31138924)

8 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
3. SQL Pruning (Customer Action Not Required)
Enabling the SQL pruning at Data Model Properties improves system performance by executing and
fetching the required attributes from data sets which are actually used in a report template. Unused data
set queries will be skipped from data model execution.
SQL pruning executes the query with only attributes present in report template for the data set - such that it
limits the data fetched from DB only to the data shown on the report.
For example, if a Data Set has 20 column attributes and the report template uses only 10 columns to show
data, then SQL pruning forms the pruned query with only the required 10 data set column attributes and
skips other unused columns.
If none of the column attributes are used in the report template for any data set then SQL pruning will
consider it as an unused data set, and it will be skipped from execution.
Enabling the SQL pruning option alone isn’t sufficient to improve the performance, The Report & data
Model needs to be implemented with the best practices, standards and fine-tuning data set queries to
achieve the full result of SQL pruning and possibly avoiding any potential errors.
SQL pruning will be enabled on all the seeded/delivered HCM Notification data models as part of PSR
performance improvement changes. No further Customer Action is needed to get the SQL pruning
improvement, unless customers create a new data model. If the seeded data model is copied for
modification, the SQL pruning properties will also be carried over. Customer must keep these properties as
is for performance improvement.

WORKED EXAMPLE
Use case: EmploymentUpdateProcesses
3.1 Log in to BI Publisher server (https://host:port/xmlpserver/servlet/home).
3.2 Navigate to the Catalog - Workflow Notifications folder (Location/Shared Folders/Human Capital
Management/Workflow Notifications).
System Warning: In-place customizations are not allowed on factory delivered content. Save your
customizations in /shared/custom.
3.3 Click Edit data model. Place cursor over Properties.
Note that Query Time Out is set to 150 seconds, Enable SQL Pruning to On, Skip Unused Data Set
Query check box is selected.

9 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
IMPLEMENTATION BEST PRACTICES
3.4 Make sure that the Report Template uses the Absolute / Relative Path for the data set or data
set column attributes to display the content of the attribute. It will enable the XSL parser to find
the right attribute content quickly from report data.
For example: Assignment Name in Promotion Report -
<?PROPOSEDASSIGNMENT/CURRENTASSIGNMENT/ASSIGNMENTNAME?>
3.5 Make sure that each column in the Data Set has unique names, if the same names are present in
the data sets use aliases to create unique column in data sets.
When SQL pruning enabled, the SQL queries are executed based on the columns present on the report
template, if the same name found in multiple data sets then all those data sets will be executed even
though other data sets are not needed for the report. Having unique column names will avoid this
problem
3.6 To Create Master-Child Data sets use the Element Level Links to form the relationship instead of
Group-Level Links.
Element Level Links will establish the where condition properly for the child query, which in turn SQL
pruning uses to form what are attributes are needed to fetch the data. Using Group Level Links will not
add or append the where condition for the child query and hence the columns will be ignored by SQL
pruning.
3.7 Avoid using Group Links at all in the Data Model.
3.8 Modularize the data sets in the data model such that each section of the report template data
comes from one data set.
For example:
MSS Transaction re: Promote. When creating a promote transaction a user can select optional tasks /
sections from task config UI and in the Notification all of the data is changed including optional tasks
will be displayed.
If customers decide not to choose one or more optional tasks (such as changing salary, changing
manager, changing direct reports etc) then those tasks can be hidden using Design Studio and will not
be displayed for users in the promotion flow.
In this case if the report template uses modularized data sets, customers can then modify and remove
those sections from the template as per the business requirement.
Once the columns-attributes are removed from the template, SQL pruning will skip the execution of
those corresponding data sets and improve the speed of report execution.
3.9 Avoid using the conversion of CLOB Type to XMLTYPE in the Data Sets.
3.10 Make sure that the Data_Cache attributes are retrieved by using the BIP Notification Package
Avoid the usage of Data_CACHE in data sets and if any data_cache attribute value (current or
proposed) is needed, then use the provided BIP Notification packages to get the data. It will make data
sets query execution faster and provides the opportunity to improve the performance around CLOB
data without customers having to redo their work.
3.11 Make sure that the queries in the data sets are optimize.

10 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
4. Client API Uptake
Applicable to both worklist notifications and email notifications, this new feature introduces new APIs that
download the BI catalog into the FA accessible directory and FA can run it locally instead of the web service
calls to execute the notification reports.
On the first request of an approval workflow notification, it will download the report and data model and
place them in an FA accessible location. Subsequent requests for the report execution use the locally
downloaded BI artifacts to generate the report content.
By default, the Client API is enabled. Existing profile options BIP_CLIENT_DISABLE and
BIP_CLIENT_ENABLE are decommissioned as of 20B and will be ignored.
When customers have made modifications in the BI server for the workflow related report / subtemplate,
the latest changes will be reflected in the FA downloaded BI artifacts. By default, if the notification request
comes in 24 hours after the last downloaded BI artifact, a force refresh of the BI catalog on the FA domain is
triggered, thus ensuring a new BI artifact is refreshed on a daily basis for every workflow request.
To be able to validate the custom changes as soon as possible, customers can first set the
BIP_CLIENT_REFRESH_TIME profile value to 15 minutes or more via the Setup and Maintenance work
area. The profile option supports the value in minutes, from a minimum of 15 to a maximum of 1440 (or 24
hours).
PROFILE OPTION LEVELS DESCRIPTION VALUE
BIP_CLIENT_REFRESH_TIME Set the refresh time interval for Unit of
all workflows measure
BIP_CLIENT_REFRESH_TIME_HCM Set the refresh time interval for is
workflows of HCM family level defaulted
BIP_CLIENT_REFRESH_TIME_HCM_[PRODUCT] Set the refresh time interval for to
workflows of product level Minutes

IMPLEMENTATION BEST PRACTICES


It is a best practice to reset the profile value back to 1440 as soon as you’re done. Leaving this profile value
to always 15 will recur performance issues in rendering the notifications.

STEPS TO ENABLE
The BIP_CLIENT_REFRESH_TIME% profile option is not available by default. You must first create the
profile option for the profile value to be entered.
From the Application list, select Oracle Middleware Extensions for Applications. From the Module list,
select Application Core. See pages 4-5 for setup details.

11 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
IMPLEMENTATION CONSIDERATIONS
4.1 In a case where the subtemplate related modifications need to be reflected across all reports, be sure to
reset the time for all and trigger at least one notification per workflow when the next refresh cycle kicks
in and then toggles the profile value.
4.2 In cases where same data model is shared between reports, be sure to reset the refresh time in all of the
workflows that share the same data model and trigger at least one notification per workflow in the
refresh window. These measures are to avoid scenarios where a stale report is run against the latest
data model.
4.3 The above rule also applies for report execution across user locales. If we have the same workflow
notification sent to at least 2 different locales , since the report downloaded in the FA directory is locale
specific, we need to ensure at least 1 report+locale based request is sent per workflow in the refresh
cycle to ensure no unexpected errors are reported due to a stale template for report+locale run against
the latest data model in client code.
4.4 In a case where any report execution errors in the client code, the system makes a call to the BI server to
continue with the report executions to retrieve the notification content.

12 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
5. Persisted Task Sequence API Uptake (Customer Action Not Required)
FA uses the getTaskSequence API to generate a history for better readability of the prior actions taken on
the workflow. SOA now provides an alternative solution where the task history is cached and for
consecutive access of the same task and version from the worklist/email notifications, SOA shouldn't be
recomputing the entire task sequence again.
For example, to show the future approvers section of a history, a few things happen on the fly in the old
mechanism which each slows down the response time of the API:
• The ADF BC WS call is executed to bring the task payload to OBR
• The rules are executed on the above data to retrieve the final set of approvers
• Web Service calls to HCM for list builders will also happen
In the case of parallel approvers, where notifications are triggered to many assignees in parallel,
computation of taskSeq happens for each user repeatedly.
The same is true for any scenario that triggers multiple notifications – the approve action that progresses
the workflow to a bunch of parallel approvers, FYI notifications etc.
The persisted task sequence is enabled by default, no customer action is needed.
If for any reason or if there is an issue with the persisted task sequence API, then only to create profile
option temporarily to disable the persisted task sequence API uptake. But it has performance implications.
PROFILE OPTION LEVEL DESCRIPTION VALUE
BIP_DISABLE_CACHE_HISTORY_HCM_[PRODUCT]_[BPM_TASK] Enable/Disable true, false
Persisted Task
Sequence API

13 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
6. Data Cache: CLOB to XML Type and New APIs
Storing XML data in CLOB based storage will improve performance. It is because any XML processing with a CLOB, the system has to parse the
entire XML into the in-memory DOM and then extracts the needed information, which consumes more CPU and Memory.

Currently, the DATA_CACHE column of the HRC_TXN_DATA table is of type CLOB stores XML data. In a single data set, the system converts the
data cache from CLOB to XML type multiple times to fetch the data, which degrades the performance of BIP Notifications.

A new column named XML_DATA_CACHE of type XMLTYPE has been added to the HRC_TXN_HEADER table. This uptake enables APIs to fetch
data from data cache.

Here is a list of the new APIs:


PACKAGE: PER_BIPNTF_UTILITY PURPOSE / PARAMETERS HOW TO USE IT IN DATA SETS
FUNCTIONALITY DESCRIPTION
FUNCTION extractXMLSequenceForEO( It fetches XML transactionId : Id of the TABLE(per_bipntf_utility.extractXMLSequenceForEO(:transactionId
transactionId Varchar2, sequence for a list transaction for which the , 'ContractDEO','0') )proposedContract
EONames Varchar2, of EOs from data needs to be fetched.
psValue NUMBER DEFAULT NULL, business data of EONames : Provide TABLE(per_bipntf_utility.extractXMLSequenceForEO(:transactionId
parentEO IN VARCHAR2 DEFAULT NULL, data cache. Comma Separated EO ,
parentEOPSValue NUMBER DEFAULT names if you need to fetch 'EmployeeAssignmentDEO,CWKAssignmentDEO,NWAssignmentD
NULL multiple EOs else give EO, PWAssignmentDEO','0')) proposedAssignment
) single EO name. Internally
RETURN xmlsequencetype; it performs an Or SELECT
operation. extractValue(value(ValueRow),'//ScreenEntryValue/DATA') AS
psValue : PS value of EOs. "Value",
If this value is null it extractValue(value(ValueRow),'//BIPData/BIPInputValueId') AS
fetches all the EO XML "InputValueId", --Get value
Sequences irrespective of extractValue(value(ValueRow),'//BIPData/BIPElementEntryValueId
PS value. Here we can ') AS "ElementEntryValueId", --get label
pass comma separated PS extractValue(value(ValueRow),'//ElementEntryId/DATA') AS
values if we want to fetch "ElementEntryId"
XMLSequences with FROM
different PS values. TABLE
parentEO : Parent EO (per_bipntf_utility.extractxmlsequenceForEO(:transId,'ElementEntr
name for the given EO. yValueDEO',null,'ElementEntryDEO','0')) ValueRow
parentEOPSValue : PS WHERE
value of Parent EO. extractValue(value(ValueRow),'//ScreenEntryValue/DATA') IS NOT
NULL

14 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
TABLE(per_bipntf_utility.extractXMLSequenceForEO(:transactionId
,'EmployeeAssignmentDEO,EmployeeAssignmentDEO,CWKAssign
mentDEO,NWAssignmentDEO,
PWAssignmentDEO','0,2,0,0,0')) proposedAsg

TABLE(per_bipntf_utility.extractXMLSequenceForEO(:transactionId
,'EmployeeAssignmentDEO','0,2'))

FUNCTION extractXMLSequenceForVO( It fetches XML transactionId : Id of the SELECT


transactionId Varchar2, sequence for a list transaction for which the per_bipntf_flex.GETATTRIBUTE('AssignmentMDVORow',VALUE(R
VONames Varchar2, of VOs from data needs to be fetched. owType),'AssignmentId','OldValue') AS "CurrentAssignmentId",
parentVOName VARCHAR2 DEFAULT compare data of VONames : Provide per_bipntf_flex.GETATTRIBUTE('AssignmentMDVORow',VALUE(R
NULL data cache. Comma Separated VO owType),'AssignmentId','NewValue') AS "ProAssignmentId",
) names if you need to fetch FROM
RETURN xmlsequencetype; multiple EOs else give TABLE
single VO name. Internally (per_bipntf_utility.extractXMLSequenceForVO(:transId,'Assignmen
it performs an Or tMDVO')) RowType;
operation.
parentVOName : Parent
VO name for the given
VOs.

FUNCTION extractXMLSequence( It fetches XML transactionId : Id of the SELECT


transactionId IN VARCHAR2, sequence for a list transaction for which the extractValue(value(RowType),'//ProcessOwner') AS "Value"
xmlNodeNames IN VARCHAR2 of xml tag names. data needs to be fetched. FROM TABLE
) xmlNodeNames : XML (per_bipntf_utility.extractXMLSequence(:transId,'HrcTxnValues'))
RETURN xmlsequencetype; Tag or Node Names. RowType;

FUNCTION It fetches XML transactionId : Id of the SELECT


extractXMLSequenceForEOByName ( sequence for a transaction for which the per_bipntf_utility.getattributevaluefromcdata(extractvalue(value(p
transactionId VARCHAR2, given Full Qualified data needs to be fetched. ersondeliverymethod),'EO/text()'),:transid,'PERSON_ID:java.lang.Lo
EONameFQP VARCHAR2, EO Name. EONameFQP : Fully ng',1) AS deliverymethodid,
parentEO VARCHAR2 DEFAULT NULL, Qualified EO Name. extractvalue(value(persondeliverymethod),'//PersonId/DATA') AS
parentEOPSValue NUMBER DEFAULT parentEO : Parent EO personid,
NULL name for the given EO. extractvalue(value(persondeliverymethod),'//CommDlvryAddress/
) RETURN xmlsequencetype; parentEOPSValue : PS DATA') AS commdlvryaddress,
value of Parent EO. extractvalue(value(persondeliverymethod),'//CommDlvryMethod/
DATA') AS commdlvrymethod,
existsnode(value(persondeliverymethod),'//DeliveryMethodEORo
w/CommDlvryAddress') AS commdlvryaddresschanged,
extractvalue(value(persondeliverymethod),'//DeliveryMethodEOR
ow/@PS') AS operationmode
FROM

15 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
TABLE (
per_bipntf_utility.extractXMLSequenceForEOByName(:transid,'ora
cle.apps.hcm.people.core.protectedModel.entity.DeliveryMethodE
O') ) persondeliverymethod

TABLE (
per_bipntf_utility.extractXMLSequenceForEOByName(:transid,'ora
cle.apps.hcm.people.core.protectedModel.entity.DeliveryMethodE
O','PersonEO') ) othercommunicationsdff

FUNCTION extractXMLTypeForEO( It fetches XML type transactionId : Id of the XMLTABLE('$A/(GradeDEORow)' PASSING


transactionId IN VARCHAR2, for a list of EOs transaction for which the per_bipntf_utility.extractXMLTypeForEO(:transId,
EONames IN VARCHAR2, from business data data needs to be fetched. 'GradeDEO','0') AS A
psValue NUMBER DEFAULT NULL, of data cache. EONames : Provide columns
parentEO IN VARCHAR2 DEFAULT NULL, Comma Separated EO GRADE_ID NUMBER(18) path 'GradeId/DATA',
parentEOPSValue NUMBER DEFAULT names if you need to fetch CEILING_STEP_ID NUMBER(18) PATH 'CeilingStepId'
NULL multiple EOs else give ) FromClob
) single EO name. Internally
RETURN XMLTYPE; it performs an Or
operation.
psValue : PS value of EOs.
If this value is null it
fetches all the EO XML
Sequences irrespective of
PS value. Here we can pass
comma separated PS
values if we want to fetch
XMLTypes with different
PS values.
parentEO : Parent EO
name for the given EO.
parentEOPSValue : PS
value of Parent EO.

FUNCTION extractXMLTypeForVO( It fetches XML Type transactionId : Id of the XMLTABLE('$A/(GradeDEORow)' PASSING


transactionId IN VARCHAR2, for a list of VOs transaction for which the per_bipntf_utility.extractXMLTypeForVO(:transId,
VONames IN VARCHAR2, from compare data data needs to be fetched. 'GradeVO') AS A
parentVOName VARCHAR2 DEFAULT of data cache. VONames : Provide columns
NULL Comma Separated VO GRADE_ID NUMBER(18) path 'GradeId/DATA',
) names if you need to fetch CEILING_STEP_ID NUMBER(18) PATH 'CeilingStepId'
RETURN XMLTYPE; multiple EOs else give ) FromClob
single VO name. Internally

16 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
it performs an Or XMLTABLE('$A/(GradeDEORow)' PASSING
operation. per_bipntf_utility.extractXMLTypeForVO(:transId,
parentVOName : Parent 'GradeStepVO','GradeVO') AS A
VO name for the given columns
VOs. GRADE_ID NUMBER(18) path 'GradeId/DATA',
CEILING_STEP_ID NUMBER(18) PATH 'CeilingStepId'
) FromClob

FUNCTION extractXMLSequence( It fetches XML Type transactionId : Id of the XMLTABLE('$A/(HrcTxnValues)' PASSING


transactionId IN VARCHAR2, for a list of xml tag transaction for which the per_bipntf_utility.extractXMLType(:transId,'HrcTxnValues') AS A
xmlNodeNames IN VARCHAR2 names. data needs to be fetched. columns
) xmlNodeNames : XML PROCESS_OWNER VARCHAR2(255) path 'ProcessOwner'
RETURN xmlsequencetype; Tag or Node Names. ) from TransactionValues

FUNCTION extractXMLTypeForEOByName It fetches XML Type transactionId : Id of the XMLTABLE('$A/(HrcTxnValues)' PASSING


( for a given Full transaction for which the per_bipntf_utility.extractXMLType(:transId,'HrcTxnValues') AS A
transactionId VARCHAR2, Qualified EO Name. data needs to be fetched. columns
EONameFQP VARCHAR2, EONameFQP : Fully PROCESS_OWNER VARCHAR2(255) path 'ProcessOwner'
parentEO VARCHAR2 DEFAULT NULL, Qualified EO Name. ) from TransactionValues
parentEOPSValue NUMBER DEFAULT parentEO : Parent EO XMLTABLE('$A/(DeliveryMethodEORow)' PASSING
NULL name for the given EO. per_bipntf_utility.extractXMLTypeForEOByName(:transid,'oracle.a
) RETURN xmltype; parentEOPSValue : PS pps.hcm.people.core.protectedModel.entity.DeliveryMethodEO')
value of Parent EO. AS A
columns
PERSON_ID NUMBER PATH 'PersonId/Data'
) delivermethod

FUNCTION getAttributeFromTXNContext( It fetches value of transactionId : Id of the SELECT


transactionId VARCHAR2, attribute from transaction for which the personT.display_name AS Person_Name,
attributeName VARCHAR2, TransCtx. data needs to be fetched. peopleT.person_number AS Person_Number,
parentTagName VARCHAR2 DEFAULT attributeName : name of NULL AS action_name,
NULL the attribute for which the NULL AS action_reason,
) RETURN VARCHAR2; value needs to be fetched. per_bipntf_utility.getAttributeFromTXNContext(:transId,'hcmEffect
parentTagName : parent iveDate') AS Effective_Date
node name of the FROM
attribute. Per_person_names_f_v personT,
per_all_people_f peopleT,
hrc_txn_header txnheader
WHERE
txnheader.transaction_id =:transId
AND txnheader.module_identifier = 'ManageEligibleJobs'
AND personT.PERSON_ID = txnheader.subject_id

17 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
AND
TO_DATE(per_bipntf_utility.getAttributeFromTXNContext(:transId,'
hcmEffectiveDate'),'rrrr-mm-dd') BETWEEN
personT.EFFECTIVE_START_DATE AND
personT.EFFECTIVE_END_DATE
AND peopleT.PERSON_ID = txnheader.subject_id

FUNCTION getAttributeFromBusinessData( It fetches value of transactionId : Id of the SELECT


transactionId VARCHAR2, attribute from transaction for which the per_bipntf_utility.getAttributeFromBusinessData(1,'EffectiveStartD
attributeName VARCHAR2, Business Data. data needs to be fetched. ate','JobLegDeveloperFlexCAprivateEO',0,2) FROM DUAL;
eoName VARCHAR2, attributeName : name of
psValue VARCHAR2, the attribute for which the
indexValue NUMBER DEFAULT 1 value needs to be fetched.
)RETURN VARCHAR2; eoName: Name of the EO
under which this attribute
is present.
psValue : PS value of EO.
indexValue :
index/Position of EO.

FUNCTION getAttributeFromCompare( It fetches value of transactionId : Id of the SELECT


transactionId VARCHAR2, attribute from transaction for which the per_bipntf_utility.getAttributeFromCompare('1','JobCustomerFlexJ
voName VARCHAR2, Compare Data. data needs to be fetched. obContext1VO','jobglobal','NewValue',4) FROM DUAL;
attributeName VARCHAR2, voName : ame of the VO
valueType VARCHAR2, under which this attribute
indexOfVO NUMBER DEFAULT 1 is present.
)RETURN VARCHAR2; attributeName : name of
the attribute whose
dependents attribute's
value to be fetched.
valueType : name of the
attribute from which the
value needs to be fetched.
indexOfVO : index of VO
in compare Data

FUNCTION isNodeExists( Checks if there transactionId : Id of the SELECT


transactionId IN VARCHAR2, exists a xml node transaction for which the per_bipntf_flex.GETATTRIBUTE('GradeVO',VALUE(RowType),'Nam
XPath IN VARCHAR2 with the given data needs to be fetched. e','OldValue') AS "OldName",
) xpath. Xpath : xpath of the node. per_bipntf_flex.GETATTRIBUTE('GradeVO',VALUE(RowType),'Nam
RETURN NUMBER; e','NewValue') AS "NewName",
FROM

18 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
TABLE (
per_bipntf_utility.extractxmlsequenceforvo(:transId,'GradeVO'))
RowType
WHERE
:checkSecurity = 'true'
AND :taskStatus = 'COMPLETED'
AND
per_bipntf_utility.isNodeExists(:transId,'//COMPAREDATA/Compa
reVO') = 1
AND 'T' =
per_bipntf_utility.check_compare_security(:transId,'GradeVORow',
NULL)

PACKAGE: per_bipntf_flex PURPOSE / PARAMETERS HOW TO USE IT IN DATA SETS


FUNCTIONALITY DESCRIPTION
FUNCTION getEFFAttributesFromCompare This fetches EFF p_transaction_id : Id of SELECT
( data from compare the transaction for which *
p_transaction_id VARCHAR2, data. the data needs to be FROM
p_part_of_flex_tag_name VARCHAR2, fetched. TABLE (
p_baseVO_name VARCHAR2, p_part_of_flex_tag_name per_bipntf_flex.getEFFAttributesFromCompare(:transId,'^Informati
p_checkSecurity VARCHAR2 DEFAULT : Starting or part of flex tag on.*privateVORow$','OrgUnitClassificationVORow','TRUE','PER_OR
'TRUE', name or regex. GANIZATION_INFORMATION_EFF') ) flexEff
p_flexFieldCode VARCHAR2 DEFAULT p_baseVO_name : Parent
NULL or Base VO Name.
) RETURN p_checkSecurity : This
PER_BIPNTF_ATTRIBUTE_ROWSDATA; determines whether
security check needs to be
performed or not. By
default security check is
enforced.
p_flexFieldCode : This is
need to fetch flex
information like context
code.

FUNCTION getDFFAttributesFromCompare This fetches DFF p_transaction_id : Id of SELECT


( data from compare the transaction for which flexDff.LABEL_VALUE AS NAME,
p_transaction_id VARCHAR2, data. the data needs to be flexDff.ATTRIBUTE_NEW_VALUE AS NEWCACHEVALUE,
p_part_of_flex_tag_name VARCHAR2, fetched. flexDff.ATTRIBUTE_OLD_VALUE AS OLDCACHEVALUE,
p_baseVO_name VARCHAR2, p_part_of_flex_tag_name flexDff.VO_ROW_NUMBER,
p_checkSecurity VARCHAR2 DEFAULT : Starting or part of flex tag flexDff.ATTRIBUTE_NAME,
'TRUE', name or regex. flexDff.OPERATION_TYPE,

19 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
p_flexFieldCode VARCHAR2 DEFAULT p_baseVO_name : Parent flexDff.CONTEXT_CODE
NULL or Base VO Name. FROM
) RETURN p_checkSecurity : This TABLE (
PER_BIPNTF_ATTRIBUTE_ROWSDATA; determines whether per_bipntf_flex.getDFFAttributesFromCompare(:transId,'RateCusto
security check needs to be merFlex','GradeRateVORow','TRUE','PER_RATES_DF') ) flexDff
performed or not. By
default security check is
enforced.
p_flexFieldCode : This is
need to fetch flex
information like context
code.

FUNCTION getKFFAttributesFromCompare This fetches KFF p_transaction_id : Id of SELECT


( data from compare the transaction for which *
p_transaction_id VARCHAR2, data. the data needs to be FROM
p_part_of_flex_tag_name VARCHAR2, - fetched. TABLE (
p_baseVO_name VARCHAR2, p_part_of_flex_tag_name per_bipntf_flex.getKFFAttributesFromCompare(:transId,'PeopleGro
p_checkSecurity VARCHAR2 DEFAULT : Starting or part of flex tag upFlexfieldVO','AssignmentMDVORow','FALSE') )]
'TRUE', name.
p_flexFieldCode VARCHAR2 DEFAULT p_baseVO_name : Parent
NULL or Base VO Name.
) p_checkSecurity : This
RETURN determines whether
PER_BIPNTF_ATTRIBUTE_ROWSDATA; security check needs to be
performed or not. By
default security check is
enforced.
p_flexFieldCode : This is
need to fetch flex
information like context
code.

IMPLEMENTATION CONSIDERATIONS
6.1. While uptaking New XMLType APIs and SQL Pruning, avoid renaming of data set names, data set column names (or) deleting of data sets or
data set column as much as possible for minimal impact on the modified reports and data models.
6.2. Avoid using DATA_CACHE column of HRC_TXN_DATA directly in data sets. Always use the provided utility APIs to fetch data from data cache.
6.3. For new APIs, just pass EO or VO name as parameter, do not concatenate with "Row" at the end. This is taken care of by the API internally.

20 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
7. Diagnostic Utility using DATA_CACHE column
This utility outputs the BIP artifacts which contains a list of custom data models which have data_cache
references and the report information.

Steps to enable:
7.1 Login with ORA_FND_DIAG_ADVANCED_USER_JOB delivered role.
7.2 Navigate to Settings and Actions – Troubleshooting – Run Diagnostics Tests.

7.3 Search Test Name BIP DataModel with DataCache References, in search results table, Select the test
then Add to Run.

21 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
7.4 Scroll to Run Tests region, Select the test and Run.
7.5 A message with the TestRun Id is populated. Take note of the TestName for future references. Click OK.

7.6 In Run Status region, click Refresh.


7.7 Expand the TestRun, click Report of said test name.

7.8 Sample report:

BIP DataModel with DataCache References


Test Name DATA_MODEL_DATA_CACHE_REF_CHECK
Start Date 2021-10-03T09:57:03Z
End Date 2021-10-03T09:57:05Z
Execution Id CC11041CC7AAD423E0531664F00A8E79
Run Id CD159E591022050EE0531564F00A6D98
NLS Bundle
Source Language en
Status Code S
Version 11.13.21.07.0
Date Format YYYY-MM-DDThh:mm:ss.sTZD

Diagnostics_Engine_Log

Session Information
The Test DATA_MODEL_DATA_CACHE_REF_CHECK is using a database connection with Session Id 61 and Serial
Number 36029

22 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
FetchBIPDataModelsWithDataCacheReferences
DATA_CACHE column of HRC_TXN_DATA will be deprecated/deleted in future and also in order to reduce the
rendering time of the BIP notifications, we have come up with xml_data_cache (a new column which stores the data in
xml format) as the operations on the clob type column(data_cache) will cause performance overhead.

Below is the table which gives you the list of Data Models which has Data_Cache references and an action has to be
taken on them

Data Model Information


Data Model Name Report Data Set Name(s)
Name
/u04/bi/catalog/OracleBIApps/root/shared/custom/ null [CurrentUserRoles, EligibleJobsProposed,
human+capital+management/workflow+notifications/ CurrentSalary, ExpenseAccount,
dsemploymentupdate.xdm CurrentOtherCompensation, ProposedUserRoles,
UpdateCompCurValues, DeletedComp,
DeletedRecords, ProposedManagers, PeopleGroup,
SecurityFinal, UpdateCompDetails,
DiscontinuedRecords, CurrentSalaryComponent,
ReassignDetailsForLineManager, ProposedSalary,
ProposedOtherCompensation, ReassignDetails,
UpdateCompProposedValues, EligibleJobsCurrent,
PersonHeader, ProposedSalaryComponent,
PrimaryAssignment, ContractDFF,
NewCompAllDetails, NewCompValue,
DirectReportees, DeletedCompDetails,
NewCompRec, ContractDDF,
DirectReporteesForLineManager, AssignmentDDF,
LegalEntity, ContinuedAfterEndDate,
AssignmentDFF, ProposedTerm,
ProposedAssignment]

7.9 Follow action plan described in How to Identify BIP Reports Accessing DATA_CACHE Column and
Replace References with XMLType (Doc ID 2692905.1), raise a SR for technical assistance when
necessary.

23 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
GETTING STARTED IS EASY
8.1 Navigate from Tools to Transaction Console. On the Approval Rules page, search for the Process Name
and confirm that Bypass Approvals is not selected.

8.2 Create the transaction.


8.3 On Transaction Summary, click Action for Download.

8.4 Open the csv file for the BPM Task name:

8.5 Log in to BPM Worklist (https://host:port/integration/worklistapp), and select Administration then click
Task Configuration. Search PromotionsApproval.
8.6 Associated flex fields have been modified. It is advised to perform a synchronization operation before doing
any edits. It might take few minutes for the operation to complete.

24 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
8.7 Log in to BI Answers (https://host:port/analytics/saw.dll?bieehome). Navigate to "/Shared
Folders/Human Capital Management/Workflow Notifications". Locate the PromotionReport, click Edit.

8.8 Get the Data Model and its location folder.

25 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
ADDITIONAL RESOURCES
Fusion HCM BIP Notifications: Best Practice to Customize the Report Template, Data Model or Sub-Template
(Doc ID 2647434.1)
• ReportAndDMMapping (21.82 KB)

Customizations to Workflow Notifications Don't Reflect Instantly In Email Or In-App Notifications (Doc ID
2620900.1)
20A Use Defined FlexFields to Build Rules for Approval Workflows (What’s New)
20A Approval Notification for Time Cards Redesigned Self-Service Pages Introduction (What’s New)
20A Avoid Assigning Approvals to Specific Users (What’s New)
20B Enhanced Notifications Support in Role Delegation (What’s New)
20B Data Visibility in Document Records' Post Approval Notification (What’s New)
20B Individual Compensation Approval Notification Enhancements (What’s New)
20B Compensation Zone Attributes Introduced in Salary Notifications (What’s New)
20B Configure Commenting Options for Approval and Rejection (What’s New)
20B Extend Requisition Approval Rules with Flexfields (What’s New)

26 Release 13 Configurable Notifications Enhancements (21C Update) | Version 2.0


Copyright © 2021, Oracle and/or its affiliates
CONNECT WITH US
Call +1.800.ORACLE1 or visit oracle.com.
Outside North America, find your local office at oracle.com/contact.

blogs.oracle.com facebook.com/oracle twitter.com/oracle

Copyright © 2021, Oracle and/or its affiliates. All rights reserved. This document is provided for information purposes only, and the contents hereof are subject to change without
notice. This document is not warranted to be error-free, nor subject to any other warranties or conditions, whether expressed orally or implied in law, including implied warranties
and conditions of merchantability or fitness for a particular purpose. We specifically disclaim any liability with respect to this document, and no contractual obligations are formed
either directly or indirectly by this document. This document may not be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without
our prior written permission.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of
SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered
trademark of The Open Group. 0120
Release 13 Configurable Notifications Enhancements (20B Update)
October, 2021
Author: Surlina Yin

You might also like