Share via


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

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

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

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

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

  • すべてのフォームで、カスタム フィールドの数を最小限に抑えます。 Field Service アプリで最も使用するフォームであれば、作業指示書から始めることをお勧めします。
  • カスタム フィールドの中で、ルックアップ タイプのフィールドやサブグリッドを最小化することは、ロード時間などのフォームパフォーマンスに最も大きな影響を与えます。
  • カスタム フィールド (特にルックアップとサブグリッド) を最初のフォームタブから他のフォームタブに移動します。
  • 既定では、フォーム上の使用頻度の低いフィールドは非表示になります。

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

すぐに使用できる Web リソース、オプション セット、セキュリティ ロール、またはワークフローのカスタマイズ、依存関係の取得、またはカスタム呼び出しはサポートされていないため、意図しないシステム動作が発生する可能性があります。

これらのコンポーネントをカスタマイズしている組織では、環境内の問題がすぐに確認できない場合があります。 ただし、Microsoft がカスタマイズされたすぐに使用できるコンポーネントに対する変更をリリースすると、これらの変更はそのコンポーネントの最上位層には適用されません。 特定のカスタマイズされたレイヤーは今後のすべての変更をオーバーライドするため、最終的には予測できないエラーや動作が発生します。

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

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

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

顧客は、ビジネスニーズに対応するために、既成のフィールドを編集します。 しかし、既成のフィールドを編集すると、特にプロセスがそのフィールドの値に依存している場合、エラーが発生する可能性があります。

エラーを回避するには:

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

ここでは次のような例をご紹介します: Field Service プロセスでは、現場作業員がいつ現場に到着するかを示すために、予約可能なリソース予約レコードの 到着予定時刻 フィールドの値を算出しています。 このフィールドを必要としない組織の場合は、削除ではなく、フォーム上で非表示にしてください。

詳細については、次の記事を参照してください。

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

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

エラーを回避するには:

  • オプション セットの ラベルのみを編集し、既成のフィールドのオプションセットの編集しないでください
  • オプション セットの選択肢は削除しないでください。
  • オプションセットの選択肢を追加しないでください。

ここではその一例をご紹介します: Field Service の作業指示書には、既定で "システム ステータス" というフィールドが含まれています。 このフィールドは、予定なし、予定あり、進行中、完了、キャンセルなどのオプションを持つオプション セット です。これらのオプションには、それぞれラベルと関連する数値が設定されています。 システム管理者は、オプションセットのラベル (予定なしなど) を編集することはできますが、ラベルに関連する数値を編集することはできません。

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

システム カスタマイザーは、通常は JavaScript のウェブリソースであるスクリプトを記述して、ビジネス ロジックを実行します。 しかし、カスタム スクリプトを使用すると、パフォーマンスの問題やエラーが発生したり、アップグレード時に複雑な処理が必要になる場合があります。

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

  • 読み込み時に実行するスクリプトを最小限に抑えます。
  • 大量のデータを呼び出すスクリプトや、同じデータを呼び出す複数のスクリプトの記述を避けます。

次のようなフォーム スクリプトのベスト プラクティスを参考に、これらに従います:

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

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

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

同期ネットワーク要求により、ページの読み込みが遅くなり、フォームが応答しなくなる可能性があります。 代わりに非同期要求を使用する。 こちらのブログ記事 を参照してください。 また、同じエンティティやレコードに対して複数のネットワーク呼び出しが必要な場合は、「非同期と待機」の使用を検討してください。詳細はこちら

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

フォームにより多くのスクリプトを追加すると、それらをダウンロードする時間が余計にかかります。 通常、スクリプトは最初に読み込まれた後、ブラウザーにキャッシュされますが、フォームを最初に表示するときのパフォーマンスがきわめて強い印象を与えます。

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

カラムの OnChange イベントや OnSave イベントのみをサポートするコードがある場合は、OnLoad イベントではなく、これらのイベントのイベント ハンドラーをスクリプト ライブラリに設定してください。 このように、フォームを読み込むとき、これらのライブラリの読み込みを延期することができるし、パフォーマンスを向上させることもあります。

折りたたまれたタブを使用して Web リソースの読み込みを延期

Web リソースと iFrame が折りたたみまれたタブ内のセクションに含まれている場合、タブが折りたたまれている場合は、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 とリソース スケジュールの既成のプロセスをアクティブ化する

Field Service とリソース スケジュールには、必要なビジネスロジックを実行する多くのプロセスがあります。

非アクティブ化されたプロセスはエラーの原因となります。

問題を回避するには、すべての Field Service とリソース スケジュールのプロセスがアクティブな状態になっていることを確認してください。 Field Service ソリューションのヘルス ハブを定期的に実行し、プロセスが非活性化された状態にあるかどうかを確認します。

ソリューション ヘルス ハブを実行して問題を検出する

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

Field Service ソリューション ヘルス ハブのルールセットを定期的に実行して、環境の健全性を監視します。

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

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