How to Auto close incidents in 5 working days, after incident state is resolved.

Balaram7
Kilo Sage

Hi all,

 

Please help me with this below requirement.

We are using incidents properties OOB to move incidents to closed state after 5 days once the incident state is set to resolved. This will run in weekends as well. can we restrict this to run only for 5 working days in a week.

If yes please help me with the right way to achieve this.

 

 

Thank you,

Balaram.

1 ACCEPTED SOLUTION

@Balaram 

Create schedule job which runs daily and use below script

It would check if the days between created and now time is more than 5 working days i.e. the difference is excluding weekends

updateRecords();
function updateRecords(){

try{
var inc = new GlideRecord('incident');
inc.addQuery('state', 6);
inc.query();
while(inc.next()){

var start = new GlideDateTime(inc.sys_created_on);
var nowTime = new GlideDateTime();

var days = getDateDiffExcWeekends(start,nowTime);
// if days more than 5
if(days >=5){
inc.state = 7;
inc.incident_state = 7;
inc.active = false;
inc.update();
}
}
}
catch(ex){
gs.info(ex);
}
}

function getDateDiffExcWeekends(start , end){
        var days = 0;
        while (start < end) {
            start.addDaysUTC(1);

            if (start.getDayOfWeekUTC() != 6 && start.getDayOfWeekUTC() != 7){
                days++ ;
            }
        }
        return days;
    }

Regards
Ankur

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

View solution in original post

12 REPLIES 12

@Balaram 

Create schedule job which runs daily and use below script

It would check if the days between created and now time is more than 5 working days i.e. the difference is excluding weekends

updateRecords();
function updateRecords(){

try{
var inc = new GlideRecord('incident');
inc.addQuery('state', 6);
inc.query();
while(inc.next()){

var start = new GlideDateTime(inc.sys_created_on);
var nowTime = new GlideDateTime();

var days = getDateDiffExcWeekends(start,nowTime);
// if days more than 5
if(days >=5){
inc.state = 7;
inc.incident_state = 7;
inc.active = false;
inc.update();
}
}
}
catch(ex){
gs.info(ex);
}
}

function getDateDiffExcWeekends(start , end){
        var days = 0;
        while (start < end) {
            start.addDaysUTC(1);

            if (start.getDayOfWeekUTC() != 6 && start.getDayOfWeekUTC() != 7){
                days++ ;
            }
        }
        return days;
    }

Regards
Ankur

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

@Balaram 

Hope you are doing good.

Did my reply answer your question?

If so, please mark appropriate response as correct & helpful so that the question will appear as resolved for others who may have a similar question in the future.

Thanks!
Ankur

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

@Ankur Bawiskar Hi ankur,

 I need same logic, for resolved.

That is when an incident goes to resolved after 5 week days it has to close automatically. please suggest

@Balaram 

Thank you for marking my response as helpful.

If my response helped you please mark it correct to close the question so that it benefits future readers as well.

Regards
Ankur

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

@Balaram 

Hope you are doing good.

Did my reply answer your question?

If my response helped please close the thread by marking appropriate response as correct so that it benefits future readers.

Regards
Ankur

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