Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Get Caller's manager name

Priya155
Giga Expert

Hi all,

My requirement is :on change of caller ,Caller's manager name should get populate  in short description.for this i have written client script On Change of caller with below code:

var man = g_form.getReference('caller_id', setmanager);

function setmanager(man) {

if (man)

alert('manager is '+ man.manager);

g_form.setValue('short_description', man.manager);}

and this is returning sys_id and if i have written below code then its returning no value :

var man = g_form.getReference('caller_id', setmanager);

 function setmanager(man) {

if (man)

alert('manager is '+ man.Manager.name);

g_form.setValue('short_description', man.Manager.name);}

 

Please guide, Thanks in advance.

Thanks,

Priya

1 ACCEPTED SOLUTION

AbhishekGardade
Giga Sage

Hello Priya,

Dot walking will not work in client script. In order to get manager's name you need to call a script include from client script as below.

1. Create a Client script as below:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {

var callerID = g_form.getValue('caller_id');
var si =new GlideAjax('getCallerID');
si.addParam('sysparm_name','getUserInfo');
si.addParam('sysparm_caller_id',callerID);
si.getXML(getManager);

function getManager(response){

var manager = response.responseXML.documentElement.getAttribute('answer');
alert("Manager Name: "+manager);

}
}

2. Script Include Code:

Create a script include as below:

Name: getCallerID 

Client callable: TRUE (Checked)

var getCallerID = Class.create();
getCallerID.prototype = Object.extendsObject(AbstractAjaxProcessor, {

getUserInfo: function() {

var userID = this.getParameter('sysparm_caller_id');
var gr = new GlideRecord('sys_user');
gr.addQuery('sys_id',userID);
gr.query();
if(gr.next()){

var manager = gr.getDisplayValue('manager');
return manager;
}
},

type: 'getCallerID'
});

Please mark as Correct Answer and Helpful, if applicable.
Thank You!
Abhishek Gardade

 

Thank you,
Abhishek Gardade

View solution in original post

14 REPLIES 14

Hi Abhishek/all,

In Service catalog based on Requester field (Variable Name : requester_demo) , Requester's manager name should get populate in Manager field (Variable Name : manager_demo).

 

Implemented it using Glide Ajax (Catalog client script) and script include as below…but I think script include code is not fired and always getting manager name as null

 

Catalog Client script:

function onChange(control, oldValue, newValue, isLoading) {

   if (isLoading || newValue == '') {

      return;

   }

  

var requester= g_form.getValue('requester_demo');

var ga=new GlideAjax('getRequesterManager');

ga.addParam('sysparm_name','getrequester_manager');

ga.addParam('sysparm_requester_demo',requester);

ga.getXML(getManager);

 

function getManager(response){

var manager = response.responseXML.documentElement.getAttribute('answer');

alert("Manager Name: "+manager);

}

 

 

Script Include: (Name : getRequesterManager)

 

var getRequesterManager = Class.create();

getRequesterManager.prototype = Object.extendsObject(AbstractAjaxProcessor, {

getrequester_manager :function() {

 

var managername = this.getParameter('sysparm_requester_demo');

var gr = new GlideRecord('sys_user');

gr.addQuery('sys_id',managername);

gr.query();

 

if(gr.next()){

var manager = gr.getDisplayValue('manager');

return manager;

}

},

 

    type: 'getRequesterManager'

});

 

 

 

Please guide.

 

Thanks,

Priya

 

Performance like Abhishek mentioned, queries, server side vs client side, though also User Experience. The user's screen freezes, waiting for the response.

Though touching on performance: actually GlideAjax + getXML like often is mentioned isn't better as getReference + callback. Both retrieve the whole record.
You need to perform GlideAjax + getXMLAnswer which only retrieves the answer you defined.

Kind regards,
Mark

---

LinkedIn
Community article list

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn

Mark Roethof
Tera Patron
Tera Patron

The code Abhishek Gardade just posted for Script Include + Client Script should help you. Now only add what I mentioned about getXMLAnswer instead of applying getXML. getXMLAnswer is more efficient.
Read about it here:
getXMLAnswer vs getXML

If my answer helped you in any way, please then mark it as helpful.

Kind regards,
Mark

---

LinkedIn
Community article list

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn

AbhishekGardade
Giga Sage

I can see you have created a duplicate thread for the same query. So can you please delete those threads?

https://community.servicenow.com/community?id=community_question&sys_id=262bcc84dbde405014d6fb243996...

https://community.servicenow.com/community?id=community_question&sys_id=dfcc4c8cdbde405014d6fb243996...

https://community.servicenow.com/community?id=community_question&sys_id=8c5c5273db868c102be0a851ca96...

You can delete these thread by clicking More Options

find_real_file.png

Thank You,

Abhishek Gardade

Thank you,
Abhishek Gardade

Thanks Abhishek.

Yes i have deleted duplicate threads. As when i was posting question each time it was showing me error that content is unavailable and due to that it get posted multiple time... 🙂