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-12-2023 02:18 AM
Below is full Business rule and working for me.
Type : before update business rule
(function executeRule(current, previous /*null when async*/ ) {
/* 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) {
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 from 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();
}
}
})(current, previous);
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 03:09 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-12-2023 03:20 AM
It has been provided in script know...!!
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 08:33 AM
but we need to check wheather manager is already exists in list collector field we should not add user.