Requested item not getting closed even after all sc tasks are closed

BijoyDeb
Tera Contributor

Hi all,

 

I am facing a strange issue in catalog management.

Sometimes, RITM's state is not getting changed to closed complete even if all catalog tasks under it are closed.

Usually, its working fine, but some RITMs are not getting closed and I am not sure what might be the reason behind this.

 

Also, its not for specific item, its happening for any random item.

 

Has anyone faced such issue before?

 

Please let me know what should I check for this.

 

Thanks!

3 ACCEPTED SOLUTIONS

@BijoyDeb 

yes from workflow it's also possible.

Instead of updating multiple workflows you can have after update BR on sc_task to close RITM once all sc tasks are closed

something like this

you can use after update BR on sc_task

Condition: State [IS ONE OF] Closed Complete/Closed Incomplete

Script:

(function executeRule(current, previous /*null when async*/) {

	// Add your code here
	var gr = new GlideRecord('sc_task');
	gr.addQuery('request_item', current.request_item); 
	gr.addQuery('active', true);
	gr.query();
	if(!gr.next()){
		var ritm = current.request_item.getRefRecord(); 
		ritm.state = 3;
		ritm.update();
	}

})(current, previous);

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

View solution in original post

yes, if you want it for all catalog items then go ahead with business rule on sc_task table.

Try this:

Table : sc_task

After Update  BR with condition as State CHANGES TO  Closed

 

var gr = new GlideRecord('sc_task');
	gr.addQuery('request_item', current.request_item); 
	gr.addQuery('active', true);
	gr.query();
	if(!gr.next())
      {
		var ritm = new GlideRecord('sc_req_item');
                ritm.get(current.request_item);
		ritm.state = 3;
		ritm.update();
	}

 

 

But this approach conflicts with flows and probably causes issues.

 

Regards,

Sumanth

 

View solution in original post

Be careful using the BR approach. If you have a workflow that does one task then another, the BR could close the RITM before the second task is created, thereby killing the workflow. If you can narrow down the specific RITMs where this is happening, you may want to use a very specific condition if you decide to go this route.

View solution in original post

21 REPLIES 21

Ankur Bawiskar
Tera Patron
Tera Patron

@BijoyDeb 

have you written any BR for this?

If yes then what debugging have you done so far?

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

JenniferRah
Mega Sage

If the tasks are being created manually (as opposed to being created from a workflow or Flow), then there is nothing that automatically closes the RITM. As Ankur said above, you would need to write a business rule to close it if you wanted to do that.

SumanthDosapati
Mega Sage
Mega Sage

@BijoyDeb 

There is no OOB automation that auto closes the RITM when sc tasks are closed.

You have to manually implement it via Business rule or Flow.

 

If it is already happening for few, then it might be already implemented in your instance. Find that BR on sc task table and check if it's working fine.

 

Or else, compare the flows for the it is happening and for which it is not.

 

Regards,

Sumanth

BijoyDeb
Tera Contributor

@JenniferRah 

The tasks are created from workflow itself, not manually.

Still for some RITMs even if all of them gets closed, RITM state remains open.

 

@Ankur Bawiskar I checked, there isn't any BR on sc_task table to close RITM after all sc tasks are closed.

Lets say in the flow designer we can add update record action to close state of RITM after all tasks are closed under it.

But for items taken care by workflow, can we do that?

or should I write a BR for this?