The CreatorCon Call for Content is officially open! Get started here.

How to display name instead of user ID for updated by in e-mail notifications

jas101
Tera Expert

Hi all,

 

Please see below for our 'Incident Escalated' e-mail, specifically the 'What will it contain' notification details:

 

* * *

<font face="Calibri">

 

The following incident has been set to escalated by ${sys_updated_by}:

 

Customer: ${caller_id}

Updated: ${sys_updated_on}

Priority: ${priority}

Assignment group: ${assignment_group}

Assigned to: ${assigned_to}

 

Click here to view the incident: ${URI_REF}

* * *

 

We just want to change this part: The following incident has been set to escalated by ${sys_updated_by}: so instead of showing the user ID of who last updated the record, it shows the name of who last updated it. We have tried dot walking using ${sys_updated_by.name}: but this is not working. I have since realised this is because it is not a reference field back to the sys_user table.

 

I understand this should be relatively simple so any assistance would be much appreciated.

 

Many thanks,

D

1 ACCEPTED SOLUTION

Hi dasi,



I put in my reply that the script would return the UserID.



It depends what you want to display. If you want the name, you need to do a little more scripting, and use the mail script as proposed by Sanjeev Kumar above, edited to suit your needs. I've added comments in Blue.



  1. <mail_script>  
  2. var userid = current.sys_updated_by;       // Gets the User ID
  3. var gr = new GlideRecord('sys_user');   // Creates new GlideRecord Object
  4.       gr.addQuery('user_name', userid);     // Queries the table for the record of our user found in line 2
  5.       gr.query();  
  6.       if (gr.next()) {                                                                       // If it finds one....
  7.           var userName = gr.name;                           // set the variable "username" as the users name.
  8.         }  
  9.  
  10. template.print("Updated By: "+userName);   // Print the text "Updated By:" and then the username variable from line 7.
  11. </mail_script>  


Best to remove the comments before adding to your email. This has been tested and works fine on my instance.


View solution in original post

27 REPLIES 27

rahulanz
Kilo Contributor

Hi,

 

Please help me to call the email script in subject line.

dasi



Good point. If you look at Dictionary Entry from current.sys_updated_by field. This field is a simple String (by default the User ID).



So you will need a simple GlideRecord to solve it:



http://wiki.servicenow.com/index.php?title=GlideRecord#Query_Methods



[]'s


Andre Moreira


Is sys_updated_by truly a reference though?   That's the only way .getDisplayValue() will work.



EDIT:   Dictionary says sys_updated_by is a string.


<mail_script> template.print(current.sys_updated_by.getDisplayValue())</mail_script>




This returns the UserID of the last user to update the record.









Have you tested this?


The reason I ask is that sys_updated_by is not a reference to user, and therefore wouldn't know what the Display field is for which to display.   Its a string.