- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-08-2026 10:03 PM
Hi All,
I have a catalog item where, when a user raises a request, I need to check if the “Requested for” user exists in a custom table.
If they do, I want to populate the requester’s name into a string variable on the catalog item.
Requirement
- On catalog item load (or when “Requested for” changes), check the custom table.
- If the Requested for user exists for the specific catalog item, populate a string variable (e.g., u_requester_name) with the requester’s display name.
- Otherwise, leave it blank (or show a message)
What I tried
- Default value of the string variable:- javascript: new global.ServiceCopilotAjaxUtils().getRequest(gs.getUserID());
Issue faced
- The requester name is not populating in the string variable.
Any suggestions or examples would be highly appreciated.
Thanks in advance!
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-08-2026 10:47 PM
Just want to confirm
-> u_envalior_request_mapping table field u_requestor is reference to sys_user
-> you should use onChange catalog client script + GlideAjax to populate the string variable whenever that earlier variable changes
onChange Catalog Client Script: Requestor variable
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading) {
return;
}
if (newValue == '')
g_form.clearValue('stringVariable'); // give here string variable name
if (oldValue != newValue) {
var ga = new GlideAjax('ServiceCopilotAjaxUtils');
ga.addParam('sysparm_name', "getRequest");
ga.addParam('sysparm_userID', newValue);
ga.getXMLAnswer(function(answer) {
if (answer != '') {
g_form.setValue('stringVariable', answer); // give here string variable name
}
});
}
//Type appropriate comment here, and begin script below
}
Enhanced Script Include: the function will work when called from server side (default value) + also from GlideAjax
var ServiceCopilotAjaxUtils = Class.create();
ServiceCopilotAjaxUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getRequest: function(user) {
var requester = this.getParameter('sysparm_userID') || user;
var gr = new GlideRecord('u_envalior_request_mapping');
gr.addEncodedQuery('u_catalog_item=Request Trial Copilot License^u_requestor=' + requester);
gr.query();
if (gr.next()) {
return gr.u_requestor.getDisplayValue();
}
return '';
},
type: 'ServiceCopilotAjaxUtils'
});
💡 If my response helped, please mark it as correct ✅ and close the thread 🔒— this helps future readers find the solution faster! 🙏
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-08-2026 10:50 PM
Hi @vikasverma1,
The Script Include returns true or false.
Use an onChange Catalog Client Script. Remove isLoading from it so it works on load as well as on change of the catalog item form.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-11-2026 11:07 PM
@vikasverma1 - Ok thanks
