i created this Scheduled Script Execution but it seem like its not triggering
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2025 09:08 PM
(function () {
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2025 09:52 PM
so what's not working and what debugging did you do?
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2025 09:54 PM
I have couple test records but so far no events have trigger which they should already, i ran a couple of background script to see timestamps. Scripting is not my biggest thing.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-04-2025 10:06 PM
try this and see, ensure you set Recipient in Who will receive tab in notification
(function() {
var RITM_STATE_CLOSED_INCOMPLETE = 4; // sc_req_item.state
var RITM_STAGE_VALUE = 'approval_not_received'; // sc_req_item.stage
var REQ_REQUEST_STATE_VALUE = 'closed_incomplete'; // sc_request.request_state
var REQ_STAGE_VALUE = 'closed_incomplete'; // sc_request.stage
// Returns lower and upper bounds for hour window X hours ago
function makeBounds(hoursAgo) {
var now = new GlideDateTime();
var upper = new GlideDateTime(now.getValue());
upper.addSeconds(-hoursAgo * 60 * 60); // Subtract N hours (in seconds)
var lower = new GlideDateTime(upper.getValue());
lower.addSeconds(-60 * 60); // Subtract 1 hour (in seconds)
return {
lower: lower,
upper: upper
};
}
// Send approval reminders to approvers for RITMs at a given age
function queueRitmReminders(hoursAgo, eventName) {
var w = makeBounds(hoursAgo);
var gr = new GlideRecord('sysapproval_approver');
gr.addQuery('state', 'requested');
gr.addQuery('sysapproval.sys_class_name', 'sc_req_item');
gr.addQuery('sys_created_on', '>=', w.lower);
gr.addQuery('sys_created_on', '<', w.upper);
gr.query();
while (gr.next()) {
gs.eventQueue(eventName, gr, '', '');
}
}
// At 96 hours, close RITM and REQ as incomplete, cancel approvals, fire cancellation event
function cancelRitmsAt96Hours() {
var w = makeBounds(96);
var appr = new GlideRecord('sysapproval_approver');
appr.addQuery('state', 'requested');
appr.addQuery('sysapproval.sys_class_name', 'sc_req_item');
appr.addQuery('sys_created_on', '>=', w.lower);
appr.addQuery('sys_created_on', '<', w.upper);
appr.query();
var processed = {};
while (appr.next()) {
var ritmId = String(appr.getValue('sysapproval') || '');
if (!ritmId || processed[ritmId]) continue;
processed[ritmId] = true;
var ritm = new GlideRecord('sc_req_item');
if (!ritm.get(ritmId)) continue;
if (String(ritm.getValue('state')) === String(RITM_STATE_CLOSED_INCOMPLETE)) continue;
if (ritm.isValidField('stage')) ritm.setValue('stage', RITM_STAGE_VALUE);
ritm.setValue('state', RITM_STATE_CLOSED_INCOMPLETE);
ritm.update();
var ap2 = new GlideRecord('sysapproval_approver');
ap2.addQuery('sysapproval', ritm.getUniqueValue());
ap2.addQuery('state', 'requested');
ap2.query();
while (ap2.next()) {
ap2.setValue('state', 'cancelled');
ap2.update();
}
if (ritm.request) {
var req = new GlideRecord('sc_request');
if (req.get(ritm.request.toString())) {
if (req.isValidField('request_state')) req.setValue('request_state', REQ_REQUEST_STATE_VALUE);
if (req.isValidField('stage')) req.setValue('stage', REQ_STAGE_VALUE);
req.update();
}
}
gs.eventQueue('ritm.approval.cancelled.96h', ritm, '', '');
}
}
// Reminders
queueRitmReminders(24, 'ritm.approval.reminder.24h');
queueRitmReminders(48, 'ritm.approval.reminder.48h');
queueRitmReminders(72, 'ritm.approval.reminder.72h');
// Auto cancel at 96 hours
cancelRitmsAt96Hours();
})();
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-07-2025 09:00 PM
Hope you are doing good.
Did my reply answer your question?
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
