Prevent Incident Resolution When Tasks Are Still Open

gaf627
Tera Expert

We have a need to provide the ability to create Incident Tasks for our Applications Team, as they often divide up work when addressing an incident.     As discussed in many other incident task discussions, we've taken the advice given and extended the Task Table to create Incident Tasks.   The applications team can now create Incident Tasks without issue; however, they are Resolving Incidents without closing their tasks.     We would like to do a check to prevent this by displaying a message when they set the Incident state to Resolved if there are Open Tasks.       Initially, we attempted to do this with a Business Rule, without scripting and just using a filter in the Business Rule.   It appears this would work, if I was able to set When To Run with a Filter Condition on Incident when State changes to Resolved and   select the Incident Task table and filter on Active or State = Open.     Is this possible to execute a Business Rule on the Incident table and filter on both the Incident table and Incident Task table by dot walking?   For some reason, I am unable to select the Incident Task table and fields.   Thanks!

13 REPLIES 13

User179407
Mega Guru

Hi Greg,



Create a before update Business rule on the Incident table with the following script in   the Advanced tab.



function onBefore(current, previous) {



  var target = new GlideRecord('incident_task'); // table name for your Incident task


  target.addQuery('incident', current.sys_id);   //this is   the field which will link Incident to Incident task


  //search for open Incident tasks


  target.addQuery('state', 1).addOrCondition('state', 2).addOrCondition('state', -5); // check for open Incident task - add/edit states integer values as appropriate


  target.query();



  if(target.hasNext()){


  if ((current.incident_state == 4) || (incident.problem_state == 5)){    


  gs.addInfoMessage("You have open tasks which must be completed before this record can be closed");


  current.setAbortAction(true);


  }


  }


}



This script will check for open Incident task when Incident is set to Resolved status.



Let me know if this helped.



Suraj Chauhan


Thank you for the feedback Suraj.   While I am able to get it working using a script, I was hoping to avoid the script and simply use the Business Rule filter conditions available since Eureka.   The issue is that I'm unable to dot walk to Incident Task table (extended from Task) to select the field in the filter and don't understand why.



find_real_file.png


even though there are filters, they dont always work just right.


i've found that using a script works better than those filters a lot of times.


In the filter Conditions, while selecting a field, there would be a option at the last "Show related fields", select that and check if you are able to find your Incident task table there.



Let me know if this helped.



Suraj Chauhan