Quantcast
Channel: Japan Microsoft Dynamics 365 Team Blog
Viewing all 589 articles
Browse latest View live

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 14

$
0
0

みなさん、こんにちは。

前回に引き続き Dynamics CRM Online 2015 Update 1 で提供される
Web API 開発者プレビューを T4 テンプレートで作成したクライアント
で利用する方法について紹介します。連載記事になるため以下の記事を
事前にご覧ください。

Web API 開発者プレビュー その 1
Web API 開発者プレビュー その 2
Web API 開発者プレビュー その 10
Web API 開発者プレビュー その 11
Web API 開発者プレビュー その 12
Web API 開発者プレビュー その 13

今回はクライアントを利用したトランザクション処理を紹介します。

トランザクションの利用

トランザクションはレコード間の整合性を取るために重要な機能
です。今回は複数の取引先企業レコードをトランザクションで作成
してみます。

プログラムの実装

1. 前回作成した Visual Studio ソリューションを開き、Program.cs
ファイルを開きます。新しく以下のメソッドを追加します。

public void RunTransaction(string accessToken)
{
    // クライアントの作成
    CrmODataClient client = new CrmODataClient(new Uri(serverUrl + "/api/data/"));
    client.SendingRequest2 += (s, e) => { e.RequestMessage.SetHeader("Authorization", "Bearer " + accessToken); };
}

2. Main メソッドの以下のコードを書き換えて、新しいメソッドを
呼ぶように変更します。

元)  
app.RunActions(result.AccessToken);

変更後)
app.RunTransaction(result.AccessToken);

3. 追加した RunTransactionメソッドに以下のコードを追加します。
作成する取引先企業レコードを保持するコレクションを作ります。

// 取引先企業のコレクションを作成
DataServiceCollection<Account> accounts = new DataServiceCollection<Account>(client);

4. 取引先企業オブジェクトを 5 件作成してコレクションに追加します。
以下のコードを追加します。

// レコードの追加
for (int i = 0; i < 5; i++)
{
    Account account = new Account();
    accounts.Add(account);
    account.Accountid = Guid.NewGuid();
    account.Name = "テスト取引先企業 " + i;
    account.Accountnumber = "TestAccountNumber" + i;
}

5. 最後にレコードの作成を行います。SaveChangesOption として
PostOnlySetProperties と一緒に BatchWithSingleChangeset を指定
してトランザクションにします。

// レコードの作成
client.SaveChanges(SaveChangesOptions.PostOnlySetProperties | SaveChangesOptions.BatchWithSingleChangeset);

動作確認

1. F5 キーを押下してプログラムを実行します。

2. 認証ダイアログが表示されたらログインします。

image

3. 処理が完了したらブラウザで結果を確認します。

image

4. 作成したテストレコードは一旦削除します。

次にトランザクションの途中で処理に失敗した場合、
ロールバックされるか確認します。

プログラムの実装

上記で実装したレコードの追加のプログラムを以下のように
書き換えます。4件目のレコードに存在しない取引先企業を
親として指定して失敗するようにしています。

// レコードの追加
for (int i = 0; i < 5; i++)
{
    Account account = new Account();
    accounts.Add(account);
    account.Accountid = Guid.NewGuid();
    account.Name = "テスト取引先企業 " + i;
    account.Accountnumber = "TestAccountNumber" + i;

    // 処理に失敗するよう存在しない ID を指定
    if (i == 3)
        account.Parentaccountid = new Guid("5B38C9B2-F9AE-4514-AB49-06312815C8E7");
}

動作確認

1. F5 キーを押下してプログラムを実行します。

2. 認証ダイアログが表示されたらログインします。

3. 画面にエラーが出たら、ブラウザからレコードが 1 件も
作成されていないことを確認します。

image

バッチ処理の利用

トランザクションは不要だが一括処理したい場合には、バッチ
処理機能を利用できます。この場合処理の一部が失敗しても
他の処理は実行されます。

プログラムの実装

上記で追加した RunTransaction メソッドの最後のコードの
SaveChangesOption.BatchWithSingleChangeset をバッチ処理用
である BatchWithIndependentOperations に変更します。

client.SaveChanges(SaveChangesOptions.PostOnlySetProperties | SaveChangesOptions.BatchWithIndependentOperations);

動作確認

1. F5 キーを押下してプログラムを実行します。

2. 認証ダイアログが表示されたらログインします。

3. 先ほどを違い、画面にエラーが出ないことを確認します。また
ブラウザで作成されたレコードを確認します。処理に失敗した
「テスト取引先企業 3」だけ存在しません。

image

以下に今回追加したメソッドを示します。

public void RunTransaction(string accessToken)
{
    // クライアントの作成
    CrmODataClient client = new CrmODataClient(new Uri(serverUrl + "/api/data/"));
    client.SendingRequest2 += (s, e) => { e.RequestMessage.SetHeader("Authorization", "Bearer " + accessToken); };

    // 取引先企業のコレクションを作成
    DataServiceCollection<Account> accounts = new DataServiceCollection<Account>(client);

    // レコードの追加
    for (int i = 0; i < 5; i++)
    {
        Account account = new Account();
        accounts.Add(account);
        account.Accountid = Guid.NewGuid();
        account.Name = "テスト取引先企業 " + i;
        account.Accountnumber = "TestAccountNumber" + i;

        // 処理に失敗するよう存在しない ID を指定
        if (i == 3)
            account.Parentaccountid = new Guid("5B38C9B2-F9AE-4514-AB49-06312815C8E7");
    }

    // 以下はシナリオによって使い分けてください
    // レコードの作成 (トランザクションの場合)
    client.SaveChanges(SaveChangesOptions.PostOnlySetProperties | SaveChangesOptions.BatchWithSingleChangeset);
    // レコードの作成 (バッチの場合)
    client.SaveChanges(SaveChangesOptions.PostOnlySetProperties | SaveChangesOptions.BatchWithIndependentOperations);
}

まとめ

トランザクションやバッチ処理の利用も、クライアントを利用
すれば容易に実装が行えます。

今回で Web API の紹介は最後です。まだプレビュー版も機能で
今後正式版になった場合に変更が入る可能性がございますが、
基本的な概念は変わりません。色々なシナリオで利用可能です
ので、是非お試しください!

- 中村 憲一郎


Dynamics CRM Online 2015 Update 1 新機能関連ブログ一覧

$
0
0

みなさん、こんにちは。

これまで連続して Microsoft Dynamics CRM Online 2015 Update 1 の
新機能を紹介 していますが、記事の数が多くなってきましたので、
一覧を作成しました。

今後も新機能に関連する新しい記事は、こちらにリスト
する予定です。

アプリケーション機能

Dynamics CRM Online 2015 Update 1 : ナビゲーションの新機能
新しいナビゲーションの紹介

Dynamics CRM Online 2015 Update 1 : レコードフォームの新機能とようこそ画面
フォームの表示パフォーマンスの向上、タブ、ようこそ画面の紹介

Dynamics CRM Online 2015 Update 1: サービスの新機能 その 1
自動作成ルールの設定方法

Dynamics CRM Online 2015 Update 1: サービスの新機能 その 2
Parature 連携とアップデートにおける考慮点の紹介

カスタマイズ

Dynamics CRM Online 2015 Update 1 : カスタマイズの新機能 - テーマ対応
UI のロゴ、テーマのカスタマイズ方法

Dynamics CRM Online 2015 Update 1: プロセスと業務ルールの新機能
業務プロセス、業務ルールの強化ポイントの紹介

Dynamics CRM Online 2015 Update 1: ロールアップ列と計算列の新機能
ロールアップ列、計算列の設定方法

Dynamics CRM Online 2015 Update 1: 日付列の新機能
日付フィールドの新しい形式の紹介

Office 統合の強化

Dynamics CRM Online 2015 Update 1: Excel にエクスポートの新機能
Excel エクスポートの強化ポイントと Excel Online 連携の紹介

Dynamics CRM Online 2015 Update 1: SharePoint 統合の新機能
SharePoint Online との設定方法

Dynamics CRM Online 2015 Update 1: OneNote 統合の紹介
OneNote 統合の紹介と設定方法

他システム連携

Dynamics CRM Online 2015 Update 1: Yammer 統合の強化
Yammer 統合の強化ポイントと設定方法

Dynamics CRM 2015 Online Update 1: Exchange フォルダーレベルの追跡機能
Exchange Online をフォルダーレベルで追跡する設定方法

SDK

Dynamics CRM Online 2015 Update 1 SDK 新機能: 代替えキー
代替えキーの設定方法とサンプルプログラムの紹介

Dynamics CRM Online 2015 Update 1 SDK 新機能: Upsert
Upsert を利用したサンプルプログラムの紹介

Dynamics CRM Online 2015 Update 1 SDK 新機能: 特殊フィールドの更新
所有者、ステータスフィールドの新しい更新方法

Dynamics CRM Online 2015 Update 1 SDK 新機能: 変更されたレコードの一括取得
変更したレコードのみ取得するサンプルプログラムの紹介

Dynamics CRM Online 2015 Update 1 SDK 新機能: オプティミスティック同時実行制御
同じレコードに対する同時実行制御のサンプルプログラムの紹介

Dynamics CRM Online 2015 Update 1 SDK 新機能: 複数組織要求のトランザクション処理
SDK によるトランザクション処理のサンプルプログラムの紹介

Dynamics CRM Online 2015 Update 1 SDK 新機能: タイムゾーンに依存しない日付型への変換
SDK による日付フィールドの形式の変換方法

Dynamics CRM Online 2015 Update 1 SDK 新機能: プラグインおよびユーザー定義ワークフロー活動の追跡
追跡機能によるプラグインおよびユーザー定義ワークフローのトラブルシューティング

Dynamics CRM Online 2015 Update 1 SDK 新機能: FetchXML の新しい検索条件
新しい検索条件の解説

Dynamics CRM Online 2015 Update 1 SDK 新機能: フォームスクリプトのサブグリッドの制御 その 1
新しくサポートされたオブジェクトの紹介と GridControl オブジェクトの解説

Dynamics CRM Online 2015 Update 1 SDK 新機能: フォームスクリプトのサブグリッドの制御 その 2
Grid、GridRow、GridRowData、GridEntity  オブジェクトの解説

Dynamics CRM Online 2015 Update 1 SDK 新機能: フォームスクリプトのサブグリッドの制御 その 3
ViewSelector オブジェクトの解説

