Microsoft Dynamics 365 との Azure 統合

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

Microsoft Dynamics 365 (オンラインおよび設置型) を Microsoft Azure プラットフォームに接続できます。これは、Dynamics 365 イベント実行パイプラインを Microsoft Azure サービス バス に結び付けて実現されます。 一度構成されると、この接続を使用して、現在の [Dynamics 365] 操作の一部として処理されたデータをサービス ハブに配置することができます。Dynamics 365 対応の Microsoft Azure サービス バス ソリューションは、サービス バスから Microsoft Dynamics 365 データを監視し、読み取りできます。

このように Microsoft Dynamics 365 と Microsoft Azure プラットフォームが接続されると、Dynamics 365 の実行時データを外部のクラウド ベースのビジネス (LOB) アプリケーションと通信するためのセキュリティで保護され信頼できるチャネルが提供されます。

このトピックの内容

接続の主な要素

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

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

ランタイム エラーの管理

接続の主な要素

Microsoft Dynamics 365 と Microsoft Azure サービス バスの接続を実装する主な要素は、以下で説明します。 次のセクションの図には、操作中のこれらの要素が表示されます。

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

    Microsoft Azure サービス バス に投稿されるメッセージ内に含まれるデータ コンテキストは、既定の .NET バイナリ形式に加え、 XML または JSON 形式である場合があります。 これによりクロスプラットフォームの相互運用が可能となります。ここでは Azure がホストする非 .NET クライアントがサービス バスから Dynamics 365 データを読み取ることができます。この機能は、CRM Online 2016 更新プログラム 1 および CRM 2016 Service Pack 1 (設置型) で導入されました。。

    詳細情報:上記の技術に関する詳細については、プラグインに渡されるデータ コンテキストについてイベント実行パイプライン、および Microsoft Azure ソリューション用リスナー アプリケーションの記述を参照してください。

  • プラグイン
    プラグインは、データ コンテキストを含むメッセージの Microsoft Azure サービス バス への投稿を開始するために使用される 2 つの方法の 1 つです。もう一つの方法はユーザー定義ワークフロー活動です。 Dynamics 365-Azure 接続機能によってサポートされるプラグイン、は 2 種類あります。標準 (OOB) および カスタムです。 いずれの場合も、システムのベスト パフォーマンスのため、非同期で実行するようプラグインを登録することをお勧めします。

    Azure 対応 OOB プラグインは Dynamics 365 に付属しており、SDK ダウンロードのプラグイン登録ツールを使用して登録することができます。 このプラグインは、Microsoft Dynamics 365 プラットフォームに対して完全信頼で実行されます。 イベント実行パイプラインでプラグイン「ステップ」を登録する必要があります。このステップでは、投稿の通知の実行および処理のためのプラグインをトリガーする、メッセージとエンティティの組合せを識別します。 実行するとき、プラグインは非同期サービスを通知し、サービス エンドポイント通知サービス (IServiceEndpointNotificationService) を介し、現在の要求データ コンテキストを Microsoft Azure サービス バス に投稿します。

    また、Azure 対応の独自のカスタム プラグインを記述することもできます。 カスタム プラグインは、部分信頼でサンドボックス内で実行します。 カスタム プラグインは、サービス エンドポイントの通知を介し、サービス バスに対するデータ コンテキストの投稿を開始することができます。 このサービスを呼び出すコードを追加すると、プラグインは Azure 対応になります。 プラブイン全般の詳細については、プラグインを記述するを参照してください。Azure 対応プラグインの詳細は、「Azure 対応のカスタム プラグインの記述」を参照してください。

  • ユーザー定義のワークフロー活動
    プラグインと同様にカスタム ワークフロー活動を記述して、サービス エンドポイントつ一サービス (IServiceEndpointNotificationService) を使用し、Microsoft Azure サービス バス に対する現在の要求メッセージ データの投稿を開始することができます。詳細:サンプル: Azure 対応のユーザー定義ワークフロー活動.

  • 非同期サービス
    サービス エンドポイント通知サービスにより通知されると、非同期サービスは、イベント実行パイプラインが現在処理している要求メッセージのデータ コンテキストの、Microsoft Azure サービス バス に対する投稿を処理します。 各ポストは非同期サービスのシステム ジョブによって実行されます。 ユーザーは、Microsoft Dynamics 365 Web アプリケーションの [システム ジョブ] ビューを使用して、各システム ジョブのステータスを表示することができます。

    詳細情報: 非同期サービスの詳細については、Microsoft Dynamics 365 での非同期サービスを参照してください。

  • Microsoft Azure のサービス バス
    このサービス バスは、要求メッセージ データのコンテキストを [Microsoft Dynamics 365] および [Microsoft Azure サービス バス] ソリューション リスナー アプリケーションの間で中継します。 またサービス バスは、投稿した Dynamics 365 データには承認済みのアプリケーションのみがアクセスできるよう、データ セキュリティを提供します。Microsoft Dynamics 365 がデータ コンテキストをサービス バスに投稿し、リスナー アプリケーションがそれを読む承認は、Microsoft Azure Active Directory アクセス制御サービス (ACS) または Microsoft Azure Shared Access Signature (SAS) で管理されます。

    注意

    SAS の承認について。この機能は、CRM Online 2016 更新プログラム 1 および CRM 2016 Service Pack 1 (設置型) で導入されました。 SAS はより新しい形態の認証で、ACS と比べより高いパフォーマンスを示します。

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

  • Microsoft Azure ソリューション
    Dynamics 365-Azure の接続機能が作動するためには、Microsoft Azure サービス バス ソリューション アカウントに少なくとも 1 つのソリューションがあり、そのソリューションに 1 つ以上のサービス エンドポイントが含まれる必要があります。 リレー エンドポイント契約では、Dynamics 365 対応のリスナー アプリケーションは、サービス バスでの Dynamics 365 の要求をエンドポイントでアクティブにリスニングする必要があります。 キュー エンドポイント契約では、リスナーはアクティブにリスニングする必要はありません。 リスナーを Dynamics 365 対応にするには、Microsoft.Xrm.Sdk アセンブリにリンクして、RemoteExecutionContext の型が定義されるようにします。詳細:Microsoft Azure ソリューション用リスナー アプリケーションの記述

    Microsoft Dynamics 365 はイベント データの Azure Event Hubs ソリューションへの送信をサポートします。この機能は、CRM Online 2016 更新プログラム 1 および CRM 2016 Service Pack 1 (設置型) で導入されました。。詳細情報: イベントのハブの詳細については、Azure イベント ハブ ソリューションの Dynamics 365 イベント データとの連携を参照してください。

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

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

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

