Remove inactive users from Group

Sakshi Shukla
Tera Contributor

How can we remove users from a group if they have been inactive for a specific period, such as 2 weeks?

1 ACCEPTED SOLUTION

Rushi Savarkar
Kilo Sage

Hello @Sakshi Shukla 
You can try below scheduled job code:

(function executeScheduleJob() {
    var twoWeeksAgo = new GlideDateTime();
    twoWeeksAgo.addDaysUTC(-14);

    var inactiveUsers = new GlideRecord('sys_user');
    inactiveUsers.addQuery('active', false);
    inactiveUsers.addQuery('sys_updated_on', '<=', twoWeeksAgo);
    inactiveUsers.query();
    gs.info('count' + inactiveUsers.getRowCount());
    while (inactiveUsers.next()) {
        var groupMemberships = new GlideRecord('sys_user_grmember');
        groupMemberships.addQuery('user', inactiveUsers.sys_id);
        groupMemberships.query();
       while (groupMemberships.next()) {
            groupMemberships.deleteRecord();
        }
    }
})();

Let me know if the above code works for you.

Thank you!

If my response helped you, please accept the solution and mark it as helpful.
Thank You!

View solution in original post

10 REPLIES 10

palanikumar
Mega Sage

Hi,

You can create a schedule job that get all users who are inactive and last updated is more than two weeks.

Then query sys_user_grmember table and get all record where user field has sys_id of the user received in previous step.

Delete the sys_user_grmember record.

Thank you,
Palani

Rushi Savarkar
Kilo Sage

Hello @Sakshi Shukla 
You can try below scheduled job code:

(function executeScheduleJob() {
    var twoWeeksAgo = new GlideDateTime();
    twoWeeksAgo.addDaysUTC(-14);

    var inactiveUsers = new GlideRecord('sys_user');
    inactiveUsers.addQuery('active', false);
    inactiveUsers.addQuery('sys_updated_on', '<=', twoWeeksAgo);
    inactiveUsers.query();
    gs.info('count' + inactiveUsers.getRowCount());
    while (inactiveUsers.next()) {
        var groupMemberships = new GlideRecord('sys_user_grmember');
        groupMemberships.addQuery('user', inactiveUsers.sys_id);
        groupMemberships.query();
       while (groupMemberships.next()) {
            groupMemberships.deleteRecord();
        }
    }
})();

Let me know if the above code works for you.

Thank you!

If my response helped you, please accept the solution and mark it as helpful.
Thank You!

Thanks for the solution , I will try and let you know.

 

Thank you Rushi for your soultion. It is working as expected.