Name

sn_em_connector.CustomConnectorMappingUtils

Description

This script will create or update

Script

var CustomConnectorMappingUtils = Class.create();
CustomConnectorMappingUtils.prototype = {
  initialize: function() {},

  createAndUpdateMappingRecord: function(sys_id, json_payload, event_field_mapping) {
      try {
          if (sys_id == '' || sys_id == null) {
              gs.error(' Connector definition sys_id is not valid');
              return;
          }
          var field_mapping = new GlideRecord('sn_em_connector_custom_field_mapping');
          field_mapping.initialize();
          field_mapping.addQuery('push_connector_definition', sys_id);
          field_mapping.query();
          if (field_mapping.getRowCount() > 0) {
              while (field_mapping.next()) {
                  field_mapping.json_payload = json_payload;
                  field_mapping.event_field_mapping = event_field_mapping;
                  field_mapping.push_connector_definition = sys_id;
                  field_mapping.update();
              }
          } else {
              field_mapping.push_connector_definition = sys_id;
              field_mapping.json_payload = json_payload;
              field_mapping.event_field_mapping = event_field_mapping;
              field_mapping.insert();
          }
          var definition = new GlideRecord('sn_em_connector_listener');
          definition.get(sys_id);
          if (definition.isValidRecord()) {
              var result_script = '';
              var type = definition.getValue('type');
              var header_value = definition.getValue('header_value');
              var source_value = definition.getValue('event_source_label');
              var description = definition.getValue('description');
              var map_string_array = [];
              map_string_array = this.mapping(event_field_mapping);
              var map_string = '';
              var complex_payload_flag = false;
              complex_payload_flag = map_string_array[0];
              map_string = map_string_array[1];
              if (type == '1') {
                  // create instance type connector definition [complex_payload_flag, str];
                  result_script = result_script + this.prepend() + map_string + this.append(complex_payload_flag) + this.additionalMapping(event_field_mapping, complex_payload_flag);
                  definition.setValue('script', result_script);

              } else if (type == '2') {
                  // create mid server script or update
                  var mid_script_mediator = new global.EvtMgmtConnectorMediator();
                  var mid_server_script_include = definition.getValue('mid_server_script_include');
                  result_script = result_script + this.mid_prepend(header_value, source_value) + map_string + this.mid_append(header_value, complex_payload_flag) + this.additionalMapping(event_field_mapping, complex_payload_flag);
                  var mid_script_record = new GlideRecord('ecc_agent_script_include');
                  mid_script_record.get(mid_server_script_include);
                  if (mid_script_record.isValidRecord()) {
                      mid_script_mediator.updateCustomMidScriptInclude(header_value, description, mid_server_script_include, result_script);
                  } else {
                      var mid_script_sys_id = mid_script_mediator.createCustomMidScriptInclude(header_value, description, mid_server_script_include, result_script);
                      definition.setValue('mid_server_script_include', mid_script_sys_id);
                  }
                  // create mid type connector definition
              }
              definition.update();
         } else {
              throw "No Valid connector definition found for sys_id :" + sys_id;
          }
      } catch (e) {
          throw e;
      }
  },
  mid_prepend: function(header_value, source_value) {
      var prefix = "var Event = Packages.com.snc.commons.eventmgmt.Event;\n\
var StringUtil = Packages.com.glide.util.StringUtil;\n\
var JSONObject = Packages.org.json.JSONObject;\n\
var SimpleDateFormat = Packages.java.text.SimpleDateFormat;\n\
var StringUtil = Packages.com.glide.util.StringUtil;\n\
var TimeZone = Packages.java.util.TimeZone;\n\
var GlideDateTime = Packages.com.glide.glideobject.GlideDateTime;\n\
var " + header_value + "= Class.create();\n\
" + header_value + ".prototype = {\n\
  initialize: function() {},\n\
  transform: function() {\n\n\
  	var jsonObjectParse = new JSONObject(messageBody);\n\
  	var requestBody = JSON.parse(jsonObjectParse);\n\
  	var events = [];\n\
  	var eventObj = new Event();\n\
  	var event = {};\n\
  	event.source = " + '"' + source_value + '"' + ";\n\
  	//set event class to connector instance name if present\n\
      event.event_class = (typeof event_class !== 'undefined' && event_class) ? event_class : " + '"' + source_value + '"' + ";\n";

      return prefix;
  },

   mid_append: function(header_value, complex_payload_flag) {
      var suffix = "";
      if (!complex_payload_flag) {
          suffix = suffix + "       var flattenPayload = new FlattenPayload();\n\
       var flatPayload = flattenPayload.getFlattenPayload(additional_info);\n\
       for (var key in flatPayload) {\n\
       	additional_info[key] = flatPayload[key];\n\
       }\n\
       for (key in event) {\n\
          eventObj.setField(key, event[key]);\n\
       }\n\
       for (key in additional_info) {\n\
       	eventObj.setField(key, additional_info[key]);\n\
       }\n\
       events.push(eventObj);\n\
       // STRY55293363: populate connector tags in eventObj additional info\n\
        if (typeof connector_tags !== 'undefined' && connector_tags) {\n\
          var tagPrefix = (typeof alert_tags_prefix !== 'undefined' && alert_tags_prefix) ? alert_tags_prefix : 't_';\n\
          new ConnectorUtil().populateConnectorTagsWithAlertTagPrefix(events, connector_tags, tagPrefix);\n\
        }\n\
       return events;\n\
       },\n\
       type: '" + header_value + "'\n\};\n";
      } else {
          suffix = suffix + "       var flattenPayload = new FlattenPayload();\n\
       var flatPayload = flattenPayload.getFlattenPayload(additional_info);\n\
       for (var key in flatPayload) {\n\
       	additional_info[key] = flatPayload[key];\n\
       }\n\
       for (key in event) {\n\
          eventObj.setField(key, event[key]);\n\
       }\n\
       for (key in additional_info) {\n\
       	eventObj.setField(key, additional_info[key]);\n\
       }\n\
       events.push(eventObj);\n\
  	 }\n\
       // STRY55293363: populate connector tags in eventObj additional info\n\
        if (typeof connector_tags !== 'undefined' && connector_tags) {\n\
          var tagPrefix = (typeof alert_tags_prefix !== 'undefined' && alert_tags_prefix) ? alert_tags_prefix : 't_';\n\
          new ConnectorUtil().populateConnectorTagsWithAlertTagPrefix(events, connector_tags, tagPrefix);\n\
        }\n\
       return events;\n\
       },\n\
       type: '" + header_value + "'\n\};\n";
      }
      return suffix;
  },

  mid_custom_mapping: function() {
      var str = '';
      return str;
  },
  additional_mid_mapping: function() {
      var str = '';
      return str;
  },
  prepend: function() {
      var prefix = "\(function process( /*RESTAPIRequest*/ request, body) {\n\
  try {\n\n\
      var requestBody = JSON.parse(body);\n\
      var queryParams = request.queryParams;\n\
      var err_event = '';\n\
      //Create the new event record\n\
      var event = new GlideRecord('em_event');\n\
      event.initialize();\n\
      event.source = source_label;\n\
      //Populate event_class with source instance name if present\n\
      event.event_class = (typeof event_class !== 'undefined' && event_class) ? event_class : source_label;\n\
      var responseBody = {};\n\
      responseBody.eventSysIds = [];\n";
      return prefix;
  },

  append: function(complex_payload_flag) {
      var suffix = "";
      if (!complex_payload_flag) {
          suffix = suffix + "\        //flattened fields has to be  seperated and added to additional information.\n\
      var flattenPayload = new sn_em_connector.FlattenPayload();\n\
      var flatPayload = flattenPayload.getFlattenPayload(additional_info);\n\
      for (var key in flatPayload) {\n\
          additional_info[key] = flatPayload[key];\n\
      }\n\n\
      //update additional_info field field with all the query_params from the endpoint\n\
      var endpointParamsUtil = new sn_em_connector.EndpointParamsUtil();\n\
      endpointParamsUtil.updateAdditionalInfoWithEndpointParams(request.queryParams, additional_info);\n\n\
      if (typeof connector_tags !== 'undefined' && connector_tags) {\n\
      new sn_em_connector.PushConnectorInstanceUtils().updateAdditionalInfoWithConnectorTags(additional_info, connector_tags);\n\
  }\n\
      event.additional_info = JSON.stringify(additional_info);\n\n\
      responseBody.eventSysIds.push(event.insert());\n\
      // The variable 'response' is defined in sn_em_connector scope. Adding scope identifier as prefix makes it accessibel in connectors created in scope other than sn_em_connector.\n\
      sn_em_connector.response.setBody(responseBody);\n\
          \n\
      } catch (er) {\n\
          gs.info(er);\n\
          status = 500;\n\
          return er;\n\
      }\n\n\
  })(request, body);\n";
      } else {
          suffix = suffix + "\        //flattened fields has to be seperated and added to additional information.\n\
      var flattenPayload = new sn_em_connector.FlattenPayload();\n\
      var flatPayload = flattenPayload.getFlattenPayload(additional_info);\n\
      for (var key in flatPayload) {\n\
          additional_info[key] = flatPayload[key];\n\
      }\n\n\
      //update additional_info field field with all the query_params from the endpoint\n\
      var endpointParamsUtil = new sn_em_connector.EndpointParamsUtil();\n\
      endpointParamsUtil.updateAdditionalInfoWithEndpointParams(request.queryParams, additional_info);\n\n\
      if (typeof connector_tags !== 'undefined' && connector_tags) {\n\
      new sn_em_connector.PushConnectorInstanceUtils().updateAdditionalInfoWithConnectorTags(additional_info, connector_tags);\n\
  }\n\
      event.additional_info = JSON.stringify(additional_info);\n\n\
      responseBody.eventSysIds.push(event.insert());\n\
  	}\n\
      sn_em_connector.response.setBody(responseBody);\n\
  	}else{\n\
  		throw complex_payload + ' is missing in alert payload, Cant proceed !!';\n\
  	}\n\
          \n\
      } catch (er) {\n\
          gs.info(er);\n\
          status = 500;\n\
          return er;\n\
      }\n\n\
  })(request, body);\n";
          /* * Description:

           * Parameters:

           * Returns:
           */
      }
      return suffix;
  },
  mapping: function(event_field_mapping) {
      var str = '';
      var event_body = JSON.parse(event_field_mapping);
      if (event_body == null)
          return str;

      var complex_array = [];
      // Setting message-key [listEventPayload, prefix, result_msg_key]
      var message_key = event_body.message_key;
      if (message_key != null && message_key != '') {
          complex_array = this.createMessageKeyScript(message_key); // this will create the messagekey script and will check the if mapping value has complex array object or not
      }
      var complex_payload_flag = false;
      var prefix = '';
      var message_key_script = '';
      if (complex_array != null && complex_array.length == 3) {
          complex_payload_flag = complex_array[0]; // true if custom mapping value has complex object eg: alert.agent[i].alertname[1]
          prefix = complex_array[1];
          message_key_script = complex_array[2];
      }
      var format = /\[(\d|[0-9]+)\]/g;
      // complex value is present then we have to process the events one by one in a loop
      if (complex_payload_flag) {
          str = str + " var complex_payload = requestBody." + prefix + ";\n\
                   if(typeof complex_payload !== 'undefined' && complex_payload){\n\
                  var complex_length =  complex_payload.length;\n\
                  for(var i=0;i<complex_length;i++){\n";
      }
      str = str + message_key_script;

      var isConstSeverityFlag = false;
      var severityMap = event_body.severityMap;
      if (severityMap != null && severityMap != '') {
          isConstSeverityFlag = severityMap.isConstSeverity;
      }

      // setting severity
      var eventSeverity = event_body.severity;
      if (eventSeverity != null && eventSeverity != '') {
          if (isConstSeverityFlag == false) {
              str = str + this.createSeverityScript(eventSeverity, prefix, format, complex_payload_flag);
          } else {
              var resolutionState = 'New';
              switch (eventSeverity.toString().toUpperCase()) {
                  case 'CRITICAL':
                      str = str + ' 		event.severity = "1";\n';
                      break;
                  case 'MAJOR':
                      str = str + ' 		event.severity = "2";\n';
                      break;
                  case 'MINOR':
                      str = str + ' 		event.severity = "3";\n';
                      break;
                  case 'WARNING':
                      str = str + ' 		event.severity = "4";\n';
                      break;
                  case 'INFO':
                      str = str + ' 		event.severity = "5";\n';
                      break;
                  case 'CLEAR':
                      str = str + ' 		event.severity = "0";\n';
                      resolutionState = 'Closing';
                      break;
              }
              str = str + "     	event.resolution_state = '" + resolutionState + "' ;\n\n";

          }
      }

      // time of event, Ui will make time foramt compulsory
      // UI is sending \"timeOfEventMap\":{\"time_format\":\"YYYY-MM-DD HH:mm:SS\",\"time_of_event\":\"check_name\",\"time_zone\":\"GMT+13:00\"}
      // time zone is not always required, if user doesnt provide this value, we will not abort the action and will process it as normal way
      var time = event_body.timeOfEventMap;
      if (time != null) {
          var alert_creation_time = time.time_of_event;
          var time_format = time.time_format;
          var timezone = time.time_zone;
          if (alert_creation_time != null && time_format != null) {
              alert_creation_time = alert_creation_time.trim();
              time_format = time_format.trim();
              time_format = time_format.toUpperCase();
              if (timezone == null || timezone == '') {
                  timezone = 'GMT+00:00';
              }
              timezone = timezone.trim();

              switch (time_format) {
                  case 'YYYY-MM-DDTHH:MM:SSZ':
                      str = str + this.timeformat1(alert_creation_time, timezone);
                      break;
                  case 'YYYY-MM-DD HH:MM:SS':
                      str = str + this.timeformat2(alert_creation_time, timezone);
                      break;
                  case 'YYYY-MM-DDTHH:MM:SS.OOOZ':
                      str = str + this.timeformat3(alert_creation_time, timezone);
                      break;
                  case 'YYYY-MM-DDTHH:MM:SS.0000000Z':
                      str = str + this.timeformat4(alert_creation_time, timezone);
                      break;
                  case 'EpochTime(10 digit or 13 digit)':
                      str = str + this.timeformat5(alert_creation_time, timezone);
                      break;
              }
          }
      } else {
          str = str + '\ 		var timeOfEvent = new GlideDateTime();\n\
  		event.time_of_event = timeOfEvent;\n';
      }

      // description
      var customDescription = event_body.description;
      if (customDescription != null && customDescription != '') {
          str = str + this.createDescriptionScript(customDescription, prefix, format, complex_payload_flag);
      }

      // node
      var customNode = event_body.node;
      if (customNode != null && customNode != '') {
          str = str + this.createNodeScript(customNode, prefix, format, complex_payload_flag);
      }

      // resource
      var customResource = event_body.resource;
      if (customResource != null && customResource != '') {
          str = str + this.createResourceScript(customResource, prefix, format, complex_payload_flag);
      }

      // type
      var customType = event_body.type;
      if (customType != null && customType != '') {
          str = str + this.createTypeScript(customType, prefix, format, complex_payload_flag);
      }
      // metric-name
      var custom_metric_name = event_body.metric_name;
      if (custom_metric_name != null && custom_metric_name != '') {
          str = str + this.createMetricScript(custom_metric_name, prefix, format, complex_payload_flag);
      }

      // additional-info
      var custom_additional_info = event_body.additional_info;
      if (custom_additional_info != null && custom_additional_info != '') {
          str = str + this.createAdditionalInfoScript(custom_additional_info, prefix, format, complex_payload_flag);
      } else {
          str = str + "   var additional_info = requestBody;\n";
      }
      return [complex_payload_flag, str];
  },
  additionalMapping: function(event_field_mapping, complex_payload_flag) {
      var str = '';
      var event_body = JSON.parse(event_field_mapping);
      if (event_body == null)
          return str;
      var severityMap = event_body.severityMap;
      str = str + '\ \n function severityMapping(severity) {\n\n\
      var alertSeverity = severity.toString().toLowerCase();\n\
      switch(alertSeverity ) {\n';

      if (event_body.severityMap.Critical != null && event_body.severityMap.Critical != '') {
          var critical = event_body.severityMap.Critical.toString().toLowerCase();
          str = str + '\ case ' + "'" + critical + "'" + ' : \n return "1";\n';
      }
      if (event_body.severityMap.Major != null && event_body.severityMap.Major != '') {
          var major = event_body.severityMap.Major.toString().toLowerCase();
          str = str + '\ case ' + "'" + major + "'" + ' : \n return "2";\n';
      }
      if (event_body.severityMap.Minor != null && event_body.severityMap.Minor != '') {
          var minor = event_body.severityMap.Minor.toString().toLowerCase();
          str = str + '\ case ' + "'" + minor + "'" + ' : \n return "3";\n';
      }
      if (event_body.severityMap.Warning != null && event_body.severityMap.Warning != '') {
          var warning = event_body.severityMap.Warning.toString().toLowerCase();
          str = str + '\ case ' + "'" + warning + "'" + ' : \n return "4";\n';
      }
      if (event_body.severityMap.Info != null && event_body.severityMap.Info != '') {
          var info = event_body.severityMap.Info.toString().toLowerCase();
          str = str + '\ case ' + "'" + info + "'" + ' : \n return "5";\n';
      }
      if (event_body.severityMap.Clear != null && event_body.severityMap.Clear != '') {
          var clear = event_body.severityMap.Clear.toString().toLowerCase();
          str = str + '\ case ' + "'" + clear + "'" + ' : \n return "0";\n';
      }
      str = str + "\n } \n\n }";

      str = str + "\ function setTimeZone(eventTime, time_zone) {\n\
      var gdt = new GlideDateTime(eventTime);\n\
      var temp = time_zone.trim();\n\
      var length = temp.length;\n\
      var opt = temp.substring(3, 4);\n\
      var time = temp.substring(4, length);\n\
      var array = time.split(':');\n\
      var p = array[0] ? array[0] : 0;\n\
      var q = array[1] ? array[1] : 0;\n\
      var millisec = p * 60 * 60 * 1000 + q * 60 * 1000;\n\
      if (opt == '-') {\n\
           gdt.subtract(-millisec);\n\
       } else {\n\
           gdt.subtract(millisec);\n\
       }\n\
       return gdt;\n\
       }\n";
       if (complex_payload_flag) {
          str = str + "           function createErrorCustomEvent(attrs, e){\n\
  	 gs.error('Error is occurring while setting ' + attrs + ' field of servicenow event with exception: ' + e + ', hence aborting the action!!');\n\
  					var error_event = new GlideRecord('em_event');\n\
  					error_event.initialize();\n\
  					error_event.source = 'Self Health Event - ' + source_label;\n\
  					var _event_class = (typeof event_class !== 'undefined' && event_class) ? event_class : source_label;\n\
  					error_event.event_class = _event_class;\n\
  					error_event.message_key = 'self_health_event_' + source_label + '_' + _event_class;\n\
  					error_event.severity = '1';\n\
  					error_event.description = ' Event cant be created for source: ' + source_label + ' due to exception : ' + e;\n\
  					return error_event;\n\
  					}\n";

      }
      return str;
  },
  createMessageKeyScript: function(message_key) {
      var result_msg_key = "// Setting Message-key field \n\
      var eventMessageKey = '';\n";

      var msg_key_length = message_key.length;
      var listEventPayload = false;
      var prefix = '';
      var sending_prefix = '';
      var suffix = '';
      var format = /\[(\d|[0-9]+)\]/g;

      // first check if value has array list or not eg alert.agent[0] using format reg
      for (var i = 0; i < msg_key_length; i++) {
          var _msg_key_item = message_key[i]; // alert.agent.0.agentName"]
          var _target = _msg_key_item; // it will be used later
          if (_msg_key_item.match(format)) {
              listEventPayload = true;
              _msg_key_item = _msg_key_item.replace(format, '[i]');
              var itemArray = _msg_key_item.split('[i]');
              prefix = itemArray[0];
              var prefix1 = prefix + '[i]';
              // suffix = itemArray[1];
              suffix = _target.substring(prefix1.toString().length, _target.toString().length);
              break;
          }
      }
      if (listEventPayload) {
          result_msg_key = result_msg_key + "           try{";
      }
      for (var i = 0; i < msg_key_length; i++) {
          var msg_key_item = message_key[i];
          if (listEventPayload && msg_key_item.contains(prefix)) {
              msg_key_item = msg_key_item.replace(format, '[i]');
              var target = msg_key_item;
              var item_Array = msg_key_item.split('[i]');
              sending_prefix = item_Array[0];
              var prefix2 = sending_prefix + '[i]'; // alert.agent[i]
              suffix = target.substring(prefix2.toString().length, target.toString().length);
              msg_key_item = prefix2 + suffix;
          }
          result_msg_key = result_msg_key + " \n      if( typeof requestBody." + msg_key_item + " !== 'undefined' && requestBody." + msg_key_item + ") {\n\
               if(eventMessageKey != '')\n\
                  eventMessageKey = eventMessageKey + '-';\n\
              eventMessageKey = eventMessageKey + requestBody." + msg_key_item + ";\n\
              }\n";
      }
      result_msg_key = result_msg_key + "         event.message_key = eventMessageKey;\n\n";
      if (listEventPayload) {
          result_msg_key = result_msg_key + "      }catch(e){ \n\
  					  err_event = createErrorCustomEvent('message_key', e);\n\
                  responseBody.eventSysIds.push(err_event.insert());\n\
                  status = 500;\n\
                  return e;\n\
  			 }\n";
      }
      return [listEventPayload, sending_prefix, result_msg_key];
  },
  createNodeScript: function(node, prefix, format, complex_payload_flag) {
      var result_node = "// Setting Node field \n\
  	var eventNode = '';\n";
      var node_length = node.length;
       if (complex_payload_flag) {
          result_node = result_node + "           try{";
      }
      for (var i = 0; i < node_length; i++) {
          var node_item = node[i];
          if (complex_payload_flag && node_item.contains(prefix)) {
              node_item = node_item.replace(format, '[i]');
              var target = node_item;
              var itemArray = node_item.split('[i]');
              var pre = itemArray[0];
              pre = pre + '[i]';
              var suffix = target.substring(pre.toString().length, target.toString().length);
              node_item = pre + suffix;
          }
          result_node = result_node + " \n 		if( typeof requestBody." + node_item + " !== 'undefined' && requestBody." + node_item + ") {\n\
  			 if(eventNode != '')\n\
  			    eventNode = eventNode + '-';\n\
              eventNode = eventNode + requestBody." + node_item + ";\n\
              }\n";
      }
      result_node = result_node + " 		event.node = eventNode;\n\n";
      if (complex_payload_flag) {
          result_node = result_node + "      }catch(e){ \n\
  					 err_event = createErrorCustomEvent('node', e);\n\
                  responseBody.eventSysIds.push(err_event.insert());\n\
                  status = 500;\n\
                  return e;\n\
  			 }\n";
      }
      return result_node;
  },
  createResourceScript: function(resource, prefix, format, complex_payload_flag) {
      var result_resource = "// Setting Resource field \n\
  	var eventResource = '';\n";
  	if (complex_payload_flag) {
          result_resource = result_resource + "           try{";
      }
      var resource_length = resource.length;
      for (var i = 0; i < resource_length; i++) {
          var resource_item = resource[i];
          if (complex_payload_flag && resource_item.contains(prefix)) {
              resource_item = resource_item.replace(format, '[i]');
              var target = resource_item;
              var itemArray = resource_item.split('[i]');
              var pre = itemArray[0];
              pre = pre + '[i]';
              var suffix = target.substring(pre.toString().length, target.toString().length);
              resource_item = pre + suffix;
          }
          result_resource = result_resource + " \n 		if( typeof requestBody." + resource_item + " !== 'undefined' && requestBody." + resource_item + ") {\n\
  			if(eventResource != '')\n\
  			    eventResource = eventResource + '-';\n\
              eventResource = eventResource + requestBody." + resource_item + ";\n\
              }\n";
      }
      result_resource = result_resource + " 		event.resource = eventResource;\n\n";
      if (complex_payload_flag) {
          result_resource = result_resource + "      }catch(e){ \n\
  					  err_event = createErrorCustomEvent('resource', e);\n\
                  responseBody.eventSysIds.push(err_event.insert());\n\
                  status = 500;\n\
                  return e;\n\
  			 }\n";
      }
      return result_resource;
  },

  createDescriptionScript: function(customDescription, prefix, format, complex_payload_flag) {
      var res_desc = "// Setting Description field \n\
  	var eventDescription = '';\n";
  	if (complex_payload_flag) {
          res_desc = res_desc + "           try{";
      }
      var custom_desc_length = customDescription.length;
      for (var i = 0; i < custom_desc_length; i++) {
          var cus_desc_item = customDescription[i];
          if (complex_payload_flag && cus_desc_item.contains(prefix)) {
              cus_desc_item = cus_desc_item.replace(format, '[i]');
              var target = cus_desc_item;
              var itemArray = cus_desc_item.split('[i]');
              var pre = itemArray[0];
              pre = pre + '[i]';
              var suffix = target.substring(pre.toString().length, target.toString().length);
              cus_desc_item = pre + suffix;
          }
          res_desc = res_desc + " \n 		if( typeof requestBody." + cus_desc_item + " !== 'undefined' && requestBody." + cus_desc_item + ") {\n\
  			if(eventDescription != '')\n\
  			    eventDescription = eventDescription + ',';\n\
              eventDescription = eventDescription + requestBody." + cus_desc_item + ";\n\
              }\n";
      }
      res_desc = res_desc + " 		event.description = eventDescription;\n\n";
       if (complex_payload_flag) {
          res_desc = res_desc + "      }catch(e){ \n\
  					  err_event = createErrorCustomEvent('description', e);\n\
                  responseBody.eventSysIds.push(err_event.insert());\n\
                  status = 500;\n\
                  return e;\n\
  			 }\n";
      }
      return res_desc;
  },

  createTypeScript: function(customType, prefix, format, complex_payload_flag) {
      var res_type = "// Setting Type field \n\
  	var eventType = '';\n";
  	if (complex_payload_flag) {
          res_type = res_type + "           try{";
      }
      var custom_type_length = customType.length;
      for (var i = 0; i < custom_type_length; i++) {
          var cus_type_item = customType[i];
          if (complex_payload_flag && cus_type_item.contains(prefix)) {
              cus_type_item = cus_type_item.replace(format, '[i]');
              var target = cus_type_item;
              var itemArray = cus_type_item.split('[i]');
              var pre = itemArray[0];
              pre = pre + '[i]';
              var suffix = target.substring(pre.toString().length, target.toString().length);
              cus_type_item = pre + suffix;
          }
          res_type = res_type + " \n 		if( typeof requestBody." + cus_type_item + " !== 'undefined' && requestBody." + cus_type_item + ") {\n\
  			 if(eventType != '')\n\
  			    eventType = eventType + '-';\n\
              eventType = eventType + requestBody." + cus_type_item + ";\n\
              }\n";
      }
      res_type = res_type + " 		event.type = eventType;\n\n";
      if (complex_payload_flag) {
          res_type = res_type + "      }catch(e){ \n\
  					  err_event = createErrorCustomEvent('type', e);\n\
                  responseBody.eventSysIds.push(err_event.insert());\n\
                  status = 500;\n\
                  return e;\n\
  			 }\n";
      }
      return res_type;
  },
  createMetricScript: function(metric_name, prefix, format, complex_payload_flag) {
      var result_metric_name = "// Setting Metric field \n\
  	var eventMetric = '';\n";
  	if (complex_payload_flag) {
          result_metric_name = result_metric_name + "           try{";
      }
      var metric_name_length = metric_name.length;
      for (var i = 0; i < metric_name_length; i++) {
          var metric_name_item = metric_name[i];
          if (complex_payload_flag && metric_name_item.contains(prefix)) {
              metric_name_item = metric_name_item.replace(format, '[i]');
              var target = metric_name_item;
              var itemArray = metric_name_item.split('[i]');
              var pre = itemArray[0];
              pre = pre + '[i]';
              var suffix = target.substring(pre.toString().length, target.toString().length);
              metric_name_item = pre + suffix;
          }
          result_metric_name = result_metric_name + " \n		 if( typeof requestBody." + metric_name_item + " !== 'undefined' && requestBody." + metric_name_item + ") {\n\
  			  if(eventMetric != '')\n\
  			    eventMetric = eventMetric + '-';\n\
              eventMetric = eventMetric + requestBody." + metric_name_item + ";\n\
              }\n";
      }
      result_metric_name = result_metric_name + "		 event.metric_name = eventMetric;\n\n";
      if (complex_payload_flag) {
          result_metric_name = result_metric_name + "      }catch(e){ \n\
  					  err_event = createErrorCustomEvent('metric_name', e);\n\
                  responseBody.eventSysIds.push(err_event.insert());\n\
                  status = 500;\n\
                  return e;\n\
  			 }\n";
      }
      return result_metric_name;
  },
  createAdditionalInfoScript: function(additionalInfo, prefix, format, complex_payload_flag) {
      var result_additional_info = '        var additional_info={};\n';
      var additional_info_str = '';
      if(complex_payload_flag){
  		result_additional_info = result_additional_info + "           try{";
  	}
      var additional_info_length = additionalInfo.length;
      for (var i = 0; i < additional_info_length; i++) {
          var additional_info_length_item = additionalInfo[i];
          if (complex_payload_flag && additional_info_length_item.contains(prefix)) {
              additional_info_length_item = additional_info_length_item.replace(format, '[i]');
              var target = additional_info_length_item;
              var item_array = additional_info_length_item.split('[i]');
              var _prefix = item_array[0];
              var pre = _prefix;
              _prefix = _prefix + '[i]';
              var suffix = target.substring(_prefix.toString().length, target.toString().length);
              additional_info_length_item = pre + '[' + i.toString() + ']' + suffix;
          }
          additional_info_str = additional_info_str + "       additional_info['" + additional_info_length_item + "']= requestBody." + additional_info_length_item + " ;\n ";

      }
      result_additional_info = result_additional_info + additional_info_str;
      if (complex_payload_flag) {
          result_additional_info = result_additional_info + "      }catch(e){ \n\
  					  err_event = createErrorCustomEvent('additonal_info', e);\n\
                  responseBody.eventSysIds.push(err_event.insert());\n\
                  status = 500;\n\
                  return e;\n\
  			 }\n";
      }
      return result_additional_info;
  },
  createSeverityScript: function(eventSeverity, prefix, format, complex_payload_flag) {
      var res_sev = '';
      var sev_str = '';
      if (complex_payload_flag) {
          res_sev = res_sev + "           try{";
      }
      if (complex_payload_flag && eventSeverity.contains(prefix)) {
          var target = eventSeverity;
          eventSeverity = eventSeverity.replace(format, '[i]');
          var itemArray = eventSeverity.split('[i]');
          var pre = itemArray[0];
          pre = pre + '[i]';
          var suffix = target.substring(pre.toString().length, target.toString().length);
          eventSeverity = pre + suffix;
      }
      sev_str = sev_str + 'requestBody.' + eventSeverity;
      res_sev = res_sev + "\        var event_severity = " + sev_str + ";\n\
      var severity = severityMapping(event_severity);\n\
      if(severity == '0'){\n\
  		event.resolution_state = 'Closing';\n\
  	}else{\n\
  		event.resolution_state = 'New';\n\
  	}\n\
      event.severity = severity;\n\n";
      if (complex_payload_flag) {
          res_sev = res_sev + "      }catch(e){ \n\
  					  err_event = createErrorCustomEvent('severity', e);\n\
                  responseBody.eventSysIds.push(err_event.insert());\n\
                  status = 500;\n\
                  return e;\n\
  			 }\n";
      }
      return res_sev;
  },


  timeformat1: function(alert_creation_time, time_zone) {

      var result = '';
      var alertTime = alert_creation_time;
      result = result + '\        var firedDateTime = requestBody.' + alertTime + ';\n\
  	//"timestamp": "2021-08-19T10:39:00Z"\n\
      var time_of_event = new GlideDateTime(firedDateTime.substr(0, firedDateTime.indexOf("Z")).replace("T", " "));\n\
       time_of_event = setTimeZone(time_of_event,' + "'" + time_zone + "'" + ');\n\
      event.time_of_event = time_of_event;\n\n';
      return result;
  },
  timeformat2: function(alert_creation_time, time_zone) {
      var result = '';
      var alertTime = alert_creation_time;
      result = result + '\        var time_of_event = requestBody.' + alertTime + ';\n\
       time_of_event = setTimeZone(time_of_event,' + "'" + time_zone + "'" + ');\n\
      event.time_of_event = new GlideDateTime(time_of_event);\n\n';
      return result;
  },
  timeformat3: function(alert_creation_time, time_zone) {
      var result = '';
      var alertTime = alert_creation_time;
      result = result + '\        var time_of_event = requestBody.' + alertTime + ';\n\
       time_of_event = timeOfEvent.replace("Z", "+0000");\n\
       time_of_event = timeOfEvent.replace("T", " ");\n\
       time_of_event = setTimeZone(time_of_event,' + "'" + time_zone + "'" + ');\n\
      event.time_of_event = new GlideDateTime(time_of_event);\n\n';
      return result;
  },
  timeformat4: function(alert_creation_time, time_zone) {
      var result = '';
      var alertTime = alert_creation_time;
      result = result + '\        var timeOfEvent = requestBody.' + alertTime + ';\n\
      var time_of_event = new GlideDateTime(timeOfEvent.substr(0, timeOfEvent.indexOf(".")).replace("T", " "));\n\
      time_of_event = setTimeZone(time_of_event,' + "'" + time_zone + "'" + ');\n\
      event.time_of_event = new GlideDateTime(extractTimeOfEvent);\n\n';
      return result;
  },
  timeformat5: function(alert_creation_time, time_zone) {
      var result = '';
      var alertTime = alert_creation_time;
      result = result + '\        var timeOfEvent = requestBody.' + alertTime + ';\n\
       var currentTimeOfEvent = new GlideDateTime();\n\
        if (timeOfEvent && typeof timeOfEvent == "number") {\n\
              if(timeOfEvent.toString().length == 10){\n\
                   currentTimeOfEvent.setNumericValue(parseInt(timeOfEvent) * 1000);\n\
              }else if(timeOfEvent.toString().length > 10){\n\
                  currentTimeOfEvent.setNumericValue(parseInt(timeOfEvent));\n\
              }\n\
        }else if(timeOfEvent && typeof timeOfEvent == "string"){\n\
               if(timeOfEvent.length == 10){\n\
                   currentTimeOfEvent.setNumericValue(parseInt(timeOfEvent) * 1000);\n\
              }else if(timeOfEvent.length > 10){\n\
                  currentTimeOfEvent.setNumericValue(parseInt(timeOfEvent));\n\
              }\n\
        }\n\
      event.time_of_event = currentTimeOfEvent;\n\n';
      return result;
  },
  type: 'CustomConnectorMappingUtils'
};

Sys ID

01b089a847c6e1d02328cc48946d435e

Offical Documentation

Official Docs: