Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

current.UserID ==gs.getUser().isMemberOf(current.assignment_group.toString()) is not working

SNOW32
Giga Expert

Hello Experts,

I hope you all are doing great. 🙂

I wrote a BR to check the condition if customer added "additional comments" then "State" change into "In Progress" and that customer does not belong to the "Assignment Group". 

I got some scripts from community and tried but its not working.

My Business rule is given below:

When: after (Insert, Update)

answer = (isMemberOfForScopedApp(current.assignment_group)); // Note: standard 'isMemberOf' does not work within Scoped App
function isMemberOfForScopedApp(groupID){
var result = false;
if (groupID != ''){
var userID = gs.getUserID();
var gr = new GlideRecord("sys_user_grmember");
gr.addQuery("group", groupID);
gr.addQuery("user", userID);
gr.query();
if (gr.next()){
result = true;
}

}
return result;
}

if (answer == gs.getUserID() || answer == gs.getUser().getDisplayName())

{
current.state = 2;
current.u_feedbacks_state= 2;
current.update();

}

Any ideas on how this might be able to function?

 Thanks in advance!

Swati

1 ACCEPTED SOLUTION

Jim Coyne
Kilo Patron

Where did you see that "isMemberOf" does not work in a scoped app?  I can't recall using it, but the docs says it should work.

I would change the BR to run Before Insert/Update, and set the following options (including checking the "Advanced" box:

find_real_file.png

 

find_real_file.png

 

 

The only bit of code you need would be in the "Condition" field on the Advanced tab:

!gs.getUser().isMemberOf(current.assignment_group.getDisplayValue())

find_real_file.png

View solution in original post

10 REPLIES 10

Oleg
Mega Sage

The above code can't work because the line

answer = (isMemberOfForScopedApp(current.assignment_group));

assign Boolean value to answer variable (true if the current user is member of current.assignment_group). On the other side you use later

if (answer == gs.getUserID() || answer == gs.getUser().getDisplayName())

compares the Boolean answer with user id and user name. Such code can't work. I think it's clear how to fix it.

Hi Oleg,

I tried it with 

answer == true but the code didnt work.

Do you have any other solution? 

Thanks,

Swati

Jim Coyne
Kilo Patron

Where did you see that "isMemberOf" does not work in a scoped app?  I can't recall using it, but the docs says it should work.

I would change the BR to run Before Insert/Update, and set the following options (including checking the "Advanced" box:

find_real_file.png

 

find_real_file.png

 

 

The only bit of code you need would be in the "Condition" field on the Advanced tab:

!gs.getUser().isMemberOf(current.assignment_group.getDisplayValue())

find_real_file.png

Swati I think you may be confusing this with getMyGroups(), which is not available in scoped applications.

isMemberOf() is available in scope.

Verified using Xplore in Madrid:

Global isMemberOf()

find_real_file.png

Scoped isMemberOf()

find_real_file.png

 

The only differences are that in scope isMemberOf() returns a boolean, but in global it returns a string. 

I believe Jim's solution is correct.

Once you have followed his instructions, you just need to place this bit in the executeRule function:

current.state = 2;
current.u_feedbacks_state= 2;
current.update();

ServiceNow Nerd
ServiceNow Developer MVP 2020-2022
ServiceNow Community MVP 2019-2022