Dynamics CRM Online 2015 Update 1 SDK: クライアントサイドスクリプト その他の新機能
その他追加された機能の解説

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 1
新しい Web API プレビュー版の紹介と有効化の方法

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 2
新しい Web API を利用したサンプルプログラムの作成方法の紹介

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 3
新しい Web API を利用したレコードの作成、更新、削除の解説

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 4
新しい Web API で Upsert 機能を利用したレコードの作成、更新、削除の解説

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 5
新しい Web API でオプティミスティック同時実行制御を利用する方法

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 6
新しい Web API による特定のビューのレコードを取得する方法

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 7
新しい Web API による Action と Function 機能の解説

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 8
金額や日付など表示形式を指定したデータ取得方法

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 9
レコード件数や Not 検索のデータ取得方法

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 10
T4 テンプレートを使った OData クライアントの作成方法

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 11
T4 テンプレートを使った OData クライアントによるレコード取得

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 12
T4 テンプレートを使った OData クライアントによるレコードの作成、更新、削除

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 13
T4 テンプレートを使った OData クライアントによる Action と Function の利用方法

Dynamics CRM Online 2015 Update 1 新機能: Web API 開発者プレビュー その 14
T4 テンプレートを使った OData クライアントによるトランザクションとバッチ処理

管理

Dynamics CRM Online Update 1: 更新プログラムの管理
Dynamics CRM Online の更新プログラム適用方法とアップデートポリシー

Dynamics CRM 2015 Update 1 : リリースプレビューガイドと各種サービスのご案内
リリースプレビューガイドと、体験ツアー、コンシェルジュサービスの紹介

- プレミアフィールドエンジニアリング 河野 高也

Dynamics CRM Online 2015 Update 1 新機能: 新しい電話用アプリの紹介 その 1

$
0
0

みなさん、こんにちは。

今回は、Dynamics CRM Online 2015 Update 1 から提供される
新しい電話用アプリケーションを紹介します。これまでの電話用アプリケーションは、
「Phones Express 用 CRM」というアプリケーションを提供していましたが、
今回のバージョンから新しいアプリケーションを提供することになります。

概要

新しい電話用アプリケーションは、すでに提供しているタブレット用アプリケーションに似ています。
業務プロセス、業務ルール、JavaScript が利用できます。
Windows Phone, Android, iOS に対応しています。早速見てみましょう。

事前準備

今回は、iPhone を使用した例で機能を紹介します。

CRM Online 評価版

Dynamics CRM Online トライアル版を申し込みます。
バージョンが 7.1.x であることを確認します。

image

アプリケーションのインストール

1. iPhone からアップルストアを開きます。

image1

2. 「Dynamics CRM for phones」を検索し、インストールします。

image3

3. iPhone にアプリケーションがインストールされたことを確認します。

image3

以上で事前準備は完了です。

動作確認

ログイン

1. アプリケーションのアイコンをタップします。

image3

2. アカウント情報を入力します。

image

3. パスワードを入力します。

image

4. 成功すると Welcome 画面が表示されます。

image8image4

5. しばらく待つとホーム画面が表示されます。

image9

6. 横にスワイプしていくと営業ダッシュボードに含まれるグラフやグリッドが表示されます。

IMG_2886IMG_2887IMG_2888

IMG_2889IMG_2890

営業案件の作成からクローズ

1. ビューの「+」ボタンをタップします。

IMG_2887

2. 情報を入力し保存をタップします。

image1

3. 作成した営業案件をタップします。

image2

4. 業務プロセスをタップします。

image3

5. 必要事項を入力し、次の段階をタップします。

image5

6. 次の段階に移動したことを確認します。

image6

7. 右下の「…」メニューから受注のクローズをタップします。

image7

8. 確認画面で実績を入力し、OKボタンをタップします。

image8

まとめ

今回は、新しいアプリの基本的な操作方法を紹介しました。
次回は、以前のアプリから特に強化されたポイントをご紹介します。

 

- プレミアフィールドエンジニアリング 河野 高也

Dynamics CRM Online 2015 Update 1 新機能: 新しい電話用アプリの紹介 その 2

$
0
0

みなさん、こんにちは。

前回に引き続き、Dynamics CRM Online 2015 Update 1 から提供される  
新しい電話用アプリケーションを紹介します。前回の記事をまだご覧になっていない方は
是非ご確認ください。

Dynamics CRM Online 2015 Update 1 新機能: 新しい電話用アプリの紹介 その 1

- 強化された機能
    今回のバージョンから強化されたグラフのドリルダウン、地図アプリの起動機能を紹介します。
- カスタマイズ、新しい API
    電話用アプリのフォームをカスタマイズする方法と新しい API を紹介します。
- 制約事項
    電話用アプリでは使えない機能などの制約事項を紹介します。

早速見てみましょう。

強化された機能

グラフのドリルダウン

1. アプリをタップします

image

2. 営業ダッシュボードから営業パイプラインのグラフまでスライドします。

IMG_2889

3. 提案中である黄色の領域をタップします

image

4. 提案中の案件が一覧表示されます。

image1

地図アプリの起動

1. 右上のメニューから取引先企業をタップします。

image

2. 「+」ボタンをタップします

image

3. 企業名、住所を入力して、保存をタップします。

image3

4. 再度開き、下線が引いてある住所情報をタップします。
今回は、建物名をタップします。

image5

5. 地図アプリが起動され、該当の場所が表示されます。

image6

カスタマイズ

フォームのカスタマイズ

電話用アプリのフォームは、項目レベルで表示の制御が可能です。
メインフォームをカスタマイズします。

1. ブラウザから Dynamics CRM Online へログインします。

2. 設定 | カスタマイズ | システムのカスタマイズ をクリックします。

image

3. 取引先企業エンティティを選択します。モバイルの有効化にチェックが入っていることを確認します。

image

4. メインフォームを開きます。電話用アプリのフォームはメインフォームを共有します。

image

5. FAX 項目をダブルクリックします。

image

6. 下部の空き時間領域のチェックを外します。電話用アプリで表示しないことを意味しています。
(翻訳は今後改善します)

image

7. Web サイト、取引先企業の親会社、株式銘柄コードも同様に非表示にします。

8. 公開します。

image

9. iPhone のアプリを起動します。

10. カスタマイズを反映するため、メニューからアプリを再構成します。

imageimage

11. 再度アプリでログインします。

image6

12. 取引先企業の特定のレコードをタップします。
非表示にした項目が表示されていないことを確認します。

[変更前]

IMG_2909

[変更後]

IMG_2910

セキュリティロール

電話用アプリの利用は、セキュリティロールレベルで制御することが可能です。(既定では有効)

image

 

新しい API

getFormFactor メソッドにより、ユーザーが利用しているデバイスを特定することが可能です。

以下の Javascript を取引先企業フォームの OnLoad 処理に含めます。
取引先企業フォームの表示時に説明フィールドにデバイスのタイプを設定しています。

function fn_load()
{
    var type = Xrm.Page.context.client.getFormFactor();
    Xrm.Page.getAttribute("description").setValue(type.toString());
    return;
}

[パソコンのブラウザで表示]

image

[iPhone アプリで表示]

IMG_2913

参考情報:getFormFactor
https://msdn.microsoft.com/en-us/library/gg334511.aspx#BKMK_getFormFactor

制約事項

- 重複検出機能には対応していない
- iFrame / Web リソース は対応していない
- ブラウザで開く機能は対応していない
- グラフはズームできません
- ピンしたレコード情報などは共有されません
  例: タブレット用アプリでピンしたレコード情報を電話用アプリで利用できない

まとめ

2 回に渡って新しい電話用アプリを紹介してきました。 
操作性や画面デザインは、Android や Window Phone でも同様です。
様々なデバイスで、モバイルに特化したアプリをご利用いただけます。
是非、お試しください!

- プレミアフィールドエンジニアリング 河野 高也

Dynamics CRM Online: 日本データーセンター移行プロセス

$
0
0

みなさん、こんにちは。

現在、Dynamics CRM Online の組織を新規で作成すると日本の  Microsoft  データーセンター (以下、DC) で組織はホストされます。以前はアジア/太平洋の地域 (香港、シンガポール) の DC にて管理されていたので、いくつかの組織はアジア/太平洋の DC で管理されてます。みなさんの Dynamics CRM Online 組織がどこの DC でホストされているかは、組織の URL で確認することが出来ます。

アジア/太平洋のデーターセンターでホストされている URL: https://xxx.crm5.dynamics.com
日本のデーターセンターでホストされている URL: https://xxx.crm7.dynamics.com

ちなみに、crm6 は日本 DC と同じ時期に新しく加わったオーストラリアの DC です。それぞれの詳しい DC のロケーションについては、こちらを参照してください。

 

今回は、アジア/太平洋で作成された Dynamics CRM Online 組織の日本 DC への移行手続きについてまとめました。現時点では、特定の DC から他の DC への組織移行手順は、Microsoft の Dynamics CRM Online サービス エンジニアリング チームにより手動で管理されておりますが、将来的には自動で移行される予定です。

移行プロセス:

1. 組織の移行をご希望の場合には、テクニカルサポートへサービスリクエスト等で依頼します。その際に二つの移行希望日 (営業日) を伝えてください

2. テクニカルサポートとサービス エンジニアリング チームが移行日時について調整を行った後、ユーザー様に実際の移行日時をお知らせします。1日に対応可能な移行件数は限りがありますので、ご希望日時に沿えない場合があります

3. テクニカルサポートが、Dynamics CRM Online 組織移行による影響を説明します。詳細は「免責事項」のドキュメントが送られてきますので、内容に問題なければその旨を返信します。また、移行前の作業についても説明します

4. 当日の移行時間前に、サービス エンジニアリング チームより電子メールで移行開始の連絡があります。また、その後にSQL 暗号化キー入力が求められますので、移行前の作業でバックアップしたキーを入力します

5. DC 内の移行作業にかかる時間はは組織データーベースのサイズや、その他のさまざまな要因により変化します。数時間から 6 時間以内とされてます

6. 移行作業完了の連絡がサービス エンジニアリング チームより連絡がありますので、ログインや移行された組織に問題ないか確認します

7. ユーザー様は Outlook クライアントの再構築やカスタムアプリ、Email Router 等の URL を変更します。詳細は、お問い合わせ時にお渡しするドキュメントに記載されています

 
実際の移行作業では、海外のサービス エンジニアリング チームとやり取りが発生しますので、Dynamics CRM Online 組織のシステム管理者権限をお持ちの担当者様も移行作業当日待機する必要があります。サービス エンジニアリング チームは海外のチームなので、電子メールで英語のやり取りが発生します。ご希望であれば日本のテクニカルサポートが営業時間内であれば支援することが可能です

 

日本データーセンター移行については、以下のサイトに FAQ 形式で公開されてますので参照してください。

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

 

Dynamics CRM サポート
野田 良二

Dynamics CRM: Windows 10, Edge browser および Office 2016 のサポートに関して

$
0
0

みなさん、こんにちは。

いよいよ Windows 10 がリリースされましたが、それに伴い新しいブラウザで
ある Microsoft Edge と Office の時期バージョンである Office 2016 のサポート
については情報が出ましたので、こちらのブログでもお伝えします。

情報元: Dynamics CRM Support with Windows 10, Edge browser, and Office 2016

=====================================================

