Code is not working
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-20-2025 12:28 PM
Requirement:
There is an expiry date field in the CMDB table. Email notifications need to be triggered at specific intervals—10 days, 5 days, 1 day before, and on the exact expiry date and time.
Scheduled Job Script:
(function() {
var grUser = new GlideRecord('cmdb_ci');
grUser.addNotNullQuery('u_expiry_date');
grUser.query();
var today = grUser.u_expiry_date.getDisplayValue(); // current date and time
var expiryDays = [10, 5, 1, 0]; // Days before expiry to trigger
for (var i = 0; i < expiryDays.length; i++) {
today.addDaysUTC(-expiryDays[i]); // Calculate target expiry date
while (grUser.next()) {
gs.eventQueue('u_infrastructure_accounts.u_password_last_rotation_date', grUser,'', '',today);
}
}
})();
1 REPLY 1
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-20-2025 03:10 PM
Hi @Prithvi Ramesh1 ,
Give this a try:
(function() {
var expiryDays = [10, 5, 1, 0]; // Days before expiry to trigger
var now = new GlideDateTime();
var grCI = new GlideRecord('cmdb_ci');
grCI.addNotNullQuery('u_expiry_date');
grCI.query();
while (grCI.next()) {
var expiryDate = grCI.getValue('u_expiry_date'); // Get expiry date as GlideDateTime
var expiryGDT = new GlideDateTime(expiryDate);
for (var i = 0; i < expiryDays.length; i++) {
var targetDate = new GlideDateTime(expiryGDT);
targetDate.subtractDaysUTC(expiryDays[i]);
// Compare only the date part
if (targetDate.getDate() == now.getDate()) {
gs.eventQueue('u_cmdb_expiry_notification', grCI, '', '');
break; // Avoid sending multiple events for the same record
}
}
}
})();
Please mark this as helpful and correct, if this helps you.
Thanks,
Yaswanth