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

rahuls1
Tera Contributor

Hi Saurav11,

 

That almost worked. All 480 records were cancelled. But active flag remains true for all the records. And the weird part is when description of any cancelled record is edited and saved, Once the form reloads the state changes back to Draft.

Which one did you try setworkflow(false) and change the variable gr both?

rahuls1
Tera Contributor

I tried the below script.

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.update();
}

All 480 records are cancelled. Active flag is still in true. When edited description of one cancelled change record and saved it, the state changes back to Draft only for the edited record. Please help out.

Hello, I believe because we have set the workflow to false hence the active flag did not change.

 

Can you try updating the active flag also for the 480 records through background script it should do the trick.

 

Let me know if it worked.

 

Thanks

rahuls1
Tera Contributor

Hi @Saurav11  I tried the below script.

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;
cr.update();
}

All works good now. Only one issue is the state changes back to Draft when any record is edited and saved. Why does it changes ?