Windows 10 のリリースを直前に控え、Microsoft Dynamics CRM 製品チームは
この新しい OS および OS に搭載される新しいブラウザである Microsoft Edge
および Office の次期バージョンである Office 2016 のサポートを、以下バージョン
にてサポートする予定です。

Microsoft Dynamics CRM 2013 Service Pack 1 用 Update Rollup 4 (6.1.4)
Microsoft Dynamics CRM 2013 Updates and Hotfixes (英語)

Microsoft Dynamics CRM 2015 Update 0.2 (7.0.2) および Update 1.1 (7.1.1)
Microsoft Dynamics CRM 2015 Updates and Hotfixes

Windows 10 についての情報:
http://www.microsoft.com/en-us/windows/features

Microsoft Edge ブラウザについての情報:
https://www.microsoft.com/en-us/windows/microsoft-edge

Office 2016 についての情報:
https://blogs.office.com/2015/05/04/office-2016-public-preview-now-available/

=====================================================

Windows 10 の展開と共に Microsoft Dynamics CRM の修正モジュール展開も
併せてご検討いただくよう、お願いいたします。

- 中村 憲一郎

Dynamics CRM 2015 パフォーマンスの公開ドキュメント その 1

$
0
0

みなさん、こんにちは。

Dynamics CRM をご利用のお客様からパフォーマンスに関する問い合わせを多くいただきます。
パフォーマンスは利用者の利便性に直結する非常に重要な項目です。

ダウンロードセンターには、Dynamics CRM 2015 においてパフォーマンスの問題が発生する
主な原因とそれらを考慮したうえで実施するデザインパターンを解説している文書が公開されています。
非常に重要な内容のため、複数回にわたり文書の内容を紹介していきたいと思います。

この文書は Dynamics CRM 2015 、Dynamics CRM 2013 を対象とした内容です。

Microsoft Dynamics CRM 2015 Performance and Scalability Documentation(英語):
http://www.microsoft.com/en-us/download/details.aspx?id=45905

はじめに

パフォーマンスの問題を語る上で重要なポイントが 2 つあります。
- カスタマイズや開発することにより ユーザー操作に影響を与える作りこみができる
- 競合が発生した場合、ロックやトランザクションの仕組みによりシステムを保護している

開発者は、パフォーマンスの問題を引き起さないようどういった問題が発生するのか
理解する必要があります。また、ロックやトランザクションは、システムを保護するために
発生している場合があることを理解する必要があります。

一般的な事象

パフォーマンスの問題の多くは、以下に示す一般的な事象によりが複合的に発生する場合が多いです。

1. 遅いレスポンス

特定の場所のレスポンスが遅い(例:フォーム、ビュー)。

2. Generic SQL errors

データベースにて "Generic SQL Error" や ”SQL timeout” が記録される。
これらのエラーはほとんどの場合、アクションが必要となる。

3. デッドロック

プラットフォームのエラーとして記録され、発生するとリクエスト処理は強制的にロールバックされる。

4. スループットの制限

負荷の高いバッチが展開されており、それによりスループットが非常に遅くなる。

これらの事象は、ディスク I/O の制約、製品の不具合でも同様の問題が発生する場合があります。

主な原因

一般的な事象の多くは長時間のトランザクション処理により引き起こされます。
例えば、複雑なクエリや同じリソースへの並列処理によりブロックが発生し、
長時間のトランザクション処理となり、ユーザーへの応答時間の遅延や
タイムアウトを引き起こす可能性があります。

1. 遅いレスポンス > 複雑なクエリ > ブロック > 長時間のトランザクション
2. タイムアウト > 複雑なクエリ > ブロック > 長時間のトランザクション
3. デッドロック > 同じリソースへの並列処理 > ブロック > 長時間のトランザクション
4. 低いスループット > ブロック > 長時間のトランザクション

プラットフォームの制約

Dynamics CRM は、ユーザー操作による重大な影響を防ぐためいくつか制約を設けています。

プラグインのタイムアウト: 120 秒(既定値)

プラットフォームやサンドボックスサービスの保護および、ユーザーの利便性を妨げないよう、
プラグインは長時間実行しないよう設計されています。

SQL タイムアウト: 30 秒(既定値)

リクエスト対象である特定の組織やデータベースや、サーバーで共有しているリソースを
保護するため実行時間に制限があります。

ワークフローの制限

特に静的な制約はありませんが、同じ展開内に複数の組織を展開している場合、
ワークフローを実行するためのリソースは共有されているため、
すべての組織のパフォーマンスに影響があります。

最大同時接続数: 100

Web サーバーの IIS からデータベースに対する同時接続数は、最大 100 までです。
もしこの上限を超過した場合、既存の接続がブロックされている原因を調査する必要があります。
複数の Web サーバーを利用している場合、標準的なデータベースに対して、
100 の同時接続で各 Web サーバーのスループットが 1000 リクエストに対して 10 ms 未満と
なることを想定しています。

ExecuteMultiple の最大同時実行数: 2

ExecuteMultiple メソッドは、外部からまとめて複数のメッセージを一括で送信することができます。
大規模な処理の場合、ユーザーの応答時間が犠牲になる可能性があるため、
1 つの組織あたりの最大同時実行数は 2 つまでに制限されます。
ロードバランサーにより複数の Web サーバーが実行されている環境では、
それ以上に設定することも可能ですが、オンライン環境のようなインフラの制御ができない場合、
2 に設計されることが安全です。

これらの制約は、Dynamics CRM Online / 設置型ともに適用されています。

まとめ

今回は、Dynamics CRM のパフォーマンス問題を理解するうえで必要な、
一般的な事象とその原因を紹介しました。また、Dynamics CRM が設けている制約も
押さえておく必要があります。次回は、具体的にどのような仕組みで問題が発生しているか
ロックとトランザクションにフォーカスして紹介していきます。

- プレミアフィールドエンジニアリング 河野 高也

Dynamics CRM 2015 パフォーマンスの公開ドキュメント その 2

$
0
0

みなさん、こんにちは。

前回に引き続き、パフォーマンスに関する公開ドキュメントの紹介をします。
シリーズものとなっているため、まだ前回の記事を見られていない方はご覧ください。

Dynamics CRM 2015 パフォーマンスの公開ドキュメント その 1

Microsoft Dynamics CRM 2015 Performance and Scalability Documentation(英語):
http://www.microsoft.com/en-us/download/details.aspx?id=45905

データベースのトランザクション

Dynamics CRM のパフォーマンスを理解するうえで最も基本的な概念のひとつは、
データベースのトランザクションです。
これによりシステムへの要求とデータの一貫性が保たれています。

- Dynamics CRM は、同じデータベースのデータやリソースでやり取りされる
- データベースの分離レベルの制御により動作している
- データベースは、競合からデータを保護するためリソース
をロックする
- ロックは、トランザクションがコミットまたは中止されるまで解放されない

SQL Server の既定の分離レベルは Read Committed です。
以降の記事ではこの既定の分離レベルの動作を記載しています。

トランザクションとロック

SQL Server は分離レベルに基づき適切なロックをかけます。
パフォーマンスの問題を引き起こす一般的な理由は、
トランザクションによる影響を理解しないままカスタマイズや開発が行われることです。

- 単一レコードを読み取る場合、そのレコードの読み取りロックがかかる
- 範囲を指定してレコードを読み取る場合、読み取る範囲によってその範囲、または
   テーブル全体の読み取りロックがかかる
- 単一レコードを作成、更新する場合、そのレコードに対する書き込みロックがかかる
- ロックがテーブルまたは特定のレコードに対して行われている場合、
   該当のレコードのインデックスに対してもロックがかけられている

例を用いて解説します。
取引先企業のレコードを更新する一連の処理は、1 つトランザクション内で実行されます。
その期間中に、別の非同期ワークフローが同じ取引先企業のレコードを更新しようとすると、
書き込みロックにより待たされます。

image

ポイントは、 以下の通りです。
- トランザクションはプラットフォームが保持している有効期間内で保持されている
- ロックの期間は、セッションやユーザーが操作が行われている期間ではない
- リクエストが完了するとデータベースの接続や関連するトランザクションやロックが解除される

ブロッキング

複数のユーザーが同じレコードを更新した場合、後から更新したユーザーは待たされます。

例えば、取引先担当者に自動採番している場合、複数の取引先担当者を作成すると、
複数のリクエストが同じ自動採番のリソースにアクセスする必要があります。
それにより 2 つ目以降のリクエストは、前のリクエストが完了するまで待たされます。
つまり、最終的には同時リクエスト数だけブロッキングが発生し、全体の処理時間が増加します。

以下の例の場合、最初の要求ではすぐに完了することができますが、
2 つ目以降の要求は前の要求の完了を待つ必要があります。

image

ロックのリリース

トランザクションが完了するまでロックが発生することは前述の通りですが、
ロックがリリースできない理由は 2 つです。

- データの一貫性を保つため
- エラーが発生した場合、トランザクション全体のロールバックを可能にするため

もし、トランザクション内の一部の変更が完了した場合でも、
トランザクション全体がコミットされるまでロックは保持される続けます。

以下の例の場合、カスタムエンティティのレコードを作成することで発生する
同期ワークフローやプラグイン処理は 1 つのトランザクション内で実行されます。
トランザクション全体が完了するまで該当のレコードに対する書き込みロックが発生しています。

image

エラーの発生頻度

断片的に発生するエラーは、同時リクエストによるブロッキングの症状の代表的なものです。
この場合、再度同じ処理を実行すると成功する場合があります。
こういった潜在的な競合が発生しているか、ブロッキング情報を確認する必要があります。
潜在的な競合は、個々の処理時間を短く最適化することで発生頻度を少なくすることができます。

トランザクションのコントロール

画面操作によるトランザクション

画面操作で発生するトランザクションと他処理への影響度は以下の通りです。

- フォーム:低 
   プラットフォームに該当のレコードを取得するリクエストを投げます。
   レコードに読み取りロックをかけます。
- 作成:低
   プラットフォームに該当のレコードを作成するリクエストを投げます。
- 更新:中
   プラットフォームに該当のレコードを更新するリクエストを投げます。
   完了するまで更新ロックをかけるため、他の更新や読み取りをブロックする場合あります。 
   テーブルの広い範囲を読み取りロックする場合があります。
- ビュー:高 
   他の操作に比べ範囲が広いため、他処理をブロックする可能性があります。
   意図的にクエリに Nolock ヒントを付与することで回避できます。 
   広範囲にわたるような重たいクエリは、データベースのリソースに影響を与え、
   タイムアウトを引き起こす可能性があります。

イベントパイプライン

SQL Server のトランザクションは、イベントパイプラインが開始されると作成されます。
これはプラットフォームによって実行されるすべてのデータベースのやりとりに
一貫性があることを保証します。カスタマイズにより、これらトランザクションに
参加することが可能です。

プラグインのトランザクション

