Want to get the current logged in user Manager Name and Manager's manger name , ned entire hierachy

naveenvenka
Tera Contributor

Upon clicking the button , need to et the current logged in user Manager Name and Manager's manger name , ned entire hierachy.

 

I have wrote this script and will use it in UI Actions , and show it in Incident feild .

 

var gr=new GlideRecord('sys_user');
gr.get(gs.getUserID());
var managersChain=[];
if(gr.isValidRecord()){
var managerID=gr.getValue('manager');
managersChain.push(gr.getDisplayValue('manager'));

while(managerID){
var manager=new GlideRecord('sys_user');
if(manager.get(managerID)){
managerID=manager.getValue('manager');
managersChain.push(manager.getDisplayValue('manager'));
}
else{
break;
}

}

gs.info(managersChain);

}
 
 
Is there any better way i can write and any better approach to minimize the perfomance issues ?
1 ACCEPTED SOLUTION

Sandeep Rajput
Tera Patron
Tera Patron

@naveenvenka I have created this recursive function for you. You can test this function via a background script and it will give the the entire manager hierarchy without causing any performance issues.

 

function getManagerHierarchy(managerArray, next) {
    var glideRecord = new GlideRecord('sys_user');
    if (glideRecord.get(next)) {
        managerArray.push(glideRecord.manager.name + '');
        return getManagerHierarchy(managerArray, glideRecord.getValue('manager'));
        
    } else {        
		return managerArray.toString();
    }
}

var managerArray = [];
gs.info(getManagerHierarchy(managerArray, 'b13cb325931721100143ad44246a4db0')); //Pass the sys_id of person here

 Hope this helps.

View solution in original post

2 REPLIES 2

Sandeep Rajput
Tera Patron
Tera Patron

@naveenvenka I have created this recursive function for you. You can test this function via a background script and it will give the the entire manager hierarchy without causing any performance issues.

 

function getManagerHierarchy(managerArray, next) {
    var glideRecord = new GlideRecord('sys_user');
    if (glideRecord.get(next)) {
        managerArray.push(glideRecord.manager.name + '');
        return getManagerHierarchy(managerArray, glideRecord.getValue('manager'));
        
    } else {        
		return managerArray.toString();
    }
}

var managerArray = [];
gs.info(getManagerHierarchy(managerArray, 'b13cb325931721100143ad44246a4db0')); //Pass the sys_id of person here

 Hope this helps.

Shashank_Jain
Kilo Sage

@naveenvenka ,

 

Try this!

// Get the logged-in user
var userGR = new GlideRecord('sys_user');
if (userGR.get(gs.getUserID())) {
    var managersChain = [];
    var managerID = userGR.getValue('manager');

    while (managerID) {
        var mgr = new GlideRecord('sys_user');
        if (mgr.get(managerID)) {
            managersChain.push(mgr.getDisplayValue('name'));  // manager's name
            managerID = mgr.getValue('manager'); // move to next manager
        } else {
            break;
        }
    }

    var hierarchy = managersChain.join(" > ");
    gs.info("Manager Hierarchy: " + hierarchy);
} else {
    gs.info("No user record found for current session.");
}

 

I have tried it on PDI (Background script) and its working!

 

Hope it helps!

 

If this works, please mark it as helpful/accepted — it keeps me motivated and helps others find solutions.
Shashank Jain – Software Engineer | Turning issues into insights