- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-10-2020 09:38 AM
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!
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-10-2020 10:39 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-10-2020 10:54 AM
Mkader,
I am checking State either Closed Skipped or Close Incomplete or Close Complete, then Active to false on Request and Request Item Tables.
We are not using any Accounting field or value in our Instances.
Regrads,
Upender

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-10-2020 10:39 AM
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

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-10-2020 11:31 AM
Hello Mkader,
Did you try the code that i have provided above?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-10-2020 12:13 PM
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();
}
//fetch the associated subtask
var gr2 = new GlideRecord("sc_task");
gr2.addQuery("request",gr.getValue("sys_id"));
gr2.query();
while(gr2.next()) {
gr2.setValue('state', 3);
gr2.work_notes = "This subtask is being manually closed";
gr2.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();
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-10-2020 12:21 PM
yes, correct.
First close the sctask, then ritm and at the end request.
Kindly mark the comment as a correct answer and also helpful if this has solved your problem.
Kindly mark the comment as a correct answer and helpful if it helps to solve your problem.
Regards,
Asif
2020 ServiceNow Community MVP