承認コネクタ利用に関する思わぬ落とし穴!?

承認コネクタ利用に関する思わぬ落とし穴!? Power Automate
承認コネクタ利用に関する思わぬ落とし穴!?

① 承認コネクタを利用すると承認依頼メールの差出人は、承認依頼を出したユーザーではなく、「Microsoft Flow <macconut@microsoft.com>」となっています。
【参考】承認依頼メールに表示される要求者と作成者と要求対象者とは? | たなの覚え書き (tana-techlog.net)
平野 愛さんが以下の記事に記載してくださったように、承認に関する情報はDataverse上に格納されます。
【参考】[Power Automate] フローのタイムアウトと承認期間が長いフローの構築 (weblogs.jp)

この2点に関することで思いもよらぬ仕様に遭遇しましたので、まとめておきたいと思います。

承認コネクタのアクションで見たことがないエラー

ある日、「開始して承認を待機」アクションで見たことがないエラーが発生しました。

【​​​​​​​エラーメッセージ】”The request failed. Error code: ‘XrmApiRequestFailed’. Error Messge: ‘Request to XRM API failed error: ‘The cache request to find a role failed with status code ‘429’ and message: ‘Message: Number of concurrent requests exceeded the limit of 52 Code: 0x8007326 Inner Error:’.’.’.”

「Number of concurrent requests exceeded the limit of 52」=「同時リクエスト数が52の制限を超えたため」というメッセージです。
メッセージを見る限り、このアクションを同時に52実行したからかなと見えました。

しかし、Power Platformの要求数の制限に「52」という数値がありませんでした。
要求の制限と割り当て – Power Platform | Microsoft Docs

とはいえ、そもそも一人で同時に52も承認要求なんて出していないし。。。

Dataverseのサービス保護のAPI制限について

「52」という数の制限は、Dataverseの制限として存在しました。

Dataverseは、利用するすべてのユーザーに平等なサービスを提供するため、異常な要求を実行するユーザーに対して、エラーを返すようになっています。

サービス保護 API の制限 (Microsoft Dataverse) – Power Apps | Microsoft Docs

そのため、ユーザーがDataverseに対して行う要求に対しては、以下のような「要求の数」「実行時間」「同時実行要求数」という制限があり、この制限を超えるとエラーが返されます。

サービス保護 API の制限 (Microsoft Dataverse) – Power Apps | Microsoft Docs

1人でDataverseに対して、5分間の間に6,000の要求を出したり、同時に52の要求を出した場合にエラーとなるということです。

承認コネクタを利用した要求

承認コネクタを利用した要求は、Dataverseに対する要求となります。承認に関する情報は、Dataverseに書き込まれるからです。

そして、ここが重要になります。承認コネクタを利用した場合は、承認用に作成されるシステムユーザーという1つのアカウントからの実行となるそうです。

実際、Dataverseの承認情報が格納されるテーブルのレコードを更新しているユーザーは、すべて「Microsoft Flow」と表示されます。

Dynamics 365 の監査ログ概要ビュー

承認を操作するユーザーはテナントでひとりとみなされる

承認コネクタを利用するユーザーは、テナント内で1ユーザーとみなされるのです。
承認依頼のメールの差出人である「Microsoft Flow <macconut@microsoft.com>」ということと一致しそうです。
※ 実際には、Dynamics 365の監査概要ビューの詳細で「Microsoft Flow」の情報を見るとテナントごとに上記とは違うアカウントが生成されていることが確認できます。

実際に実行したユーザーは違っても、52人以上がたまたま承認コネクタで承認依頼を要求するとDataverseへのひとりのシステムユーザーが同時実行要求数52の制限に引っかかるということになります。そして、冒頭のエラーメッセージが返され、フローはエラーで終了します。

同時に52人以上が承認コネクタを利用した要求を同時に行うことは、かなり稀な状況かと思います。
しかし、社員数が多い企業であり、かつ、同時に承認要求が出そうなイベントごとなどがあれば、頻度は稀だとしても発生しうるのかなと思いますので、注意が必要です。
※ 実際、発生したのです。。。

コメント