【Dynamics CRM】【Tool】Plugin開発のための便利ツールCRM Snoop
Dynamics CRMでPluginを開発する際に、大事な要素としてデータコンテキスト(Input・OutputParameterないしPre・PostImage)があります。
■プラグインに渡されるデータ コンテキストについて
https://msdn.microsoft.com/ja-jp/library/gg309673.aspx
自分も以前の記事でいろいろと取り上げていました。
基本的には、このデータコンテキスト、Plugin登録ツールに付属しているprofilerを通じて、Debugベースで確認することが多いかと思いますが、あまり効率的に確認することができませんし、一部RetrieveMlutipleなどのメッセージは採取しにくい場面があります。
そんなデータコンテキストを簡単にしかも素早く確認できるフリーのツール「CRM Snoop」がありましたので、メモっておきたいと思います。
公式サイト
続きを読む【Dynamics CRM】インスタンスのバックアップと復元
Dynamics CRM Online 2016 Update1(8.1)にて追加された、待望の機能、
インスタンスのバックアップと復元の機能をようやく試すことができました。
(試せる環境が無かったので……。)
Dynamics CRM サポートチームのBlogでは紹介されていましたね。
Microsoft Dynamics CRM Online 2016 更新プログラム 1 新機能: オンラインバックアップと復元機能 – Japan Dynamics CRM Team Blog
そもそもDynamics CRM Onlineでは、この「バックアップと復元機能」がリリースされるまで、ユーザー任意でこのような操作を実施することができませんでした。
私自身一度もやったことはないのですが、Office365サービスリクエストから、復元したい、というリクエストを投げることで実施できたようです。
(Dynamics CRM オンプレミス版では、もともとSQL Serverの機能を使いながら、バックアップ・復元が可能でしたが)
それが今回のリリースで、ユーザー任意で、バックアップの取得および復元が可能になりました。
続きを読む【Dynamics CRM】【Azure】関連性検索(プレビュー機能)を試してみた
【Dynamics CRM】【Office365】Dynamics CRMとOffice365 Groupsの連携
最近Office365のGroups周りが熱い気がします。
Yammerと統合されたり
Plannerが加わったり
外部ユーザーを追加できたり
コラボレーションの幅がすごく広がってきたなぁという感じです。
というよりも、今まで個人に対してスコープがあたっていたものが、もっとチーム寄りなスコープに変わりつつあるのかなと。
Dynamics CRMでも途中からAccess Team Template、Project Serviceなどチームとして活動することをスコープとした機能が拡充されつつあるような感じがします。
そこで、今回はDynamics CRMが提供しているOffice365 Groupsとの連携機能に触れてみたいと思います。
続きを読む【Dynamics CRM】【Azure】Dynamics CRMのPluginでAzure ADの認証を通してみた
Dynamics CRMではWeb APIとして、Azure ADの認証を通ることでアクセスできるAPIが提供されていますが、ほかのOffice365アプリケーションでもいろいろと提供されています。
Office 365 API リファレンス
https://msdn.microsoft.com/ja-jp/office/office365/howto/rest-api-overview
ASP.NETやブラウザベースのJavaScriptを用いたアプリケーションであれば、ADALなどのライブラリが提供されていますが、そういったライブラリが単純に利用できないDynamics CRM OnlineのPluginではちょいと実装が面倒になります。
というわけで、実直にHTTP Requestを組んで、Dynamics CRMのPluginからAzure ADのTokenをもらってみようというのが、今回の記事になります。
今回のアプローチ
今回Azure ADのoAuth認証を通すためのグラント種別としてはClient Credentials、Plugin内部に保持したUserIDとPasswordを用いて、Azure ADのAccessTokenを取得します。
Pluginではバッチ処理のアプリケーションなどと同様に、UIが提供されませんので、Implicit FlowのようにAzure ADのサインイン画面をユーザーに提供することができません。
そのため、取れるアプローチとしては、ClientID・UserID・Pawwrodを用いたgrant_type=password
もしくはClientID・ClientSecretを用いたgrant_type=client_credentialsになります。
grant_type=client_credentialsは試行錯誤中のため、保留。(認証が通らない。。。resourceが無効?)
いったん、アプローチがわかりやすい、grant_type=passwordを実装してみました。
ただ、まあ、やってみたものの、Plugin(ないしDynamics CRM内部)にIDとパスワードを保持しなければいけない側面がありますので、ご利用は計画的にする必要があるかと思います。
事前準備
あらかじめAzure ADのアプリケーション登録を行って、Client IDとresourceへのアクセス許可を行っておきましょう。 アプリケーションの種類は「ネイティブ クライアント アプリケーション」です。
今回はSharePoint連携を想定して、アプリケーションのアクセス許可を構成してみました。
コード
今回はTokenの取得だけ。
とりあえずInvalidPluginExecutionExceptionで画面に表示させています。