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.

Script to Change change request is not Working

rahuls1
Tera Contributor

Hi Experts,

 

I need your help. I have a requirement to cancel change requests Type=Standard, State=Draft and Active=True.

Then update close notes and Implementation status.

(There are 480 change records)

My Script:

var gr = new GlideRecord("change_request");
gr.addQuery('type=Standard^state=-22^active=true');
gr.query();
while(gr.next()){
gr.state = '4';
gr.u_implementation_status = 'cancelled';
gr.setValue( 'close_notes' , 'Cancelling change due to aging');
gr.update();
}

When I run the above background script only 1 change records is cancelled out of 480 records. If my script has any errors please help me out. I have attached the pic after running background script.

1 ACCEPTED SOLUTION

I believe there is an BR on your system which is stopping it from happening

 

var cr = new GlideRecord("change_request");
cr.addEncodedQuery('type=Standard^state=-22^active=true');
cr.query();
while(cr.next()){
cr.state = '4';
cr.u_implementation_status = 'cancelled';
cr.setValue( 'close_notes' , 'Cancelling change due to aging');
cr.active=false;
cr.update();
}

If the above does not work then try this:-

 

var cr = new GlideRecord("change_request");
cr.addEncodedQuery('type=Standard^state=-22^active=true');
cr.query();
while(cr.next()){
cr.setWorkflow(false);
cr.state = '4';
cr.u_implementation_status = 'cancelled';
cr.setValue( 'close_notes' , 'Cancelling change due to aging');
cr.active=false;

var workflow = new global.Workflow();
workflow.cancel(cr);
cr.update();
}

View solution in original post

20 REPLIES 20

Saurav11
Kilo Patron
Kilo Patron

Hello,

 

You need to use addEncodedQuery instead of addQuery

Please use the below script:-

 

var gr = new GlideRecord("change_request");
gr.addEncodedQuery('type=Standard^state=-22^active=true');
gr.query();
while(gr.next()){
gr.state = '4';
gr.u_implementation_status = 'cancelled';
gr.setValue( 'close_notes' , 'Cancelling change due to aging');
gr.update();
}

 

Please mark my answer as correct based on Impact.

rahuls1
Tera Contributor

Hi Saurav11

 

Thanks for your response. But unfortunately it didn't work. Still only one records gets updated. I am not sure why.Chang1.png 

Hello,

 

Use gr.setWorkflow(false) so use the below code

 

 

var gr = new GlideRecord("change_request");
gr.addEncodedQuery('type=Standard^state=-22^active=true');
gr.query();
while(gr.next()){
gr.setWorkflow(false)
gr.state = '4';
gr.u_implementation_status = 'cancelled';
gr.setValue( 'close_notes' , 'Cancelling change due to aging');
gr.update();
}

 

 

Please mark my answer as correct based on Impact.

Also I would suggest to change the 'gr' variable to to something else like cr or change request or anything