Reschedules

 
A reschedule allows you to suspend the current Workflow, with it being either retained by the current User or being made available to one or more other Users. The reschedule can be placed for a specific time in the future or immediately, and upon becoming due will be offered to any assignees in a manner that depends on who/what it was assigned to. The rescheduled Workflow run will have all of its data retained upon being resumed, so you may require a different Workflow design methodology to ensure that a resumed Workflow can still be run successfully even if there are processes which have been designed to only run once.
 
Reschedules can be managed in three different ways: via an Outcome - List control, setting System Variables, or using the reschedule Helper Functions.
 
Controls
The Outcome - List control allows the selection of a reschedule by the agent should they choose an outcome that is marked as incomplete. This will offer them the ability to choose either a specific date and time, or a specified delay of up to 24 hours. Depending on configuration by the Designer, the control will also either automatically assign the record to all users or the current user, or allow the agent to select between these options.
 
The reschedule can only be assigned to All Users, or the current User.
 
Upon resuming a due reschedule, the Workflow run will start again from the first Page of the Workflow.
 
System Variables
To set a reschedule, three variables need to be set before the Workflow run is finished:
  •  [var_csOBCallComplete] must be set to "no".
  •  [var_csOBRescheduleTime] must be set to a valid datetime string in one of the following formats: "YYYY-MM-DD hh:mm:ss", "YYYY-MM-DD hh:mm", or "YYYY-MM-DD". If an invalid datetime is provided, then it will be rescheduled immediately.
  •  [var_csOBRescheduleTo] OR [var_csOBRescheduleGroup] must be set to either 0 (for All Users or Groups), or the ID of the User or Group respectively that will be receiving the reschedule. See the notes below for details on finding this ID.
 
If both [var_csOBRescheduleTo] and [var_csOBRescheduleGroup] are set, then the record will be rescheduled exclusively to the specified User.
 
The reschedule can be assigned to All Users, any specified User (including the current User), All Groups, or any specified Group, as long as the assignees have permission to the current Campaign.
 
Upon resuming a due reschedule, the Workflow run will start again from the first Page of the Workflow.
 
Helper Functions
The reschedule Helper Functions require similar information to the System Variables, but also offer the ability to configure a "callback" function that returns information about the success of the request. They also cause the Workflow run to be immediately ended after a successful execution, avoiding the risk of overwriting the System Variables inadvertently prior to finishing the Workflow run and therefore losing the reschedule.
 
The reschedule can be assigned to All Users, any specified User (including the current User), All Groups, or any specified Group, as long as the assignees have permission to the current Campaign.
 
Upon resuming a due reschedule, the Workflow run will start again from the Page of the Workflow that triggered the reschedule.
 
 

Reschedule Behaviour

A reschedule can broadly be assigned to a few different entities. In all cases, the reschedules will only be offered to Users or Groups who have permissions to the current Campaign, and if the reschedule is assigned to a User or Group without permissions to the current Campaign then the rescheduled record will be lost.
 
When a reschedule is due, then it can either be offered directly through the outstanding record list in the Campaign view, or as an alert for any eligible Users in the Outstanding Tasks list and a Toast being displayed notifying the User that they have reschedules due. As soon as any User has the rescheduled record displayed in the Campaign view, then the rescheduled record will not be displayed to any other Users unless the first User skips the rescheduled record.
 
1) All Users: When assigned to All Users, a due reschedule will only be displayed in the Campaign view.
 
2) Specific Group: When assigned to a specific Group, a due reschedule will be displayed both in the Campaign view and Outstanding Tasks list for all Group members.
 
3) Specific User: When assigned to a specific User, a due reschedule will be displayed both in the Campaign view and Outstanding Tasks list for the specified User.
 
 

Notes

Care should be taken to ensure that the provided reschedule due date and time are appropriate for the database's timezone, as the reschedule due calculations are performed against the database.
 
The recipient(s) of a reschedule need to have access to the rescheduled Campaign to be able to receive the reschedule. Additionally, if a reschedule is placed to a specific Group then it won't display in the members' Outstanding Tasks list if that specific Group doesn't have permission to the Campaign.
 
Using either the Variables or Helper Functions require either a User ID or Group ID. The current agent's User ID can be found in [var_csAgentID], otherwise the IDs can be found at the end of the URL in the address bar when the appropriate User or Group is selected in the Users, Groups, and Licences module, or via a database query. For instance:
 
The following snippet provides an example of a query that will return a list of all Users with permissions to the current Campaign in a format that can easily be used in a Table control. It can also be modified to return just the equivalent list of Groups.
 
SELECT
    u.id AS 'UserID',
    u.firstname + ' ' + u.surname AS 'AgentName'
FROM tbl_gcl_join AS gcl WITH (NOLOCK)
INNER JOIN tbl_Groups AS g WITH (NOLOCK)
    ON g.id = gcl.groupID
    OR g.id = 1                            --Remove this line if you don't wish to include members of the System Group
INNER JOIN tbl_ug_join AS ug WITH (NOLOCK)
    ON ug.group_id = g.id
INNER JOIN tbl_Users AS u WITH (NOLOCK)
    ON u.id = ug.user_id
WHERE gcl.callListID = [var_csCallListID]
AND u.enabled = 1
ORDER BY AgentName