Scheduled Job that triggers event
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-04-2025 03:05 PM
Does this approach look correct, or is there a better way to achieve this logic?
(function executeEscalationCheck() {
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-04-2025 06:59 PM
Your logic is correct, but if you don’t mind, I’d like to share a refactored version of the code
(function executeEscalationCheck() {
var today = new GlideDate();
var gr = new GlideRecord('sc_req_item');
gr.addQuery('active', true);
gr.addQuery('cat_item', 'dc9db25e93f0a6108211b22efaba10ca');
gr.query();
while (gr.next()) {
var created = new GlideDate(gr.getValue('sys_created_on'));
var daysOld = today.getNumericValue() - created.getNumericValue();
if (daysOld === 10)
gs.eventQueue('hcl.itam.escalation.10day', gr, gr.sys_id, '10 Day Escalation');
if (daysOld === 13)
gs.eventQueue('hcl.itam.escalation.13day', gr, gr.sys_id, '13 Day Escalation');
}
})();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-04-2025 07:32 PM
Wouldnt i need to convert it to days because getNumericValue() on GlideDate returns the time in milliseconds.
so something like this
(function executeEscalationCheck() {
var today = new GlideDate();
var gr = new GlideRecord('sc_req_item');
gr.addQuery('active', true);
gr.addQuery('cat_item', 'dc9db25e93f0a6108211b22efaba10ca');
gr.query();
while (gr.next()) {
var created = new GlideDate(gr.getValue('sys_created_on'));
var daysOld = Math.floor((today.getNumericValue() - created.getNumericValue()) / (1000 * 60 * 60 * 24));
if (daysOld === 10) {
gs.eventQueue('hcl.itam.escalation.10day', gr, gr.sys_id, '10 Day Escalation');
}
if (daysOld === 13) {
gs.eventQueue('hcl.itam.escalation.13day', gr, gr.sys_id, '13 Day Escalation');
}
}
})();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-04-2025 08:41 PM
try this
(function executeEscalationCheck() {
// Get dates for 10 and 13 days ago
var gd = new GlideDateTime(gs.nowDateTime());
gd.setDisplayValue(gd.getDate() + " 00:00:00");
var tenDaysAgo = new GlideDateTime(gd);
tenDaysAgo.addDaysUTC(-10);
var thirteenDaysAgo = new GlideDateTime(gd);
thirteenDaysAgo.addDaysUTC(-13);
var gr = new GlideRecord('sc_req_item');
gr.addEncodedQuery('active=true^cat_item=dc9db25e93f0a6108211b22efaba10ca^ORsys_created_onON' + tenDaysAgo.getDate() + '^sys_created_onON' + thirteenDaysAgo.getDate());
gr.query();
while (gr.next()) {
// sys_created_onON will fetch records created on that date (regardless of time)
// To identify if it's 10 or 13 days old:
var created = new GlideDateTime(gr.getValue('sys_created_on'));
var daysOld = Math.floor((gd.getNumericValue() - created.getNumericValue()) / (1000 * 60 * 60 * 24));
if (daysOld === 10) {
gs.eventQueue('hcl.itam.escalation.10day', gr, gr.sys_id, '10 Day Escalation');
} else if (daysOld === 13) {
gs.eventQueue('hcl.itam.escalation.13day', gr, gr.sys_id, '13 Day Escalation');
}
}
})();
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