Reading External Calendars
Several of your schedulable resources (Bankers, Advisors, Doctors, Store associates) work out of External calendars like Outlook, Google Calendar or even external systems (EHRs) for their daily work. Their non-customer meetings like “Out for training for 2 hours” or “Out for lunch” are setup in an external calendar. Obviously you would want Scheduler to stop showing up these times slots to your customers.
Below are two ways to achieve this
1. Using a Syncing solution
Here you can use a Syncing solution (In Exchange to Salesforce mode or X2S) which pulls that training appointment setup in the banker’s external calendar from your external calendar (Lets call it Exchange for now) to the Salesforce calendar.
Make sure, you have enabled the Scheduling Policy switch : “Check Salesforce Calendar for Resource Availability.” This ensure that Scheduler will not show any slots that have Salesforce Calendar events at that time. (Only Salesforce Calendar Events that have Show Time As = Free are not considered.)
So how does this work?
Now say your banker has booked 2 hours of training in their exchange calendar. The syncing solution will make an asynchronously call to pull this appointment from Exchange to the Salesforce calendar. When a customer loads the Scheduler interface*, Scheduler will consider existing Service Appointments and also check the events in the Salesforce calendar. Scheduler will then merge all the unavailable times from both these sources and then provide the free time slots. Hence, the 2 hour banker’s training will not show up as a free slot in the Scheduler’s interface*.
Documentation Link: https://help.salesforce.com/articleView?id=sf.ls_read_salesforce_calendar.htm&type=5
Usually syncing solutions gives an end to end solution which can connect to your external calendars via an easy configuration.
Salesforce has a product called Einstein Activity Capture which can do this.
2. Using Apex Interface capability
This helps get on-demand availability by building an apex class which pulls availability from an external calendar.
Obviously, here customers will have to make investment to build & maintain this middleware that reads from their external calendar. This needs significant expertise on the customer side but gives more control of the security model and could give more flexibility in case the customers have a complex external calendar architecture.
There are already partners out there who have built out adaptors to connect to this apex interface. (Check the comments 🙂 )
One thing to keep in mind is that this solution is NOT a replacement for the standard syncing solution. This will exclusively be used with Scheduler & only for service appointments.
So how does it work?
Once you have built this middleware, make sure, you have enabled the Scheduling Policy : “Check External Systems for Resource Availability” and called this interface that you have built. This ensures that Scheduler is checking your external system for availability.
Now say your banker has booked 2 hours of training in their exchange calendar. When a customer loads the Scheduler interface*, Scheduler will consider existing Service Appointments and also get the availability synchronously from this Apex class which you have configured to reach out to your Exchange server and get those unavailable 2 hours. Scheduler will then merge all the unavailable times from both these sources and then provide the free time slots. Hence, the 2 hour banker’s training will not show up as a free slot in the Scheduler’s interface*.
Doc link to get on demand availability (Reading from external calendars): https://help.salesforce.com/articleView?id=ls_read_external_calendar.htm&type=5
* I used Scheduler Interface generically but it actually includes multiple touch points depending on how you have built out your appointment booking experience using the various options provided by Scheduler (See below)