Whiteboard Nears End of Transition to OneDrive

Updated Clients and Sharing with External Users in Meetings Coming

As you probably know, as part of a major revamp for the application, Whiteboard is moving its storage for its boards from Azure to OneDrive for Business. According to Microsoft 365 roadmap item 66767, general availability happened in December 2021. This refers to tenants who decided to opt-in early, or for tenants who decide to switch through the Whiteboard settings in the Microsoft 365 admin center.

OneDrive became the default for storage of new boards in January 2022. According to Message center notification MC275235, the updates for Whiteboard clients that can’t yet support OneDrive should be available by the end of March. Once the updated clients are deployed, the transition should complete.

Sharing Whiteboard with External Users

Further good news comes in Microsoft 365 roadmap item 66759, which says that external participants in Teams meetings will be able to share boards. A dependency exists on OneDrive for Business as the new feature only works when the board being shared is in OneDrive. If not, Teams displays the polite but extremely frustrating error message shown in Figure 1. People just love being locked out of collaboration, so it’s good that Microsoft is fixing this problem.

Teams can't share a whiteboard in a meeting with external users
Figure 1: Teams can’t share a whiteboard in a meeting with external users

The Sad State of Whiteboard PowerShell

You might not know that Whiteboard supports PowerShell. Well, it does, but only just. A bare-bones module (WhiteboardAdmin) is available in the PowerShell gallery, but it doesn’t contain many cmdlets.

Get-Command -Module WhiteboardAdmin

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Get-Whiteboard                                     1.5.0      WhiteboardAdmin
Function        Get-WhiteboardOwners                               1.5.0      WhiteboardAdmin
Function        Get-WhiteboardSettings                             1.5.0      WhiteboardAdmin
Function        Get-WhiteboardsForTenant                           1.5.0      WhiteboardAdmin
Function        Invoke-TransferAllWhiteboards                      1.5.0      WhiteboardAdmin
Function        Remove-Whiteboard                                  1.5.0      WhiteboardAdmin
Function        Set-WhiteboardOwner                                1.5.0      WhiteboardAdmin
Function        Set-WhiteboardSettings                             1.5.0      WhiteboardAdmin

Not many people have downloaded the module either, possibly because they don’t know of its existence. I’ve used the Invoke-TransferAllWhiteboards cmdlet in the past to transfer ownership of boards from one user account to another (a task sometimes necessary if someone leaves the organization), but I have not played with the other cmdlets.

Reporting Whiteboards with PowerShell

That is, until I noticed a tweet about a new script available in the PnP Script Samples gallery to create a report about all the boards and their owners in a tenant. The script uses the old Microsoft Online Services (MSOL) module to retrieve user information. Microsoft plans to deprecate the MSOL module at the end of 2022, so it’s a good example of a script that needs to be updated to use either Microsoft Graph queries or cmdlets from the Microsoft Graph PowerShell SDK.

Upgrading the script didn’t take much time because the only calls are to load the module and retrieve details of user accounts. My version of the code is shown below. Apart from using the Microsoft Graph PowerShell SDK, the only changes I made replaced output arrays with PowerShell lists to improve performance.

ReportWhiteBoardInfo.PS1
# Import the WhiteboardAdmin module
Import-Module WhiteboardAdmin
# Connect to the Microsoft Graph
Connect-MgGraph -TenantId $TenantId -Scope "Directory.Read.All, User.Read.All"

