How to restrict schedule job for triggering multiple times ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-11-2022 06:26 AM
Hi Everyone,
how to restrict scheduled job for triggering multiple notifications when users inactive on two cmdb table, notification is triggering twice because users having records on both tables, it should need to triggering once if person is same.
Scheduled Job Script:
//Scheduled job for when Accountable owner (user) is inactive on Business Application (cmdb_ci_business_app) table and/or Application Services (cmdb_ci_service_discovered) table then Notification Email needs to send for their manager on every monday 07:00 AM.
validateUser("cmdb_ci_service_discovered");
validateUser("cmdb_ci_business_app");
function validateUser(tableName) {
var bussinessArr = [];
var bussRecipients = [];
var gr = new GlideRecord(tableName);
gr.addEncodedQuery('assigned_to.active=false^assigned_to.sys_updated_onONLast 7 days@javascript:gs.beginningOfLast7Days()@javascript:gs.endOfLast7Days()');
gr.query();
while (gr.next()) {
bussRecipients.push(gr.assigned_to.toString());
}
var arrayUtil = new ArrayUtil();
var a1 = arrayUtil.unique(bussRecipients);
for (var i = 0; i <= a1.length; i++) {
var gr1 = new GlideRecord("sys_user");
gr1.addQuery("sys_id", a1[i]);
gr1.setLimit(1);
gr1.query();
if (gr1.next()) {
gs.eventQueue('fa.business.app.accountable.owner', gr1, gr1.manager.email, gr1.name);
}
}
}
Thanks
Venugopal S
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-11-2022 06:37 AM
before triggering
gs.eventQueue('fa.business.app.accountable.owner', gr1, gr1.manager.email, gr1.name);
check any event is already exist in the sysevent table
Thanks & Regards,
Vasanth
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-11-2022 06:56 AM
Hi
No event is trigger apart from this.
Thanks
Venugopal S
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-11-2022 09:21 PM
validateUser("cmdb_ci_service_discovered");
validateUser("cmdb_ci_business_app");
function validateUser(tableName) {
var bussinessArr = [];
var bussRecipients = [];
var gr = new GlideRecord(tableName);
gr.addEncodedQuery('assigned_to.active=false^assigned_to.sys_updated_onONLast 7 days@javascript:gs.beginningOfLast7Days()@javascript:gs.endOfLast7Days()');
gr.query();
while (gr.next()) {
bussRecipients.push(gr.assigned_to.toString());
}
var arrayUtil = new ArrayUtil();
var a1 = arrayUtil.unique(bussRecipients);
for (var i = 0; i <= a1.length; i++) {
var gr1 = new GlideRecord("sys_user");
gr1.addQuery("sys_id", a1[i]);
gr1.setLimit(1);
gr1.query();
if (gr1.next()) {
//Check whether event fa.business.app.accountable.owner already triggered for the same user email gr1.manager.email;
var isEventTriggeredToUser = checkEventTriggered(gr1.manager.email, gr1.name);
if (!isEventTriggeredToUser) { // if event not triggered then send email to the user.
gs.eventQueue('fa.business.app.accountable.owner', gr1, gr1.manager.email, gr1.name);
}
}
}
}
function checkEventTriggered(parm1, parm2) {
var encQuery = "sys_created_onONLast 30 minutes@javascript:gs.beginningOfLast30Minutes()@javascript:gs.endOfLast30Minutes()^name=fa.business.app.accountable.owner^parm1=" + parm1 + "^parm2=" + parm2;
var eventGr = new GlideRecord("sysevent");
eventGr.addQuery(encQuery);
eventGr.query();
return eventGr.hasNext();
}
Please try with the above code and let us know for any issue.
Thanks & Regards,
Vasanth