Microsoft Dynamics CRM からサービス バスへのシナリオ

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

  1. リスナー アプリケーションが Microsoft Azure サービス バス ソリューション エンドポイントに登録され、Microsoft Dynamics 365 リモート実行コンテキストをサービス バスでアクティブなリスニングを開始します。

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

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

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

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

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

    Microsoft Dynamics 365 でサポートされる種類のキューは、永久キューと呼ばれます。 永久キューでは、コードで指定することができる、有効期間が長く有限のメッセージがあります。

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

  • 二方向
    双方向契約は一方向契約と似ていますが、リスナーからポストを開始したプラグインまたはユーザー定義ワークフロー活動に、文字列値が返される点で異なります。

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

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

  • イベント ハブ
    この契約の種類は Microsoft Azure イベント ハブ ソリューションに適用されます。

重要

これらの連絡先を使用する際は、[Microsoft AzureSDK] v1.7 以降を使用して、リスナー アプリケーションを記述する必要があります。

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

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

ランタイム エラーの管理

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

関連項目

Microsoft Dynamics 365 の Azure 拡張機能
Azure と Microsoft Dynamics 365 との統合の構成
ビジネス プロセスを拡張するためのプラグインを記述する
Microsoft Dynamics 365 での非同期サービス
AsyncOperation (システム ジョブ) エンティティ

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権