In order keep configuration simple, please perform the following steps in Salesforce Classic (Booker25 is Lightning-Ready, you may afterwards use the app in Salesforce Lightning as you please)
I you have custom calendars, you might want to introduce some more structure by grouping your Dimension object. For example: on a Contact calendar, create a grouping by account. To do this, you can create one or more Dynamic Grouping Fields, which are related to the calendar you want to group objects on.
Step-by-step guide
Make sure you add the Dynamic Grouping Fieldsrelated list to the Multi Calendar page layout
Create the field on the Dimension object that you want to use as grouping. This could for example be an Account lookup on a Contact Dimension
From the calendar record, create a new Dynamic Grouping Field from the Dynamic Grouping Fieldsrelated list, using the fields specified in the next section
Creating more than one grouping on a calendar will expose a picklist next to the View buttons on the calendar, allowing you to choose which grouping to display
Dynamic Grouping Field fields
Field name
description
Name
The APIName of the field on the Dimension object that the object should be grouped by
Label
The label users should see in the picklist where they can select which grouping to use. Leave blank for the label of the field.
Calendar
The calendar this grouping belongs to
Default
Define if this grouping should be selected by Default. If no Default is specified, the first selected grouping is random but deterministic
Hierarchical
If this setting is enabled, the Name should refer to a self-referencing field and Booker25 will create a grouping accordingly.
NoGrouping
Marks this grouping as having no grouping at all. This will also disable the validation on the Name field so it can be anything.
Example
The Resource calendar with no grouping:
The Resource calendar with a Hierarchical B25__Parent__c grouping:
Combining dynamic grouping with lazy availability loading
Pervious Booker25 versions already contained an option to group dimension objects in order to increase performance. This is represented by the following fields on each View record:
Field name
description
Enable Grouping
If enabled, the Dimension objects will be grouped into groups of size "GroupingSize", and Availabilities will only be loaded once that group is expanded
Grouping Size
The grouping size, if EnableGrouping is TRUE
These settings continue to work as expected, but if you also define Dynamic Dimension Groupings their functionality changes slightly:
The Dimension objects are first grouped according to their Dynamic Groupings
If any of the resulting groups has more than "GroupingSize" objects, that group is then further split into groups of size "GroupingSize"
The Dynamic Grouping groups will also only load Availabilities when expanded. This has the advantage of speeding up the initial load time of the calendar, but it does introduce a small load time the first time you expand a grouping.