Dynamics 365(Dynamics CRM) レコード共有先一覧の出力
みなさん、こんにちは。
今回は、前回に続きお悩み解決の第二弾です。
Dynamics 365(CRM)で各レコードをユーザーやチームに共有されている方も多いかと思います。
レコードを共有している場合、どのレコードを誰に(または、どのチーム)に共有されているのか一覧で確認できれば良いなと思われている方も多くいることと思います。
今回は、このお悩みを簡単に解決する方法を紹介したいと思います。
標準機能でのレコード共有先の確認方法
Dynamics 365の標準機能でレコードの共有先を確認する場合、コマンドバーの[共有]ボタンをクリックし、共有ダイアログから共有先を確認します。
しかし、複数レコードを選択し、[共有]ボタンをクリックすると次のような画面が表示され共有先が分からないのです。
このように、Dynamics 365の標準機能では一括で共有先の確認ができません。
Power BIでのレコード共有先の出力方法
Power BIをDynamics 365に接続し、次のエンティティの情報を取得します。
- principalobjectaccessset
- 共有先を確認したいレコードのエンティティ
(account、contact、incident、opportunityなど) - 共有先のエンティティ
(systemuser、team)
principalobjectaccessは、各レコードの共有情報が格納されているエンティティです。
(リペアレントによる暗黙の共有の情報も格納されています。)
このエンティティと共有先を確認したいレコードのエンティティを次のように関連付けた状態で取得します。
各エンティティの紐づけのキーは、次の通りです。
- principalobjectaccesssetのobjectidとaccountsのaccountid
- principalobjectaccesssetのprincipalidとsystemusersのsystemuserid
- principalobjectaccesssetのprincipalidとteamsのteamid
なお、同一レコードが複数ユーザー/チームに共有されるため、principalobjectaccesssetと他エンティティとの関連はN:1を設定します。
最後にエンティティ名、取引先企業名、ユーザー名、アカウントID、チーム名など出力したい項目を配置したテーブルを定義します。
次のようにレコードが共有されているユーザー/チームの一覧をノンコーディングで出力することができます。
今回は、取引先企業エンティティのみを対象としましたが、もちろん他のエンティティでも可能です。
共有の一覧を表示したいという要望は、たまにありますが開発が必要と回答されるケースも多いようです。
しかし、このようにエンティティの構成を理解し、Power BIを使用することでノンコーディングで用意に出力できるので、ぜひ試していただければと思います。