In requested for variables I need users of manger(manger is current login user)

Siva82
Tera Expert

Hi Team,

I have a variable that needs to reference data from the user table.

In this case, I need to implement a reference qualifier. If the currently logged-in user is a manager, the variable should populate with the users managed by that person. Additionally, the variable should include the users managed by the logged-in manager's direct reports (ex:manger(3users)>> manger of manger(4users) = 7 Usrs need to populate)

For example:

  • If a manager (X) has 3 direct reports, the variable should return 3 users.
  • If another manager (Y) has 3 direct reports, and one of those users has a manager (Z) who oversees 4 users, the variable should return a total of 7 users (3 users from Y + 4 users from Z).

Thank you in advance

Sivananda reddy

1 ACCEPTED SOLUTION

@Siva82 

use this and pass the logged in user sysId

 

var UserUtils = Class.create();
UserUtils.prototype = {
    initialize: function() {},

    getAllReportees: function(managerSysId) {
        var allReports = [];
        // Start collecting from the given manager
        this.collectReports(managerSysId, allReports);
        return allReports.toString();
    },

    // Recursive function to collect reports
    collectReports: function(managerId, allReports) {
        var directReports = this.getDirectReports(managerId);
        while (directReports.next()) {
            allReports.push(directReports.sys_id.toString());
            this.collectReports(directReports.sys_id, allReports); // Recursively collect indirect reports
        }
    },

    // Function to get direct reports
    getDirectReports: function(managerId) {
        var gr = new GlideRecord('sys_user');
        gr.addQuery('manager', managerId);
        gr.query();
        return gr;
    },

    type: 'UserUtils'
};

 

use this in ref qualifier

 

javascript: 'sys_idIN' + new UserUtils().getAllReportees(gs.getUserID());

 

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

View solution in original post

12 REPLIES 12

Siva82
Tera Expert

Hi @Ankur Bawiskar,

 

Could you please help on this requriment

 

I have a variable that needs to reference data from the user table.

In this case, I need to implement a reference qualifier. If the currently logged-in user is a manager, the variable should populate with the users managed by that person. Additionally, the variable should include the users managed by the logged-in manager's direct reports (ex:manger(3users)>> manger of manger(4users) = 7 Usrs need to populate)

For example:

  • If a manager (X) has 3 direct reports, the variable should return 3 users.
  • If another manager (Y) has 3 direct reports, and one of those users has a manager (Z) who oversees 4 users, the variable should return a total of 7 users (3 users from Y + 4 users from Z).

Thank you in advance

Sivananda reddy

Uncle Rob
Kilo Patron

When you say variable... are you talking about a variable in an existing script?
Or are you talking about a service catalog variable that contains a glide list or something?

Hi @Uncle Rob 

 

Thank you for your response.

 

I am talking about catalog variable. The variable type is reference (sys_user table).

 

Thank you

Siva

A reference can only hold one reference at a time.  What you describe sounds like its holding multiple references.