Not getting user full name by using getDisplayName() in Business Rule
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-15-2016 09:40 AM
Hi All,
I want to display the user's full name instead of User id in Created by field for sysapproval_approver table only for Knowledge approvals. Hence i am writing below one line in My BR:
<<current.sys_created_by = gs.getUserDisplayName();>>
But while checking in Background script, i am not getting the user's name by using getDisplayName(). It is coming as undefined.
I am using the below script for background check :
var kb = new GlideRecord('sysapproval_approver');
kb.addEncodedQuery('document_id=sys_id^source_table=kb_knowledge');
kb.query();
if(kb.next()){
gs.print(kb.sys_created_by.getDisplayName());
}
Can anybody tell me what is the issue here?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-15-2016 10:19 AM
getDisplayName works for reference fields. sys_created_by is just a string field containing the userID. You will need to lookup the user record based on that userID to get the full name.
OR
If the Opened by in the task for the approval is the same user you can dot walk like this:
var kb = new GlideRecord('sysapproval_approver');
kb.addEncodedQuery('document_id=sys_id^source_table=kb_knowledge');
kb.query();
if(kb.next()){
gs.print(kb.sysapproval.opened_by.getDisplayName());
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-15-2016 10:32 AM
Hi Robert,
We cannot use sysapproval because it refers to Task table and the Knowledge records are not linked to Task table ,
How can i lookup the user record? I am not able to..
Appreciate your reply!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-15-2016 10:53 AM
Hi,
Try below code :
var kb = new GlideRecord('sysapproval_approver');
kb.addEncodedQuery('document_id=sys_id^source_table=kb_knowledge');
kb.query();
if(kb.next())
{
var getUserFullName = new GlideRecord('sys_user');
getUserFullName.addQuery('user_name',kb.sys_created_by);
getUserFullName.query();
if(getUserFullName.next())
{
gs.print(getUserFullName.name);
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎12-16-2016 03:49 AM
Hi Akshat,
It worked. It is giving me name now. Thanks a lot.
So now in BR, i only need to update as :
Condition:
current.source_table = 'kb_knowledge'
Script :
var getUserFullName = new GlideRecord('sys_user');
getUserFullName.addQuery('user_name',current.sys_created_by);
getUserFullName.query();
if(getUserFullName.next())
{
current.sys_created_by = getUserFullName.name;
}