try {
	$dateTime = (Get-Date).toString("dd-MM-yyyy")
	$fileName = "WhiteboardReport-" + $dateTime + ".csv"
	$outputView = "c:\temp\" + $fileName
	
	# The geography to look for board owners in. Accepted values are: Europe, Australia, or Worldwide (all boards not in australia or europe).
	$supportedGeographies = @("Europe", "Australia", "Worldwide")
	
	# Array to hold Whiteboard owners
	$WhiteboardOwners = [System.Collections.Generic.List[Object]]::new(); $i=0

	foreach ($geography in $supportedGeographies) {
		Write-Host "Getting Whiteboard owners for geography: $($geography)..."
		$GeographyOwners = Get-WhiteboardOwners -Geography $Geography		
		
		foreach ($UserId in $GeographyOwners.items) {	
              $User = Get-MgUser -UserId $UserId
              $i++
              $ReportLine  = [PSCustomObject][Ordered]@{
                DisplayName     = $User.DisplayName
                UPN             = $User.UserPrincipalName 
                Geography       = $Geography
                UserId          = $UserId
               }
            $WhiteboardOwners.Add($ReportLine) 

		} # End ForEach Owner
		
		Write-Host "Total whiteboard owners found so far $($i)"
	} # EndForEach Geography
	
	# Array to hold Whiteboard details
	$Whiteboards = [System.Collections.Generic.List[Object]]::new()
	
	# Get whiteboards from the Microsoft Whiteboard service by owners
	foreach ($Owner in $WhiteboardOwners) {
		Write-Host "Getting Whiteboards for owner: $($Owner.UPN) ..."
		$whiteboardInfo = Get-Whiteboard -UserId $Owner.UserID
		
		foreach ($whiteboardInstance in $whiteboardInfo) {   
              $ReportLine  = [PSCustomObject][Ordered]@{
                User            = $Owner.DisplayName
                UPN             = $Owner.UPN
                WhiteboardId    = $whiteboardInstance.Id
                Title           = $whiteboardInstance.Title
                IsShared        = $whiteboardInstance.IsShared
                Created         = Get-Date($whiteboardInstance.CreatedTime) -format g
                Modified        = Get-Date($whiteboardInstance.LastModifiedTime) -format g
                Geography       = $Owner.Geography
                UserId          = $Owner.UserId
               }
           $Whiteboards.Add($ReportLine)             
       } #End Foreach Whiteboards
    	
	    Write-Host "Found $($whiteboards.Count) Whiteboards owned by: $($Owner.UPN)"
	} # End Foreach Whiteboard owners
	
	Write-Host "Found $($whiteboards.Count) Whiteboards in the tenant."

# Export the results to a CSV file and Out-GridView
	$Whiteboards | Export-CSV -Path $outputView -Force -NoTypeInformation
$Whiteboards | Out-GridView	
	Write-Host "Finished"
}
catch {
    Write-Host -f Red "Error:" $_.Exception.Message
}

You can download the script from GitHub. I’ll update the code there when I see a fix for the problem I’m just about to describe.

No Trace of Boards Stored in OneDrive

All worked well and the script generated a report (Figure 2 shows some of the report data viewed through the Out-GridView cmdlet).

Reporting whiteboards and their owners
Figure 2: Reporting whiteboards and their owners

The problem is that the report doesn’t include any whiteboard stored in OneDrive for Business. Microsoft released Version 1.5 of the WhiteboardAdmin module a month ago, but it’s obvious that the cmdlets only work against the Azure storage and ignore the transition to OneDrive.

Microsoft’s documentation doesn’t cover migration of old boards from Azure to OneDrive. However, Microsoft 365 roadmap item 66763 covers migration of previously created boards with general availability in April 2022. The text says: “Tenants in locations that are currently storing new whiteboards in European datacenters will have previously created whiteboards migrated to European datacenters.”

This masterpiece of obfuscation implies that Microsoft plans to migrate old boards currently stored in U.S. datacenters to European datacenters, where hopefully the data will end up in OneDrive for Business. Perhaps this is a pointer to a more widespread migration. Let’s hope that this happens, and that Microsoft upgrades the WhiteboardAdmin module to deal with OneDrive.


Learn more about how the Office 365 applications really work on an ongoing basis by subscribing to the Office 365 for IT Pros eBook. Our monthly updates keep subscribers informed about what’s important across the Office 365 ecosystem.

One Reply to “Whiteboard Nears End of Transition to OneDrive”

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.