Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Auto close interactions records

Shanice Mckenzi
ServiceNow Employee
ServiceNow Employee

Hello,

 

What is the best way to have interactions records auto-close after the associated incident/request closed? Customer wants to avoid the extra effort to close these manually?

 

#ITSM

3 REPLIES 3

Community Alums
Not applicable

Hi @Shanice Mckenzi ,

it would require two business rules. one is on the Task table and another one on the interaction related record table.

1. create a field called 'Interaction(u_interaction) on the Task table.

2. Create a Business rule on interaction related record table (before insert update)to copy the interaction field to task table.

3. Create a business rule on task table (after update and Active changes to false)to set the interaction to closed complete once all related task are in active false state.

(function executeRule(current, previous /*null when async*/) {
      var result = [];
      var array = [];
      var ref = [7,3];
      var gr = new GlideRecord ('task');
          gr.addQuery('u_interaction',current.u_interaction);
          gr.query();
   while (gr.next())
   {
        array.push(gr.state);
   }
   if(array.length > 0)
   {
       for(var i=0;i<array.length;i++)
   {
   var arrayUtil = new ArrayUtil();
      if(arrayUtil.indexOf(ref, array[i])==-1)
    {
          result.push(array[i]);
    }
     }
   }
       if(result.length == 0)
   {
       var inter = new GlideRecord ('interaction');
            inter.addQuery('sys_id',current.u_interaction);
            inter.query();
      if(inter.next())
   {
   inter.state='closed_complete';
    inter.update();
 }
 }
 })(current, previous);
(function executeRule(current, previous /*null when async*/) {

	var gr = new GlideRecord('task');
	gr.addQuery('sys_id', current.document_id);
	gr.query();
	if(gr.next()){
		gr.u_interaction = current.interaction;
		gr.update();
	}
	var gr1 = new GlideRecord('interaction');
	gr1.addQuery('sys_id', current.interaction);
	gr1.query();
	if(gr1.next()){
		gr1.state = 'work_in_progress';
		gr1.update();
	}
	

})(current, previous);

 

Credits 

Community Alums
Not applicable

Hi @Shanice Mckenzi ,

 

Sandeep Rajput
Tera Patron
Tera Patron

@Shanice Mckenzi Best way is to write a business rule on the respective table with a condition state changes to Closed Complete. Query the interaction table to check if an entry for the same task exist within interaction_related_record (Interaction Related Records) already exist, if yes then pic the corresponding Interaction record and set it to close.

 

Screenshot 2024-02-13 at 8.31.04 PM.png