How to update the MRVS data using Scripted Rest API after RITM creation
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-14-2025 07:46 AM
In form i have MRVS in that i have 2 variables
1) info
2) value
RITM will submitted through API. after RITM submitted values not attaching to MRVS. i am passing data using json fromat
{
"info":"123",
"value:"455"
}
i tried scripting in multiple ways. but not working
var mrvsGR = new GlideRecord('sc_multi_row_question_answer');
mrvsGR.initialize();
mrvsGR.request_item = '32f80adc3b3bd6102d68d88c24e45a1a';
mrvsGR.variable_set = 'eb4b3e413b2b1250a3c2baac24e45a6e';
mrvsGR.order = (index + 1) * 100;
var mrvsSysId = mrvsGR.insert();
for (var key in labels) {
if (labels.hasOwnProperty(key)) {
var optionKey = new GlideRecord('sc_item_option');
optionKey.initialize();
optionKey.item_option_new = 'eb4b3e413b2b1250a3c2baac24e45a6e';
optionKey.value = key;
var keySysId = optionKey.insert();
var mtomKey = new GlideRecord('sc_item_option_mtom');
mtomKey.initialize();
mtomKey.request_item = '32f80adc3b3bd6102d68d88c24e45a1a';
mtomKey.sc_item_option = keySysId;
mtomKey.multi_row_question_answer = mrvsSysId;
mtomKey.insert();
var optionValue = new GlideRecord('sc_item_option');
optionValue.initialize();
optionValue.item_option_new = 'eb4b3e413b2b1250a3c2baac24e45a6e';
optionValue.value = labels[key];
var valueSysId = optionValue.insert();
var mtomValue = new GlideRecord('sc_item_option_mtom');
mtomValue.initialize();
mtomValue.request_item = '32f80adc3b3bd6102d68d88c24e45a1a';
mtomValue.sc_item_option = valueSysId;
mtomValue.multi_row_question_answer = mrvsSysId;
mtomValue.insert();
}
}
});
1 REPLY 1

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-14-2025 10:35 AM
I created a Scripted REST API that works. Here is my payload I'm sending:
{
"number": "RITM0010020",
"variables" : {
"my_mrvs" : [{
"info": "first one",
"value": "1"
},
{
"info": "second one",
"value": "2"
}]
},
"comments": "adding 2 rows."
}
And here is the code I used:
(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var requestBody, responseBody, status, sm;
var res = {};
try {
requestBody = request.body;
var JSONdata = new global.JSON().decode(requestBody.dataString);
//Get RITM
var ritm = new GlideRecordSecure('sc_req_item');
if (JSONdata.sys_id == '' || JSONdata.sys_id == null) {
ritm.addQuery('number', JSONdata.number);
} else {
ritm.addQuery('sys_id', JSONdata.sys_id);
}
ritm.query();
var variables = [];
if (ritm.next()) {
//set variables
var obj = JSONdata.variables;
for (var key in obj) {
variables.push(key);
if (ritm.variables[key] != undefined) {
for(x = 0; x < obj[key].length; x++){
var newRow = ritm.variables[key].addRow();
newRow.info = obj[key][x].info.toString();
newRow.value = obj[key][x].value.toString();
newRow.update();
}
} else {
return {
"status": "Error",
"message": "Variable " + key + " doesn't exist on record.",
};
}
}
if(JSONdata.comments){
ritm.comments = JSONdata.comments;
}
ritm.update();
return {
"status": "Success",
"message": "Record updated",
};
} else {
return {
"status": "Error",
"message": "Record not found",
};
}
} catch (ex) {
res["status"] = "500";
res["message"] = "An error has occurred";
response.setBody(JSON.stringify(res));
status = '500';
}
})(request, response);
This code is specialized to only look for MRVSs and add a row. If you wanted it to update existing rows, it would need to be modified. Hopefully it's enough to get you going, though.