- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-14-2020 03:30 AM
I am trying to create each task for every entry on the multi-row variable set. I am using flow designer to achieve but it doesn't work, please let me know if there is any other way to get through this
Solved! Go to Solution.
- Labels:
-
Service Catalog

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-14-2020 01:24 PM
Hello Shruti,
You can write after Br on sc_req_item and can create catalog tasks. you can try like this
After insert on sc_req_item
condition: item is <your_cat_item>
Script
var mrvs = current.variables.your_mrvs_name;
var rowCount = mrvs.getRowCount();
for (var i = 0; i < rowCount; i++) {
//if you wnat to read data from mrvs and assign to task then
var row = mrvs.getRow(i);
var sc_task = new GlideRecord("sc_task");
sc_task.initialize();
sc_task.short_description = row.your_variable;
sc_task.insert();
}
Mark the comment as a correct answer and also helpful if it helps to solve the problem.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-28-2020 05:06 AM
Hi Asif,
Thank you for writing back 🙂
I tried the above script, the insertion isn't happening as the details of the MRVS is printing in array format. Please find the below-
So i did parsing with the below script -
(function executeRule(current, previous /*null when async*/ ) {
var mrvs = current.variables.for_bulk_request;
gs.log('mrvs: ' + mrvs);
var rowCount = mrvs.getRowCount();
gs.log('RowCount: ' + rowCount);
var fromCount = 0;
var i;
var j;
var row;
var parser = new global.JSONParser();
var parsed = parser.parse(mrvs);
gs.log('Parsed: ' + parsed);
gs.log('Parsed123: ' + parsed.length);
var pLength = parsed.length;
for (i = 0; i < pLength; i++) {
var peripheralType = parsed.mrvs[i].u_please_select_type_of_computer_peripherals_mv;
var compPeripheral = parsed.mrvs[i].u_please_select_computer_peripherals_mv.toString();
var abNumber = parsed.mrvs[i].ab_number_mv;
var location = parsed.mrvs[i].location_mv.toString();
var costCentre = parsed.mrvs[i].cost_centre_mv.toString();
var brid = parsed.mrvs[i].brid_mv;
var name = parsed.mrvs[i].name_mv.toString();
var sc_task = new GlideRecord("sc_task");
sc_task.initialize();
sc_task.short_description = 'Task for Hardware Team to coordinate device provisioning to user';
sc_task.u_please_select_type_of_computer_peripherals_mv = peripheralType;
sc_task.u_please_select_computer_peripherals_mv = compPeripheral;
sc_task.ab_number_mv = abNumber;
sc_task.location_mv = location;
sc_task.cost_centre_mv = costCentre;
sc_task.brid_mv = brid;
sc_task.name_mv = name;
fromCount++;
sc_task.insert();
}
})(current, previous);
Unaware of what am doing wrong. Can you please suggest.
Thanks,
Shruti

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-28-2020 05:44 AM
Hi Shruti,
Can you try this.
(function executeRule(current, previous /*null when async*/ ) {
var mrvs = current.variables.for_bulk_request;
gs.log('mrvs: ' + mrvs);
var rowCount = mrvs.getRowCount();
gs.log('RowCount: ' + rowCount);
var fromCount = 0;
var i;
var j;
var row;
var parser = new global.JSONParser();
var parsed = parser.parse(mrvs);
gs.log('Parsed: ' + parsed);
gs.log('Parsed123: ' + parsed.length);
var pLength = parsed.length;
for (i = 0; i < rowCount; i++) {
var row = mrvs.getRow(i);
var peripheralType = row.u_please_select_type_of_computer_peripherals_mv;
var compPeripheral = row.u_please_select_computer_peripherals_mv.toString();
var abNumber = row.ab_number_mv;
var location = row.location_mv.toString();
var costCentre = row.cost_centre_mv.toString();
var brid = row.brid_mv;
var name = row.name_mv.toString();
var sc_task = new GlideRecord("sc_task");
sc_task.initialize();
sc_task.short_description = 'Task for Hardware Team to coordinate device provisioning to user';
sc_task.u_please_select_type_of_computer_peripherals_mv = peripheralType;
sc_task.u_please_select_computer_peripherals_mv = compPeripheral;
sc_task.ab_number_mv = abNumber;
sc_task.location_mv = location;
sc_task.cost_centre_mv = costCentre;
sc_task.brid_mv = brid;
sc_task.name_mv = name;
fromCount++;
sc_task.insert();
}
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-29-2020 09:14 PM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-29-2020 09:40 PM
Have you had a look at the article I mentioned? Proven working mechanism.
Kind regards,
Mark
2020 ServiceNow Community MVP
2020 ServiceNow Developer MVP
---
LinkedIn
Community article list
Kind regards,
Mark Roethof
Independent ServiceNow Consultant
10x ServiceNow MVP
---
~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-29-2020 11:19 PM
Hi Mark,
I tried it for a catalog, and used current.variables.my_mrvs_name. I am getting the values entered in mrvs in an array, the tasks aren't created even after using parse. Just struck with it trying different methods to do it.
Also, I used flow designer which isn't affected when the changes are made to BR or runscript. Please suggest if anything else can be used to get this working.
(function executeRule(current, previous /*null when async*/ ) {
var mrvs = current.variables.for_bulk_request;
gs.log('mrvs: ' + mrvs);
var rowCount = mrvs.getRowCount();
gs.log('RowCount: ' + rowCount);
var fromCount = 0;
var i;
var j;
var row;
var parser = new global.JSONParser();
gs.log('Parser: ' + parser);
var parsed = parser.parse(mrvs);
gs.log('Parsed: ' + parsed);
gs.log('Parsed123: ' + parsed.length);
var pLength = parsed.length;
gs.log('Parse Length: ' + parsed.length);
for (i = 0; i < pLength; i++) {
var peripheralType = parsed.mrvs[i].u_please_select_type_of_computer_peripherals_mv;
gs.log('peripheralType: ' + peripheralType);
var compPeripheral = parsed.mrvs[i].u_please_select_computer_peripherals_mv.toString();
gs.log('xxxcompPeripheral: ' + compPeripheral);
var abNumber = parsed.mrvs[i].ab_number_mv;
gs.log('xxxabNumber: ' + abNumber);
var location = parsed.mrvs[i].location_mv.toString();
gs.log('xxxlocation: ' + location);
var costCentre = parsed.mrvs[i].cost_centre_mv.toString();
gs.log('xxxcostCentre: ' + costCentre);
var brid = parsed.mrvs[i].brid_mv;
gs.log('xxxbrid: ' + brid);
var name = parsed.mrvs[i].name_mv.toString();
gs.log('xxxname: ' + name);
var sc_task = new GlideRecord("sc_task");
sc_task.initialize();
sc_task.short_description = 'Task for Hardware Team to coordinate device provisioning to user';
gs.log('SD: ' + short_description);
sc_task.u_please_select_type_of_computer_peripherals_mv = peripheralType;
sc_task.u_please_select_computer_peripherals_mv = compPeripheral;
sc_task.ab_number_mv = abNumber;
sc_task.location_mv = location;
sc_task.cost_centre_mv = costCentre;
sc_task.brid_mv = brid;
sc_task.name_mv = name;
fromCount++;
sc_task.insert();
}
})(current, previous);
Right now i haven't mapped any WF or Flow Designer to catalog to check if the Tasks are created with BR alone.
Thanks,
Shruti