【ServiceNow】ナレッジカテゴリを削除できなくて困ったけどすぐ解決できた話


前提

OS:macOS Monterey 12.4
ブラウザ:Google Chrome
バージョン:San Diego

PDIの作成や日本語化は済ませてある状態での記事です。

kwn1125.hatenablog.com


PDIのバージョンは以下の記事を参考にRomaからSan Diegoに上げてます。
mekeblog.com


現象

現象としてはタイトル通りなのですが、ナレッジカテゴリをフォーム・リストから削除できなくて「なんで?」ってなりました。フォームだと画像のように削除ボタンが表示されてない状態です。(※再現のためにわかりやすい名前でカテゴリを作って記事を書いています。)


調査と解決

こういった"レコード削除できない系"の現象はACLの問題であることが経験上多いです。ナレッジカテゴリの削除なので、ACLのリストからナレッジカテゴリ(=kb_category)のdeleteのレコードを確認します。


ロールと条件での制御がないので、削除できないのはスクリプトによる制御であることがわかります。クラスを右クリックすると「定義を開く」でジャンプできるので、これを使って潜っていきます。


潜っていくとcanDeleteに辿り着きます。


さらに潜っていき、canDeleteで呼び出しているmanagerRightToKnowledgeCategoryとisEmptyCategoryを確認します。コメントを翻訳してそれぞれ確認してみます。


managerRightToKnowledgeCategoryの方は条件を満たしていました。isEmptyCategoryの方ですが、削除しようとしているナレッジカテゴリを使っているナレッジがあることがわかり、おそらくこれが原因であろうとわかりました。


削除しようとしているナレッジカテゴリを使っているナレッジのカテゴリを他のカテゴリに変更したところ、削除ボタンが出てきて削除することが出来ました。