プラグインのイベントやステージの種類により、その処理がトランザクションに含むかが異なります。

イベント

ステージ

番号

トランザクションが
存在していない場合

トランザクションが
すでに存在している場合

Pre-Event

Pre-validation

10

データベースで独立したトランザクションを使用

既存のトランザクションに参加

Pre-Event

Pre-operation

20

既存のトランザクションに参加

既存のトランザクションに参加

Platform Core Operation

Main operation

30

既存のトランザクションに参加

既存のトランザクションに参加

Post-Event

Post-operation

40

既存のトランザクションに参加

既存のトランザクションに参加

Async

  

データベースで独立したトランザクションを使用

適用されない

 

トランザクションが存在���ていないとは、例えばユーザーが取引先企業を画面から作成した場合、
そのイベントによりトランザクションが生成されます。
取引先企業の作成で実行されるプラグインは、
このトランザクションに含められます。
一方トランザクションがすでに存在しているとは、取引先企業の作成時にステージ 40 の
イベントから電子メール活動を作成している場合、電子メール活動の作成で実行されるプラグインでは、
親イベントである取引先企業のトランザクションに含められることになります。

その他のトランザクション

外部から Web サービスを介してリクエストする場合、
パイプラインからトランザクションが発生し、応答が返されるとトランザクションは解放されます。
複数の要求を同じトランザクションで実行するには、実行コンテキストを維持する必要があります。
プラグインではこれが可能ですが、ExecuteMultiple で複数の処理を実行する場合、
それぞれ独立したトランザクションになります。Web サービスを利用して複数の要求を
同じトランザクションで実行する場合、ExecuteTransactionRequest で実行可能です。

並列処理の問題

複数の要求が同時に発生するケースを考えてみます。複数の要求が同時に発生する場合、
ロックや競合が発生する可能性が高くなります。以下は、Dynamics CRM で要求を発生させる
主な場所です。

- 画面操作による処理
   ユーザーが画面から操作することで発生する処理です。
- 非同期処理
   他のアクションの結果、非同期で発生する処理です。トリガされた時点では開始時間はわかりません。
- 一括処理(一括削除機能やサーバー側同期)
   Dynamics CRM 内部によるものや、画面や外部プログラムにより実行される一括処理です。

並列の非同期処理

よくある誤解は、非同期ワークフローまたはプラグインがキューから連続的に処理されるため、
これらの処理の間に矛盾はないというものです。Dynamics CRM は各非同期サービスインスタンスの
スループットを向上されるため、別のサーバーに展開されている非同期サービスインスタンス間で
非同期ジョブを並列処理します。

image

直列処理とタイムアウト

ブロッキングやタイムアウトは、直列化された処理の割合が高いです。
多くの並列処理は、ブロッキングにより直列化され長い処理となりタイムアウトが発生します。

image

連鎖される処理

直接実行した処理によって関連する一連のイベントが発生する可能性があることを
理解する必要があります。例えば以下の例の場合、取引先企業のレコードを作成する
トランザクションには、取引先企業のプラグイン処理、電子メール活動の作成処理、
電子メール活動のプラグインやワークフローの処理が含まれます。

image

プラットフォームの制約

タイムアウトやロックはプラットフォームの制約により発生している場合があります。
エラーの簡単な解決策は、プラットフォームの制約を緩和することですが、
これはシステム全体の可用性とパフォーマンスの根本的な解決策ではありません。
これらは固定し、処理を実行しているところで制約に違反しないよう対処する必要があります。

まとめ

次回は、こういったトランザクションの動作を考慮したうえで、
適切にトランザクションを利用するためのカスタマイズや設定変更の
パターンをご紹介します。

- プレミアフィールドエンジニアリング 河野 高也


Dynamics CRM 2015 パフォーマンスの公開ドキュメント その 3

$
0
0

みなさん、こんにちは。

前回に引き続き、パフォーマンスに関する公開ドキュメントの紹介をします。
シリーズものとなっているため、まだ前回の記事を見られていない方はご覧ください。

Dynamics CRM 2015 パフォーマンスの公開ドキュメント その 1
Dynamics CRM 2015 パフォーマンスの公開ドキュメント その 2

Microsoft Dynamics CRM 2015 Performance and Scalability Documentation(英語):
http://www.microsoft.com/en-us/download/details.aspx?id=45905

Nolock ヒント

SQL Server ではクエリレベルでレコードをロックしないことをデータベースエンジンに
指定することが出来ます。Dynamics CRM のビューのクエリは、これを利用しています。
これは他の読み取り処理を待たせないことを意味しておりパフォーマンスに大きな利点が
あります。SDK を利用してクエリを行う場合、Nolock ヒントを使用することが可能です。

QueryExpression.NoLock Property:
https://msdn.microsoft.com/en-us/library/microsoft.xrm.sdk.query.queryexpression.nolock.aspx

Nolock ヒントの利用は、特に以下のケースで改善が見込まれます。

- 広い範囲のデータ
- 競合する可能性が高いリソース
- シリアル化が重要でない

一方、自動採番の仕組みのように前処理で値が変化しないことを前提としている場合、
Nolock は使用できないことに注意する必要があります。つまり、Nolock ヒントは、
競合の可能性と影響度を判断し、競合した際の値の一貫性が不要な場合に有効です。

ロックの順番

ロックの順番を意識する必要があります。例えば、User X,Y ともに更新するケースを考えてみます。
トランザクション A は User X から更新をかけます。一方、トランザクション B は User Y から
更新をかけます。その後、それぞれのトランザクションが別のユーザーを更新しようとすると
デッドロックが発生します。

image

デッドロックは、更新ロックをかける順番を考慮することで回避することが可能です。
トランザクション A,B ともに User X から更新します。
トランザクション B は、トランザクション A の User X の更新が完了するまで
待たされることになりますが、User Y の更新は User X の更新が完了していないと
実行されないことが保証されるため、デッドロックは回避されます。

image

ロック時間の最小化

自動採番などブロッキングを完全に排除できない場合、競合するレコードにアクセスする処理を
トランザクションの終わりに置くことでブロッキングの時間を最小化することが出来ます。

image

トランザクションの長さ

トランザクションが長いことは、潜在的に競合やブロッキングを発生させる
可能性を高めるため、トランザクションを短くする必要があります。

要求の最適化

実装しているクエリの最適化を行うことでトランザクションを短くできる可能性があります。

- 必要以上の情報にアクセスしていないか(カラム数、レコード数、エンティティ)
- インデックスを利用する

一連の処理におけるイベントを減らす

プラグインやワークフローを同期処理として実装している場合、トランザクションは長くなります。
非同期処理を導入することでトランザクションの長さを短くすることができます。

以下では、取引先企業を作成する際に電子メール活動を同期処理で作成した場合と、
非同期処理で作成した場合で比較しています。
それぞれの画像の 2 つ目の Create Account の開始位置を比べると一目瞭然です。 
同期処理で実装された場合、電子メール活動の作成処理が終わるまで Create Account は待たされます。
一方、非同期処理で実装された場合、電子メール活動の作成処理を呼び出した時点で、
Create Account を実行することが可能です。

image

image

更新は必要最小限にする

例えば、タスクの数をユーザー情報の項目として保持している場合、タスク作成時に毎回ユーザー情報の
更新処理を入れることになります。その場合、タスクの作成からユーザー情報の更新が 1 つの
トランザクションで実施されることとなり、トランザクションが長くなります。
こういった要件は、Dynamics CRM 2015 より搭載された集計フィールド機能を利用することで
ユーザー情報の更新処理をなくし、全体の処理を短くすることが可能です。

image

同じイベントの複数呼び出し

同じイベントに対して複数の実装している場合、潜在的にリソースが競合する可能性が高まります。
以下のように、取引先企業の作成イベントで 3 つの非同期ワークフローを設計していると、
取引先企業の更新処理にて競合が発生する可能性が高まります。
異なる開発者により実装される場合、競合を見落とす可能性があるため慎重に検討する必要があります。

image

プラグイン、ワークフロー

プラグインやワークフローのタイプにはそれぞれ意味があります。
以下の表は一般的に適切な処理とそうでないものを記載します。

ステージ

同期/非同期

プラグイン/ワークフロー

適切

不適切

Pre Validation

Sync

Workflow/ Plug-in

- 短い時間での入力値のチェック

- 長時間のアクション
- 以降のステップでエラーとなった場合、ロールバックされない

Pre Operation

Sync

Workflow/ Plug-in

- 短い時間での入力値のチェック
- エラーが発生した場合、プラットフォームステップの一部としてロールバックされる

- 長時間のアクション

Post Operation

Sync

Workflow/ Plug-in

- プラットフォーム内で実行できる短い処理
- 例:新しく作成したAccount の所有者のタスク作成

- 長時間のアクション
- プラットフォームのステップ完了後にエラーを��こすべきでない

Not in event pipeline

Async

Workflow/ Plug-in

- (ユーザー操作に影響が見込まれる)中時間のアクション
- エラーが発生してもロールバックされない

- 非常に長時間のアクション
- 非常にコストが小さい処理。非同期を生成するのに必要なオーバーヘッドを考慮すると非効率のため

N/A

 

Custom Actions

- Web リソースなど外部から実行されるアクション

- 常にプラットフォームイベントから呼び出される処理(プラグイン、ワークフローを利用すべき)

 

また、プラグインやワークフロー内に長時間を要するバッチ処理を実行することは想定されていません。
別のサービスとして実行してください。

セキュリティ設定

セキュリティ設定の拡張は、コストのかかる操作のため慎重に実施する必要があります。

- チームの設定
   チームにユーザーを追加する場合、デッドロックを避けるため常に同じ順序でユーザーを追加します。
   ユーザーを更新する場合、必要以上のキャッシュを避けるため必要なユーザーのみ更新します。
- レコードの所有者となっているチームの変更
   チームのユーザーを定期的に変更する場合、毎回 Web サーバー上のキャッシュを更新するため、
   特に所有者となっているチームの更新には注意が必要です。
- 大量のチームや部署の追加
   大量のチームや部署の追加は、多くの複雑な計算が必要となるため慎重に実施する必要があります。 
- 共有
   所有者をアサインする場合、共有範囲を考慮する必要があります。
- ユーザー情報の更新
   例えば、ユーザー情報にオープンの活動数を保持するような設計は極力控えてください。
   ユーザー情報が更新されるたびに、コストの高い再計算処理が実行されます。

ダイアグラムの作成

ブロッキングや問題を事前に防ぐツールとして、処理をダイアグラムに図式化する方法があります。
例えば、既存の取引先企業の作成処理にタスクを作成するイベントを追加しようと検討している場合、
図式化することで処理がループすることを事前に検知することができます。

image

分離レベル

SQL Server をより楽観的な分離レベルに変更することで、多くのブロッキングの問題に対処できます。
例えば、既定である Read Commited から Read Committed Snapshot Isolation (RCSI) に変更した場合、
読み取り時のブロッキングから解放されます。一方、この変更により TempDB にある時点の情報が
格納されるため、データベース使用量の増加、TempDB への書き込み処理が追加されます。

