Subscribable, mandatory and force delivery options on Notifications
Discreetly positioned on the email notification form is the ability to subscribe, marked "subscribable." The property which has been both cleverly and imaginatively designed, adds a subscribe to a record mechanism. On one side, someone can interpret it as the 'mandatory' option and others like the option so users can subscribe to the notifications. I can say now, neither fish nor fowl. Two words very similar: subscribable and subscription. Have I confused you yet?
Let's talk about
- Notification 'Subscribable' , 'Mandatory' and 'Force delivery' options
- Subscribable option set to false
- Subscribable option set to true
- Testing the record-subscription based part when Subscribable is set to true
Subscribable, Mandatory and Force delivery options
On the email notification, you can set Subscribable , Mandatory and Force delivery to true or false to modify how recipients are included or excluded. These options define how the recipient list is generated from the notification user and group fields or from the cmn_notif_message table.
Here is the three email notification options in a nutshell:
| Option | Value | Meaning | Purpose | Area of confusion |
|---|---|---|---|---|
| Subscribable | FALSE | Subscription based notifications | Normal notification | The value FALSE may look like the notification cannot be set on the notification preferences. Also the word subscribable make it looks like the mandatory field |
| Subscribable | TRUE | Subscribable based notifications | Add extra recipients to normal notifications based on records subscribed to by the users set on cmn_notif_message | |
| Mandatory | TRUE | User Notification preference is mandatory to any user once they are valid recipients of the notification | User notification preference can be turn on/off but it is saved as ON whatever choice is selected | Field is hidden on the notification form whilst subscribable is not. Also it implies users will receive the notification no matter what like force delivery |
| Mandatory | FALSE | Normal on/off per user subscription allowed | User notification preference can be save as on or off | |
| Force delivery | FALSE | No changes | No changes | Field is hidden. Force delivery may indicate the notification is sent immediately. There is a business rule "Update Email Devices" that makes cmn_notif_device inactive when the sys_user Notification is Disable which makes this option redundant |
| Force delivery | TRUE | Ignores sys_users Notification value.User Notification preference is created even if the are not valid recipients of the notification | Users receive the notification even if the user Notification field is set to Disable and their cmn_notif_device is active |
Here is an example of some email notifications showing the Subscribable, Force delivery and Mandatory option set to true and the others set to false:
Subscribable option set to false
If you want a normal notification, you can set the "subscribable" to false. They use the 'Who will receive' information to generate the recipient list.
They are called subscription-based notifications because they allow users to choose which notifications they prefer to receive and which ones they don't
If the 'Mandatory' option is set to true, the notifications will be editable but will not save the "off" value on the user notification preferences. Subscribable alone does not make it mandatory.
Also mandatory respect the sys_user notification field. To ignore that, set 'Force delivery' to true, then users receive the notification even if the user Notification field is set to Disable. These fields only affect the current notification.
I have set four (4) users as follow:
| User | Sys_user Notification | User Notification preferences |
|---|---|---|
| User1 | Enable | All notifications enabled |
| User2 | Enable | All notification disabled by setting off the dials |
| User3 | Disable | All notifications enabled |
| User4 | Disable | All notifications disabled by setting off the dials |
Here is the result of the tests:
| Notification | Final email notification | ||||
|---|---|---|---|---|---|
| Name | Mandatory | Force Delivery | Original recipient list | Final recipient list | Email Logs shows |
| No1 | False | False | User1User2User3User4 | User1 | Notification 'No1' included recipients via the notification's "Users" field: 'User1' Notification 'No1' excluded recipients because user's notification preference "Filter" filtered it (see "cmn_notif_message.notification_filter"): 'User2' Notification 'No1' excluded recipients because user's "Notification" setting is disabled: 'User3' (x), 'User4' |
| No2 | False | True | User1User2User3User4 | User1User2 | Notification 'No2' included recipients via the notification's "Users" field: 'User1' Notification 'No2' included recipients because users would normally be excluded, but notification's "Force delivery" setting is enabled.: 'User2' Notification 'No2' excluded recipients because user's device is inactive (see "cmn_notif_device.active"): 'User3' (x), 'User4' |
| No3 | True | False | User1User2User3User4 | User1User2 | Notification 'No3' included recipients via the notification's "Users" field: 'User2' (x), 'User1' Notification 'No3' excluded recipients because user's "Notification" setting is disabled: 'User3' (x), 'User4' |
| No4 | True | True | User1User2User3User4 | User1User2 | Notification 'No4' included recipients via the notification's "Users" field: 'User2' (x), 'User1' Notification 'No4' excluded recipients because user's device is inactive (see "cmn_notif_device.active"): 'User3' (x), 'User4' |
The 'Who will receive' section should not be EMPTY. If the system is not able to generate recipients, it will not generate an target email.
| I created/set 3 users* aileen.mottern - aileen.mottern@example.com* alejandra.prenatt - alejandra1.prenatt@example.com* alissa.mountjoy - alissa.mountjoy@example.com I created/set 1 cmdb_ci_computer* "*DENNIS-IBM" (sys_id d0e8761137201000deeabfc8bcbe5da7)I created a new email notification test_subscription on incident as follows:Name=test_subscriptionTable=incidentInserted=checkedUpdated=checkedConditions=noneUsers=aileen.motternalejandra.prenattSubject=Test test_subscriptionBody=Test test_subscriptionI hardcoded aileen.mottern and alejandra.prenatt as recipients. I filled in the reset of the required fields so it looks like this: |
|---|
Subscribable option set to true
Also called CI-based notifications build their recipient lists by two parts:
- It generates a list of recipients like subscription-based notifications (same as with Subscribable set to false).
- Plus, the second part which search on cmn_notif_message for users subscribed to the record received on the event as configured in the notification.
They are called subscribable notifications because the option is called subscribable and implies a "subscribe" action similarly to a subscription business model.
The second part is complex. You MUST set the "subscribable" to true and specify 'Item table' and 'Item' fields in the notification.
Workflow to mantain the connections between the user preference on cmn_notif_message and the records may be required.
The record-subscription-based part, needs users subscribed to the 'Configuration Items' (or relevant column) on cmn_notif_message for the notification. The event itself will specify which specific record to match with the notification preferences.
There are a few subscribable notifications already provided on the system. They have 'Item table' set to cmdb_ci, sys_user, live_message, incident_alert, sys_user_group, cmn_cost_center,etc and the notifications are triggered by "xxx.affected" events. These notifications do NOT look for the data in the configuration item field on the task record (e.g. incident) as some people with good common sense may think. This is a common misconception. The subscribable notifications on the system look for affected cis related to the task.
If you are only interested on the record-subscription part, the 'Who will receive' section can be empty.
| I've changed the 'Subscribable' to true (CHECKED), set 'Item table' = "cmdb_ci", and Item to event.parm1.Name=test_subscriptionTable=incidentInserted=checkedUpdated=checkedConditions=noneUsers=aileen.motternalejandra.prenattSubject=Test test_subscriptionBody=Test test_subscriptionSubscribable=checkedItem table=cmdb_ciItem=event.parm1I updated the incident created before e.g. INC0010021 and checked the notification emailResults: The notification is sent to aileen.mottern and alejandra.prenatt.Here is the example of the previous two notification sent: |
|---|
To conclude, normal Subscription based notifications allows you to set the recipients based notifications 'Who will receive' information. This is simple and practical. Subscribable notifications allow you to notify users subscribed to reconds on the system in addition to using the 'Who will receive' fields. Subscribable set to true could add extra unwanted searches if used incorrectly.
I have tested the examples with Chrome an Fuji.
More information here:
https://www.servicenow.com/community/developer-blog/subscribable-mandatory-and-force-delivery-options-on/ba-p/2290562