Microsoft Places will be rolled out soon

Microsoft Places will be rolled out soon

Hi All,

In the M365 Message Center is the annoucement that in December Microsoft Places will be rolled out in early December.

I’ve already blogged about Microsoft Places Preview a few months ago.

In the past Weeks the Microsoft Places Licencse has been rolled out to all Tenants

List Service Plans of an SKU with Microsoft.Graph PowerShell

Connect-MgGraph -Scopes Directory.Read.All -NoWelcome
Get-MgSubscribedSku | ft SkuId, SkuPartNumber, ServicePlans
Get-MgSubscribedSku | where {$_.SkuPartNumber -eq "ENTERPRISEPACK"} | select -ExpandProperty ServicePlans

PowerShell Module

Today the MicrosoftPlaces PowerShell Module was released in the Version 1.0.0. It requires PowerShell 7.4

Release Notes:

Version 1.0.0

  • Official release of Microsoft Places module.

Version 0.46.0

  • Add Support for Section for Initialize-Places Import/Export/Script generation.

Version 0.45.0

  • Add Get-Help documentation for PlacesDirectory cmdlets.
  • Set EnableBuildings setting to true at Initialize-Places Import.

Version 0.44.0

  • Set-PlacesSettings: Deprecate the EnablePlacesMobileApp parameter

Version 0.42.0

  • [Directory] Support for individual desks.

Version 0.41.0

  • [Maps] Better error handling and reliability improvements for maps cmdlets.

Version 0.40.0

  • Add support for WorkplaceWifiNetworkSSIDList setting in Get-PlacesSettings and Set-PlacesSettings
  • Add support for pipe operations for New-Place, Get-PlaceV3, Set-PlaceV3, Remove-Place

Version 0.39.0

  • Address the conflict with ExchangeOnline module.

Version 0.38.0

  • Fix in Set-Placev3 to allow ParentId property to be cleared when parameter is null

Version 0.37.0

  • Added supported PSEditions and Minimum version of the PowerShell engine

Version 0.36.0

  • New-Place: Block attempts to create a room or workspace using New-Place
  • Set-Placev3: Improved error messages to be more specific to the issue
  • [Maps] Remove-map cmdlet
  • Get-PlacesSetting: GetSettings output remove descriptor field

Version 0.35.0

  • Initialize-Places: Added new bootstrap scenarios for Room with multiple Roomlists and Building label
  • New-Place: Allow setting SortOrder on a floor when setting up via New-Place
  • Remove-Place: Update to use -Identity as the parameter name rather than -Id
  • Deprecate the PostOfficeBox parameter on buildings
  • Deprecate the ParentType parameter, so that only ParentId parameter is required

Version 0.34.0

  • Fix Import-MapCorrelations cmdlet to ingore manifest.json in imdf.zip file
  • Fix a null reference error and malformed output path prompt in Import-MapCorrelations cmdlet

Version 0.33.0

  • Add support for SpaceAnalyticsBuildingsList setting in Get-PlacesSettings and Set-PlacesSettings

Version 0.32.0

  • Update Get-PlaceV3 & Set-PlaceV3 to support Identity format as Name_GUID for v3 entities

I am using the new PSResourceGet here instead of the PowerShellGet commands.

Show installed Versions and what’s available in PowerShell Gallery

Get-InstalledPSResource MicrosoftPlaces
Find-PSResource MicrosoftPlaces

Uninstall the old Modules and install the current Module

Uninstall-PSResource MicrosoftPlaces -Scope CurrentUser
Install-PSResource MicrosoftPlaces -Scope CurrentUser
Get-InstalledPSResource MicrosoftPlaces

List the commands of the Module

Get-Command -Module MicrosoftPlaces

You need the “Exchange Administrator” Role or an Exchange Online RBAC Role with the TenantPlacesManagement Role

Import-Module MicrosoftPlaces
Connect-MicrosoftPlaces
Get-PlacesSettings -ReadFromPrimary

The Microsoft Places Web App with the Property “Places.EnablePlacesWebApp” is currently disabled and will be enabled in December.

Enable PlacesWebApp by default

#Enable PlacesWebApp
Set-PlacesSettings -EnablePlacesWebApp "Default:true"
Get-PlacesSettings -ReadFromPrimary

#Enable Buildings
Set-PlacesSettings -EnableBuildings 'Default:true'

#Enable Finder
Set-PlacesSettings -PlacesFinderEnabled 'Default:true'

Enable PlacesWebApp for a specific group (Distribution Group or Mail enabled Security Group)

Format:

Default:True|False,OID:MailEnabledSecurityGroupGuid@TenantID:True|False,OID:2ndGroupGuid@TenantID:True|False

Set-PlacesSettings -PlacesEnabled "Default:false,OID:41efed8d-b0d1-450b-9fe9-da949207992f@46bbad84-29f0-4e03-8d34-f6841a5071ad:true"
Get-PlacesSettings -ReadFromPrimary

