Key takeaway: Calendar sharing in Exchange Online is really five separate systems: default free/busy inside the organization, per-calendar permissions, delegate access, shared calendars owned by shared mailboxes, groups, or rooms, and external sharing governed by sharing policies and organization relationships. Knowing which one you are using decides who sees what, how much detail leaks, whether outsiders can book you, and why a meeting you invited someone to shows "no information" for them. This guide covers all five, the PowerShell, room and resource booking, hybrid considerations, privacy, and the problems that waste the most time.
In This Article
- What Is Visible by Default
- Permission Levels
- How Users Schedule Across Teams
- Show More Detail Across the Organization
- Share With Specific People
- Shared Team, Group, and Resource Calendars
- Multiple Calendars and Overlay
- Sharing Outside the Organization
- Hybrid and Mixed Environments
- Privacy and Policy
- Calendar Repair and Diagnostics
- How to Check It Worked
- Troubleshooting
- A Short Decision Guide
Scheduling across a team without seeing availability turns into email ping-pong. Exchange Online solves that, but only when calendars are shared at the right level, in the right way, for the right audience.
What Is Visible by Default
Inside the organization, each user's calendar has a Default permission. In a standard tenant it is availability only (free/busy). Colleagues see when someone is busy, tentative, free, out of office, or working elsewhere, but not the subject, location, or attendees. That is enough for the Scheduling Assistant to suggest times.
Inspect it:
Get-MailboxFolderPermission -Identity "jsmith@contoso.com:\Calendar"Entries to read:
- Default: what any authenticated colleague gets.
- Anonymous: what an unauthenticated person gets (should be
Noneunless the calendar is published). - Named users or groups: extra rights given on purpose.
Organization-wide settings that change this live in Get-OrganizationConfig, and per-user defaults can differ when a calendar was shared earlier or created in another system.
Permission Levels
| Level | What the person sees or can do |
|---|---|
| AvailabilityOnly | Free/busy times only |
| LimitedDetails | Free/busy plus subject and location |
| Reviewer | Full details of items, read only |
| Contributor | Create items only |
| Author | Create items, edit and delete their own |
| Editor | Create, edit, delete all items |
| PublishingEditor | Editor plus create subfolders |
| Owner | Everything, including changing permissions |
| Delegate flag | Receives meeting requests and responses on the owner's behalf |
Choose the least that fits the purpose. Showing subjects to everyone is common in small teams and a problem in organizations where titles are sensitive ("Meeting with lawyer," "Interview, candidate X").
How Users Schedule Across Teams
- Create a new meeting in Outlook.
- Add attendees, and open Scheduling Assistant.
- Read the availability grid. Use AutoPick or the suggested times.
- Add a room or equipment.
- Add a Teams link (Teams Meeting button) and send.
Tips that save time:
- Use Room Finder to pick a room by size and features.
- Set working hours and location in Outlook settings, so the Scheduling Assistant respects them.
- Mark time as Out of office (not just busy), which also drives automatic replies and shows in the grid.
- Use FindTime or Bookings when scheduling with people outside the organization.
Show More Detail Across the Organization
To let all colleagues see subject and location:
Set-MailboxFolderPermission -Identity "jsmith@contoso.com:\Calendar" -User Default -AccessRights LimitedDetailsTo apply it to every user mailbox:
Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | ForEach-Object {
$cal = "$($_.PrimarySmtpAddress):\Calendar"
Set-MailboxFolderPermission -Identity $cal -User Default -AccessRights LimitedDetails
}This changes behavior for everyone. Announce it, give users the ability to opt out per meeting by marking it Private, and exclude roles with confidentiality needs such as HR, legal, and executives. If your users use another language, the folder name differs; find it with Get-MailboxFolderStatistics -FolderScope Calendar. New mailboxes revert to the default unless you script the change into provisioning.
Share With Specific People
A user opens the calendar, chooses Share, adds people, and picks a level. The recipients get an invitation and, once accepted, see the calendar in their list.
Admins can do the same in PowerShell:
Add-MailboxFolderPermission -Identity "jsmith@contoso.com:\Calendar" -User asmith@contoso.com -AccessRights Reviewer
Set-MailboxFolderPermission -Identity "jsmith@contoso.com:\Calendar" -User asmith@contoso.com -AccessRights Editor
Remove-MailboxFolderPermission -Identity "jsmith@contoso.com:\Calendar" -User asmith@contoso.com -Confirm:$falseShare with a group to avoid per-person changes. Delegate-level access, where the delegate manages the calendar and receives meeting requests, is covered in delegate access.
Shared Team, Group, and Resource Calendars
There are four ways to give a team a calendar, and each has strengths:
| Option | Best for | Notes |
|---|---|---|
| Shared mailbox calendar | A team, department, or role | No license under 50 GB, controlled by a security group. See shared mailboxes |
| Microsoft 365 group calendar | A team that also needs files, chat, and a planner | Members see it in Outlook; the Teams channel calendar can use it |
| Room mailbox | Meeting rooms | Automatic accept, decline, and rules |
| Equipment mailbox | Projectors, cars, shared devices | Same booking rules as rooms |
Room and equipment mailboxes:
New-Mailbox -Room -Name "Boardroom" -Alias boardroom -DisplayName "Boardroom" -ResourceCapacity 12
Set-CalendarProcessing -Identity boardroom `
-AutomateProcessing AutoAccept `
-AllowConflicts $false `
-BookingWindowInDays 180 `
-MaximumDurationInMinutes 480 `
-AllowRecurringMeetings $true `
-DeleteComments $false -DeleteSubject $false `
-AddOrganizerToSubject $true `
-ProcessExternalMeetingMessages $false
# Require approval for a particular group; others book automatically
Set-CalendarProcessing -Identity boardroom -AllBookInPolicy $false -BookInPolicy "Managers" `
-AllRequestInPolicy $true -ResourceDelegates "assistant@contoso.com"Add rooms to room lists so Room Finder can group them by building:
New-DistributionGroup -Name "Building A Rooms" -RoomList
Add-DistributionGroupMember -Identity "Building A Rooms" -Member boardroomKeep an eye on ghost meetings, where an organizer leaves and their meetings still hold rooms. Admins can report on room use and remove meetings from a departed organizer's calendar.
Multiple Calendars and Overlay
Users can add colleagues' calendars, a room calendar, a group calendar, or an internet calendar, and overlay them. Common uses: a team leave calendar, a rota, a manager checking the team's schedule. Encourage the use of a single shared team calendar over many personal ones, because a single source avoids conflicting entries.
Sharing Outside the Organization
External sharing is controlled by two mechanisms:
- Sharing policies control what users can share with specific external domains.
- Organization relationships define a trusted relationship with another Exchange organization for free/busy lookups.
Get-SharingPolicy | Format-List Name, Domains, Enabled, Default
Get-OrganizationRelationship | Format-List Name, DomainNames, FreeBusyAccessEnabled, FreeBusyAccessLevel
# Allow limited-detail calendar sharing with a partner domain
Set-SharingPolicy -Identity "Default Sharing Policy" -Domains "partner.com:CalendarSharingFreeBusyDetail"Sharing policy domain actions include free/busy only, with time, subject and location, and full details. Pick the lowest that serves the business. Ask the partner to configure their side or set up an organization relationship in both directions.
Publishing a calendar. From Outlook on the web: Settings, Calendar, Shared calendars, Publish a calendar. Choose the calendar and the level (availability, limited details, full details), then you get an ICS and an HTML link. Anyone with the link can see it, and it cannot be limited to named people. Use this only for public information, such as event dates. Remove the link when it is no longer needed, and know that publishing can be disabled with a policy:
Get-SharingPolicy | Format-List
Get-OwaMailboxPolicy | Format-List CalendarPublishingEnabled
Set-OwaMailboxPolicy -Identity OwaMailboxPolicy-Default -CalendarPublishingEnabled $falseMeeting invitations to outsiders. Anyone can send you a meeting request. Your response (accept, decline) goes back to them. Free/busy lookup for outside people depends on the relationship above, otherwise the Scheduling Assistant shows "no information."
Hybrid and Mixed Environments
If some mailboxes are still on an on-premises Exchange server, free/busy and sharing between on-premises and online users depend on the hybrid configuration:
- The Hybrid Configuration Wizard sets up the organization relationship and OAuth.
- Free/busy lookups between the two sides fail when OAuth, Autodiscover, or certificates are broken.
- Test with
Test-OAuthConnectivityand the Microsoft Remote Connectivity Analyzer.
For the on-premises side see Exchange Server internal PKI and hybrid certificates.
Privacy and Policy
- Private appointments show as "Private Appointment" to people with limited details. Remind users to use them.
- Free/busy vs details matters in regulated roles. Decide by group, not by habit.
- Time zones and working hours appear in the Scheduling Assistant. Keep them accurate.
- Calendar sharing can leak location and attendee information. Review what the default shows after incidents.
- Delegates and private items. Don't give
CanViewPrivateItemsby default.
Calendar Repair and Diagnostics
Calendars can break in strange ways: duplicate entries, missing meetings, or meetings that update only for some people.
- Calendar Checking Tool for Outlook (CalCheck) scans a mailbox for problems.
- Calendar logging:
Get-CalendarDiagnosticLog -Identity jsmith@contoso.com -Subject "Board review"shows how an item changed and who changed it. - Cleanup: the Outlook switch
outlook.exe /cleanremindersand/cleanviewsfix reminder and view problems. A broken Calendar sharing state can be fixed by removing and re-adding the share. - Resetting the calendar with a fresh profile can fix a corrupt cached copy.
- Ghost meetings after an organizer leaves can be removed with
Remove-CalendarEvents.
How to Check It Worked
- Create a meeting with several colleagues, and confirm their busy time appears in the Scheduling Assistant.
- From another account, check the detail level the calendar shows.
- Book a room twice at the same time and confirm the second booking is declined.
- Test external free/busy with someone in the partner organization.
- Test the published link in a private browser window, and make sure it shows only what you intend.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| "No information" for a person | They are outside the tenant with no sharing, on-premises with broken hybrid, or have no mailbox |
| Subjects hidden from colleagues | Default is availability only |
| Cannot add a permission | An entry already exists. Use Set-MailboxFolderPermission |
| Room accepts double bookings | AllowConflicts is true, or processing is off |
| Room declines everything | BookingWindowInDays too small, duration limit too short, or policy limits who can book |
| Delegate misses meeting requests | The Delegate flag or the delegate's meeting request setting is off |
| Shared calendar not appearing in Outlook | Not accepted, group-based grant, or cache delay |
| Meeting updates reach some attendees only | Corrupt item or sync issue. Check the diagnostic log and re-send |
A Short Decision Guide
- See when colleagues are free: nothing to do, default works.
- Show titles to everyone: set Default to LimitedDetails, with exceptions.
- Team calendar: shared mailbox or Microsoft 365 group.
- Meeting rooms: room mailboxes in room lists with booking rules.
- Partner scheduling: sharing policy or organization relationship.
- Public event schedule: published calendar.
Related guides: delegate access, Teams and Outlook integration, and automatic replies.
Defaults, sharing options, and cmdlet parameters change over time, and I have not run these commands against your tenant. Confirm them in Microsoft's documentation and test with a pilot group. If you run a hybrid and calendar sharing is failing, get in touch.