Populate the assignment group details including group roles, group members, group type in a cat item

Eli7
Tera Expert

Hi All,

 

I need to create a catalog item where when the user selects the Assignment group the form variables need fill with the  group fields and the related records like role, users, type, in the list or choice field.

 

I got it working for the group fields but cannot pass the values from the script include that fetch the related records.

 

Can someone look through the below please?

 

SCRIPT INCLUDE:

addGrpMembers: function(){

var users = [];
var grp = this.getParameter('sysparm_request');
var userMem = new GlideRecord('sys_user_grmember');
userMem.addQuery('group', grp);
userMem.query();
while (userMem.next()){
users.push(userMem.user.sys_id());
gs.log('all usr ' + users);  logs all sys id's fine
return 'sys_idIN' + users.join(',');
}

},

 

Catalog client script

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

var group = g_form.getValue('group');
alert('group ' + group);
var ga = new GlideAjax('addGroups'); //script include
ga.addParam('sysparm_name', 'addGrpMembers'); //call function
ga.addParam('sysparm_request', group);
ga.getXML(getGrpFieldValues);

function getGrpFieldValues(response){
var answer = response.responseXML.documentElement.getAttribute('answer');
var parser = JSON.parse(answer); // convert json string
g_form.setValue('user_to_add_to_the_group',  NOT SURE HOW TO SET IT I tried JSON stringfy or parser.users but nothing works
}

 

Thanks!

2 ACCEPTED SOLUTIONS

@Eli7 ,

 

Please try below code:
SI:
var grp = this.getParameter('sysparm_request');
var userMembers = new GlideRecord('sys_user_grmember');
userMembers.addQuery('group', grp);
userMembers.query();
var groupsArr = [];
while (userMembers.next()) {
groupsArr.push((userMembers.user).getDisplayValue());
}
return JSON.stringify(groupsArr);

Client Script:

var ga = new GlideAjax('sampleScriptInclude'); //script include
ga.addParam('sysparm_name', 'addGrpMembers1'); //call function
ga.addParam('sysparm_request', newValue);
ga.getXML(getGrpFieldValues);

function getGrpFieldValues(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
answer = JSON.parse(answer);
g_form.clearOptions('users')
for (var i = 0; i < answer.length; i++) {
g_form.addOption('users',answer[i],answer[i]);
}

}


Variable:

PRINCE_ARORA_0-1676462209892.png

 



If my answer solved your issue, please mark my answer as Correct & 👍Helpful based on the Impact!

View solution in original post

@Eli7 ,
The below code will work in the Portal view 
SI:
addGrpMembers1:function(){
var grp = this.getParameter('sysparm_request');
var userMembers = new GlideRecord('sys_user_grmember');
userMembers.addQuery('group', grp);
userMembers.query();
var groupsArr = [];
while (userMembers.next()) {
groupsArr.push((userMembers.user.toString()));
}
return groupsArr.toString();
},

CLient Script if your variable is list collector:

var ga = new GlideAjax('sampleScriptInclude'); //script include
ga.addParam('sysparm_name', 'addGrpMembers1'); //call function
ga.addParam('sysparm_request', newValue);
ga.getXML(getGrpFieldValues);

function getGrpFieldValues(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
alert(answer);
var output = answer.split('||');

g_form.setValue('user_to_add_to_the_group',output[0]);

}


If my answer solved your issue, please mark my answer as Correct & 👍Helpful based on the Impact.

View solution in original post

12 REPLIES 12

@Eli7 ,

I have created code to get all the details from the group whether it is information on the groups or role related information. I have a question:

1) what type of field you have created to show the response (Reference or Select Box?)

Please answer me asap, let me try to resolve your issue 🙂

@Eli7 ,

 

Please try below code:
SI:
var grp = this.getParameter('sysparm_request');
var userMembers = new GlideRecord('sys_user_grmember');
userMembers.addQuery('group', grp);
userMembers.query();
var groupsArr = [];
while (userMembers.next()) {
groupsArr.push((userMembers.user).getDisplayValue());
}
return JSON.stringify(groupsArr);

Client Script:

var ga = new GlideAjax('sampleScriptInclude'); //script include
ga.addParam('sysparm_name', 'addGrpMembers1'); //call function
ga.addParam('sysparm_request', newValue);
ga.getXML(getGrpFieldValues);

function getGrpFieldValues(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
answer = JSON.parse(answer);
g_form.clearOptions('users')
for (var i = 0; i < answer.length; i++) {
g_form.addOption('users',answer[i],answer[i]);
}

}


Variable:

PRINCE_ARORA_0-1676462209892.png

 



If my answer solved your issue, please mark my answer as Correct & 👍Helpful based on the Impact!

Hi Prince,

 

The below reference/choice field in in the catalog item to fill

user_to_add_to_the_group = List Collector

group_roles    = List Collector

group_type  = Select Box

 

Many Thanks

Eli

 

Are you using native/ portal view of ServiceNow for your catalog item?

Its a cat item in Portal view.

The user field is a List collector, should this: g_form.addOption('users',answer[i],answer[i]);

not be: g_form.setValue()

 

I tried you new code but with code change to setValue but not working either.