- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-11-2018 01:49 PM
I want to understand how to send emails to a list of people, since the OOTB functionality in notifications doesn't fit my use case.
I have a business rule that triggers an event based on a condition for a single department entry which sends a single email notification to the department submitter.
gs.eventQueue("my.UserSubmission", current);
What I want is the notification to go to half a dozen people in the department. Please advise if this is correct.
1) Add a function to my business rule advanced script section that generates a comma separated list of either sys_ids for the users-to-be-notified from the user table or comma separated email addresses for the users-to-be-notified.
fx() = parm1="user1@gmail.com,user2@gmail.com,user3@gmail.com";
or
fx() = parm1="6f20d12b6f82850023bd5965bd3ee001, 6f20d12b6f82850023bd5965bd3ee002,6f20d12b6f82850023bd5965bd3ee003";
2) Pass that to the event via a call, such as,
gs.eventQueue('my.UserSubmission', current, parm1);
3) In the notification make sure the "Event parm 1 contains recipient' box is checked.
Is that right? Or is there anything I've overlooked?
Thank you in advance.
G
PS, bonus questions:
All of which begs the question is there an easy way to get the sys_id's for all users assigned a specific role?
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-11-2018 01:56 PM
This all looks correct. As far as getting all users with a specific role, you will need to query for them like this...
var usrArr = [];
var users = new GlideRecord('sys_user_has_role');
users.addQuery('role.name', 'YOUR_ROLE_NAME');
users.query();
while (users.next()) {
usrArr.push(users.getValue(user));
}
// Convert usrArr to string
var usrString = usrArr.join();

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-11-2018 01:56 PM
This all looks correct. As far as getting all users with a specific role, you will need to query for them like this...
var usrArr = [];
var users = new GlideRecord('sys_user_has_role');
users.addQuery('role.name', 'YOUR_ROLE_NAME');
users.query();
while (users.next()) {
usrArr.push(users.getValue(user));
}
// Convert usrArr to string
var usrString = usrArr.join();

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-27-2020 09:15 AM
I am trying to do something similar. I am not getting any of my logs for the roles. Can someone see if it is obvious where I am going wrong. Here is my code from my business rule:
(function executeRule(current, previous /*null when async*/ ) {
var admins = [];
var userGR = new GlideRecord('sys_user');
userGR.addEncodedQuery('companyLIKENIBCO, Inc.');
userGR.query();
while (userGR.next()) {
admins.push(userGR.sys_id);
var list = admins.toString();
var arrayList = list.split(",");
for (i = 0; i < arrayList.length; i++) {
var usrArr = [];
var uhrRec = new GlideRecord('sys_user_has_role');
uhrRec.addQuery('user', arrayList[i]);
uhrRec.addEncodedQuery('role=9b94fc24d7700200e5982cf65e610358');
uhrRec.query();
while (uhrRec.next()) {
gs.info("Stacys uhrRec is " + uhrRec.sys_id);
usrArr.push(uhrRec.getValue(user));
var parm1 = usrArr.join();
gs.info("Stacys parm1 is " + parm1);
gs.eventQueue("sn_customerservice.NibcoAdmin", current, parm1);
}
}
}
})(current, previous);
Thanks,
Stacy
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-11-2018 02:05 PM
Thank you, Mark - appreciate the quick response.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-11-2018 02:07 PM
No problem! Please mark my answer above as correct if I've answered your question.