User Tools

Site Tools


background_scripts

This is an old revision of the document!


Background Scripts


Approve

var app = new GlideRecord('sysapproval_approver');
app.addQuery('state','requested');
//app.setLimit(30);
app.query();
while(app.next())
{
    gs.print('Approval count in requested state '+app.getRowCount());
    app.state='approved';
    app.update();
}

Clear Attribute

ClearUserLog();
//Log Time Started
UserLog("Script Started at" + gs.nowDateTime());

//Query Table
var gr = new GlideRecord('sys_user');
gr.addNotNullQuery('mobile_phone');
gr.query();

//Update Records
while (gr.next()) {
    gr.mobile_phone = "";
    gr.setWorkflow(false);
    gr.update();
}

//Log Time Ended
UserLog("Script Ended at" + gs.nowDateTime());

Fix SLA

ClearUserLog();
var gr =   new GlideRecord('incident');
gr.addQuery("numberSTARTSWITHMINC_");
gr.query();

UserLog("Number of incidents to update " + gr.getRowCount());

var sla = new SLARepair();
while(gr.next()) {
    var sysId = gr.getValue('sys_id');
    gs.info("Updating incident " + sysId);
    sla.repairBySysId(sysId, "incident");
}

Metric Incident Category TESTING

ClearUserLog();
var definition = new GlideRecord("metric_definition");
definition.get("name", "Incident Category")
UserLog(definition.name);

var gr = new GlideRecord("incident");
    //gr.addEncodedQuery("opened_at<=javascript:gs.endOfToday()");
    gr.addEncodedQuery("numberSTARTSWITHINC0010525");
    gr.query();
    UserLog('Found ' + gr.getRowCount());

// Update fieldname below for category or subcategory
while(gr.next()) {
    UserLog("Number "+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();

    var gdtStart = new GlideDateTime(gr.opened_at);
    UserLog('First start '+gdtStart );
    var i = 0;
    while(history.next()) {
        i++
        UserLog("Row count"+i);
        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'));
        grMetric.query();
 
        UserLog("State "+gr.state);
        var gdtEnd = new GlideDateTime(history.sys_created_on);
        UserLog("End "+gdtEnd);
        if ((gr.state >= 6) && (i > history.getRowCount())) {
            gdtEnd = new GlideDateTime(gr.resolved_at);
            UserLog("End "+gdtEnd);
        } else if(i == history.getRowCount()) {
            UserLog("Incident not resolved");
        }

        if (!grMetric.hasNext()) {
                //var now = new GlideDateTime();
                var gdurCalendar = GlideDateTime.subtract(gdtStart, gdtEnd);
                UserLog("Difference "+gdurCalendar);
        }

        gdtStart = new GlideDateTime(history.sys_created_on);
        UserLog("Next start "+gdtStart);
    }
}

Metric Incident Category

//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();
        }
    }
}

Trigger Business Rule

ClearUserLog();
//Log Time Started
UserLog("Script Started at " + gs.nowDateTime());

//Query Table
var gr = new GlideRecord('sys_user');
gr.addEncodedQuery('u_business_unit!=NULL^u_business_unit_ref=NULL');
gr.query();

//Update Records
while (gr.next()) {
    // gr.setWorkflow(true);
    gr.setForceUpdate(true);
}

//Log Time Ended
UserLog("Script Ended at " + gs.nowDateTime());

Unlock PROD



Update Time Zone



background_scripts.1734034424.txt.gz · Last modified: 2024/12/12 12:13 by johnsonjohn