カスタムビジネスイベント作成とPowerAutomateでの使い方

Part 1:カスタムビジネスイベントとは?


📌 カスタムビジネスイベントとは?

**「特定の操作が行われたときに、自動で外部システム(例:Power Automate)へ情報を送る仕組み」**です。


📌 なぜ必要?

標準では対応できないような、たとえば…

  • 「販売伝票の出荷が完了した瞬間にTeamsへ通知したい」
  • 「受注ステータスが変わったら外部サービスに伝えたい」

といった、“特定業務の瞬間”をトリガーにして外部と連携したいときに必要になります。


📌 どんな仕組みで動くの?

📌 ユーザーが把握すべき「3つの構成要素」

構成要素説明
トリガーD365で「いつ」イベントを発火するか(例:出荷伝票が転記されたとき)
送信データ外部に送る情報(例:受注番号・ステータス)
連携先(Power Automate)実際に通知や処理を行うサービス(Power Automateで定義)

Part 2:カスタムビジネスイベントをPower Automateで利用する方法


🔹 Step 1:開発者がD365FOにカスタムビジネスイベントを用意

この部分は開発者の仕事ですが、依頼するときは以下のように伝えてください。

「○○ボタンが押されたときに、販売伝票のステータスや注文番号などを含むイベントを外部に通知できるようにしてほしい」

開発者は、以下の作業を行います:

  • ビジネスイベントの 契約クラス(DataContract) を作成
  • 発火タイミングに BusinessEvents::writeBusinessEvent() を組み込む
  • カタログに登録して アクティブ化できるようにする

契約クラス(DataContract)とは

**「外部システムに渡すデータをどのような形で送るかを決めた設計書」**


なぜ「契約」と呼ばれるのか?

  • これは「外部システムとの約束(=契約)」を意味します。
  • たとえば、Power Automate に対して「こういう名前のデータを、この形式で送りますね」と、あらかじめ約束をしておく必要があります。
  • この“送る内容と形式”を定めたクラスが、**DataContract(契約クラス)**です。

Dynamics 365 FO における具体的な役割

項目内容
何のために?ビジネスイベントなどで外部に送るデータの構造を定義する
誰に対して?Power Automate、Webhook、Azure Service Bus など
何を含む?例えば:販売ID、請求額、顧客名、ステータスなど
作り方X++で DataContract 属性を付けてクラスとして記述

📦 例:販売注文の出荷完了を通知したい

Power Automateで「注文が出荷されたらTeamsに通知したい」
そのとき、送るべき情報例:

  • 注文番号:SO12345
  • 出荷日:2024-06-10
  • ステータス:Delivered

こうした「データの中身」と「項目名・形式」をまとめて定義しているのが 契約クラス(DataContract)


🔹 Step 2:Dynamics 365 FO × Power Automate

例)ビジネスイベント(購買要求)が発火したときに特定のフィールド値(ステータスなど)をEmailで通知

※参照

1. ビジネスイベントカタログタブで使いたいビジネスイベント選択>スキーマのダウンロード)

① Business Event Catalogで作成したイベントを探す

②発見したイベントを選択

③スキーマをダウンロードしておく(後で使う)

2.Power Automate でフロー作成

When a Business Event occursを探して、指定

必要項目を入力(Instance, category,Business event, legal entity)

Parse Jasonを指定し、ダウンロードしたスキーマを張り付ける

Lists Items presents in tableを選択(テーブルのデータ行取得)

テーブルの検索クエリ条件を指定

Emailを設定

Save.

これでフロー完成です。

③Power Automateで作成した内容をFOで設定します。

再読み込みするとPower Automateで作成したフローがActive Business eventに表示されます。

エンドポイントも自動で登録されています。

設定が完了すると、購買要求が作成された後PowerAutomateのフローが発火し、Emailに通知されます。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です