Fetch Manager name in single line text variable with reference to user[sys_user]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11 hours ago
Hi all,
I want to fetch Manager Name using user record, if its not found, then fetch Assignment contact name of the user.
I have created a variable reference type -requestedFor which would fetch user name in catalog item in service portal.
I have also created 1 more variable by name Manager- single line text, where I need to fetch manager name, if the user does not have manager name or empty , if should fetch assignment contact name.
I tried auto populate method on variable , which would only fetch Manager name through dot-walking method.
I tried checking dynamic default and added a script under default value , but here I would get the assignment contact name if manager name is not present. blocker is , when the username is changed in reference field, it would still show the previous user record details.
Since I cant user script Include, Business rule, I would need help here to fetch the uuser record details.
script used in default value:
javascript:
var answer = '';
var userId = gs.getUserID();
var userGR = new GlideRecord('sys_user');
if (userGR.get(userId)) {
var managerName = userGR.getDisplayValue('manager');
if (managerName && managerName !== '') {
answer = managerName;
} else {
answer = userGR.getDisplayValue('u_assignment_contact');
}
}
answer;
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11 hours ago
for this auto populate won't work
You need to have onChange client script + GlideAjax
something like this
Script Include: It should be client callable
var GetUserManagerOrAssignmentContact = Class.create();
GetUserManagerOrAssignmentContact.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getManagerOrAssignmentContact: function() {
var userId = this.getParameter('sysparm_user_id');
if (!userId)
return '';
var userGR = new GlideRecord('sys_user');
if (!userGR.get(userId))
return '';
var managerName = userGR.getDisplayValue('manager');
if (managerName)
return managerName;
return userGR.getDisplayValue('u_assignment_contact') || '';
},
type: 'GetUserManagerOrAssignmentContact'
});
Client script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading) {
return;
}
if (newValue == '') {
g_form.setValue('manager', '');
return;
}
var ga = new GlideAjax('GetUserManagerOrAssignmentContact');
ga.addParam('sysparm_name', 'getManagerOrAssignmentContact');
ga.addParam('sysparm_user_id', newValue);
ga.getXMLAnswer(function(answer) {
g_form.setValue('manager', answer || '');
});
}
💡 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
10 hours ago - last edited 10 hours ago
Hi @Mohankumari
Step 1: Create a script Include
- Name: RefQualItils
Sample code/Not tested
var RefQualUtils = Class.create(); RefQualUtils.prototype = { initialize: function() {}, festchManager: function(userSysID) { var userGR = new GlideRecord('sys_user'); if (userGR.get(userSysID)) {
if (userGR.manager && userGR.manager != '') { return 'sys_id=' + userGR.getValue('manager'); // Return manager
} else { return 'sys_id=' + userGR.getValue('u_assignment_contact'); } } return ''; }, type: 'RefQualUtils'};
Step2: Apply the script to your field's Reference Qualifier
- Right-click the field label on the form.
- Go to the Type Specifications tab.
- Set Use reference qualifier to Advanced.
- In the Reference qualifier field, enter:
javascript:new RefQualUtils().fetchManager(current.variables.user_variable_name);
