Calpendo allows control of the bookings that people are allowed to make using Time Templates, Booking Rules and Permissions. Some controls to be implemented could be done using any of these three, so it's important to understand the advantages and abilities of each method so that the most appropriate methodology is used to achieve what is required.
The general rule of thumb is to preferably implement controls using Time Templates where possible. This is because the Time Templates can be displayed on the background of the Bookings Calendar so that users will be able to see at a glance when they will be allowed to make a booking. However, Time Templates only allows the placement of controls on the times when bookings can be made, whereas Booking Rules and Permissions offer control in other ways.
Let's look at each option with an example that can be implemented in all three ways. Suppose it is necessary to stop a particular user from making bookings on Mondays. Here is an outline of how to implement this in each methodology:
Time Templates Example
Use the Time Template Editor to create a Time Template that applies to the person (or people) to be controlled, and set the bookings acceptability to Automatic Denial. Also specify a message that would be given to the user if they tried to make a booking in the forbidden time. Once the Time Template is created, then choose the times to apply it. For this, go to the Time Templates page and create a repeating entry, and apply the Time Template every Monday.
When the user logged in, they would then see the background of every Monday in the bookings calendar in red, and letting the mouse hover over the red background would show them the message that has been entered. If they tried to create a booking on a Monday, then as soon as they click on a Monday, they would be given the error message. This means Time Templates can give instant feedback to the user, before they even enter the details of the booking.
Booking Rules Example
To stop somebody booking on Mondays using Booking Rules, use the Booking Rule Editor to create a Simple Booking Rule. Specify that the Booking Rule applies to the person or people you want to control, using the Bookers tab within the Applies To tab. In the Conditions tab, specify a condition that the booking's start day is a Monday. Next, specify the Booking Rule's Rejection Type as Reject and enter a message to be shown to the user.
When the user logged in, they would now see no indication that they cannot make a booking on a Monday. Only after entering the details of a booking they wanted to make would they see the error message that was set up in the Booking Rule.
Permissions Example
To deny somebody permission booking on Mondays, you would create a Permission that applied to Bookings, add a Condition the same as for Booking Rules that the booking's start day is a Monday, and use the Applies To tab to specify the users that the Permission applies to.
When a user tries to make a booking that is denied by a Permission, then they would see an error message that says Permission Denied. There is no way to provide your own error message to be shown when using Permissions. Consequently, this is the least user-friendly way of controlling bookings and so should be used sparingly.
From reading the examples above, it may appear that there's not a huge difference between the three methods. However, they differ in the information that they can each use, and in the results they can effect:
Time Templates: Information In And Out
Time Templates easily allows a choice of times when bookings should be requests, automatically approved, given a warning or automatically denied. They also allow decisions based on who makes the booking, the project it's for, and the resource it's for. No other information can be used by Time Templates.
Booking Rules: Information In And Out
Booking Rules can be configured to use any information. There are different types of Booking Rules that make it relatively easy to apply some controls, for example to prevent double bookings or limit how much time somebody can book in a week. However, a Booking Rule can be made to do almost anything by creating an Advanced Booking Rule (although this requires a programmer to write some Java code).
Permissions: Information In And Out
Permissions can only use the information in the booking's properties, as well as information about who was making the booking and when. There is no access to other information in the Calpendo database. For example, Permissions cannot be used to control the time booked per week or to prevent double bookings because that would require information about other bookings.
Comparing Time Templates, Booking Rules And Permissions
Comparing the methods gives us these differences:
•They each provide different levels of feedback to the user. Time Templates provide graphical feedback before a user tries to make a booking, and can stop a user from even entering a booking's details by providing a message you have specified in the Time Template. Booking Rules provide no graphical feedback and can only give an error message after the booking details have been entered, but the message that will be provided can be chosen. Permissions also provide no graphical feedback, and can only give a generic Permission Denied error message after the booking's details have been entered.
•A single Time Template can provide a different message to different groups of people. Booking Rules and Permissions can each only apply to one set of people.
•Time Templates can be used to choose whether, when and which bookings should be made as a request or automatically approved. Booking Rules and Permissions can only deny or accept a booking. For example, Booking Rules and Permissions cannot choose to automatically approve a booking.
•Time Templates are the most convenient way to provide a warning for a specific period of time. For example, if a user is making a booking for an MRI scanner, and there are no operators available one particular week due to annual leave, there could be a Time Template that applies during that week to give users a warning that they need to make their own arrangements for a scanner operator to be available. While a warning message can be provided using Booking Rules, it's not as flexible in setting the start and finish time it should apply, and it provides no feedback to the user until after they make their booking.
•Time Templates work when the control to be applied relates to when the booking is made. Permissions apply to any property of the booking, while Booking Rules can use any information even if it's not on the booking. For example, Time Templates and Permissions cannot be used to prevent double bookings, or to limit the amount of time somebody can book per week.
•Time Templates are simpler than Booking Rules and Permissions.
•Permissions are the most difficult of all three techniques to understand. This is because many Permissions may be set up, some of which give permission and some of which may refuse permission. Calpendo then chooses which Permission is the definitive one from all that may match depending on their relative priority. This means they can be confusing because if many of them are created, it's not always obvious which one will be definitive.
In summary:
1.If you can achieve what you want with a Time Template, then you should use that.
2.If the control needed only requires information that can be found on the booking, or the time the booking is being made, and it is not a problem that the user is given a generic Permission Denied error message, then it is possible to use a Permission.
3.If the above don't apply, then a Booking Rule is needed.