How It Works:
The way that the escalation process works is that when the certification is generated, you specify when the first reminder is sent, how often those reminders are sent, and how many reminders are sent before escalating. So given a certification that ends in 14 days, you could set reminders to start 7 days prior to the end of the certification that are sent daily. You could also specify that 5 reminders are sent before the certification is escalated.
So if we further this example to say we created this certification June 30th, it will end on July 14th. Additionally, the first reminder will be set to be sent on, or after July 7th. I say "on or after", as the process that controls this notification runs daily at midnight, by default. The notification will actually be set to be sent on July 7th at the same time of day the certification was created. So if the certification was created at 3:15pm, the notification will be set to July 7th at 3:15pm. Since the scanner runs at midnight, it won't actually pick this up until July 8th, 12:00am. This can be controlled by increasing the frequency of the scanner. If it were to run every hour instead, it would pick up the notification on July 7th at 4:00p. For the purposes of this explanation, we'll continue to work with the "nightly at 12:00am" schedule.
So our first notification is sent July8th at midnight. The WorkItem is marked as having 1 notification sent and the next is queued up to be sent a day later (July 8th at 3:15pm). Thus a second notification is sent on July 9th at midnight when the scanner runs, a third on July 10th, 4th on July 11th, and 5th on July 12th. After the scanner runs on midnight of July 12th, all 5 notifications have been sent and the WorkItem is still set to expire in a little over a day and a half (July 14th at 3:15pm). After the 5th notification was sent, the system marked the WorkItem to be examined again one day later. The scanner runs again on July 13th at midnight and it detects that this WorkItem is not yet expired and that all notifications have been sent. That condition begins the Escalation process and it runs the escalation rule. The following night, the WorkItem is finally expired as July 14th, 3:15pm will have passed.
Here are the key elements that define this process:
- The reminder dates are more like triggers. Once a date has passed, that triggers the scanner to invoke the "remind or expire" behavior.
- Reminders must be on "daily" or "weekly" frequency. If set to "once", only one reminder is sent and the WorkItem is not examined again (and thus no escalation occurs). To be clear: Even if you have specified an Escalation to occur after the first reminder, using a frequency of "once" will negate the escalation from happening.
- The frequency of the reminders determines when the escalation date is set. Meaning if reminders are set to "daily", the escalation will be set for the day after the last reminder is sent. If reminders are set for "weekly", the escalation date is set for the week after the last reminder is sent.
- Escalation dates that occur on or after the WorkItem's expiration date will be ignored. The design of the escalation process is to escalate before the certification ends (and thus before the WorkItem expires).
Now we create a certification on June 30th at 3:15pm. It's set to end 14 days from now, send a notification 8 days prior to the end, and send 2 reminders prior to escalating. The Certification is created and a WorkItem is created along with it. This WorkItem has an expiration date of July 14th, 3:15pm and a notification date of July 6th, 3:15pm (8 days prior to the expiration). Again, the scanner runs nightly at midnight.
On July 7th, 12:00am, the scanner runs and the first notification is sent. The number of notifications sent is set to '1' and the next notification date is set to July 13th, 3:15pm (1 week after the last notification date). Midnight July 14th rolls around and the scanner runs again. The second notification is sent and now an escalation date must be set since both notifications have been sent. The problem is that the next date for the notification is now July 20th, 3:15pm, almost a week after the expiration. The scanner runs at midnight of July 15th and the WorkItem is expired without the escalation ever running. In actuality, the scanner marks the escalation date as July 14th, 3:15pm, the same time as the expiration. Since the escalation is not before the expiration, it is ignored.
This scenario doesn't escalate because there was less than a week in between the last reminder and the escalation date. Had the max reminders been set to 1, the escalation would have been run on midnight of July 14th. Note: even when the max reminders is set to 1, a frequency of "daily" or "weekly" MUST be specified. Setting a frequency of "Once" with a max reminders of 1 will not create an escalation.