From ccd3f9a40d315df369b8edcc759f6967ebe2659a Mon Sep 17 00:00:00 2001 From: DhruvBhatheja <70469942+DhruvBhatheja@users.noreply.github.com> Date: Sun, 5 Oct 2025 16:09:44 +0530 Subject: [PATCH 1/4] Readme.md --- .../Find Top-Level Manager Hierarchy/Readme.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/Readme.md diff --git a/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/Readme.md b/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/Readme.md new file mode 100644 index 0000000000..e5953bb1bf --- /dev/null +++ b/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/Readme.md @@ -0,0 +1,3 @@ +The script retrieves the top-level manager for the currently logged-in user by traversing the manager hierarchy in the sys_user table. + +It starts from the current user and moves up through each manager until it reaches a user who does not have a manager. From 58940730dc43d18c83f2e563086690d164bb6f46 Mon Sep 17 00:00:00 2001 From: DhruvBhatheja <70469942+DhruvBhatheja@users.noreply.github.com> Date: Sun, 5 Oct 2025 16:13:44 +0530 Subject: [PATCH 2/4] script.js --- .../Find Top-Level Manager Hierarchy/script.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/script.js diff --git a/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/script.js b/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/script.js new file mode 100644 index 0000000000..05b18cb97a --- /dev/null +++ b/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/script.js @@ -0,0 +1,18 @@ +var currentUser = gs.getUser(); // current logged-in user +var userGR = new GlideRecord('sys_user'); + +if (userGR.get(currentUser.getID())) { + // Loop until we find a user who has no manager + while (userGR.manager) { + var managerID = userGR.getValue('manager'); + var managerGR = new GlideRecord('sys_user'); + + managerGR.get(managerID); + userGR = managerGR; // Move up one level + } + gs.print("Top-level Manager: " + userGR.getDisplayValue('name')); +} else { + gs.print("User not found."); +} + +// The top-level manager is always the person in the hierarchy without a manager. From 5fdb9939a06144761bf2ad3e80d9df168e195493 Mon Sep 17 00:00:00 2001 From: DhruvBhatheja <70469942+DhruvBhatheja@users.noreply.github.com> Date: Sun, 5 Oct 2025 16:14:24 +0530 Subject: [PATCH 3/4] Update Readme.md --- .../Find Top-Level Manager Hierarchy/Readme.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/Readme.md b/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/Readme.md index e5953bb1bf..574cf34069 100644 --- a/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/Readme.md +++ b/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/Readme.md @@ -1,3 +1,13 @@ The script retrieves the top-level manager for the currently logged-in user by traversing the manager hierarchy in the sys_user table. It starts from the current user and moves up through each manager until it reaches a user who does not have a manager. + +The script starts with the current user (e.g., Employee). + +It checks if the user has a manager. + +If yes, it moves up the hierarchy to the manager. + +It repeats this process until it reaches a user who does not have a manager. + +That user is considered the Top-Level Manager. From 73eba3c9243dd47aec66d00dcb0f19d587c2a928 Mon Sep 17 00:00:00 2001 From: DhruvBhatheja <70469942+DhruvBhatheja@users.noreply.github.com> Date: Mon, 6 Oct 2025 19:46:47 +0530 Subject: [PATCH 4/4] Update script.js --- .../script.js | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/script.js b/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/script.js index 05b18cb97a..a725a1a65d 100644 --- a/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/script.js +++ b/Server-Side Components/Background Scripts/Find Top-Level Manager Hierarchy/script.js @@ -1,18 +1,25 @@ -var currentUser = gs.getUser(); // current logged-in user +var currentUser = gs.getUser(); // Current logged-in user var userGR = new GlideRecord('sys_user'); +var maxLevels = 7; +var currentLevel = 0; if (userGR.get(currentUser.getID())) { - // Loop until we find a user who has no manager - while (userGR.manager) { + + // Loop until we find a user who has no manager or reach max level + while (userGR.manager && currentLevel < maxLevels) { var managerID = userGR.getValue('manager'); var managerGR = new GlideRecord('sys_user'); - - managerGR.get(managerID); - userGR = managerGR; // Move up one level - } - gs.print("Top-level Manager: " + userGR.getDisplayValue('name')); + + if (managerGR.get(managerID)) { + userGR = managerGR; // Move up one level + currentLevel++; + // gs.print(" Level " + currentLevel + " Manager: " + userGR.getDisplayValue('name')); + } else { + break; // Manager record not found + } + } + + gs.print("Top-level (or Level " + currentLevel + ") Manager: " + userGR.getDisplayValue('name')); } else { gs.print("User not found."); } - -// The top-level manager is always the person in the hierarchy without a manager.