Configuring and extending Notification Engine escalation pools
To use escalation pools, configure the Escalation Max Threads count from the default value of 1 to 3 to take advantage of the optimized out-of-the-box Notification Engine escalation pooling.
To configure Notification Engine escalation pools
- From a browser open the AR System Administration Console.
- Click System> General > Server Information.
- Click the Ports and Queues tab.
- Click in the Max Threads cell, and then specify the number of escalation pools (for example, 3).
The number of OOTB escalations that are provided is 6. You must specify the value for the Max Threads to a maximum of 6. However, you can specify the number of escalation pools to more than 6. For this setting, you must create escalations for notifications. - Click OK.
To extend the Notification Engine escalation pools
The Notification Engine subsystem enables you to increase the number of escalation pools for processing individual and group notifications.
The out-of-the-box Notification Engine uses three escalations (each within its own escalation pool) to process the notification data within the NTE:SYS-NT Process Control form. Escalation pool 2 processes individual notifications and escalation pool 3 processes group notifications.
You can extend the escalation pools by using the round-robin algorithm that is in the following two filters:
These filters are disabled by default, but you can enable and customize them to define additional escalation pools.
To have two escalation pools to process individual notifications and three more escalation pools to process Group notifications, you must edit the filters. The following sections describe the workflow within these filters.
Multithreading filter workflow for NTE-NPC-SeNonGroupEscalationPool_010_Set`!
To enable the proper sequence of the pools in the range between the Escalation Pool Start Range and Escalation Pool End Range values, the Escalation Pool Number field in the NTE:SYS-NT Process Control form is set by performing a modulo operation on the entry ID. The Escalation Pool Number value is then used as part of the qualification of the escalation, so that a particular escalation processes only notification records that match the Escalation Pool Number value.
The modulo operation in the filter workflow finds the remainder of a (the dividend) by n (the divisor). The operation is represented as a % n.
- a = the z1D Integer01 field, which is a sequential number ($LASTID$).
- n = the z1D_GROUPMOD field, which is set by subtracting the Escalation Pool End Range from the Escalation Pool Start Range and adding 1.
As a result, the Escalation Pool Number = a % n + Escalation Pool Start Range.
Incrementing a by 1 for every new Notification Process Control record ensures that the Escalation Pool Number value follows a round-robin approach that starts at the Escalation Pool Start Range value and ends with the Escalation Pool End Range value. For example, if you set the non-group (individual) escalations to run in escalation pools 2 and 3, the Escalation Pool Start Range is 2 and the Escalation Pool End Range is 3. The Escalation Pool Number value for each Notification Process Control record sequences between 2 and 3.
The NTE:NPC:SeNonGroupEscalationPool_010_Set`! filter uses the workflow actions listed in the following table:
Action | Description |
---|---|
Push Fields | Creates the record in which to store the entry ID that is used to calculate the Escalation Pool Number value. The $LASTID$ function is used to get the entry ID number. |
Set Fields |
|
Set Fields | EscalationPoolNumber = ($z1D Integer01$ % $z1D_NONGROUPMOD$) + Escalation Pool Start Range |
Multithreading filter workflow for NTE-NPC-SetGroupEscalationPool_010_Set`!
The NTE:NPC:SetGroupEscalationPool_010_Set`! filter works much like the NTE:NPC:SetNonGroupEscalationPool_010_Set`! filter, except that group escalation pools run in a round-robin fashion between escalation pool 4 and escalation pool 6.
For example, if you set the group escalations to run in escalation pools 4 and 6, the Escalation Pool Start Range value is 4 and the Escalation Pool End Range value is 6. The Escalation Pool Number value for each Notification Process Control record sequences between 4 and 6.
The NTE:NPC:SetGroupEscalationPool_010_Set`! filter uses the workflow actions listed in the following table:
Action | Description |
---|---|
Push Fields | Creates record to get entry ID that is used to calculate the Escalation Pool Number. The $LASTID$ function is used to get the entry ID number. |
Set Fields |
|
Set Fields | EscalationPoolNumber = ($z1D Integer01$ % $z1D_GROUPMOD$) + Escalation Pool Start Range |
Setting up escalation workflow to process the multithreaded individual and group notifications records
In addition to the filters, BMC Helix ITSM provides escalation workflow objects that you can enable for individual (non-group) and group notifications. These escalations serve as examples when enabling the multithreading filter workflow.
The following escalations process individual (non-group) notifications:
- SYS:NPC:TriggerNonGroupNotificationsPool2
- SYS:NPC:TriggerNonGroupNotificationsPool3
- SYS:NPC:TriggerNonGroupNotificationsPool4
- SYS:NPC:TriggerNonGroupNotificationsPool5
- SYS:NPC:TriggerNonGroupNotificationsPool6
The following escalations process group notifications:
- SYS:NPC:TriggerGroupNotificationsPool2
- SYS:NPC:TriggerGroupNotificationsPool3
- SYS:NPC:TriggerGroupNotificationsPool4
- SYS:NPC:TriggerGroupNotificationsPool5
- SYS:NPC:TriggerGroupNotificationsPool6
To continue the example of setting up two escalation pools to process individual notification records and three escalation pools to process group notification records, you must perform the following procedure to enable the escalation workflow.
To set up an escalation workflow to process the multithreaded individual and group notification records
- Log in to your server with Developer Studio.
- Disable the following escalations:
- SYS:NPC:TriggerNonGroupNotifications
- SYS:NPC:TriggerGroupNotifications
- Enable the following escalations (as shown in the following figure):
- SYS:NPC:TriggerNonGroupNotificationsPool2
- SYS:NPC:TriggerNonGroupNotificationsPool3
- SYS:NPC:TriggerGroupNotificationsPool4
- SYS:NPC:TriggerGroupNotificationsPool5
- SYS:NPC:TriggerGroupNotificationsPool6
The figure shows that the SYS:NPC:TriggerNonGroupNotificationsPool2 escalation processes only individual notification records in which the EscalationPoolNumber is set to 2. In turn, the SYS:NPC:TriggerNonGroupNotificationsPool3}}escalation processes individual notification records in which the {{EscalationPoolNumber is set to 3, and so on.
The filter workflow in this example sets EscalationPoolNumber to 2, to 3, and then back to 2, and so on, in a round-robin fashion when individual notification records are created in the NTE:SYS-NT Process Control form. In the same way, the filter workflow sets the EscalationPoolNumber to 4, to 5, to 6, and then back to 4, and so on, when group notification records are created.
As a result, for every unique EscalationPoolNumber that is generated, you must run the escalation workflow to process the notification records. BMC recommends that you match the Escalation Pool Number within the escalation workflow to the EscalationPoolNumber value in the records to simplify keeping track of the escalation pools.