//Incident Category = 1bf7c3561bce8d5099e265b1604bcb43 //Incident Subcategory = e02847961bce8d5099e265b1604bcba9 var definition = new GlideRecord("metric_definition"); definition.get("name", "Incident Category") gs.print(definition.name); var gr = new GlideRecord("incident"); gr.addEncodedQuery("opened_at<=javascript:gs.endOfYesterday()"); gr.setLimit(3); gr.query(); gs.print('Found ' + gr.getRowCount()); // Update fieldname below for category or subcategory while(gr.next()) { gs.print(gr.sys_id); history = new GlideRecord("sys_audit"); history.addQuery("documentkey", gr.sys_id); history.addQuery("fieldname", "category"); history.orderBy("sys_created_on"); history.query(); while(history.next()) { var grMetric = new GlideRecord('metric_instance'); grMetric.addQuery('id', gr.getValue('sys_id')); grMetric.addQuery('definition', definition.getValue('sys_id')); grMetric.addQuery('value', gr.getDisplayValue('category')); // For original value, use the line below instead of the line above //grMetric.addQuery('value', history.getValue('oldvalue')); grMetric.query(); var gdtStart = new GlideDateTime(history.sys_created_on); // For original time, use the line below instead of the line above //var gdtStart = new GlideDateTime(gr.opened_at); gs.print("Start "+gdtStart); if (!grMetric.hasNext()) { var now = new GlideDateTime(); var instant = new GlideDuration(0); //var gdurCalendar = GlideDateTime.subtract(gdtStart, gdtEnd); grMetric = new GlideRecord('metric_instance'); grMetric.initialize(); grMetric.setValue('table', gr.getRecordClassName()); grMetric.setValue('id', gr.getValue('sys_id')); grMetric.setValue('definition', definition.getValue('sys_id')); grMetric.setValue('field', definition.getValue('field')); // Update value below for category or subcategory grMetric.setValue('value', history.getValue('oldvalue')); grMetric.setValue('duration', instant); grMetric.setValue('calculation_complete', true); grMetric.setValue('start', gdtStart); grMetric.setValue('end', now); grMetric.insert(); } } }