Trigger event issue

Kaustubh k
Tera Contributor

Hi All,

 

We have a job which triggers an event and sends notification to users who have not logged in from past 2 months.

I want to trigger  an event only if there are users present, else an email should not be triggered.How we can achieve this.

Below is mine script:

 

 var date1 = new GlideDateTime();
        date1.addDaysUTC(-54);// cut off date to pull th users who are not logged in before 54 days
        var usersSysIds = '';
        var useremail ='';
        var getUserId = new GlideRecord('sys_user');// Query on user table to get users
        getUserId.addEncodedQuery('sys_class_name=sys_user^active=true^last_login_time<=javascript&colon;gs.beginningOfLast30Days()^sys_created_on<=javascript&colon;gs.beginningOfLast30Days()^u_employee_type=GBO Ingka');getUserId.query();
        while (getUserId.next()) {
            var date2 = new GlideDateTime();
            date2.setValue(getUserId.getValue('last_login_time'));
            var createdDate = new GlideDateTime();
            createdDate.setValue(getUserId.getValue('sys_created_on'));
        if ((GlideDateTime.subtract(date2, date1).getDayPart() > 54) && (GlideDateTime.subtract(createdDate, date1).getDayPart() > 54)) {
                var grpMembership = new GlideRecord('sys_user_grmember');
                grpMembership.addEncodedQuery('user=' + getUserId.getUniqueValue() + '^group=ca8915b4877ce1108f2b87b6cebb3529');
                grpMembership.query();
                if (grpMembership.next()){
                    usersSysIds+=getUserId.getUniqueValue()+',';
                    useremail+=getUserId.getValue('email')+',';
                }
            }
        }
       
  gs.eventQueue('stkh.loggedin',getUserId,usersSysIds,useremail);
 
Thanks in Advance
Karan
1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

@Kaustubh k 

try this

var date1 = new GlideDateTime();
date1.addDaysUTC(-54); // cut off date to pull the users who have not logged in before 54 days
var usersSysIds = '';
var useremail = '';
var getUserId = new GlideRecord('sys_user'); // Query on user table to get users
getUserId.addEncodedQuery('sys_class_name=sys_user^active=true^last_login_time<=javascript&colon;gs.beginningOfLast30Days()^sys_created_on<=javascript&colon;gs.beginningOfLast30Days()^u_employee_type=GBO Ingka');
getUserId.query();
while (getUserId.next()) {
    var date2 = new GlideDateTime();
    date2.setValue(getUserId.getValue('last_login_time'));
    var createdDate = new GlideDateTime();
    createdDate.setValue(getUserId.getValue('sys_created_on'));
    if ((GlideDateTime.subtract(date2, date1).getDayPart() > 54) && (GlideDateTime.subtract(createdDate, date1).getDayPart() > 54)) {
        var grpMembership = new GlideRecord('sys_user_grmember');
        grpMembership.addEncodedQuery('user=' + getUserId.getUniqueValue() + '^group=ca8915b4877ce1108f2b87b6cebb3529');
        grpMembership.query();
        if (grpMembership.next()) {
            usersSysIds += getUserId.getUniqueValue() + ',';
            useremail += getUserId.getValue('email') + ',';
        }
    }
}

// Check if there are any users before triggering the event
if (usersSysIds !== '' && useremail !== '') {
    gs.eventQueue('stkh.loggedin', getUserId, usersSysIds, useremail);
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

View solution in original post

1 REPLY 1

Ankur Bawiskar
Tera Patron
Tera Patron

@Kaustubh k 

try this

var date1 = new GlideDateTime();
date1.addDaysUTC(-54); // cut off date to pull the users who have not logged in before 54 days
var usersSysIds = '';
var useremail = '';
var getUserId = new GlideRecord('sys_user'); // Query on user table to get users
getUserId.addEncodedQuery('sys_class_name=sys_user^active=true^last_login_time<=javascript&colon;gs.beginningOfLast30Days()^sys_created_on<=javascript&colon;gs.beginningOfLast30Days()^u_employee_type=GBO Ingka');
getUserId.query();
while (getUserId.next()) {
    var date2 = new GlideDateTime();
    date2.setValue(getUserId.getValue('last_login_time'));
    var createdDate = new GlideDateTime();
    createdDate.setValue(getUserId.getValue('sys_created_on'));
    if ((GlideDateTime.subtract(date2, date1).getDayPart() > 54) && (GlideDateTime.subtract(createdDate, date1).getDayPart() > 54)) {
        var grpMembership = new GlideRecord('sys_user_grmember');
        grpMembership.addEncodedQuery('user=' + getUserId.getUniqueValue() + '^group=ca8915b4877ce1108f2b87b6cebb3529');
        grpMembership.query();
        if (grpMembership.next()) {
            usersSysIds += getUserId.getUniqueValue() + ',';
            useremail += getUserId.getValue('email') + ',';
        }
    }
}

// Check if there are any users before triggering the event
if (usersSysIds !== '' && useremail !== '') {
    gs.eventQueue('stkh.loggedin', getUserId, usersSysIds, useremail);
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

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