Creating a rule that fires on the "Close" event
Purpose: This procedure will create a Custom Rule that runs when a control on the request is in a certain state when the request is saved.
Prerequisites: Novo Request Management
Procedure:
Company A has created a rule that will send an email to the customer when a case is closed. This seems simple enough to handle with the Rule below:
Name: | Notify Customers on Close Event |
Event: | Modified by User |
If Timer: | Null |
Timer Value: | Null |
Use Business Hours: | Null |
Run: | Null |
Period: | Null |
Condition: | Status Is Closed |
Action: | Email Request To {CUSTOMER_EMAIL} |
Enabled: | Yes |
This will definately work as expected. However, it will also work when you make a slight grammer change to the resolution field of a Request that has been closed for 6 months and the customer was already notified. Then the moment you press save or stop the automatic timer or expand one of the related sections, you break into a cold sweat when you realize that the rule just may have run again, dousing your face with a jumbo and slighty old and unrefridgerated egg. Or even worse; If you didn't know the rule existed and you don't even find out until you start getting puzzled customers calling with explitives that include the words: "spam"; "junkmail"; "hunh?" and my personal favorite, "Dude, why don't you support jocks get a real job!"
The software runs rules based on the value of the conditions when any of the following 3 events occur: Create, Modify or Time (i.e. some period of time has elapsed since a Create or Modify event).
Option 1: Set a pre-existing field to a value that the rule will revert
One way to accomodate the requirement is to create another Status, like "Close and Send". Then create the following rule:
Name: | Notify Customers on Close Event |
Event: | Modified by User |
If Timer: | Null |
Timer Value: | Null |
Use Business Hours: | Null |
Run: | Null |
Period: | Null |
Condition: | Status Is Close and Send |
Action: | Email Request To {CUSTOMER_EMAIL} and Change Status To Closed |
Enabled: | Yes |
Option 2: Set a User Defined field to a value that the rule will revert
Some folks will dislike using the Status control for anything other than statuses. Since "Close and Send" is more of an action than a status, you could also handle the scenario by adding a User Defined Field to the Request Template, setting this field during the editing of the Request, and then creating the rule to perform the action and reset the UDF to it's original state.
The example below uses a checkbox udf named "Send Notification?" to determine whether a note should be sent.
Name: | Notify Customers on Close Event |
Event: | Modified by User |
If Timer: | Null |
Timer Value: | Null |
Use Business Hours: | Null |
Run: | Null |
Period: | Null |
Condition: | Status Is Closed and Send Notification? Is Yes |
Action: | Email Request To {CUSTOMER_EMAIL} and Update Send Notification? To No |
Enabled: | Yes |
Note: When you use a checkbox as a condition in a udf, you will notice that the checkbox appears disabled. This is not a bug. Simply configure the condition so that the operators (Is, Is Not, Is Set, or Is Not Set) all pertain to the constant of "Yes".