fix script to update RITM Record

vivek11
Tera Contributor

Hi Team,
Can someone help to update 500 ritm records fix script

A fix script needs to update the RITM records to:

Approval : Rejected
State Closed incomplete
Stage Closed incomplete

1 ACCEPTED SOLUTION

@vivek11 

you can enhance it further.

// give correct query, correct state, stage value to compare

var gr = new GlideRecord('sc_req_item');
gr.addQuery('state', '!=', 4); // Only update if not already closed incomplete
gr.setLimit(500); // Limit to 500 records
gr.query();

while (gr.next()) {
    gr.approval = 'rejected';
    gr.state = 4; // Closed Incomplete
    gr.stage = 'Closed Incomplete';
    gr.update();

    var gr = new GlideRecord("sysapproval_approver");
    gr.addQuery("sysapproval", gr.getUniqueValue());
    gr.addQuery("state", "requested");
    gr.query();
    while (gr.next()) {
        gr.state = 'rejected';
        gr.comments = 'Auto rejected as RITM is closed';
        gr.update();
    }
}

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

12 REPLIES 12

Hi @Ankur Bawiskar 

Here we have one more issue.. Lots of mail triggering , Please help me?

Your current script is directly updating the approval and RITM states in ServiceNow, which is triggering notification rules and business logic — especially since you're changing the approval state and setting RITMs to closed/incomplete. That explains the mail blast i an experiencing. Could you please me?

 

J Siva
Tera Sage

HI @vivek11 
Try the below script.

var rec = new GlideRecord('sc_req_item');
rec.addEncodedQuery('sys_id=b43afa88c396221091ea5242b40131a7'); // MODIFY THE QUERY AS REQUIRED
rec.query();
while(rec.next()){
	rec.setValue('stage','closed_incomplete');
	rec.state = '4';
	rec.approval ='rejected';
	rec.update();
}

Regards,
Siva

vivek11
Tera Contributor

Hi @J Siva 
Thank you for your quick reply.

I have one more issue — the related sysapproval_approver records for the same RITM are not being updated to "Rejected." Could you please help me with this?

Hi @vivek11 
Since it's on a different table, write a separate script to update the approval records.

Try the below script.

var rec = new GlideRecord('sysapproval_approver');
rec.addEncodedQuery('source_table=sc_req_item^sysapproval.sys_idIN9fd4ba35c318221091ea5242b4013177,b1275506eb43011008f2951ff15228d1'); //UPDATE THE SYS_ID AS REQUIRED (RITM SYS_IDs)
rec.query();
while(rec.next()){
	rec.state ='cancelled';
	rec.update();
}

Hi, you can help me?
I need to update almost 24 that was Closed Skipped in incorrect way...
I need change every single record for closed complete

You have ideal that i can make this?