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
-
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();
}
}
-
Stellen Sie sicher, dass die Statusbezeichnungen in vorhandenen Change-Anforderungsdatensätzen geändert wurden.