Not getting user full name by using getDisplayName() in Business Rule

ServiceNow SA
Kilo Guru

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?

9 REPLIES 9

rlatorre
Kilo Sage

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());


}


ServiceNow SA
Kilo Guru

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!


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);


}


}


ServiceNow SA
Kilo Guru

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;


}