Morning Girl

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

【Dynamics CRM】【Power BI】ダッシュボードにPower BIタイルの埋め込み

リリースされた当初、なんだかうまく動作しなかったので、放置していたDynamics CRMダッシュボードへのPower BIタイル埋め込み機能。

Power BI勉強会にも参加してきたので、改めて試してみました。

Microsoft Dynamics CRM での Power BI の使用(ダッシュボードへの埋め込み)

https://technet.microsoft.com/ja-jp/library/dn708055.aspx#BPI_embed

こんな風になるよ

ダッシュボードの1コンポーネントにPower BIレポートのモジュールが1つ埋め込める感じになります。

f:id:sugimomoto:20161004121650p:plain

グラフ等をクリックすることで、大元のPower BIレポートが表示されます。

f:id:sugimomoto:20161004121737p:plain

ここで改めて、Power BIのフィルタリングの機能などが利用できる形になります。

実施手順

やり方というやり方もないのですが、設定個所だけ若干わかりづらいです。

「設定」→「システムの設定」→「レポート」にPower BIタイルが設定できるようになるプロパティが存在します。

f:id:sugimomoto:20161004121908p:plain

これをONにすることで、初めてダッシュボードに配置できるようになります。

あとはダッシュボードカスタマイズ画面にPower BIのボタンが追加されますので、これをクリックして進めていくだけです。

f:id:sugimomoto:20161004122131p:plain

f:id:sugimomoto:20161004122200p:plain

所感

CRMのダッシュボードとして表示させるものとしての機能は限定的ですが、

Power BIにシームレスに移動できますので、Dynamics CRM + Power BIを行っているユーザーは設定しておいて損は無い機能かなと思います。

どうしても、CRMダッシュボードの表示だけでPower BIのダッシュボードをそのまま表示したい場合は、下記のようなiFrameを駆使したアプローチもあります。

blogs.msdn.microsoft.com

【Dynamics CRM】Dynamics CRM アプリからLogの取得(itunes)

Dynamics CRMではiPhoneAndroidWindows用に専用のアプリが提供されています。

■電話およびタブレット PC 用 CRM のインストール

https://www.microsoft.com/ja-jp/dynamics/crm-customer-center/install-crm-for-phones-and-tablets.aspx

結構便利なアプリなんですが、エラーや問題が発生した際の情報がわかりづいらです。

そんなときのための情報源として、地味にLog出力機能が提供されているので、今回はその取得方法を紹介したいと思います。

※まだiPhone用しか試していませんので、今回もiPhone用です。iPad用もたぶん変わらないと思います。

Log取得手順

設定からインストールしたDynamics CRM for Phoneを選択し、「ログ記録の有効化」をONにします。

f:id:sugimomoto:20160926224635p:plain

f:id:sugimomoto:20160926225107p:plain

アプリを起動して、エラーなどの再現操作をします。

f:id:sugimomoto:20160926225117p:plain

PCに接続しiTunesを立ち上げ、Dynamics CRM for Phoneを選択すると、.logというファイルが生成されるのがわかるかと思います。これをダウンロードします。

f:id:sugimomoto:20160926225123p:plain

以下のような感じでLogを確認することができます。

f:id:sugimomoto:20160926225129p:plain

あんまり読みやすいLogではないかと思いますが、サービスリクエストなどで問い合わせる際の参考資料として、提出することで、調査の迅速化などにつながるかなと思います。

【Dynamics CRM】【CRMポータル】試用版のセットアップ

前回、CRMポータルの簡単な紹介をしました。

kageura.hatenadiary.jp

今回は実際に試用版の取得からセットアップまでの流れを確認してみたいと思います。

事前準備・注意事項

CRMポータル試用版の取得

現在(2016年9月時点)ポータルの試用版はOffice365管理センターから直接取得できません。

一度、下記ポータル試用版のリクエストサイトから申請する必要があります。

また、ActivateKeyが来るまで1営業日ほどかかるっぽいので、気を付けましょう。

■紐づけ先Dynamics CRMテナント

上記ActivateKey取得後、CRMポータルを紐づけるためのDynamics CRMテナントが必要になります。

これも事前に取得しておきましょう。

CRMポータルの言語

これが一番の注意事項かと思います。

現在(2016年9月時点)CRMポータルの既定言語は英語版しか提供されていません。

そのため、Dynamics CRMに英語の言語パックが存在しないとポータルをセットアップできません。

Dynamics CRMの既定言語が日本語であったとしても、英語の言語パックをインストールしておくことでポータルのセットアップは可能です。

① ポータル試用版のリクエスト

それでは、実際の手順を追いながら、ポータルをセットアップしていきたいと思います。

まずは以下のサイトからポータル試用版のリクエストを行います。

https://crmmanagedtrials.dynamics.com/

f:id:sugimomoto:20160919170450p:plain

Microsoft Accountでログイン。パートナーであれば、パートナーアカウントでログインするのがいいと思われます。

f:id:sugimomoto:20160919170508p:plain

必須事項をいい感じに入力します。

f:id:sugimomoto:20160919170515p:plain

f:id:sugimomoto:20160919171907p:plain

上記にも書いていますが、今までのところ、1営業日ほどでメールが届きます。リクエスト直後に届く受領メールとは違うので注意しましょう。

② Dynamics CRM試用版の取得

続いて、Dynamics CRMの試用版を取得しておきます。

f:id:sugimomoto:20160919170316p:plain

既定の言語は今回英語版を指定しました。日本語で始める場合は、セットアップ後、英語の言語パックをインストールしてください。

カスタマイズのエクスペリエンスは変化がわかりやすいよう「カスタマイズしない」がいいかと思います。

f:id:sugimomoto:20160919170339p:plain

f:id:sugimomoto:20160919170344p:plain

③ ポータル試用版ライセンスの紐づけ

続いて、CRMポータルのライセンスを紐づけます。

リクエスト後1営業日ほどで以下のようなメールが届きますので、Activateをクリックします。

f:id:sugimomoto:20160919170547p:plain

あらかじめ上記Dynamics CRMの試用版にログインしていれば、そのまま「はい、アカウントに追加します」を選択してOKです。

f:id:sugimomoto:20160919170626p:plain

あとはダイアログ通り、進めていきます。

f:id:sugimomoto:20160919170638p:plain

f:id:sugimomoto:20160919170644p:plain

CRMポータル試用版のセットアップ

CRMポータルのライセンス紐づけ後、アプリケーションの管理画面が追加されます。

CRMの管理画面へ移動します。

f:id:sugimomoto:20160919170651p:plain

「アプリケーション」タブを選択すると、ポータルアドオンが追加されていますので、「管理」をクリックします。

f:id:sugimomoto:20160919170658p:plain

ポータルの初期セットアップ画面が表示されます。

f:id:sugimomoto:20160919170750p:plain

プロパティ 内容 設定後の変更可否
名前 CRMポータルの識別名称 変更可能
ポータルURL ポータルのサブドメインを指定します。→のような形になります。https://****.microsoftcrmportals.com/ 変更不可※
CRMインスタンス 対象のCRMインスタンス(本番インスタンスサンドボックスインスタンスなど)が選択できます。 変更できない模様
ポータル言語の選択 現在は英語しか選択できません。Dynamics CRMに英語の言語パックが入っていないと、エラーになるっぽいです。 変更不可。要注意
ポータル管理者の選択 ポータルのプログラム実行ユーザーと思われ 変更不可
ポータルの対象者 ポータルの対象ユーザー。ポータルでは提供するユーザーの種類に応じて、必要なDynamics CRMのライセンスが変わります。 変更不可
展開するポータルの選択 初期設定されるポータルテンプレートの選択。ポータルの対象者に応じて、展開できるポータルが変わります。 変更不可

注意:ポータルは試用版ではなく通常版だと、独自ドメインが指定できるみたいです。

展開できるポータルは以下のとおり。詳しくはまた今度。

