インスタンス間のUserとGroup同期についての確認

d-aizawa
Kilo Sage

コミュニティの皆様
いつもお世話になっております。

 

私のプロジェクトでは、今更で恐縮ですが、
インスタンス間(本番と開発間)でUserとGroupのSys Idが同期できておりませんでした。

スクリプトでSys Idを取り扱う都合上、Sys Idを同期することで、移行時の工数軽減を考えております。
UserとGroupの同期方法ですが、以下手順で行おうと考えております。
懸念事項や注意点等があれば、ご教示頂きたいです。
①本番環境でUser, Group, Role等の対象レコードをXML エクスポート
②開発環境で①のレコードと同様の名前のレコードを削除
③①のレコードをインポート
④開発環境で②のSys Idを使用しているスクリプト等を、①のSys IDに更新
⑤動作確認して、問題なければ④を本番移行

1 ACCEPTED SOLUTION

  • 1「レコードが削除されてしまうと理解しました
    • 私もその認識です。PDIで警告文がでてきたとおりで、一緒に削除されてしまいます。
  • 2「ServiceNow側で削除されたユーザ宛にメール通知がされないよう
    • 設定が消えたあと新たにユーザーを作成したとき自動的に設定が作成されるかどうかは別ですし、消えてしまった設定を引き継ぐことも出来ないので、ユーザーごとに異なる通知デバイスの設定をしていないかは確認しても良さそうです。
  • 3「他により良い手順は
    • 思い付きのアイデアですが、重複したユーザーを削除しない。過去のユーザーはUserIDと名前もメールアドレスも変えて、見た目でわかるように「Old」でも追加しておく。Active False と lockout  に設定する。これで、新しいユーザーを取り込んで、今後は新しいユーザーを使ってもらう。
      問題点があるとしたら、集計では別人になってしまう。リストビューとかでもMy Requestsとかで過去のが見えなくなる。MyRequestsぐらいならデータ加工すれば引き継げるかとは思います。可能な限りデータも変更しないで、割り切って移行するほうが安全です。

 

View solution in original post

3 REPLIES 3

iwai
Giga Sage

②開発環境で①のレコードと同様の名前のレコードを削除
この時点でReference先が削除されたことにより自動的に項目が更新や削除される場合があります。
カスケード削除ルールの構成 (servicenow.com)
この設定があるかどうかはDictionary Tableで UserをReferenceしてReference Casecade Rule を設定している項目を検索すると見つかります。

④開発環境で②のSys Idを使用しているスクリプト等を、①のSys IDに更新
この時点でUpdateSetが多数作成され、想定外の影響を与える可能性もあるかもしれません。強制的に一部のレコードだけを更新することにより整合性が合わなくなるようなことを心配しています。

影響あるレコードを漏れなく適切に対応するのは理論的には可能でも、
現実には相当難しい対応をしなくてはならないので、エラーや不具合が発生することを想定したほうが良さそうです。

開発環境と本番環境でsys_idの不一致がどれだけのレコードに影響を与えるのか列挙して、具体的にテーブルや機能から影響を想定すると良いと思います。

iwaiさん、
ご回答ありがとうございます。
追加で以下3点確認させてください。
①カスケード削除ルールによって、項目が更新や削除されるという記載について確認させてください。
例として、Reference Casecade Ruleが"Delete"となっているカラムがあれば、
Userレコードが削除して、そのカラムに削除したUserが入力されているレコードがある場合、
そのレコードが削除されてしまうと理解しましたが、認識いかがでしょうか。

②PDIで確認したところ、
Notification Deviceテーブルのレコードが自動で削除されるという警告文が表示されました。
こちらはServiceNow側で削除されたユーザ宛にメール通知がされないよう、

自動削除されると理解したので、特に影響はないと考えておりますが、認識に相違ないでしょうか。

③ユーザの削除しないとSys IDに同期ができなかったので、削除する形で考えましたが、
他により良い手順はございますでしょうか。

  • 1「レコードが削除されてしまうと理解しました
    • 私もその認識です。PDIで警告文がでてきたとおりで、一緒に削除されてしまいます。
  • 2「ServiceNow側で削除されたユーザ宛にメール通知がされないよう
    • 設定が消えたあと新たにユーザーを作成したとき自動的に設定が作成されるかどうかは別ですし、消えてしまった設定を引き継ぐことも出来ないので、ユーザーごとに異なる通知デバイスの設定をしていないかは確認しても良さそうです。
  • 3「他により良い手順は
    • 思い付きのアイデアですが、重複したユーザーを削除しない。過去のユーザーはUserIDと名前もメールアドレスも変えて、見た目でわかるように「Old」でも追加しておく。Active False と lockout  に設定する。これで、新しいユーザーを取り込んで、今後は新しいユーザーを使ってもらう。
      問題点があるとしたら、集計では別人になってしまう。リストビューとかでもMy Requestsとかで過去のが見えなくなる。MyRequestsぐらいならデータ加工すれば引き継げるかとは思います。可能な限りデータも変更しないで、割り切って移行するほうが安全です。