Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Info

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)

Overview

Dimensions allow you to link multiple Resource, Staff or Group records to a single Reservation, and actually plot that Reservation to all the related records' calendars. The process of achieving this is twofold:

  1. create lookups on the Reservation object, linking the Object you want to link (Resource, Staff of Group)
  2. define Dimension Fields on that corresponding Dimension, to tell Booker25 that these fields should be plotted
  3. define Dimension Junctions on the Dimension to tell Booker25 that you have related lists that should be plotted

Dimension

Dimensions are a way to let Booker25 know which objects related to a reservation are important.

FieldTypeRequiredDescription
Dimension Object NameTextYesThe API name of an object to which reservations are related.

Dimension Field

Dimensions Fields are a way to let Booker25 know which lookups on a reservation are important.

FieldTypeRequiredDescription
DimensionLookupYesThe Dimension record that is the parent of this Dimension Field.
Dimension Field NameTextYesThe API name of a lookup field on Reservation.
Enable Advanced Lookup FilteringCheckboxNo

Enables the advanced lookup filter on the reservation form for this dimension field.

The advanced lookup filter allows you to use autocomplete to search through valid related records. It will only show records in which the current reservation will be valid. So for example meeting rooms in closed buildings or staff that are unavailable because of holiday or sick leave will not be shown. Or if you have added a service to the reservation, it will only show records in which that service is actually available during the time of the reservation.

A known limitation of the advanced lookup filter is that it doesn't support custom lookup filters.

Auto Populate on CalendarPicklistYes

Controls if this dimension field gets populated with the related record id when creating a new reservation on the calendar.

Options:

  • Never - The field will not be populated
  • Only when on form - The field will only be populated if it is visible on the reservation form
  • Only when on form and required - Same as above but only if the field is required on the form
  • Always - The field will always be populated, even if it isn't visible on the form
Enforce Double Booking CheckCheckboxNoWhen checked, Booker25 will prevent the related record from being double booked.
Dimension Allow Double Booking FieldTextNoThe API name of a checkbox field1 on the related dimension object. When Enforce Double Booking Check is enabled, but this field on the related record equals true, the double booking is allowed.
Reservation Allow Double Booking FieldTextNoThe API name of a checkbox field1 on reservation. When Enforce Double Booking Check is enabled, but this field on the reservation equals true, the double booking is allowed.
Enforce Capacity CheckCheckboxNoWhen checked, Booker25 will prevent the capacity of the related record from being exceeded.
Dimension Capacity FieldTextNo2The API name of a number field3 on the related object, which holds the capacity of the related record. This capacity can't be exceeded if Enforce Capacity Check is enabled.
Reservation Quantity FieldTextNo2The API name of a number field3 on the reservation, which holds the quantity of the reservation. This quantity is checked to not exceed the related record's capacity if Enforce Capacity Check is enabled.

1: Can also be a checkbox formula, and can also be a cross-object reference or a checkbox formula on Reservation. However the latter will not be set yet when working from the Reservation Form UI.
2: Required when Enforce Capacity Check is enabled.
3: Can also be a number formula, and can also be a cross-object reference.

Dimension Junction

Dimensions Junctions are a way to let Booker25 know which junctions between a dimension and a reservation are important.

Info

A junction object is an object that sits in between two other objects (i.e. it has a lookup to each of the two objects). This creates a many-to-many relationship between those objects. For more information, see https://help.salesforce.com/articleView?id=relationships_manytomany.htm&type=5


An example of this would be a contact list, where you link multiple contacts to a reservation. Using dimension junctions you can:

  • Make this list visible on the reservation form
  • Make the reservation visible on the contact calendar for each contact in the list
  • (Optional) Make Booker25 detect and prevent double bookings for these contacts.
