Fix script to close REQ and RITM

mkader
Kilo Guru

Hello,

We are in the process of fixing a workflow that is not closing out RITMs and REQs when SCTASK is closed complete. We have over 100 REQs for this particular item. The user wants us to manually close out all REQs while we are fixing the workflow. How can I create a fix script that closes the RITM and REQ? I have a fix script to close the REQ, but not sure how to close its RITM.

var gr = new GlideRecord('kb_knowledge');
gr.addEncodedQuery('descriptionSTARTSWITHaccounting^state=1');
gr.query();

while(gr.next()) {
    gr.setValue('state', 3);
    gr.work_notes = "This REQ is being manually closed";
    gr.update();
}

 

***Edited****

I mistyped the table in my GlideRecord:

var gr = new GlideRecord('sc_request');
gr.addEncodedQuery('descriptionSTARTSWITHaccounting^state=1');
gr.query();

while(gr.next()) {
    gr.setValue('state', 3);
    gr.work_notes = "This REQ is being manually closed";
    gr.update();
}

Thanks!

1 ACCEPTED SOLUTION

asifnoor
Kilo Patron

Hi,

Try this code. but table shoudl be sc_request and your encoded query shoudl be correct.

var gr = new GlideRecord('kb_knowledge');
gr.addEncodedQuery('descriptionSTARTSWITHaccounting^state=1');
gr.query();

while(gr.next()) {
    //fetch the associated ritm
    var gr1 = new GlideRecord("sc_req_item");
    gr1.addQuery("request",gr.getValue("sys_id"));
    gr1.query();
    while(gr1.next()) {
      gr1.setValue('state', 3);
      gr1.work_notes = "This item is being manually closed";
      gr1.update();
    }
    gr.setValue('state', 3); //check the close state value in sc_req_item table.
    gr.work_notes = "This REQ is being manually closed";
    gr.update();
}

Kindly mark the comment as a correct answer and helpful if it helps to solve your problem.

Regards,
Asif
2020 ServiceNow Community MVP

 

View solution in original post

19 REPLIES 19

@asifnoor - Does this explain why some of the REQ are not closing? Will changing the order to trigger SCTASK first fix the problem of the REQ closing and then reopening?

 

 

***Edited***

I changed the order so SCTASK gets hit first and then RITM'S. The state gets reverted back to "Open" after I open the REQ. It only temporarily works for me

Are you saying that your request is reopening or not closing at all? If reopending, when exactly is it happening? on any manual action or anything else.

In the code, before gr.update, use gr.setWorkflow(false); and it shall work.

Kindly mark the comment as a correct answer and helpful if it helps to solve your problem.

Regards,
Asif
2020 ServiceNow Community MVP

It worked thanks! When the work note gets posted, it posts as the last user that modidifed the ticket. How can I set the work note to system?

Great. Can you mark my comment as a correct answer which has the actual code to close RITM.