How to add an user to glide list field and group member as well
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-11-2023 10:02 PM - edited 09-11-2023 10:03 PM
Hi Team,
I have a requirement.
1.I have a field called "manager" in group table. If i add some one to "manager field" in the group table. the person should be added to group member in that particular group. As well as he should add an user in another table "sysauto_report" field called "user_list" its a glide list field.
2. And "previous.manager" should be removed from both group_member of that group and remove from report user(list field).
Report table list field:
Add/remove from group member as well
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-11-2023 11:45 PM
Hi @sinu2
You can write before/after update business rule depending upon requirement.
Below code for adding manager to group and "sysauto_report" you can use same logic for removal.
/* Store current & previous value of manager */
var currentManager = current.getValue('manager');
var previousManager = previous.getValue('manager');
var groupSysId = current.getUniqueValue();
var groupDisplay = current.getDisplayValue();
//gs.addInfoMessage("current=" + currentManager);
//gs.addInfoMessage("previous=" + previousManager);
if (currentManager) {
/* Glide record on "sys_user_grmember" to add group member */
var grMem = new GlideRecord('sys_user_grmember');
grMem.addEncodedQuery('group=' + groupSysId + "user=" + currentManager);
grMem.query();
if (grMem.next()) {
//Already an member
} else {
// Add member to group
grMem.initialize();
grMem.setValue('group', groupSysId);
grMem.setValue('user', currentManager);
grMem.insert();
}
/* End of Glide record on "sys_user_grmember" to add group member */
/* Glide record on sysauto_report */
var grReport = new GlideRecord('sysauto_report');
grReport.addEncodedQuery('name=' + groupDisplay);
grReport.query();
if (grReport.next()) {
// Update the user list field
var getUserList = grReport.getValue('user_list');
grReport.setValue('user_list', getUserList + ',' + currentManager);
grReport.update();
} else {
//create new record in sysauto_report
grReport.initialize();
grReport.setValue('name', groupDisplay);
grReport.setValue('user_list', currentManager);
grReport.insert();
}
}
if(previousManager){
//logic for removal
}
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-12-2023 12:43 AM - edited 09-12-2023 01:05 AM
Hi @Vishal Birajdar ,
Thanks a lot close to my requirement But onething missing
we just need to add new manager to list collector in report table and remove previous manager in report table list collector. if previous manager exist in list collector
And also below 2 lines are not working giving null value in logs.
var getUserList = grReport.getValue('user_list');
grReport.setValue('user_list', getUserList + ',' + currentManager);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-12-2023 01:46 AM
for adding user its ok but removal code not working
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-12-2023 02:14 AM
Hi @sinu2
Update this below code to remove User from group and sysauto_report record :
if(previousManager) {
gs.addInfoMessage("previous");
/* Glide record on "sys_user_grmember" to remove group member */
var grMem = new GlideRecord('sys_user_grmember');
grMem.addEncodedQuery('group=' + groupSysId + "^user=" + previousManager);
grMem.query();
if (grMem.next()) {
grMem.deleteRecord();
}
var grReport = new GlideRecord('sysauto_report');
grReport.addEncodedQuery('name=' + groupDisplay);
grReport.query();
if (grReport.next()) {
// Remove the user list field
var getUserList = grReport.getValue('user_list');
var listArray = getUserList.split(",");
var index = listArray.indexOf(previousManager);
if (index > -1) {
listArray.splice(index, 1);
}
var updatedList = listArray.join(",");
grReport.setValue('user_list',updatedList );
grReport.update();
}
}
ServiceNow Developer
I know one thing, and that is that I know nothing.
- Socrates