Skip to main content
Do any body how if it’s possible to calculate the number of managers above the user.

 

Basically, I would like a field on the user object that indicate the manager level.

 

Example:

If the user’s “manager field” = null, then Level 1

If the user’s manager’s “manager field” = null, then Level 2

If the user’s manager’s manager’s “manager field” = null, then Level 3

Etc.

Else “Level 5”.

 

A daily trigger should set this value for each user records.

 

Does any body have an idea if it’s possible? Big or medium task?
4 answers
  1. Apr 28, 2016, 3:33 PM
    Hi Alan,

    Here is the Solution.

    Please create a trigger on User Object. And also please let me know if you need any further help on this. Please update all the user records at least once with help of data loader.

    plese email me amulhai@gmail.com if you have firther question

    ==================================================================================== 

    trigger userTrigger on User(before update){

        List<User> UsrList=[Select id, ManagerId from User where IsActive=true];

        Map<id,id> MapUserWiseManager=new Map<Id,Id>();

        for(User usr: UsrList){

            if(usr.ManagerId!=null){

                MapUserWiseManager.put(usr.id,usr.ManagerId);

            }

        }

        

        

        for(User usr:Trigger.New){

            if(usr.ManagerId==null){

                usr.manager_level__c='Level 1';

            }else{

                if(MapUserWiseManager.get(usr.ManagerId)==null){

                    usr.manager_level__c='Level 2';

                 }else{

                        //Manager's Manager

                        Id Mgr_of_Mgr_2= MapUserWiseManager.get(usr.ManagerId);                    

                        if(MapUserWiseManager.get(Mgr_of_Mgr_2)==null){

                            usr.manager_level__c='Level 3';

                        }else{

                            //Manager's Manager's Manager

                            Id Mgr_of_Mgr_3= MapUserWiseManager.get(Mgr_of_Mgr_2);    

                            if(MapUserWiseManager.get(Mgr_of_Mgr_3)==null){

                                usr.manager_level__c='Level 4';

                            }else{

                                //Manager's Manager's Manager's Manager

                                Id Mgr_of_Mgr_4= MapUserWiseManager.get(Mgr_of_Mgr_3);

                                if(MapUserWiseManager.get(Mgr_of_Mgr_4)==null){

                                    usr.manager_level__c='Level 5';

                                }

                            }    

                        

                        }

                

            }

            

        }

        }//end of for

    }

     
0/9000