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

Dynamics CRM Online 2015 Update 1: Excel にエクスポートの新機能

$
0
0

みなさん、こんにちは。

今回は Dynamics CRM Online 2015 Update 1 で強力に拡張された Excel に
エクスポート機能を紹介します。

概要

今回のリリースでは以下の機能拡張が実施されました。

- Excel ファイルとしてのエクスポート
- クイックエクスポート
- Excel Online 統合

早速順番に見ていきましょう。

Excel ファイルとしてのエクスポート

これまでの Excel にエクスポート機能では、エクスポートしたファイルは
ネイティブな Excel ファイルではなく、ファイルを開く際に警告が表示
されたり、通貨のフォーマットが数値として認識されないため、
合計が上手くできないなどの弊害がありました。

今回のリリースではエクスポートしたファイルは Excel ネイティブな形式に
なります。そのため、ファイルを開く際に警告は出ません。またセルの
形式は以下の通りです。

セルの形式

テキスト、シンボル、電話番号、オプションセット、参照: テキスト形式
電子メール、URL: 標準
数値、通貨: 数値
日付: 日付 (OS の設定でフォーマットが決まります)
計算列、ロールアップ列: Excel で変更が可能

クイックエクスポート

これまで Excel にエクスポートボタンをクリックすると、ダイアログが
毎回表示されていました。クイックエクスポートは Excel にエクスポート
ボタンをクリックするだけで、すぐにファイルをダウンロードできる
機能です。

image

明示的に種類を選択したい場合は、ドロップダウンを利用します。

image

Excel Online の統合

ローカルのコンピューターに Excel がない場合でも、Excel Online
を利用して、直接ファイルを開くことができます。また編集した
内容をそのままインポートすることも可能です。

1. ブラウザで Dynamics CRM Online に接続します。

2. 任意のエンティティグリッドで EXCEL にエクスポート | Excel
Online で開くをクリックします。

3. 以下のように画面が開きます。

image

4. ファイルを変更します。ここでは取引先企業名を変更してみます。

image

5. 画面左上の「変更を CRM に保存」をクリックします。自動的に
データインポートに変更が通知されます。

image

6. しばらく待つと変更が反映されます。

image

データの変更ではなく、分析などを行った後に結果を保存しておきたい
場合は、ファイルよりファイルを保存できます。

image

まとめ

Excel 連携は業務プロセス時にも、生産性の向上のためにも必須の機能
ですが、今回 Excel ネイティブフォーマットに対応したことや、Excel
Online に対応したことで、より活用シーンが広がると感じます。

是非お試しください!

- 中村 憲一郎


Dynamics CRM 2015 Update 1 : リリースプレビューガイドと各種サービスのご案内

$
0
0

みなさん、こんにちは。

今回は、先日の Dynamics CRM Online 2015 Update 1 のリリースに伴い
提供されたリリースプレビューガイドと、導入の手助けとなるサービスを
紹介します。

リリースプレビューガイド

この資料では、以下の機能概要が紹介されています。

- Microsoft Dynamics CRM Online 2015 Update 1
- Microsoft Dynamics Marketing 2015 Update 1
- Microsoft Social Engagement 2015 Update 1
- Parature

ガイドは以下のリンクからダウンロードできます。

リリースプレビューガイド

テストドライブ体験ツアー

テストドライブ体験ツアーは「営業支援(SFA)」「カスタマーサービス」
「マーケティング」におけるCRMの活用例を見せるサービスです。
実際の画面を見せながら、ポップアップ表示で解説をします。

以下の手順でお試しください。

1. ブラウザで以下のリンクにアクセスします。
テストドライブ体験ツアー

2. 画面右下の「TestDrive をはじめる」をクリックします。後は流れに
そって操作を行ってください。

clip_image001

コンシェルジュサービス

Dynamics CRMを活用した「営業支援」「カスタマーサービス」シナリオ
を用意しました。お申込みいただくと、担当者がホテルのコンシェルジュ
のようにマンツーマンでご説明するサービスです。また説明時の環境を
そのまま30日間無料で利用していただけます。

申し込みは以下の手順で行えます。

1. ブラウザで以下のリンクにアクセスします。
顧客管理(CRM)製品デモのコンシェルジュサービス

2. 画面に必要な情報を入力して「申し込む」ボタンをクリックします。

clip_image001[6]

チャットサービス

チャットサービスは、サービスのご購入を検討されているお客様に
チャット形式で担当者が質問にお答えするサービスです。電話とWeb
フォームに加え、チャットも利用できることで、よりタイムリーに、
お問い合わせいただけます。

尚、「今すぐチャットする」ボタンは担当者が対応可能な時間に
表示される仕組みとなっております。

1. Web 閲覧時に以下の画面が表示されます。

image

2. もしくは以下のページ中央にある、「チャットする」ボタンを
クリックします。

http://www.microsoft.com/ja-jp/dynamics/crm.aspx

image

3. 以下画面にお名前と会社名を入力後、「チャットの開始」を
クリックします。

image

※上記に明記してある通り、技術サポートは行っておりませんので
予めにご了承ください。

FISC安全対策基準に対する CRM Online の対応状況リスト

「金融機関等コンピュータシステムの安全対策基準」(FISC安全対策基準)
に対する CRM Online の対応状況リストを以下リンクで公開しました。

「金融機関等コンピュータシステムの安全対策基準」に対する マイクロソフト クラウド サービス (Office 365、Microsoft Azure、Dynamics CRM Online) の対応状況リスト

是非、用途に合わせて各種サービスをご利用ください!

- 中村 憲一郎

Dynamics CRM Online 2015 Update 1: SharePoint 統合の新機能

$
0
0

みなさん、こんにちは。

今回は Microsoft Dynamics CRM Online 2015 Update 1 で提供される
SharePoint 統合の新機能を紹介します。

概要

今回のリリースでは、以下の新機能が提供されます。

- 設置型 SharePoint サーバーとの統合
- 新しい構成ウィザード
- OneNote 統合 (SharePoint 統合が前提)

SharePoint 統合の設定

Dynamics CRM Online と同一の Office 365 テナント上に SharePoint
Online が展開済みである前提です。体験版でもご利用いただけます。

以下の手順で設定を行います。

1. ブラウザで Microsoft Dynamics CRM Online へ接続します。

2. 設定 | ドキュメント管理 | サーバーベースの SharePoint 統合の
有効化をクリックします。

image

3. 統合の概要が表示されます。「次へ」 をクリックします。

image

4. SharePoint サイトの場所を指定します。設置型も選択できます。
今回はオンラインで設定を行います。「次へ」をクリックします。
※設置型を利用する際の詳細は以下のサイトをご覧ください。
https://technet.microsoft.com/en-us/library/dn894709.aspx (英語)

[オンライン]
image

[設置型]
image

5. 接続先の SharePoint サイトを指定して、「次へ」をクリックします。

image

6. 検証に成功したら「有効」ボタンをクリックします。

image

7. 以下画面が出たら完了です。続いてドキュメント管理設定を行うので
「ドキュメント管理ウィザードを開きます」にチェックを入れて 「完了」
ボタンをクリックします。

image

8. ドキュメント管理を有効化したいエンティティを選択します。また
サイト URL に SharePoint サイトを入力して「次へ」をクリックします。

image

9. フォルダ構成を決めます。ここでは既定のままにしておきます。
「次へ」をクリックします。

10. 確認ポップアップが出るので「OK」をクリックします。

11. 作業が成功したら「完了」ボタンをクリックします。

image

OneNote 統合の設定

SharePoint 統合が完了すると OneNote 統合のメニューが表示されます。
以下の手順で OneNote 統合を有効化します。

1. 新しく表示された OneNote 統合をクリックします。

image

2. OneNote 統合を行いたいエンティティを選択して、「完了」をクリック
します。意図したエンティティが表示されない場合ドキュメント管理設定
で該当のエンティティが有効になっているか再度確認してください。

image

動作確認

最後に動作を確認してみます。

1. OneNote 統合を有効にしたエンティティの任意レコードを開きます。

2. ソーシャルペインにある ONENOTE タブをクリックします。ノートが
ない場合はこのタイミングでノートが作成されるため、1 度目は少し
時間がかかります。また既定で「無題」というノートができます。

image

3. 「無題」ノートをクリックします。統合先の SharePoint が開きます。

image

まとめ

設定は上記の通り非常に簡単です。次回は OneNote 統合の詳細を
紹介します。お楽しみに!

- 中村 憲一郎

Dynamics CRM Online Update 1: 更新プログラムの管理

$
0
0

