Can we update a record in ATF using run server side script?

Siddhant4
Kilo Contributor

Hi, I had a question regarding ATF.
I have a catalog task with a variable in variable set named 'Next Step'. I need to update the variable in order to close the task, but I'm not sure as to how exactly to update the record.
The variable doesn't come from the RITM, therefore I cannot simply use 'Set Variable Value' step as the variable won't show. I thought of using 'run server side script' but the script doesn't update the variable on sc_task. Below script:

(function(outputs, steps, stepResult, assertEqual) {
// add test script here
var STEP_15_SYS_ID= 'd9f8dd67db805410bea7550a48961930'; // step sys_id


var step_16_output = steps(STEP_15_SYS_ID);

var grtask = new GlideRecord('sc_task');
grtask.addQuery('request_item',step_16_output.first_record);
grtask.query();
if(grtask.next()){
gs.log("Found task : " + grtask.number);
gs.print(grtask.request_item.variables.next_step);
grtask.request_item.variables.next_step='Solution Approved, Build Required';
grtask.update();
outputs.table = 'sc_task';
outputs.record_id = grtask.sys_id;
}

})(outputs, steps, stepResult, assertEqual);

Now, I'm not sure how to go about the problem. Is this possible through ATF?

1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

So I assume Step 15 is record query and it checks RITM record; so update code as below in Run Server Script step

you need to return the step result whether success or failure and return statement

(function(outputs, steps, stepResult, assertEqual) {
// add test script here
var STEP_15_SYS_ID= 'd9f8dd67db805410bea7550a48961930'; // step sys_id


var step_16_output = steps(STEP_15_SYS_ID).first_record;

var message = '' + step_16_output;

var grtask = new GlideRecord('sc_task');
grtask.addQuery('request_item',step_16_output);
grtask.query();
if(grtask.next()){
gs.info("Found task : " + grtask.number);
gs.info(grtask.request_item.variables.next_step);
grtask.request_item.variables.next_step='Solution Approved, Build Required';
grtask.update();

outputs.table = 'sc_task';
outputs.record_id = grtask.sys_id;

message = message + 'Found Task ' + grtask.number;

stepResult.setOutputMessage(message);

stepResult.setSuccess();
return true;
}

})(outputs, steps, stepResult, assertEqual);

Mark Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

14 REPLIES 14

sachin_namjoshi
Kilo Patron
Kilo Patron

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

So I assume Step 15 is record query and it checks RITM record; so update code as below in Run Server Script step

you need to return the step result whether success or failure and return statement

(function(outputs, steps, stepResult, assertEqual) {
// add test script here
var STEP_15_SYS_ID= 'd9f8dd67db805410bea7550a48961930'; // step sys_id


var step_16_output = steps(STEP_15_SYS_ID).first_record;

var message = '' + step_16_output;

var grtask = new GlideRecord('sc_task');
grtask.addQuery('request_item',step_16_output);
grtask.query();
if(grtask.next()){
gs.info("Found task : " + grtask.number);
gs.info(grtask.request_item.variables.next_step);
grtask.request_item.variables.next_step='Solution Approved, Build Required';
grtask.update();

outputs.table = 'sc_task';
outputs.record_id = grtask.sys_id;

message = message + 'Found Task ' + grtask.number;

stepResult.setOutputMessage(message);

stepResult.setSuccess();
return true;
}

})(outputs, steps, stepResult, assertEqual);

Mark Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi Ankur, Thanks for the reply but I'm still not able to update the variable value.

Is update even possible in run server side script step?

Hi,

Not sure on this part; as the records which are created as part of ATF may not be present in the database

Can you check by adding the row count check? can you share your complete script?

Did you get the message in the step output as Found task?

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader