Change Request-Status aktualisieren

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 1 Minute Lesedauer
  • Wenn Sie von einem Release vor Geneva upgraden, müssen Sie alte Statusbezeichnungen auf neue Statusbezeichnungen aktualisieren, nachdem Sie das Change Management-Statusmodell aktiviert haben.

    Vorbereitungen

    Erforderliche Rolle: admin

    Warum und wann dieser Vorgang ausgeführt wird

    Statuswerte für aktuelle Change Records werden nicht geändert, wenn Sie das Change Management-Statusmodell aktivieren. In den aktuellen Change Records werden jedoch die neuen Statusbezeichnungen im Statusfeld angezeigt.

    Statuswert Neue Statusbezeichnung Altes Staatslabel
    -5 Neu Ausstehend
    -4 Bewerten (Nicht verwendet)
    -3 Autorisieren (Nicht verwendet)
    -2 Geplant (Nicht verwendet)
    -1 Implementieren (Nicht verwendet)
    0 Überprüfen (Nicht verwendet)
    1 (Nicht verwendet) Offen
    2 (Nicht verwendet) In Bearbeitung
    3 Geschlossen Geschlossen – vollständig
    4 Abgebrochen Geschlossen – unvollständig
    7 (Nicht verwendet) Geschlossen - übersprungen

    Datensätze mit einem Statuswert von -5 weisen beispielsweise die Statusbezeichnung Ausstehend auf, bevor das Change Management-Statusmodell aktiviert wird. Nachdem das Statusmodell aktiviert wurde, behalten diese Datensätze den Statuswert -5, weisen aber die Bezeichnung Neu auf. Um den Change-Management-Prozess Ihrer Organisation mit dem Statusmodell zu verwenden, müssen Sie die Statuswerte in den vorhandenen Change-Datensätzen je nach Bedarf entweder manuell oder per Skript aktualisieren.

    Sie müssen auch alle Berichte aktualisieren, die Abfragen basierend auf alten Statusbezeichnungen ausführen, um die neuen Statusbezeichnungen widerzuspiegeln.

    Prozedur

    1. Um die Statusfeldwerte von alten Statusbezeichnungen automatisch in neue Statusbezeichnungen zu aktualisieren, passen Sie das folgende Beispielskript an und führen Sie es dann aus:
      updateStates();
      
      function updateStates() {
      
        function hasApprovers(changeGr) {
          var approverGr = new GlideRecord("sysapproval_approver");
          approverGr.addQuery('sysapproval', changeGr.getUniqueValue());
          approverGr.query();
          return approverGr.getRowCount() > 0;
        }
      
        function hasRunningWorkflows(changeGr) {
          var workflow = new Workflow();
          var workflowGr = workflow.getRunningFlows(changeGr);
          var hasRunningFlows = workflowGr.getRowCount() > 0;
          return hasRunningFlows;
        }
      
        // Old State Model
        var PENDING = '-5';
        var OPEN = '1';
        var CLOSED_COMPLETE = '3';
        var CLOSED_INCOMPLETE = '4';
        var CLOSED_SKIPPED = '7';
      
        // New State Model
        var NEW = '-5';
        var ASSESS = '-4';
        var AUTHORIZE = '-3';
        var SCHEDULED = '-2';
        var IMPLEMENT = '-1';
        var REVIEW = '0';
        var CLOSED = '3';
        var CANCELLED = '4';
      
        // Find all change requests
        var record = new GlideRecord('change_request');
        record.query();
      
        // Update state from old value to new value
        while (record.next()) {
          switch(record.getValue('state')) {
            case OPEN:
              if (!hasRunningWorkflows(record) && !hasApprovers(record))
                record.state = NEW;
              break;
            case CLOSED_COMPLETE:
              record.state = CLOSED;
              record.close_code = "successful";
              break;
            case CLOSED_SKIPPED:
              record.state = CANCELLED;
              record.close_code = "unsuccessful";
              break;
            case CLOSED_INCOMPLETE:
              record.state = CLOSED;
              record.close_code = "successful_issues";
              break;
          }
          record.autoSysFields(false);
          record.setWorkflow(false);
          record.update();
        }
      
      }
      
    2. Stellen Sie sicher, dass die Statusbezeichnungen in vorhandenen Change-Anforderungsdatensätzen geändert wurden.