FieldTypeRequiredDescription
DimensionLookupYesThe Dimension record that is the parent of this Dimension Junction.
Dimension Junction NameTextYesThe API name of an object. This object should be a junction between reservation and the dimension.
Reservation Lookup API NameTextYesThe API name of a field on the object. This field should be a lookup (or master-detail) to Reservation.
Dimension Lookup API NameTextYesThe API name of a field on the object. This field should be a lookup (or master-detail) to the dimension.
Enforce Double Booking CheckCheckboxNoWhen checked, Booker25 will prevent the related record from being double booked.
Dimension Allow Double Booking FieldTextNoThe API name of a checkbox field1 on the dimension. When Enforce Double Booking Check is enabled, but this field on the related record equals true, the double booking is allowed.
Reservation Allow Double Booking FieldTextNoThe API name of a checkbox field1 on reservation. When Enforce Double Booking Check is enabled, but this field on the reservation equals true, the double booking is allowed.
Junction Allow Double Booking FieldTextNoThe API name of a checkbox field1 on the object itself. When Enforce Double Booking Check is enabled, but this field equals true, the double booking is allowed.

1: Can also be a checkbox formula, and can also be a cross-object reference or a checkbox formula on Reservation. However the latter will not be set yet when working from the Reservation Form UI.

Trigger

Info

For every Dimension Junction you create, make sure you also create a Trigger for its object, which calls the following method: B25.DimensionJunctionTriggerHook.execute()

This makes Booker25 check permissions on the object.

Conflict checking

Dimensions allow you to define how Booker25 detects conflicts between reservations (double bookings), and how to detect capacity problems.

Configuring Double Booking Checks

Let's say you use Booker25 for planning team projects. You have a custom object called Team__c, and a lookup on reservation to Team: Assigned_Team__c.
Now let's assume you have a business rule that says that a Team can only be assigned to one project. We can configure this in the following way:

  1. Create a Dimension record named Team__c. This lets Booker25 know that an object related to reservation called Team__c exists.
  2. Create a Dimension Field named Assigned_Team__c. This lets Booker25 know that a lookup field called Assigned_Team__c exists.
  3. On this new Dimension Field record, set the checkbox Enforce Double Booking Check to true.

Now, if you create a reservation and set the Assigned Team, Booker25 will give you an error if that Team has already been assigned to another project at the same time.

Configuring Exceptions to Double Booking Checks

The Dimension Field object gives you two additional fields in the Double Booking section that allow you to further fine-tune the double booking behavior: The Dimension Allow Conflict Field and the Reservation Allow Conflict Field. These two fields are optional, but when filled in, they must contain the API name of a checkbox field on the related record or the reservation itself, respectively.

Let's say we have some teams that are so good, they can handle multiple projects at once. If we have a checkbox on team called Is_Dream_Team__c, we can fill in this name in the Dimension Allow Conflict Field and Booker25 will not give you an error if you're trying to assign multiple projects to a team that has this checkbox enabled.

The API name does not have to be a checkbox directly on the record itself. It can also be a checkbox on a related object. So assuming these fields exist (and Is_Super_Manager__c is actually a checkbox), the following value would also be allowed: Owner.Manager__r.Is_Super_Manager__c.

Taking it a step further, the value can also be that of a checkbox formula field. Let's say we have a number field on reservation called Workload__c where users can enter a value between 1 and 100. We can then create a checkbox formula on reservation called Is_Low_Workload__c that returns true if the value in Workload__c is lower than 25. Next, we can fill in the value Is_Low_Workload__c in the field Reservation Allow Conflict Field on the Dimension Field record. The result is that Booker25 will no longer give errors if you are trying to assign a team to multiple projects with a workload lower than 25.

Configuring Capacity Checks

For our next example, let's say we have the business rule that a team has a max workload number (captured in the field Max_Workload__c), and that a team's assigned projects Workload__c can never exceed this max workload at any given time. We would do this by checking Enforce Capacity Check on the Dimension Field record, and filling in the two fields just below: Dimension Capacity Field and Reservation Quantity Field. These two must be filled in when Enforce Capacity Check is enabled, and must contain the API names of number fields on the related record and the reservation itself, respectively. So in our example we would fill in the values Max_Workload__c and Workload__c respectively.



Info

Filter by label (Content by label)
showLabelsfalse
max5
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@101b6
showSpacefalse
sortmodified
reversetrue
typepage
cqllabel = "kb-how-to-article" and type = "page" and space = "BPD"
labelskb-how-to-article

Page Properties
hiddentrue


Related issues




Panel
titleOn this page

Table of Contents