Alternative ways to find work
The Get Next Work feature in Pega Platform™ is the most common way of retrieving an assignment that needs attention. This feature is for short interactions with a customer, during which the work might require skill matching with the operator record of users. Users can include a CSR, agent, or business user who works with a customer. Get Next Work saves valuable time by not returning assignments with an error that is associated with an unlocked Case.
Get Next Work is closely tied to the configuration of Service-Level Agreement (SLA) Rules. These Rules provide goals, deadlines, and passed deadline milestones at which urgency can be increased.
You can use the pxAdjustSLATimes API activity to adjust the pxGoalTime and pxDeadlineTime of the Assignment from their initial value. However, you should only adjust an Assignment deadline for a specific reason, not merely to speed up or slow down the increase in pxUrgencyAssign value. Frequent deadline modification can negatively impact Assignment-level reporting.
Frequently re-persisting assignments to adjust SLA time, adjust pxUrgencyAssign, or both can also impact system performance.
First In First Out
In circumstancing and customizing Get Next Work, modifying the sorting criterion for workbasket assignments is possible. For example, a Work Group might require the oldest workbasket assignments to be processed first, known as First In, First Out (FIFO). In this scenario, the system can use the pxCreateDateTime property as the primary sorting criterion instead of the default secondary sorting criterion, pxUrgencyAssign.
Organizations can modify the pyGetWorkBasket report definition behind the D_WorkBasket list Data Page to use an ascending sorting criterion on pxCreateDateTime.
Through reverse engineering, it is possible to derive a value for pxUrgencyAssign after the fact, considering @CurrentDateTime() and the Work Queue Assignment creation. However, the value for pxUrgencyAssign only requires computation after it is displayed in a UI.
Common Subcase deadline example
In Claim Cases for an insurance company, a customer-specific SLA deadline duration is required. To establish the deadline DateTime of a Case, a user adds the duration to the pxCreateDateTime of each Claim Case.
All ClaimUnit Subcases of a Claim Case require completion by the deadline of the parent Case. However, different ClaimUnit Case types take different durations, on average, to complete. To improve efficiency, the average time to complete each ClaimUnit type might be available within a node-level Data Page.
If a user spins off the ClaimUnit to a Work Queue, the system can compute the pxGoalTime DateTime property as @CurrentDateTime + (customer deadline – average time to complete). Here, pxGoalTime represents the DateTime. The system retrieves the ClaimUnit from its Work Queue to allow sufficient time to complete the work.
A circumstanced version of the Assign-WorkBasket GetNextWork listView can perform an ascending sort on pxGoalTime instead of using a descending sort on pxUrgencyAssign. Similarly, a circumstanced version of the pyGetWorkBasket report definition can also perform an ascending sort on pxGoalTime.
The developer can also circumstance the Rule declare Expression for pxUrgencyAssign. The following example shows how pxUrgencyAssign can reverse engineer its value based on DateTime properties:
where: CaseDeadlineDateTime = CaseCreateDateTime + CustomerSLA (Assign-)
and: pxGoalTime = CaseDeadlineDateTime – CaseAvgTimeToComplete
Note how the time units within the numerator and denominator, whether minutes, hours, or days, cancel each other out, which creates a unit-less ratio. It is easy to see that the value for pxUrgencyAssign will be 100 using the previous formula when CurrentDateTime = pxGoalTime. But the choice of 100 is arbitrary. Any factor, such as 80, can apply, and a user can define the value as configurable.
Truncating the value of pxUrgency assign to 100 is fine, provided that both the Get Next Work query and the Work Queue Assignment list query sort by ascending pxGoalTime instead of descending pxUrgencyAssign. It is possible to use the same report definition for both purposes.
Location
In some situations, urgency uses other factors, such as distance, instead of time. For example, a shuttle driver might want their next assignment based on proximity to their current location. In the FSG Booking application, the system uses the location of a shuttle driver to identify the closest hotel or parking location where event attendees are waiting for transport to or from an event.
The booking application invokes an SQL Connector to compute distance. However, it is challenging to incorporate an SQL Connector call into the Pega-provided GetNextWork implementation. Additionally, accessing the Get Next Work action requires access to a Pega portal. To access a Pega portal using an App requestor instead of a Browser requestor, you can use a different means, such as a REST service call.
Open Assignment action
To configure a button click action as an Open Assignment, you require an Assignment pzInsKey. You can use an Assign-WorkBasket Data Page to supply the pzInsKey.
The Assign-WorkBasket Data Page can call a report definition that filters out assignments where pyErrorMessage is not null. A post-query Data Transform can then check whether the Assignment and its associated Case are locked, skip it, and move to the next Assignment. The system uses a subreport defined against Index-AssignmentSkills, which is joined to Index-OperatorSkills, to perform skill matching.
Launch from skilled Work Queue list
You can use options other than Get Next Work to retrieve an Assignment from a skilled Work Queue to which work routes through the ToSkilledWorkBasket activity.
For example, suppose a Facility Coordinator portal contains a View that shows Parking Case Assignments. The Facility Coordinator persona should only see something in that View if they possess the Parking skill.
The report definition must take Assignment and user skills into account. The following example shows how you can achieve this outcome by using pseudo-SQL code:
Parking work queue assignment list (similar to D_WorkBasket)
JOIN to FSG-Booking-Work-Parking (CASE) WHERE pxRefObjectKey = CASE.pzInsKey
Filters:
pxRequiredSkillCount = COUNT(rows in subreport)
Subreport:
Index-AssignmentSkills JOIN to Index-OperatorSkills (OPSKILL) WHERE pxRequiredSkill = true AND pxSkillName = OPSKILL.pxSkillName
Subreport filters:
pxInsIndexedKey = (main report) pzInsKey pxSKillRating <= OPSKILL.pxSKillRating AND OPSKILL.pyUserIdentifier = OperatorID.pyUserIdentifier
--
Check your knowledge with the following interaction:
This Topic is available in the following Module:
Want to help us improve this content?