「送信」をクリック後、サービス利用規約が表示されるので、「同意する」を選択します。

f:id:sugimomoto:20160919170800p:plain

続いてポータル管理ユーザーのCRMポータルアプリに対するアクセス許可を行います。

f:id:sugimomoto:20160919170807p:plain

f:id:sugimomoto:20160919170811p:plain

これで、ポータルのセットアップ準備は完了です。

以下のような画面が表示され、選択されたDynamics CRMのテナントにCRMポータルのソリューションがたくさんインストールされます。

体感では、30分ほどかかる感じです。

f:id:sugimomoto:20160919170818p:plain

f:id:sugimomoto:20160919170823p:plain

セットアップ完了

インストールが完了すると、管理画面が以下のような感じになります。

f:id:sugimomoto:20160919170829p:plain

Dynamics CRMにもCRMポータル管理メニューが追加されました。

f:id:sugimomoto:20160919170859p:plain

ポータルのURLにもアクセスできるようになります。セットアップ当初は結構重いかもです。

f:id:sugimomoto:20160919170910p:plain

所感

以上で、CRMポータル試用版のセットアップが完了です。

まだ日本語版がリリースされていないため、ちょっと注意するところがありますが、今後のアップデートに期待したいところ。

なお、現在のCRMポータルのバージョンは「8.1.0.375」です。

裏では結構細かなアップデートが行われている模様。

【Dynamics CRM】【Azure】Application Insights連携を試してみた

前回投稿した、Azure Application Insightsをもうちょっと突っ込んだ記事になります。

kageura.hatenadiary.jp

Application Insightsとは?

あらためて、Application Insightsとは?

以下、引用ですが、どちらかといえば、developer向けのAzure PaaSかなぁと思いますが、今回の組み込み内容としては、エンドユーザー向けの分析データ採取という観点が強いかと思います。(機能的にはSaaSに近いかも?)

Visual Studio Application Insights は、実行中の Web アプリケーションを監視する拡張可能な分析サービスです。パフォーマンスの問題の検出と診断や、ユーザーがアプリを使用して実際に実行する操作の理解に役立ちます。開発者向けに設計された Application Insights を使用して、パフォーマンスやユーザビリティを継続的に向上させることができます。オンプレミスまたはクラウドでホストされている .NET、Node.js、J2EE などのさまざまなプラットフォーム上のアプリで機能します。

f:id:sugimomoto:20160919112529p:plain

https://azure.microsoft.com/ja-jp/documentation/articles/app-insights-overview/

基本的なアプローチとしては、例えば.NET MVCのスクラッチ系アプリに、Application InsightsのSDKで提供されているライブラリを組み込むことで、Web アプリの稼働状況、パフォーマンス問題などを検出・分析するための基盤になるかと思います。

ただ、今回はスクラッチ系アプリに組み込むのではなく、Application Insightsが提供しているJavaScriptベースの連携用コードを利用することで、既存のWeb系アプリ(SaaS系かつJavaScriptが埋め込めるものであれば、なんでも)に組み込んで、分析を可能にするというアプローチを応用するスタイルをとっています。

