Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

User criteria match all on location and group

Daniela18
Tera Contributor

Hi

I want a user criteria to both match user group and a location that is on the user.

But this doesn't work. Do I have to script? I am novice at scripting, How would such a script look?

find_real_file.png

1 ACCEPTED SOLUTION

Hi,

I would encourage to have step by step debug

1) check if member of Hardware is able to access the catalog

Keep Script as: Test with user

answer = gs.getUser().isMemberOf('Hardware');

Next

2) check if user's location condition is satisfied

Keep Script as: Test with user having that location

answer = ifScript();

function ifScript(){

var user = new GlideRecord('sys_user');
user.addQuery('sys_id', gs.getUserID());
user.addQuery('location', '25ab9d720a0a0bb300793d3a6b891f82');
user.query();

var locationValid = user.hasNext();

return locationValid;

}

3) Now combine both the codes and check by adding logs

If my answer solved your issue, please mark my answer as Correct & 👍Helpful based on the Impact.

Regards
Ankur

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

View solution in original post

19 REPLIES 19

RaghavSh
Mega Patron

Match All should work, if you want to script this follow:

https://community.servicenow.com/community?id=community_question&sys_id=69b8c70edb78af4423f4a345ca96...

you can use( as per your current condition):

checkcondition();

function checkcondition()

{

if((gs.getUser().getRecord().getValue('location')=='location1 sys_id' || gs.getUser().getRecord().getValue('location')=='location2 sys_id')&& gs.getUser().isMemberOf('assignment_group_sys_id'))

{

return true;

}

else{

return false;

}

 

}


Raghav
MVP 2023
LinkedIn

MAtch all does not work. If I Impersonate a user in Hardware I can access this even if I belong to another location in my user account

I tried:


checkCondition();

function checkCondition(){

var user = new GlideRecord('sys_user');
user.get(gs.getUserID());

if (user.location=="25ab9d720a0a0bb300793d3a6b891f82")
{
return true;
}
return false;
}

 

It still doesn't not work.

Anil Shewale
Mega Guru

Hi  Daniela

yes for that you have to write script.

refer the following link it might help you.

https://community.servicenow.com/community?id=community_blog&sys_id=925219751b358850d01143f6fe4bcb7b

 

If it help mark helpful or correct 

Thanks and regards

Anil