- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-15-2026 09:15 PM
Hi Team,
I have a requirement to visually highlight VIP users on the Requested Item (RITM) form.
📌 Requirement
On the Requested Item [sc_req_item] form:
- Field: Requested for (requested_for)
- If the selected user has VIP = true (in sys_user.vip):
- Show a VIP icon / decoration on the field, and optionally
- Change the field text color (e.g., red) to make it stand out
- If the user is not VIP:
- No VIP indicator / normal display
This needs to work both when:
- The RITM is opened (onLoad)
- The Requested for field is changed by the user (onChange)
can anyone please help me - how to achieve this requriment .
thanks in advance
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-15-2026 10:34 PM
This is for sc_task.
1. Onload client script :
code: Client script (script include already shared)
function onLoad() {
var reqLabel = g_form.getLabel("request_item.requested_for");
var reqField = g_form.getDisplayBox("request_item.requested_for");
var innerHtml = "<span id=\"status.sc_task.request_item.requested_for\" title=\"On behalf of another individual\" mandatory=\"false\" oclass=\"\" aria-label=\"\" class=\" required-marker\"></span><span title=\"On behalf of another individual\" class=\"label-text\" data-html=\"false\">Requested for</span>";
if (!reqLabel || !reqField){
return;
}
if (g_form.getValue("request_item.requested_for")!=null){
if(!g_scratchpad.u_vip){
var ga = new GlideAjax('CallerVIP');
ga.addParam('sysparm_name','getVIP');
ga.addParam('sysparm_caller', g_form.getValue("request_item.requested_for"));
ga.getXMLAnswer(vipTaskCallback);
}
else {
vipTaskCallback(g_scratchpad);
}
}
else {
removeTaskVIPStyles(reqLabel, reqField);
}
function vipTaskCallback(requestedFor) {
if (!requestedFor.u_vip){
requestedFor = requestedFor.evalJSON();
}
//check for VIP status
if (requestedFor.u_vip.toString() == 'true') {
setTaskVIPStyles(reqLabel, reqField);
}
else {
removeTaskVIPStyles(reqLabel, reqField);
}
}
function setTaskVIPStyles(label, field){
if (label) {
label.innerHTML = "<img src='images/icons/vip.gif'/>" + label.innerHTML;
}
//change the caller's name field to red text
if (field) {
field.style.color='red';
}
}
function removeTaskVIPStyles(label, field){
if (label) {
label.innerHTML = innerHtml;
}
if (field) {
field.style.color = '';
}
}
}
3. Style on sc_task : do it same way as ritm is done.
Regards
Tanushree Maiti
ServiceNow Technical Architect
LinkedIn: https://www.linkedin.com/in/tanushreemaiti
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-16-2026 01:38 AM
It's an easy requirement.
I suggested to check OOTB client script on incident table
No need of GlideAjax and script Include
this client script should work for RITM
I simply made changes to the OOTB client script, changed script, changed table, field name and Did Insert and Stay
Then made "Isolate Script" = False
function onChange(control, oldValue, newValue, isLoading) {
var callerLabel = $('label.sc_req_item.requested_for');
var callerField = $('sys_display.sc_req_item.requested_for');
if (!callerLabel || !callerField)
return;
if (!newValue) {
callerLabel.setStyle({backgroundImage: ""});
callerField.setStyle({color: ""});
return;
}
g_form.getReference('requested_for', vipCallerCallback);
}
function vipCallerCallback(caller) {
var callerLabel = $('label.sc_req_item.requested_for').down('label');
var callerField = $('sys_display.sc_req_item.requested_for');
if (!callerLabel || !callerField)
return;
//check for VIP status
if (caller.vip == 'true') {
var bgPosition = "95% 55%";
if (document.documentElement.getAttribute('data-doctype') == 'true')
bgPosition = "5% 45%";
callerLabel.setStyle({backgroundImage: "url(images/icons/vip.gif)", backgroundRepeat: "no-repeat", backgroundPosition: bgPosition, paddingLeft: '30px' });
callerField.setStyle({color: "red"});
} else {
callerLabel.setStyle({backgroundImage: ""});
callerField.setStyle({color: ""});
}
}
Output
💡 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 || ✨ 10x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-16-2026 01:03 AM
@Tanushree Maiti As per your steps I have cfreated
scrpit include
CS
Style
Cilent scritp
function onLoad() {
var reqLabel = g_form.getLabel("requested_for");
var reqField = g_form.getDisplayBox("requested_for");
var innerHtml = "<span id=\"status.sc_req_item.request.requested_for\" title=\"On behalf of another individual\" mandatory=\"false\" oclass=\"\" aria-label=\"\" class=\" required-marker\"></span><span title=\"On behalf of another individual\" class=\"label-text\" data-html=\"false\">Requested for</span>";
if (!reqLabel || !reqField) {
return;
}
if (g_form.getValue("requested_for") != null) {
if (!g_scratchpad.u_vip) {
var ga = new GlideAjax('callervip');
ga.addParam('sysparm_name', 'getVIP');
ga.addParam('sysparm_caller', g_form.getValue("requested_for"));
ga.getXMLAnswer(vipItemCallback);
} else {
vipItemCallback(g_scratchpad);
}
} else {
removeItemVIPStyles(reqLabel, reqField);
}
function vipItemCallback(requestedFor) {
if (!requestedFor.u_vip) {
requestedFor = requestedFor.evalJSON();
}
//check for VIP status
if (requestedFor.u_vip.toString() == 'true') {
//alert('is a VIP');
setItemVIPStyles(reqLabel, reqField);
} else {
removeItemVIPStyles(reqLabel, reqField);
}
}
function setItemVIPStyles(label, field) {
if (label) {
label.innerHTML = "<img src='images/icons/vip.gif'/>" + label.innerHTML;
}
//change the caller's name field to red text
if (field) {
field.style.color = 'red';
}
}
function removeItemVIPStyles(label, field) {
if (label) {
label.innerHTML = innerHtml;
}
if (field) {
field.style.color = '';
}
}
}
Script include
var CallerVip = Class.create();
CallerVip.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getVIP: function() {
var usr = this.getParameter('sysparm_caller');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id', usr);
gr.query();
if (!gr.next()) {
return new JSON().encode({ error: "User not found" });
}
return new JSON().encode({
u_vip: gr.vip.toString(),
u_locationDisp: gr.location.getDisplayValue(),
u_location: gr.location.toString(),
u_phone: gr.phone.toString()
});
},
type: 'CallerVip'
});
Style -
but still not working
could you please tell what was mistake here ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-16-2026 01:13 AM
Ensure Isolate script - you have not checked.
Now for testing, make a user as VIP user.
Go to list view of RITM for that VIP user (requested for)..Check whether icon is coming or not.
Share the screen shot.
Regards
Tanushree Maiti
ServiceNow Technical Architect
LinkedIn: https://www.linkedin.com/in/tanushreemaiti
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-16-2026 01:31 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-16-2026 01:38 AM
It's an easy requirement.
I suggested to check OOTB client script on incident table
No need of GlideAjax and script Include
this client script should work for RITM
I simply made changes to the OOTB client script, changed script, changed table, field name and Did Insert and Stay
Then made "Isolate Script" = False
function onChange(control, oldValue, newValue, isLoading) {
var callerLabel = $('label.sc_req_item.requested_for');
var callerField = $('sys_display.sc_req_item.requested_for');
if (!callerLabel || !callerField)
return;
if (!newValue) {
callerLabel.setStyle({backgroundImage: ""});
callerField.setStyle({color: ""});
return;
}
g_form.getReference('requested_for', vipCallerCallback);
}
function vipCallerCallback(caller) {
var callerLabel = $('label.sc_req_item.requested_for').down('label');
var callerField = $('sys_display.sc_req_item.requested_for');
if (!callerLabel || !callerField)
return;
//check for VIP status
if (caller.vip == 'true') {
var bgPosition = "95% 55%";
if (document.documentElement.getAttribute('data-doctype') == 'true')
bgPosition = "5% 45%";
callerLabel.setStyle({backgroundImage: "url(images/icons/vip.gif)", backgroundRepeat: "no-repeat", backgroundPosition: bgPosition, paddingLeft: '30px' });
callerField.setStyle({color: "red"});
} else {
callerLabel.setStyle({backgroundImage: ""});
callerField.setStyle({color: ""});
}
}
Output
💡 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 || ✨ 10x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-16-2026 01:55 AM
@Ankur Bawiskar could you also please help me on sc_task table please