$Places = Get-PlacesSettings -ReadFromPrimary
$Places | where {$_.Name -eq "Places.EnablePlacesWebApp"} | select -ExpandProperty ScopedValues | fl

Paces Web App

It took quite a while until the Places WebApp was available. Would say about 4 Hours or so.

You can add Poeople you work with

Looks like this

There is also a Teams App called “Places”

Configure Buildings, Floors, Sections, Desks

Let’s list what’s configured

Get-PlaceV3 | ft

Let me create a Desk Mailbox. You can change an Exchange Online Mailbox to type “Desk” but sadly it’s not represented ind RecipientTypeDetails.

Connect-ExchangeOnline -ShowBanner:$false
$DeskMailbox = New-Mailbox -DisplayName "Desk01" -Alias "Desk01" -Name "Desk01" -PrimarySmtpAddress "Desk01@icewolf.ch" -Room
Set-Mailbox -Identity $DeskMailbox -Type Desk
Get-Mailbox -Identity $DeskMailbox | ft DisplayName, Alias, PrimarySMTPAddress, RecipientTypeDetails

You can also create an Exchange Online Mailbox of type Workspace

$WorkspaceMailbox = New-Mailbox -DisplayName "Workspace01" -Alias "Workspace01" -Name "Workspace01" -PrimarySmtpAddress "Workspace01@icewolf.ch" -Room
Set-Mailbox -Identity $WorkspaceMailbox -Type Workspace
Get-Mailbox -Identity $WorkspaceMailbox | ft DisplayName, Alias, PrimarySMTPAddress, RecipientTypeDetails

Let’s create Building, Floor, Section and Desk. You need to add the PlaceID to ParentID to create a hierarchy.

$Building =  New-Place -Type "Building" -Name "Building HQ" -Description 'Icewolf HQ Building' -CountryOrRegion "CH" -State "BE" -City "Bern" -Street "Robinsonweg 50" -PostalCode "3006"
$Floor = New-Place -Type "Floor" -Name '3' -ParentId $Building.PlaceID
$Section = New-Place -Type "Section" -Name "Main Section" -ParentId $Floor.PlaceID
$Desk = New-Place -Type "Desk" -Name "Desk01" -ParentId $Section.PlaceId -Mailbox $DeskMailbox.Alias

Let’s look at the configuration now. When Removing a Place you need to start at the bottom of your hierarchy and need to use the PlacesID. Piping from Get-Place does not work. Anyway it’s a little bit disturbing that the command is not named Remove-PlaceV3.

Get-PlaceV3 | ft

#Removing a Place
Remove-Place -Identity <PlaceID>

You can Filter the Places by diffrent types

Get-PlaceV3 -Type Building | ft
Get-PlaceV3 -Type Floor | ft
Get-PlaceV3 -Type Section | ft
Get-PlaceV3 -Type Desk | ft
Get-PlaceV3 -Type RoomList | ft
Get-PlaceV3 -Type Room | ft
Get-PlaceV3 -Type Space | ft

The old Exchange Commandlet “Get-Place” does not show Buildings, Floors and Section. I guess it will soon disappear.

Connect-ExchangeOnline -ShowBanner:$false
Get-Place

There is also another way of Configure buildings and floors

Initialize-Places

That’s how the CSV looks like

InferredBuildingName,InferredFloorName,InferredSectionName,CurrentBuildingLabel,CurrentFloorNumber,CurrentFloorLabel,PrimarySmtpAddress,Name,RoomList,ResourceType,StreetAddress,City,StateOrProvince,CountryOrRegion,Confidence
,,,,,,RoomOnPrem@icewolf.ch,SitzungszimmerOnPrem,"Roomlist BE,Roomlist BE OnPrem",Room,The Circle 38,Zürich,ZH,CH,
,,,,,,SitzungszimmerMoench@icewolf.ch,SitzungszimmerMoench,"Roomlist BE,Roomlist BE OnPrem",Room,Robinsonweg 50,Bern,BE,CH,
Building HQ,Unknown,,,,,SitzungszimmerJungfrau@icewolf.ch,SitzungszimmerJungfrau,Roomlist BE,Room,Robinsonweg 50,Bern,BE,CH,High
Building HQ,1,,,1,,SitzungszimmerCloudOnly@icewolf.ch,SitzungszimmerCloudOnly,Roomlist BE Cloud,Room,Robinsonweg 50,Bern,BE,CH,High
Roomlist ZH,Unknown,,,,,sitzungszimmer@icewolf.ch,Sitzungszimmer,Roomlist ZH,Room,Hofwiesenstrasse 369,Zürich,ZH,CH,High
Building HQ,2,,,2,,SitzungszimmerEiger@icewolf.ch,SitzungszimmerEiger,Roomlist BE,Room,Robinsonweg 52,Bern,BE,CH,High

Regards
Andres Bohren

Exchange Logo

M365 Logo

PowerShell Logo