Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Auto populate assignment groups for requested for user

Dileep2
Tera Contributor

Hello Everyone, 

 

I want to populate all the assignment groups of user belong to in the catalog item. 
variable - requested for - Sys user table 

assignment groups - list collector - Sys user group table. 
with logged in user I have got by using reference qualifier. Can anyone help me with the solution if I change requested for how can I get the list of assignment groups user is part of.

 

Thank you !! Your help is much appreciated!!

1 ACCEPTED SOLUTION

swathisarang98
Giga Sage

Hi @Dileep2 ,

 

You can achieve this via OnChange Client script and script include ,

 

Key Point : 

1. assignment groups - list collector - sys_user_grmember table. (make it read only so that no can change it)

2. Create client callable si

3. Please change the backend name according to your requirement

 

OnChange:

 

 

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }

    var sysId = g_form.getValue('requested_for');
    var ga = new GlideAjax('getRequestedForDetail');
    ga.addParam('sysparm_name', 'getGroupDetail');
    ga.addParam('sysparm_id', sysId);
    ga.getXML(getResponse);

}

function getResponse(response) {
    var ans = response.responseXML.documentElement.getAttribute('answer');
 
        g_form.setValue('requested_for_assignment_group', ans);
    

    }
}

 

 

 

swathisarang98_0-1710183049718.png

Script Include:

swathisarang98_1-1710183070972.png

 

 

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

    getGroupDetail: function() {
		var sysID = this.getParameter('sysparm_id');
		var gr = new GlideRecord('sys_user_grmember');
	
		gr.addQuery('user',sysID);
		gr.query();
        var arr = [];
        while (gr.next()) {
            arr.push(gr.group.name.toString());
			
        }
        // gs.info('line number 15 ' + arr);
        return  arr.toString();



    },


    type: 'getRequestedForDetail'
});

 

 

 

Please mark this comment as Correct Answer/Helpful if it helped you.

Regards,

Swathi Sarang

View solution in original post

8 REPLIES 8

Sumanth16
Kilo Patron

Hi @Dileep2 ,

Please try below code in reference qualifier:

javascript: new Get_user_groups().getUserGroups(current.variables.requesting_for);

 

Also the group variable should refer to sys_user_group table

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

getUserGroups: function(requestor) {
var groupArr = [];
var grmember = new GlideRecord('sys_user_grmember');
grmember.addQuery('user',requestor);
grmember.addQuery('group.active', true);
grmember.query();
while (grmember.next()) {
groupArr.push(grmember.group.toString());
}
return 'sys_idIN' + groupArr;
},
type: 'Get_user_groups'
});

 

 

If I could help you with your Query then, please hit the Thumb Icon and mark it as Correct !!

 

Thanks & Regards,

Sumanth Meda

 

swathisarang98
Giga Sage

Hi @Dileep2 ,

 

You can achieve this via OnChange Client script and script include ,

 

Key Point : 

1. assignment groups - list collector - sys_user_grmember table. (make it read only so that no can change it)

2. Create client callable si

3. Please change the backend name according to your requirement

 

OnChange:

 

 

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        return;
    }

    var sysId = g_form.getValue('requested_for');
    var ga = new GlideAjax('getRequestedForDetail');
    ga.addParam('sysparm_name', 'getGroupDetail');
    ga.addParam('sysparm_id', sysId);
    ga.getXML(getResponse);

}

function getResponse(response) {
    var ans = response.responseXML.documentElement.getAttribute('answer');
 
        g_form.setValue('requested_for_assignment_group', ans);
    

    }
}

 

 

 

swathisarang98_0-1710183049718.png

Script Include:

swathisarang98_1-1710183070972.png

 

 

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

    getGroupDetail: function() {
		var sysID = this.getParameter('sysparm_id');
		var gr = new GlideRecord('sys_user_grmember');
	
		gr.addQuery('user',sysID);
		gr.query();
        var arr = [];
        while (gr.next()) {
            arr.push(gr.group.name.toString());
			
        }
        // gs.info('line number 15 ' + arr);
        return  arr.toString();



    },


    type: 'getRequestedForDetail'
});

 

 

 

Please mark this comment as Correct Answer/Helpful if it helped you.

Regards,

Swathi Sarang

Thank you Swathi!! Worked like a gem!!