開発者向け: Dynamics 365 (オンライン) の次回更新プログラムで予定されている Customer Engagement の機能

[このトピックはプレリリース ドキュメントであり、変更されることがあります。]

開発者は次回の更新プログラムで Customer Engagement の次の新機能を使用できます。

Dynamics 365 には、以前の Dynamics CRM 機能が、インテリジェント ビジネス アプリケーション スイートの一部として含まれています。 スイートの顧客関係管理 (CRM) を行う部分は "Customer Engagement" と呼ばれ、Sales、Customer Service、Field Service、Project Service Automation、およびそれらの関連サービスを含みます。

仮想エンティティによる外部データの統合

外部システムからデータを統合する方法が新しくなりました。 仮想エンティティがない場合に外部データを統合する一般的な方法としては、クライアント側コードで外部データを取得して表示するか、Dynamics 365 Customer Engagement においてサーバー側で外部データのレプリケーションと同期を行います。 仮想エンティティを使用すると、多数の外部システム データ統合の要件に対応して適切なアプローチを取ることができます。

Web API の改善

このリリースの Web API、すなわち OData v4 エンドポイントでは次の点が改善されています。

  • EntityReferenceEntity、または EntityCollection の各型を返すカスタム アクションを使用できます。

  • 最新の v9.0 バージョンを使用すると API 動作を変更できます。v8.x バージョンでは従来の動作を使用できます。 アップグレードするときにコードを変更する必要はありません。

  • 新しいメッセージ: Web API を使用するときに GrantAccessModifyAccessRetrieveSharedPrincipalsAndAccess の各メッセージが表示されるようになりました。

  • 既定で注釈を含めないことによりサービス メタデータの容量が小さくなりました。 注釈が必要な場合は、パラメーターを使用して含めることができます。

クライアント API の拡張

Dynamics 365 (オンライン) 用 2017 年 7 月の更新プログラム リリースには統一インターフェイスが導入され、クライアント API が統一インターフェイスと Web クライアントで同様に機能するように大きな変更がいくつか行われました。

実行コンテキストとグローバル コンテキスト

1 つのフォームで、複数の実行コンテキストが同時にアクティブになることができます。 たとえば、簡易入力フォームと編集可能グリッドを含むフォームには、フォームに表示されるエンティティのコンテキスト、簡易入力フォームのコンテキスト、編集可能グリッドのグリッド コンテキスト、編集可能グリッドの各行のエンティティ コンテキストが存在します。 Xrm.Page はプライマリ フォーム コンテキストです。 スクリプトがセカンダリ コンテキスト (グリッド行、簡易入力フォーム、関連エンティティ) で実行される場合、Xrm.Page は正しいフォーム コンテキストにはなりません。

フォームの実行コンテキストは自動的にフォーム イベントとイベント ハンドラーに渡されます。 したがって、静的な Xrm.Page オブジェクトを使用してフォーム コンテキストを取得する代わりに、executionContext.getFormContext メソッドを使用してフォーム コンテキスト インスタンスを取得する必要があります。その後、これを使用してクライアント API メソッドを実行すると、同じスクリプトをさまざまなコンテキストで使用できます。

また、クライアント側のコンテキストを参照するために使用される Xrm.Page.context はこのリリースで廃止されます。今後は、フォーム コンテキスト内を調べるのではなく、新しい Xrm.Utility.getGlobalContext メソッドを使用してグローバル コンテキストを取得してください。 新しいメソッドには、組織またはユーザー固有の情報を取得するために、Xrm.Page.context オブジェクトで使用可能なすべてのメソッドと同等の機能が含まれます。

新しいクライアント API

このリリースには新しいクライアント API がいくつも含まれています。

このリリースの新しい名前空間の一覧を次に示します。これには、新規メソッドと、拡張オブジェクト モデル設計でこれらの名前空間に移された一部の既存メソッドが含まれます。

新しい名前空間 説明
Xrm.Device モバイル デバイスのデバイス機能を使用するメソッドが含まれます。
Xrm.Encode 属性と XML エンコーディングの文字列への適用に関連するメソッドが含まれます。
Xrm.Navigation 複数ページのダイアログやタスク フローのための新しいメソッドと、Xrm.Utility 名前空間から移された既存のメソッドが含まれます。
Xrm.UI アプリケーションレベルのグローバル通知の表示と非表示のためのメソッドが含まれます。
Xrm.WebApi レコードに CRUD 操作を実行するためのメソッドが含まれます。オンライン モードとオフライン モードは自動的に切り替えられます。
Xrm.WebApi.offline には、オフライン モードで作業中に CRUD 操作を実行するメソッドが含まれます。
Xrm.WebApi.online には、オンライン モードで作業中に CRUD、Execute、および ExecuteMultiple 操作を実行するメソッドが含まれます。

次の新しい API は既存の名前空間に導入されました。

名前空間 新しい API
フォーム executionContext getUrl
Xrm.Page.data OnLoad イベントとイベント ハンドラー (addOnLoad と removeOnLoad)
isValid
Xrm.Page.data.save(saveOptions) メソッドの saveOptions が更新されました。SaveMode という新しい値が組み込まれ、onSave イベント ハンドラーに保存が行われる理由を知らせます。
attributes コレクション
Xrm.Page.data.entity relatedEntities コレクション
getEntityReference
isValid
saveOptions をパラメーターとして送信できるように、save メソッドが更新されました。
Xrm.Page.data.entity attribute isValid
setPrecision
Xrm.Page.ui 複数ページのダイアログとタスクベース フローのみに適用できる 3 つの新しい API: getDefaultNextPageName、movePrevious、moveTo。
setFormEntityName
OnLoad イベントとイベント ハンドラー (addOnLoad と removeOnLoad)
Xrm.Utility getAllowedStatusTransitions
getEntityMetadata
getGlobalContext
getLearningPathAttributeName
getResourceString
invokeProcessAction
lookupObjects
showHierarchyPage
showProgressIndicator
closeProgressIndicator
refreshParentGrid

これらの新しいクライアント API とは別に、グリッド、検索、オプション セット、タイマーなど特定のコントロールのためにクライアント API が導入されています。 これらの新しい API の詳細については、各コントロールに対応するページを参照してください。

廃止されたクライアント API

一部のクライアント API は廃止されました。「一部のクライアント API の廃止」の一覧に示されたクライアント API の代わりに、新しいクライアント API と改善されたクライアント API を使用してください。

メモ: 廃止とは、該当するクライアント API を Dynamics 365 の将来のメジャー リリースから削除するという意味です。 クライアント API は公式に削除されるまで引き続き機能し、完全にサポートされます。 削除後は、この機能あるいは能力は機能しなくなります。 この機能あるいは能力が削除される前にコードの計画および更新のための時間を十分に取れるよう、今お知らせしています。

統一インターフェイスにおける新しいタイムライン コントロール用のクライアント API サポート

新しいタイムライン コントロールは、統合ビューで投稿、活動、メモを表します。 タイムライン コントロールでは次のクライアント API がサポートされます。

  • getControlType: "timelinewall" を返します。

  • getName

  • getParent

  • getLabel と setLabel

  • getVisible と setVisible

  • setFocus: コントロールの [追加] ボタンにフォーカスを設定します。

  • refresh: タイムライン ウォールを更新します。

これらのクライアント API の詳細については、「Xrm.Page.ui コントロール (クライアント側の参照)」を参照してください。

ロールベースの目的別ビジネス アプリの作成と管理

Dynamics 365 のビジネス アプリはロールベースのモジュール型アプリで、営業、サービス、マーケティングなど、ビジネスの特定の分野を対象とするタスクベースの機能を提供します。 これらのビジネス アプリでは単純で直感的な操作性がユーザーに提供され、すばやくナビゲートしたり、簡単に検索したり、タスクを効率よく実行したりすることができます。

アプリ デザイナーを使用する他に、プログラミングによってビジネス アプリの作成、簡易、検証、公開を行うことができるようになりました。 アプリを作成するときは、アプリが Web クライアント向けか統一インターフェイス向けかを選択できます。

次のエンティティを使用します。

  • AppModule エンティティ: アプリの作成、管理、検証を行います。

  • AppModuleComponent エンティティ: フォーム、ダッシュボード、ビュー、グラフ、業務プロセスなど、アプリのコンポーネントを作成して管理します。

  • AppModuleRoles エンティティ: アプリに対するユーザーのアクセスを定義するセキュリティ ロールの関連付けや関連付けの解除を行います。

また、アプリに関連する次の新しいクライアント API をグローバル コンテキスト (Xrm.Utility.getGlobalContext) で使用できます。これらを使用すると、現在のアプリに関する情報を取得できます。

  • getCurrentAppUrl: 現在のアプリの URL を取得します。

  • getCurrentAppName: 現在のアプリの名前を取得します。

  • getCurrentAppProperties: appId、displayName、uniqueName、url、webResourceId、welcomePageId など、現在のアプリのプロパティを取得します。

アプリ構成を使用したアプリ固有の設定の公開とアプリ カスタマイズ範囲の制御

ビジネス アプリは、アプリ固有のコンポーネントのみを実行時に表示してユーザーの操作性を簡略にします。 ただし、アプリ開発者が、ビジネス アプリのコンポーネントのカスタマイズの範囲を制限することはできませんでした。 さらに、ビジネス アプリのアプリ固有の設定のみを公開することはできませんでした。また、管理者には、管理対象のビジネス アプリに関係なく Dynamics 365 Customer Engagement のすべての設定が公開されていました。

ビジネス アプリのアプリ構成機能が導入され、ビジネス アプリの作成者が次の操作を行えるようになります。

  • ビジネス アプリについて関連がある設定のみを公開して、簡略化された設定を実行時に管理者に提供します。 新しい NavigationSetting エンティティを使用して、ビジネス アプリのカスタマイズ設定操作を構成します。

  • ビジネス アプリのコンポーネントのカスタマイズ範囲を制御します。

    • 新しい AppConfigInstance エンティティを使用して、Dynamics 365 のすべてのアプリについてカスタマイズできるアプリ構成マスター リストから、プロパティまたはプロパティのリストを定義します。

    • 新しい AppConfig エンティティを使用して、アプリ構成インスタンスとアプリの間にマッピングを指定します。これにより、アプリについてカスタマイズできるプロパティが定義されます。

新しい属性の種類: 複数選択オプション セット

カスタマイズにより、複数オプションを選択できる新しい種類の属性を定義できるようになりました。 これには新しいクエリ条件演算子が含まれ、選択したオプションに基づいてデータを取得するクエリを記述できます。

複数選択オプション セットのフォーム スクリプトのサポート

複数選択オプション セットは、統一インターフェイスと Web クライアントで使用できます。 複数選択オプション セットは、メイン、簡易作成、簡易表示の各フォームで使用できます。 複数選択オプション セットはレガシ フォームではサポートされません。

複数選択オプション セットは、オプション セット attributescontrols でサポートされるすべてのクライアント API をサポートします。これらの違いは、特定のメソッドの戻り値が、単一の値ではなく配列であることだけです。

フォームを開くために使用される URL にオプションの整数値を指定して、新しいレコードについて複数選択オプション セット フィールドの値を設定することもできます。

カスタム コントロールの作成

コントロールの作成機能は、プレビュー機能としてリリースされます。 Custom Control Framework (CCF) によって、UI コンポーネントを構築するための拡張フレームワークが提供され、アプリケーションのデータをビジュアル化して対話することができます。 CCF を使用すると、UI コンポーネント (メタデータ駆動型の構成可能かつ再利用可能のソリューション コンポーネント) を定義できます。 個別のフィールド、グリッド、サブグリッドについてコントロールを定義できます。

WebHooks の統合

WebHooks を使用すると、Dynamics 365 Customer Engagement のデータを、外部サービスでホストされている自らのカスタム コードに統合できます。 プラグイン登録ツールを使用して、Customer Engagement データを外部サービスにいつ送信するかを構成できます。 WebHooks は、Web API およびサービスをパブリッシュ/サブスクライブ モデルと接続するためのライトウェイト HTTP パターンです。 WebHooks の送信側は、イベントに関する情報を使用して受信側のエンドポイントに要求を行うことで、受信側にイベントについて通知します。 WebHooks モデルを使用することにより、認証ヘッダーまたはクエリ パラメーター キーを使用してエンドポイントを保護できます。 これは、現在 Azure Service Bus 統合で使用できる SAS 認証モデルの代わりになります。

ベクター イメージ Web リソース

アプリケーションに表示されるすべてのアイコンにベクター イメージを使用します。 ベクター イメージは、スケーラブル ベクター グラフィックス (SVG) (XML ベースのベクター イメージ形式) として定義されます。 他のイメージ Web リソースに対するベクター イメージの利点は、拡大縮小できることです。 サイズ別に複数のイメージを用意するのではなく、1 つのベクター イメージを定義して再利用できます。 さまざまなサイズのイメージの代わりに、この Web リソースを使用してエンティティのアイコンを定義できます。

ローカライズ可能ソリューションのサポート

RESX Web リソースを使用して、ソリューションのためのローカライズした文字列を格納できます。 RESX XML 形式はローカライズされるリソースの定義に一般的に使用され、この種類のファイルを操作するためのツールがあります。ローカライズ ベンダーはこれらの操作に慣れています。 RESX Web リソースを、そのリソースを使用するすべての JavaScript Web リソースと関連付けることができます。こうすることで、新しいクライアント側 API を使用して、ローカライズされた文字列に実行時にアクセスできます。

JavaScript Web リソース依存関係

多くの場合、JavaScript Web リソースは他のリソースと対話する必要があります。たとえば、他の JavaScript ライブラリ、イメージ、属性値、またはローカライズされた文字列に対応する新しい RESX Web リソースです。 現在、JavaScript Web リソースを任意の依存リソースと関連付けて、必要なときにそのリソースが得られるように構成することができます。

JavaScript Web リソースを別の種類の Web リソースと関連付けると、JavaScript Web リソースがアプリケーションで要求されたときに、関連付けられた Web リソースが自動的に読み込まれます。 フォーム スクリプトで使用される JavaScript Web リソースに、特定のエンティティの属性を関連付けると、その属性のフィールドがフォームに含まれていない場合でも、そのエンティティ属性をスクリプトで使用できるようになります。

対話型サービス ハブの改善

対話型サービス ハブが次のように変更されています。

  • 対話型サービス ハブの名前が顧客サービス ハブになり、統一インターフェイス アプリとして使用できるようになりました。

  • 顧客サービス ハブ アプリは、フォームの種類としてメイン - 対話型エクスペリエンスではなくメインを使用します。 以前のバージョンの Dynamics 365 Customer Engagement からアップグレードすると、メイン - 対話型エクスペリエンスのすべてのフォームはメイン フォームに変換されます。 アップグレードの際に、カスタマイズ可能なメイン - 対話型エクスペリエンス フォームはすべて非アクティブに設定されます。アップグレード後に、それらのフォームを使用するには、変換済みフォームを有効にする必要があります。 また、フォーム順序の競合を防ぐために、メイン フォームに変換されたすべてのメイン - 対話型エクスペリエンス フォームは、既存のメイン フォームよりも下にランクされます。 これにより、アップグレード後に正しいフォームが Web クライアントでユーザーに表示されます。

  • 新しい顧客サービス ハブ アプリではすべてのエンティティが対話型エクスペリエンスで有効です。 これは、対話型エクスペリエンスに対してエンティティを有効化できるかどうかを示す EntityMetadata.IsInteractionCentricEnabled プロパティが不要になることを意味します。 カスタマイズ ツールでのこのプロパティに対応する設定 [対話型エクスペリエンスの有効化] は、現在のリリースでは削除されています。EntityMetadata.IsInteractionCentricEnabled プロパティは、Customer Engagement の Dynamics 365 SDK の将来のバージョンでは削除される予定です。

エンティティにバインドされたグリッドでのデータ行の既定オープン動作の上書き

現在、エンティティにバインドされたグリッドのデータ行で次のアクションを実行すると、既定でエンティティ レコードが開きます。

  • データ行をダブルクリックするか、行の主属性リンクをクリックします。

  • データ行を選択して、Enter キーを押します。

  • タッチ対応デバイスでデータ行を選択します。

エンティティ レコードを開きたくない状況があります。たとえば、ドキュメント管理レコードの場合は、レコードを表示するのではなく SharePoint サイトを開く必要があります。 独自のカスタム動作を定義して、既定の動作を上書きできるようになりました。

現在、Mscrm.OpenRecordItemId 属性の値としてエンティティのコマンド定義を作成し (<CommandDefinition> (RibbonDiffXml))、コマンド <Actions> (RibbonDiffXml) のカスタム アクションを定義できます。 エンティティにバインドされたグリッドのレコードを開こうとすると、Customer Engagement はエンティティについてこのコマンド ID を確認します。これが存在する場合は、エンティティ レコードを開く (既定動作) 代わりにカスタム アクションを実行します。

業務プロセス フローの拡張

業務プロセス フローの拡張により、次の変更が加えられています。

  • 統一インターフェイスで、setDisplayState メソッドを使用すると、業務プロセス コントロールを "展開" と "折りたたみ" だけでなく "フローティング" 状態に設定できます。 同様に、getDisplayState メソッドは、業務プロセス コントロールの状態に応じて、"フローティング"、"展開"、または "折りたたみ" を返します。 フローティング状態は Web クライアントには適用されません。

  • Xrm.Utility.invokeProcessAction という新しいクライアント API を使用してプロセス アクションを実行できます。 新しいクライアント API を使用してプログラミングでプロセス アクションを実行する機能は、このリリースのプレビュー機能としてリリースされます。

    • Web クライアントでは、この新しいクライアント API を使用してすべてのプロセス アクションを実行できます。 ただし、統一インターフェイスでは、業務プロセス ステップとして実行できるプロセス アクションしかこの新しいクライアント API を使用して実行できません。

    • 新しいクライアント API getProgresssetProgress を使用して、プロセス アクション ステップの進捗を取得および設定します。 これらのメソッドを使用して、ステップ進捗状態 (なし: 0、処理中: 1、完了: 2、失敗: 3、無効: 4) を取得および設定できます。 これらの新しいクライアント API もこのリリースでプレビュー機能としてリリースされています。

    • getProgress および setProgress クライアント API は、プロセス データ ステップではサポートされません。

  • 新しいクライアント側 API Xrm.Navigation.openTaskFlow を使用してタスク フローを実行できます。

Unified Service Desk 3.0 の新機能

開発者は Unified Service Desk 3.0 リリースで次の新機能を使用できます。

エンティティ データを Dynamics 365 Customer Engagement からプリフェッチして顧客データをエージェントにすばやく表示する

Unified Service Desk では、エンティティ レコードの関連情報をエンティティ レコード ページと一緒にコンテキストに読み込めるようになり、エンティティ Web ページ全体がクライアント アプリケーションに読み込まれるまで待つ必要がなくなりました。 フェッチされたエンティティ情報は Unified Service Desk コンテキストに移入され、ホストされたどのコントロールでも、関連するエンティティ情報をクライアント アプリケーションにすぐに表示できます。 これによって、エージェントが顧客に対してすぐに行動したり話し合いを始めたりすることができ、貴重な対話の時間を節約できます。

Unified Service Desk でエンティティ データをプリフェッチするには、ホストされたコントロールの CRM ページの種類を構成するときに [データのプリフェッチ] チェック ボックスを選択します。 また、新しいイベント DataReady が、ホストされたコントロールの CRM ページの種類に追加されています。これは、エンティティ レコードの関連情報が Unified Service Desk コンテキストに読み込まれてからすぐにアクションを実行するために役立ちます。 この DataReady イベントは必ず BrowserDocumentComplete イベントの前に起動されます。コントロールで [データのプリフェッチ] 属性が選択されている場合は、エンティティ データが別の並列呼び出しでサーバーにフェッチされるとすぐに起動されます。ページ全体の読み込みが完了するまで待機することはありません。エンティティ データがプリフェッチされると、DataReady イベントもインライン ナビゲーションで起動されます。

非同期でエンティティ レコードを作成して実行ブロックを防止する

グローバル マネージャーのホストされたコントロールに対する CreateEntity アクションは、同期してメイン スレッドにエンティティ レコードを作成します。Unified Service Desk は、CreateEntity アクションが完了するまで待ってから、次のタスクに進む必要があります。 このとき、Unified Service Desk はアクションが完了するまで応答できなくなり、場合によっては好ましくありません。

このリリースでは、CreateEntity アクションに新しいデータ パラメーター RunAsync が導入されています。これを使用すると、アクションが非同期で実行するように設定でき (RunAsync=true)、アクションの実行中に Unified Service Desk がブロックされず、応答できるようになります。

メモ: CreateEntity アクションの関連付けられたサブアクション呼び出しや後続のアクション呼び出しは、非同期作成処理が完了するまで待機しません。 そのため、CreateEntity アクションを非同期で実行する場合、作成されるレコードを利用するサブアクション呼び出しは、対象のレコードが完成した後で実行されるように構成する必要があります。 これは、グローバル マネージャーのホストされたコントロールに対して ExecuteOnDataAvailable アクションを使用して行います。 詳細については、CreateEntity アクションの説明を参照してください。

ツールバー ボタン、通知、パネル ナビゲーションのためのキーボード ショートカット

  • ツールバー ボタンがキーボード ショートカットに対応するようになりました。ツールバー ボタンを作成するときにショートカットを定義できます。 これにより、エージェントが、ツールバー ボタンに構成されたアクションを Unified Service Desk クライアントのどこからでも、クリックしないで実行できるようになります。 ツールバー ボタンのショートカット キーが作動するのは、ボタン、上位ボタン (ある場合)、およびツールバーそのものの表示条件と有効条件が true と評価される場合のみです。

  • Unified Service Desk の通知が、キーボード ショートカットに対応するようになりました。 既定のキーボード ショートカット Alt+1 を使用して、通知にフォーカスを設定します。 複数の通知が表示されている場合は、Alt+1 を繰り返して押すと、画面上のアクティブな通知すべてを順に見ることができます。 通知のキーボード ショートカット キーを変更するには、新しい PopupNavigationShortcut UII オプションを使用し、ショートカット キーを選択して指定します。

  • 以前すべてのアクティブなパネルを順に移動するために使用されていたキーボード ショートカット Ctrl+0 を、他のキーの組み合わせを使用するように変更することはできません。 現在は、新しい UII オプション PanelNavigationShortcut を使用して、すべてのアクティブなパネルを順に移動するためのショートカット キーを選択して指定できます。

デバッガー コントロールの拡張

デバッガー コントロールが拡張され、次の新しい機能が提供されています。これらの機能によって、開発やカスタマイズで、カスタム コードや構成変更のデバッグやトラブルシューティングを行いやすくなっています。

  • データの並べ替え: [アクション コール] タブの列のデータを並べ替えて、列内でデータを昇順や降順に表示します。 [並べ替えられた列のリセット] アイコンを選択すると、並べ替えた列データをリセットして、[アクション コール] タブに表示された既定のデータに戻すこともできます。

  • アクション コールの再生: [アクション コール] タブでアクション コール レコードを右クリックし、ショートカット メニューから [再生] を選択すると、アクション コールをすぐに再実行できます。 アクション コールのデータ パラメーターを編集してから再実行することもできます。[アクション コール] タブでアクション コールを右クリックし、ショートカット メニューから [編集] を選択します。 こうすると、[直接アクション] タブにアクション コール定義が読み込まれます。そこで必要な情報を変更して再実行します。

  • イベントの再生: [アクション コール] タブでイベント レコードを右クリックし、ショートカット メニューから [再生] を選択すると、イベントをすぐに再実行できます。 アクション コールとは異なり、イベントを編集して再実行することはできません。

  • [直接アクション] タブの拡張: [クリア] アイコンを選択して、[直接アクション] タブのすべてのフィールドの情報をクリアします。

  • 置換パラメーターの拡張: [データ パラメーター] タブで、新しいアイコンを使用して、置換パラメーターと値の追加、置換パラメーターの値のコピー、置換パラメーターの値の編集を行えるようになりました。

JAWS スクリーン リーダー サポートの構成

Unified Service Desk では、Unified Service Desk クライアントの音声出力として、Windows 用スクリーン リーダーである JAWS (Job Access With Speech) バージョン 18 をサポートするようになりました。 Dynamics 365 Web クライアント パッケージに含まれるすべてのコントロールは JAWS に対応しています。

フォーカス可のコントロールについて JAWS スクリーン リーダーのサポートを構成できます。 JAWS では、ラベルなど、フォーカスできないコントロールはサポートされません。 対処方法として、フォーカス不可のコントロールをユーザー コントロールとして作成する (<UserControl> でラップする) ことで、JAWS スクリーン リーダーに対応できます。

また、JAWS スクリーン リーダーでは、ボタンのツールヒント テキストの読み上げはサポートされません。 ただし、Unified Service Desk でカスタム スクリプトを使用すると、JAWS スクリーン リーダーがツールヒント テキストを読み上げるようにすることができます。