今回はD365BC用のPower Automateコネクタに用意されたテンプレートを使って実際にクラウドフローを作って動かしてみます。
1. 準備
BCの環境を用意します。バージョンはv20.1で新規作成しました。
Power Platformの環境を一つ用意します。Trialで構わないのでEnvironmentを作成します。
2. テンプレートの照会
Power Automateの環境を開き、作成したEnvironmentに切り替え、コネクタを確認します。
「Central」で検索すると早いです。2つヒットし、1つはSaaS用、もう一つはOnPremise用です。マウスオーバーしてみるとOnPremiseかどうかが判別できます。SaaSの方をクリックして開きます。
BCのコネクタです。前回の記事で書いた通り、プレビューが取れています。
下の方にスクロールするとテンプレートが表示されます。2022/5/29時点で16個のテンプレートが確認できました。Microsoft作成のテンプレートは4年前とほぼ変わっていません。コミュニティーや3rdパーティと思われるテンプレートが増えています。今回は左上の「Request approval for Dynamics 365 Business Central purchase order」を使います。
3. テンプレートを使ってクラウドフローを作成
テンプレートをクリックすると以下の画面が表示されます。D365BCのコネクタはプレミアムなので、プレミアムのライセンスを持っていない場合はこのようにトライアルを案内されます。フリートライアルで十分試せますので、「Start Trial」を選択してトライアルを開始します。
このテンプレートで使用するサービスのConnection(接続)が3つ表示されます。BCとOutlookとApprovalsです。初回はすべて接続が確立されていないのでSign inを促されます。順に接続を確立します。まずはBCにサインイン。
すでにBCにサインインしていれば認証画面が立ち上がることなくサインインします。BCにサインインしていない場合は認証画面が起動するので認証を通してサインインしてください。
Approvalも。(Sign inでなくてCreate。気にせず接続を確立する。)
確立されました。
最後にOutlook。
サインイン完了。
すべてのサービスに接続が確立したのでContinueをクリックして続行。
テンプレートが展開されました。展開されたコネクタがv2かv3か分からないのですが「?」アイコンをクリックすると、、
v3であることが確認できます。
足りない設定を埋めるため、Flow Checkerでチェックします。
が、、あまり有益な情報は得られません。エラーはなし、ワーニングが1件。
まさか、このまま保存して実行できるのか?(そんな筈はない!)と思いながら「Save」をクリックして保存すると、、
エラーが表示されました。(なぜか安心する。)カンパニー名が指定されていないとのこと。まあ、それはそうでしょう。
BCの画面でURLからEnvironmentとCompanyを取得。
先のエラーではCompany名が無いというエラーでしたが、Environment名とCompany名はセットなので、セットで指定します。そして保存。
またエラーが出ましたのでエラーをつぶします。(これの繰り返し)
今度は「API Category」が指定されていないというエラーです。
Environment名とCompany名は先と同様に指定し、API Categoryの選択肢をプルダウンで表示させます。いくつか選択肢がありますが、どれを選べばよいか分からないので(いや、Docsちゃんと読めばわかるのですが)一番上の選択肢を選びます。
Flow Checkerを実行するとエラーは出ません。一見するとよさそうです。
が、結論としてはダメです。試しにAPI Categoryを「Microsoft/admin/beta」にした状態でTable Nameをいったんブランクにし、プルダウンで選択肢を表示させるとTable Nameの選択肢にはテンプレートで指定されていた「workflowPurchaseDocuments」が表示されません。
他のAPIカテゴリを順に試していきます。2つ目の「Microsoft/automation/v2.0」を選択します。が、これも Table Nameの選択肢にはテンプレートで指定されていた「workflowPurchaseDocuments」が表示されません。
3番目の選択肢にも「workflowPurchaseDocuments」が表示されません。
4番目の選択肢にも「workflowPurchaseDocuments」が表示されません。
5番目の選択肢にも「workflowPurchaseDocuments」が表示されません。
6番目の選択肢にも「workflowPurchaseDocuments」が表示されません。
最後の「workflowEndpoints」をAPI Categoryに指定するとTable Nameに「sorkflowPurchaseDocuments」が選択肢として表示されました。
ここに出てくるTableNameの選択肢、どこかで見たことあると思ったらTriggerAcionのTargetObjectでした。(まあ、一致するのは納得です。)
API Categoryが解決したので、続けて他のエラーを解消します。Approvalコネクタで「Assigned to」が指定されていないエラーが出ています。自分自身を指定してみます。実業務であれば適切な承認者を指定するべきですが、検証なのでまずは自分自身で試しています。
次のエラーもAPI Categoryです。
一通りの選択肢を試した結果、先ほどと同じ「workflowEndpoint」をAPI Categoryに選べばよいことが分かります。同じAPI Categoryでもコネクタのアクションの種類によってAction nameの選択肢が変わることに注意です。
次のエラーはCompany NameとAPI Categoryです。
これまでと同様にエラーを解消します。
ようやくエラーがなくなりました!
念のため、ほかのコネクタも見ておきましょう。
特に問題なさそうです。
このワーニングが気になりますが、、説明を読む限り初回のみ発生する「Provisioning」処理の警告のようなのでこのまま進めます。
4. テストする
作成したクラウドフローをテストしてみましょう。右上の「Test」をクリックします。
初回なので「Manually」を選択してTest。
フローがトリガーの待機状態に入ります。
BCの発注伝票を適当に選び、ステータスがオープンであることを確認し、承認要求を送信。
すると、ステータスが承認保留状態になります。
先ほど待機状態でしたが、承認まで処理が進みます
今回、承認者は自分にしたので自分で承認します。別タブを開いて、、
Approvalsから承認。
承認します。
承認されました。
が、、エラーになります。ユーザーの承認権限が足りないので「Approval User Setup」の設定を確認せよ、とのこと。
Approval User Setupを開きます。
レコードが一つもありません。これが原因です。
自分自身を登録し、ついでにApproval Adminにしておきます。
いったん承認要求をキャンセルして、、
改めて承認依頼。
先ほどのテスト実行の結果、このクラウドフローは実行待機状態に入っているため、BCで承認要求送信すると実行されます。
承認待ち状態になっています。
先ほどはPower Automateの画面から承認しましたが、メールからも承認できます。
まだエラーが取れません。。
これは、Power Automateのエラーログを見てもわからず、BCの仕様を知らないと絶対に解消できないエラーです。実はApprover User Setup画面でApprover IDがブランクであることが原因です。
選択しようとすると分かりますが、自分自身は指定できません。なので、他のBCユーザーが1つは必要になります。
今回は別のユーザーとして「user01」を作りました。
自分のApprover IDにuser01を指定します。
さらに、これもBCの仕様を知らないと絶対たどり着けないのですが、自分自身のApprover IDに指定したユーザーもApproval User Setupにレコード追加し、かつApprover IDを指定する必要があります。(結構試行錯誤しましたが、長くなるので途中経過は割愛します。)
改めて、承認要求送信。
クラウドフローが実行されます。
承認待機状態。
先ほど同様、メールで承認。
最後までエラー無く通りました!
BCの発注伝票を確認するとリリースされています。
メールでも承認完了が通知されています。
5. まとめ
・テンプレートを使うと簡単に(?)発注の承認フローを作成できる。
・EnvironmentとCompanyは自分で指定する。(テンプレートには含まれない)
・API Categoryも自分で指定する必要あり。分からなければ片っ端から試し、テンプレートで指定されているTable Nameと整合するAPI Categoryを選ぶ。
・Approval User Setupを設定しておく必要あり。Approver IDが必要。Approver IDに指定したユーザーにもApprover IDが必要。
・BC画面で承認要求送信することでクラウドフローが起動される。
APIカテゴリはテンプレートで最初から指定できるだろう…と思いますが、指定されていなかったことで色々と試行錯誤し、理解が深まりました。片っ端から試す、というのは初期の理解の方法としては有効ですが、本番運用オブジェクトとしてお客様に提供するには心もとないので、最終的にはDocsなどを紐解いて理解することが必要です。