comparing workflow and Background scripts MRVS script execution fails.

AnandKumar1
Tera Expert

Hi All,

One of the catalog i am using MRVS and the value results are coming up in background script and when i try in workflow logs showing undefined and object. 

 

background script: 

 

var gr = new GlideRecord("sc_req_item");
gr.addQuery('number'"RITM******");
gr.query();
if (gr.next()) {
  var sourceArr = [];
  var targetArr = [];
  var sourceIPArr = [];
  var mvrs = gr.variables.u_request_details;
gs.print("MRVS value " + mvrs);
  for (var i = 0; i < mvrs.getRowCount(); i++) {

    var sourceValue = mvrs.getRow(i).getCell('source_cmdb').getCellDisplayValue();
    var valueExtract = sourceValue.split(',');
    sourceArr = sourceArr.concat(valueExtract);

    var targetValue = mvrs.getRow(i).getCell('target_cmdb').getCellDisplayValue();
    var trg = targetValue.split(',');
    targetArr = targetArr.concat(trg);
 
// source IP Address
//try using for loop here
for (var k = 0; k < sourceArr.length; k++) {
    var sourceIP = mvrs.getRow(i).getCell('source_ip').getCellDisplayValue();
    var IPExtract = sourceIP.split(',');
    sourceIPArr = sourceIPArr.concat(IPExtract);
}
  }
gs.print("sourceArr " + sourceArr );
gs.print("sourceIPArr " + sourceIPArr );
gs.print("targetArr " + targetArr );
}
 
 
WORKFLOW: 
r.setRequestBody(JSON.stringify(myObj));
 
    var response = r.execute();
    var responseBody = response.getBody();
    var httpStatus = response.getStatusCode();
    var parsedResponse1 = JSON.parse(responseBody);
 
    sessionID = parsedResponse1.data.sessionId;
 
    var sourceArr = [];
    var targetArr = [];
    var sourceIPArr = [];
    var mvrs = JSON.parse(current.variables.u_request_details);
 
gs.info("AK  MRVS value 2: " + mvrs);
 
 for (var i = 0; i < mvrs.getRowCount(); i++) {
 
        var sourceValue = mvrs.getRow(i).getCell('source_cmdb').getCellDisplayValue();
        var valueExtract = sourceValue.split(',');
        sourceArr = sourceArr.concat(valueExtract);
 
        gs.info(AK API  sourceArr 3 : " + sourceArr);
 
 
        var targetValue = mvrs.getRow(i).getCell('target_cmdb').getCellDisplayValue();
        var trg = targetValue.split(',');
        targetArr = targetArr.concat(trg);
 
gs.info(AK API targetArr 4 : " + targetArr);
 
        // source IP Address
 
        var sourceIP = mvrs.getRow(i).getCell('source_ip').getCellDisplayValue();
        var IPExtract = sourceIP.split(',');
        sourceIPArr = sourceIPArr.concat(IPExtract);
 
gs.info(AK API  sourceIPArr 5 : " + sourceIPArr);
 
}

 

we are not getting the logs here. Please assist anything I am missing the format.

 

Thanks.

 
2 REPLIES 2

Brad Bowman
Kilo Patron
Kilo Patron

In the workflow script, do not parse the MRVS before the for loop, so this part of the script would just be:

 

 var mvrs = current.variables.u_request_details;
 gs.info("AK  MRVS value 2: " + mvrs);
 for (var i = 0; i < mvrs.getRowCount(); i++) {
...
 

 

Kavita_Bhojane
Tera Guru

@AnandKumar1 ,

 

Can you please try this way

 

var mrvs =current.variables.u_request_details;
var mrvs_arr = JSON.parse(mrvs);
Object.keys(mrvs_arr).forEach(function(k) {
var sourceValue =mrvs_arr[k].source_cmdb;
gs.info(AK API sourceValue  : " +sourceValue);
var valueExtract = sourceValue.split(',');
sourceArr = sourceArr.concat(valueExtract);
gs.info(AK API  sourceArr 3 : " + sourceArr);
}
 

Please mark my answer helpful if you find it correct.

 

Regards,

Kavita Bhojane