Dynamics CRM 2011では、 Azure 統合の一つとして、 CRM非同期サービスからAzure AppFabric Service Bus にポストされたプラグインのメッセージを処理するプログラムを作成できます。SDKによると、サービスバスに非同期サービス経由でメッセージをポストする既定のAzure対応プラグインはフルトラスト環境で動作しているそうです。Azure対応のカスタムプラグインを作成した場合、そのプラグインは部分信頼で実行されます。AppFabric リスナーアプリケーションを作成することで、外部連携プログラムを作成することができます。リスナーアプリケーションは非同期で呼び出しが行われるので注意してください。今回はその手順の覚書を作成します。

動作確認環境は次の通りです

  • Dynamics CRM 2011 Online
  • Windows Azure  
  • 開発環境:Visual Studio 2010 Professional, Azure SDK 1.5, AppFabric SDK 1.5 , Dynamics CRM 2011 SDK.

今回の記事を記載するときに参考にしたURLは次の通りです。翻訳があったので、英語と日本語の両方のURLを記載します。

Windows Azure ソリューション用のリスナーの記述
http://technet.microsoft.com/ja-jp/library/gg309615.aspx
Write a Listener for a Windows Azure Solution
http://technet.microsoft.com/en-us/library/gg309615.aspx
Windows Azure と Microsoft Dynamics CRM との統合の構成
http://technet.microsoft.com/ja-jp/library/gg309340.aspx
Configure Windows Azure Integration with Microsoft Dynamics CRM
http://technet.microsoft.com/en-us/library/gg309340.aspx

前提として、 CRM Online と Windows Azure は使用できる環境であることとします。

本記事ではサービスバスの作成とサービスエンドポイントの構成までを行います。サンプルプログラムの作成と動作確認は[Dynamics CRM 2011]Dynamics CRM 2011と連携する AppFabric サービスバス リスナーアプリケーションを作るその2 で記載しています。

1. AppFabric Service Bus の設定

Dynamics CRM Online と Azure を統合するためにAppFabric サービスバスの作成を行います。Windows Azure 管理ポータルにログインします。下図のようにサービスバス、アクセス制御、キャッシュ ボタンをクリックします。

サービスバスを選択します。リボンの新規作成ボタンをクリックします。

サービス名前空間の作成画面が表示されます。利用可能なサービスに サービスバスがチェックされていることを確認します。全般プロパティの名前空間に任意の名前空間の名前を指定します。ここで入力した名前空間は、 Plugin Registration Tool で行うサービスエンドポイントの作成で使用します。国/地域は もっとも近いと思われる場所を指定します。サブスクリプションは使用するサブスクリプションを選択します。入力したら名前空間の作成ボタンをクリックします。

名前空間の作成が成功すると、下図のようにサービスバスの情報が表示されるようになります。

以上で、サービスバスの作成が完了です。

2. サービスエンドポイント作成用の証明書のダウンロード

Dynamics CRM Online にログインします。ナビゲーションの設定のカスタマイズメニューをクリックします。カスタマイズ画面の開発者リソースリンクをクリックします。下図のように組織の情報に証明書のダウンロードリンクがあるので、クリックして証明書をダウンロードします。リンク上の発行者名も サービスエンドポイント作成時に使用します。アジアの場合は、crm5.dynamics.com になっています。

3. サービスエンドポイントとプラグインステップの設定

PluginRegistrationToolを使用してサービスエンドポイントの作成とAzure アクセス制御サービスの設定をします。PluginRegistrationToolを使用したAzure対応プラグインの登録の詳細は次のURLを参照してください。

チュートリアル: プラグイン登録ツールを使用した Azure 対応プラグインの登録
http://msdn.microsoft.com/ja-jp/library/gg328524.aspx

PluginRegistrationTool を起動して、 CRM Online の組織のプラグイン設定情報を表示します。Plugin Registration Tool の使い方は[Dynamics CRM 2011]Dynamics CRM 2011 用の PluginRegistrationTool を使ってプラグインを登録してみる を参照してください。タブ内のメニューのRegister → Register New Service Endpoint をクリックします。

Service Endpoint Details 画面が憑依jされますNameにはサービスエンドポイントを表す名前を入力します。Description にはオプションで説明を入力します。Solution Namespace には、 サービスバスを作成するときに指定した名前空間を設定します。Pathはサービスエンドポイントのパスを任意の名前で指定します。ここで指定したパス名は 後で作成する リスナーアプリケーションで使用します。 Contract は OneWay を指定します。Two-Way や Queue 等指定できますが、詳細はSDKを参照してください。Claim は None のままにします。入力が終わったら、 Save & Configure ACS ボタンをクリックします。

ACS Configuration 画面が表示されます。Management Key には、サービスバスの画面の右側のプロパティの下(次の次の図の赤枠参照) の既定のキーの表示ボタンで表示される既定のキーを入力します。 Certificate File は先ほどCRM Online の開発者リソースのページでダウンロードした証明書ファイルのパスを設定します。Issuer Name は証明書の発行者名を指定します。CRM Onlineの場合は証明書のダウンロードリンクの上部に記載されていた名前です。CRM Onlineの組織をアジアで作成した場合は、 crm5.dynamics.com になります。

入力後、 Configure ACS ボタンをクリックします。下部分のテキストボックスに処理結果のログが出力されるので、エラーが発生していないことを確認して Close ボタンをクリックします。

Service Endpoint Details 画面に戻ります。 Save & Verify ボタンをクリックして構成に誤りがないことを確認します。

Verify Authentication 画面が表示されます。検証成功を確認して Close ボタンをクリックします。再び Save Endpoint Details 画面に遷移するため、今度は Save ボタンをクリックして画面を閉じます。

サービスエンドポイントの登録が完了しました。次に、ステップの登録を行います。通常のプラグインのステップの登録とほぼ同じですが、登録したステップは非同期、Post-Operation で動作します。作成した Service Endpoint を右クリック→Register New Step をクリックします。

下図のように Register New Step 画面が表示されます。下側の部分を参照してください。イベントパイプラインは Post-Operation 固定、 実行モードは Asynchronous 固定になっています。今回は取引先企業を作成したときにサービスバスへメッセージがポストされるように登録します。 入力後 Register New Step ボタンをクリックします。

以上でサービスエンドポイントの設定とテスト用のステップの設定は完了です。トリガーとなるイベントが発生したときに、Dynamics CRM既定で提供されるAzure対応のプラグインから非同期サービスのシステムジョブ経由でサービスバスにプラグインのメッセージがポストされるようになります。

ちなみに、高度な検索でサービスエンドポイントエンティティを検索すると、登録されたサービスエンドポイントの情報を確認できます。

リスナーアプリケーションを作成する準備ができました。続きのサンプルアプリケーションの作成と動作確認は、[Dynamics CRM 2011]Dynamics CRM 2011と連携する AppFabric サービスバス リスナーアプリケーションを作るその2 で記載しています。