(個人的には、Visual Studioのアドオンとして機能するApplication Insightsの機能も結構好きなのですが。まあ、またそれは別のお話し https://azure.microsoft.com/ja-jp/documentation/articles/app-insights-visual-studio/

Dynamics CRMに組み込むことのメリット

Dynamics CRMでは監査という機能で、CRMを操作しているユーザーの行動を記録していますが、基本的に、ユーザーの操作(Create・Update・Delete)の取得が中心であり、かつログとしての提供しかしていません。

また、ユーザーアクセスは取得できるますが、どのレコード・どのビューを表示したかまではわからないというのが現状です。

f:id:sugimomoto:20160919112634p:plain

ですが、Application Insightsを組み込むことで、CRMのどの「レコード」「ビュー」をどのユーザーがいつアクセスしたのか、ユーザーが使っている「ブラウザ」「ロケーション」「IPアドレス」はどのようなものか、を取得することができ、かつ、Application Insightsの画面である程度の分析できるインターフェースが提供されます。(そのままではいまいちかと思いますが)

また、JavaScriptを埋め込めるところであれば、どこでも可能といえば可能ですので、

理屈的にはコマンドバーへ組み込んで、Excelエクスポートの実行者までとれるかなと思います。

使い方1 Application Insightsの構成

以下のような感じでApplication Insightsをはじめに構成します。

f:id:sugimomoto:20160919113047p:plain

アプリケーションはASP.NETで構成

f:id:sugimomoto:20160919110754p:plain

f:id:sugimomoto:20160919110800p:plain

構成後、「はじめに」から、JavaScriptのサンプルコードを取得します。これをベースとして、Dynamics CRMに登録します。

f:id:sugimomoto:20160919110807p:plain

使い方2 Dynamics CRMへの組み込み

前述のとおり、Application InsightsのJavaScript版をDynamics CRMに組み込みます。

ただ、初期状態で提供されているJavaScriptのサンプルコードでは、送信するためのメソッドへの引数が何も設定されていない状態です。以下のCodePlexにサンプルソリューションが提供されていますので、今回はそれを参考に調整してみました。

Dynamics CRM and App Insights

dynamicsandappinsights.codeplex.com

下記コードの「instrumentationKey」の部分を提供されているinstrumentationKeyに置き換えてください。

var UserName;
var Alias;
var serverUrl;

function Getinfo() {
    var context;
    var UserID;
    var ODataPath;
    var selectFields = "$select=DomainName,FullName";

    context = Xrm.Page.context;
    serverUrl = context.getClientUrl();
    UserID = context.getUserId();
    ODataPath = serverUrl + "/XRMServices/2011/OrganizationData.svc";

    var retrieveUserReq = new XMLHttpRequest();
    retrieveUserReq.open("GET", ODataPath + "/SystemUserSet(guid'" + UserID + "')?" + selectFields, false);
    retrieveUserReq.setRequestHeader("Accept", "application/json");
    retrieveUserReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    retrieveUserReq.onreadystatechange = function () {
        retrieveUserReqCallBack(this);
    };
    retrieveUserReq.send();
}

function retrieveUserReqCallBack(retrieveUserReq) {
    if (retrieveUserReq.readyState == 4 /* complete */) {
        if (retrieveUserReq.status == 200) {
            var retrievedUser = JSON.parse(retrieveUserReq.responseText).d;
            if (retrievedUser.FullName != null) {
                UserName = retrievedUser.FullName;
                Alias = retrievedUser.DomainName;
            }
        }
    }
}

function captureTelemetry() {
    var appInsights = window.appInsights || function (config) {
        function s(config) { t[config] = function () { var i = arguments; t.queue.push(function () { t[config].apply(t, i) }) } } var t = { config: config }, r = document, f = window, e = "script", o = r.createElement(e), i, u; for (o.src = config.url || "//az416426.vo.msecnd.net/scripts/a/ai.0.js", r.getElementsByTagName(e)[0].parentNode.appendChild(o), t.cookie = r.cookie, t.queue = [], i = ["Event", "Exception", "Metric", "PageView", "Trace"]; i.length;)s("track" + i.pop()); return config.disableExceptionTracking || (i = "onerror", s("_" + i), u = f[i], f[i] = function (config, r, f, e, o) { var s = u && u(config, r, f, e, o); return s !== !0 && t["_" + i](config, r, f, e, o), s }), t
    } ({
        instrumentationKey: "REPLACE"
    });

    window.appInsights = appInsights;
    appInsights.trackPageView(Xrm.Page.data.entity.getEntityName(), serverUrl, { User: Xrm.Page.context.getUserName(), DomainName: Alias });
}

Getinfo();
captureTelemetry();

ポイントはtrackPageViewメソッドですね。

trackPageViewメソッドの第1引数がページ名、第2引数がページURL、第3引数がカスタムデータとして、様々にオブジェクトをカスタムして渡せる感じかなと思います。

これを、以下の通り、Dynamics CRM のWebリソースとして登録して、実行したい箇所に登録します。

今回は単純にフォームを表示した時に動作するものとして、登録してみました。

f:id:sugimomoto:20160919111048p:plain

Webリソースに上記コードを入力。

f:id:sugimomoto:20160919111126p:plain

Webリソースに登録後、フォームのライブラリに登録。Scriptにそのままメソッドの実行が記載されていますので、OnLoadなどに登録する必要はありません。

f:id:sugimomoto:20160919111302p:plain

f:id:sugimomoto:20160919111405p:plain

こんな感じに見えますよ

f:id:sugimomoto:20160919111738p:plain

カスタムデータを工夫すれば、もっといろいろと情報の分析材料をApplication Insightsに提供できる感じかなと思います。

注意点

Application Insightsのデータの保存期間は7日間みたいです。

定性的なデータ分析として利用したい場合は、間にAzure StorageやStream Analytics、Power BIなども交えて、うまくエンドユーザー向け提供の形を整える必要があるかなと思います。

Application Insights のデータを Power BI に入力する

azure.microsoft.com

【Dynamics CRM】【Azure】Dynamics CRMとApplication Insights連携を試してみた LT資料公開版

第2回 Japan Dynamics User Community 勉強会のライトニングトークをやってみました。

dynamics.connpass.com

以下のDocs.comで公開しています。

もうちょっとBlogで取りまとめたいと思いますが、いったんドキュメントだけ。

参考情報

チュートリアル: Application Insights を使用して Microsoft Dynamics CRM を監視する

【Dynamics CRM】【CRMポータル】CRMポータルを触ってみた その1

マイクロソフトが去年買収したADX Studioが、6月くらいからCRMポータルに改名し、Dynamics CRM Onlineの追加機能として提供され始めました。

個人的にも今かなり力を入れて触っている(むしろ触りすぎて、まとめる暇がない……。)ものなので、おさらいがてら、CRMポータルを紹介していきたいと思います。

今回は簡単に概要と情報源のサイトなどをまとめてみました。次回以降、触った流れを見ていきたいと思います。

CRMポータルとは?

Dynamics CRMに追加することで、外部向けポータルサイトを構築することができる機能です。

以下のような感じ

f:id:sugimomoto:20160910161614p:plain

主な利用シナリオとしては、カスタマー向けセルフサービスポータルや、パートナー(代理店)向けポータルなど、 顧客やパートナーとのコミュニケーションや情報提供の基盤として利用します。

例えば、

  • パートナーへ製品に関するFAQ・ナレッジベースの提供
  • 製品の最新情報、お知らせの表示・通知
  • 顧客からの問い合わせを受け付ける窓口
  • パートナー同士のディスカッション、コミュニティフォーラム、Blogでの情報提供

などなど。

また、はじめからユーザがログインすることができる機能がベースになっているのもポイントですね

他にもいろいろとカスタマイズの余地がありますので、ECサイトみたいな提供も可能?みたいですね。

大学だと学内向けポータルサイトとしても利用可能でしょう。

CRMポータルの技術的ポイント

上記で紹介した機能はほぼすべてDynamics CRM内部コンポーネントとして提供されます。

問い合わせの入力画面、Blogの投稿データ、製品の情報など、すべてDynamics CRMのレコード・フォーム・ビューが元となって、提供されます。

なので、Dynamics CRMの画面が以下のような感じに、CRMポータルのコンポーネントがずらずらと追加されます。

f:id:sugimomoto:20160910161652p:plain

内部的にはASP.NETで提供されているようですが、開発者は基本的に、内部的なプログラムを触ることはありません。 (以前のADX Studioなら触ることはできましたが、オンライン化された今、一切触ることはできなくなっています。例外的にMVCのRazorのような、Liquidテンプレートというものは提供されています)

ですので、ポータルの管理・カスタマイズはすべてDynamics CRMの画面において、実施・提供されています。

新しく製品の紹介画面や問い合わせ・申請の画面を作りたい、と思ったら、Dynamics CRMのカスタマイズを行う必要があります。

ADX Studio公式

https://www.adxstudio.com/

本家というか、もともとの公式サイト。正式なリリースの時には、いろいろ変わるかも?

基本的にはここにほとんどの情報があります。というかここにしか今のところ情報は無いと言ってもいいくらい。

一番のポイントは、このADX Studioの公式サイトそのものが、ADX Studio(CRMポータル)で構成されている、ということかも。

ADX Studio Community

開発者が一番見るべきは、ADX Studio公式のCommunityのほう。

その中でも、下記Documentationが実際にポータルを導入する際に、一番まとまった情報が手に入るところ。

https://community.adxstudio.com/products/adxstudio-portals/documentation/

ここで、ポータルのカスタマイズの仕方を学ぶことができます。

MS公式の情報源

https://www.microsoft.com/en-us/dynamics/crm-setup-and-administration/administrator-s-guide-to-portal-capabilities-for-microsoft-dynamics-crm.aspx

一応情報的には新しいらしい、MS公式のポータルリファレンス。 ただ、情報の質・量ともにまだまだ。。。

これからの充実に期待。

トライアルのリクエスト

https://crmmanagedtrials.dynamics.com/

現在試用版を触ることができますが、Office365のライセンス管理からではなく、上記URLからトライアルのリクエストを送ることで、試用版ライセンスの取得が可能になっています。

Dynamics CRMのブログ ソリューション調査 - Adxstudio編 01~03

http://motostar77x.hatenablog.com/entry/2016/03/21/203726

海外でも珍しいのに、日本でBlogを書いている人が居た!!!!!

まだ、ADX Studioとして提供されているときのものですが、参考になる部分が多いです。

ライセンスガイド

確定版かどうかはわからんですが、ライセンスガイドが出ていました。

https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&cad=rja&uact=8&ved=0ahUKEwjOy6GIk4TPAhWFNpQKHTkxBSgQFghgMAc&url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2FD%2F1%2FB%2FD1B80968-A15F-4A1C-87B0-F6DA831F0FD7%2FMicrosoft%2520Dynamics%2520CRM%2520Online%2520Guide%2520for%2520Adxstudio.pdf&usg=AFQjCNEmhA58yQcjyXpwWda3pZjSQ7eQhg&sig2=LAC2zMfSRbPqlgjsBOe3Ow&bvm=bv.132479545,d.dGo

最後に

個人的感触としては、今Dynamics CRMコンポーネントとしては、一番力をいれているんじゃないか?と思われる機能です。

Paratureのようにコテコテな感じで提供されるよりも、デベロッパーに様々な開発・拡張の余地が提供されているのが、結構面白い部分かな、と。

次回以降、実際にトライアルのリクエストからポータルの構成を見てみたいと思います。

【Dynamics CRM】【8.1】Dynamics CRM 8.1のアップデート内容を網羅的に見たい場合

8.1がリリースされてそれなりに経ちましたが、そろそろアップデートスケジュールが進められていることと思います。

アップデートの影響具合などを確かめる人も多いかと思いますので、まず何を見るべきか? というところで、参考にするべきURLをまとめておきます。(個人的にも大事なところですので。)

Microsoft Dynamics CRM 2016 および CRM Online の管理者とカスタマイザー向け新機能

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

エンドユーザー向けのトピックですね。

とりあえず新機能を把握した場合は、こちらを見るべきです。

開発者向けの新機能: Microsoft Dynamics CRM 2016

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

Web APISDKの変更点はこちらから。

アップデートに伴う影響評価はここが中心になるかと。

Microsoft Dynamics CRM の将来のリリースにおける重要な変更点

https://technet.microsoft.com/library/dn265924(crm.8).aspx

地味に公開されていますが、結構大事な内容が多い場所です。

レガシーフォームレンダリングやKnowledge Baseが新しくなったことに伴う旧バージョンの廃止などが記載されています。

使っている人たちは要注意。