Azure 統合

Microsoft Dataverse は、Azureとの統合に対応しています。 開発者は Dataverse にプラグインを登録し、実行コンテキストと呼ばれるランタイム メッセージデータを、クラウド内の 1 つ以上の Azure ソリューションに渡すことができます。 Azureは、ランタイム コンテキストを外部の基幹業務 (LOB) アプリケーションに通信するための数少ないサポート対象ソリューションの1つであるため、この機能は特に重要です。

Azure Service Bus は Dataverse ランタイムデータと外部クラウドベースの基幹業務 (LOB) アプリケーションの間で、安全かつ信頼性の高い通信チャネルを提供します。 この機能が特に役立つのは、異種 Dataverse システムまたは他の Dataverse サーバーと、ビジネス データ変更との同期を保つ場合です。

接続の主な要素

Dataverse とAzure Service Bus 間の接続を実装する主な要素については後述します。 次のセクションの図には、操作中のこれらの要素が表示されます。

データのコンテキスト

データ コンテキストには、現在の Dataverse 操作の一部として処理されるビジネス データが含まれます。 この処理は、ユーザー、ワークフロー、またはアプリケーションによって特定の操作を実行する要求が行われたときに開始されました。 Dataverse データのコンテキストは、現在処理中の特定の要求およびテーブルの組合せで実行される、イベント パイプラインに登録されたプラグインまたはカスタム ワークフロー活動に渡されます。 データ コンテキストのタイプは、イベント実行パイプラインに沿って渡されるときと、サービス バスに投稿されるときです。 IPluginExecutionContext RemoteExecutionContext

Azure Service Bus に投稿されるメッセージ内に含まれるデータ コンテキストは、既定の .NET バイナリ形式に加え、 XML または JSON 形式である場合があります。 このようなデータ形式のサポートにより、Azureでホストされる非 .NETクライアントがサービス バスからデータを読み取ることができるクロスプラットフォームの相互運用性が実現します。 Dataverse

重要

HTTP ペイロード全体のサイズが 192Kb を超えると、次のプロパティが削除されます:

ParentContextInputParametersPreEntityImagesPostEntityImages

一部の操作では、次のプロパティは含まれません。

  • 追加データが削除された後にペイロードのサイズが 192kb を超える場合、追加の MessageMaxSizeExceeded プロパティは、システムが送信した BrokeredMessage に追加されます。 これはデータの一部が切捨てられたことを示します。
  • 追加データが削除された後にペイロードのサイズが 192Kb を超える場合、エラーが発生し、メッセージは送信されません。

前述のテクノロジーの詳細については、次を参照してください。

プラグイン

プラグインは、Azure Service Bus へのデータ コンテキストを含むメッセージの投稿を開始するのに使用される 2 つのメソッドのうちの 1 つです。他のメソッドはユーザー定義のワークフロー活動です。 Dataverse-Azure の接続機能が対応しているプラグインは 2 種類あります: アウトオブボックス (OOB) と カスタム です。 どちらの場合でも、システム パフォーマンスを最適にするために、プラグインを非同期で実行するように登録することをお勧めします。

Azure対応の既定の (OOB) プラグインが利用可能であり、プラグイン登録ツールを使用してサービス エンドポイント を登録することで登録できます。 Dataverse イベント実行パイプラインにプラグインの「ステップ」を登録し、プラグインが実行して投稿通知を行うトリガーとなるメッセージとテーブルの組み合わせを特定する必要があります。 実行するとき、プラグインは非同期サービスを通知し、サービス エンドポイント通知サービス (IServiceEndpointNotificationService) を介し、現在の要求データ コンテキストを Azure Service Bus に投稿します。

また、“Azure 対応“ の独自のカスタム プラグインを作成することもできます。 カスタム プラグインはサンドボックス内で実行されます。 カスタム プラグインは、サービス エンドポイントの通知を介し、サービス バスに対するデータ コンテキストの投稿を開始することができます。 このサービスを呼び出すコードを追加すると、プラグインは “Azure 対応“になります。

プラブイン全般の詳細については、 プラグインの記述を参照してください。 Azure 対応プラグインの詳細については、Azure 対応のカスタム プラグインの記述 を参照してください。

ユーザー定義のワークフロー活動

プラグインと同様に、ユーザー定義のワークフロー活動を記述して、サービス エンドポイント通知サービスを使用し、Azure Service Bus に対する現在の要求メッセージ データの投稿を開始することができます。 詳細: ワークフロー拡張

非同期サービス

サービス エンドポイント通知サービスにより通知されると、非同期サービスは、イベント実行パイプラインが現在処理している要求メッセージのデータ コンテキストの、Azure Service Bus に対する投稿を処理します。 各ポストは非同期サービスのシステム ジョブによって実行されます。 ユーザーは、 Power Apps Web アプリケーションのシステム ジョブビューを使用して、各システム ジョブのステータスを表示することができます。 Webアプリケーションで、 詳細設定 を選択して、従来のDynamics 365インターフェイスを表示します。 次に、選択 設定 > システムジョブ

非同期サービスの詳細については、「 非同期サービス」を参照してください。

Microsoft Azure サービス バス

サービスバスは Dataverse とAzure サービス バス ソリューション リスナー アプリケーションの間で要求されたメッセージのデータ コンテキストを中継します。 サービス バスはデータ セキュリティも提供し、承認されたアプリケーションのみが投稿されたデータにアクセスできるようにします。 Dataverse データ コンテキストをサービス バスに投稿し、リスナー アプリケーションがそれを読み取るための承認は、Azure Shared Access Signatures (SAS) によって管理されます。 Dataverse

サービス バスの詳細については、サービス バス を参照してください。 サービス バス認証の詳細については、 サービス バスの認証および承認 を参照してください。

Microsoft Azure ソリューション

Dataverse と Azure の接続が機能するためには、Azure Service Bus ソリューションのアカウントに少なくともひとつのソリューションが含まれている必要があり、そのソリューションには 1 つ以上のサービスエンドポイントが含まれてる必要があります。 リレー エンドポイント契約の場合、“Dataverse-aware”を持つリスナー アプリケーションが、サービスバス上の Dataverse リクエストをエンドポイント上でアクティブにリッスンする必要があります。 キュー エンドポイント契約では、リスナーはアクティブにリスニングする必要はありません。 リスナーは、RemoteExecutionContext 型が定義されるように Microsoft.Xrm.Sdk アセンブリにリンクすることで、Dataverse に対応したものになります。 詳細については次を参照ください: Microsoft Azure ソリューションに向けたリスナーを記述する

Dataverse は Azure イベント ハブ ソリューションへのエベントデータの送信に対応しています。 Event Hubsの詳細については、「 Azure Event Hubsソリューションでのイベント データの操作」を参照してください。

Dataverse をサービス バス シナリオへ

ここでは、これまでに説明した接続コンポーネントを実装するシナリオについて説明します。 前提条件として、SAS はサポートされている発行者として Dataverse を認識するように構成されており、Azure Service Bus ソリューションは、Dataverse がリスナーのいるエンドポイントに投稿できるようにルールで構成されています。

次の図は、シナリオを構成する物理要素を示しています。

Dynamics 365 からサービス バスへのシナリオ。

この図に示すイベントの順序は次のとおりです。

  1. リスナー アプリケーションはAzure Service Busソリューション エンドポイント に登録され、Service Bus上のリモート実行コンテキストのアクティブなリッスンを開始します。 Dataverse

  2. ユーザーは、登録済みの OOB プラグインまたはカスタム Azure 対応プラグインの実行をトリガーとする Dataverse での操作を実行します。 プラグインが、非同期サービス システム ジョブを介して、現在の要求データ コンテキストのサービス バスへのポストを開始します。

  3. Dataverse によってポストされたクレームが認証されます。 続いてサービス バスは、リモート実行コンテキストをリスナーに渡します。 リスナーはコンテキスト情報を処理し、その情報に対してビジネス関連タスクを実行します。 サービス バスから非同期サービスにポストの成功が通知され、関連するシステム ジョブが完了ステータスに設定されます。

Dataverse と Azure ソリューションの契約の確立

ソリューションのエンドポイントごとに、サービス バス上でのリモート実行コンテキストの「メッセージ」の処理と、そのエンドポイントで使用する必要があるセキュリティを定義する契約を構成します。 サービス バスのメッセージは、ここでサポートされているコントラクトのひとつを使ってエンドポイントで受信されます。

キュー

キュー契約は、クラウドでメッセージ キューを提供します。 キュー契約では、リスナーはエンドポイントでメッセージをアクティブにリスニングする必要はありません。 キューには破壊的な読み取りと非破壊的な読み取りがあります。 破壊読み取りでは、キューにあるメッセージが読み取られ、メッセージが削除されます。 非破壊読み取りでは、キューからメッセージは削除されません。

Dataverse がサポートするキューのタイプは、永続キューと呼ばれます。 永久キューでは、コードで指定することができる、有効期間が長く有限のメッセージがあります。

一方向

一方向契約ではアクティブなリスナーが必要です。 エンドポイント にアクティブなリスナーがない場合、Service Busへの投稿は失敗します。 要求を投稿する非同期システム ジョブが最終的に中止され、そのステータスが "失敗" にセットされるまで、Dataverse は指数関数的に長い期間、投稿を再試行します。

二方向

双方向契約は、リスナーからポストを開始した Dataverse プラグインやカスタム ワークフローのアクティビティに文字列の値を返すことができる点を除き、一方向契約と共通しています。

停止

REST 契約は REST エンドポイントでの二方向契約に似ています。

トピック

一つ以上のリスナーがトピックをサブスクライブしてトピックからメッセージを受信することができること以外は、キューに似ています。

Event Hubs

この契約タイプは、Azure Event Hubsソリューションに適用されます。

契約の構成では、契約で使用されるセキュリティの種類を指定します。 契約は、Transport Layer Security (TLS) または Secure Sockets Layer (SSL) (https) を使用するトランスポート セキュリティを使用できます。

クレームの認証は、サービス バスに対するセキュリティで保護されたアクセスに使用されます。 サービス バスへの認証で使用されるクレームは、 Dataverse 内で生成され、 Dataverse 構成データベースに指定されている AppFabricIssuer 証明書が署名します。

ランタイム エラーの管理

サービス バスへのポストが試行された後でエラーが発生した場合は、Web アプリケーションの関連するシステム ジョブのステータスを調べて、エラーの詳細を確認します。 サービス バスが停止しているか、リスナーまたはエンドポイントが使用できない場合、 Dataverse で処理されている現在のメッセージはバスにポストされません。 非同期サービスはメッセージのポスト試行を継続しますが、最初は頻繁に試行されるものの、その後は試行間隔が急激に長くなります。 内部の Dataverse エラーの場合、メッセージのポストは試行されません。 外部のサービス バスまたはネットワークのエラーの場合、関連するシステム ジョブは「待機」状態になります。

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。