Entra ID Calendar & Places API Updates: New Properties for Room, Desk, Building, and Workspace Management

WHAT JUST CHANGED
Microsoft Graph’s Calendar and Places API has released several enhancements, effective June 2024, in General Availability (GA) for all tenants with Microsoft Entra ID (formerly Azure AD) and Exchange Online. These features impact organizations using room/resource scheduling, desk booking, workspace management, and building automation:
- placeFeatureEnablement enumeration type added
- unavailablePlaceMode resource added
- wifiState property added to building
- heightAdjustableState property added to desk
- placeId property added to room and workspace
- teamsEnabledState property added to room
Rollout status: General Availability (GA), effective June 2024.
Tenant scope: All commercial, GCC, and EDU tenants with Exchange Online resource mailboxes and Entra ID integration. External guest/partner scenarios supported if resource mailboxes are shared and licensed.
WHAT’S NEXT ON THE ROADMAP
- Dynamic Place Discovery: Microsoft is previewing dynamic room and desk discovery in Microsoft Teams/Outlook, leveraging these new properties for real-time filtering and booking.
- Enhanced Device Management: Integration with Teams Rooms Devices, Surface Hubs, and IoT sensors will soon leverage teamsEnabledState and wifiState for presence and connectivity automation.
- Conditional Access for Resource Booking: Conditional Access policies targeting resource mailboxes/room booking workflows are entering public preview for improved security and compliance.
- External Guest Booking: Entra External ID for guests is being extended to allow partners and visitors to book rooms/desks via B2B flows, controlled by CA policies.
- Microsoft Graph API v1.0 for Places: These new properties are now available in v1.0 (not just beta), making them production-ready and supported.
WHY THIS DIRECTION IS BETTER
- Granular Resource Management: Admins can automate booking, occupancy, and device configuration with richer metadata (e.g. Wi-Fi status, height adjustability, Teams enablement).
- Modern API Surface: All enhancements are in Microsoft.Graph, eliminating legacy Exchange PowerShell dependency and supporting hybrid/automation scenarios.
- Enhanced User Experience: End users get improved filtering (e.g. “show only height-adjustable desks with Wi-Fi”), and more reliable scheduling within Outlook and Teams.
- Secure External Booking: PlaceId and unavailablePlaceMode simplify lifecycle management for guest bookings, cancellations, and resource visibility.
- Competing Solutions: Microsoft is closing feature gaps vs Google Workspace and Okta Resource scheduling APIs, particularly in hybrid and device-rich environments.
ADJACENT ENTRA ID CHANGES TO KNOW
- Conditional Access for Service Principals (Preview): Resource mailboxes and rooms can be protected from automated booking abuse via CA policies targeting service accounts.
- B2B Guest Lifecycle Improvements: Guests can be provisioned with scoped access to room/desk booking, controlled by Entra External ID policies.
- Licensing: Teams-enabled rooms now require Teams Rooms Standard/Premium licensing. Check your SKU assignments before enabling teamsEnabledState.
- Microsoft.Graph PowerShell 2.x Required: All resource API queries must use Microsoft.Graph v2.x; legacy AzureAD/MSOnline modules do not support place properties.
WHAT TO DO
- Review your Entra tenant’s resource mailboxes (rooms, desks, buildings, workspaces) and inventory their booking properties.
- Update automation scripts to use Microsoft.Graph’s new properties for filtering/scheduling.
- Set missing placeId values for easier cross-resource correlation and lifecycle tracking.
- Enable teamsEnabledState only for rooms licensed for Teams Rooms; avoid configuration drift.
- Leverage wifiState and heightAdjustableState in desk/building booking workflows for accessibility compliance.
- Define unavailablePlaceMode for rooms/desks that should be hidden or restricted in booking flows.
- Audit B2B guest access to resource booking and ensure CA policies are applied.
CHECK IT YOURSELF — Microsoft.Graph PowerShell Reporting
Audit all places and their new properties. This script lists all buildings, rooms, desks, and workspaces, paginates results, and reports new fields. No modifications are made.
# Requires Microsoft.Graph v2.x
Import-Module Microsoft.Graph.Places
# Get all buildings
try {
$buildings = Get-MgPlaceBuilding -All | Select-Object DisplayName, WifiState
} catch {
Write-Warning "Failed to retrieve buildings: $_"
$buildings = @()
}
# Get all desks
try {
$desks = Get-MgPlaceDesk -All | Select-Object DisplayName, HeightAdjustableState
} catch {
Write-Warning "Failed to retrieve desks: $_"
$desks = @()
}
# Get all rooms
try {
$rooms = Get-MgPlaceRoom -All |
Select-Object DisplayName, PlaceId, TeamsEnabledState, UnavailablePlaceMode
} catch {
Write-Warning "Failed to retrieve rooms: $_"
$rooms = @()
}
# Get all workspaces
try {
$workspaces = Get-MgPlaceWorkspace -All | Select-Object DisplayName, PlaceId
} catch {
Write-Warning "Failed to retrieve workspaces: $_"
$workspaces = @()
}
# Output summary
Write-Host "Buildings:"; $buildings | Format-Table
Write-Host "Desks:"; $desks | Format-Table
Write-Host "Rooms:"; $rooms | Format-Table
Write-Host "Workspaces:"; $workspaces | Format-Table
Note: Pagination is handled by -All. Error handling ensures that missing resource types do not halt the script.
PORTAL PATH
- Entra admin center:
Go to Entra admin center > Identity > Resources > Room & Equipment. - Microsoft 365 admin center:
Go to Rooms & Equipment under Exchange > Recipients. - Teams admin center:
Go to Teams Devices > Rooms to enable Teams features.
BOTTOM LINE
- Update your resource inventory and automation to support new API properties.
- Audit Teams Room licensing before enabling teamsEnabledState.
- Apply Conditional Access to resource booking workflows, especially for guests.
- Leverage new metadata for accessibility, device management, and hybrid workplace automation.
These changes are live and production-ready. Prioritize API and script updates to avoid configuration drift and enable richer booking scenarios.