分離レベルの変更は一つの有効な手段ですが、
設計の最適化によるブロッキングの回避のほうがはるかに有益なアプローチです。

最後に

- ロックやトランザクションは、システムに必要な仕組みであるが誤った使い方をすると問題を招く
- プラットフォームの制約はシステムを保護するために必要なのもの
- トランザクションの仕組みを念頭に置いた設計実装は、パフォーマンスの改善に最も有益な手段

 

まとめ

パフォーマンスに関して 3 回に渡り紹介してきましたがいかがだったでしょうか。
パフォーマンスはユーザー操作に直結する重要な項目です。トランザクションやロックの
仕組みを理解し、適切に利用いただくことでよりパフォーマンス改善につながります。
ドキュメントには、紹介しきれなかったブロッキングの診断方法など有効な情報が
含まれています。是非合わせてご確認ください。

- プレミアフィールドエンジニアリング 河野 高也

Dynamics CRM Online 2015 Update 1: 新しい電話用アプリリリースのお知らせ

$
0
0

みなさん、こんにちは。

先日 Dynamics CRM 2015 Update 1 用の電話アプリについて以下の
記事で詳細をお伝えしましたが、Windows Phone/Android/iOS 用
アプリケーションがそれぞれストアにリリースされました。

Dynamics CRM Online 2015 Update 1 新機能: 新しい電話用アプリの紹介 その 1
Dynamics CRM Online 2015 Update 1 新機能: 新しい電話用アプリの紹介 その 2

情報元: New CRM for phones app available for iPhone, Android, and Windows Phone

==================================================

このたび、Microsoft Dynamics CRM 用の新しい電話アプリケーションが
リリースされました。ぜひ携帯電話より以下のリンクをクリックして
アプリケーションをお試しください。

より詳細な情報が必要な場合、以下をご参照ください。

電話用およびタブレット PC 用 CRM ユーザーガイド
電話用 CRM とタブレット PC 用 CRM のサポート
電話用 CRM とタブレット PC 用 CRM のセットアップ

その他
‐ 新しい携帯電話用アプリケーションは、Microsoft Dynamics CRM Online
2015 Update 1 が必須です。
‐ 以前のバージョンの携帯電話用アプリケーションもストアで公開して
いますが、CRM for phones express という名前に変更されました。

==================================================

これらのアプリケーションは無償で利用可能です。まだお使いのインスタンス
が 2015 Update 1 でない場合は、評価版をサインアップいただきお試しください。

Microsoft Dynamics CRM 30 日間無料トライアル

‐ 中村 憲一郎

Microsoft Azure Infrastructure-as-a-Service での Dynamics CRM サポート

$
0
0

みなさん、こんにちは。

今日は Dynamics CRM 設置型の Microsoft Azure IaaS 対応をお知らせします。

Microsoft Azure 仮想マシンのマイクロソフト サーバー ソフトウェアのサポート
https://support.microsoft.com/en-us/kb/2721672 (英語)
※日本語の記事では 2015/8/21 現在情報は出ていません。

==以下抜粋==

Microsoft Dynamics CRM

Microsoft Dynamics CRM 2013 and later versions are supported.
Note: Dynamics CRM deployed on Azure IaaS production support requires that Azure Premium storage services be utilized. Be sure to check if Azure Premium Storage services are available in the Azure data center you are considering by visiting Microsoft Azure Services by Region for the latest information. Also, see Performance Guidance for SQL Server in Windows Azure Virtual Machines blog for the most up to date Azure configurations.

== 抜粋ここまで==

選択肢の充実

ご存じのとおり Dynamics CRM はこれまで設置型とオンラインを提供して
いますが、Microsoft Azure IaaS で設置型を利用できることにより、3 つ目の
選択肢ができました。Microsoft Azure IaaS を利用することにより、Dynamics
CRM アプリケーションのコントロールは自社環境に用意する設置型と同じ
になります。またハードウェア、ネットワーク、OS レベルの管理は Microsoft
に任せることができるため、効率よく運用が行えます。

パフォーマンス

パフォーマンスを確保するため、Microsoft Azure IaaS 上で Microsoft Dynamics
CRM を利用する場合、Azure プレミアムストレージサービスの利用が必須です。
これは主に Microsoft SQL Server のパフォーマンスを確保するためです。詳細
は上記記事にあるリンクをそれぞれご確認ください。

Dynamics Lifecycle Service (LCS)

展開と管理を容易にするため、Dynamics Lifecycle Service で Dynamics CRM
を将来的にサポートする計画があります。これは Microsoft のクラウドベース
ソリューションであり、アプリケーションライフサイクルのサポートも視野に
いれたツールとなっています。詳細は今後リリースが発表されたタイミングで
紹介します。

認証と既存ドメインとの関連

Microsoft Azure 上に導入した Dynamics CRM 設置型は、ローカルの環境に
導入する Dynamics CRM と機能としての変わりはありません。既存のドメイン
とどのように連携するかは多くの選択肢があり、またネットワークの構成は
Microsoft Azure IaaS と同様です。

まとめ

より多くの選択肢をお客様に提供できることで、最適なソリューションを
選択していただけると感じます。Microsoft Azure IaaS を利用する場合は、
Microsoft Azure IaaS のナレッジが必要となりますが、Dynamics CRM 以外
にも多くの活用が検討できるサービスですので、これを機に是非ご検討
ください。

Microsoft Azure の学習リソースは多くありますが、ビデオトレーニングが
好きな方は、是非弊社の Microsoft Virtual Academy をご活用ください!

Microsoft Virtual Academy IT プロ向け Microsoft Azure コンテンツ
http://www.microsoftvirtualacademy.com/product-training/product-windows-azure-jp

- 中村 憲一郎

Microsoft Dynamics CRM Mobile SDK の更新とAzure Mobile Connector SDK のリリース

$
0
0

みなさん、こんにちは。

先日 Bob Stutz のブログにて Dynamics CRM のモバイル SDK に関する
アナウンスがありましたので紹介します。

情報元: Bringing CRM Mobility to New Heights with Azure Mobile Apps Connector and CRM Mobile SDK

=====================================================

2015年春 リリースを行った際に、「一度の構成ですべての場所に展開できる」ことで
世界中のユーザーにモバイルによるシームレスな体験を提供できるとお伝えしました。

その一環として Dynamics CRM Online 向け Microsoft Azure Mobile Apps コネクターの
リリースと、モバイル SDK の更新を発表します。これらの SDK で、様々な業界や役割に
最適化された、独自のモバイル体験を容易に開発できるようになります。

顧客にとって素晴らしい体験を提供するために、モバイルが重要な位置を占めることは
明らかであり、Dynamics CRM 既定のモバイルアプリケーションは、カスタマイズされた
体験をユーザーに提供することが出来るよう設計されています。しかしながら特定の
シナリオやユーザーによっては、その業務や業種に特化したカスタムのモバイルアプリ
ケーションが必要なり、モバイル SDK と Azure Mobile Apps コネクターが大きな助けと
なります。

Azure Mobile App と Dynamics CRM の組み合わせは多くの新しいシナリオで利用可能
です。最近リリースされた Azure App Service の 1 つである Azure Mobile Apps を利用
することで、どんなデバイスやプラットフォーム向けにも容易に開発が可能です。
モバイルアプリケーションの開発者は Azure のスケーラビリティやオフライン同期、
認証機能や通知機能を高いコストを支払うことなく利用できます。Azure Mobile Apps
コネクターの詳細は、以下を参照してください(英語)。

Build a Mobile Data Sync Experience for Dynamics CRM with Azure App Service
http://azure.microsoft.com/blog/2015/07/23/azure-app-service-mobile-data-sync-dynamics-crm/

モバイル SDK の更新は、Android および iOS 向け、および Windows 向けのテンプレートと
ライブラリが含まれます。この SDK はタスクに特化したアプリケーションやバックエンドの
システムデータを集計するシナリオ、セルフサービス用のアプリケーションや、デバイス
固有の機能を利用するシナリオで活用できます。詳細は以下記事を参照してください(英語)。

Microsoft Dynamics CRM Mobile SDK Update and Azure Mobile Connector SDK
http://blogs.msdn.com/b/crm/archive/2015/07/15/microsoft-dynamics-crm-mobile-sdk-update-and-azure-mobile-connector-sdk.aspx

さらに、これまでに提供してきた多くのリソースをまとめた、モバイルアプリケーション
開発者向けのポータルをリリースしました。このポータルでは今後のモバイル開発向けの
アナウンスや、ユーザー同士が交流を図れるフォーラムが提供されます。

Microsoft Azure と Dynamics CRM のシナジーにより素晴らしい価値を顧客に提供できます。
すでに Azure IaaS のサポートをはじめ、多くのクラウドに対する投資を行っています。
今回の発表で「モバイルファースト、クラウドファースト」の世界への大きな一歩を踏みだす
ことが出来ました。しかしこれはまだ始まりであり、今後も素晴らしいものが続々と登場
する予定です。

Bob Stutz, Corporate Vice President Microsoft Dynamics CRM

=====================================================

こちらのブログでも、公開されたコネクターやモバイル SDK のリソースについて
順次紹介していきますので、お楽しみに!

- 中村 憲一郎

Dynamics CRM 2015 SDK 7.1.1 がリリースされました!

$
0
0

みなさん、こんにちは。

先日、Microsoft Dynamics CRM 2015 用 SDK の 7.1.1  がリリース
されました。最新の SDK は以下の リンクよりダウンロード可能です。

Microsoft Dynamics CRM 2015 Software Development Kit (SDK) 
http://www.microsoft.com/en-us/download/details.aspx?id=44567

こちらのバージョンでは以下の更新が含まれています。

- Dynamics CRM Online 2015 Update 1 および Dynamics CRM 2015 Update 0.1 に対応しました。
- 参考情報としていくつかのホワイトペーパーにリンクが追加されました。
- 既存の情報がいくつか更新されました。

今回はおもに新しいバージョンの対応ですが、いくつかドキュメントが更新
されているため、利用時には最新版のダウンロードをご利用ください。

‐ 中村 憲一郎

Dynamics CRM Online 2015 Update 1.1 がリリースされました!

$
0
0

みなさん、こんにちは。Dynamics CRM Online 2015 Update 1 向けの更新がリリースされました。

