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.

How to close complete bulk list of demands and demand tasks.

thaduri sai
Tera Contributor

Hi Team,

 

We have a bulk list of demand numbers to be close complete through background script.

 

And also,

 

We have a bulk list of demand task to be close Skipped through background script.

 

How to achieve it - Thanks for the advance.

 

Thanks,

Sai

3 ACCEPTED SOLUTIONS

AnveshKumar M
Tera Sage
Tera Sage

Hi @thaduri sai ,

 

You can try the following script to close demands and their corresponding demand tasks from a fix script or background script.

 

This will not trigger any notifications too as I have used setWorkflow(false).

 

var dmnGr = new GlideRecord("dmn_demand");

dmnGr.addEncodedQuery("YOUR ENCODED QUERY); //Paste your encoded here by copying it from the list view filter bread crumbs

dmnGr.query();

//close corresponding demand tasks

while(dmnGr._next()){

   var dtskGr = new GlideRecord("dmn_demand_task");

   dtskGr.addQuery("parent", dmnGr.getUniqueValue());

   dtskGr.addQuery("state", "!=", "3");

   dtskGr.query();

   while(dtskGr._next()){

      dtskGr.setWorkflow(false);

      dtskGr.autoSysFields(false);

      dtskGr.state = "3";

      dtskGr.update();

   }

   //Close the demand

   dmnGr.setWorkflow(false);

   dmnGr.autoSysFields(false);

   dmnGr.state = "9";

   dmnGr.update();

}

 

Please mark my answer helpful and accept as solution if it helped you 👍

Thanks,
Anvesh

View solution in original post

@thaduri sai Try this, I did a mistake in function name.

 

var gr = new GlideRecord("dmn_demand");

gr.addEncodedQuery("sys_class_name=dmn_demand^number=DEMAND NUMBER");

gr.query();

 

while(gr._next()){

var dmntask = new GlideRecord("dmn_demand_task");

dmntask.addQuery("parent", gr.getUniqueValue());

dmntask.addQuery("state", "!=", "3");

dmntask.addQuery("state", "!=", "7");

dmntask.query();

while(dmntask._next()){

dmntask.setWorkflow(false);

dmntask.state = "3";

dmntask.update();

}

gr.setWorkflow(false);

gr.state = "9";

gr.update();

}

Thanks,
Anvesh

View solution in original post

@thaduri sai You can try using this line of code. But as we are using setWorkflow(false); the comment might not appear in proper order. You can try and check.

 

var gr = new GlideRecord("dmn_demand");

gr.addEncodedQuery("sys_class_name=dmn_demand^number=DEMAND NUMBER");

gr.query();

while(gr._next()){

var dmntask = new GlideRecord("dmn_demand_task");

dmntask.addQuery("parent", gr.getUniqueValue());

dmntask.addQuery("state", "!=", "3");

dmntask.addQuery("state", "!=", "7");

dmntask.query();

while(dmntask._next()){

dmntask.setWorkflow(false);

dmntask.state = "3";

dmntask.work_notes = "YOUR STANDARD COMMENT";

dmntask.update();

 

}

gr.setWorkflow(false);

gr.state = "9";

gr.work_notes = "YOUR STANDARD COMMENT";

gr.update();

}

 

If the above code is not working for you, what you can do is, update work notes for all the demands and it's tasks first then close them like this.

 

//Update work notes

var gr = new GlideRecord("dmn_demand");

gr.addEncodedQuery("sys_class_name=dmn_demand^number=DEMAND NUMBER");

gr.query();

while(gr._next()){

var dmntask = new GlideRecord("dmn_demand_task");

dmntask.addQuery("parent", gr.getUniqueValue());

dmntask.addQuery("state", "!=", "3");

dmntask.addQuery("state", "!=", "7");

dmntask.query();

while(dmntask._next()){

dmntask.work_notes = "YOUR STANDARD COMMENT";

dmntask.autoSysFields(false);

dmntask.update();

}

gr.work_notes = "YOUR STANDARD COMMENT";

gr.autoSysFields(false);

gr.update();

}

//Close Tasks and Demand

var gr = new GlideRecord("dmn_demand");

gr.addEncodedQuery("sys_class_name=dmn_demand^number=DEMAND NUMBER");

gr.query();

while(gr._next()){

var dmntask = new GlideRecord("dmn_demand_task");

dmntask.addQuery("parent", gr.getUniqueValue());

dmntask.addQuery("state", "!=", "3");

dmntask.addQuery("state", "!=", "7");

dmntask.query();

while(dmntask._next()){

dmntask.setWorkflow(false);

dmntask.state = "3";

dmntask.update();

}

gr.setWorkflow(false);

gr.state = "9";

gr.update();

}

 

Please mark my answer helpful and accept as a solution if it helped 👍

Thanks,
Anvesh

View solution in original post

9 REPLIES 9

1000026912.jpg

 when I executed above script - some things is insert (taska_str_10).

 

@thaduri sai Try this, I did a mistake in function name.

 

var gr = new GlideRecord("dmn_demand");

gr.addEncodedQuery("sys_class_name=dmn_demand^number=DEMAND NUMBER");

gr.query();

 

while(gr._next()){

var dmntask = new GlideRecord("dmn_demand_task");

dmntask.addQuery("parent", gr.getUniqueValue());

dmntask.addQuery("state", "!=", "3");

dmntask.addQuery("state", "!=", "7");

dmntask.query();

while(dmntask._next()){

dmntask.setWorkflow(false);

dmntask.state = "3";

dmntask.update();

}

gr.setWorkflow(false);

gr.state = "9";

gr.update();

}

Thanks,
Anvesh

Hi @AnveshKumar M ,

 

Thanks for your help - Code working as expected.

 

But we have to update standard comment for all demands.

 

Can you please add that line in code.

 

Thanks,

Saikrishna 

@thaduri sai You can try using this line of code. But as we are using setWorkflow(false); the comment might not appear in proper order. You can try and check.

 

var gr = new GlideRecord("dmn_demand");

gr.addEncodedQuery("sys_class_name=dmn_demand^number=DEMAND NUMBER");

gr.query();

while(gr._next()){

var dmntask = new GlideRecord("dmn_demand_task");

dmntask.addQuery("parent", gr.getUniqueValue());

dmntask.addQuery("state", "!=", "3");

dmntask.addQuery("state", "!=", "7");

dmntask.query();

while(dmntask._next()){

dmntask.setWorkflow(false);

dmntask.state = "3";

dmntask.work_notes = "YOUR STANDARD COMMENT";

dmntask.update();

 

}

gr.setWorkflow(false);

gr.state = "9";

gr.work_notes = "YOUR STANDARD COMMENT";

gr.update();

}

 

If the above code is not working for you, what you can do is, update work notes for all the demands and it's tasks first then close them like this.

 

//Update work notes

var gr = new GlideRecord("dmn_demand");

gr.addEncodedQuery("sys_class_name=dmn_demand^number=DEMAND NUMBER");

gr.query();

while(gr._next()){

var dmntask = new GlideRecord("dmn_demand_task");

dmntask.addQuery("parent", gr.getUniqueValue());

dmntask.addQuery("state", "!=", "3");

dmntask.addQuery("state", "!=", "7");

dmntask.query();

while(dmntask._next()){

dmntask.work_notes = "YOUR STANDARD COMMENT";

dmntask.autoSysFields(false);

dmntask.update();

}

gr.work_notes = "YOUR STANDARD COMMENT";

gr.autoSysFields(false);

gr.update();

}

//Close Tasks and Demand

var gr = new GlideRecord("dmn_demand");

gr.addEncodedQuery("sys_class_name=dmn_demand^number=DEMAND NUMBER");

gr.query();

while(gr._next()){

var dmntask = new GlideRecord("dmn_demand_task");

dmntask.addQuery("parent", gr.getUniqueValue());

dmntask.addQuery("state", "!=", "3");

dmntask.addQuery("state", "!=", "7");

dmntask.query();

while(dmntask._next()){

dmntask.setWorkflow(false);

dmntask.state = "3";

dmntask.update();

}

gr.setWorkflow(false);

gr.state = "9";

gr.update();

}

 

Please mark my answer helpful and accept as a solution if it helped 👍

Thanks,
Anvesh

Hi @AnveshKumar M ,

 

For work notes I have written this script - but it's getting update only 1 demand - why it's happening I don't could you please help here.

 

var gr = new GlideRecord("dmn_demand");

gr.addEncodedQuery("sys_class_name=dmn_demand^number=DEMAND NUMBER");

gr.query();

while(gr._next()){

var dmntask = new GlideRecord("dmn_demand_task");

dmntask.addQuery("parent", gr.getUniqueValue());

dmntask.addQuery("state", "!=", "3");

dmntask.addQuery("state", "!=", "7");

dmntask.query();

while(dmntask._next()){

dmntask.work_notes = "YOUR STANDARD COMMENT";

dmntask.autoSysFields(false);

dmntask.update();

}

gr.work_notes = "YOUR STANDARD COMMENT";

gr.autoSysFields(false);

gr.update();

}

1000028254.jpg