Geneva より前のリリースからアップグレードした場合は、 [変更管理状況モデル] をアクティブ化した後、古いステータス ラベルを新しいステータス ラベルに更新する必要があります。
このタスクについて
[変更管理状況モデル] をアクティブ化しても、現在の変更レコードのステータス値は変更されません。ただし、現在の変更レコードの新しいステータス ラベルが [ステータス] フィールドに表示されます。
| ステータス値 |
新しいステータス ラベル |
古いステータス ラベル |
| -5 |
新規 |
保留中 |
| -4 |
評価 |
(使用されません) |
| -3 |
許可 |
(使用されません) |
| -2 |
スケジュール済み |
(使用されません) |
| -1 |
実装 |
(使用されません) |
| 0 |
レビュー |
(使用されません) |
| 1 |
(使用されません) |
オープン |
| 2 |
(使用されません) |
対応中 |
| 3 |
クローズ済み |
完了してクローズ |
| 4 |
キャンセル |
未完了でクローズ |
| 7 |
(使用されません) |
スキップしてクローズ |
たとえば、ステータス値が -5 のレコードは、[変更管理状況モデル] がアクティブ化される前は [保留中] ステータス ラベルが表示されています。状況モデルがアクティブ化された後、これらのレコードのステータス値は -5 のままですが、ラベルが [新規] になります。組織の必要な変更管理プロセスを状況モデルで使用するには、手動またはスクリプトによって、既存の変更レコードのステータス値を新しいラベルに適切に更新する必要があります。
新しいステータス ラベルを反映するには、古いステータス ラベルに基づいてクエリーを実行するレポートも更新する必要があります。
手順
-
古いステータス ラベルから新しいステータス フィールド値を自動的に更新するには、カスタマイズしてから、次のサンプル スクリプトを実行します。
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();
}
}
-
既存の変更要求レコードでステータス ラベルが変更されていることを確認します。