みなさん、こんにちは。Dynamics CRM Online 2015 Update 1 (7.1.0) がリリースされ、5 月 18 日 (日本時間 19 日予定) にみなさんの [CRM Online 管理センター] の [Dynamics CRM 更新の管理] にてスケジューリング可能になる予定です。今回のアップデート可能な期間として、2015 年 6 月から 12 月中旬までの間にスケジュールを行うことが出来ます。

[CRM Online 管理センター] の画面は、以前ご案内した  Dynamics CRM Online 2015 更新プログラムの管理とほぼ同じですが、今回は Dynamics CRM Online 2013 Spring ‘14 からアップデートする場合と、Dynamics CRM Online 2015 Update (7.0.1) からアップデートする場合がありますので、Dynamics CRM Online 2015 Update 1 (7.1.0) の管理の違いについてご案内します。

- どのバージョンにアップデートするかを選択する
- Dynamics CRM Online 2015 Update 1 (7.1.0) 適用をスケジューリングする
- [Dynamics CRM 更新の管理] でアップデートを承認する
- アップデートポリシー

どのバージョンにアップデートをするかを選択する

現在のバージョンが Dynamics CRM Online 2013 Spring ‘14 で、6 月中にアップデートを行う場合にはアップデート対象のバージョンを Dynamics CRM Online 2015 Update (7.0.1) か Dynamics CRM Online 2015 Update 1 (7.1.0) を選択出来ます。7 月以降にアップデートする場合には、Dynamics CRM Online のアップデートポリシーにより、アップデートターゲットは Dynamics CRM Online 2015 Update 1 (7.1.0) のみになります。

現在のバージョンが既に Dynamics CRM Online 2015 Update (7.0.1) の場合には、アップデート対象バージョンは Dynamics CRM Online 2015 Update 1 (7.1.0) です。

image

Dynamics CRM Online 2015 update  (7.1.0) 適用のスケジューリングをする

次に、アップデートを適用するバージョンの日程を決めます。今回のアップデートスケジューリングは、2015 年 6 月から 2015 年 12 月中旬までの間に予定することが出来ます。今回のスケジューリングでも、「希望日時」と「代替日時」を選択します。代替日時は、少なくとも希望日時の 14 日後に設定をする必要があります。希望日時等を変更する場合には、[更新スケジュールの再設定] にてスケジューリングの設定を再度行います。1 日にアップデート可能な組織数は決まっていますので、ご希望の日に空きがない場合もあります。

[Dynamics CRM 管理の更新] で、アップデートを承認する

アップデートを適用するには、管理者様のアップデート適用の承認が必ず必要になり、アップデートの承認が行われないとアップデート適用が行われません。[Dynamics CRM 管理の更新] 画面で、「適用の承認」をクリックしてアップデートの承認を行ってください。既にプレスケジュールとして事前にアップデート日程が設定されますが、承認を行わない限りアップデート適用は行われることはありません。

image


アップデートポリシー

Dynamics CRM Online サービスに対して、年  2 回の新機能とサービスへの改善を行っています。可能な限り最高のバリューを提供するため、最新のバージョンを適用することをお奨めしています。しかし、サービスの更新毎にアップデートを適用することが難しいユーザー様もいます。

今回の拡張機能として、ユーザー様の選択により、アップデートの適用頻度を年 2 回、または、年 1 回にすることが可能になりました。年 1 回アップデートを選択した場合、ある特定のアップデートリリースにおいて適用が必須となります。

言い換えると、ユーザー様の Dynamics CRM Online 組織のバージョンは、現在のバージョン (N) または、以前のバージョン (N-1) になります。

例えば、現在のバージョンが Dynamics CRM Online 2013 Spring ‘14  (N-2) で、Dynamics CRM Online 2015 Update (N-1) へのアップデートを行わなかった場合、Dynamics CRM Online Update 1 (N) は必須のアップデートとなります。必須のアップデートを承認しなかった場合には、いずれに時点で強制的にアップデートされますが、アップデート方法の詳細は判っていません。

参考資料 (英語)
Manage Microsoft Dynamics CRM Online Update

- 野田 良二

Dynamics CRM Online 2015 Update 1: OneNote 統合の紹介

$
0
0

みなさん、こんにちは。

今回は Microsoft Dynamics CRM 2015 Online Update 1 で提供される
OneNote 統合について紹介します。尚、構成方法については以下の
記事をご覧ください。

Dynamics CRM Online 2015 Update 1: SharePoint 統合の新機能

概要

OneNote は情報の収集や整理を行う上で非常に強力なツールです。

- 文字、手書き、画像、動画などで情報を入力
- Excel、Word、PowerPoint などなんでも貼り付け
- 共有や電子メールで送信機能で簡単に情報展開
- クロスプラットフォームのサポート

OneNote の概要についてはビデオをご覧ください。
ビデオ: OneNote のご紹介 
ビデオ: OneNote 2013 の新機能

OneNote 統合

以下に Dynamics CRM Online と OneNote 統合の内容を紹介します。

OneNote の表示場所

統合された OneNote はレコードのフォーム上、ソーシャルペインに
表示されます。

image

作成される OneNote ドキュメント

OneNote はレコードごとに個別に作成され、ドキュメントとして
保存されています。またノートはレコード名となり、既定で「無題」
セクションが作成されます。

image

セクションの追加と名前の変更

ソーシャルペインに表示されているものはノートのセクション
となります。以下の手順で既定のタイトル変更および追加の
セクションを作成ができます。

1. ソーシャルペインの ONENOTE より「無題」をクリックします。

2. セクションを右クリックして名前を変更します。今回は名前を
「基本情報」としてみます。

image

3. 画面左側で任意の情報を追加します。

image

4. セクションの「+」をクリックして新しいセクションを追加します。
ここでは「販売戦略」としてみました。

image

4. Microsoft Dynamics CRM Online に戻ります。

5. ONENOTE 一覧に「販売戦略」が追加されていますが、「無題」 は
変わっていないことを確認します。これは一度同期された場合にメタ
データを SharePoint 側で持つためです。

image

6. レコードの関連よりドキュメントを選択します。

image

7. 「無題.one」の列を選択して「プロパティの編集」をクリックします。

image

8. 「基本情報」に変更します。

image

9. レコードのメイン画面に戻って画面をリフレッシュします。

image

ノートブックの確認

ノートブックの実態は SharePoint 上にドキュメントとして保存
されています。これまでの SharePoint 統合同様、Dynamics CRM
の権限は引き継ぎませんので、別途管理が必要です。

image

まとめ

OneNote 統合により、柔軟で協力な情報共有が可能となりました。
OneNote を普段使っている方はもちろん、そうでない方もこれを
機会にぜひ OneNote と OneNote 統合機能をお試しください!

- 中村 憲一郎

Dynamics CRM Online 2015 Update 1: プロセスと業務ルールの新機能

$
0
0

みなさん、こんにちは。

今回は Dynamics CRM Online 2015 Update 1 で追加されたプロセス
関連と業務ルールの新機能をまとめて紹介します。

ワークフローの新機能

ユーザー定義アクションサポート

Microsoft Dynamics CRM 2013 より提供されているユーザー定義アクション
(操作) は独自のメッセージを作成できるという強力な機能ですが、これまで
SDK からの呼び出しのみをサポートしていました。

今回のリリースではワークフローからも呼び出せるようになっているため
より手軽に利用できるようになりました。

利用手順

1. ブラウザで Microsoft Dynamics CRM Online に接続します。

2. 設定 | プロセスより新しいワークフローを 1 つ作成します。

3. ステップの追加一覧より「アクションの実行」を選択します。

image

4. 実行したいアクションを指定します。

image

5. 必要に応じてプロパティを設定します。

業務プロセスフローの新機能

必須ステップの順守

これまで業務プロセスフロー上で必須と設定したフィールドは、次ステージへ
移動する際に検証されますが、SDK を利用した場合や一部の作業では必須の
フィールドの値がない状態でもステージを移動することができました。

今回のリリースではこの検証作業をプラットフォームレベルに移動する事で
すべてのシナリオにおいて検証を行えるようになりました。

ステージの遡り

これまで業務プロセスフローのステージは遡ることができませんでしたが、
今回のリリースでは一度完了したステージに戻って、かつその状態を有効に
することができます。

以下の手順でステージの設定を行います。

1. 業務プロセスフローが有効なエンティティのレコードを開きます。ここでは
サポート案件を例にしています。

2. 業務プロセスフローを進めます。以下は解決ステージまで進んでいる例です。

image

3. 移動したいステージを選択します。ここでは特定を選択しました。この
時点ではただステージの内容を見ているだけです。

image

4. 業務プロセスフロー右端の「アクティブに設定」をクリックします。

image

5. アクティブを示す旗のアイコンが移動します。

image

業務ルールの新機能

これまで業務ルールは、特定のフィールドの値を設定したり、表示と非表示を
切り替えることができましたが、今回のリリースではフィールドの値をクリア
することができるようになりました。

利用手順

1. 任意の業務ルールを開くか、新規に業務ルールを作成します。

2. 「操作」より「フィールド値の設定」を選択します。

image

3. 値をクリアしたいフィールドを選択して、「種類」より「クリア」を選択します。

image

尚、値をクリアできるのは以下のタイプです。

- 1 行テキスト
- オプションセット (既定値を設定していないもの)
- 整数
- 浮動小数
- 10 進数
- 金額
- 参照
- 日付型

まとめ

Dynamics CRM 2013 以降で追加された機能に対しても、不足している
機能が徐々に充実してきました。まだこれらの機能を使っていない場合は
これを機に是非利用をご検討ください!

- 中村 憲一郎

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

$
0
0

みなさん、こんにちは。

今回は Dynamics CRM Online 2015 Update 1 で追加されたロールアップ列と
計算列の新機能をまとめて紹介します。

ロールアップ列の新機能

関連した活動レコードのロールアップ

これまでレコードに関連した活動を集計したい場合、電話、電子メール、
タスクなど個別に集計した結果を、計算列で合計する必要がありました。
今回のリリースではこれらを一括して集計することが可能です。

以下手順で利用できます。

1. 任意のエンティティで、新規に列を追加します。ここでは取引先企業に
列を追加してみます。

image

2. 「データの種類」で「整数」を選択し、「フィールドの種類」から
「ロールアップ」を選択して、「編集」ボタンをクリックします。

image

3. 関連より「活動 (関連) 」を選択します。

image

4. 任意の集計を設定して保存します。

計算列の新機能

NOW() 日付関数のサポート

今回のリリースで計算実行時の日付を取得できるようになりました。

DIFF() 関数のサポート

2 つの日付型の値より、以下の粒度で差分を取得できるようになりました。

- DIFFMINUTES() : 分
- DIFFHOURS() : 時間
- DIFFDAYS() : 日
- DIFFWEEKS(): 週
- DIFFMONTHS() : 月
- DIFFYEARS() : 年

早速これらを組み合わせて列を作成してみましょう。

今回はサポート案件が作成されてからの経過時間を計算してみます。

1. サポート案件のカスタマイズよりフィールドを追加します。

image

2. 任意の表示名と名前を付けます。「データの種類」で「整数」を選択し、
「フィールドの種類」から「計算」を選択して「編集」をクリックします。

image

3. 条件でサポート案件が調査中か処理中を選択します。

image

4. 操作に以下の式を追加します。

image

5. 「保存して閉じる」をクリックします。

6. 作成したフィールドをフォームの任意の場所に設置してカスタマイズを
公開します。

7. 任意のサポート案件レコードを開いて、意図した結果が出ていることを
確認します。

image

まとめ

今回リリースされた機能で、これまれ実現できなかったシナリオも実現出来る
ようになりました。個人的には NOW() 関数と DIFF 系関数が非常に嬉しいです。
是非お試しください!

- 中村 憲一郎

Dynamics CRM Online 2015 Update 1: 日付列の新機能

$
0
0

みなさん、こんにちは。

今回は Microsoft Dynamics CRM Online 2015 Update 1 で提供される
日付型の新機能を紹介します。

タイムゾーン非依存の日付サポート

Microsoft Dynamics CRM は複数のタイムゾーンユーザーをサポート
するために、日付型はすべて UTC としてデータベースに値が保存
されており、表示する際にユーザーのタイムゾーンに合わせた変換が
行われます。これは大概のシナリオでうまく機能します。

しかし誕生日のように、タイムゾーンに関係なく同じ日付を保持する
事が求められるようなデータに対しては文字列型を使っていました。

今回のリリースでは 2 種類のタイムゾーン非依存型をサポートします。

日付のみ

誕生日など、時刻までデータを保持する必要がない場合に使います。
時刻は 0:00 が自動的に入ります。

タイムゾーン非依存

画面や SDK から入力された時間がそのままデータベースに保存され、
表示される際もタイムゾーンの変換を行いません。

ユーザーローカル

これまでと同じ動作となります。

では早速試してみましょう。

1. ブラウザで Microsoft Dynamics CRM Online に接続します。

2. 任意のエンティティのカスタマイズ画面よりフィールドを追加します。
ここでは取引先担当者を使ってみます。

image

3. 比較のため、まずはこれまでの形式で日付フィールドを作成します。

image

4. 続いて「日付のみ」動作でもう 1 つフィールドを作成します。

image

5. さらに「タイムゾーン非依存」でも作成します。

image

6. 作成した 3 つのフィールドをフォームに配置して、カスタマイズを
公開します。

image

7. 任意の取引先担当者レコードを開いて、誕生日を入力します。尚、
ユーザーのタイムゾーン設定は GMT+9 の日本時間とします。

image

8. レコードを保存します。

9. ユーザーのオプションよりタイムゾーンを変更します。ここでは
(GMT-4) の大西洋標準時間にしてみました。同じ担当者レコードを
表示します。ユーザーローカル動作の場合、日付が 1 日遡っている
事を確認します。

image

既存日付フィールドの動作変更

手動での変換

日付フィールドの動作が「ユーザーローカル」の場合、「日付のみ」
または「タイムゾーン非依存」に変換することができますが、一度
変更するともとには戻せません。変更は既存の日付型フィールドを
開いて、動作を変えるだけで完了です。

動作変更時の詳細な変換指定

動作を変更した場合、既定ではデータベースに保存している UTC の
値を変換先の値として利用します。もしレコードの所有者や変換を
実施しているユーザーのタイムゾーン、または任意のタイムゾーンで
変換をかけたい場合は SDK を利用します。詳細は後日紹介します。

まとめ

タイムゾーンに依存しない日付データを利用すると、意図した日時を
表示できるほか、形式は日付型のため Excel で分析する場合などにも
便利です。是非お試しください!

- 中村 憲一郎


Dynamics CRM Online 2015 Update 1: サービスの新機能 その 1

$
0
0

みなさん、こんにちは。

Dynamics CRM Online 2015 Update 1 ではサービスモジュール機能が大幅に強化されています。
強化ポイントを 2 つ紹介します。

・自動作成ルール
・Parature 連携

初回は、自動作成ルールの強化ポイントについて紹介します。

自動作成ルールの強化ポイント

これまでの自動作成ルールでは受信した電子メールとソーシャル活動の 2 種類から
サポート案件を作成するシナリオに対応しておりました。
今回、これまでの 2 種類に加え、電話、予定、タスク、カスタム活動エンティティの
全 6 種類に対応しました。さらに自動作成できるデータの種類もサポート案件のみでなく、
それ以外のエンティティも対応可能になりました。また、レコードの作成と同時に
電子メー��送信するなど、さらに機能が強化されました。

シナリオ

今回は、営業担当者が受けた電話から営業案件を作成するシナリオを想定し、
電話活動レコードを特定のキューに移したタイミングで、営業案件を作成する
自動作成ルールを作成します。

事前準備

電話エンティティにフィールドの追加

営業案件を作る際に、見込み顧客を指定するためのフィールドを追加します。

1. Dynamics CRM Online にログインします。

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

image

3. エンティティから電話のメインフォームを開きます。

image

4. 右下の新しいフィールドをクリックします。

image

5. 取引先担当者の検索フィールドを作成します。

image

6. フォームに新規作成したフィールドを追加します。保存して、公開します。

image

自動レコード作成および更新ルールの追加

1. Dynamics CRM Online にログインします。

2. 設定 | サービスの管理 | 自動レコード作成および更新ルールを選択します。

image

3. 新しいルールを作成します。 ソースの種類は、電話を選択します。
キューには、サンプル用に作成したキューを指定しました。

image

4. 保存します。続いてレコード作成および更新ルールのアイテムを作成します。

image

5. アクションには、レコードを作成するステップを 1 つ追加することが出来ます。

image

6. 電話の件名と取引先担当者をもとに営業案件を作成します。

image

image

7. その他の処理の指定では、追加で複数のステップを追加することが出来ます。
レコードの作成、更新だけではなく電子メールの送信やワークフローの実行が可能です。

image

8. 保存して閉じます。自動作成ルールをアクティブ化します。

image

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

動作確認

早速動作を見てみましょう。

1. Dynamics CRM Online にログインします。右上の + ボタンから電話をクリックします。

image

2. レコードを新規作成します。

image

3. 保存後、レコードをキューに追加します。

image

image

4. 関連するバックグラウンドプロセスメニューをクリックします。

image

5. 自動作成ルールが正常に実行されたことが確認できます。

image

6. 電話の関連フィールドに設定された営業案件を開きます。電話の情報をもとに作成されていることを確認します。

image

まとめ

いかがだったでしょうか。これまでサポート案件の自動作成ルールだったものが、
他のエンティティの作成が可能になりました。次回は、拡張性およびアップデートの考慮点、
そして Parature 連携についてご紹介します。

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

Dynamics CRM Online 2015 Update 1: サービスの新機能 その 2

$
0
0

みなさん、こんにちは。

前回に引き続き、サービスの新機能から Parature 連携、拡張性および、
アップデートの考慮点について紹介します。 前回の記事をご覧になっていない方は是非ご覧ください。

Dynamics CRM Online 2015 Update 1: サービスの新機能 その 1

新しいメッセージ

自動作成ルールを外部アプリケーションから操作するために新たなメッセージが追加されています。
これにより外部アプリケーションで作成するデータに対して自動作成ルールを適用することができます。

ApplyRecordCreationAndUpdateRuleRequest Class:
https://msdn.microsoft.com/ja-jp/library/microsoft.crm.sdk.messages.applyrecordcreationandupdaterulerequest.aspx

アップデートの考慮点

新しい自動作成ルールは、Dynamics CRM Online 2015 Update 1 のみで利用することが出来ます。
新しい自動作成ルールを含むソリューションをエクスポートする際、
低いバージョンとしてエクスポートすると、新機能に関連するオブジェクトが削除されます。
ソリューションを低いバージョンとしてエクスポートする際は、注意が必要です。

Parature 連携

Parature と連携することでより高度なサポート情報管理機能が利用可能になります。
例えば、システムが推奨する記事を表示する機能や、記事を検索できる機能を利用して、
日常的なカスタマーサービスの対応にサポート情報を統合することで、エージェントを支援します。
Parature 連携は、Web および Unified Service Desk (USD) でサポートされます。

以下は、Unified Service Desk (USD) の連携イメージです。

image

以下は、Dynamics CRM の Web の連携イメージです。サポート案件フォーム上で、関連する記事がフィード上に表示されています。

image

カスタマイズ

Parature のサポート情報を検索するコントロールを、特定のエンティティのフォーム上に配置できます。
サポート案件エンティティは、既定で有効です。

必要な要件

Parature と連携するためには、Parature のライセンスが必要となります。
また、サポート情報を検索するため、Parature のサポート情報権限が必要です。

まとめ

今回の新機能により、自動作成ルールのみで実現できるシナリオが増えました。
Parature 連携は、カスタマーサポートの作業効率やサービスの質の向上が期待できる大きな新機能です。
是非、サービスの新機能をご検討ください!

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

Dynamics CRM Online 2015 Update 1: Yammer 統合の強化

$
0
0

みなさん、こんにちは。

Dynamics CRM は Yammer と統合することで、Yammer 上で共有されている情報を
Dynamics CRM 上に表示することが可能です。今回、Dynamics CRM Online 2015 Update 1 では、
Yammer 統合がさらに強化されています。

既定のグループ指定

Yammer 統合を開始する際、既定の Yammer グループを指定するオプションがあります。
オプションを選択する際、候補がドロップダウンリストで表示されていたため長くなりがちでしたが、
テキストボックスになったことにより操作しやすくなりました。

image

フィード領域の拡大

ダッシュボード上の自身がフォローしているオブジェクト領域が削除され、
フィード領域が広くなりより見やすくなりました。

image

構成手順

早速、Dynamics CRM Online と既存の Yammer を統合してみましょう。

1. Dynamics CRM Online にログインします。

2. 設定 | 管理 | Yammer の構成をクリックします。

1

3. 免責事項を確認し、続行をクリックします。

2

4. Yammer への接続を承認します。

3

5. 接続を確認する画面が表示されるため、許可します。

4

6. Yammer ネットワークに Yammer の名前が設定されていることを確認します。

5

7. 既定で投稿される Yammer グループを指定します。

7

以上で設定は完了です。

動作確認

1. Dynamics CRM Online にログインします。

2. 営業 | ダッシュボード | 営業活動ソーシャルダッシュボード をクリックします。

1-1

3. 初回のみ Yammer アカウントでサインインする必要があるためクリックし、Yammer への接続を許可します。

1-2

4. 接続に成功すると、ダッシュボード上から Yammer へ投稿が可能になります。
投稿時の既定のグループが設定したものになっていることを確認します。

1-4

まとめ

Yammer は社内の情報共有に有効なツールです。Dynamics CRM Online と統合することで、
より社内の情報共有の強化が期待できます。是非、Yammer 統合をご活用ください!

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

Dynamics CRM 設置型のパフォーマンス: 静的コンテンツがキャッシュされない

$
0
0

 

みなさん、こんにちは。

今回はパフォーマンスに影響する設定について、US チームのブログより以下の記事を紹介します。

Static Content not cached properly in Dynamics CRM due to Vary:* header
http://blogs.msdn.com/b/crminthefield/archive/2014/12/19/static-content-not-cached-properly-in-dynamics-crm-due-to-vary-header.aspx

背景と概要
Windows Server 2012 で Dynamics CRM 2013 を使用している場合、Web ブラウザーで静的コンテンツがキャッシュされない場合があります。
Internet Explorer などの Web ブラウザーは、Web サーバーからのコンテンツをキャッシュする機能がありますが、IIS の設定やネットワーク機器で Vary ヘッダーが “*” に設定されていると、コンテンツがキャッシュされないため、ページ表示が遅かったり、��ットワーク使用率が高くなります。

詳細
以下はブログ記事の内容です。
---------------------------------------------------------------------------------------------------------------------

最近、幾つかのパフォーマンス問題のケースを担当しました。ページ表示が遅いまたはネットワーク帯域の使用率が高いという内容のケースです。
状況を把握するために、Fiddler でトレースを取得して通信を確認しました。トレース取得時は、必ずフォームを 2 回ロードして静的コンテンツがキャッシュされるようにしました。同じフォームを何回も表示した場合、aspx, asmx, ashx, and svc のような動的なページのみ、サーバーからロードされる状況を確認できるはずです。しかし、このケースでは、フォームを開くたびに、大きな JavaScript ページが毎回ロードされていました。

以下のスクリーンショットは、今回のパフォーマンス問題のケースで共通に見られた、問題を発生させていたファイルです。これらの静的ファイルは、毎回のフォームロードで発生している 約 1MB に近い、追加で発生していたダウンロードデータを占めています。遅いネットワーク接続では、ページロードに数秒を追加する事になります。
5270_clip_image0025_4AA1F6E8

 

これらの静的ファイルはキャッシュが Public に設定されているのでキャッシュされるはずですが、レスポンス上の Vary ヘッダーが “*” に設定されています。
(この記事の最後に Fiddler で Vary ヘッダーを表示する方法があります)

6648_image_47FBCBE8

Vary ヘッダーが “*” に設定されていると、どんな場合でもクライアントでキャッシュされないようになります。この場合は Vary ヘッダーの値は “Accept-Encoding” に設定されるべきです。

この現象の原因をいくつか特定しました。

IIS で Vary header を “*” に設定している場合

ある状況では IIS は Vary ヘッダーを “Accept-Encoding” の代わりに “*” を指定できます。最初に Windows Server 2012 でこの動作を確認しました。この動作は IIS の omitVaryStar 設定を True に設定する事で防止出来ます。omitVaryStar についてはこの記事の他に、詳細を説明している記事がたくさんありますが、この記事は今回の現象に遭遇している場合の記事です。

以下はこの設定の変更方法です。

1. CRM サイトを選択し、Configuration Editor を開きます。
日本語版では「構成エディター」です。

8726_clip_image002_104BA269

2. セクションで system.web/caching/outputCache を選択し、[omitVaryStar] プロパティを [Tue] に設定し、[適用] で変更を保存します。
5557_clip_image004_18CF01B3

この設定により、Vary ヘッダーが “Accept-Encoding” に変更され、クライアントは静的コンテンツをキャッシュできるようになります。

ネットワーク機器のキャッシュ機能により、Vary ヘッダーに “*” が追加されるケース

幾つかのシナリオでネットワーク機器により Vary ヘッダーが影響をうけているケースがありました。それらのケースでは、ネットワーク機器が独自で使用するキャッシュまたは圧縮機能により、Vary ヘッダー “*” が追加されていました。ネットワークロードバランサー、ファイヤーウォール、プロキシーサーバーでこの現象を確認しています。これらの環境では原因の切り分けが難しくなりますが、IP アドレスやサーバー名で直接 CRM サーバーにアクセスして、この現象が発生するかどうかで確認する事が出来ます。IIS が提供している以上の利点が無い場合は、原因の特定後、ネットワーク機器の設定を変更したり、ネットワーク機器のキャッシュ設定を無効にできます。

この他にもこの現象の原因が存在すると思いますが、この二つが主なこの現象の原因でした。

<参考: Vary ヘッダー列の表示方法>
Fiddler で Vary ヘッダーは以下の操作で表示する事が出来ます。
1. 列名の上で右クリック – [Customize Columns…] を選択
fiddler_customize_columns

2. Customize Columns ダイアログボックスの [Collection] で [Response Headers] を選択
3. [Header Name:] に Vary と入力
4. [Add] ボタンで列を追加します。
fiddler_vary_column

---------------------------------------------------------------------------------------------------------------------

まとめ

もし、環境が同じでこの現象に遭遇している場合は、この設定を確認してみてはいかがでしょうか。

- Kensuke Kitazawa

Dynamics CRM 2015 Online Update 1: Exchange フォルダーレベルの追跡機能

$
0
0

みなさん、こんにちは。

今回は Dynamics CRM Online 2015 Update 1 で提供される新機能から
Exchange のフォルダーレベル追跡を紹介します。

概要

これまで新規に受信した電子メールを任意の Dynamics CRM レコード
に追跡するには、Outlook アドインが必須でした。

今回のリリースでは新たに、Exchange 上の受信フォルダ配下に作成
したサブフォルダに置かれた電子メールを、特定の Dynamics CRM
レコードに関連づけて追跡する方法が提供されます。

設定方法

システムの設定

こちらの機能は既定で無効となっているため、以下の手順に沿って
組織単位で機能を有効にする必要があります。

1. ブラウザで Dynamics CRM Online に接続します。

2. 設定 | 管理 | システムの設定を開きます。

3. 電子メールタブを開きます。

4. 電子メール処理の構成として、「サーバー側同期」が指定されて
いることを確認します。

image

5. 「フォルダーレベルの追跡と電子メールの関連付け構成」にて
「Exchange フォルダーに対するフォルダーレベルの追跡を使用」に
チェックを付けます。

image

6. OK をクリックして設定を保存します。

メールボックスの構成

次に、各メールボックスでサーバー側同期が利用できるように
設定を確認します。詳細は以下の記事をご覧ください。
※以下の記事は設置版についての記事ですが、基本的な構成は
同じ手順で行えます。

http://blogs.msdn.com/b/crmjapan/archive/2013/12/09/dynamics-crm-2013-server-side-sync-2.aspx

受信トレイのサブフォルダ作成

次に各ユーザーごとの設定を説明します。まずは Exchange
受信トレイのサブフォルダ作成です。

1. 以下のアドレスで Exchange Online にブラウザより接続します。

https://outlook.office365.com/owa

2. ブラウザ版の Outlook 画面が開いたら、画面左側のメニューで
フォルターの下にある「その他」リンクをクリックします。

image

3. ユーザー | 受信トレイ配下にサブフォルダーを作成します。

image

4. 今回は CRMSync と CRMSync2 フォルダを作りました。

image

個人設定の変更

1. ブラウザで Microsoft Dynamics CRM Online に接続します。

2. 画面右上の設定アイコンよりオプションを選択します。

image

3. 電子メールタブをクリックします。

4. フォルダー追跡ルールの構成リンクをクリックします。

image

5. 「新しいフォルダーのマッピング」をクリックします。

6. 左側の作成したフォルダ、右側に関連付けるレコードを指定します。

image

7. 「保存」ボタンをクリックして画面を閉じます。

動作確認

最後に動作確認です。

1. Exchange Online のメールアドレス宛にメールを送信します。

image

2. それぞれのメールを CRMSync と CRMSync2 サブフォルダに
振り分けます。

image

3. Dynamics CRM のレコードで関連が設定されていることを確認します。

image

まとめ

Outlook アドインに比べると、Dynamics CRM レコードごとにサブ
フォルダを作成する必要がありますが、アドインが不要であるため
手軽に利用できます。サブフォルダへの振り分けは、振り分け用の
ルールで自動化することもできますので、是非お試しください!

- 中村 憲一郎

Dynamics CRM Online 2015 Update 1 SDK 新機能: 代替えキー

$
0
0

みなさん、こんにちは。

今回から、Dynamics CRM Online 2015 Update 1 で提供される
プラットフォームと SDK の新機能を紹介します。

今回はその中から 代替えキーについて紹介します。

概要

Dynamics CRM は、レコードの固有キーとして、GUID を利用
しています。そのため、特定のレコードを更新するには、まず
レコードの GUID を取得する必要がありました。

代替えキーは任意のフィールドまたは複数フィールドを組み
併せたキーを設定できます。これによりレコードの更新処理を
行う際、GUID を取得するステップが省略できます。

早速試してみましょう。

代替えキーの設定

まず代替えキーを設定します。

1. ブラウザで Dynamics CRM Online に接続します。

2. 設定 | カスタマイズ | システムのカスタマイズより、代替え
キーを設定するエンティティを開きます。今回は取引先企業
を使います。

3. キーをクリックします。右側の画面で「新規」ボタンを
クリックします。

image

4. キーとなる列を選択します。今回は取引先企業番号をキー
として指定しました。任意の表示名と名前を付けます。
尚、ここで選択したキーは全てのレコードで一意である
必要があります。

image

5. 「保存して閉じる」をクリックします。状態が保留と
なります。

image

6. しばらく待ってから画面を更新します。状態が保留中
からアクティブになると準備完了です。

image

SDK からの利用

準備が整ったので SDK から設定した代替えキーを利用します。

1. Visual Studio を起動します。新しいプロジェクトをクリック
して、Visual C# | Windows デスクトップ | コンソールアプリ
ケーションを選択します。.NET Framework 4.5.2 を指定します。
任意の名前を付けて、「OK」をクリックします。

image

2. ソリューションエクスプローラーより作成したプロジェクトを
右クリックして、NuGet パッケージの管理をクリックします。

image

3. 左ペインで「オンライン」を選択後、右上の検索ボックスにて
crmsdk を検索します。一覧より Microsoft Dynamics CRM 2015
SDK client and portal assemblies を選択して、「インストール」を
クリックします。

image

4. インストールが完了したら「閉じる」で NuGet パッケージの
管理を閉じます。

5. Main メソッドに以下のコードを追加します。これで Dynamics
CRM 組織への接続が作成できます。接続文字は適宜変更します。

CrmConnection conn = CrmConnection.Parse("Url=https://contoso.crm.dynamics.com; Username=someone@contoso.onmicrosoft.com; Password=password;");
OrganizationService service = new OrganizationService(conn);

6. 続いて以下のコードを追加します。取引先企業レコードが 1 件
追加されます。

Entity account = new Entity("account");
account["name"] = "テスト取引先企業";
account["accountnumber"] = "Test0001";
account["telephone1"] = "00-0000-0000";

Guid id =service.Create(account);

7. 続いて以下のコードを追加します。ここでレコードに GUID
を渡していない点と Entity のコンストラクタに代替えキーを
指定している点がポイントです。

Entity updateAccount = new Entity("account", "accountnumber", "Test0001");
updateAccount["telephone1"] = "11-1111-1111";

service.Update(updateAccount);

8. F5 キーを押下してプログラムを実行します。プログラムが
終了したら、ブラウザで Dynamics CRM Online 上の取引先
企業を確認します。

image

9. 再度プログラムを実行します。今後はレコードの作成で
以下のエラーで失敗します。代替えキーが一意のものとして
機能していることが分かります。

image

使いどころ

実際の利用シナリオとしては、他システム連携があります。
他システム連携から定期的にレコードを移す場合、今までは
レコードの更新時に、都度 RetrieveMultiple を利用して対象
レコードの GUID を取得していましたが、今回の機能を利用
すれば、1 度のリクエストで処理が完了します。

まとめ

今回は代替えキーを紹介しましたが、次回は関連の深い機能
として、Upsert を紹介します。お楽しみに!

- 中村 憲一郎

Dynamics CRM Online 2015 Update 1 SDK 新機能: Upsert

$
0
0

みなさん、こんにちは。

Dynamics CRM Online 2015 Update 1 で提供されるプラット
フォームと SDK の新機能より、今回は Upsert を紹介します。
Upsert は代替えキーと連携して機能します。こちらの記事は
前回からの続きとなっているため以下の記事を前提とします。

Dynamics CRM Online 2015 Update 1 SDK 新機能: 代替えキー

概要

Upsert は Insert + Update の意味です。Upsert リクエストを
利用すると、既に存在するレコードは更新対象となり、まだ
存在しないレコードは作成対象となります。

レコードの存在確認は、代替えキーの値を利用します。よって
Upsert を利用するためには代替えキーの設定が必須です。

Upsert の利用

ここからは前回記事の操作の続きになります。

1. 前回作成したコンソールアプリケーションソリューションを
開きます。

2. 前回実装したコードのうち、組織サービスの作成以下を全て
コメントアウトします。

image

3. 以下のコードを追加します。代替えキーを指定した Entity
オブジェクトを作成し、UpsertRequest に渡しています。

Entity account = new Entity("account", "accountnumber", "UpsertTest");
account["name"] = "Upsert テスト取引先企業";
UpsertRequest request = new UpsertRequest()
{
    Target = account
};
UpsertResponse response = (UpsertResponse)service.Execute(request);

4. 以下のコードを追加して、レコードが作成されたか表示
するようにします。

if(response.RecordCreated)
    Console.WriteLine("レコードが作成されました");
else
    Console.WriteLine("レコードが更新されました");
Console.Read();

5. F5 キーを押下してプログラムを実行します。レコードが
作成されたことを確認します。

image

6. コードを変更せずに、再度プログラムを実行します。
レコードが更新対象と正しく認識されます。

image

より高度な使い方

Upsert と代替えキーで参照を指定することもできます。
今回は取引先企業の Upsert 時に、主取引先担当者を
指定します。

1. まず取引先担当者についても代替えキーを設定します。
今回は姓と名でキーとしました。

image

2. サンプルの取引先担当者を作成します。

image

3. 取引先企業のレコードの参照に渡す EntityReference を
作成します。代替えキーが複数ある場合は、以下のように
KeyAttributeCollection を利用します。

Entity account = new Entity("account", "accountnumber", "UpsertTest");
account["name"] = "Upsert テスト取引先企業";
// 取引先担当者の参照を追加
EntityReference contact = 
     ew EntityReference("contact",
    new KeyAttributeCollection { { "lastname", "サンプル" }, { "firstname", "担当者" } }
    );
account["primarycontactid"] = contact;

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

5. レコードが更新されていることを確認します。

image

6. 新規作成時の挙動を検証するため、一旦取引先企業の
レコードを削除して、再度プログラムを実行します。
意図通りレコードが作成されることを確認します。

まとめ

Upsert を利用することで、他システム連携時のコードが
簡単に書けるだけでなく、読み取りと更新要求を別々に
送信していた時に比べて、Upsert 要求だけで良い事から
サーバーに対する要求数も削減でき、パフォーマンスの
向上も期待できます。 是非お試しください!

- 中村 憲一郎


Dynamics CRM Online 2015 Update 1 SDK 新機能: 特殊フィールドの更新

$
0
0

みなさん、こんにちは。

今回は Dynamics CRM Online 2015 Update 1 で提供されるプラット
フォームと SDK の新機能より、特殊フィールドの更新を紹介します。

概要

Microsoft Dynamics CRM のエンティティには、通常の更新では
変更できない、以下の特殊フィールドがあります。

所有者: Assign が必要
ステータス: SetState が必要
部署: SetParentBusinessUnit が必要
上司: SetParentSystemUser が必要

今回のリリースでは、これらの特殊フィールドも通常の更新
処理と同じように変更できるようになりました。

動作確認

今回はステータスについて動作を確認してみます。

1. Visual Studio を起動します。新しいプロジェクトをクリック
して、Visual C# | Windows デスクトップ | コンソールアプリ
ケーションを選択します。.NET Framework 4.5.2 を指定します。
任意の名前を付けて、「OK」をクリックします。

image

2. ソリューションエクスプローラーより作成したプロジェクトを
右クリックして、NuGet パッケージの管理をクリックします。

image

3. 左ペインで「オンライン」を選択後、右上の検索ボックスにて
crmsdk を検索します。一覧より Microsoft Dynamics CRM 2015
SDK client and portal assemblies を選択して、「インストール」を
クリックします。

image

4. インストールが完了したら「閉じる」で NuGet パッケージの
管理を閉じます。

5. Main メソッドに以下のコードを追加します。これで Dynamics
CRM 組織への接続が作成できます。接続文字は適宜変更します。

CrmConnection conn = CrmConnection.Parse("Url=https://contoso.crm.dynamics.com; Username=someone@contoso.onmicrosoft.com; Password=password;");
OrganizationService service = new OrganizationService(conn);

6. 以下のコードを追加します。取引先企業レコードを作成します。

Entity account = new Entity("account");
account["name"] = "特殊フィールド更新テスト";
account["accountnumber"] = "UpdateSF0001";

Guid accountId = service.Create(account);

7. 次に以下のコードでステータスを更新します。

account.Id = accountId;
account["statecode"] = new OptionSetValue(1);
account["statuscode"] = new OptionSetValue(2);

service.Update(account);

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

9. プログラムの実行後、作成したレコードが非アクティブに
なっていることを確認します。

image

代替えキーや Upsert との組み合わせ

特殊フィールドの更新機能と、既に紹介済みの代替えキーおよび
Upsert を組み合わせると、さらに柔軟にコードを記述することが
可能です。

// 代替えキーを利用してレコードを特定
Entity account = new Entity("account", "accountnumber", "企業番号001");
// 所有者を代替えキーと特殊フィールドの更新で変更
account["ownerid"] = new EntityReference("systemuser", "internalemailaddress", crmuser1@contoso.local);
// ステータスを特殊フィールドの更新で変更
account["statecode"] = new OptionSetValue(1);
account["statuscode"] = new OptionSetValue(2);

まとめ

特殊フィールドを通常の更新処理で変更できるため、REST を
利用した処理でも所有者の変更が可能になります。これまで
SOAP の利用を余儀なくされていた部分が少しでも解消される
ため開発者には嬉しい機能です。

是非お試しください!

- 中村 憲一郎

Dynamics CRM Online 2015 Update 1 SDK 新機能: 変更されたレコードの一括取得

$
0
0

みなさん、こんにちは。

今回は Dynamics CRM Online 2015 Update 1 で提供されるプラット
フォームと SDK の新機能より、変更されたレコードの一括取得に
ついて紹介します。

概要

Dynamics CRM 上のレコードをマスターとして外部システムと連携
する場合、前回取得したデータセットからの差分のみを取得すべき
ですが、これまではそのような機能が提供されていませんでした。
※メタデータの差分取得は提供済み

このような要望を満たすため、今回のリリースではレコードの差分
取得がサポートされます。

動作確認

今回は取引先企業データを外部に連携するシナリオを考えます。

プログラムの作成

1. Visual Studio を起動します。新しいプロジェクトをクリック
して、Visual C# | Windows デスクトップ | コンソールアプリ
ケーションを選択します。.NET Framework 4.5.2 を指定します。
任意の名前を付けて、「OK」をクリックします。

image

2. ソリューションエクスプローラーより作成したプロジェクトを
右クリックして、NuGet パッケージの管理をクリックします。

image

3. 左ペインで「オンライン」を選択後、右上の検索ボックスにて
crmsdk を検索します。一覧より Microsoft Dynamics CRM 2015
SDK client and portal assemblies を選択して、「インストール」を
クリックします。

image

4. インストールが完了したら「閉じる」で NuGet パッケージの
管理を閉じます。

5. Main メソッドに以下のコードを追加します。これで Dynamics
CRM 組織への接続が作成できます。接続文字は適宜変更します。

CrmConnection conn = CrmConnection.Parse("Url=https://contoso.crm.dynamics.com; Username=someone@contoso.onmicrosoft.com; Password=password;");
OrganizationService service = new OrganizationService(conn);

6. 差分取得時に渡すトークンを格納する文字列型変数を定義します。
また取得したデータを格納するリストを定義します。

string token;
List<Entity> initialrecords = new List<Entity>();

7. 以下のコードを追加して、既存の取引先企業を取得します。

// 差分要求の作成
RetrieveEntityChangesRequest request = new RetrieveEntityChangesRequest();
// クエリの指定
request.EntityName = "account";
request.Columns = new ColumnSet("name");
// ページングの指定
request.PageInfo = new PagingInfo() { Count = 5000, PageNumber = 1, ReturnTotalRecordCount = false };

8. 以下のコードを追加してデータを取得します。尚、既定で
一度の要求で取得できるレコード数が 5000 件のため while
ループでページングします。RetrieveEntityChangesResponse
の EntityChanges には追加/更新されたレコードと削除された
レコードの情報が含まれます。以下のコードは初回実行時と
想定しているため、追加/更新のみを確認しています。

while (true)
{
    // 差分データの取得
    RetrieveEntityChangesResponse response = (RetrieveEntityChangesResponse)service.Execute(request);

    // 取得したデータをリストに保存
    initialrecords.AddRange(response.EntityChanges.Changes.Select(x => (x as NewOrUpdatedItem).NewOrUpdatedEntity).ToArray());
    // ページングが完了したら、次回差分取得のためのトークンを確保
    if (!response.EntityChanges.MoreRecords)
    {                   
        token = response.EntityChanges.DataToken;
        break;

    }
    // まだレコードがある場合はページング処理
    request.PageInfo.PageNumber++;
   request.PageInfo.PagingCookie = response.EntityChanges.PagingCookie;
}

initialrecords.ForEach(x => Console.WriteLine("Record {0} added", x["name"]));
Console.Read();

9. 次に差分取得のコードを追加します。利用するクエリは同じですが、
DataVersion に前回取得したトークンを指定しています。また今回は
差分取得しているため、削除されたレコードも確認しています。削除
されたレコードは Guid しかデータが無いため、EntityReference 型と
なります。

RetrieveEntityChangesRequest changerequest = new RetrieveEntityChangesRequest();
changerequest.EntityName = "account";
changerequest.Columns = new ColumnSet("name", "accountnumber", "telephone1");
changerequest.PageInfo = new PagingInfo() { Count = 5000, PageNumber = 1, ReturnTotalRecordCount = false };
// 前回取得したトークンを指定
changerequest.DataVersion = token;

// 追加/更新したレコードのリストを作成
List<Entity> neworupdatedrecords = new List<Entity>();
// 削除されたレコードのリストを作成
List<EntityReference> removedrecords = new List<EntityReference>();
while (true)
{
    RetrieveEntityChangesResponse response = (RetrieveEntityChangesResponse)service.Execute(changerequest);

    // 結果より追加/更新されたものだけを処理
    neworupdatedrecords.AddRange(response.EntityChanges.Changes.Where(x=>x.Type == ChangeType.NewOrUpdated).Select(x => (x as NewOrUpdatedItem).NewOrUpdatedEntity).ToArray());
    // 結果より削除されたものだけを処理
    removedrecords.AddRange(response.EntityChanges.Changes.Where(x=>x.Type == ChangeType.RemoveOrDeleted).Select(x => (x as RemovedOrDeletedItem).RemovedItem).ToArray());

    if (!response.EntityChanges.MoreRecords)
    {
        token = response.EntityChanges.DataToken;
        break;
    }
    // ページング処理
    request.PageInfo.PageNumber++;
   request.PageInfo.PagingCookie = response.EntityChanges.PagingCookie;
}

neworupdatedrecords.ForEach(x => Console.WriteLine("Record {0} added or updated", x["name"]));
removedrecords.ForEach(x => Console.WriteLine("Record {0} removed", x.Id));

Console.Read();

プログラムの実行

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

2. データの結果を確認します。

image

3. プログラムをそのままにして、ブラウザからレコードの追加
更新と削除を行います。今回は「テスト取引先企業」の追加、
「フォース コーヒー」の変更、「リビングウェア」の削除を
行いました。

4. プログラムに戻って Enter キーを押下します。意図した結果
になることを確認します。

image

まとめ

変更されたレコードの一括取得を行うことで、効率的にデータ
同期を行えます。尚、特定のレコードが前回取得以降に複数回
更新された場合も、詳細の履歴はわからず、最新の情報だけが
取得できます。

是非お試しください。

- 中村 憲一郎

Dynamics CRM Online 2015 Update 1 SDK 新機能: オプティミスティック同時実行制御

$
0
0

みなさん、こんにちは。

今回は Dynamics CRM Online 2015 Update 1 で提供されるプラット
フォームと SDK の新機能よりオプティミスティック同時実行制御を
紹介します。

概要

Dynamics CRM では、複数ユーザーが同じレコードを同時に編集した
場合、最後に更新した内容が反映されます。この挙動が望ましくない
環境では、今回リリースされたオプティミスティック同時実行制御を
利用できます。

具体的にはレコードを読み取ったタイミングでレコードのバージョン
番号を取得しておき、変更時にバージョン番号が同じか確認できます。
もしバージョン番号が異なる場合は、他のユーザーまたはシステムが
レコードを更新したことになります。

動作確認

今回は取引先企業レコードの更新における制御を試してみます。

プログラムの作成

1. Visual Studio を起動します。新しいプロジェクトをクリック
して、Visual C# | Windows デスクトップ | コンソールアプリ
ケーションを選択します。.NET Framework 4.5.2 を指定します。
任意の名前を付けて、「OK」をクリックします。

image

2. ソリューションエクスプローラーより作成したプロジェクトを
右クリックして、NuGet パッケージの管理をクリックします。

image

3. 左ペインで「オンライン」を選択後、右上の検索ボックスにて
crmsdk を検索します。一覧より Microsoft Dynamics CRM 2015
SDK client and portal assemblies を選択して、「インストール」を
クリックします。

image

4. インストールが完了したら「閉じる」で NuGet パッケージの
管理を閉じます。

5. Main メソッドに以下のコードを追加します。これで Dynamics
CRM 組織への接続が作成できます。接続文字は適宜変更します。

CrmConnection conn = CrmConnection.Parse("Url=https://contoso.crm.dynamics.com; Username=someone@contoso.onmicrosoft.com; Password=password;");
OrganizationService service = new OrganizationService(conn);

6. 続いて以下のコードを追加します。取引先企業レコードが 1 件
追加されます。このレコードで同時実行制御を行います。

Entity account = new Entity("account");
account["name"] = "同時制御テスト";

Guid accountId = service.Create(account);

7. 作成したレコードを取得し直しします。バージョン番号が
取得できます。

account = service.Retrieve("account", accountId, new ColumnSet("name"));
Console.WriteLine("バージョン番号: {0}", account.RowVersion);
Console.Read();

8. 以下のコードで更新要求を作成します。ここでバージョン
番号が一致した場合のみ更新するように指定します。

account["name"] = "同時制御テスト更新";

UpdateRequest request = new UpdateRequest()
{
    Target = account,
    // バージョンが一致する場合のみ更新
    ConcurrencyBehavior = ConcurrencyBehavior.IfRowVersionMatches
};

9. バージョン番号が異なる場合処理に失敗するため、以下の
ように try/catch を実装します。

try
{
    service.Execute(request);
    Console.WriteLine("更新に成功しました");
}
catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> e)
{
    // バージョンが一致しない場合 (ConcurrencyVersionMismatch)
    if (e.Detail.ErrorCode == -2147088254)
    {
        var currentaccount = service.Retrieve("account", accountId, new ColumnSet());
        Console.WriteLine("更新に失敗しました。バージョン番号: {0}", currentaccount.RowVersion);
    }
    else
        throw e;
}

Console.Read();

プログラムの実行

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

2. 作成されたレコードのバージョン番号が表示されます。

image

3. Enter キーを押下して変更を実施します。エラーはなく処理が
完了することを確認します。

4. ブラウザより作成されたレコードを削除した後、プログラムを
再度実行します。新しいレコードが作成され、バージョン番号が
表示されます。

image

5. ブラウザより、作成されたレコードを手動で編集します。

image

6. プログラムに戻って Enter キーを押下します。バージョン番号
が変わっているため、処理に失敗します。

image

失敗のパターン

上記を含めて、3 つの失敗パターンが存在します。

ConcurrencyVersionMismatch (code=-2147088254)
オプティミスティック同時実行制御を指定したがバージョン
番号が一致しない場合

