show assignment group for analyst to assign assignment group based on department

vamshi2
Tera Contributor

Hi team,

 

i have requirement to show only department based assignment groups for assigning to assignment group based on current logged user --> groups department 

 

Please advice 

 

Thanks

1 ACCEPTED SOLUTION

This should give you all assignment groups where the department is the logged in user's groups department:

 

var UserGroupUtils = Class.create();
UserGroupUtils.prototype = {
    getUserGroupDepartments: function() {
        var userGroupDepartments = [];

        var grGroupMember = new GlideRecord('sys_user_grmember');
        grGroupMember.addQuery('user', gs.getUserID());
        grGroupMember.addQuery('group.active', true);
        grGroupMember.query();

        while (grGroupMember.next()) {
            // Replace u_department with the required field name
            var groupDepartment = grGroupMember.group.u_department.toString();
            userGroupDepartments.push(groupDepartment);
        }

        // Replace u_department with the required field name
        return 'u_departmentIN' + userGroupDepartments.toString(); // Query containing all assignment groups where u_department is one of the logged in user's groups department
    },

    type: 'UserGroupUtils '
};

 

View solution in original post

10 REPLIES 10

You are asking us for a solution to show groups based on the department of the user and your haven't mapped the users to a department? How are you setting the relationship then? Filtering on data that isn't available won't work.

ankitshaw625
Tera Expert

As far as I'm aware there's no department reference on sys_user_group table OOB. Do you have a custom field referencing cmn_department on the group table? If you want to fetch departments mapped on the logged in user's groups, you would need a script include to build the query. The script will look something like this:


 

 

 

var UserGroupUtils = Class.create();
UserGroupUtils .prototype = {
	getUserGroupDepartments: function() {
            var userGroupDepartments = [];

            var grGroupMember = new GlideRecord('sys_user_grmember');
            grGroupMember.addQuery('user', gs.getUserID());
            grGroupMember.addQuery('group.active', true);
            grGroupMember.query();

           while (grGroupMember.next()) {
	        // Replace u_department with the required field name
	         var groupDepartment = grGroupMember.group.u_department.toString();
	         userGroupDepartments.push(groupDepartment);
             }

             return 'sys_idIN' + userGroupDepartments.toString();
	},

    type: 'UserGroupUtils '
};

 

 

 

 

 

You can call this method in the advanced reference qualifier of the department field where you want the filter like this:

 

javascript: new UserGroupUtils().getUserGroupDepartments();

 

 

 

 

 

Hi @ankitshaw625  

 

yes department is custom field 

 

i almost got solution but here i need to write this on assignment group field which is on task table  for sc_task using dictionary override i need all the groups which has same department as logged user groups department  

This should give you all assignment groups where the department is the logged in user's groups department:

 

var UserGroupUtils = Class.create();
UserGroupUtils.prototype = {
    getUserGroupDepartments: function() {
        var userGroupDepartments = [];

        var grGroupMember = new GlideRecord('sys_user_grmember');
        grGroupMember.addQuery('user', gs.getUserID());
        grGroupMember.addQuery('group.active', true);
        grGroupMember.query();

        while (grGroupMember.next()) {
            // Replace u_department with the required field name
            var groupDepartment = grGroupMember.group.u_department.toString();
            userGroupDepartments.push(groupDepartment);
        }

        // Replace u_department with the required field name
        return 'u_departmentIN' + userGroupDepartments.toString(); // Query containing all assignment groups where u_department is one of the logged in user's groups department
    },

    type: 'UserGroupUtils '
};

 

hi @ankitshaw625  

 

 

thank you so much 

 

 

it is working perfectly but last thing i need to include additional filter is type is itil but it is not working as groups showing based on logged user group department fetched

 

    getUserGroupDepartments: function() {
        var userGroupDepartments = [];

        var grGroupMember = new GlideRecord('sys_user_grmember');
        //grGroupMember.addQuery('user', gs.getUserID());
        grGroupMember.addEncodedQuery("group.active=true^group.typeLIKE1cb8ab9bff500200158bffffffffff62^user="+ gs.getUserID());
       // grGroupMember.addQuery('group.active', true);
        //grGroupMember.addQuery('group.type.name', itil);
        grGroupMember.query();

        while (grGroupMember.next()) {
            gs.log("ramu tertttt" + grGroupMember.group.type);
            //if(grGroupMember.group.type == "itil"){
            var groupDepartment = grGroupMember.group.u_department.toString();
            userGroupDepartments.push(groupDepartment);
            //}
        }
       
        //gs.log("test ramu" + userGroupDepartments.toString());
        return 'u_departmentIN' + userGroupDepartments.toString(); // Query containing all assignment groups where u_department is one of the logged in user's groups department
    },