ハードウェア CI で一般的に使用されているフィールドにもかかわらず、ハードウェア CI のインストールステータス (インストール待ちなど) が、資産から CI にマッピングされるが、CI から資産にマッピングされない説明 ハードウェア CI のインストールステータスが、資産から CI にマッピングされますが、CI から資産にマッピングされません。たとえば、[在庫あり] / [インストール待ち] に設定された資産では、CI install_status が [インストール待ち] として更新されますが、CI にそのステータスが設定されている場合、資産が一致するように更新されません。 現在の設計では、ハードウェア CI (cmdb_ci_hardware と拡張クラス) はハードウェアステータス [hardware_status] フィールドとサブステータス [hardware_substatus] フィールドのみを使用することを前提としていますが、これらのフィールドには [インストール待ち] のようなインストールステータスに有効な値は含まれていません。そのため、ハードウェア CI でも install_status フィールドが使用されるのが一般的です。 ハードウェア以外の CI クラスの場合、これは両方向にマッピングされます。 注意:イベント管理や変更管理などの機能は、ハードウェア CI であるかどうかに関係なく、関連する資産にマッピングされる「メンテナンス中」の CI に対してこのフィールドを使用します。 再現手順 out-of-box に「同期の方向 = 両方」(Sync Direction = Both)「資産 CI インストールステータスマッピング」があります。資産のステータス/サブステート:在庫あり/インストール待ち <-> CI ステータス (install_status):インストール待ち新しいコンピューター CI (/cmdb_ci_computer.do) を作成し、CI ステータス (install_status) を [インストール待ち] に設定します自動的に作成された関連する資産までクリックします。資産のステータス/サブステートは [使用中] / [なし] であることに注意してくださいその資産のステータス/サブステートを [在庫あり]/[インストール待ち] に設定すると、CI のステータス (install_status) が [インストール待ち] に更新されます ワークアラウンド 問題の重大性と頻度、および修正を試みるコストとリスクを慎重に検討した結果、現在および近い将来のリリースではこの問題に対処しないことが決定されました。ご迷惑をおかけいたしますことをお詫び申し上げます。 ワークアラウンドとして、OOB AssetAndCISynchronizer スクリプトインクルードをカスタマイズして、「挿入時に CI を作成」または「変更時に CI フィールドを更新」ビジネスルールによって既に行われている挿入/更新に、追加のフィールド変更を便乗させることができます。CI を更新するために資産にビジネスルールを作成することはお勧めしません。なぜなら、資産と CI の同期に関連する他の OOB ビジネスルールによる更新が同時に行われていて、これが通常、ネストされた更新と再帰につながるからです。 以下は、一方の列を他方の列よりも優先するための AssetAndCISynchronizer スクリプトインクルードの推奨変更です。デフォルトでは、CI のタイプがハードウェアの場合、hardware_status (ハードウェアステータス) および hardware_substatus (サブステータス) フィールドが install_status (ステータス) フィールドよりも優先されます。 現在の API コード: _inferAssetStatuses : function(ci, asset, asyncUpdate) { // HW ステータスは CI ステータスに優先されます if (this._isHardwareCI(ci)) { if (!ci.hardware_status.changes() && !ci.hardware_substatus.changes() && !asyncUpdate) return 0; return this._inferAssetStatusesHardware(ci, asset); } else { if (!ci.install_status.changes() && !asyncUpdate) return 0; return this._inferAssetStatusesBase(ci, asset); }}, コードを次のように変更します。 _inferAssetStatuses : function(ci, asset, asyncUpdate) { var precedenceColumn = "install_status"; //値は「install_status」または「hardware_status」のいずれかです // HW ステータスは CI ステータスに優先されます if (this._isHardwareCI(ci) && precedenceColumn === "hardware_status") { if (!ci.hardware_status.changes() && !ci.hardware_substatus.changes() && !asyncUpdate) return 0; return this._inferAssetStatusesHardware(ci, asset); } else { if (!ci.install_status.changes() && !asyncUpdate) return 0; return this._inferAssetStatusesBase(ci, asset); }}, 以下は、ステータスフィールド間のさまざまなマッピングです。 資産から CI資産からハードウェアCI から資産ハードウェアから資産 #1 と #2 は正常に機能しますが、#3 と #4 は現在どちらか一方しか使えません。 関連する問題:PRB1241775