
みなさん、こんにちは。なうもんです。
今日はServiceNowの最も重要な機能と言っても過言ではない、承認機能の問題点について記事にしたいと思います。
承認機能とは
ServiceNowの承認機能とは、ServiceNowで最も重要な機能といっても過言ではないコア機能です。
ServiceNowは社内のワークフローを効率化するための製品であるため、業務上のワークフローの構築において承認は欠かせません。
また、企業のガバナンスを担保し、上位者の承認がされているという証跡を残すというのも承認機能の重要な役割です。
しかし、ServiceNowの承認機能にはエンタプライズで利用していくためには問題があると思われる点がいくつか存在します。
ServiceNowの承認機能の問題点

ServiceNowの承認機能で問題になりうる点は以下の3点です。
- 承認者ロールを持つユーザーが、承認レコードを削除できてしまう。
- 承認者が「承認・却下」だけでなく、業務上使わないステータスで承認レコードを更新できてしまう。
- 承認行為を行った後にも承認レコードのステータスを変更できてしまう。
①承認者ロールを持つユーザーが、承認レコードを削除できてしまう。
承認者ユーザーを作成し、「approver_user」ロールを付与し、自分に承認依頼が来ているレコードを表示してみました。
画像で見てわかるように、なぜか削除のUIアクションが表示され、押すと実際に承認レコードを削除できてしまいます。

本来であれば監査上の観点からも承認レコードは削除できるべきではなく、フローを構築する上でも万が一削除されてしまった場合にどうするかといった無駄な考慮をする必要が生まれてしまいます。
オペレーションとして削除なんてさせないように注意し、万が一削除してしまった場合には再度申請をするといった運用での回避も考えられますが、製品としてそもそも承認の削除はできるべきではないと思います。
②承認者が「承認・却下」だけでなく、業務上使わないステータスで承認レコードを更新できてしまう
ServiceNowの標準機能ではUIアクションとして承認と却下が用意されています。
ポータルやモバイルで承認を行う場合には基本的には考慮が不要で、この2つのUIアクションを利用すればよいのですが、Next Experience UIではそうはいきません。
なぜか、承認者がステータス項目を自由に選択できるようになっており、承認・却下だけでなく不要や、キャンセルなど業務上、承認者が選択することがないようなステータスを選択できるようになっています。

これにより、もし承認・却下以外が選択されてしまった場合にフローとしてどのような挙動をするのが正解なのかまたしても無駄な考慮が必要となってしまいます。
キャンセルや不要といったステータスは、申請を取り下げた場合や、複数の承認者に対し承認依頼が行われた場合に、誰か1人でも承認が行われればOKといったようなケースでシステム的に利用すべきステータスだと思われます。
③承認行為を行った後にも承認レコードのステータスを変更できてしまう
以下の画像は実際に承認ボタンを押して、承認状態にしたレコードになります。
しかし、見て分かるようにまだステータス項目が活性化されており、更新ボタンも表示されております。(おまけに削除ボタンも…。)

また、ビジネスルールによる制御もかかっていないため承認した後に却下で更新することも可能になっています。
もちろん削除も可能です。

承認・却下後にステータスの更新を監査上許してもよいのかという話もありますし、そもそもワークフローが肝であるServiceNowがこのような仕様であって良いのか甚だ疑問です。
導入しているユーザー企業や、ServiceNowのパートナー企業はこちらの問題にどのように対処しているのでしょうか。
ACLやテーブル定義のカスタマイズにより簡単に防止できる仕様ではあるものの、私は製品としてのバグとしてとらえています。
アップグレード時の影響なども考慮して、こちらの点に関してはServiceNow社として対応していただけることを願うばかりです。
コメント