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.

Copy Reference field value from RITM to ScTasks

Ben42
Tera Contributor

Hello Guys,

For all existing catalog tasks, I want to copy "request_item.requested_for" field on RITM to "user" (custom) field on ScTasks. How can I achieve this? and How does the script look like?

We have few hundreds of catalog tasks, So, I wanted to do a bulk update using script.

 

Any help is appreciated.

Thanks,

Ben.

1 ACCEPTED SOLUTION

Hey Ben,

Just a quick check, in the list view of sc_task table, group by u_end_user field and confirm if all are under empty.

Also, added a new line to the code, please try

var a = "u_end_user=NULL";
var b = "parent.ref_sc_req_item.requested_forISNOTEMPTY";

var sc = new GlideRecord('sc_task');
sc.addEncodedQuery(a);
sc.addEncodedQuery(b);
sc.setLimit(10);
sc.query();
while(sc.next())
{
sc.u_end_user = sc.parent.ref_sc_req_item.requested_for;
sc.update();
sc.setWorkflow(false);

}

Regards,
Abhinay

View solution in original post

41 REPLIES 41

BEN,

CAN YOU POST YOUR SCRIPT HERE PLEASE ? LETS DEBUG

Mohith,

I used the script you provided.

var sc = new GlideRecord('sc_task');
sc.addQuery('u_end_user','!=','');
sc.query();
while(sc.next())
{
sc.u_end_user =sc.request_item.request.requested_for;
sc.update();
}

 

Thanks,

Ben.

is the RITM being stored on request item field ?for all the tasks?

also try putting logs and check 

var sc = new GlideRecord('sc_task');
sc.addQuery('u_end_user','!=','');
sc.query();
while(sc.next())
{

gs.info('found the tasks'+sc.request_item.request.requested_for);
sc.u_end_user =sc.request_item.request.requested_for.toString();
sc.update();
}

 

Can you try with this script

 

 

Yes, we use request_item.requested_for on ScTasks.

 

Thanks,

Ben.

var sc = new GlideRecord('sc_task');
sc.addQuery('u_end_user','!=','');
sc.query();
while(sc.next())
{

gs.info('found the tasks'+sc.request_item.request.requested_for);
sc.u_end_user =sc.request_item.request.requested_for.toString();
sc.update();
}

 can you try this  and check for logs if its going inside the loop