カスタマイズのベスト プラクティス

Dynamics 365 Field Service のパフォーマンス、ユーザビリティ、サポート性の問題を回避するために、以下のベストプラクティスに従ってください。

フォームのカスタム フィールドを最小化する

システム カスタマイザーは、エンティティ フォームにカスタム フィールドを追加して、業界やビジネスに固有の情報を取得し、ビジネス プロセスを実行し、レポートする情報を収集します。 ただし、フォームのカスタム フィールドが多すぎると、パフォーマンスの問題が発生する可能性があります。

パフォーマンスの問題を回避する方法:

  • すべてのフォームで、カスタム フィールドの数を最小限に抑えます。 作業指示書 フォームがField Serviceアプリで最もよく使用されるフォームである場合は、そのフォームから始めるのが適切です。
  • カスタム フィールド内のルックアップ タイプのフィールドとサブグリッドの数を最小限に抑えます。
  • カスタム フィールド (特にルックアップとサブグリッド) を最初のフォームタブから他のフォームタブに移動します。
  • フォーム上のあまり使用されないフィールドをデフォルトで非表示にします。

標準機能の Web リソース、オプション セット、セキュリティ ロール、またはワークフローは変更しないでください

標準機能の Web リソース、オプション セット、セキュリティ ロール、ワークフローを変更またはカスタマイズしないでください。 そうしないと、意図しないシステム動作が発生する可能性があります。

これらのコンポーネントをカスタマイズする組織では、アイデア ですぐに問題が発生しない可能性があります。 ただし、カスタマイズされたすぐに使用できるコンポーネントに対してMicrosoftがリリースする変更は、それらのコンポーネントの最上位の レイヤー には適用されません。 代わりに、特定のカスタマイズされた レイヤー が将来のすべての変更を上書きし、それらの上書きによって最終的に予期しないエラーや動作が発生します。

日付フィールドやシステム状態を変更、編集、削除しないでください

データ フィールドと状態を変更、編集、削除すると、ビジネス ロジックに影響を与え、ソリューションの更新で問題が発生する場合があります。 作業指示書 日付フィールドの例には、 約束からの時間約束までの時間が含まれます。 ステータス フィールドの例には、作業指示書 の システム ステータス や契約の システム ステータス などがあります。

既成のフィールドを編集したり、フォームから削除したりしないでください。

顧客はビジネスニーズに合わせてすぐに使用できるフィールドを編集します。 ただし、特にプロセスがそれらのフィールドの値に依存している場合は、標準フィールドを編集するとエラーが発生する可能性があります。

エラーを回避するには:

  • フォーム上の不要なフィールドを非表示にします。
  • 不要なフィールドを別のフォームタブに移動します。

たとえば、フィールド サービス プロセスは、 予約可能リソース予約 レコードの 予想到着時間 フィールドの値を計算して、最前線の作業員が現場に到着する予定時刻を示します。 組織でこのフィールドが必要ない場合は、削除するのではなく、 フォーム上で非表示にします

オプション セット (選択) 値は編集しないでください

標準フィールドの オプション セット 値を編集すると、特にプロセスがそれらのフィールドの値に依存している場合やアップグレード中にエラーが発生する可能性があります。

エラーを回避するには:

  • すぐに使用できるフィールドの オプション セット ラベル のみを編集します。 これらのフィールドの オプション セットを決して編集しないでください。
  • オプション セットの選択肢は削除しないでください。
  • オプションセットの選択肢を追加しないでください。

たとえば、フィールド サービス 作業指示書 には、デフォルトで システム ステータス フィールドが含まれています。 このフィールドは オプション セット ( 選択 タイプ) であり、 未スケジュールスケジュール済み進行中完了キャンセル などのオプションがあります。 各オプションにはラベルと関連する数値があります。 システム管理者はオプション セットのラベル ( Unscheduled など) を編集できますが、ラベルに関連付けられている数値を編集することはできません。

カスタム スクリプトの使用を減らし、ベスト プラクティスに従う

システム カスタマイザーは、ビジネス ロジックを実行するためのスクリプト (通常はJavaScript Webリソース) を作成します。 ただし、カスタム スクリプトは、アップグレード中にパフォーマンスの問題、エラー、および複雑さを引き起こす可能性があります。

これらの問題を回避する方法:

  • ロード時に実行されるスクリプトの数を最小限に抑えます。
  • 大量のデータを呼び出すスクリプトを作成しないでください。また、同じデータを呼び出す複数のスクリプトを作成しないでください。

次のサブセクションではベストプラクティスについて説明します。 さらに、 Dynamics 365 Customer Engagementを使用した開発のベスト プラクティス のフォーム スクリプトのベスト プラクティスを 追従する します。

OnLoad イベントで要求されるネットワーク要求の数とデータの量を最小限に抑えます

フォームの読み込み中に行われるネットワーク リクエストの数が増え、それらのリクエストからダウンロードされるデータが増えると、フォームの読み込みにかかる時間が長くなります。 必要な最小限のデータのみを要求します。 さらに、将来のフォームの読み込み時に不必要にデータを要求しないように、可能な場合はデータをキャッシュすることを検討してください。

同期ネットワーク要求の使用は避けてください

同期ネットワーク要求により、ページの読み込みが遅くなり、フォームが応答しなくなる可能性があります。 代わりに非同期要求を使用する。 次のブログ投稿には、さらに多くの例が示されています: 同期リクエストから移行してモデル駆動型アプリを強化する。 さらに、同じエンティティとレコードに対して複数のネットワーク呼び出しが必要なシナリオでは、「非同期と待機」の使用を検討してください。 asyncとawaitについて詳しくはをご覧ください。

不要な JavaScript Web リソース ライブラリの組み込みの回避

フォームに追加するスクリプトが増えるほど、ダウンロードにかかる時間も長くなります。 通常、スクリプトは最初に読み込まれた後にブラウザにキャッシュされます。 ただし、フォームを初めて表示したときのパフォーマンスは、多くの場合、大きな印象を与えます。

Onload イベントでのすべてのスクリプトの読み込みの回避

列のイベントのみ、またはイベントのみをサポートするコードがある場合は、イベントではなくそれらのイベントのイベント ハンドラーを使用してスクリプト ライブラリを設定してください。 OnChange OnSave OnLoad この方法では、これらのライブラリの読み込みを延期することができ、フォームが読み込まれるときのパフォーマンスが向上します。

折りたたまれたタブを使用してWebリソースの読み込みを遅らせる

折りたたみ可能なタブのセクションに含まれるWebリソースまたはコンポーネントは、タブが折りたたまれている場合は読み込まれません。 iFrame タブが展開されたときにのみ読み込まれます。 タブの状態が変化すると、 TabStateChange イベントが発生します。 折りたたまれたタブ上のWebリソースまたはiFrameをサポートするために必要なコードでは、 TabStateChange イベントのイベント ハンドラーを使用でき、 OnLoad イベントで発生する可能性のあるコードを削減できます。

クライアント側のコードで重複するネットワーク要求を回避する

複数のネットワーク リクエストや重複したネットワーク リクエストがある場合は、Web ブラウザが停止し、フォームの読み込み時間に影響する可能性があります。 リクエストの数を減らすことで、パフォーマンスを向上させることができます。 別の方法としては、ネットワーク リクエストを統合し、これらのリクエストの値をキャッシュする方法があります。 さらに、前述したように、非同期ネットワーク要求も考慮してください。

関連情報がXRM APIで利用可能な場合は、ロールとシステムユーザー固有の呼び出しの使用を避けてください。

XRM APIを使用して、ユーザー権限情報を取得するためのネットワーク要求を回避します。 同期リクエストからの移行方法について詳しくは、こちらをご覧ください。。 さらに、XRM APIからの情報が要件を満たしている場合は、システム ユーザー呼び出しを避けてください。

既定の表示オプションの設定

OnLoad イベントでは、フォーム要素を非表示にするフォーム スクリプトの使用は避けてください。 代わりに、非表示になる可能性があるフォーム要素については、フォームが読み込まれたときに要素がデフォルトで非表示になるように、デフォルトの表示オプションを設定します。 次に、 OnLoad イベント内のスクリプトを使用して、表示するフォーム要素を表示します。

詳細については、次のリソースを参照してください。

スクリプトでソリューションチェッカーを実行する

Power Apps ソリューション チェッカーは、問題のある Power Apps ソリューションをチェックし、ベストプラクティスを推奨するマイクロソフトの便利なツールです。 これらの問題には、JavaScript、HTML、プラグイン、カスタム ワークフロー アクティビティに関する問題が含まれます。

詳細については、次のリソースを参照してください。

同期ワークフローの代わりに非同期ワークフローを使用する

システム カスタマイザーは、Field Serviceでデータが変更されたときに実行されるビジネス ロジックをリアルタイムで実行するために、同期ワークフローを作成することがよくあります。 ただし、ワークフローを同期して実行すると、パフォーマンスが低下します。 パフォーマンスの問題を回避するには、代わりにワークフローを非同期で実行します。

Field Service とリソース スケジュールの既成のプロセスをアクティブ化する

フィールド サービスとリソース スケジューリングには、必要なビジネス ロジックを実行する多くのプロセスが含まれます。 非アクティブ化されたプロセスはエラーの原因となります。 問題を回避するには、すべてのフィールド サービスおよびリソース スケジューリング プロセスがアクティブな状態であることを確認してください。 プロセスが非アクティブ状態にあるかどうかを識別するには、定期的に フィールド サービス ソリューション正常性ハブ を実行します。

ソリューション正常性ハブ を実行して問題を検出します

ソリューション正常性ハブ は、環境 の状態をより正確に把握し、Dynamics 365環境 の問題を検出するのに役立ちます。 環境 の構成は、自然なシステム操作によって時間の経過とともに変化する可能性があります。 ソリューション正常性ハブ はインスタンス内でルールを実行し、環境 の構成を検証します。 一部のルールはField Serviceに固有のものであり、問題が発生したときにオンデマンドで実行できます。 一部のルールは、Field Serviceがインストールまたは更新されると自動的にトリガーされます。

環境 の健全性を監視するには、定期的に ソリューション正常性ハブ ルールセットを実行してください。

モバイル アプリのパフォーマンスに関する考慮事項

モバイル アプリをカスタマイズするとパフォーマンスに影響する可能性があります。 詳細については、 モバイル アプリをカスタマイズする際のパフォーマンスの考慮事項をご覧ください。