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

Tony Chatfield1
Kilo Patron

Hi, in OOB ServiceNow the relationship between cmn_department and sys_user is 1 to 1.
Meaning a user has only 1 department relationship and this is defined in their sys_user record.

 

I see you have added a custom 'u_active' field against department,

this would not impact the existing 1 to 1 department to user relationship and the result would be a sys_user.department that is either active = true or active = false;

but this customization will not allow you to have more than 1 department relationship, without a M2M table to define\contain this information and I do not believe that this exists OOB.

Perhaps you can clarify your configuration and requirements?
OOB the only script you need to return the sys_id of your users department is

gs.getUser().getDepartmentID();

Omkar Mone
Mega Sage

Can you try this instead?

var deptArr = gs.getUser().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);
        }
}

Ankur Bawiskar
Tera Patron
Tera Patron

@Sathiskumar_D 

your requirement is not clear.

Also where are you using this script?

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

I am using this script in script include. I tried it as an background script. I didn't get any answer.