Rollup Fields is one of the interesting new feature which
provides a way to perform a record level aggregation from child records to its
parent record.
This avoids plug-in development and can be easily achieved by
end users through simple setup and settings itself without any code involved.
Let’s take an example to explore implementation and working of
rollup fields.
We want to show total count of all contacts associated with an Account
and its Child Accounts on Account form.
Rollup field setup:
To achieve this we will first start with creating new Rollup
field for Account as shown below:
Here you can see that the field type which we have selected is
of type “Rollup” and the data type which we have selected is of type “Whole
Number”.
The Data Type of the Rollup field must match the Data Type of
the field for which we want to calculate the rollup. So if we want to show
rollup of a field for Contact on Account form then the data type of rollup
field must match the data type of the field for which we want to calculate
rollup.
Also, you can see the “Edit” button besides “Rollup” selected
Field Type. Whenever we select field type as “Rollup”, Edit button appears next
to the Field Type and that brings up one editor screen which is similar to the
“Business Rules” screen. Please refer the below screen:
Here we can specify the filters, conditions and aggregations
which will be applied to the rollup field. The details are explained below,
1.
The source entity which is taken by default to be the entity for
which the rollup field is created. In our example it is “Account” entity hence
the “Source” is by default “Account”.
2.
Use Hierarchy can be set to Yes/No for utilizing parent-child
relationship. In our example we want to get aggregation for all Child Accounts
of an Account hence we have set it to “Yes”
3.
We can apply filters for source entity using the “Filters”
option where we can specify the conditions to apply.
4.
When we want to get aggregation of related entity data in our
rollup then we specify the “Related Entity”. In our example since we want to
show total count of all the contacts present for
an Account and its Child Accounts, we have selected “Contacts (Company Name)”
as the “Related” entity.
5.
If we want to apply filters for related entity then we can do
that by adding filter conditions in “Related Entity”. In our example since we
want to show total count of all the contacts present
for an Account and its Child Accounts we have added filter condition to check
if “Status” equals “Active” for related opportunities
6.
And finally we specify the aggregation function which we want to
apply and for which field. In our example since we want to show all Contacts
for an Account, we have selected the aggregate function as “Count”.
User Interface:
The Rollup Field that we just created will be seen on the
“Source Entity” form i.e. account form:
So the total Contacts for a particular Account will be
calculated and shown in this “Total Contacts” Rollup field for that Account .
If the Account has Child Accounts then the total of Contacts for that Account
along with its Child Account’s Contacts will be calculated and shown in
this “Total Contacts” Rollup field for that Account.
Rollup fields are read only. On this Rollup field you can see
the “Refresh” icon attached to the Rollup field. Since rollup operates
asynchronously, it is calculated on hourly basis. But we can also self-trigger
the rollup field calculation by hitting this “Refresh” icon and perform the
re-calculation.
Notes:
Each rollup attribute for an entity has two supporting
attributes for the rollup attribute which automatically gets created when a
rollup field is created:
§ <attribute SchemaName>_Date: DateTime – When the rollup was last calculated
§ <attribute SchemaName>_State: Integer – The state of the rollup calculation
Following are the State values:
0 – Not Calculated:
Attribute value is yet to be calculated
1 – Calculated:
Attribute value has been calculated per the last update time in
<attribute SchemaName>_Date attribute
2 – OverflowError:
Attribute value calculation lead to overflow error
3 – OtherError:
Attribute value calculation failed due to an internal error, next run of
calculation job will likely fix it
4 – RetryLimitExceeded:
Attribute value calculation failed because the maximum number of retry attempts
to calculate the value were exceeded likely due to high number of concurrency
and locking conflicts
5 – HierarchicalRecursionLimitReached:
Attribute value calculation failed because maximum hierarchy depth limit for
calculation was reached
6 – LoopDetected:
Attribute value calculation failed because a recursive loop was detected in the
hierarchy of the record
Request/Response Messages provided for Rollup Field calculation:
Supported Data types:
Rollup field is not supported by all data types and only
following data types support rollup field:
- Whole Number
- Decimal
- Currency
- Date & Time
Limitations:
1.
Rollup works on 1: N relationship. They don’t work on N-N
relationship
2.
Rollup field cannot use another Calculated or Rollup field for
rollup
3.
For Complex field calculations we need to still rely on plug-in or
java script
4.
Rollup fields don’t raise the event to trigger workflows
5. We can have maximum of 100 rollup fields within an organization and
each entity can have no more than 10 rollup fields.