Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

【Dynamics CRM】【Tool】Plugin開発のための便利ツールCRM Snoop

Dynamics CRMでPluginを開発する際に、大事な要素としてデータコンテキスト(Input・OutputParameterないしPre・PostImage)があります。

プラグインに渡されるデータ コンテキストについて

https://msdn.microsoft.com/ja-jp/library/gg309673.aspx

自分も以前の記事でいろいろと取り上げていました。

kageura.hatenadiary.jp

基本的には、このデータコンテキスト、Plugin登録ツールに付属しているprofilerを通じて、Debugベースで確認することが多いかと思いますが、あまり効率的に確認することができませんし、一部RetrieveMlutipleなどのメッセージは採取しにくい場面があります。

そんなデータコンテキストを簡単にしかも素早く確認できるフリーのツール「CRM Snoop」がありましたので、メモっておきたいと思います。

公式サイト

Sonoma Partners: 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プレビュー機能で面白そうな機能「関連性検索」が出ていましたので、試してみました。

関連性検索?

あまり聞きなれない感じですが、関連性検索とは以下のようなものらしいです。

関連性検索は、複数のエンティティにまたがるすばやく包括的な結果を、関連性の順に並び替えられた単一のリストに表示します。CRM​​ 検索パフォーマンスを促進するため、Microsoft Azure を装備した Microsoft Dynamics CRM の外部の専用の検索サービスを使用します。

引用元:https://www.microsoft.com/ja-jp/dynamics/crm-customer-center/use-relevance-search-for-faster-comprehensive-search-results.aspx

よくわからないですね。

続きを読む

【Dynamics CRM】【Office365】Dynamics CRMとOffice365 Groupsの連携

最近Office365のGroups周りが熱い気がします。

Yammerと統合されたり

blogs.office.com

Plannerが加わったり

codezine.jp

外部ユーザーを追加できたり

idea.tostring.jp

コラボレーションの幅がすごく広がってきたなぁという感じです。

というよりも、今まで個人に対してスコープがあたっていたものが、もっとチーム寄りなスコープに変わりつつあるのかなと。

Dynamics CRMでも途中からAccess Team Template、Project Serviceなどチームとして活動することをスコープとした機能が拡充されつつあるような感じがします。

そこで、今回はDynamics CRMが提供しているOffice365 Groupsとの連携機能に触れてみたいと思います。

続きを読む

【Dynamics CRM】実稼働・サンドボックスインスタンスの切り替え

Dynamics CRM Onlineでは本番環境として利用する実稼働インスタンス

開発や検証用環境として利用するサンドボックスインスタンスが提供されています。

そのインスタンスの種類を切り替えることができるアップデートが地味に提供されていましたので、やってみたいと思います。

インスタンスの切り替え

https://technet.microsoft.com/ja-jp/library/dn896590.aspx

続きを読む

【Dynamics CRM】サンドボックスインスタンスの構成

Dynamics CRMでは25ユーザーライセンス(Pro)以上購入された方を対象に

本番用インスタンスとは別に、サンドボックスと呼ばれる開発や検証で利用できるインスタンスが提供されます。

結構昔から提供されている機能ですが、アップデートに伴って、いろいろと機能が拡充されているのと

改めて構成から順を追って取り上げている記事が無いので、書いてみたいと思います。

CRM Online サンドボックス インスタンスの管理

https://technet.microsoft.com/ja-jp/library/dn659833.aspx

続きを読む

【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連携を想定して、アプリケーションのアクセス許可を構成してみました。

f:id:sugimomoto:20161006003814p:plain

f:id:sugimomoto:20161006003819p:plain

コード

今回はTokenの取得だけ。

とりあえずInvalidPluginExecutionExceptionで画面に表示させています。

参考

idmlab.eidentity.jp

blogs.msdn.microsoft.com

blog.karamem0.jp

tech.exceedone.co.jp

www.ipa.go.jp