ismemberOf in BR condition field

TM19
Tera Expert

Hi

I want to make a scoped BR run a conditon:

Suppose the BR is on incident table, then the BR should only run when the caller in the caller_id field is a member of a particular group.

I tried the below code in the condition field 

gs.getUser(current.caller_id).isMemberOf(<group name>)

But this gives false, because instead of taking the user in caller field it takes logged in user.

 

Any solution for this?

Note: If similar code is user in background script as below in a gliderecord:

gs.getUser(gr.caller_id).isMemberOf(<group name>)

It returns the expected output. 

 

1 ACCEPTED SOLUTION

MrMuhammad
Giga Sage

HI @TM,

 

isMemberOf() will only work for loggedin users but as your requirement is to use the script in BR CONDITION. To achieve this you need to write a Script include and GlideRecord Group Member table and check if Caller is member of group then return true otherwise return false. Let me give you a sample.

 

BR CONDITION [if script include is in SAME scope]

 

javascript: new groupMemberUtility().member(current.caller_id);

 

BR CONDITION [if script include is in GLOBAL scope i.e call it by its API name]

 

javascript: new global.groupMemberUtility().member(current.caller_id);

 

SCRIPT INCLUDE

NAME - groupMemberUtility

var groupMemberUtility = Class.create(); //(auto generated)
groupMemberUtility.prototype = Object.extendsObject(AbstractAjaxProcessor, { //(auto generated)

    member: function(data) {

        gs.info("$$SH ---> Script include called!!! " + data);
        var gr = new GlideRecord("sys_user_grmember");
        gr.addQuery("user", data);
	    gr.setLimit(1);
	    gr.query();
        
	    if (gr.next())
           return true;

        return false;
    },

});

 

 

Please mark this CORRECT & HELPFUL, if it answered your question.

 

Thanks & Regards,
Sharjeel

Regards,
Muhammad

View solution in original post

24 REPLIES 24

Check details below.

find_real_file.png

Above is my script.

 

Result 1) If logged in user not a member

find_real_file.png

\find_real_file.png

 

Result 2) If logged in user is a member

find_real_file.png

 

find_real_file.png

 

 

Hi,

Thats correct, but this will check the current logged in user and not caller id of the incident.

 

Regards,

Anirban

Hi,

Yes, as he was using logged in user that why I took that.

If you want based on caller then below script will work in BR.

 

var caller=current.caller_id.getDisplayValue();

if(caller.isMemberOf('Database')){

alert("caller is part of group");

}

else{

alert("caller is not part of group");

}

if the background script is done with

gs.getUser(gr.caller_id).isMemberOf(<group name>)

 

It checks for the user in the particular field instead of logged in user.

But the issue is same is not happening in BR with

gs.getUser(current.caller_id).isMemberOf(<group name>)

This will check for the logged in user right, but should be able to do it for the user in caller field.

That too in scoped application.