Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

How to find active departments that users are member of?

Sathiskumar_D
Giga Sage

Hello,

 

I need to find the "active" department that users are part of. I tried the following code but the answer is null. Could someone help me ?

var deptArr = gs.getUser().getUserByID('sys_id').getDepartmentID();
var myDept = [];
myDept.push(deptArr);
//  gs.info("depts are " + typeof myDept+ "users dept are :" +myDept);
for (var i = 0; i < myDept.length; i++) {
    var deptGr = new GlideRecord('cmn_department');
    deptGr.addQuery('u_active', true);
    deptGr.addQuery('sys_id', myDept[i]);
    deptGr.query();
    if (deptGr.next()) {
                var activeDept = [];
                activeDept.push(deptGr);
                 gs.info(activeDept);
        }
}

e

 

1 ACCEPTED SOLUTION

Sathiskumar_D
Giga Sage

Found the solution on my own. Thanks to you all.

 

function getDepartment() {
    var user = new GlideRecord('sys_user');
    user.get(sys_id);
    var dept_list = '';
    var departments = [];
    departments = user.department.split(',');
    // gs.info(departments);
    for (var i = 0; i < departments.length; i++) {
        dptl = new GlideRecord('cmn_department');
        dptl.get(departments[i]);
        if (dptl.u_active) {
            dept_list += dptl.code + ',';
            dept_list.push(dptl.code);
            gs.info(dept_list);
        }
    }
    return dept_list;

}

getDepartment();

 

 

View solution in original post

10 REPLIES 10

@Sathiskumar_D 

you didn't answer my earlier question. what's your requirement?

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

to get the users in the active department.

Amit Gujarathi
Giga Sage
Giga Sage

HI @Sathiskumar_D ,
I trust you are doing great.
To find the active department that users are part of in ServiceNow, you can modify your code as follows:

var userId = gs.getUser().getID();
var myDept = [];

// Retrieve the department(s) for the user
var userDeptGr = new GlideRecord('sys_user');
userDeptGr.get(userId);
var departmentID = userDeptGr.getValue('department');
if (departmentID)
    myDept.push(departmentID);

// Find the active department(s)
var activeDepts = [];
for (var i = 0; i < myDept.length; i++) {
    var deptGr = new GlideRecord('cmn_department');
    deptGr.addQuery('u_active', true);
    deptGr.addQuery('sys_id', myDept[i]);
    deptGr.query();
    if (deptGr.next()) {
        activeDepts.push(deptGr);
    }
}

// Log the active department(s)
gs.info('Active departments for user ' + gs.getUser().getName() + ':');
for (var j = 0; j < activeDepts.length; j++) {
    var activeDept = activeDepts[j];
    gs.info('Department: ' + activeDept.getValue('name'));
}

Was this answer helpful?


Please consider marking it correct or helpful.


Your feedback helps us improve!


Thank you!


Regards,


Amit Gujrathi



Sathiskumar_D
Giga Sage

Found the solution on my own. Thanks to you all.

 

function getDepartment() {
    var user = new GlideRecord('sys_user');
    user.get(sys_id);
    var dept_list = '';
    var departments = [];
    departments = user.department.split(',');
    // gs.info(departments);
    for (var i = 0; i < departments.length; i++) {
        dptl = new GlideRecord('cmn_department');
        dptl.get(departments[i]);
        if (dptl.u_active) {
            dept_list += dptl.code + ',';
            dept_list.push(dptl.code);
            gs.info(dept_list);
        }
    }
    return dept_list;

}

getDepartment();

 

 

This would only work if you have customized the OOB sys_user.department data type from 'reference' to a type of list?