User criteria on a reference field ?

shanmupriya
Kilo Contributor

We have Test Catalog Item "Order a Laptop" -> were a reference field "Requested For" - "sys_user".  

Field 1: Requester --> Satisfies specific User Criteria'

Filed 2: Requester For --> We need a filter for the users only who satisfy the user criteria same as Requester

So the Data populated in the Requested For field should populate the users only who satisfy the User criteria same as the logged-in user.

Could somebody help?



1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

@shanmupriya 

you can get all user criterias which are satisfied by that user selected in Requester variable using User Criteria Loader API

UserCriteriaLoader - API to Evaluate User Criteria

Steps to be used in script include

1) get user criterias satisfied by logged in user using -> getAllUserCriteria

2) then query sys_user table and for each user check if user matches any of the above listed user criterias

3) return that array of users in advanced ref qualifier

Regards
Ankur

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

View solution in original post

7 REPLIES 7

Omkar Mone
Mega Sage

Hello,

 

You need to configure a reference qualifier for that reference field.

https://docs.servicenow.com/en-US/bundle/sandiego-platform-administration/page/script/server-scripting/concept/c_ReferenceQualifiers.html

 

Let me know if it helps.

 

Regards,

Omkar

Hi @Omkar, Thanks for your response. Yes, thats indeed. We need to configure a reference qualifier. Do you think it is possible to configure a reference qualifier that satisfies all the user criteria the same as the requester/Loggedin User?

Ankur Bawiskar
Tera Patron
Tera Patron

@shanmupriya 

you can get all user criterias which are satisfied by that user selected in Requester variable using User Criteria Loader API

UserCriteriaLoader - API to Evaluate User Criteria

Steps to be used in script include

1) get user criterias satisfied by logged in user using -> getAllUserCriteria

2) then query sys_user table and for each user check if user matches any of the above listed user criterias

3) return that array of users in advanced ref qualifier

Regards
Ankur

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

Script include

function getFilteredUsers(userSysId){

	var allCriterias = new sn_uc.UserCriteriaLoader.getAllUserCriteria(userSysId);
	var arr = [];
	var gr = new GlideRecord("sys_user");
	gr.addActiveQuery();
	gr.query();
	while (gr.next()) {
		if(sn_uc.UserCriteriaLoader.userMatches(gr.getUniqueValue(), allCriterias))
			arr.push(gr.getUniqueValue());
	}

	return 'sys_idIN' + arr.toString();
}

Advanced ref qualifier:

javascript: getFilteredUsers(current.variables.requesterVariable);

Regards
Ankur

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