Create an Appointment Bundle Aggregation Policy
Use the default aggregation policies, or create policies to determine when and how bundle member service appointments update the bundle service appointment fields. And you can create multiple aggregation policies for each bundle policy. Each aggregation policy controls how one bundle service appointment field is populated.
Required Editions
| Available in: both Salesforce Classic (not available in all orgs) and Lightning Experience |
| The Agentforce Field Service and Operations core features, managed package, and mobile app are available in Enterprise, Unlimited, and Developer Editions. |
| User Permissions Needed | |
|---|---|
| To create items: | Customize Application |
-
If your service appointments have custom fields, make sure to give the fields read and edit
access. See Appointment Bundling Limitations.
- From Setup, in the Quick Find box, enter Users, and then select Permission Sets.
- Click Field Service Integration.
- Click Object Settings.
- Click Service Appointment.
- For each custom field, select Read Access and Edit Access.
- In the Appointment Bundle Policy, go to the Related tab.
- In the Appointment Bundle Aggregation Policies panel, click New.
-
Under Information:
- Give the policy a unique name.
- To set the order that triggers this aggregation, in Aggregation Order, enter a unique number. For example, enter 1 to trigger this policy first.
- In Recordset Filter Criteria, enter a recordset filter criteria to aggregate the bundle members. You can aggregate only the service appointments that meet this criteria.
- If you don’t want this aggregation policy to apply to bundle members that are added after the bundle is created, select Aggregate only when the bundle is created.
-
Under Aggregation Settings:
-
In the Bundle’s Target Field, select a bundle service appointment field. This field is
populated by the aggregation. The fields in the list are service appointment fields, not work
order fields. The only exception is Skill Requirements, which is a work order field.
Don’t configure the Status field in an aggregation policy. Use the Appointment Bundle Config to control how the Status field behaves.If you select a formula field in the Source Field, select a matching field type in the Bundle’s Target Field.
- Select an aggregation action that works with the type of field selected for the bundle’s target field.
- Complete the remaining fields according to the type of field selected for the bundle’s target field.
-
In the Bundle’s Target Field, select a bundle service appointment field. This field is
populated by the aggregation. The fields in the list are service appointment fields, not work
order fields. The only exception is Skill Requirements, which is a work order field.
- Save your changes.
- Aggregation Configurations
You can create a custom aggregation for any bundle service appointment field.
Aggregation Configurations
You can create a custom aggregation for any bundle service appointment field.
Aggregation Field Type—Boolean
| Aggregation Actions | Fields to Populate | Result |
|---|---|---|
| Apply OR operation | Source Field | If the selected bundle member field’s value for any bundle members is set to true, set the selected bundle field’s value to true. If not, set it to false. |
| Apply AND operation | Source Field | If the selected bundle member field’s value for all bundle members is set to true, set the selected bundle field’s value to true. If not, set it to false. |
| Set constant value | Constant Value—Enter True or False | Ignore the values of the bundle member’s field, and set the selected bundle’s field to this value (true or false). |
| Has at least one bundle member in filter criteria | Recordset Filter Criteria | If at least one bundle member meets the recordset filter criteria, set the selected bundle’s field value to true. If not, set it to false. |
Aggregation Field Type—Date
| Aggregation Actions | Fields to Populate | Result |
|---|---|---|
| Find earliest | Source Field | Find the bundle member that has the earliest date, and enter this date in the selected bundle field. |
| Find latest | Source Field | Find the bundle member that has the latest date in the selected bundle member field, and enter this date in the selected bundle field. |
| Set constant value | Constant Date Value—Select Null, Now, End of Day, or Start of Day | Ignore the values of the bundle member’s field, and set the selected bundle’s field to this constant value (Null, Now, End of Day, or Start of Day). |
| Sum based on bundle fields |
OR
|
Take the selected bundle field’s value, add the constant value, and enter this date in the selected bundle field. OR Take the selected bundle field’s value, add the additional bundle field’s value, and enter this date in the selected bundle field. |
| Subtract based on bundle fields |
OR
|
Take the selected bundle field’s value, subtract the entered constant value, and enter this date in the selected bundle field. OR Take the selected bundle field’s value, subtract the additional bundle field’s value, and enter this date in the selected bundle field. |
Aggregation Field Type—Lookup
| Aggregation Actions | Fields to Populate | Result |
|---|---|---|
| Find minimum | Source Field | Find the bundle member that has the lowest ID, and enter this value in the selected bundle field. |
| Find maximum | Source Field | Find the bundle member that has the highest ID, and enter this value in the selected bundle field. |
| Set constant value | Constant Value—Enter an ID | Enter this ID in the selected bundle’s field. |
Aggregation Field Type—Numeric
| Aggregation Actions | Fields to Populate | Result |
|---|---|---|
| Find minimum | Source Field | Find the bundle member that has the lowest numeric value, and enter this value in the selected bundle field. |
| Find maximum | Source Field | Find the bundle member that has the highest numeric value, and enter this value in the selected bundle field. |
| Set constant value | Constant Value | Ignore the values of the bundle member’s field, and enter this constant value in the selected bundle’s field. |
Set downscaled duration You can apply this action to any numeric field, not just duration fields. |
|
|
| Subtract based on bundle fields |
OR
|
Take the selected bundle field’s value, subtract the entered constant value, and enter this number in the selected bundle field. OR Take the selected bundle field’s value, subtract the additional bundle field’s value, and enter this number in the selected bundle field. |
| Sum based on bundle fields |
OR
|
Take the selected bundle field’s value, add the entered constant value, and enter this number in the selected bundle field. OR Take the selected bundle field’s value, add the additional bundle field’s value, and enter this number in the selected bundle field. |
| Sum based on bundle members |
|
Sum the values of the selected bundle member field, and enter this number in the selected bundle field. OR Add the constant value to each bundle member’s field value, sum the values, and enter this number in the selected bundle field. |
| Count Bundle Members in Filter Criteria | Recordset Filter Criteria | Count how many bundle members answer the recordset filter criteria, and enter this number in the selected bundle field. |
Aggregation Field Type—Picklist
| Aggregation Actions | Fields to Populate | Result |
|---|---|---|
| Find minimum | Source Field | Find the bundle member that has the lowest alphabetic or numeric value, and enter this value in the selected bundle field. |
| Find maximum | Source Field | Find the bundle member that has the highest alphabetic or numeric value, and enter this value in the selected bundle field. |
| Set constant value | Constant value—According to the values in this field’s picklist | Use the entered constant value for the selected bundle field’s value. |
Aggregation Field Type—Picklist-Multi
| Aggregation Actions | Fields to Populate | Result |
|---|---|---|
| Clear value | — | Leave the selected bundle’s field empty. |
| Intersect | Source Field | Take only the values from the bundle member field that appear in all of the bundle members, and list them in the bundle’s field. |
| Unite | Source Field | Take all the values from the bundle member’s field and list them in the bundle’s field. |
Aggregation Field Type—Skills, Bundle’s Target Field—Skill Requirements
| Aggregation Actions | Fields to Populate | Result |
|---|---|---|
| Clear value | — | Leave the selected bundle’s field empty. |
| Intersect | — | Take only the skills that appear in all the bundle members, and list them in the bundle’s field. The level for each skill is taken from the bundle member with the lowest level. Null is considered the lowest level. |
| Unite | — | Take all the skills from the bundle members and list them in the bundle’s field. The level for each skill is taken from the bundle member with the lowest level. Null is considered the lowest level. |
Aggregation Field Type—String
| Aggregation Actions | Fields to Populate | Result |
|---|---|---|
| Find minimum | Source Field | Find the bundle member that has the lowest alphabetic value, and enter this value in the selected bundle field. |
| Find maximum | Source Field | Find the bundle member that has the highest alphabetic value, and enter this value in the selected bundle field. |
| Set constant value | Constant Value | Enter this constant value in the selected bundle’s field. |
| Sum based on bundle members |
|
List the values of the selected bundle member field in the selected bundle field. To allow the same value to appear more than once, select Allow the same value to appear more than once. Appointment Bundling Limitations:
|
| Sum based on bundle fields |
OR
|
Take the selected bundle field value, add the additional bundle field value, and enter this value in the selected bundle field. OR Take the entered constant value, add the additional bundle field value, and enter this value in the selected bundle field. |

