How do I prevent the re-opening of Closed Incidents ?

Sajith7
Kilo Explorer

Hi All,

We created an Incident in Service Now and change state to "Closed".

After that we updated summary/Work notes field. once we clicked update button  state of the closed incident automatically change to "Unacknowledged". How can i prevent reopening of closed ticket when a field is updated

Thanks

Sajith

 

2 REPLIES 2

Jaspal Singh
Mega Patron
Mega Patron

Hi Sajith,

 

As per best practice incident when Closed should have all of its form fields set read-only. In your case look for any before/after Business rule that runs on incident table on update. Once you find you will have to modify the When to run condition for it.

 

Thanks,

Jaspal Singh

 

Hit Helpful or Correct on the impact of response.

Oleg
Mega Sage

The reason of such behavior - Business Rule "task reopener" defined on Task and applied on incident table too. The business rule use

new TaskStateUtil(current).runTaskReopener()

as the condition. The script include TaskStateUtil contains the following code of the method runTaskReopener:

runTaskReopener: function() {

	// Is the record in a 'close' state but active is true
	var inCloseState = false;
	var closeStates = this.inactiveStates || [3, 4];
	for (var index1 = 0; index1 < closeStates.length; ++index1)
		if (this.task.state == closeStates[index1])
			inCloseState = true;
	var activeClosed = this.task.active.changesTo(true) && inCloseState;

	// Is the record in the default 'open' state but active is false
	var openState = this.stateElement.getAttribute(this.ATTR_DEFAULT_WORK) || 1;
	var inactiveOpen = (!this.task.active || this.task.active.changesTo(false)) && (this.task.state == openState);

	// Does record belong to a supported table
	var inSupportedTable = true;
	var ignoreTables = [];
	for (var index2 = 0; index2 < ignoreTables.length; ++index2)
		if (this.task.sys_class_name == ignoreTables[index2])
			inSupportedTable = false;
		
	if(inSupportedTable)
		if(this.task.instanceOf('dmn_demand') || this.task.instanceOf('idea'))
			inSupportedTable = false;
	// Decide if the business rule should be run or not
	return ((activeClosed || inactiveOpen) && inSupportedTable);
}

You can modify the line var ignoreTables = []; to var ignoreTables = ["incident"]; for example to fix the problem.