Set Assigned To Field Depeand on Assignment Group In Catalog variables

piyushbedre
Tera Contributor

 

I created two variable name as "Assignments Group" as a reference field and refer it to Group table , and "Assigned To"  and refer it to the user table , if there is a single user in the assignment group then the user should set auto in the assigned to field

piyushbedre_0-1779688885756.png

 

6 REPLIES 6

yashkamde
Mega Sage

Hello @piyushbedre ,

 

Use the below script include & Client script the achieve the output as per you requirement :

Script Include :

checkSingleUser: function() {
        var groupId = this.getParameter('sysparm_group_id');

        var grMember = new GlideRecord('sys_user_grmember');
        grMember.addQuery('group', groupId);
        grMember.query();

        if (grMember.getRowCount() == 1) {
            if (grMember.next()) {
                var result = {
                    sys_id: grMember.getValue('user'),
                    name: grMember.user.name.toString()
                };
                return JSON.stringify(result);
            }
        }
        return null; 
    }

 

Catalog client script :

   if (newValue === '') {
        g_form.clearValue('assigned_to'); 
        return;
    }

    var ga = new GlideAjax('<SC_Name>');
    ga.addParam('sysparm_name', 'checkSingleUser');
    ga.addParam('sysparm_group_id', newValue);
    
    ga.getXMLAnswer(function(answer) {
        if (answer) {
            var userObj = JSON.parse(answer);
            g_form.setValue('assigned_to', userObj.sys_id); 
        } else {
            g_form.clearValue('assigned_to');
        }
    });

 

If my response helped mark as helpful and accept the solution.

TharunN
Tera Contributor
 
You can achieve this requirement using an **onChange Catalog Client Script + GlideAjax + Script Include**.
 
Requirement:
I have two variables:
 
1. Assignment Group
 
   Type: Reference
   Table: Group (`sys_user_group`)
 
2. Assigned To
 
   Type: Reference
   Table: User (`sys_user`)
 
Expected behavior:
 
When user selects an Assignment Group:
 
  If the selected group has only one member, automatically populate the Assigned To field with that user.
  If the group has multiple users, leave the field empty.
 
Step 1: Create Script Include (GetSingleGroupMember)
 
Make sure Client Callable is checked.
 
 
var GetSingleGroupMember = Class.create();
GetSingleGroupMember.prototype = Object.extendsObject(AbstractAjaxProcessor, {
 
    getUser: function() {
 
        var groupId = this.getParameter('sysparm_group');
 
        var gr = new GlideRecord('sys_user_grmember');
        gr.addQuery('group', groupId);
        gr.query();
 
        var count = 0;
        var userId = '';
 
        while (gr.next()) {
 
            count++;
            userId = gr.user.toString();
 
            if (count > 1) {
                return '';
            }
        }
 
        return userId;
    },
 
    type: 'GetSingleGroupMember'
});
 
 
Step 2: Create onChange Catalog Client Script on Assignment Group
 
function onChange(control, oldValue, newValue, isLoading) {
 
    if (isLoading || newValue == '') {
        return;
    }
 
            g_form.setValue('asigned_to',"");
        
 
    var ga = new GlideAjax('GetSingleGroupMember');
    ga.addParam('sysparm_name', 'getUser');
    ga.addParam('sysparm_group', newValue);
 
    ga.getXMLAnswer(function(response) {
 
        if (response) {
            g_form.setValue('assigned_to', response);
        } 
    });
}
 
 
How this works:
 
User selects Assignment Group
Client Script calls Script Include using GlideAjax
Script Include checks `sys_user_grmember`
If only one member exists → return user sys_id
Assigned To gets populated automatically
If multiple users exist → field remains empty
 
Test Results:
 
Group A → 1 member → Assigned To auto-populated 
 
Group B → Multiple members → Assigned To remains blank 
 
Hope this helps.