control visibility of assignment group based on logged in user

Shivani29
Mega Guru

Hi All,

 

I have a scenario where if logged in user is a part of wpt and opens new incident form can only see groups related to wpt. Also, if it is not  a new form and incident is assigned to wpt then along with wpt groups , group A should also come in the assignment group so that they can re assign the tkt to group A, if required. I have written script include and client script, added logs as well, script include is passing groups correctly to client script but in assignment group field all the groups are visible. Below are the scripts:

Client Script:

 

function onLoad() {
    //Type appropriate comment here, and begin script below
    if (g_form.isNewRecord()) {
        g_form.addInfoMessage('New Form');
        var ga = new GlideAjax('assignment_group');
        ga.addParam('sysparm_name', 'getVisibleGroups');
       ga.getXML(assignmentGroup);
        function assignmentGroup(response) {
            var answer = response.responseXML.documentElement.getAttribute("answer");
            g_form.addInfoMessage(answer);
            g_form.setReferenceQual('assignment_group',answer);
           
        }
    }
}
 
Script Include:
 
var assignment_group = Class.create();
assignment_group.prototype = {
    initialize: function() {},
    getVisibleGroups: function(){
        var user =  gs.getUserID();

        gs.log('shivani logged in user '+user);
        var groupIds = [];

        var gr = new GlideRecord('sys_user_grmember');
        gr.addQuery('user',user);
        gr.addEncodedQuery('groupLIKEwpt');
        gr.query();
        gs.log('shivani group count '+gr.getRowCount());
        if (gr.next()){
            gs.log('inside if query');
            var groupUser = new GlideRecord('sys_user_group');
            groupUser.addEncodedQuery('nameLIKEwpt^active=True');
            groupUser.query();
            gs.log('shivani counting row '+groupUser.getRowCount());
            while(groupUser.next()){
            groupIds.push(groupUser.getUniqueValue());
            }}
            else{
                gs.log('inside else');
                var allGroup = new GlideRecord('sys_user_group');
                allGroup.addEncodedQuery('active=true');
                allGroup.query();
                gs.log('all groups count'+allGroup.getRowCount());
                while(allGroup.next()){
                groupIds.push(allGroup.getUniqueValue());
                }}
                gs.log('SHivani Group ID '+groupIds);
                return "sys_idIN" + groupIds;
    },

    type: 'assignment_group'
};
 
Your help is much appreciated.
 
Thanks and Regards,
Shivani
1 ACCEPTED SOLUTION

Shivani29
Mega Guru

Hi All,

 

Thanks for your efforts and time. I managed to resolve this issue by sending the incident number from reference qualifier and in script include i gliderecord the incident table to check if record with this number exists or not. it it does not exist, it is a newReord and accordingly i run the entire script.

 

Regards,

Shivani.

View solution in original post

16 REPLIES 16

@Shivani29 

then you can use current.sys_created_by

this field will be empty when new record is there

I tested this

javascript: new assignment_group().getVisibleGroups(current.sys_created_by);

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Shivani29 

Hope you are doing good.

Did my reply answer your question?

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Shivani29 

Hope you are doing good.

Did my reply answer your question?

If my response helped please mark it correct as well so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Shivani29
Mega Guru

Hi All,

 

Thanks for your efforts and time. I managed to resolve this issue by sending the incident number from reference qualifier and in script include i gliderecord the incident table to check if record with this number exists or not. it it does not exist, it is a newReord and accordingly i run the entire script.

 

Regards,

Shivani.

@Shivani29 

Even my approach should work.

As per new community feature you can mark multiple responses as correct.

If my response helped please mark it correct as well so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader