Integration Guide
The Microsoft Places setup procedures described on this page reflect the state at the time of initial integration development. Microsoft may update their APIs, PowerShell modules, and configuration workflows at any time. Always refer to the official Microsoft Places documentation for the latest instructions.
Overview
This guide walks through the end-to-end setup of the Haltian IoT integration with Microsoft Places. The process involves both customer and Haltian tasks:
| Task | Responsible Party |
|---|---|
| Configure buildings and floors | Customer |
| Create floorplans (IMDF maps) | Haltian + Customer |
| Turn on Places Finder | Customer |
| Configure desk booking | Customer |
| Map sensors to resources | Haltian |
| Provide real-time occupancy data | Haltian |
Setup Process Overview
%%{init: {'theme': 'base', 'themeVariables': {'primaryColor': '#F6FAFA', 'primaryTextColor': '#143633', 'primaryBorderColor': '#143633', 'lineColor': '#143633', 'secondaryColor': '#C7FDE6', 'tertiaryColor': '#73F9C1', 'clusterBkg': '#ffffff', 'clusterBorder': '#143633', 'edgeLabelBackground': '#ffffff'}}}%%
flowchart TB
subgraph Customer["Customer Tasks"]
S1["1. Configure\nBuildings & Floors"]
S2["2. Configure\nFloorplans"]
S3["3. Enable\nPlaces Finder"]
S4["4. Configure\nDesk Booking"]
end
subgraph Haltian["Haltian Tasks"]
S2H["2. Prepare\nIMDF Files"]
S5["5. Map Sensors\nto Resources"]
S6["6. Enable Occupancy\nData Feed"]
end
S1 --> S2
S2H --> S2
S2 --> S3
S3 --> S4
S4 --> S5
S5 --> S6Prerequisites
License Requirements
Microsoft Places features require specific licenses:
| License | Features |
|---|---|
| Microsoft 365 subscription | Core features: work plans, calendar cards, RSVP |
| Teams Premium | Enhanced features: Places finder, space analytics |
| Microsoft 365 Copilot | AI features: managed booking, recommended days |
See Microsoft’s license requirements for current details.
Tools Required
- PowerShell 7.4.0+ - Download
- Microsoft Places PowerShell module:
Install-Module -Name MicrosoftPlaces -Force
Permissions
You need two Exchange Online management roles:
- TenantPlacesManagement - Manage Places
- MailRecipient - Manage users and mailboxes
If you have the Exchange Administrator role, you likely have these permissions. Otherwise:
New-ManagementRoleAssignment -Role TenantPlacesManagement -User <UPN>
You need an Exchange Online license to run Microsoft Places PowerShell cmdlets.
Step 1: Configure Buildings and Floors (Customer)
1.1 Create Building Hierarchy
- Launch PowerShell 7 as Administrator
- Connect to Microsoft Places:
Connect-MicrosoftPlaces
- Initialize the hierarchy:
Initialize-Places
- Select Option 1 to create a CSV file from existing room data
The generated CSV contains your organization’s rooms and workspaces with inferred building/floor names.
1.2 Review and Edit CSV
- Open the CSV file
- Correct building and floor names in
InferredBuildingNameandInferredFloorNamecolumns - Remove all columns except:
InferredBuildingNameInferredFloorNameInferredSectionNamePrimarySmtpAddress
- Save and close the file
1.3 Upload Hierarchy
Initialize-Places
Select Option 2 to import your edited CSV file.
1.4 Verify
Check that buildings appear in Microsoft Teams or Outlook calendar workplace presence settings.
1.5 Add Metadata (Optional)
Add capacity, A/V equipment, room pictures using Set-PlaceV3:
Set-PlaceV3 -Identity "meeting-room@contoso.com" -Capacity 10 -AudioDevices "Teams Room"
See Set-PlaceV3 documentation for full options.
Step 2: Configure Floorplans (Customer + Haltian)
Floor plans enable users to see building layouts and find rooms/desks visually.
2.1 Export Spatial Information (Customer)
- Find the building PlaceId:
Get-PlaceV3 -Type Building | ? {$_.DisplayName -eq 'Your Building Name'} | ft DisplayName,PlaceId
- Export building data to CSV:
Get-PlaceV3 -AncestorId <BuildingPlaceId> | Export-Csv "YourBuilding.csv" -NoTypeInformation
- Share this CSV file with Haltian
2.2 Prepare IMDF Files (Haltian)
Haltian creates IMDF (Indoor Mapping Data Format) files:
- One zipped folder per building containing:
building.geojsonfootprint.geojsonlevel.geojsonunit.geojson
Requirements:
- Maps must be georeferenced
- Each package contains only one building
- Floor ordinal values match Microsoft Places SortOrder
- Names use language code format:
{
"properties": {
"name": {
"en": "3rd Floor"
}
}
}
2.3 Generate Correlation File (Customer)
- First run — extract map features:
Import-MapCorrelations -MapFilePath "path\to\imdffile.zip"
This creates mapfeatures.csv.
- Second run — correlate with Places data:
Import-MapCorrelations -MapFilePath "path\to\imdffile.zip" -CorrelationsFilePath "path\to\mapfeatures.csv"
2.4 Correlate Spaces (Customer)
- Open the building CSV (from Step 2.1) and
mapfeatures.csvside by side - For each building, floor, and room: copy PlaceId, Name, and Type from building CSV to mapfeatures CSV
- Save the file
Building and all floor levels must be correlated. The import fails if these features aren’t correlated.
2.5 Update IMDF with Correlations (Customer)
Import-MapCorrelations -MapFilePath "path\to\imdffile.zip" -CorrelationsFilePath "path\to\mapfeatures.csv"
This creates imdf_correlated.zip.
2.6 Import Maps (Customer)
- Get the building PlaceId:
Get-PlaceV3 -Type Building | ? {$_.DisplayName -eq 'Your Building'} | ft DisplayName,PlaceId
- Import the correlated maps:
New-Map -BuildingId <BuildingPlaceId> -FilePath "path\to\imdf_correlated.zip"
Map updates may take up to 1 hour to appear in Microsoft Places.
Step 3: Enable Places Finder (Customer)
Places Finder replaces the Room Finder experience in Outlook and Teams.
Microsoft Places Finder requires a Teams Premium license.
Enable for Specific Group
Set-PlacesSettings -PlacesFinderEnabled 'Default:false,OID:<group-object-id>:true'
Enable for Everyone
Set-PlacesSettings -PlacesFinderEnabled 'Default:true'
Verify Settings
Get-PlacesSettings
Use a mail-enabled security group for proper functionality.
Step 4: Configure Desk Booking (Customer)
Enable desk booking for workspaces in Microsoft Places. See Microsoft’s desk booking documentation for details.
Step 5: Sensor Mapping (Haltian)
Haltian maps physical sensors to Microsoft Places resources:
- Room sensors — Mapped to meeting room resources
- Desk sensors — Mapped to bookable desk resources
- Zone sensors — Mapped to floor sections
This enables:
- Real-time room availability
- Desk occupancy status
- Space utilization analytics
Troubleshooting
Buildings Not Appearing
- Verify CSV was imported successfully with
Initialize-Places - Check building names match exactly
- Wait up to 1 hour for sync
Maps Not Displaying
- Verify IMDF files follow Apple IMDF specifications
- Check all correlations are complete in mapfeatures.csv
- Ensure floor ordinal values match SortOrder
Occupancy Data Not Updating
- Verify sensor-to-resource mapping with Haltian
- Check sensor connectivity in Haltian IoT Studio
- Confirm API integration is active
- Check that sensors have recent
lastSeentimestamps in IoT Studio - Ensure the correct device group is mapped if using the Occupancy Data Engine
Room Release Not Working
- Confirm Teams Premium license is assigned to room mailboxes
- Verify occupancy sensors are reporting to the correct room resource
- Check that automatic room release is enabled in Microsoft Places settings
- Allow 5–10 minutes for no-show detection (sensor must confirm the room is empty)
Desk Booking Shows Wrong Status
- Verify one-to-one mapping between desk sensor and bookable workspace
- Check sensor battery level — low battery causes delayed or missed reports
- Confirm sensor is mounted correctly per installation guide
For more common questions, see the FAQ.
Support
- Microsoft Places: Microsoft documentation
- Haltian Integration: support@haltian.com
Next Steps
- Supported Sensors — Which sensors work with Microsoft Places and how to choose them
- FAQ — Common questions about the integration
- Occupancy Data Engine — How multi-sensor occupancy is calculated