Notify on expiration
- Notify on expiration
- Get a notification when a date is about to be reached
- Client Store, iTop Hub
- PHP 8.1
This extension allow to trigger notification when an expiration date is about to be reached.
You can define various Expiration rules, for different usage. Targeted for Contract & License expiration, it can be used with any class having a date attribute.
You can set multiple rules for the same class with different term of notice, for example one '3 months ahead' and another 'one month before' the deadline. You can even create a third one '5 days after' the deadline if you want.
Notification for a particular object reaching Expiration, unless configured differently, will occur only once.
Notification message is configurable as any standard trigger/action.
For advanced need, you can define the objects in scope of the notification with an OQL.
Expiration Notification occurs daily only.
It is not designed to handle time, only date.
iTop 2.3.0 or above
|2020-10-28||1.0.3||* Add German translations (Thanks to Lars Kaltefleiter!)|
|2020-03-11||1.0.2||* Add dutch translations (Thanks to Jeffrey
* Add missing rights on some triggers and Actions for “Notification Manager” profile
|2019-02-18||1.0.1||* Fix extension was not loaded (missing
model.combodo-notify-on-expiration.php file in includes)
* Fix minutes were not picked in configured execution time
* Workaround for multiple executions in the defined minute
|2019-01-10||1.0.0||First official version - deprecated|
Use the Standard installation process for this extension.
Once the new module has been installed, edit the configuration file config-itop.php and look for the following new section:
'combodo-notify-on-expiration' => array ( 'time' => '03:00', 'enabled' => true, 'debug' => false, ),
The following settings are available to configure the module:
|time||hour:minute||Time of the day, when the process should start.||03:00|
|enabled||boolean||Should the process run?||true|
|debug||boolean||Should the CRON log be enrich with debug information?||false|
The Notification on Expiration is handled by the service cron.php once a day. Make sure this one is scheduled to run on your system. More information in the chapter about Background tasks.
To check the status of this service, use the command:
php webservices/cron.php --auth_user=admin --auth_pwd=admin --status_only=1
Example: Setup a notification 20 days before a License expires
Create an Expiration Rule
Create a Trigger
Create a Notification
The extension brings a new Menu entry Expiration
rules in the “Service Management” category
To create a new one:
Give it any Name you like,
Define the Class on which the rule will be applied, a Class code is expected, for eg.
Give it a Status:
Activeto enable the cron to execute this Expiration rule in the Background task.
Choose an Applied option by filling the fields either in …option 1 (simple) or in …option 2 (advanced) fieldset:
Define the Date to check, which must be the code of a date attribute, not the label.
Term of notice is configurable and says when to trigger the notification, by specifying a number of days before the deadline,
to check=end_date and
notice=20 the resulting OQL will be:
SELECT Licence WHERE end_date = DATE_ADD(CURRENT_DATE(), INTERVAL 20 DAY)
Define the OQL scope with an OQL query returning the objects on which to apply the trigger. As soon as an OQL is entered, the advanced option is used, even if the simple one is also documented.
With the advanced mode, you can trigger notification after a date, which is not possible in simple mode.
Expiration Ruleas you want, for License, Customer Contract and even multiple for the same class but with a different
term of notice
Example: You can get a recurring Notification for Contract ending in the next 20 days.
SELECT Contract AS C WHERE C.end_date < DATE_ADD(CURRENT_DATE(), INTERVAL 20 DAY) AND C.end_date > CURRENT_DATE() AND C.status = 'production'
In that example, you will receive for a single ending
contract, multiple email notification, one everyday during 20 days,
unless you change the
end_date or the
status before the end_date
You can check anytime which objects would be trigger if the Expiration Rule is run.
Create a Trigger using the extension added: Trigger (on expiration)
filter it further, with an OQL:
SELECT Licence WHERE perpetual='no'
Create a Notification, defining who should receive it and the
body of the message
On top of the standard placeholders, this extension brings also:
|$rule->name$||The name of the Expiration rule which has trigger this notification|
|$rule->description$||The Description of the Expiration rule which has trigger this notification|
|$rule->term_of_notice$||The Term of notice in days defined in the Expiration rule which has trigger this notification|
Link the Notification to the above created Trigger.
Troubleshooting / Q&A
Q: The sub-Menu
Expiration rules does not
A: Also the root cause of this issue is not understood yet, there are many possibilities to create Expiration rules without that Menu.
Add to one of your Dashboards, a Dashlet Badge on class
ExpirationRule: it provides a mean to create a new rule and list existing.
Use under Menu
Admin tools, the sub-menu
SELECT ExpirationRuleit should propose you a link to create a new one.
Use under Menu
Admin tools, the sub-menu
Universal Searchand search for class
ExpirationRule, it will list the existing rules and offer to create one with the