BABU ALAGARSAMY: Hello. My name is Babu Alagarsamy,
engineering manager for Microsoft Bookings.
In today's session, I am excited to walk you through
the technical details
on deploying and administering Microsoft Bookings.
In this session, I will be giving an introduction
to Bookings, its internals,
some of the common deployment scenarios and configurations,
and troubleshooting tips that will help you
in managing Microsoft Bookings in day-to-day business.
What is Bookings?
Bookings is a Microsoft 365 application
that lets you manage the appointment scheduling scenarios,
both inside and outside of your organization.
It allows you to manage appointment bookings
with simple configurations.
Think of Bookings calendar as this container
for holding the types of services offered.
Each service may have a set of service providers,
along with their availability details.
End customers will be presented with services
and their availability on a given date.
And they can create and manage their appointments
in a self-serve mode.
Bookings gives you the best experience
wherever you prefer to log in from.
Bookings is available as a stand-alone web app
within Microsoft 365 and also as a app in Teams.
It is also available on iOS and Android devices.
The Bookings API in Microsoft Graph
provides programmatic access to our capabilities.
The Graph APIs are currently in beta.
Let's look into some of the internal components
of Bookings and how it's closer controlled.
Bookings uses a shared mailbox in Exchange Online
to store its configuration and data.
I will walk through various components
that makes up Bookings,
and most of them are well known in Exchange Online world.
At the core of Bookings is a shared mailbox,
and each shared mailbox is used to represent
a set of logically related or group services.
For example, you could have a requirement
for service offered by the IT and finance department.
Since they will be typically managed
and serviced by two separate groups,
you would create two Booking mailboxes:
one for IT and another one for finance.
In general, Bookings mailboxes are managed
by PowerShell admin cmdlets.
EWS contains methods required by the Bookings Graph APIs,
and the web app uses an internal version of the API
to manage Bookings' mailboxes.
A REST mobile endpoint is used
by Bookings' iOS and Android apps.
All of Bookings' data resides in
an Exchange Online data store,
and the data residency for Bookings
is the same as that of the Exchange mailbox data residency.
In general, any control or limitation that you get
with Exchange Online is applicable for Bookings, as well.
Bookings data is stored as items in the Bookings mailbox.
Few optic code Bookings items map internally
to a shared mailbox Exchange item.
Business employing Bookings' mailbox
is mapped to a shared mailboxes configuration item.
Customer information in Bookings
is stored as part of contact in a shared mailbox.
Appointments in Bookings are stored
as part of calendar items in Bookings' mailbox.
Service and service providers
are some of the custom entities specific to Bookings.
Services are used to store the
metadata of the app or service,
and service provider holds the metadata about a user
and the tenant who's assigned to provide a service.
Bookings adheres to many of the known international
and regional standards and terms related to privacy,
compliance, and security requirements.
It is classified as Category C application
among the Office 365 apps,
which has the industry-leading compliance requirements.
Bookings is a HIPAA Business Associate-
and FERPA-compliant application.
It also has contractual commitments
on data residency requirements to meet US and EU standards.
Bookings is certified for information security
and auditing requirements to protect sensitive data.
Bookings does not voluntarily disclose any customer data
to any of the law enforcement agencies.
Let's look into some of the top deployment scenarios
in Bookings.
Bookings provides you multiple levels of controls
to restrict access to the application.
Bookings can be enabled or disabled at the tenant level,
by visiting the Microsoft 365 admin center.
Go to Microsoft 365 admin center, and under Settings,
you can open org settings and select Bookings.
Under Bookings, you will have an option
to enable or disable Bookings for the entire organization.
Along with this toggle, you will also get an option
to enable or disable a couple of more controls,
like blocking social sharing options
or staff requiring an approval explicitly
to manage schedules.
Some of the organizations
may want to have multiple Bookings calendar administrators
to easily manage schedules at scale.
However, they want to ensure only trained users
can create new calendars to align with business processes.
You can use the policies to help with this.
Bookings creates a shared mailbox
for each business calendar,
and you can control who can create these Bookings mailboxes
using OWA mailbox policies.
You can create a new OWA mailbox policy
for users who should be allowed
to create Bookings mailboxes.
This is achieved by using
the New-OwaMailboxPolicy command.
Since Bookings mailbox creation is allowed by default,
the new mailbox policy that you create
with the New-OwaMailboxPolicy
will not require further customization in general.
You can assign this policy to relevant users
who should be given permissions
to create Bookings calendars.
To disable Bookings mailbox creation
for the rest of the users in your organization,
run Set-OwaMailboxPolicy command,
along with BookingsMailboxCreationEnabled:$false.
This will ensure that only a limited number of people
within your organization can create a new Bookings mailbox.
For more details on how to use these commands,
refer to our support pages.
For scale scenarios and for scenarios
where there are only limited users
having permissions to create Bookings mailboxes,
you can create the mailboxes using PowerShell commands.
Run New-SchedulingMailbox command
with relevant parameters,
like the display name of the service,
what will be the primary address,
who should be the owner of the mailbox,
and what should be the time zone of the mailbox.
This will help you create a mailbox programmatically
with default settings.
Both creating the mailbox,
you can hand it over to the Bookings admins
to configure it from bookings.office.com.
The Bookings admin here is the user assigned as a owner
in the New-SchedulingMailbox command
or as staff that you add from bookings.office.com.
When the Bookings mailbox is no longer needed,
you can delete it like any other Exchange mailbox
using PowerShell commands
or by visiting the admin center portal.
The Bookings mailbox picks up the default tenant domain
from AAD for all the new mailboxes.
If you have a need to differentiate
the Bookings mailbox domain
from your regular domain address,
you can visit the AAD portal and
configure the default domain
to a custom domain,
and any new Bookings mailbox created post this
will have this custom domain.
The domain name shows
as part of the Bookings mailbox email AAD,
and your customers will see it
when they receive communication from Bookings.
If you do not want to change the default domain at AAD,
you can update the domain for the Bookings mailbox
post-creating it by visiting the Microsoft 365 admin center.
In admin center, go to the Users list, under which
you can find that active users list.
Select the account corresponding to the Bookings mailbox,
and go to the Manage user name section.
This will list down the custom domains
that you had registered with AAD
and pick the one that you want to assign
to the Bookings mailbox.
When you change the domain for an existing Bookings mailbox,
the self-serve Booking URL
will also be changed to reflect this.
So make sure if you had already shared a self-serve URL
with your customers, post-changing the custom domain,
you share the updated self-serve URL to your customers.
Bookings also has a public-facing API
which is currently in beta.
These are exposed as part of Microsoft Graph APIs
and lets you manage the Bookings mailbox programmatically.
Bookings Graph APIs can be used
like any other Microsoft Graph APIs
using the user access tokens.
These APIs support the basic CRUD operations
for all the Bookings entities, like calendar services,
service providers, appointments, and customers.
Using these Graph APIs,
you can build a custom application of Bookings
that suits your needs.
The support for self-serve booking scenarios
is not yet available on these Graph APIs.
For more details on how to use Booking Graph APIs,
you can visit Microsoft Graph support documentation.
Let's look at some of the troubleshooting tips
that will help in resolving the common issues
that you may encounter with or configuring Bookings.
If you have issues
with appointment confirmation email delivery,
there could be few reasons for it.
The Exchange spam filter could be blocking the emails
originating from Bookings' mailbox
if it is generating many emails in a short duration.
In such cases, you may want to spread the load
by creating Bookings mailboxes
for each scenario or for a category of services.
If you use a nonstandard name for your Bookings mailbox--
for example, using a GUID as a Bookings mailbox name--
then the spam filter could block the emails
originating from these mailboxes.
Choosing a standard-looking name
for your Bookings mailbox could avoid this issue.
Your tenant admin may also have policies applied
that could impact email sending
within or outside the tenant.
Check with your tenant admin to make sure
they are not blocking emails
originating from a shared mailbox.
The email already configured
under the Business information section
generally receives an NDR with the exact reason
for the delivery failure.
Inspecting this delivery failure information
generally helps you fix this issue quickly.
If you have any issues around staff
or service provider availability not showing up correctly,
ensure that you have events on Office calendar
affect availability option enabled on
the staff details page.
The availability could be impacted or adjusted
if the business time zone and the staff time zone
are not in sync, as well.
Thank you for listening in.
I hope this session offered valuable information
that detailed the behind-the-scenes architecture
of Bookings and gave you additional tips
on how to manage Bookings for your organization.
Thanks for attending,
and be sure to visit our support documentation
for further information.
We also have a lot of other good talks
that have been recorded for you.
Here are the ones that are related to this one.
Please do check them out.
Thank you.