Deleting inactive users

I_Das
Tera Contributor

Hello all,

 

I want to remove inactive users from assignment group, I want to write a business rule on group member table.

 

When: before

 

Script:

(function executeRule(current, previous /*null when async*/) {
if (current.user) {
    var userGr = new GlideRecord('sys_user');
    if (userGr.get(current.user)) {
if (!userGr.active) {
            current.deleteRecord(); // Remove the user from the group
        }
 }
}
})(current, previous);
 
But it is not deleting the existing inactive users from the group. If you could tell me the issue in this it will be very helpful.
 
Thanks & Regards,
I Das
12 REPLIES 12

@Sid_Takali 
To delete existing inactive users, create a fix script to run on a higher instance.


Script

var grUser = new GlideRecord('sys_user');

grUser.addQuery('active',false);

grUser.query();

while (grUser.next()){

    var grMember = new GlideRecord('sys_user_grmember');

    grMember.addQuery('user',grUser.sys_id);

    grMember.query();

    while(grMember.next()){

        grMember.deleteRecord();

    }

}

Sid_Takali
Kilo Patron
Kilo Patron

Hi @I_Das Try below code and modify accordingly

var grpMember = new GlideRecord('sys_user_grmember');
grpMember.query();
while (ggrpMember.next()) {
    var gr = new GlideRecord('sys_user');
    gr.addEncodedQuery('active=false^sys_id=' +grpMember.user); // 
        gr.query();
        if (gr.next()) {
            grpMember.deleteRecord();
        }

    }

I_Das
Tera Contributor

Hello @Sid_Takali ,

 

It's not working. It is not deleting any user.

 

Thanks & Regards,

I Das

dhanrajb
Tera Guru

Hi @I_Das ,

 

If you want to apply this logic for the existing users, I don't think business rule won't be a better option. Run a BG Script once and align the data. Then you write a business rule to apply for the future records.

 

Background Script:

var grUser = new GlideRecord('sys_user');
grUser.addQuery('active',false);
grUser.query();
while (grUser.next()){
    var grMember = new GlideRecord('sys_user_grmember');
    grMember.addQuery('user',grUser.sys_id);
    grMember.query();
    while(grMember.next()){
        grMember.deleteRecord();
    }
}

 

Regards,

Dhanraj.