Re-opening existing incidents

The below process lets you re-open a ServiceNow Incident that is in the Resolved state, but not yet Closed.  The script has some comments and the full documentation on the Incident Creation Script page can be used to fully tweak this example.

Re-Open Creation Script
(function createServiceNowIncident(scomAlertRecord) {
    // ---------------------------------------------
    // Re-opening existing incidents example script
    // ---------------------------------------------

    // Create a GlideRecord object which we'll use to search or create an incident
    var grInc = new GlideRecord("incident");

    // ------------------------------------------------------------------
    // Configure the incident values, combinding some SCOM properties
    // ------------------------------------------------------------------

    // We will append the object name to the short description for user convinence
    var shortDesc = scomAlertRecord.name + " - " + scomAlertRecord.monitoringobjectpath;

    // ------------------------------------------------------------------
    // Search the incidents table for a resolved incident matching our alert
    // ------------------------------------------------------------------

    // Short description must match and state must be 6 (Resolved)
    grInc.addQuery("short_description", shortDesc);
    grInc.addQuery("state", 6);

    // Execute the query and proceed to check for results 
    grInc.query();

    // ------------------------------------------------------------------
    // Create or update an incident based on the search results
    // ------------------------------------------------------------------

    if (grInc.next()) {
        // Existing incident found, change the status to In Progress
        grInc.state = 2;
        grInc.work_notes = "Incident re-opened from SCOM Alert";
        grInc.update("Incident re-opened from SCOM Alert");

        // store the incident to our SCOM record (Don't use scomAlertGr.Update()!)
        scomAlertRecord.incident = grInc.sys_id;

    } else {
        //No matching incidents, create a new one for this alert 
        grInc.initialize();

        // Set the assignment group sys_id for our new incident
        grInc.assignment_group = null;

        // Populate the description and short description from the SCOM alert
        grInc.short_description = shortDesc;
        grInc.Description = scomAlertRecord.description;

        // Specify our Configuration item by sys_id
        grInc.cmdb_ci = null;

        // Set the caller of the incident as desired, using the user's sys_id
        grInc.caller_id = null;

        // insert the new incident and store the created incident to our SCOM record (Don't use scomAlertGr.Update()!)
        scomAlertRecord.incident = grInc.insert();
    }

})(scomAlertRecord);