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?