Interested in a ServiceNow event built for developers? Registration for now[dev]26 is officially open!

Dynamic filter one of my group members

Alon Grod
Tera Expert

Hi,

Im trying to create a dynamic filter that will return all users from my groups but i had no luch. What am I doing wrong?

AlonGrod_0-1790146742824.png

 

AlonGrod_1-1790146787923.png



var OneOfMyGroupMembers = Class.create();

OneOfMyGroupMembers.prototype = {
    initialize: function() {},

    getMyGroupMembers: function() {
        var groups = gs.getUser().getMyGroups();
        var groupQuery = groups && groups.join ? groups.join(',') : String(groups || '');
        if (!groupQuery)
            return '';

        var users = [];
        var seen = {};

        var member = new GlideRecord('sys_user_grmember');
        member.addQuery('group', 'IN', groupQuery);
        member.addQuery('user.active', true);
        member.query();

        while (member.next()) {
            var userId = member.getValue('user');
            if (userId && !seen[userId]) {
                seen[userId] = true;
                users.push(userId);
            }
        }

        return users.join(',');
    },

    type: 'OneOfMyGroupMembers'
};
10 REPLIES 10

@Rakesh_M 

my thoughts

-> When used in a reference field, ServiceNow expects an encoded query, like return "sys_idIN" + users.join(',');

-> When used in a list filter dynamic operator, ServiceNow expects only the value(s) to compare against, not a field query. return users works because the platform internally generates something similar to: assigned_to IN (<returned values>)

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

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