schedule job

spectura77
Tera Contributor

I have a schedule job which runs when the user does not login for 30 days that is working fine ,but now i need to exclude some users from the list ,i have tried with the below code but its not working 


inactiveUsers.addEncodedQuery('active=true^last_login_time<=' + DaysAgo + '^roles=ITIL^web_service_acess=false^email!=sdi@dsk.com');

 

please guide

3 REPLIES 3

Kieran Anson
Kilo Patron

Can you advise what you're wanting to exclude?

i am sending a notification to users who have not logged in for 30 days :

 

{

var DaysAgo = new GlideDateTime();
DaysAgo.addDaysUTC(-30);

var inactiveUsers = new GlideRecord('sys_user');
inactiveUsers.addEncodedQuery('active=true^last_login_time<=' + DaysAgo + '^roles=ITIL^web_service_acess=false^email!=sdi@dsk.com');
inactiveUsers.query();

while (inactiveUsers.next() {
gs.eventQueue('itil_user_inactive_30days',inactiveUsers,inactiveUsers.email,inactiveUsers.manager.email);

}

})();

James Chun
Kilo Patron

Hi @spectura77,

 

I am assuming that you want to filter the active users with the ITIL role who haven't logged in for the last 30 days.

 

Instead of using the roles field on the [sys_user] table, you will need to query the [sys_user_has_role] table. I believe the roles field has been deprecated or is no longer used.

 

So your scheduled job should look something like this:

 {

     var DaysAgo = new GlideDateTime();
     DaysAgo.addDaysUTC(-30);

     var inactiveUsers = new GlideRecord('sys_user_has_role');
     inactiveUsers.addEncodedQuery('user.active=true^user.last_login_time<=' + DaysAgo + '^role.name=itil^user.web_service_acess=false^user.email!=sdi@dsk.com');
     inactiveUsers.query();

     while (inactiveUsers.next() {
             gs.eventQueue('itil_user_inactive_30days', inactiveUsers.user inactiveUsers.user.email, inactiveUsers.user.manager.email);

         }

     })();

 

Cheers