更新セットの中の特定の顧客アップデートだけを切戻す方法

m51D
Tera Contributor

こんにちは。

更新セットに含まれる複数の顧客アップデートのうち、特定の1つの顧客アップデートだけ切戻したいです。
実現方法をご存知の方がいらっしゃいましたら教えてください。

1つだけなら手動で元に戻せばいいのでは?と感じるかもしれませんが、この顧客アップデートではどういう経緯なのかは不明ですがセキュリティで保護されたスクリプトインクルードが作られており、手動ではそれを削除することができないという、少し特殊な状況になっています。そのスクリプトインクルードの影響でRomeアップグレードで不具合が発生しています。

NowSupportにも相談をしていますが、カスタマイズとみなされ現時点では協力を得られていません。

よろしくお願いします。

1 ACCEPTED SOLUTION

iwai
Giga Sage

NowSupportに修復してもらうことが原則です。
どうしてもScript includeを無効化しなければならないのであれば、自己責任で下記Scriptで作成されてしまったScript includeを強制的に削除できます。(Active Falseにして無効化する方法もありますが、今回は存在そのものが誤りのようなので強制削除としました)

下記Scriptを Scripts Backgroundで実行してください。SYSIDは環境に合わせて変更してください。

この削除による問題は完全に自己責任で実行してください。Scripts Background には Rollback機能があるので、削除を取り消して元に戻すことは可能です。

// 削除したいScript include sys_id
var sysid = 'aaaaaaaaaaaaaaaaaaaaaaaaa';
var deletePayload = '<?xml version="1.0" encoding="UTF-8"?><record_update table="sys_script_include"><sys_script_include action="DELETE"><sys_id>'+sysid+'</sys_id></sys_script_include></record_update>';
var gum = new GlideUpdateManager2(); // UpdateSet 管理クラス
gum.loadXML(deletePayload); // XML 適用

View solution in original post

6 REPLIES 6

Richard Tamparo
Mega Guru

切戻したい特定の1つの顧客アップデートを開いて、更新セットのフィールドに切戻したいところに更新すれば。。。defaultの更新セットとか。

find_real_file.png

Richardさん

ありがとうございます。教えていただいた方法を試してみます。

情報提供ありがとうございます。

t_sadahisa
Giga Guru

結論としては、ServiceNowの方に修正いただくしかないと思います。

 

通常、Productionに適用したUpdatesetに問題がある場合は、以下の手順で修正します。
1. Productionで該当UpdatesetをBackout
2. Sub-Productionで該当Updatesetを複製し、問題の箇所以外を取り除く
3. Productionで新しく作成したUpdatesetをCommit

今回のケースだと対象のレコードが編集できない状態になってしまっているので、
おそらく1のBackoutに失敗します。
したがってmaintロールを持つServiceNowサポートの方しか対応できないのではと思われます。

 

粘り強くNowSupportと交渉した結果、対応できないということであれば、
「Script Includeの問題の箇所を修正した別のScriptIncludeを作り、呼び出している各種Scriptを修正して新しいScript Includeを利用する」
といった回避策もあるかと思います。

m51D
Tera Contributor

sadahisaさん、回答ありがとうございます。

NowSupportととのやり取りは現在も継続中ですが、万が一それでも解決できない場合は上記の手順も参考に解決策を模索してみます。

情報提供に感謝いたします。