We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

How to implement manager's manager as approver has VP in title?

kambleneeta20
Giga Expert

Hi,

I wants to implement below request in catalog item -

Requirement is : it should go for the requester's VP approval, but VP's level is not defined and sure .

There is a title field in which "VP" is mention.

It can be   - >

requester -> Manager (Title is VP)

requester -> manager -> manager (Title is VP)

requester- > Manager -> Manger -> manager (Title is VP).

Could you please suggest ?

8 REPLIES 8

Hi Neeta,



Here you go



var answer=[];


answer.push(findVP(current.variables.u_requester.toString());


function findVP(id){


var gr= new GlideRecord("sys_user");


gr.get(id);


if(!gr.manager.nil()){


if(gr.manager.title=="VP"){


return gr.getValue('manager');


}


else{


return findVP(gr.getValue("manager"));


}


}


return '';


}


jagarnathn
Tera Expert

Hi Neeta,



As Chuck suggested, you should use an recursive function in order to achieve this.




var maxLevels = 5;


requestor=current.variables.requestor;


var manager="";




var gr= new GlideRecord('sys_user');


gr.get('sys_id', requestor);


gr.query();


if(gr.next()){




manager=gr.manager;




if(manager)




var vptitle= getmanagerstitle(manager, maxlevels);










}




answer=vptitle;






  function getmanagerstitle(mgr,levels){




 


  var gr1= new GlideRecord('sys_user');


    gr1.get('sys_id',mgr);


    gr1.query();


if(gr1.next()){




if (gr1.title=="VP"){




  return gr.sys_id;




else{


    return getmanagertittle(mgr+".manager",(levels-1));


}




}




}


}






Thanks,


Jagarnath


FYI: you do not need gr.query() and gr.next() when you are using gr.get()


Liju John1
Mega Guru
//requestor='userName';
requestor=gs.getUserName();
var manager="";
var usr= new GlideRecord('sys_user');
usr.get('user_name', requestor);
usr.query();
if(usr.next()){
manager=usr.manager;
if(manager)
var myVPemail= getmanagerstitle(manager);
gs.print(myVPemail +" is the VP");
}
//answer=myVPemail;

function getmanagerstitle(mgr,levels){
var usr= new GlideRecord('sys_user');
usr.get('sys_id',mgr);
usr.query();
if(usr.next()){
var isVP = usr.title.indexOf("VP, ");
if (isVP == 0){
gs.print(usr.email +" - "+usr.title);
return usr.email;
}
else{
gs.print(usr.email +" - "+usr.title);
return getmanagerstitle(usr.manager);
}
}
}