Power Automateを使ってDataverseの複数テーブルから値を一度に取得する方法

複数テーブルとタイトルにはつけましたが、今回はDataverseにある取引先担当者エンティティと取引先企業エンティティでの組み合わせです。

取引先担当者エンティティに存在しているメールアドレスで担当者を検索し、取引先企業エンティティの組織名を取得します。
以前の記事で書きましたが、取引先担当者エンティティにある取引先企業を取得すると数字の値が返ってきます(GUID)
Power Automateでこれを単純に実行する場合には、以下のようなフローになります。

  1. 行を一覧にするで、取引先担当者からメールアドレスで検索開始
  2. 検索結果を元にIDで行を取得するで、取引先企業エンティティから検索
  3. 2つの組み合わせで、通知等を実施する

フロー画像はこんな感じになりますね

他の人が見たときにわかりやすいのでこれでもいいのですが、ステップをなるべく少なくするために何かできないかなーと思いツイートしてみたらエクスパンドクエリでいけるのでは?
というアドバイスを頂いたので早速やってみました。

ということでdocsを見てみる
https://docs.microsoft.com/ja-jp/powerapps/developer/data-platform/webapi/retrieve-related-entities-query

うん。よくわかんない(笑)
ということで、XRMToolKitを使ってPower Automate用クエリを確認してみることに

高度な検索でFetchXMLを保存しまず中身を確認
その内容を元に、FetchXML Builderでクエリを組み立てます。

内容的にはこんな感じです。Top1000とかは確認用に設定していただけなのでお好みで。

View→Power Automate Parametersをクリックします

パラメータが表示されるので、Expand Queryの値を控えておきます

Power Automate側に戻りフローを以下のように変更します。

ただ結局JSON解析を入れて取得しないといけないので、2エンティティだけの場合にはあまり効果がないですね
もっと複数のエンティティを絡めた結果を取得したいという場合には効果を発揮しそうです

応答結果には以下のように入ってきます

"parentcustomerid_account": {
                    "@odata.type": "#Microsoft.Dynamics.CRM.account",
                    "@odata.id": "https://hoge.crm7.dynamics.com/api/data/v9.1/accounts(XXXXXXXXX-XXXXXXXX-a811-000d3a6fa0ae)",
                    "@odata.editLink": "accounts(XXXXXXXXX-XXXXXXXX-a811-000d3a6fa0ae)",
                    "name": "【TEST】テスト株式会社",
                    "[email protected]": "#Guid",
                    "accountid": "XXXXXXXXX-XXXXXXXX-a811-000d3a6fa0ae"
                },

 

 

 

 

 

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次