How to add an user to glide list field and group member as well

sinu2
Tera Expert

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:

sinu2_0-1694494844599.png

Add/remove from group member as well

 

sinu2_1-1694494946941.png

 

 

8 REPLIES 8

Vishal Birajdar
Giga Sage

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
}

 

 

 

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

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);

Hi @Vishal Birajdar 

 

for adding user its ok but removal code not working

 

var currentManager = current.getValue('manager');
    var previousManager  = previous.getValue('manager');
if (currentManager) {
    var grReport = new GlideRecord('sysauto_report');
 
    grReport.addQuery('sys_id','d8875beddbdea700c2abf2f5ab961943');
 
    grReport.query();
 
    if (grReport.next()) {
 
        // Update the user list field
 
        var getUserList = grReport.getValue('user_list');
var arrUsers = getUserList.split(',');
gs.addInfoMessage('list of glide users------'+arrUsers);
     grReport.setValue('user_list', arrUsers + ',' + currentManager);
 
        grReport.update();
 
    }
}
if(previousManager){
var grReport1 = new GlideRecord('sysauto_report');
 
    grReport1.addQuery('sys_id','d8875beddbdea700c2abf2f5ab961943');
 
    grReport1.query();
 
    if (grReport1.next()) {
 
        // Update the user list field
 
        var getUserList = grReport.getValue('user_list');
getUserList = getUserList.split(',');
var indexarray = getUserList.indexOf(previousManager);
if(indexarray>=0 ){
gs.addInfoMessage('removal user is $$$$$'+previousManager);
   arrUsers.splice(indexarray,1);
   grReport1.user_list = indexarray;
    grReport1.update();
}
 
}  
}

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();

        }

    }

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates