We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

Removing users from the groups

SathiskumarD
Tera Contributor

Hello,

 

The requirement is to create a catalog item to remove the users from the groups. I have attached all the screen captures from PDI. Groups (that user is member of) need to populate only when user is selected;however, it is auto populating on its own. Any help would be gretly appreciated. 

My Script include - When I used this SI in catalog client script it is working;however, as an advanced reference qualifier, it isn't.



var GetGroups = Class.create();
GetGroups.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	isPublic:function(){
		return true;
	},
    getUsersGrp: function(user_id) {
        var dataArr = [];
        // var user_id = this.getParameter('sysparm_user_id');
        var gr_Grp = new GlideRecord('sys_user_grmember');
        gr_Grp.addQuery('user', user_id);
        gr_Grp.query();
        while (gr_Grp.next()) {
            dataArr.push(gr_Grp.group.name.toString());
        }
		
        //  return dataArr[0].groups_list.getDisplayValue();
		// return dataArr[0].groups_list.toString();
		// return JSON.stringify(dataArr);
		return 'sys_idIN'+ dataArr.join(',');

    },

    type: 'GetGroups'
});
2 ACCEPTED SOLUTIONS

Hello @SathiskumarD 
You are using user_id in addQuery but you didn't define any parameter in your script include function
define here
getUsersGrp: function (user_id)

also confirm that your variable name is correct which you are passing from reference qualifier

View solution in original post

Hello @SathiskumarD did you try this?

View solution in original post

12 REPLIES 12

Hello @SathiskumarD 
Ok, what is the issue now?

Is data filtering correctly?
what is the issue left, display in list collector?

 

No it is not. I attached script include and List collector variable. 

SathiskumarD_1-1761325510263.png

 

SathiskumarD_0-1761325468121.png

 

John Gilmore
Tera Guru

When using this in an advanced reference qualifier the filter breaks if user_id isn't provided. You need to put in a check for a valid user_id.

var GetGroups = Class.create();
GetGroups.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	isPublic:function(){
		return true;
	},
    getUsersGrp: function(user_id) {

        //try adding this
        if (!user_id) {
                return 'sys_idINnone';
        }

        var dataArr = [];
        // var user_id = this.getParameter('sysparm_user_id');
        var gr_Grp = new GlideRecord('sys_user_grmember');
        gr_Grp.addQuery('user', user_id);
        gr_Grp.query();
        while (gr_Grp.next()) {
            dataArr.push(gr_Grp.group.name.toString());
        }
		
        //  return dataArr[0].groups_list.getDisplayValue();
		// return dataArr[0].groups_list.toString();
		// return JSON.stringify(dataArr);
		return 'sys_idIN'+ dataArr.join(',');

    },

    type: 'GetGroups'
});

If you are returning a query for sys_id then sys_id values need to be in the array. the While loop loads the group name, not the group's sys_id.

        while (gr_Grp.next()) {
            dataArr.push(gr_Grp.group.name.toString());
        }

Muhammad Salar
Giga Sage

Hello @SathiskumarD , Try this
Script include:

var userGroups = Class.create();
userGroups.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getUserGroups: function(user) {
        var data = [];
        var grpGr = new GlideRecord('sys_user_grmember');
        grpGr.addQuery('user', user);
        grpGr.query();
        while (grpGr.next()) {
            data.push(grpGr.group.toString());
        }

        return 'sys_idIN' + data.join(',');
    },

    type: 'userGroups'
});


In List collector variable:
List table: sys_user_group
Reference qualifier: javascript: new global.userGroups().getUserGroups(current.variables.user_to_be_removed);
Variable attributes: ref_auto_completer=AJAXTableCompleter,ref_ac_columns=name,ref_qual_elements=user_to_be_removed

Portal View:

MuhammadSalar_0-1761751020704.png


Platform View:

MuhammadSalar_1-1761751045441.png


Mark this as correct if this resolves your issue.