Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

Dynamically create catalog tasks based on list collector selections

troys
Kilo Contributor

Hi Everyone,

I would like to create a catalog task for each selection chosen in a list collector.

I only have 2 variables: sc_short_desc and sc_site (which is a list collector)

So if a user choses 3 sites in the list collector, then I would like 3 catalog tasks raised:

Catalog task 1: short description and site 1

Catalog task 2: short description and site 2

Catalog task 3: short description and site 3

I am assuming you do this in the workflow using Run Script.   I would also like to wait for all of the catalog tasks to be completed before moving on to the next part of the workflow.

I am new to ServiceNow scripting so any help is appreciated.

Cheers

Troy

9 REPLIES 9

Deepak Kumar5
Kilo Sage

The items selected in a List Collector variable are stored in a comma separated string such as "2a826bf03710200044e0bfc8bcbe5de7,46c6f9efa9fe198101ddf5eed9adf6e7".



You will have to use this to get sc_site.



Query on Catalog task table with your RITM as parent in wait for condition activity. Set workflow.scratchpad to sys_id of TASK while creating it and then use scratchpad value in wait for condition to get the task.



Thanks,


D


Thanks for the reply D,



I was hoping for a bit of sample code to mess around with to automatically create the tasks with the individual sites as my java scripting skills are very limited to non-existent.   Is anyone able to help?



Cheers


Troy


troys
Kilo Contributor

After trolling through some other threads I have managed to create the following script which dynamically creates multiple catalog tasks depending on how many sites are chosen in the list collector:



var array1 =[];


array1 = current.variables.sc_site.toString();


var array2 = [];


array2 = array1.split(',');


var Length = array2.length;


for (var i =0; i< Length; i++){


var gr = new GlideRecord('sc_task');


gr.initialize();


gr.request_item = current.sys_id;


gr.short_description = current.variables.sc_short_desc;


gr.assignment_group = '92c515ed4fc19e006a6aa90f0310c7ff';


gr.cmdb_ci = '3dcb98e34ff3de8424c49a701310c7c7';


gr.insert();


if(gr.next());


}



Next step is to figure out how to add to the script to pass the sc_site variable over to the individual catalog tasks.   Any suggestions?


I want set value fro short description as location name