How do I prevent the re-opening of Closed Incidents ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-04-2019 05:53 AM
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

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-08-2019 02:06 PM
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-08-2019 02:22 PM
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.