How to add a user in a group from a reference field and remove once the request is closed?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-24-2025 09:26 AM
Hi Experts,
I have a requirement where i want to add a user in a group from a reference field and remove the same user from that group once that request is closed.
I'm trying it using a BR as below:
var grMemberCheck = new GlideRecord('sys_user_grmember');
grMemberCheck.addQuery('user', current.delivery_head_email_id);
grMemberCheck.addQuery('group', '5ebe79d71b7e3110e1c810628b4bcbe8');
grMemberCheck.query();
if (!grMemberCheck.hasNext()) {
var grMember = new GlideRecord('sys_user_grmember');
grMember.initialize();
grMember.user = current.delivery_head_email_id;
grMember.group = '5ebe79d71b7e3110e1c810628b4bcbe8';
grMember.insert();
}
It's working fine as well for adding the user in a group but in that group, it's showing one extra user with empty user name.
Let me know where am I missing in this?
and also, for removing the same user once the request is closed, what should be the logic?
Thanks in advance,
Amol
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-24-2025 09:38 AM - edited 02-24-2025 01:10 PM
You can create a similar BR for the "request" table and add condition on the When tab: "State", "changes to", "closed". with script:
var grMemberCheck = new GlideRecord('sys_user_grmember');
grMemberCheck.addQuery('user', current.delivery_head_email_id);
grMemberCheck.addQuery('group', '5ebe79d71b7e3110e1c810628b4bcbe8');
grMemberCheck.query();
if (grMemberCheck.next()) {
grMemberCheck.deleteRecord();
}
The BR should run "After".
Why you get an extras record requires further analysis. Post how you BR is defined for that.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-24-2025 09:38 AM
Check if the delivery_head_email_id before inserting.
var userSysId = current.delivery_head_email_id;
if (!userSysId) {
gs.info("User sys_id is empty. Skipping group addition.");
} else {
var grMemberCheck = new GlideRecord('sys_user_grmember');
grMemberCheck.addQuery('user', userSysId);
grMemberCheck.addQuery('group', '5ebe79d71b7e3110e1c810628b4bcbe8');
grMemberCheck.query();
if (!grMemberCheck.hasNext()) {
var grMember = new GlideRecord('sys_user_grmember');
grMember.initialize();
grMember.user = userSysId;
grMember.group = '5ebe79d71b7e3110e1c810628b4bcbe8';
grMember.insert();
}
}
Removing the User When Request is Closed :
Add new BR with condition state changes to closed and specify your item as a condition.
var grMemberRemove = new GlideRecord('sys_user_grmember');
grMemberRemove.addQuery('user', current.delivery_head_email_id);
grMemberRemove.addQuery('group', '5ebe79d71b7e3110e1c810628b4bcbe8');
grMemberRemove.query();
while (grMemberRemove.next()) {
grMemberRemove.deleteRecord();
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-24-2025 09:39 AM - edited 02-24-2025 09:39 AM
Hi @Amol Pawar
Instead of BR, I would suggest please use the same flow which is attached to the Catalog item to handle the logic.
What value is stored in delivery_head_email_id?
If email id then use below logic
var grMemberCheck = new GlideRecord('sys_user_grmember');
grMemberCheck.addQuery('user.email', current.delivery_head_email_id);
grMemberCheck.addQuery('group', '5ebe79d71b7e3110e1c810628b4bcbe8');
grMemberCheck.query();
if (!grMemberCheck.hasNext()) {
//get user's sys_id.
var grSysUser = new GlideRecord('sys_user');
grSysUser.addEncodedQuery("email=" + current.delivery_head_email_id);
grSysUser.setLimit(1);
grSysUser.query();
if (grSysUser.next()) {
var grMember = new GlideRecord('sys_user_grmember');
grMember.initialize();
grMember.user = grSysUser.sys_id;
grMember.group = '5ebe79d71b7e3110e1c810628b4bcbe8';
grMember.insert();
}
}
Mark it helpful if this helps you to understand. Accept solution if this give you the answer you're looking for
Kind Regards,
Rohila V
2022-25 ServiceNow Community MVP
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-24-2025 09:47 AM
For extra records - Maybe because of the trigger conditions of the BR.
Make sure you add delivery_head_email_id || is not empty condition
Mark it helpful if this helps you to understand. Accept solution if this give you the answer you're looking for
Kind Regards,
Rohila V
2022-25 ServiceNow Community MVP