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.


Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark

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
    },