Dynamics CRM 2011 サンドボックス処理サービスとプラグインのデバッグ (オンライン)

みなさん、こんにちは。

今回は Dynamics CRM オンライン環境に登録してあるプラグインの
デバッグを紹介します。

プラグインをデバッグにするには、前回紹介したように、プラグインを
実行するプロセスに Visual Studio 2010 から直接アタッチする方法が
ありますが、オンライン環境ではサーバーのプロセスが見えません。
そこで SDK 5.0.5 では、オンライン環境でのデバッグを可能にする
新機能を提供しています。

プラグイン プロファイラー

現状、オンライン環境のプロセスに直接アタッチすることはできません。
そこでプラグイン実行時に Execute メソッドに渡される context 情報を
取得して、ローカルでバーチャルな環境を再構築することで、デバッグ
環境を提供します。

以下の手順で作業を行ってください。

デバッグの実施

1. SDK 5.0.5 の Plugin Registration Tool を起動します。

2. デバッグしたいプラグインが登録されているオンライン環境へ
接続します。プラグインが登録されていることを確認します。ここでは
以前作成したプラグインを利用します。

3. 接続完了後、Install Profiler ボタンをクリックします。このボタンを
クリックすると、1 つマネージドソリューションが組織に追加されます。
※完了まで時間がかかる場合があります。

image

4. 成功のメッセージが出たら、Internet Explorer で Dynamics CRM
オンラインに接続して、設定 | カスタマイズ | ソリューションを確認します。

image

5. Plugin Registration Tool に戻り、デバッグしたいプラグインを
展開します。

image

6. ステップが選択されていることを確認して、Profile ボタンをクリックします。

image

7. ステップに以下のように (Profiled) が付けば、準備完了です。

image

8. Dynamics CRM オンラインで、プラグインをトリガーする操作を行います。
このサンプルでは、取引先企業の作成がトリガーになっているため、
取引先企業を 1 件作成します。

9. 操作中に以下のエラーが発生します。

image

10. ログ ファイルのダウンロードを保存して、ログを任意の箇所に保存します。
OK をクリックしたら、Plugin Registration Tool に戻ります。

11. Plugin Registration Tool より、Debug ボタンをクリックします。

image

12. Debug Existing Plug-in の画面が出ます。まず Log Location で、
先ほど保存したログファイルを指定します。

image

13. 次に Assembly Location に、開発したプラグインの dll を指定します。

image

14. Visual Studio 2010 を開いて、プラグインのプロジェクトを開きます。

15. デバッグ | プロセスにアタッチメニューより、PluginRegistration.exe
にアタッチします。

image

16. 任意の箇所にブレークポイントを置きます。

17. Plugin Registration Tool の Debug Existing Plug-in 画面に戻り、
Start Plug-in Execution ボタンをクリックします。

image

このボタンをクリックすることで、ローカルに仮想環境を作成し、その中で
プラグインが実行されます。

18. 実行後、ブレークポイントにヒットしますので、そのままデバッグを継続します。

image

※注意※
デバッグは仮想環境に対して行われますが、この処理は実際のオンライン
環境に反映されます。例えばプラグインの中で、取引先担当者のレコードを
作成する場合、実際にレコードがオンライン環境に作成されます。

しかし、プラグインをトリガーした操作自体はエラーで停止しています。
今回の場合、取引先企業の作成がプラグインをトリガーしていますが、
取引先企業のレコードは作成されていません。その点十分ご理解ください。

※注意 2 ※
作成されたレコードの GUID を利用して、関連レコードを作成するような
プラグインでは、GUID の情報はデバッグ内で取得されますが、実際に
その GUID を持ったレコードはオンライン環境には存在していません。
よってプラグイン内で作成しようとしたレコードの作成も失敗します。

デバッグの解除

デバッグが完了したら、以下の手順でデバッグを解除します。

1. プロファイラーを有効にしたステップを選択します。

image

2. Stop Profiling ボタンをクリックします。表示が元に戻ります。

image

3. 全てのステップに対してこの作業を行った後、Uninstall Profiler ボタンを
クリックすることで、マネージドソリューションも削除されます。

まとめ

時に、特定の環境、特定のユーザー、特定のレコードでしか再現しない問題が
起こります。これまでオンライン環境の場合、有効なデバッグ手段がなく、
トレースを出力するなど、トラブルシューティングに工夫が必要でした。

今回の機能を利用することで、より柔軟なトラブルシューティングが行えます。
本番環境で試す前に、まず検証用のオンライン環境で試して頂くことを
強く推奨します。

- Dynamics CRM サポート 中村 憲一郎