ConcurrencyVersionNotProvided (code= -2147088253
オプティミスティック同時実行制御を指定したがバージョン
番号を提供しなかった場合

OptimisticConcurrencyNotEnabled (code=-2147088243)
オプティミスティック同時実行制御を指定したが、サーバー
側で対応していない場合

オプティミスティック同時制御がサポートされる処理

オプティミスティック同時制御は更新と削除要求でサポート
されます。また挙動は以下の 2 つを指定できます。

ConcurrencyBehavior.IfRowVersionMatches
ConcurrencyBehavior.AlwaysOverwrite

制限

プラットフォームレベルで対応している機能のため、SDK
クライアントやプラグインからも同じ挙動が保障されますが、
ブラウザからレコードを保存する場合はこれまで通りの
動きとなります。

まとめ

これまで同時実行制御が必要な環境では、最終更新日を
明示的に確認する必要がありましたが、今回のリリースで
より簡単に実装できます。是非お試しください!

- 中村 憲一郎

Dynamics CRM Online 2015 Update 1 SDK 新機能: 複数組織要求のトランザクション処理

$
0
0

みなさん、こんにちは。

今回は Dynamics CRM Online 2015 Update 1 で提供されるプラット
フォームと SDK の新機能より、トランザクション機能を紹介します。

概要

これまでも Microsoft Dynamics CRM でトランザクション処理が必要
な場合、同期プラグインのステージ 20/40 に処理を行ったり、操作を
使ったり、DataContext を利用する方法がありましたが、複数の組織
サービスを呼ぶ場合にはトランザクションが利用できませんでした。

今回のリリースでは、ExecuteTransactionRequest 要求に複数の組織
要求を入れることにより、トランザクションをサポートします。

動作確認

今回は 10 件の取引先企業作成をトランザクションとして実行します。

1. Visual Studio を起動します。新しいプロジェクトをクリック
して、Visual C# | Windows デスクトップ | コンソールアプリ
ケーションを選択します。.NET Framework 4.5.2 を指定します。
任意の名前を付けて、「OK」をクリックします。

image

2. ソリューションエクスプローラーより作成したプロジェクトを
右クリックして、NuGet パッケージの管理をクリックします。

image

3. 左ペインで「オンライン」を選択後、右上の検索ボックスにて
crmsdk を検索します。一覧より Microsoft Dynamics CRM 2015
SDK client and portal assemblies を選択して、「インストール」を
クリックします。

image

4. インストールが完了したら「閉じる」で NuGet パッケージの
管理を閉じます。

5. Main メソッドに以下のコードを追加します。これで Dynamics
CRM 組織への接続が作成できます。接続文字は適宜変更します。

CrmConnection conn = CrmConnection.Parse("Url=https://contoso.crm.dynamics.com; Username=someone@contoso.onmicrosoft.com; Password=password;");
OrganizationService service = new OrganizationService(conn);

6. 以下のコードでトランザクション全体の要求作成します。

ExecuteMultipleRequest request = new ExecuteMultipleRequest()
{
    // エラー発生時の処理継続および応答の設定
    Settings = new ExecuteMultipleSettings()
    {
        ContinueOnError = false,
        ReturnResponses = true
    },
    // 要求組織のコレクションを作成
    Requests = new OrganizationRequestCollection()
};

7. 以下のコードで取引先企業の作成要求をトランザクションに
追加します。

// 10 件の要求を作成
for (int i = 0; i < 10; i++)
{
    Entity account = new Entity("account");
    account["name"] = "サンプル取引先企業 " + i;

    CreateRequest createRequest = new CreateRequest()
    {
        Target = account,
    };

    // トランザクションに追加
    request.Requests.Add(createRequest);
}

8. 以下のコードでトランザクション要求を実行し、結果を
確認します。

// 各要求結果の確認
foreach (var createResponse in response.Responses)
{
    // 成功した結果の表示
    if (createResponse.Response != null)
        Console.WriteLine("レコード {0} が作成されました。", createResponse.Response.Results["id"]);

    // エラーが発生した場合
    else if (createResponse.Fault != null)
        Console.WriteLine("処理が失敗しました。エラー: {0}", createResponse.Fault.Message);
}

Console.Read();

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

image

トランザクション処理の設定

トランザクションの挙動は ExecuteMultipleSettings によって設定
できます。

ContinueOnError
トランザクション処理中にエラーが発生した場合、無視して次の
処理に進むかを設定します。設定を True にした場合は結果として
トランザクション処理ではなく単純なバッチ処理となります。

ReturnResponses
トランザクションに含めた組織要求の結果をそれぞれ返すかを
指定します。トランザクション全体の結果だけわかれば良い場合
false を指定できます。

まとめ

待望のトランザクション処理が実装されたことはとても嬉しいです。
ただしトランザクション実行中は必要に応じてロックが発生します
ので、使いどころは慎重にご検討ください。

- 中村 憲一郎

Dynamics CRM Online 2015 Update 1 SDK 新機能: タイムゾーンに依存しない日付型への変換

$
0
0

みなさん、こんにちは。

今回は Dynamics CRM Online 2015 Update 1 で提供されるプラット
フォームと SDK の新機能より、タイムゾーン非依存の日付型列に
ついて紹介します。タイムゾーン非依存の日付列とカスタマイズ
については以下の記事をご覧ください。

Dynamics CRM Online 2015 Update 1: 日付列の新機能

こちらの記事では、日付型フィールドをタイムゾーン非依存型に
変換する SDK コードを紹介します。

概要

例えば従来の日付型フィールドに対して、2015 年 6 月 9 日 0:00:00
を UTC+9 タイムゾーンのユーザーが作成したレコードを考えます。
この場合、以下のパターンでタイムゾーン非依存型に変更する事が
できます。

※一旦変換した後に再変換はできません。

データベースの値をそのまま利用する
Dynamics CRM は日付型を UTC+0 に変換してでデーターベースに
保存し、表示する際に再度、ユーザーのタイムゾーンに合わせて
データを変換します。データベースの値をそのまま利用して変換
した場合、値は2015 年 6 月 8 日 15:00:00 となります。

レコード所有者のタイムゾーンを利用する
この場合レコード所有者のタイムゾーン設定が UTC-10 であれば、
2015 年 6 月 8 日 5:00:00 が値として使われます。

レコード作成者のタイムゾーンを利用する
この場合、レコード作成者のタイムゾーン設定に変更がなければ、
値は 2015 年 6 月 9 日 0:00:00 となります。

指定したタイムゾーンを利用する
任意のタイムゾーンを指定して変換を実行できます。

動作確認

今回は、取引先企業に日付列を作成してデータを入力した後、各
レコードの所有者のタイムゾーンで日付列を変換します。

日付フィールドの追加

1. ブラウザで Dynamics CRM Online に接続します。

2. 設定 | カスタマイズ | システムのカスタマイズより取引先企業
を展開します。

3. フィールドを選択して、「新規」ボタンをクリックします。

image

4. 表示名に「設立」名前に「established」と入れ、データの
種類から日付を選択します。他の項目は既定値のままです。
「保存して閉じる」をクリックしてフィールドを作成します。

image

5. フォーム上の任意の位置に、作成したフィールドを配置して
カスタマイズを公開します。

レコードに値を設定

1. ログインしているユーザーのタイムゾーンを UTC+9 に設定
して、任意の取引先企業レコードを開きます。

2. 設立に任意の値を入れて保存します。

image

3. ユーザーのタイムゾーンを UTC-4 変更して同じレコードを
開きます。設立の値が変わることを確認します。

image

4. ユーザーのタイムゾーンを UTC+9 に戻します。

プログラムの実装

事前準備が整ったので、最後に SDK でフィールドを変換します。

1. Visual Studio を起動します。新しいプロジェクトをクリック
して、Visual C# | Windows デスクトップ | コンソールアプリ
ケーションを選択します。.NET Framework 4.5.2 を指定します。
任意の名前を付けて、「OK」をクリックします。

image

2. ソリューションエクスプローラーより作成したプロジェクトを
右クリックして、NuGet パッケージの管理をクリックします。

image

3. 左ペインで「オンライン」を選択後、右上の検索ボックスにて
crmsdk を検索します。一覧より Microsoft Dynamics CRM 2015
SDK client and portal assemblies を選択して「インストール」を
クリックします。

image

4. インストールが完了したら「閉じる」で NuGet パッケージの
管理を閉じます。

5. Main メソッドに以下のコードを追加します。これで Dynamics
CRM 組織への接続が作成できます。接続文字は適宜変更します。

CrmConnection conn = CrmConnection.Parse("Url=https://contoso.crm.dynamics.com; Username=someone@contoso.onmicrosoft.com; Password=password;");
OrganizationService service = new OrganizationService(conn);

6. 以下のコードで日付列の変換要求を追加します。Attributes
プロパティに作成した日付型列を指定し、ConverRule に所有者
での変換を指定します。また指定したルールで変換を行うために
AutoConversion は false に設定しています。

ConvertDateAndTimeBehaviorRequest request = new ConvertDateAndTimeBehaviorRequest()
{
    Attributes = new EntityAttributeCollection()
    {
        new KeyValuePair<string, StringCollection>("account",
            new StringCollection(){ "new_established" })
    },
    ConversionRule = DateTimeBehaviorConversionRule.OwnerTimeZone.Value,
    AutoConvert = false
};

7. 以下のコードを追加して、要求を実行します。

// Execute the request
ConvertDateAndTimeBehaviorResponse response = (ConvertDateAndTimeBehaviorResponse)_serviceProxy.Execute(request);

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

結果の確認

日付型の変換は同期処理として行われず、システムジョブとして
実行されます。

1. ブラウザで Dynamics CRM Online に接続します。

2. 設定 | システムジョブより「日時の動作の変換」を探します。

image

3. 結果が完了になるまで待ちます。

4. ジョブが完了した後、取引先企業レコードを開き、日付を
確認します。

image

5. ユーザーのタイムゾーン設定を変更して、同じレコードを
開きます。タイムゾーンに関係なく同じ値であることを確認
します。

image

まとめ

SDK を利用すれば、日付型の挙動を変換する場合、より柔軟に
設定が行えます。是非お試しください。

‐ 中村 憲一郎

Viewing all 589 articles
Browse latest View live


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