Understanding Alerts in Oracle Fusion Learning Cloud 1.6
Understanding Alerts in Oracle Fusion Learning Cloud 1.6
Understanding Alerts in Oracle Fusion Learning Cloud 1.6
Oracle Learning
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.
The revenue recognition disclaimer on this page is required for any business
brief that addresses future functionality or for products that are not yet generally
available (GA). If you are unsure whether your statement of direction needs the
disclaimer, read the revenue recognition policy. If you have further questions
about your content and the disclaimer requirements, e-mail
[email protected]. If you do not need the disclaimer, you may delete it
and the page that it appears. First, display hidden characters by clicking on the
Paragraph icon on the Home toolbar. It is a small, square icon that appears to the
left of the Quick Style Gallery. Then, highlight all the text on this page and press
the Delete key. Notice that there is a section break displayed as a double-dotted
line at the bottom of this page. Continue to press Delete until the page
disappears and your cursor is on the Table of Contents page. Be sure not to
remove the section break, or the formatting of the title page will be incorrect.
Delete this note before publishing.
The testing disclaimer in the TM block on the last page (highlighted in yellow) is
provided by the FCC for hardware products. It must appear in the TM block.
Purpose statement 2
Disclaimer 2
Document Control 6
Introduction 7
Prerequisite Documentation 7
Event Alerts 7
Enabling Alerts in Learning Cloud 7
Process Learning Alerts Scheduled Job 8
Learning Cloud Alerts 8
Event Alerts Configuration Overview 8
Available Learning Cloud Alerts 9
Resource Alerts based on REST 14
learnerLearningRecords REST API 14
Building an Oracle Learning Resource Alert 14
Creating a Basic Oracle Learning Learner Learning Records Resource
Alert 15
Create the Resource Alert 15
Define the Filter 15
Create a Message for the Resource Alert 17
Run a Simulation to Test the Alert 17
Learner Learning Records Resource Alert Configuration Details 18
Key LearnerLearningRecord Lookups 18
Filter Examples 19
Recipient Examples 20
Message and Group by Examples 20
Messages 21
Expressions 21
Attachments & Links 22
Group By 23
Performance Considerations when Creating Resource Alerts 25
Working Examples 26
General Considerations 40
Resource Alert Digests 40
Troubleshooting Alerts 42
WLF-00004 Special Case 43
Frequently Asked Questions 47
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.
Prerequisite Documentation
It is recommended that you read the following documents, located on the Oracle Help Center.
• LearnerLearningRecords REST API Documentation
• Alerts Composer User Documentation
Event Alerts
Event alerts are based on the context provided by the calling client. They're triggered when a specific event occurs in
the application. Event alerts are preconfigured in Oracle Learning. The event that triggers the alert is hardcoded in
the system, but the recipient’s notification body templates can be customized in the alert settings.
Notifications are triggered based on predefined conditions for two types of alerts:
• Event Alerts: Event Alerts are based on the context provided by the calling client. They're triggered when a
specific event occurs in the application. You can't modify the triggering criteria for notifications. For example,
you can notify a learner when an offering that they are assigned to has changed.
• Resource Alerts: Resource Alerts are based on Oracle Cloud REST API resources. The resources must be
deployed in the environment. You can modify the triggering criteria for notifications by defining filters on the
resource attributes if you have the required privileges to access the REST resources. The REST endpoints are
delivered by Oracle, and you build the alerts. For example, you can send out alerts to all the learners that have
required learning within the last 24-hour period.
Learn Custom Alert WLF-00003 This is a custom-defined alert that is initiated by an Administrator when
viewing assignments. You can configure this alert to be used as an action
from the Manage Learners area. When users click Send Alert Action, they
can select the template they want to use to send an alert to learners. The
alert templates include message text, the recipient, and the
communication method (email or worklist).
Learning Cloud Instructor WLF-00009 Alerts instructors when an Administrator removes one of their instructor-
Booking Event Removal led activities.
Learning Payment WLF-00007 Indicates payment for a learning item was successfully processed.
Successfully Processed
Offering Activity Definition WLF-00008 Alerts an instructor when an Administrator has changed the details to an
has Changed for an instructor-led activity.
Instructor
Offering Definition has WLF-00002 Alerts learners when an Administrator changes the details to an
Changed instructor-led activity.
Pay for Learning Item WLF-00006 Sends a message to the assignment creator to request that they pay for
an offering.
Upcoming ILT Activity to WLF-00004 Reminds learning instructors when the start date to one of their upcoming
Instructors Reminder 1 instructor led activities is approaching.
Table 1. Learning Cloud Alerts
WLF-00004: activityName
UpcomingILTActivityReminderToInstructors activityDescription
activityStartTime
activityStartDate
activityTimezone
activityEndTime
activityNumber
activityVirtualURL
classroomList
instructors
resources
offeringName
learningItemLink
Learning Item FlexFields
Offering FlexFields
ManagerEmail
ManagerUserName
LearningItemDescription
LearningItemName
learningItemLink
ImageTag
ThumbnailUrl
LearningItemType
LearningItemStartDate
LearningItemEndDate
LearningItemShortDescription
OfferingStartDate
OfferingEndDate
offeringCoordinatorName
offeringCoordinatorEmailAddress
offeringCoordinatorPhoneNumber
Learning Item FlexFields
Offering FlexFields
Course FlexFields
Spec FlexFields
assignmentSubType
assignmentType
attributedAssigner
AssignmentStartDate
DueDate
AssignmentStatus
AssignmentSubStatus
assignerFirstName
assignerLastName
assignerEmail
assignerWorklistUser
assignerDisplayName
assignerManagerEmail
assignerManagerUserName
selfServicePrice
selfServiceCurrency
numberOfDaysToPay
WLF-00007: FirstName
LearningPaymentSuccessfullyProcessed LastName
LearnerEmail
notificationUserName
LearnerDisplayName
ManagerEmail
ManagerUserName
LearningItemDescription
LearningItemName
learningItemLink
ImageTag
ThumbnailUrl
LearningItemType
LearningItemStartDate
LearningItemEndDate
LearningItemShortDescription
OfferingStartDate
OfferingEndDate
offeringCoordinatorName
offeringCoordinatorEmailAddress
offeringCoordinatorPhoneNumber
WLF-00008: learningActivityDate
OfferingActivitydefinitionhaschangedforanIn learningActivityStartTime
structor learningActivityEndTime
learningActivityTimezone
learningActivityTitle
learningActivityDescription
learningActivityExpectedEffort
learningActivityClassroom
learningActivityVirtualClassroom
learningActivitVirtualClassroomLink
learningActivityInstructors
learningActivityLocation
learningActivityResources
learningActivityAdhocResources
learningActivityAddToCalendar
OfferingTitle
OfferingDescription
learningItemLink
Learning Item FlexFields
Offering FlexFields
offeringFlexFieldMap
courseTitle
CourseTitle
CourseSyllabus
thumbnailURL
thumbnail
Course FlexFields
ChangeDetails
bookingEventType
learningItemType
offeringCoordinatorName
offeringCoordinatorEmailAddress
offeringCoordinatorPhoneNumber
isRemoved
InstructorWorklistUser
notificationUserName
InstructorFirstName
InstructorLastName
InstructorEmail
InstructorLineManagerUser
InstructorLineManagerEmail
WLF-00009: learningActivityDate
LearningCloudInstructorBookingEventRemov learningActivityStartTime
al learningActivityEndTime
learningActivityTimezone
learningActivityTitle
learningActivityDescription
learningActivityExpectedEffort
learningActivityClassroom
learningActivityVirtualClassroom
learningActivitVirtualClassroomLink
learningActivityInstructors
learningActivityLocation
learningActivityResources
learningActivityAdhocResources
learningActivityAddToCalendar
OfferingTitle
OfferingDescription
learningItemLink
Learning Item FlexFields
Offering FlexFields
offeringFlexFieldMap
courseTitle
CourseTitle
CourseSyllabus
thumbnailURL
thumbnail
Course FlexFields
ChangeDetails
bookingEventType
learningItemType
offeringCoordinatorName
offeringCoordinatorEmailAddress
offeringCoordinatorPhoneNumber
isRemoved
InstructorWorklistUser
notificationUserName
InstructorFirstName
InstructorLastName
InstructorEmail
InstructorLineManagerUser
InstructorLineManagerEmail
Table 2. Valid Tokens
Documentation for the detail levels under these top-level child resources.)
• ……/Completion Details
• ……/Completion Summary
• ……/Learning Outcomes
• ……/Learning prerequisites
• ……/Selected Course Offerings
Sometimes the REST response data needs manipulation or transformation when creating an alert.
• Dates: “2019-02-23T23:16:05.410+00:00” = “23rd February”
• Lookup values: “ORA_ASSN_REC_INPROGRESS” = “In Progress”
• Username: “100000008153818” = “john.smith”
• Recipient email address of the Learner’s Manager =
${AlertUtils.empManager(learnerLearningRecords.assignedToId).WorkEmail}
4. In the Edit Expression dialog box, select the parameters to build the filter expression.
- Enter a name for the expression.
- Use the Prefix With option to specify any prefix operators on the expression.
- In the Attribute field, select the resource name and the attribute that you want to specify the filter condition
on.
- In the Operator field, select the logical operator.
- In the Value field, specify the value for the condition.
- Click Insert into Expression.
- Click Apply. The expression appears on the Add Filter page.
- Repeat steps 3 and 4 to add more filter expressions.
- Click Apply to return to the Add Resource Alert page.
- Repeat steps 1 to 4 to define more filters on the Resource alert.
In this example, notice that a filter has been created that includes required assignments that have occurred within the
past 24 hour period.
Define Who Receives the Alert and How They Receive It
Send the alert to learners via an email message and via a worklist notification.
1. On the Add Resource Alert page, click the Templates tab and then click Add Template.
2. Enter a name for the template and select the default language. The character limit for template name is 80.
By default, the template is enabled.
3. Click Edit and select Manage Recipients and Message.
4. On the Edit Template page, click Add Recipient.
In the above example, two recipient lists were created: One to send learner alerts to the worklist, and another to send
alerts to the email address on learner person records.
This simulates how the alert is run, and how it appears to end users. You can see the results of the run in Alerts
History. Once you are satisfied with how the message works and looks to end users, the next step is to run the alert in
live mode. You can do this by selecting No from the Simulate Run drop-down list. You can then validate that
learners that had required assignments in the last 24 hours received the email and worklist notification on the Alerts
History page.
Note: refer to the Lookup Values chapter of the Implementing Oracle Learning guide on docs.oracle.com for
instructions on how to do this.
Assigned to ORA_PERSON
"href" : "https://hcym- ORA_SPECIALIST
test.fa.us2.oraclecloud.com:443/hcmRestApi/reso
urces/11.13.18.05/learnerLearningRecords/{id}/l
ov/AssignedToTypeLOV",
Filter Examples
The table below provides some additional common filter examples that you can use.
Current Assignments
${assignmentCreatedDate} >= sysdate-1 All assignments created in the last 24 hours that are
${assignmentType} = ‘ORA_REQUIRE_ASSIGNMENT' required assignments.
Assignments Completed
${assignmentCompleteDate} >= sysdate-7 All assignments completed this week. Can create the alert
${assignmentStatus} = ‘ORA_ASSN_REC_COMPLETE’ to be run weekly.
${assignmentDueDate} >= sysdate+7 All Specialization assignments past due for more than 1
${learningItemType} = 'ORA_SPECIALIZATION' week.
${assignmentStatus} = ‘ORA_ASSN_REC_ACTIVE’
${assignmentStatus} = ‘ORA_ASSN_REC_CONTENT_COMPLETE'
${assignmentType} = 'ORA_ASSN_REC_WITHDRAW_PENDING'
${assignmentDueDate} >= sysdate All assignments due in the next 24 hours (two expressions
${assignmentDueDate} <= sysdate+1 in one filter)
${assignmentStatus} = ‘ORA_ASSN_REC_ACTIVE’
${assignmentStatus} = ‘ORA_ASSN_REC_CONTENT_COMPLETE'
${assignmentType} = 'ORA_ASSN_REC_WITHDRAW_PENDING'
${assignmentDueDate} >= sysdate+7 All my teams assignments past due for more than 1 week.
${assignmentStatus} = ‘ORA_ASSN_REC_ACTIVE’
${assignmentStatus} = ‘ORA_ASSN_REC_CONTENT_COMPLETE'
${assignmentType} = 'ORA_ASSN_REC_WITHDRAW_PENDING'
Recipient Examples
In this example, there are two recipient lists; one to send to learners (the alert to their worklist), and another to send to
the email address on their person records.
${AlertUtils.person(learnerLearningRecords.assignedToId).WorkEmail} When you need employee’s Email and only have a Person
ID.
This preconfigured resource alert contains example content, such as example assignment filter expressions, message
text with tokens, and communication method expressions that you can change to suit your organization’s needs.
Messages
When creating a message, you will need to do the following:
1. In the Message section, set up the notification format, select the HTML or Text format for the message text.
2. Enter the message subject. You can also insert expressions in the subject using the Expression icon.
3. In the Group By field, specify an expression for the attribute that the message should be grouped by.
4. Enter the message text. You can also include expressions in the text.
5. Use the rich text editor to format the message text. You can select options such as font, size, style, and so on.
Expressions
When you create a subject or message you can use expressions. Expressions in resource alerts are similar to tokens
found in word processing software.
You select an attribute/token that exists in the learnerLearningRecord REST resource, and add it to the subject or
message. At run time, the appropriate value is placed in this attribute/token. Select the Insert Expression option to
build expressions and insert them into the message text or subject text.
https://HOST/hcmRestApi/resources/latest/learnerLearningRecords?q=learningItemNumber='OLC153792'&expan
d=completionDetails.relatedMaterials
learningRecords/completionDetails/relatedMaterials.
https://HOST/hcmRestApi/resources/latest/learnerLearningRecords?q=learningItemNumber='OLC153792'&expan
d=completionDetails
"completionDetails": {
"items": [
"activityId": 300100189347364,
"activityNumber": "OLC153797",
"activityType": "ORA_ONLINE_IL",
"activityTitle": "activ",
"activityDescription": null,
"activityShortDescription": null,
"activityDisplayOrder": 1,
"activitySectionId": null,
"activitySectionNumber": null,
"activitySectionTitle": null,
"activitySectionDescription": null,
"activitySectionDisplayOrder": null,
"activitySecComplRequired": null,
22 Business / Technical Brief / Understanding Alerts in Oracle Learning / Version 1.1
Copyright © 2022, Oracle and/or its affiliates / Public
"activitySectionTotalActivities": null,
"activitySectionAttemptStatus": null,
"activitySectionAttemptStatusMeaning": null,
"activitySectionAttemptCompletionProgress": null,
"activityPassingScore": null,
"activityExpectedEffort": null,
"activityEffortUnits": "ORA_DUR_HOUR",
"activityComplRequirement": "ORA_REQUIRED",
"activityLearnerMarkCompl": "N",
"activityDate": "2020-06-19",
"activityTimeZone": "America/Los_Angeles",
"virtualClassroomJoinLink": "https://oracle.com",
"virtualClassroomInformation": "https://oracle.com",
When the user clicks on this, they can download the ICS attachment.
Group By
The Group By functionality is used to arrange data results into groups based on some defined attribute in the
learnerLearningRecord REST resource. For example, in the table below, there are two “group by” examples listed. One
allows grouping by the learners’ assignments (learning assigned to), and one groups by the manager’s direct reports
assignments (learning assigned to). You can use the expression builder to define the “group by”. Note that to group
by the manager directs you will need to manipulate the expression as shown in the table below. This can’t be
configured via the group by expression builder.
GROUP BY DEFINITION
${AlertUtils.write("<table
border=\"1\"><tr><th>Learning Item Title</th>
<th>Assigner Name</th></tr>")}
${AlertUtils.loop('learnerLearningRecords','<tr><td>${l
earningItemTitle}</td><td>${assignerDisplayName}<
/td></tr>')}
${AlertUtils.write("</table>")}
Message:
${AlertUtils.write("<table
border=\"1\"><tr><th>Name</th> <th>Learning
Item Title</th></tr>")}
${AlertUtils.loop('learnerLearningRecords','<tr><td>${
assignedToDisplayName}</td><td>${learningItemTitl
e}</td></tr>')}
${AlertUtils.write("</table>")}
${AlertUtils.loop('learnerLearningRecords','<tr><td><a
${href}="${learningItemDeepLink}">${learningItemTit
le}</a></td><td>${assignerDisplayName}</td></tr>'
)}
Filter Recommendations:
• Be smart with your filters, it is imperative to ensure that filters are used in a way to only bring in a subset of
enrollment data. For example, use assigned on date to only evaluate enrollments since a certain time vs.
assignments over the entire life of the product.
Example - ${assignedDate}>=sysdate-7 AND ${assignedDate}<=sysdate
• Always use the Learning Item type field to evaluate enrollments. We recommend using this filter always:
Learning Type: ${learningItemType} = 'ORA_COURSE' OR 'ORA_SPECIALIZATION'
• When a child resource is being used as a filter the name of the filter should be structured in the following format:
<ParentResource Name>__<FilterName>. The __ are two underscores. <Parent
ResourceName>”_””_”<FilterName>
- Filter Name: learnerLearningRecord__DeliveryMode
- Filter Value: ${offeringDeliveryMode} = 'ORA_ILT’
- By using this format, you are telling the resource alert engine to use the sub resource as an exist clause.
Then, it only pulls in records where this child resources is met, therefore improving the performance because
fewer results will be returned.
• Use Fields that have indexes: Here are a list of learnerLearningRecord fields that have indexes on them:
- SUB_STATUS
- STATUS
- REQUEST_DETAIL_ID
- EFFECTIVE_START_DATE
- EFFECTIVE_END_DATE
- LEARNER_ID
- EVENT_TYPE
- ATTRIBUTION_ID
- ATTRIBUTION_TYPE
- ASSIGNED_ON_DATE
- LEARNING_ITEM_TYPE
- LEARNING_ITEM_SUB_TYPE
- ORIGINAL_EVENT_TYPE
- EVENT_ASSIGNMENT_ID
- ASSIGNMENT_RECORD_NUMBER
- LEARNING_ITEM_ID
- ASSIGNMENT_RECORD_ID
- EVENT_CREATED_BY_ID
- COMPLETION_DATE
- NOTIFICATION_STATUS
- ACCESS_PERMISSION_ID
- ASSIGNMENT_RECORD_ID
- CREATION_DATE
- ASSIGNMENT_DUE_DATE
- OFFERING_DELIVERY_MODE
- OFFERING_START_DATE
- LAST_MODIFIED_DATE
- ASSIGNMENT_CREATE_DATE
${assignmentType} = 'ORA_REQUIRE_ASSIGNMENT'
${learningItemType} = 'ORA_COURSE'
${assignmentStatus} = 'ORA_ASSN_REC_ACTIVE'
<table>
${AlertUtils.loop('selectedCourseOfferings,completionDetails','','<tr><td>${activityTitle}</td
><td>${activityTypeMeaning}</td><td>${AlertUtils.formatDate(activityDate,\'dd-MMM-
yyyy\')}</td><td>${activityStartTime}</td><td>${activityEndTime}</td><td>${activityTim
eZone}</td><td><a class="NotificationLink" ${href}="${addToCalendarLink}"
;target="_blank">Add to Calendar</a></td></tr>')}
</table>
<br><% } %>
</div>
</style>
<tr>
<td>
<div class="NotificationTextContent">
<h3>Why do I see this </h3>
<p>You still have some overdue Learning Assignments. Please see the summary
below:</p>
<table>
${AlertUtils.loop('learnerLearningRecords','<tr><td><img
${src}="${learnerLearningRecords.learningItemThumbnailLink}" alt="Missing cover art"
width="200" height="100"></td><td><a class="NotificationLink"
${href}="${learningItemDeepLink}"
target="_blank">${learningItemTitle}</a></td><td>${learningItemTypeMeaning}</td><td>
Assigned on ${AlertUtils.formatDate(assignmentCreatedDate,\'dd-MMM-
yyyy\')}</td><td>Due since <b>${AlertUtils.formatDate(assignmentDueDate,\'dd-MMM-
yyyy\')}</b></td></tr>')}
</table>
<p><h3>Actions </h3>For more information, please go here. </p>
<p class="NotificationFooterContent"> For any additional question, please contact your HR
representative. <br> The Learning and Development Team</p>
</div>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><img
src="http://www.oracleimg.com/ocom/groups/public/@ocom/documents/digitalasset/19
6877.gif" alt="Hardware and Software Engineered to Work
Together" border="0"></td>
<td width="20"><img
src="http://www.oracleimg.com/ocom/groups/public/@ocom/documents/digitalasset/18
9995.gif" alt="" width="20" height="65" border="0"></td>
</tr>
<tr>
<td>
<table>
<tbody>
<tr class="NotificationFooterContent">
<td class="NotificationFooterContent">Copyright © 2020, Oracle. All rights
reserved.</td>
<td class="NotificationFooterContent"><a class="NotificationLink"
href="http://www.oracle.com/us/corporate/contact/index.html" target="_blank"
rel="noopener"> <u>Contact Us</u></a> | <a class="NotificationLink"
href="http://www.oracle.com/html/copyright.html" target="_blank"
rel="noopener"><u>Legal Notices and Terms of Use</u></a> | <a class="NotificationLink"
32 Business / Technical Brief / Understanding Alerts in Oracle Learning / Version 1.1
Copyright © 2022, Oracle and/or its affiliates / Public
href="http://my.oracle.com/content/idcplg/cnt337893.pdf?IdcService=GET_FILE&noS
aveAs=1&Rendition=Web&RevisionSelectionMethod=LatestReleased&allowI
nterrupt=1&dDocName=cnt337893" target="_blank" rel="noopener"> <u>Privacy
Statement</u></a></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
Screenshot
<tr>
<td>
<div class="NotificationTextContent">
<h3>Why do I see this </h3>
<p>You have been assigned this training by
${learnerLearningRecords.assignerDisplayName} on
${AlertUtils.formatDate(learnerLearningRecords.assignmentCreatedDate, 'dd-MMM-yyyy')}.
It is due on ${AlertUtils.formatDate(learnerLearningRecords.assignmentDueDate, 'dd-MMM-
yyyy')}</p>
<p>Description : ${learnerLearningRecords.liShortDescription}</p>
<h3>Actions </h3>
<p>Your status on this training is currently
${learnerLearningRecords.assignmentStatusMeaning} -
${learnerLearningRecords.assignmentSubStatusMeaning} </p>
<table>
${AlertUtils.loop('learnerLearningRecords,completionDetails','','<tr><td>${activitySectionTitl
e}</td><td><img ${src}="${activityCoverArtLink}" alt="Missing cover art" width="200"
height="100"></td><td>${activityTitle}</td><td>${activityShortDescription}</td></tr>')}
</table></div>
<table>
${AlertUtils.loop('selectedCourseOfferings,completionDetails','','<tr><td>${activityTitle}</td
><td>${activityTypeMeaning}</td><td>${AlertUtils.formatDate(activityDate,\'dd-MMM-
yyyy\')}</td><td>${activityStartTime}</td><td>${activityEndTime}</td><td>${activityTim
</table>
<br><% } %>
</div>
<br><% } %>
</div>
Note: Copy paste the code into the code version of the email body, not the rich text version.
General Considerations
(For both Event and Resource Alerts)
You can use the working examples listed above, but if you need to build a new alert, do it through iterative process:
- Make sure the alert will only run for reduced amount of people, and only on your staging pod, to avoid
blasting unwanted test emails.
- Start small, make sure you nail down the filters you want to use and that they work properly.
- Then you can start working on more complex features like formatting and loop/group by functionalities.
Oracle Learning uses the Alerts Composer tool within HCM to send informational notifications to users by email and
worklist. Notifications are triggered based on conditions for two types of alerts.
• Event Alerts: They're triggered when a specific event occurs in the application and the filter on when to
trigger the event alert are not configurable.
• Resource Alerts: They are based on Oracle HCM Cloud REST API resources and are highly configurable.
In 21B the HCM Resource Alerts tool will now have the ability to Export and Import resource alerts. We have attached
two example resource alerts in a zip file attached that can be imported into your environment, if you are on update
21B or higher.
3) Select the Settings and Actions dropdown arrow in the upper right-hand corner of the screen and select the
option: 'Setup and Maintenance'.
4) Navigate to Manage Configuration packages under setup and maintenance home page. → Setup and
Maintenance → Manage Configuration Package
7) Now in Manage Configuration Package screen - Export and Import Processes table, user can see a row with Type
'Upload' and status = 'Completed'.
8) Now select the Uploaded row and click on 'Import setup data' button in the same table.
9) Click on Next in the first screen of the new pop up, then check the checkbox for Alert on "Select Pauses for
External Import" screen and then, click on Submit button.
10) Wait for few minutes and refresh to verify the status of Import. The status should update to Completed.
NOTE: If the status shows warning/error saying 'User Action Required', select the row again and click on Resume.
Then again follow same steps and Submit. This time status should go to Complete.
Once the import is done you can then access the weekly enrollment digest and weekly enrollment overdue examples
resource alerts in alert composer
Troubleshooting Alerts
All preconfigured Learning Alerts are "Event Alerts", and will trigger when the relevant event occurs in OLC (e.g. an
offering activity is updated). The one exception is "WLF-00004: Upcoming ILT Activity to Instructors Reminder 1",
which is detailed below.
Most preconfigured alerts must be enabled and/or configured from Manage Learn Setup > Manage Alerts, in addition
to ensuring they're enabled and configured in Tools > Alert Composer.
I am getting some UI error while typing the notification email body in the alert composer.
- ISSUE 1: This could be due to formatting problems. You might have wanted to try some conditional formatting
or specific groovy expression that is not supported.
- SOLUTION:
o Make sure to only restrict yourself to supported expressions. The error will tell you at which point there is
a problem in what you were typing
o If anything, else than this, try discarding the template, and create a brand new one.
o If even this does not work, then it is likely an Alert related problem, not Learning, so route the SR to
appropriate team.
First, make sure that in your alert setup that the template you’re trying to send is active, and whether or not the
“Simulate run” in the run option is set to yes or no. If it is, then people will NOT receive any email.
Also make sure the “Log Activity History” checkbox is active in the run option to troubleshoot properly.
- ISSUE 1: This could be due to alert not sending anything at all.
- SOLUTION: Verify on Alert History if the event actually triggered at all. You should see an entry with the title of
your Alert in there.
- If you see an entry, but it has a red cross, it means the event triggered, but there is an error running it.
o It means there is a problem with the template content or the recipients.
o Make absolutely sure the keywords you are using are supported by that specific Event alert. Remember,
Resource Alert keywords will NOT work on Event Alerts, and some keywords from an Event alerts might
not work on another one.
o If all seems correct and working on a pod but not on another one of similar patch level, then it is likely an
Alert issue, not a learning issue. Please route the SR to appropriate Alert team to get some help.
- If you see an entry that has a green mark, but no message sent in the message count, it means no-one was
actually targeted.
o This is a pretty uncommon situation for an alert, but it could be due to customer using anything else than
work email for communication.
- ISSUE 3: The alert might simply not be running. In the Alert History you do not see any entry for your alert
at all
- SOLUTION:
o Verify the ESS jobs for some of the specific alerts have run. Some of the Event alerts need this to happen
so it is even considered being sent by the Alert system. Event alerts also have a setup area for the OLC
Administrator, these event configurations should be reviewed and set.
▪ If it did run, have a look at the logs and see if it failed and why, make sure to document that in
the SR.
▪ If it did not run even if it was scheduled, have support and development looking into it.
o If EVERYTHING else above was verified and supposed to be working, then there could be a problem with
the triggering the alert itself.
▪ In this case, try reproducing it on a different pod.
▪ Support can open a bug to development.
The filters do not seem to work and I am getting emails I should not, or I’m not getting the ones I want
- ISSUE 1: this could be due to filters not being used properly.
- SOLUTION:
o Make sure you do not have contradicting filters.
▪ For example, you cannot have a filters looking at both Required AND Voluntary assignments at
the same time, because an assignment is either one OR the other.
▪ In this case make sure that for alternative cases, you have the set of filters with “Any” and not
“All” while setting it up.
o Make sure you are filtering on the correct resource/sub-resource.
▪ For example, you cannot send information based on an offering assignment creation date and
have filters set up on course assignment creation date. You need to make your resource filtering
to the use case you want to set up.
o Make sure you are not cumulating several filters inside a single expression.
▪ Having a complex AND/ OR inside a single filter expression usually does not work very well.
▪ Best practice is to separate these different pieces into distinct filters, at least when
troubleshooting, to understand what works and what does not.
- ISSUE 2: The keywords in filters might not retrieve the expected data.
- SOLUTION:
o If everything above has been thoroughly checked, then you might suspect the keywords used in the
filters are not retrieving the right data.
o In this case, put these keyword(s) directly in the email body and perform a safe test just to see how that
keyword looks like and what data it renders and in which format. This will tell you if it retrieves what you
expect.
o If it retrieves the wrong value or Null for no explainable reason, then Support can log a bug to
Development
- ISSUE 2: The table you have created with loop functionality or conditional statements does not render well
o This could be due to the HTML code somewhat losing the proper formatting
o Make sure when you have complex groovy expressions or conditional statements and formatting that
you always do them in the CODE version of your notification body and avoid switching back and forth
between rich text editor and code version. Otherwise the HTML code gets re-generated and you will lose
your pieces of codes.
o Do the modifications in HTML code and save the HTML code.
My Alert is taking a very long time to process and ends up being timed out / errored after a while
- ISSUE 1: This could be due to filtering not being precise enough, and query being too big.
- SOLUTION:
o If you are creating a notification on a sub resource (offering assignments), only putting some offering
related resource will be very taxing on the system, because the system needs to first look into the entire
parent resource table (all assignments).
o So, make sure to always put some filters also on the parent resource to evacuate useless querying.
▪ Example: if you want some notifications about offerings, also put a filter on parent resource to
isolate the course assignment first, and probably another one to evacuate the course assignment
statuses that are useless
▪ So, if you want a notification on any offering assignment entering waitlist, you should also have
a set of filters as follows:
• Cumulative filters (Match all) on learnerLearningRecords.selectedCourseOfferings
o ${assignmentStatus} = 'ORA_ASSN_REC_WAITLISTED'
o exists (SELECT 'x' from dual where ${enteredWaitlistDate} >= (select
nvl(max(runs.run_end),sysdate-1) from hrc_alert_runs runs, hrc_alerts_b alerts
where runs.alert_id = alerts.alert_id and alerts.alert_code =
'PUT_ALERT_CODE_HERE'))
• Cumulative filters (Match All) on learnerLearningRecords
o ${learningItemType} = 'ORA_COURSE'
o ${assignmentType} <> 'ORA_RECOMMEND_ASSIGNMENT'
Check that the alert is not configured with "Simulate = Yes" (in Alert Composer → Alert → Run Options), which runs the
alerts, but does not actually send the notifications.
Q4) Why are recipients getting two copies or duplicate emails?
The worklist can be configured to send email messages to recipients. If the alert is sending to both email and worklist,
and the worklist is configured to send email, then there will be two emails sent.
Q5) Why are there [] brackets appearing around every attribute in the template?
When you use the Group By function, it groups all the records that have matching <whatever attribute you specified>.
So, if you say in the template "give me ${learningItemTitle}", it will give you an array, surrounded by [] brackets, of the
values of that attribute for all records in the group. If you're using Group By and you don't want these brackets, and
you just want to specify one record in the group, use ${learnerLearningRecords[0].learningItemTitle}, instead of the
above expression to specify the first record in the array.
Examples of other Groovy Expressions
HCM Alerts engine supports expressions to substitute variables, add conditions based on input data at runtime. Below
are few examples -
GROOVY EXPRESSION OUTPUT
${FirstName} your ${visas[0].Country} visa is expiring within 2 weeks.The John your GB visa is expiring within 2 weeks. The
Expiration Date is ${visas[0].ExpirationDate} Expiration Date is 2016-05-28
Hi ${FirstName} Hi John,
<%
asgStr ="";
{ Employee: US IN
%>
Regards, Admin
Admin
Hi ${FirstName} Hi John
<% Country is
} Regards,
else{ Admin
National ID is "+NationalId);
%>
Regards,
Admin
Q6) How do I update the Email From address for the alert’s notifications sent?
Note
We now have self-service UI, any FA User with 'BPMWorkflowAdmin' role can configure HWF Email
notification Email "From:" Display Name
Steps:
Navigation: Login into Fusion Apps HomePage->Bell Icon->More Details -> Access 'Administration' menu
item (see screen shot below).
3. Update/Modify (first choice) with the user preferred 'alias' for the from address of the email notification
Valid format: Sender Name (Alias Name) should not contain <,> or comma (,)
Sample:
To configure a driver:
i. Log in to Oracle Enterprise Manager Fusion Middleware Control as an administrator.
ii. Expand the Fusion Middleware folder.
iii. Navigate to the User Messaging Service home page.
Q7) What are the security privileges required to access Alerts Composer UI?
Q8) What privilege and user will be used for running the Alert?
Q9) What is the default language for the template and how are multiple languages supported in alert
templates?
ALERTS TEMPLATES
• Name • Name
• Description • Short Message
• Subject
• Body
Table 10. Translation Support
Q11) How are multiple recipients for both worklist and emails supported in alerts?
Q12) Can the messages be grouped i.e. group and send manager directs messages in one message to manager?
Use the simulate run field under Run Options tab in alerts UI.
Also, System does not send emails in non-production environment.
1. Enable the logging under the Run Options tab in alerts UI.
2. Use the alerts history tab, to review the success, warnings and error message.
3. View the alert log for any error in processing of template/filters.
4. You may need to check the diagnostic logs of ESS in case of resource alerts.
5. You may need to check application logs in case of events alerts.
Use target="_blank" attribute for the anchor link in the Alert message body in code view of the RTE.
Q16) Resource Alerts does not support automatic lookup of lookup code meaning
Alerts composer does not support automatic lookup of lookup code meaning.
This is the expression that you can used based on the KM article Oracle Fusion Learning Cloud: How To Exclude
Terminated Employees From Receiving Alert Notification (Doc ID 2727552.1)
EXISTS (SELECT 'X' FROM PER_PERIODS_OF_SERVICE PS where SYSDATE between PS.DATE_START and SYSDATE
and ACTUAL_TERMINATION_DATE IS NULL and primary_flag='Y' and PS.PERSON_ID = ${assignedToId})
Q18) How do you send out alert notifications to different types of people associated to the learning enrollment
(i.e. Learner Learning Record)?
Currently we support only certain functions to send to predefined workers with specific areas of responsibility such as
HR Rep, etc (full list can be found here). If the other roles such as administrators etc have a person id associated with
them and can be retrieved from the resource (assuming you are asking for resource alerts), you should be able to use
the person utility.
Call +1.800.ORACLE1 or visit oracle.com. Outside North America, find your local office at: oracle.com/contact.
Copyright © 2022, Oracle and/or its affiliates. All rights reserved. This document is Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be
provided for information purposes only, and the contents hereof are subject to change trademarks of their respective owners.
without notice. This document is not warranted to be error-free, nor subject to any other
Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC
warranties or conditions, whether expressed orally or implied in law, including implied
trademarks are used under license and are trademarks or registered trademarks of SPARC
warranties and conditions of merchantability or fitness for a particular purpose. We
International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
specifically disclaim any liability with respect to this document, and no contractual
registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open
obligations are formed either directly or indirectly by this document. This document
Group. 0120
may not be reproduced or transmitted in any form or by any means, electronic or
mechanical, for any purpose, without our prior written permission. Disclaimer: If you are unsure whether your data sheet needs a disclaimer, read the revenue
recognition policy. If you have further questions about your content and the disclaimer
This device has not been authorized as required by the rules of the Federal
requirements, e-mail [email protected].
Communications Commission. This device is not, and may not be, offered for sale or
lease, or sold or leased, until authorization is obtained.