アジア圏のデータセンター (https://xxx.crm5.dynamics.com) の組織には、9 月 1 日に Update 1.1 が適用されています。日本のデータセンター (https://xxx.crm7.dynamics.com) の組織には、9 月 3 日から 4 日の間に適用される予定です。

この更新には、複数の修正が含まれております。修正リストは、以下のサポート技術情報を参照してください。

Update 1.1 for Microsoft Dynamics CRM 2015 Online
https://support.microsoft.com/ja-jp/kb/3072333

 

2015 年 9 月 2 日時点のバージョンはこのようになっています。Dynamics CRM のバージョンの命名規則については、こちらを参照してください。

 

このブログでも一部詳細を案内してますが、Dynamics CRM Online 2015 Update 1.1 より以下がサポート対象となりました。

  • Windows 10
  • Microsoft Edge
  • Android 5.0


- 野田 良二

Dynamics CRM 2015: サーバーサイド同期でのメールボックスのテストと有効化について

$
0
0

みなさん、こんにちは。

今日は管理者の方向けの情報として、Dynamics CRM 2015 サーバー側
同期でのメールボックスのテストと有効化について情報を提供します。

情報元: http://blogs.msdn.com/b/crm/archive/2015/08/31/test-and-enable-mailboxes-in-microsoft-dynamics-crm-2015.aspx

================================================

Microsoft Dynamics CRM を利用する理由の一つとして、電子メールや予定、
連絡先やタスクを一元管理することで、顧客に対する情報をチームで同時に
確認できる点があげられます。

サーバー側同期を利用する場合、事前にメールボックスのテストと有効化を
実施する必要があります。

この記事ではメールボックスのテストと有効化についての詳細をお伝えします。


メールボックスのテストと有効化が必要な理由

メールボックスのテストと有効化はサーバー側同期を利用する場合にのみ
必要で、Outlook や電子メールルーターで同期を利用する場合には必要が
ありません。

すべての Dynamics CRM ユーザーは既定でメールボックスが作成されますが
サーバー側同期を利用する場合は、「メールボックスのテストと有効化」を
クリックして正しく構成できているか確認する必要があります。

image

上記ボタンをクリックした際、以下の検証が行われます。

- 電子メールアドレスが有効か
- 電子メールサーバーの接続が機能するか
- 電子メールボックスにアクセスする権限があるか

これらの検証が成功した場合、メールボックスが有効になります。

送信メールでサーバー側同期を利用する場合は、テスト用の電子メールが
送付されます。このテストメールは無効にすることも内容を変更する事も
できません。

image


テストを実行できるユーザーと場所について

テストと有効化が実行できるのは以下のユーザーです。

- メールボックスの所有者
- システム管理者
- 他ユーザーのメールボックスにアクセス権があるユーザー

自分のメールボックスをテストする場合

1. 画面右上のギアアイコンより「オプション」を選択。

2. 電子メールタブより「メールボックスの表示」リンクをクリック。

3. メールボックスレコードが開くので、「メールボックスのテストと有効化」
ボタンをクリック。

他ユーザーのメールボックスをテストする場合

1. ナビゲーションより設定 | 電子メールアクセス構成 | メールボックスを選択。

2. テストしたいメールボックスを選択して、「メールボックスのテストと
有効化」をクリック。

image


テストを実施するタイミングについて

以下の場合にメールボックスのテストを有効化が必要です。

- 初回設定時
- 電子メールサーバープロファイルを変更した際
- メールボックスの同期方法をサーバー側同期に変更した際
- 無効だったメールボックスを有効化する際
- 電子メールアドレスを変更した際

尚、電子メールアドレスを変更した場合、システム管理者権限にて電子
メールの承認が必要です。

以下の手順でテストの必要があるかを簡単に確認できます。

1. 設定 | 電子メールアクセスの構成 | メールボックスを開きます。

2. 一覧でサーバー阿川同期を利用する設定になっているにも関わらず
状態が「実行しない」になっている場合はテストが必要です。

image


テストの結果について

テストの結果を把握することは重要です。テストは 15 分程度完了に
時間がかかる場合があります。

1. テストしたメールボックスレコードを開きます。

2. 「通知」をクリックしてテスト結果を確認します。

image

もしシステム管理者の場合は、メールボックスの一覧からも確認できます。

image


テスト前後のステータスについて

テストと有効化の前

メールボックスに変更を行ったがテストと有効化を実行していない場合、状態が
「テストしない」と表示されます。

テストと有効化の最中

テストと有効化の最中は特別なステータスがありません。

テストの完了後

テストが完了した場合、「成功」または「失敗」となります。


トラブルシューティング

Dynamics CRM サーバーの負荷にもよりますが、15 分程度でテストは完了します。
結果が失敗だった場合、またはステータスが変わらない場合は問題が発生しています。

以下の表に、主な原因と対策を示します。

一般的な問題

問題原因対策
ステータスが「実行しない」となっていて、テスト完了時間が前回実行時間のままの場合1. 同期方法がサーバー側同期になっていない
2. システム設定の同期方法がサーバ側同期になっていない
3. まだテストが実行中
1. サーバー側同期を利用しない場合は期待した動作のため問題なし
2. システム設定を再確認
3. 最低 15 分間待つ
ステータスが「失敗」となっていて、テスト完了時間が最後にテストを実行した時間多くの船体的な理由が考えられるメールボックスの通知より詳細を確認
ステータスが「失敗」となっていて、通知に以下のエラーが出る場合

関連するユーザーには、Microsoft Dynamics CRM の有効なライセンスがありません。
ユーザーの権限が読み取り専用となっているか、セキュリティロールが割り当てされていないユーザーの設定と権限を確認


電子メールアドレスの問題

問題原因対策
ステータスが「失敗」となっていて、通知に以下のエラーが出る場合

電子メールの受信中にメールボックス xxx の場所を決定できませんでした。
または
メールボックス xxx で指定されている資格情報が正しく、電子メールを送信するためのアクセス許可があることを確認してください。その後、メールボックスで電子メール処理を有効にしてください。
電子メールアドレスまたはパスワードが正しくない電子メールアドレスおよびパスワードを再確認
ステータスが「失敗」となっていて、通知に以下のエラーが出る場合

メールボックス xxx の電子メール アドレスは、Office 365 管理者の承認が必要です。
電子メールアドレスが承認されていない電子メールアドレスを承認します


電子メールプロファイルの問題

問題原因対策
ステータスが「失敗」となっていて、通知に以下のエラーが出る場合

メールボックス xxx に電子メール サーバー プロファイルが関連付けられていないか、電子メール サーバー プロファイルが非アクティブです
電子メールサーバープロファイルを選択していません電子メールサーバープロファイルをメールボックスに設定する
ステータスが「失敗」となっていて、通知に以下のエラーが出る場合

メールボックス xxx で予定、取引先担当者、タスクを同期できません。メールボックスの場所を決定できませんでした。
1. 誤った電子メールサーバープロファイルを選択している
2. 電子メールサーバーとの接続に問題がある
1. 正しい電子メールサーバープロファイルを指定する
2. 一定時間後再度試す


追加のリソース

追加のリソースとして、こちらの記事もご参照ください。

サーバー側の同期によって設定されたメールボックスの電子メール構成をテストする

================================================

 

Microsoft Dynamics CRM Online は既定で同じテナントの Exchange Online に対して
構成済のため、比較的容易に構成ができます。是非お試しください。

- 中村 憲一郎


Microsoft Dynamics CRM 2016 – 次世代のインテリジェントな顧客エンゲージメントの提供

$
0
0

みなさん、こんにちは。

先日 Bob Stutz が Microsoft Dynamics CRM 2016 に関する記事を公開しました。
今日はその内容を紹介します。

情報元: Microsoft Dynamics CRM 2016 – Delivering the Next Generation of Intelligent Customer Engagement

=======================================================
Microsoft Dynamics CRM は今年の会計年度を素晴らしい成長を遂げました。
アナリストレポート (analyst reports) やインダストリーアワード (industry awards)も
我々のマーケットのリーダシップを示しており、強い影響力を増しています。

これはとても喜ばしいことですが、何よりもお客様の生産性を向上できる事が
我々にとってエキサイティングなことです。

Microsoft は、企業の生産性とビジネスプロセスの考え方について再発明する
ことにコミットしており、その結果として Dynamics CRM が生産性ツールと
シームレスに機能するように開発しています。Dynamics CRM Online, Office
365、PowerBI などの生産性ツールは顧客の生産性を向上します。

例えば、米国で最大の鉄鋼関連のプライベート企業である O’Neal Steel は
Dynamics CRM Online と Office 365 を営業で活用して顧客との関係構築や
潜在顧客の管理を行っています。このソリューションで O’Neal Steel は顧客を
一丸管理できるため、すべての従業員は最新で完全な情報に、場所に関わらず
使いなれたソフトウェアからアクセスできます。生産性が向上したことで、
潜在顧客との会話が 2-30% 向上し、結果、セールスの成功率が向上しました。

生産性の向上と成果については以下の記事をご覧ください。
Five Ways Customers Are Getting More Done with Microsoft Sales Productivity Solution

これらの成功は非常に喜ばしいことですが、また始まったばかりです。
本日、次期バージョンの顧客管理ソリューションでる Microsoft Dynamics CRM
2016 を今年の第 4 四半期にリリースすることをアナウンスしました。

我々は Dynamics CRM 2016 を顧客と直接対応する従業員が、日々の活動を
1 つの体験で実行できるようにデザインしています。必須となる基礎的な作業を
行う場合に複数のアプリケーション間を移動するといった、不要であり従業員の
作業集中の妨げとなるタスクを無くしました。無駄な作業時間を削減することで
本当に集中すべき顧客に対する活動に集中できます。

以下の新機能でこのことを可能にしています。

強化された Excel の体験

新しい Excel テンプレートをはじめ、複数のタスクを自動化します。この機能は
組織全体で活用できますが、特に営業の方々はコミッションの計算やセールス
フォーキャストの管理などが容易になるなど恩恵が多くあります。Excel への
エクスポートや切り替えをせずとも、セールスプロセス内で分析やインサイトを
得ることができ、煩雑な多くの手順を省略できます。

次世代の Outlook 向け CRM アプリケーション

電子メールの追跡や担当者の追加に加え、PC、Mac および携帯電話のブラウザ
を利用してレコードの追加を行うことができます。

Office Delve との連携

関連の深い同僚が頻繁に利用している重要なコンテンツを、Office Delve との
連携で見つけることができます。例えば顧客や営業案件に対するプレゼン資料、
提案資料などの発見が容易になります。

アプリケーション間連携

SharePoint、OneDrive for Business、Office 365 グループにストアされている
ドキュメントを CRM レコードの観点から利用できます。アプリケーション間
連携によって、複数の Office アプリケーションを Dynamics CRM 利用中の
ブラウザやモバイルアプリケーションから意識することなく開けます。
例えば iPad 上の PowerPoint や iPhone 上の Word をシームレスに開くことが
出来、ドキュメントを閲覧した後はバックボタンを使うだけで、元の CRM
レコードに自動的に戻ります。

CRM データのドキュメント作成

顧客のサマリーや見積/発注/請求を作るために、手動で CRM データを取得する
必要がなく、ドキュメント生成機能で容易にドキュメントを作成できます。
これらの作業を自動化することで業務効率が向上します。

次世代のコルタナ統合 

我々はコルタナ統合を、営業活動、顧客および営業案件に採用します。これに
よりコルタナは営業担当者に最も関連の深い様々な情報を提供します。

百聞は一見にしかずです。是非新機能のデモビデオ(英語)をご覧ください。
ビデオでは営業ドキュメントの作成や拡張された Excel 機能、Outlook 向けの
CRM アプリケーションやコルタナ統合を使って我々の顧客をサポートする
様子をご覧いただけます。これらの機能は Delve やアプリケーション間連携
を紹介しているセールスプロダクティビティビデオ(英語)でもご覧いただけます。

生産性の向上に加えて Microsoft Dynamics CRM 2016 では、インテリジェンスや
モバイル性、サービスの機能向上を含みます。詳細は今後紹介していきますが
以下にハイライトを紹介します。

インテリジェンス

今回のリリースでは、営業、サービルおよびマーケティングに Cortana Analytic
Suite を利用したインテリジェンスを提供します。例えばクロスセルである製品
提案やサポートケースにおける解決策の提案が利用できたり、Microsoft Social
Engagement の感情分析を Azure Machine Learning を利用して分析できます。
また顧客に関わらずすべての業務についてインテリジェントで拝啓を理解した
サポートを提供します。これは活動のサイクル数を減らし、より早く案件獲得
をした組織にとって非常に重要な機能です。

モバイル性

我々は引き続きモバイルアプリケーションに投資をしています。今回のリリース
ではオフライン機能のサポートやタスクベースのアプリケーション、Microsoft
Intune によるモバイルの集中管理やコルタナ統合による CRM データの活用、
ボイスコマンドの利用をサポートします。

サービス

サポート案件を通したカスタマサービス機能の強化を行ってきました。2014 年に
買収した Parature のセルフサービス機能やナレッジ機能との統合もその一つです。
今年の 7 月に FieldOne の取得を行いフィールドサービス機能を顧客サービスの
ポートフォリオに追加しました。今回のリリースではこれらの機能を統合します。
より詳細については今後紹介しますのでご注目ください。

Dynamics CRM 2016 だけでなく、Microsoft Dynamics Marketing や Microsoft
Social Engagement にも引き続き投資しています。例えば SMS をマーケティングの
チャネルに追加したり、ソースと感情分析言語を追加しています。

より詳細はリリースプレビューガイドでご確認いただけます。繰り返しになります
が、今後追加の情報を随時公開してまいりますので、期待してお待ちください。

=======================================================

- 中村 憲一郎

Dynamics CRM: 組織用 PowerShell の紹介

$
0
0

みなさん、こんにちは。

今日は管理者の方向けの情報として、Microsoft Dynamics CRM 組織の
データ操作を行う PowerShell を紹介します。

Microsoft.Xrm.Data.Poweshell: PowerShell for Dynamics CRM Organization Data

概要

PowerShell は Microsoft Dynamics CRM 2011 よりサポートされましたが
組織の作成やインポート、トレース設定の変更など、展開サービス関連
の関数とスクリプトが中心となっており、組織レベルの設定の変更や
ユーザー設定の変更、レコードの取得などは行えませんでした。

その後 SDK 内で XrmTooling と呼ばれるツールが提供され、その機能の
1 つとして組織に対する PowerShell がサポートされましたが、あまり
広く知られておらず、また使い方も開発者向けのものでした。

Microsoft.Xrm.Data.Poweshell

Microsoft.Xrm.Data.Poweshell は XrmTooling をベースにして、より
管理者が使いやすい形式にしたものです。このモジュールは多くの
関数を提供します。これらの関数を組み合わせることで用途にあった
スクリプトを作成し、各種作業を自動化することができます。

セットアップの仕方

1. Microsoft.Xrm.Data.Powershell.zipをサイトよりダウンロードして
以下のフォルダのいずれかに解凍します。特定のユーザーで利用する
場合は上のパスを、システム全体で利用する場合は下のパスを使います。

   • %USERPROFILE%\Documents\WindowsPowerShell\Modules
   • %WINDIR%\System32\WindowsPowerShell\v1.0\Modules

以下はユーザープロファイルに解凍したフォルダを展開した例です。

2. モジュールはデジタル署名されていないため、環境によっては実行
ポリシーを変更する必要があります。以下のコマンドを PowerShell で
実行する事でポリシーを変更できます。

> Set-ExecutionPolicy –ExecutionPolicy RemoteSigned –Scope CurrentUser

詳細は Set-ExecutionPolicyをご覧ください。

3. PowerShell を開いて以下コマンドを実行するとモジュールが
読み込まれます。

> Import-Module Microsoft.Xrm.Data.Powershell
使い方
以下の方法で Dynamics CRM 組織に接続が可能です。
1. PowerShell を開いて、以下のコマンドを実行します。GUI を利用して
サインインが行えます。接続情報は $conn グローバル変数に格納されます。
> Connect-CrmOnlineDiscovery –InteractiveMode

2. 以下のコマンドでレコードの作成、更新、読み取り、削除を
実行できます、

  # 取引先企業を作成して GUID を変数に保存します
  $accountId = New-CrmRecord -conn $conn -EntityLogicalName account -Fields @{"name"="Sample Account";"telephone1"="555-5555"}   

  # GUID を表示します
  $accountid

  # GUID を指定してレコードを取得します。
  $account = Get-CrmRecord -conn $conn -EntityLogicalName account -Id $accountId -Fields name,telephone1   

  # 取得したレコードを表示します
  $account

  # 新しい値をレコードに設定します
  $account.name = "Sample Account Updated"

  # レコードを更新します
  Set-CrmRecord -conn $conn -CrmRecord $account

  # GUID を指定してレコードを再度取得します
  Get-CrmRecord -conn $conn -EntityLogicalName account -Id $accountId -Fields name   

  # レコードを削除します
  Remove-CrmRecord -conn $conn -CrmRecord $account

3. 以下のコマンドでシステム設定を操作できます。

  # 現在のシステム設定を表示します 
  Get-CrmSystemSettings -conn $conn –ShowDisplayName   

  # PricingDecimalPrecision 設定の値を 0 から 1 変更します 
  Set-CrmSystemSettings -conn $conn -PricingDecimalPrecision 1  

  # 再度システム設定を表示します。 
  Get-CrmSystemSettings -conn $conn –ShowDisplayName

4. 以下のコマンドでサポートされている関数を取得できます。

  Get-Command *crm*

5. 以下のコマンドでそれぞれの関数の詳細を確認できます。
以下は New-CrmRecord 関数の詳細を表示します。

  Get-Help New-CrmRecord –Detailed

まとめ

こちらのモジュールは今後基本的な関数を充実させる予定です。
是非お試しいただき、ダウンロードサイトに直接フィードバックを
お願いします。

- 中村 憲一郎

Dynamics CRM 2015 / Online UX デザインガイドライン その 1

$
0
0

みなさん、こんにちは。

Dynamics CRM 2015 / Online におけるユーザーエクスペリエンス(UX)デザインガイドラインが
公開されました。

Microsoft Dynamics CRM 2015 Best Practices Documentation:
http://www.microsoft.com/en-us/download/details.aspx?id=48268

なお、Dynamics CRM 2013 におけるデザインガイドはこちらです。

概要

このガイドの目的は Dynamics CRM 2013 以降に導入された新機能を
ユーザーが利用しやすいように設計するガイドラインを提供しています。
主な内容は以下の通りです。これから 3 回にわたり紹介していきます。

- UX デザインのベストプラクティス
- CRM コンポーネントの推奨デザイン
- CRM デザインガイドライン

今回は、UX デザインのベストプラクティス部分を紹介します。

はじめに

このベストプラクティスは、過去の CRM 導入プロジェクトの実績をもとに考察しています。
成功している実装方法にはいくつかの共通点や特徴があり、それらを UX デザインとして
設計するための一般的なベストプラクティスを説明しています。

利用者のためのデザイン

重要なポイントは、CRM が利用者の視点で設計されていることです。

ジェネラリストよりスペシャリスト

一般的にどの立場の人も大きく2つの役割を持っています。誰でも実施するような仕事の
役割であるジェネラリストか特定の分野で専門的な仕事をするスペシャリストです。
ガイドによるとジェネラリストの経験を最適化することは難しいため
スペシャリスト向けに最適化することを推奨すると書かれています。
また、設計が適切に実施されているか段階的にチェックすることが重要です。

技術者視点ではなく利用者視点

UX デザインは、最終的なエンドユーザーをターゲットにしているため、
設計段階からエンドユーザーの視点で検討を進めること重要視しています。
それには早い段階でプロトタイプを作成し、設計を完了する前に実際のエンドユーザーに
それらをテストしてもらうことでユーザビリティの問題を発見することに役立ちます。

デザイン導入サイクル

これら適切な設計を導入するためのサイクルを図で紹介しています。
具体的な考察は、ガイドを参照ください。

好循環の例

image 

悪循環の例

image

CRM は複数の利用者のニーズに向けて実装する必要があります。
利用者が効率的に利用できることによって価値が認知され、高品質のデータの蓄積につながり、
引いてはビジネス上の意思決定に活用できるとガイドは説明しています。

洞察されていないデータ

"ビッグデータ"、"データ駆動型の意思決定" などデータに関する用語が頻繁に使われている昨今では、
データの重要性が高まっています。成功したCRM のデザインは、そのままのデータを示すより、
洞察に基づいたプロセスを構築している傾向があります。

- 評価されなかったものはなにか
   顧客に対するどの行動が不適切だったのか、顧客対応をどう変えるのか
- 何がうまくいかなかったか
   しばし発生するエラーでは何が起こっているか、顧客満足度やコストに悪影響を与えているもの
- 何が物事をより効率化するのか
   どこで時間や効率が失われているか、どのような行動が正しい結果をもたらすのか
- どのように簡単に見つけられるか
   どのように組織の知見を蓄積するのか、他の人は重複を避けるために何をしているのか
   それをどう見つけるのか

ガイドでは、具体的なケーススタディも紹介しています。

成果の計測

特に規模の大きい CRM では、達成した結果より個々の活動に焦点がおかれてしまいがちです。
これではビジネスの成果に結びつかない可能性があるとガイドは指摘しています。
実装者は、CRM を設計するうえで操作や活動よりも、成果に焦点を当てる必要があります。

- 2 クリックのプロセスを増やすことで、サービスコールの初回クローズ率が 50 %増える
- 4 クリックのプロセスを増やすことで、営業案件の受注率が 10 %増える

もし、クリック数という操作を設計の判断基準としていた場合、上記のケースはいずれも
クリック数が増えるという理由から導入されません。サービスコールの早期クローズや
営業案件の受注率の向上といったビジネス上の成果に焦点を置くことが重要であると
ガイドは指摘しています。

まとめ

初回は、このガイドの位置づけと UX デザインをするうえで重要視すべきポイントが
いくつか紹介されていました。次回は、具体的に CRM のコンポーネントを
どうデザインすべきか推奨事項を合わせて紹介します。

- プレミアフィールドエンジニアリング 河野 高也

Dynamics CRM 2015 / Online UX デザインガイドライン その 2

$
0
0

みなさん、こんにちは。

前回に引き続き Dynamics CRM 2015 / Online におけるユーザーエクスペリエンス(UX)
デザインガイドラインを紹介します。 本記事はシリーズもののため、
前回の記事を見られていない方はご覧ください。

Dynamics CRM 2015 / Online UX デザインガイドライン その 1

Microsoft Dynamics CRM 2015 Best Practices Documentation:   
http://www.microsoft.com/en-us/download/details.aspx?id=48268

今回は、CRM コンポーネントのおける推奨事項についてポイントを紹介します。

Dynamics CRM コンポーネント

Dynamics CRM は、さまざまなシナリオに対応するため複数の実装オプションを用意しています。
ガイドでは設計する際、どのコンポーネントが UX デザインの観点で適切であるか紹介しています。

ダッシュボード vs ナビゲーションバー

ダッシュボードは、UX デザインにおいて非常に重要なコンポーネントです。
ダッシュボードは役割ごとに定義することができるため、すべての役割の利用者は、
ダッシュボードから日々の業務の 80-90% を開始するようデザインする必要があります。

一方、ナビゲーションバーはしばし誤解された使い方をされているとガイドは指摘しています。
ナビゲーションバーは、コンテキストの切り替えで利用されるべきで、業務プロセスに
含まれるべきではありません。

サブグリッド vs 関連ナビゲーション

サブグリッドと関連ナビゲーションは、レコードに関連する情報をグリッドで表示するための
コンポーネントです。ガイドではそれぞれ別の目的で使う必要があると指摘しています。

- サブグリッドは、業務プロセス上で重要な情報のみを表示する。
   表示するレコード数は 10 レコード未満に抑える
- 関連ナビゲーションは、利用者が関連情報を分析して判断が必要な場合に利用する。

例えば、取引先企業フォームに見積もり収益、推測クローズ日、所有者が入力されている
営業案件のサブグリッドを配置することで、この顧客からどの程度売り上げが見込まれ、
誰が案件のオーナーになっていているか瞬時に判断することが可能です。
ポイントは、利用者が一つ一つレコードを分析することなく重要な判断ができることに
サブグリッドの意味があります。

一方、関連ナビゲーションでは、過去の営業活動がどのように行われたかを利用者が
一つずつ分析する必要がある場合などに利用します。利用者は、分析したい情報を自身で分析します。

データの作成と活用の最適化

UX デザインの重要な原則は、データの作成とデータの消費は異なるモデルで設計するというものです。
データの生成とデータの消費は、それぞれにおいて最適に設計する必要があります。

簡易作成フォーム

簡易作成フォームは、データの作成を容易に行うことができるコンポーネンです。

- 操作の流れを失うことなく関連するレコードをルックアップビューから作成できる
- 全く関係ないレコードをナビゲーションバーから作成できる

簡易表示フォーム

簡易表示フォームは、関連レコードの情報をフォーム上に即座にプレビューすることが
できるコンポーネントです。利用時には以下のことに注意が必要です。

- 必要最低限のフィールドのみ表示する。すべてのフィールドを表示しない
- 親のレコードのフォームに配置することで、アクションにつながる情報を表示する
   例えば、取引先企業フォームにプライマリコンタクトの情報を表示することで、
   利用者は、プライマリコンタクトを検索せず担当者にコンタクトすることが可能です。
  
名前とアドレスフィールド

名前とアドレスフィールドは、データの作成と消費が異なるデザインで設計されており
UX デザインの原則に則って設計されているフィールドです。

取引先担当者を作成する際、氏名フィールドを入力する際は、入力に最適な構造に変化し、(右の赤枠)
入力された氏名を確認する際は、読みとるに最適な構造に変化しています。(左の赤枠)

image

業務プロセスバー

業務プロセスは、利用者が容易に確立されたプロセスに従って操作するためのコンポーネントです。
プロセスでルックアップやクイックビューのように関連する情報にアクセスする場合も、
同じ画面内で遷移するよう設計されています。

設計時には、さまざまな段階でチェックポイントを設けることを推奨します。
業務プロセスのステージ数やステップ数は、UI で管理できる範囲内に設計することで、
ユーサビリティに悪影響を与えることを防ぎます。

ナビゲーションの流れ

UX デザインにおいて利用者が直観的に操作できることは非常に重要です。
Dynamics CRM のナビゲーションの多くはこれに焦点を当てて設計されています。

- ポップアップよりインプレースナビゲーション
  インプレースナビゲーションにより、利用者はウィンドウを意識する
  必要なく必要とする情報にアクセスすることが可能です。
- 自動保存
   ユーザーが保存することを意識する必要がなくなります。
- スクロールとクリックをなくす
  スクロールは、利用者のクリック数が増える主な要因です。フォームのレイアウトやデータの流れを
  変更することでスクロールを無くし、クリック数を減らします。
  

まとめ

今回は、各コンポーネントにおける UX デザインの重要なポイントが記載されていました。
次回は、全体のガイドラインの紹介とガイドに則ったデザインの例を紹介します。

- プレミアフィールドエンジニアリング 河野 高也

Dynamics CRM Online: PowerShell でユーザーを作成する

$
0
0

みなさん、こんにちは。

今日は管理者の方向けの情報として、PowerShell を使った Microsoft
Dynamics CRM Online ユーザーの作成を紹介します。

事前準備

PowerShell 4.0

今回利用する PowerShell モジュールは PowerShell 4.0 以上が必要と
なります。以下の方法でバージョンが確認可能です。

1. PowerShell を起動して、以下のコマンドを実行します。
PS C:\> host
2. Version にバージョン情報が表示されます。

バージョンが 4.0 より古い場合は、以下のページより新しいモジュールを
取得してください。

Windows Management Framework 4.0
http://www.microsoft.com/ja-jp/download/details.aspx?id=40855

Office 365 PowerShell モジュール

Office 365 用の PowerShell も併用するため、まだインストールされていない
場合は、以下記事を参考にインストールしてください。

Windows PowerShell による Azure AD の管理
https://technet.microsoft.com/library/jj151815.aspx

必要なモジュールは以下の 2 つです。

Microsoft Online Services サインインアシスタント (32 ビット/64 ビット版)
http://www.microsoft.com/ja-jp/download/details.aspx?id=41950

Windows PowerShell 用 Azure AD モジュール
32 ビット版 http://go.microsoft.com/fwlink/p/?linkid=236298
64 ビット版 http://go.microsoft.com/fwlink/p/?linkid=236297

Microsoft Dynamics CRM モジュール

Microsoft Dynamics CRM 用の PowerShell モジュールのインストールは
以下の記事をご覧ください。

Dynamics CRM: 組織用 PowerShell の紹介

サンプル

Microsoft Dynamics CRM Online のユーザー登録サンプルスクリプトは
以下の手順で利用できます。

1. ブラウザより以下のサイトにアクセスします。
https://gallery.technet.microsoft.com/scriptcenter/PowerShell-functions-for-16c5be31

2. Description にある Microsoft.Xrm.Data.Powershell Samples_日付.zip を
ダウンロードします。

3. ダウンロードした zip ファイルを解凍し、AddCrmOLUsersFromCSV
フォルダを任意の場所に保存します。

作成するユーザー情報の指定

フォルダ内の O365Users.csv を Excel やメモ張で開きます。ここで
登録したいユーザーの情報を記載します。BusinessUnit には CRM
ユーザーが所属する部署名を、SecurityRoleName にはアサインしたい
セキュリティロール名を指定します。

UserPrincipalName: ユーザーの UPN を指定します。
DisplayName: 表示名を指定します。
FirstName: 名を指定します。
LastName: 姓を指定します。
PhoneNumber: 電話番号を指定します。
MobilePhone: 携帯電話番号を指定します。
PostalCode: 郵便番号を指定します。
City: 都市を指定します。
Country: 国を指定します。
State: 県を指定します。
StreetAddress: 住所を指定します。
Title: 役職を指定します。
Department: 所属部署を指定します。
Office: オフィスの場所を指定します。
Fax: Fax 番号を指定します。
UsageLocation: 利用場所を指定します。日本の場合は JP
Password: パスワードを指定します。
StrongPasswordRequired: 複雑なパスワードが必須か指定します。
PasswordNeverExpires: パスワードの期限があるか指定します。
ForceChangePassword: 初回ログイン時のパスワード変更が必須か指定します。
BusinessUnitName: Dynamics CRM の部署を指定します。
SecurityRoleName: Dynamics CRM のセキュリティロールを指定します。
SystemUserId: 空欄にしておきます。
BusinessUnitId: 空欄にしておきます。

ファイルを UTF-8 フォーマットで保存します。

サンプルスクリプトの編集

AddCrmOLUsersFromCSV  フォルダ内の AddCrmOLUsersFromCSV.ps1 を
任意のエディタで開きます。ここでは PowerShell ISE を利用します。

1. AddCrmOLUsersFromCSV.ps1 を右クリックし編集をクリックします。

2. 170 行目にある $msolUser に Office 365 の管理権限があるユーザー名を
入力します。

3. 171 行目の $msolPassword に上記ユーザーのパスワードを入力します。
※$ などの特殊文字は `$ のようにエスケープしてください。

4. 172 行目の $msolDomainName に Office 365 ドメイン名を入力します。

5. 173 行目の $csvPath CSV ファイルのパスを入力します。

6. 175 行目の $crmAdminUser に Dynamics CRM Online の管理者権限
があるユーザー名を入力します。

7. 176 行目の $crmAdminPassword に上記ユーザーのパスワードを
入力します。

8. スクリプトを保存します。

スクリプトの流れ

このサンプルスクリプトは、以下の順序で処理を行います。

- Office 365 PowerShell モジュールの読み込み
- Office 365 インスタンスへの接続作成
- Dynamics CRM Online 組織への接続作成
- CSV ファイルの読み込み
- 読み込んだユーザー情報を Office 365 へ登録し、Dynamics CRM の
ライセンスを付与
- Dynamics CRM 側に同期されるまで待機
- ユーザーが同期されたら指定された部署へユーザーを移動
- 指定されたセキュリティロールをアサイン

注意点

- スクリプトはサンプルのため、新しい体験版を申し込むなど検証環境で
動作を試してください。
- 部署名をはじめ日本語が CSV に入る場合は、ファイルを UTF-8 で保存
しないと、読み込まれた文字が文字化けします。

まとめ

今回は Microsoft Dynamics CRM Online ユーザーを作成するスクリプトを
紹介しましたが、サンプルには他にも色々なスクリプトが含まれています
ので、是非お試しください。

- 中村 憲一郎

Viewing all 589 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>