Field Service のカスタムトリガ
Field Service パッケージには、Salesforce オブジェクトに対するトリガが用意されています。各トリガは、さまざまな条件をチェックし、検出された内容に基づいてタスクを実行します。カスタムオブジェクトに対して実行されるトリガと、標準オブジェクトに対して実行されるトリガがあります。
| トリガ名 | ホストオブジェクト | オブジェクト種別 |
|---|---|---|
| FSL__TR021_AssignedResource.trigger | 割り当て済みリソース | 標準オブジェクト |
| FSL__TR004_Event.trigger | 行動 | 標準オブジェクト |
| FSL__TR030_GanttPalette.trigger | ガントチャートパレット | カスタムオブジェクト |
| FSL__TR029_GanttFilter.trigger | ガントチャート検索条件 | カスタムオブジェクト |
| FSL__TR034_OperatingHours.trigger | 業務時間 | 標準オブジェクト |
| FSL__TR013_OptimizationRequest.trigger | 最適化リクエスト | カスタムオブジェクト |
| FSL__TR028_Polygon.trigger | 地図の多角形 | カスタムオブジェクト |
| FSL__TR007_ResourceAbsence.trigger | リソース不在 | 標準オブジェクト |
| FSL__TR010_SchedulingPolicy.trigger | スケジュールポリシー | カスタムオブジェクト |
| FSL__SchedulingPolicyWorkRule.trigger | スケジュールポリシー作業ルール | カスタムオブジェクト |
| FSL__TR001_Service.trigger | サービス予定 | 標準オブジェクト |
| FSL__TR008_ServiceResource.trigger | サービスリソース | 標準オブジェクト |
| FSL__TR012_Capacity.trigger | サービスリソース業務量 | 標準オブジェクト |
| FSL__TR066_ServiceObjective.trigger | サービス内容 | カスタムオブジェクト |
| FSL__TR025_ServiceResourceSkill.trigger | サービスリソーススキル | 標準オブジェクト |
| FSL__TR0023_ServiceTerritory.trigger | サービステリトリー | 標準オブジェクト |
| FSL__TR020_ResourceTerritories.trigger | サービステリトリーメンバー | 標準オブジェクト |
| FSL__TR0024_ServiceTerritory.trigger | スキル要件 | 標準オブジェクト |
| FSL__TR051_TimeDependency.trigger | 時間の連動関係 | カスタムオブジェクト |
| FSL__TR027_TimeSlot.trigger | 時間枠 | 標準オブジェクト |
| FSL__TR005_UserTerritory.trigger | ユーザテリトリー | カスタムオブジェクト |
| FSL__TR022_WorkOrder.trigger | 作業指示 | 標準オブジェクト |
| FSL__TR026_WorkRule.trigger | 作業ルール | カスタムオブジェクト |
| FSL__TR022_WorkOrderLineItem.trigger | 作業指示品目 | 標準オブジェクト |
割り当て済みリソース
Before Insert:
- 作成されたリソースのいずれかがクルーのメンバーである場合は、トリガの実行を停止します。この状況は別のフローで処理されます。
- 挿入された割り当て済みリソースのスケジュール済み開始時刻とスケジュール済み終了時刻の項目が入力されていない場合は、トリガを失敗とします。
- 作成されたリソースに有効なサービステリトリーメンバーが割り当てられていない場合は、トリガを失敗とします。
- 作成されたリソースの種別がクルーである場合は、リソースの ServiceCrewId 項目に値を入力します。
After Insert:
- [サービステリトリー共有を有効化] 設定が有効化されている場合、このトリガは、作成されたサービス予定をサービステリトリー公開グループと共有します。この動作により、サービス予定テリトリーの一部である派遣担当者に共有が提供されます。
- [サービステリトリー共有を有効化] 設定が有効化されていて、それぞれのサービス予定の親共有設定が有効化されている場合、このトリガは作成されたサービス予定の親をサービステリトリー公開グループと共有します。この動作により、サービス予定テリトリーの一部である派遣担当者に共有が提供されます。詳細は、「フィールドサービスレコードへのアクセスの制限」を参照してください。
- 状況カテゴリが [派遣済み] に変更された場合、このトリガは、作成されたリソースのサービス予定をサービスリソースのユーザと共有します。サービステリトリーが変更された場合、このトリガはサービステリトリーの公開グループと共有します。
- 関連する設定が有効化されている場合は、割り当て済みリソースのユーザをメンションします。
- 可能であれば、この操作を非同期方式で実行します。
- 作成されたリソースのいずれかがクルーのメンバーである場合は、トリガの実行を停止します。この動作は別のフローで処理されます。
- 作成されたリソースに基づいて、カレンダーの行動を更新または作成します。
- 割り当て済みリソースのサービス状況が [なし] または [キャンセル済み] である場合、このトリガはリソースの状況を [割り当て済み] に変更します。
- 作成されたリソースのサービスが複数日のサービス予定である場合、このトリガはサービス所要時間を再計算する必要があるかどうかを確認します。必要がある場合は再計算を実行します。
- 組織で移動トリガが有効化されている場合、このトリガは、サービスの開始日と終了日と同じスケジュールのすべてのサービスの移動を再計算します。
- クルーメンバーの割り当て済みリソースを作成します。トリガのリソースの種別がクルーである場合は、クルーメンバーごとに 1 つのリソースを作成します。
- リソースのサービス予定に従って ResourceCapacity オブジェクトを更新します。サービス予定がコントラクターに対してスケジュールされている場合、このトリガは、実際にスケジュールされている作業時間と割り当て済みの作業品目を反映するように業務量を更新します。
Before Update:
- 作成された割り当て済みリソースレコードに有効なサービステリトリーメンバーが割り当てられていない場合は、トリガを失敗とします。
- サービスリソースの種別がクルーである場合は、リソースの ServiceCrewId 項目に値を入力します。
After Update:
- サービス予定が複数日の予定である場合、このトリガはサービス所要時間を再計算する必要があるかどうかを確認します。必要がある場合は再計算を実行します。
- 更新された割り当て済みリソースに基づいて、カレンダーの行動を更新または作成します。
- リソースの更新内容に基づいて割り当て済みリソースを作成および削除します。トリガの割り当て済みサービスリソースの種別がクルーである場合は、クルーメンバーごとに 1 つの割り当て済みリソースを作成します。
- 割り当て済みリソースのサービス予定に従ってリソースの業務量オブジェクトを更新します。割り当て済みリソースがコントラクターに対してスケジュールされている場合は、実際にスケジュールされている作業時間と割り当て済みの作業品目を反映するように業務量を更新します。
- 割り当て済みリソースの更新で [サービスリソース] 項目が変更された場合、このトリガは、古い共有を削除して、サービスリソースのテリトリーと派遣担当者のテリトリーに従って共有を作成します。
- [設定] ページで [割り当て済みリソースを、[派遣済み] または [処理中] のサービス予定のフォロワーにする] 設定が有効化されていて、それぞれのサービス予定の [状況のカテゴリ] 項目が更新された場合、このトリガは、更新された割り当て済みリソースをサービス予定と親のフォロワーにします。
- 組織で移動トリガが有効化されている場合、このトリガは、サービスの開始日と終了日と同じスケジュールのすべてのサービスの移動を再計算します。
- 実際のスケジュール操作 (最適化、自動、手動) に従ってスケジュールモードを更新します。
Before Delete:
- 削除する割り当て済みリソースのサービス予定から共有を削除します。
- 削除する割り当て済みリソースの種別がクルーである場合、このトリガは、それぞれのクルーメンバーの予定リソースを削除します。
- 組織で移動トリガが有効化されている場合、このトリガは、削除された割り当て済みリソースのサービスの開始日と終了日と同じスケジュールのすべてのサービスの移動を再計算します。
- 削除された割り当て済みリソースのサービス予定に従ってリソースの業務量オブジェクトを更新します。コントラクターでサービス予定のスケジュールが解除された場合は、実際にスケジュールされている作業時間と割り当て済みの作業品目を反映するように業務量を更新します。
- [設定] ページで [割り当て済みリソースを、[派遣済み] または [処理中] のサービス予定のフォロワーにする] 設定が有効化されている場合、このトリガは、削除された割り当て済みリソースのサービス予定とその親のフォローを解除します。
- 削除された割り当て済みリソースのサービス予定でスケジュールされている開始時間と終了時間を無効にして、状況を [なし] に変更します。
- 2 つの [すぐにフォロー] チェーンのいずれかのスケジュールが解除された場合 (つまり、割り当て済みリソースが削除された場合)、このトリガはチェーン内の各サービス予定のスケジュールを解除します。詳細は、「別の予定の直後の予定のスケジュール」を参照してください。
行動
このオブジェクトのすべてのトリガはカレンダー同期機能の一部です。同期機能については、Trailblazer Community のナレッジ記事番号 000316720 を参照してください。
Before Insert:
- カレンダー同期のナレッジ記事で説明されている設定に従って、リソース不在、作業指示、サービス予定、割り当て済みリソースを作成します。
- カレンダー同期の設定は、[Field Service 設定] ページにあります。[設定] ページで を選択します。
After Update:
このファイルの名前は FSL__TR004_Event_BeforeUpdate ですが、更新後にのみ起動します。
- 次の項目のいずれか 1 つ以上が変更された場合、このトリガは���れに従って Salesforce レコードの [所有者 ID]、[件名]、[場所]、[開始日時]、[終了日時] を更新します。
- [FSL__Event_Type__c] 項目が変更されていて新しい値が有効である場合、このトリガは、その値に従って Salesforce レコードを作成します。
After Delete:
このファイルの名前は FSL__TR004_Event_BeforeDelete ですが、削除後にのみ起動します。
- [FSL__Event_Type__c] 項目がサービス予定の [カレンダーの行動種別] 設定と一致し、サービスが更新されていない場合、このトリガは、そのサービスに関連する割り当て済みリソースを削除します。このトリガは、サービス予定のスケジュールを解除します。
- [FSL__Event_Type__c] 項目がリソース不在の [カレンダーの行動種別] 設定と一致している場合、このトリガは、関連する不在を削除します。
ガントチャート検索条件
After Insert:
- [すべてのユーザがこの検索条件を使用できるようにします] チェックボックスがオンである場合、このトリガは [FSL__Gantt_Filter__c] と [allInternalUsers] グループの共有レコードを作成します。
After Update:
- [すべてのユーザがこの検索条件を使用できるようにします] チェックボックスがオフである場合、このトリガは共有レコードを削除します。
- 更新でこのチェックボックスがオンになると、このトリガは「After Insert」に説明されているように共有レコードを追加します。
ガントチャートパレット
After Insert:
- allInternalUsers グループに共有を追加します。
After Update:
- このような共有がすでに存在しない場合は、[allInternalUsers] グループに共有を追加します。
地図の多角形
Before Insert:
- 指定された項目に多角形の最小および最大の緯度と経度を設定します。
Before Update:
- 指定された項目に多角形の最小および最大の緯度と経度を設定します。
業務時間
Before Delete:
- 削除されたレコードが予定の予約設定でデフォルトの業務時間ではないことを検証します。[Field Service 設定] ページで、 を選択します。
最適化リクエスト
Before Insert:
- [FSL__Text_Status__c] テキスト項目に [FSL__Status__c] ピックリスト項目の値を設定します。[FSL__Text_Status__c] は、外部 ID としてマークされたテキスト項目であり、クエリパフォーマンスを高めるために使用されます。
Before Update:
- [FSL__Status__c] ピックリスト項目の [処理中] から [キュー] への変更を禁止します。このトリガは、状況を [処理中] に戻します。
- [FSL__Status__c] 値が [中止] のレコードが [完了] に変更されないことを検証します。変更される場合、このトリガは状況の変更を禁止して、エラーをスローします。
- 状況が [中止] に変更される場合、このトリガは次の条件を確認します。
- 変更が最適化ユーザによって引き起こされたものではない。
- 最適化要求が自動終了機能によって中止されていない。自動終了機能とは、カスタム設定の定義よりも長い時間に渡って特定の状況に留まっている要求を終了する機能です。
- ユーザが自分のプロファイルまたはいずれかの権限セットで「Abort_Optimization_Request」カスタム権限を持っている。
上記の条件がすべて満たされていれば、要求は中止されます。
リソース不在
Before Insert:
- 地理位置情報値 (緯度と経度) のスケールを小数位 6 桁に変更します。
- リソース不在の [日時] 項目から秒とミリ秒を削除します。
- 地理位置情報値に基づいて [InternalSLRGeolocation] 項目 (緯度と経度) に値を入力します。[InternalSLRGeolocation] 項目は、番地レベルのルーティングと予測ルート計算で使用します。
After Insert:
- 挿入されたリソース不在の種別が「使用不可」である場合:
- 複数日サービス予定がリソース不在の影響を受け、サービス予定が 1 つしか存在しない場合、このトリガは所要時間を更新します。
- 組織で [重複を解消] が有効化されていて [移動トリガ] が無効化されている場合、このトリガは [重複を解消] をコールします。
- 組織で移動トリガが有効化されていて、ステップ 1 で複数日予定が更新されていない場合、このトリガは、不在の開始日と終了日と同じスケジュールのすべてのサービスの移動を再計算します。
- カレンダー同期機能が有効化されている場合、このトリガはリソース不在に対してカレンダーの行動を作成します。
- そうでない場合、このトリガは何もしません。
Before Update: (「Before Insert」と同じコンテンツ)
- 地理位置情報値 (緯度と経度) のスケールを小数位 6 桁に変更します。
- リソース不在の [日時] 項目から秒とミリ秒を削除します。
- 地理位置情報値に基づいて [InternalSLRGeolocation] 項目 (緯度と経度) に値を入力します。[InternalSLRGeolocation] 項目は、番地レベルのルーティングと予測ルート計算で使用します。地理位置情報値の変更は確認しません。Before Insert トリガの場合と同じように更新します。
After Update:
- 更新されたリソース不在の種別が「使用不可」である場合:
- 複数日サービス予定がリソース不在の変更による影響を受け、サービス予定が 1 つしか存在しない場合、このトリガは所要時間を更新します。
- 組織で [重複を解消] が有効化されていて [移動トリガ] が無効化されている場合、このトリガは [重複を解消] をコールします。
- 組織で移動トリガが有効化されていて、ステップ 1 で複数日予定が更新されていない場合、このトリガは、不在の開始日と終了日と同じスケジュールのすべてのサービスの移動を再計算します。
- カレンダー同期機能が有効化されている場合、このトリガはリソース不在に対してカレンダーの行動を作成します。
- そうでない場合、このトリガは何もしません。
Before Delete:
- 一致するカレンダーの行動が存在する場合は削除します。詳細は、カレンダー同期のナレッジ記事を参照してください。
After Delete:
- 削除されたリソース不在の種別が「使用不可」である場合:
- 複数日サービス予定がリソース不在の削除による影響を受け、サービス予定が 1 つしか存在しない場合、このトリガは所要時間を更新します。
- 組織で [重複を解消] が有効化されていて [移動トリガ] が無効化されている場合、このトリガは [重複を解消] をコールします。
- 組織で移動トリガが有効化されていて、ステップ 1 で複数日予定が更新されていない場合、このトリガは、不在の開始日と終了日と同じスケジュールのすべてのサービスの移動を再計算します。
スケジュールポリシー
Before Insert:
- 組織でこの機能が有効化されている場合にのみ、[移動モード] チェックボックスがオンであることを検証します。
- 組織で高度な最適化が有効化されている場合にのみ、[全日最適化] チェックボックスがオンであることを検証します。
After Insert:
- 基本時間ルールの最早開始時刻と期日が存在しない場合は作成します。
- スケジュールポリシー作業ルール連結オブジェクトを作成して、これらの作業ルールを挿入されたポリシーに割り当てます。
Before Update:
- 組織でこの機能が有効化されている場合にのみ、[移動モード] チェックボックスがオンであることを検証します。
- 組織で高度な最適化が有効化されている場合にのみ、[全日最適化] チェックボックスがオンであることを検証します。
Before Delete:
- 削除されたレコードが予定の予約アクションのデフォルトスケジュールポリシーではないことを検証します。
- 組織でこの機能が有効化されている場合にのみ、[移動モード] チェックボックスがオンであることを検証します。
- 組織で高度な最適化が有効化されている場合にのみ、[全日最適化] チェックボックスがオンであることを検証します。
- 最早開始時刻と期日のスケジュールポリシー作業ルール連結オブジェクトを削除します。
スケジュールポリシー作業ルール
Before Insert:
- 重複がないことを検証します。つまり、同じポリシーで特定の作業ルールを参照しているスケジュールポリシー作業ルールが 1 つしか存在しないことを検証します。
- 同じポリシーに存在する拡張一致ルールが 2 つ以下であることを検証します。2 つ存在する場合は、異なるリンクオブジェクトを参照していることを確認してください。
- カウント種別が CustomValue のカウントルールが 4 つ以内であることを検証します。
- すべての [カウントルール] 項目が有効であることを検証します。
Before Update:
Before Insert と同じです。
Before Delete:
- 最早開始時刻と期日基本ルールに関連したスケジュールポリシー作業ルールレコードの削除を禁止します。
- スケジュールポリシーを削除すると、この検証がパスされ、関連するすべてのスケジュールポリシー作業ルールが削除されます。
サービス予定
Before Insert:
- サービス予定の [日時] 項目から秒を削除します。
- 作成された ServiceAppointment レコードに地理位置情報 (緯度と経度) が含まれている場合は、小数位の桁数を最大 6 桁に制限します。
- 作成された ServiceAppointment レコードに地理位置情報 (緯度と経度) が含まれている場合は、[FSL__InternalSLRGeolocation__Latitude__s] 項目と [FSL__InternalSLRGeolocation__Longitude__s] 項目に値を入力します。これらの項目は、番地レベルのルーティングで使用されます。
- [サービス予定期日を作業種別から取得] 設定が有効化されている場合、このトリガは [所要時間] 項目を作業指示親レコードから取得して、親の [作業種別] 項目から取得した [許容最早開始日] 値と [期日の相殺] 値の和を [期日] 項目に入力します。
- [デフォルトのサービス予定所要時間を 1 時間に設定] 設定が有効かされている場合、このトリガは、次のいずれかの条件が満たされていれば、サービス予定の所要時間を 1 時間に設定します。
- [所要時間] 項目が null である。
- 所要時間が 1 分未満である。
After Insert:
- [サービステリトリー共有を有効化] 設定が有効化されている場合は、作成されたサービス予定をサービステリトリー公開グループと共有します。この動作により、サービス予定テリトリーの一部である派遣担当者に共有が提供されます。
- [サービステリトリー共有を有効化] 設定が有効化されていて、それぞれのサービス予定の親共有設定が有効化されている場合 ([サービス予定の共有時に親作業指示を共有する] がオンである場合) は、このトリガは作成されたサービス予定の親をサービステリトリー公開グループと共有します。この動作により、サービス予定テリトリーの一部である派遣担当者に共有が提供されます。
- [サービス予定期日を作業種別から取得] 設定が有効化されている場合、このトリガは [所要時間] 項目を作業指示親レコードから取得して、親の [作業種別] 項目から取得した [許容最早開始日] 値と [期日の相殺] 値の和を [期日] 項目に入力します。この動作は、Before Insert トリガと After Insert トリガで意図的に行われます。
- 作成されたサービス予定で [自動スケジュール] 項目が True に設定されている場合に、これらを一括でスケジュールします。サービス予定を作成時に自動スケジュールする場合は、[Field Service 設定] ページで設定されているデフォルトポリシーが使用されます。
- 自動バッチが呼び出されると、[自動スケジュール] フラグは自動的に False に設定されます。
- [多角形を使用してサービステリトリーを割り当てる] 設定が有効化されている場合、このトリガは、サービス予定の住所と [地図多角形サービステリトリー] 項目との一致に基づいて、作成されたサービス予定の [サービステリトリー] 項目に値を自動的に入力します。
- サービス予定の住所と組織の地図多角形との間で一致が存在しない場合は、[サービステリトリー] 項目は変更されません。
Before Update:
- サービス予定の [日時] 項目から秒を削除します。
- 作成された ServiceAppointment レコードに地理位置情報 (緯度と経度) が含まれている場合、このトリガは、小数位の桁数を最大 6 桁に制限します。
- [Field Service 設定] ページでサービス予定の状況移行が有効化されていて、サービス予定の [状況] 項目が変更された場合、このトリガは状況移行の正当性を検証します。
- 更新されたサービス予定の [状況のカテゴリ] が [キャンセル済み] または [新規] に変更された場合、このトリガは、[スケジュール済み開始時刻] 項目と [スケジュール済み終了時刻] 項目の値を削除します。
- [固定] 項目値が True に設定されている場合は、[スケジュール済み開始時刻]、[スケジュール済み終了時刻]、[Longitude] の各項目値の更新を禁止します。
- サービス予定が複数日のサービス予定である場合、このトリガはサービス所要時間を再計算する必要があるかどうかを確認します。必要がある場合は再計算を実行します。
- [設定] ページでドリップフィード機能が有効化されている場合、このトリガはその日の次のサービス予定をディスパッチします。この動作は、サービス予定の状況カテゴリが [完了]、[キャンセル済み]、または [完了不可] に変更された場合に実行されます。詳細は、Salesforce ヘルプの「ドリップフィードサービス予定」を参照してください。
- [サービス予定の割り当て時に割り当てられたユーザにメンション] 設定が有効かされている場合は、サービスのキャンセル時にそのユーザにメンションします。
- 更新されたサービス予定の所要時間が 1 分より長いことを検証します。所要時間が Null または 1 分である場合は、所要時間を 1 時間に変更します。
- 更新されたサービスレコードに地理位置情報 (緯度と経度) が含まれていて、更新中に変更された場合、このトリガは、[FSL__InternalSLRGeolocation__Latitude__s] 項目と [FSL__InternalSLRGeolocation__Longitude__s] 項目に値を入力します。これらの項目は、番地レベルのルーティングで使用されます。
- [FSL__Prevent_Geocoding_For_Chatter_Actions__c] 項目の値が True である場合、このトリガは住所の変更時に発生する Data.com の地理位置情報のクリーンアップを無効化し、[FSL__Prevent_Geocoding_For_Chatter_Actions__c] 項目の値を False に戻します。
- 更新されたサービス予定レコードの [自動スケジュール] 項目がサービス予定の更新プロセスで True に設定された場合、このトリガは After Update トリガ操作でコールされるサービス予定セットを準備してから、項目値を False に設定します。
- [多角形を使用してサービステリトリーを割り当てる] 設定が有効化されていて、関連する地図多角形レコード内に地理位置が存在する場合、このトリガは、更新されたサービス予定テリトリーを地域に基づいて分類します。詳細は、Salesforce ヘルプの「地図の多角形の作成および管理」と「地図の多角形の有効化」を参照してください。
After Update:
- 状況のカテゴリが [派遣済み] に変更された場合は、更新されたサービス予定を割り当て済みリソースと共有します。サービステリトリーが変更された場合は、サービステリトリーの公開グループと共有します。
- 関連する設定が有効化されている場合は、割り当て済みリソースのユーザをメンションします。
- すでに非同期コンテキストでなければ、この操作を非同期方式で実行します。
- サービス予定の状況の変更に基づいて、Salesforce カレンダーの行動を作成、削除します。
- サービス予定の状況のカテゴリが [新規] または [スケジュール済み] から [派遣済み] に変更されると、このトリガはカレンダーの行動を作成します。
- サービス予定の状況のカテゴリが [派遣済み] から [新規] または [スケジュール済み] に変更されると、このトリガはカレンダーの行動を削除します。
- サービス予定の割り当て済みリソースが変更され、サービス予定が派遣済みのままである場合、このトリガは関連する Salesforce カレンダーの行動を更新します。
- サービス予定の変更に従ってリソースの業務量オブジェクトを更新します。サービス予定がコントラクターに対してスケジュールされていた場合、このトリガは、実際にスケジュールされている作業時間と割り当て済みの作業品目を反映するように業務量を更新します。
- 更新されたサービス予定で [自動スケジュール] 項目が True に設定されている場合に、これらを一括でスケジュールします。サービス予定を更新時に自動スケジュールする場合は、[Field Service 設定] ページで設定されているデフォルトポリシーが使用されます。
- 自動バッチが呼び出されると、[自動スケジュール] フラグは自動的に False に設定されます。
- [設定] ページで [割り当て済みリソースを、[派遣済み] または [処理中] のサービス予定のフォロワーにする] 設定が有効化されていて、[状況のカテゴリ] 項目が更新された場合、このトリガは、割り当て済みリソースを更新されたサービス予定のフォロワーにします。
- 更新されたサービス予定がサービスクルーに割り当てられている場合、このトリガは、新たに更新されたサービス予定に従って実際のサービスクルーのスケジュールを反映するように、サービスの割り当て済みリソースを作成/更新/削除します。詳細は、Salesforce ヘルプの「サービスクルーのスケジュールに関する考慮事項」を参照してください。
- 組織で移動トリガが有効化されている場合、このトリガは、サービスの開始日と終了日と同じスケジュールのすべてのサービスの移動を再計算します。
- 更新されたサービス予定の [スケジュール済み開始時刻] 項目と [スケジュール済み終了時刻] 項目の値が Null で、サービス予定に割り当て済みリソースが関連付けられている場合、このトリガは割り当て済みリソースを削除します。
- 実際のスケジュール操作 (最適化、自動、手動) に従ってスケジュールモードを更新します。
- 実際のサービス予定の更新 (キャンセル、短縮、終了の遅れ、または緊急) に従ってスケジュールのレシピを評価します。
- 詳細は、Salesforce ヘルプの「共通の行動のスケジュールレシピの作成」を参照してください。
Before Delete:
- 一致するカレンダーの行動が存在する場合は削除します。詳細は、カレンダー同期のナレッジ記事を参照してください。
- 削除されたサービス予定から割り当て済みリソースレコードを削除します。
- テリトリーの公開グループから親レコード (作業指示) の共有を削除します。
サービス内容
Before Insert:
- サービス内容にレコードタイプが割り当てられていることを確認します。
- サービス内容がカスタムロジックであれば、カスタムロジックデータ (入力が必須です) を検証してデコードします。
Before Update:
Before Insert と同じです。
サービスリソース
Before Insert:
- [効率] 項目が空白ではない場合、このトリガは値が有効な範囲内 (0.1 ~ 10) であるかを確認します。そうでない場合、このトリガは挿入を禁止して、[効率] 項目の横にエラーを表示します。
- [ServiceCrewId] 項目が空白である場合、このトリガは同じサービスクルーを参照しているサービスリソースレコードが他にないか確認します。ある場合は、トリガはエラーをスローして挿入を禁止します。
After Insert:
- 組織で場所に基づいた共有が有効化されている場合、このトリガは、[RelatedRecordId] 項目で指定されているユーザに対して ServiceResourceShare オブジェクトを作成します。場所に基づいた共有が無効である場合、このトリガは何もしません。特定のレコードに対して [RelatedRecordId] 項目が空白である場合 (例: 種別がクルーであるサービスリソース)、このトリガはそのレコードに対して共有レコードを作成しません。
Before Update:
- [IsCapacityBased] チェックボックスがオフからオンに変更されると、このトリガは、そのリソースにリンクされているセカンダリサービステリトリーメンバーを除いて、サービステリトリーメンバーが 1 人しかいないことを検証します。そうでない場合、このトリガはエラーをスローして更新を禁止します。
- [効率] 項目が空白ではない場合、このトリガは値が有効な範囲内 (0.1 ~ 10) であるかを確認します。そうでない場合、このトリガは更新を禁止して、[効率] 項目の横にエラーを表示します。
- [IsCapacityBased] チェックボックスがオンである場合、このトリガは、このサービスリソースにサービスクルーメンバーレコードがないことを検証します。そうでない場合、このトリガはエラーをスローして更新を禁止します。
- [ServiceCrewId] 項目が変更され、新しい値が空白ではない場合、このトリガは、そのサービスクルーを参照している既存のサービスリソースレコードが存在しないことを確認します。そうでない場合、このトリガはエラーをスローして更新を禁止します。
After Update
- RelatedRecordId が更新時に変更され、組織で場所に基づいた共有が有効化されている場合、このトリガは、サービスリソースのすべての手動共有レコード (ユーザが作成したレコードを含む) を削除し、新しい関連ユーザに対して ServiceResourceShare オブジェクトを作成します。いずれかの手動共有オブジェクトの削除に失敗した場合、このトリガはそれらのオブジェクトをいずれも削除しません。
サービスリソース業務量
トリガ名は TR012_CapacityAfterUpdate ですが、挿入前と更新前にのみ起動します。
Before Insert:
- 月間業務量が月の初日に定義されていることを検証します。
- 同じ所要時間種別の業務量が互いに重複していない (つまり、リソースと日付を共有していない) ことを検証します。
- [期間] 項目と [終了日] 項目が有効であることを検証します。
- 業務量内でスケジュールされているサービスの所要時間に従って [MinutesUsed__c] 項目を更新します。
- [CapacityInWorkItems] 項目が空白ではない場合、このトリガは、業務量内でスケジュールされているサービス数で [Work_Items_Allocated__c] 項目を更新します。
- [HoursInUse__c] 項目は、[MinutesUsed__c] に基づいた数式項目です。この項目はそれに従って更新されます。
- 1970 年 1 月 1 日 00:00:00 (GMT) を起点としたミリ秒数で [最後に更新されたエポック] 項目を更新します。
Before Update:
- 月間業務量が月の初日に定義されていることを検証します。
- 同じ所要時間種別の業務量が重複していない (つまり、リソースと日付を共有していない) ことを検証します。
- [期間] 項目と [終了日] 項目が有効であることを検証します。
- [TimePeriod]、[StartDate]、[CapacityInHours]、[CapacityInWorkItems]、[ServiceResourceId] のいずれか 1 つ以上の項目が更新されているかどうかを検証します。
- これらの項目のいずれかが変更された場合、このトリガは、業務量内でスケジュールされているサービスの所要時間に従って [MinutesUsed__c] 項目を更新します。
- [CapacityInWorkItems] 項目が空白ではない場合、このトリガは、業務量内でスケジュールされているサービス数で [Work_Items_Allocated__c] 項目を更新します。
- [HoursInUse__c] 項目は、[MinutesUsed__c] に基づいた数式項目です。この項目はそれに従って更新され��す。
- 1970 年 1 月 1 日 00:00:00 (GMT) を起点としたミリ秒数で [最後に更新されたエポック] 項目を更新します。
サービスリソーススキル
Before Insert:
- [有効開始日] 項目と [有効終了日] 項目から秒とミリ秒を削除します。
Before Update:
Before Insert と同じです。
サービステリトリー
Before Insert:
- [テリトリー名の重複を有効化] カスタム設定がオフ (デフォルト) の場合、このトリガは挿入されたテリトリーの名前が重複していないことを確認します。
- テリトリーに地理位置情報がある場合、このトリガは内部の番地レベルのルーティングの地理位置情報の値を入力します。
After Insert:
- [サービステリトリー共有を有効化] 設定が有効化されている場合、このトリガはテリトリーと同じ名前の公開グループが存在しなければ、テリトリーの名前で新しい公開グループを作成し、そのグループの共有レコードを作成します。
- テリトリーに親グループがある場合は、テリトリーの公開グループを上位テリトリーの公開グループのグループメンバーとして追加します。
- [サービスの自動分類を有効化] カスタム設定がオン (デフォルト) である場合、このトリガは、上位テリトリーと、すべてのテリトリーの最上位テリトリー値に従って [FSL__TerritoryLevel__c] 項目を設定します。この項目は、階層内におけるテリトリーのレベルを表し、多角形のアルゴリズムで使用されます。
Before Update:
- [テリトリー名の重複を有効化] カスタム設定がオフ (デフォルト) で、[名前] 項目が変更された場合、このトリガは更新されたテリトリーの名前が重複していないことを確認します。
- テリトリーに地理位置情報がある場合、このトリガは内部の番地レベルのルーティングの地理位置情報の値を入力します。
After Update:
- [名前] 項目または [所有者] 項目が変更された場合、このトリガはそれに応じてテリトリーの公開グループを更新します。
- [上位テリトリー] 項目が変更された場合、このトリガは上位テリトリーの公開グループを更新して、新しい階層に従ってすべてのレコードの [FSL__TerritoryLevel__c] 項目値を再計算します。
Before Delete:
- サービステリトリーの公開グループを削除します。
- 新しい階層に従って下位テリトリーの [FSL__TerritoryLevel__c] 項目を更新します。
サービステリトリーメンバー
Before Insert:
- サービステリトリーメンバーの [日時] 項目から秒を削除します。
- 日付の競合を確認します。同じ日付のプライマリまたは再配置サービステリトリーメンバーが存在する場合、このトリガは失敗します。
- 同じ日付のサービステリトリーメンバーが存在し、作成されたサービステリトリーメンバーが同じサービステリトリー内に存在する場合、このトリガは失敗します。
- 作成されたサービステリトリーメンバーレコードに地理位置情報 (緯度と経度) が含まれている場合、このトリガは [FSL__InternalSLRGeolocation__Latitude__s] 項目と [FSL__InternalSLRGeolocation__Longitude__s] 項目に値を入力します。これらの項目は、番地レベルのルーティングで使用されます。
- コントラクターに対する種別が再配置のサービステリトリーメンバーの作成を禁止します。
- セカンダリサービステリトリーメンバーを除いて、コントラクターに対する複数のサービステリトリーメンバーの作成を禁止します。
Before Update:
- 日付の競合を確認します。同じ日付のプライマリまたは再配置サービステリトリーメンバーが存在する場合、このトリガは失敗します。
- 同じ日付のサービステリトリーメンバーが存在し、作成されたサービステリトリーメンバーが同じサービステリトリー内に存在する場合、このトリガは失敗します。
- 更新されたサービステリトリーメンバーレコードに地理位置情報 (緯度と経度) が含まれている場合、このトリガは [FSL__InternalSLRGeolocation__Latitude__s] 項目と [FSL__InternalSLRGeolocation__Longitude__s] 項目に値を入力します。これらの項目は、番地レベルのルーティングで使用されます。
- コントラクターに対する種別が再配置またはプライマリの複数のサービステリトリーメンバーの作成を禁止します。
- コントラクターに対する (セカンダリサービステリトリーメンバーを除いた) 複数のサービステリトリーメンバーの作成を禁止します。
スキル要件
すべてのトリガが空白であること。
時間の連動関係
After Insert:
- サービス予定間で重複する連動関係の作成を禁止します。
- 作成された時間の連動関係チェーンへの [すぐ後に続く] 連動関係種別の追加を禁止します。
- 作成された時間の連動関係に従って、既存のチェーンにサービス予定を追加します。必要であれば、このトリガは作成された時間の連動関係に従って 2 つのチェーンをマージします。
Before Update:
- 同じ 2 つのサービス予定を持つ時間の連動関係がすでに存在する場合に、時間の連動関係の更新を禁止します。
- 作成された時間の連動関係チェーンへの [すぐ後に続く] 連動関係種別の追加を禁止します。
After Delete:
- 削除された時間の連動関係に従って、2 つの連動関係を分割します。たとえば、チェーン A に SerA→ SerB → SerC → SerD → SerE が含まれ、削除された時間の連動関係が SerC → SerD であれば、このトリガはチェーンを SerA → SerB → SerC と SerD → SerE の 2 つに分割します。
時間枠
Before Insert:
- [日時] 項目から秒を削除します。
Before Update:
- [日時] 項目から秒を削除します。
ユーザテリトリー
Before Insert:
- [サービステリトリー共有を有効化] 設定が有効化されている場合、このトリガはすべてのテリトリーのユニーク性を確認します。つまり、同じユーザが同じテリトリーに関連していないことを確認します。
- [サービステリトリー共有を有効化] 設定が有効化されている場合、このトリガは、作成されたユーザテリトリーに従ってそれぞれの公開グループにユーザを追加します。ユーザテリトリー名とサービステリトリー名は、公開グループ名と同じにします。
BeforeUpdate:
- [サービステリトリー共有を有効化] 設定が有効化されている場合、このトリガはすべてのテリトリーのユニーク性を確認します。つまり、同じユーザが同じテリトリーに関連していないことを確認します。
- [サービステリトリー共有を有効化] 設定が有効化されている場合、このトリガは、更新されたユーザテリトリーに従って、それぞれの公開グループにユーザを追加したり、それぞれの公開グループからユーザを削除したりします。たとえば、ユーザテリトリーが「ユーザ: David、サービステリトリー: LA」から「ユーザ: David、サービステリトリー: Washington」に更新された場合、この変更によって David が LA 公開グループから削除され、Washington 公開グループに追加されます。
After Delete:
- [サービステリトリー共有を有効化] 設定が有効化されている場合、このトリガは、削除されたユーザテリトリーに従ってそれぞれの公開グループからユーザを削除します。
作業指示
Before Insert:
- [AccountId] 項目が空白ではなく、[VisitingHoursId] 項目が空白である場合、このトリガは関連する取引先の業務時間 ID を [VisitingHoursId] 項目に入力します。
Before Update:
- [AccountId] 項目または [VisitingHoursId] 項目が変更され、[AccountId] 項目が空白ではなく、[VisitingHoursId] 項目が空白である場合、このトリガは関連する取引先の業務時間 ID を [VisitingHoursId] 項目に入力します。
- [FSL__Prevent_Geocoding_For_Chatter_Actions__c] 項目の値が True である場合、このトリガは住所の変更時に発生する Data.com の地理位置情報のクリーンアップを無効化し、[FSL__Prevent_Geocoding_For_Chatter_Actions__c] 項目の値を False に戻します。
作業指示品目
すべてのトリガが空白であること。
作業ルール
Before Update:
- 作業ルールが対応可能状況ルールであり、[固定間隔] チェックボックスがオフである場合、このトリガは最小ギャップの設定を禁止します。
- 作業ルールが対応可能状況ルールであり、「休憩と移動」トリガが無効化されている場合、このトリガは休憩時間の設定を禁止します。
- 作業ルールが Boolean を照合ルールであり、[リソースのプロパティ] 項目が空白である場合、このトリガは作業ルールの更新を禁止します。
- 作業ルールが時間ルールであり、[スケジュール済み開始時刻] の値が [到着期間の開始/終了] と等しいかそれより前である場合、このトリガは時間ルールの更新を禁止します。
- 作業ルールが拡張一致ルールまたはカウン���ルールである場合、このトリガは無効な項目値によるルールの更新を禁止します。
- 組織に基本時間ルールが存在しないか、または変更されている場合、このトリガは有効な基本時間ルール (許容最早開始ルールと期日ルール) を作成します。
Before Delete:
- 基本時間ルール (許容最早開始ルールと期日ルール) の削除を禁止します。