- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-15-2018 12:14 PM
Hi,
I have written a Scheduled Job which fires an event and that event triggers a notification. I want to add a condition in that Scheduled Job which makes this Scheduled Job trigger that event only when the user has itil role and is part of "XYZ" company. SO, finally the notification has to be sent only to itil users of "XYZ" company.
Conditions when this Scheduled Job should fire the event:
1. User should be "itil" and from company "XYZ"
Below is the screenshot of Scheduled Job:
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-15-2018 12:35 PM
The simplest way would be to add an encoded query to your sys_user GlideRecord object. You can generate the query using this method - Generate an encoded query string through a filter . Generate the query by looking at your User table and adding the following filter:
Then add the following line after your first line:
userNoTimeCard.addEncodedQuery("active=true^roles=itil^company=whatever_sys_id_of_tjhe_company");
That will then narrow your list of users down right from the start.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-15-2018 12:26 PM
Hi Prudhvi,
I suggest you to take a look at Scriptless Scheduled Jobs
you need HI account to download the APP.
Once after you install it, you can set conditions for your requirement.
PFB screenshot for your reference.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-15-2018 12:27 PM
You can write condition just after while loop,
var gr = new GlideRecord('sys_user_has_role');
gr.addQuery('user', userNoTimeCart.sys_id);
gr.addQuery('role.name','itil');
gr.query();
if (userNoTimeCart.company=='XYZ' && gr.next())
{
//Rest of your scripts
}
Please mark this response as correct or helpful if it assisted you with your question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-15-2018 12:38 PM
Thanks for the reply Sanjiv,
Below is my present code:
var userNoTimeCard = new GlideRecord('sys_user');
userNoTimeCard.query();
while(userNoTimeCard.next()){
if(gs.getProperty('notimecard_submission_notifyMe') == userNoTimeCard.user_name.toString() || gs.getProperty('notimecard_submission_notifyMe') == ''){
var noTimeCard = new GlideRecord("time_card");
noTimeCard.addEncodedQuery('user="+userNoTimeCard.sys_id+"^week_starts_on>=javascript:gs.daysAgoStart(8)^state!=Pending');
noTimeCard.query();
if(!noTimeCard.next()){
gs.log("AST:AST:TimeCard-TimeCardNotSubmittedNotification ---> User: " + userNoTimeCard.sys_id, "AST:AST:TimeCard-No Submission: User");
gs.eventQueue("notimecard.submit", userNoTimeCard, userNoTimeCard.sys_id.toString(), userNoTimeCard.getDisplayValue());
}
}
}
Do you want me to change it as follows:
var gr = new GlideRecord('sys_user_has_role');
gr.addQuery('user', userNoTimeCart.sys_id);
gr.addQuery('role.name','itil');
gr.query();
if (userNoTimeCart.company=='XYZ' && gr.next())
{
var userNoTimeCard = new GlideRecord('sys_user');
userNoTimeCard.query();
while(userNoTimeCard.next()){
if(gs.getProperty('notimecard_submission_notifyMe') == userNoTimeCard.user_name.toString() || gs.getProperty('notimecard_submission_notifyMe') == ''){
var noTimeCard = new GlideRecord("time_card");
noTimeCard.addEncodedQuery('user="+userNoTimeCard.sys_id+"^week_starts_on>=javascript:gs.daysAgoStart(8)^state!=Pending');
noTimeCard.query();
if(!noTimeCard.next()){
gs.log("AST:AST:TimeCard-TimeCardNotSubmittedNotification ---> User: " + userNoTimeCard.sys_id, "AST:AST:TimeCard-No Submission: User");
gs.eventQueue("notimecard.submit", userNoTimeCard, userNoTimeCard.sys_id.toString(), userNoTimeCard.getDisplayValue());
}
}
}
}
Am I right? Please let me know.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-15-2018 12:48 PM
Try this
var userNoTimeCard = new GlideRecord('sys_user');
userNoTimeCard.query();
while(userNoTimeCard.next()){
var gr = new GlideRecord('sys_user_has_role');
gr.addQuery('user', userNoTimeCard.sys_id);
gr.addQuery('role.name','itil');
gr.query();
if (userNoTimeCard.company.name=='XYZ' && gr.next())
{
if(gs.getProperty('notimecard_submission_notifyMe') == userNoTimeCard.user_name.toString() || gs.getProperty('notimecard_submission_notifyMe') == ''){
var noTimeCard = new GlideRecord("time_card");
noTimeCard.addEncodedQuery('user="+userNoTimeCard.sys_id+"^week_starts_on>=javascript:gs.daysAgoStart(8)^state!=Pending');
noTimeCard.query();
if(!noTimeCard.next()){
gs.log("AST:AST:TimeCard-TimeCardNotSubmittedNotification ---> User: " + userNoTimeCard.sys_id, "AST:AST:TimeCard-No Submission: User");
gs.eventQueue("notimecard.submit", userNoTimeCard, userNoTimeCard.sys_id.toString(), userNoTimeCard.getDisplayValue());
}
}
}
}
Please mark this response as correct or helpful if it assisted you with your question.