Power BI for Exchange Migrations

Are you planning or in the beginning stages of an Exchange migration?

Exchange to Exchange Online migrations are very complex. There are many factors that need to be considered, users, technical details, VIPs and project champions., etc..

My goal is to help in some areas of migrations that are constant across migrations to Exchange Online using Power BI.

How can you utilize Power BI with Exchange Migrations? First we need to start with Power BI.

Power BI is not just an application but a cloud analytics service. It allows users to visualize and analyze data quickly. It has a easy and user friendly interface that lowers the bar for entry for new users. Where things get a bit complex is when trying to sort out licensing. I have a blog post that explains at length licensing and the different versions of Power BI.

Power BI Key Features

The ability to import data from a plethora of sources, especially other non-Microsoft services, including but not limited to the following.

    • Azure Data Lake
    • Azure Cosmos
    • Azure Blob
    • Salesforce
    • Facebook
    • Dynamics
    • QuickBooks Online
    • Zendesk
    • Google Analytics
    • Excel
    • Access Databases
    • SQL/MySQL
    • PostgreSQL
    • GitHub
    • JSON
    • Folders
    • SharePoint
    • XML
    • Teradata
    • Oracle
    • IBM DB2 Database
    • IBM Informix (Beta)
    • IBM Netezza
    • Amazon Redshift
    • Google Big Query
    • OData Feed
    • R Script

 

 

 

 

 

Now to the fun stuff!

The list below contains some of the primary areas that are difficult to extrapolate but are crucial to migrations. Gaining visibility adds a level of clarity certain to ensure your migration runs smoothly. The following list is are the areas that I will be focusing on.

    • Mailbox Delegations
    • Mailbox Sizes
    • Mailbox Item Counts
    • Migration Waves

We can create basic reports that can accomplish the following.

First, we will need to export data.

Export all of the mailbox permissions with the following Exchange PowerShell code.

Get-Mailbox -ResultSize unlimited | Get-MailboxPermission | Select Identity,User,@{Name='Access Rights';Expression={[string]::join(', ', $_.AccessRights)}} | Export-Csv MailboxPermissions.csv –NoTypeInformation

Next, we export all of the mailbox sizes.

Get-Mailbox -ResultSize unlimited | Get-MailboxStatistics | Select-object DisplayName, ItemCount, @{expression={$_.TotalItemSize.Value.ToMB()};Label="SizeInMB"} | export-csv MailboxSizes.csv -Notypeinformation

Now, that we have the data we need to import it in to Power BI Desktop. There is a lot of data wrangling required. The data wrangling will vary depending on naming schemes, etc., but this Power BI template can serve as a guide. Simply download the file and change the source location of the data to where you stored the files that were created.

Prior to creating reports, you will need to download the visualizations from the Microsoft Marketplace.  I used the Bubble Chart by Akvelon and the Network Navigator Chart which is from Microsoft.

The video below will show the basic reports that you can create.

This methodology can be applied to shared mailboxes, which is what let me to developing these reports. I have an old post here. Hopefully the creativity juices are flowing and you will apply Power BI visualizations to many other areas.

Exchange Migrations with Power BI Help

When migrated users in Exchange it is imperative to ensure that shared mailboxes are migrated along with its assigned users or the permissions will not work. When migrating, it is always good to get a grasp on how many Shared mailboxes are in the organization. What a better way than by using Power BI Visualization to help in understanding the magnitude of the task at hand. The results are simple and intuitive.

I like to use the Bubble Visualization created by Dharminder Kumar Dhanda located here. This visualization encodes data in circles. In this application the bigger the bubble the more users have access to the shared mailbox. Thank you Mr. Dhanda for sharing your custom visualization with the Power BI Community.

Now to the guide!

First we need the CSV, from the exchange management shell we run the following command.

Get-Mailbox -resultsize unlimited | Get-MailboxPermission | where {$_.user.tostring() -ne "NT AUTHORITY\SELF" -and $_.IsInherited -eq $false} | Select Identity,User,@{Name='Access Rights';Expression={[string]::join(', ', $_.AccessRights)}} | Export-Csv mailboxpermissions.csv -NoTypeInformation

Next, we need to load the CSV as a data set.

Get Source Data

2

Once you have chosen the file you will notice that the column names do not match. We will fix this issue on the next step.

Select Edit.  3

Now we will need to select Transform and select Use First Row As Headers.

4

Below the headers have been corrected but our Access Rights column has unwanted data. In this case its not much but in some cases its messy.

5

We will cleanse our data by using the Split Column feature.

6

We will use the Comma as the delimiter and split using the “At the left most delimiter” option.

7

After the split occurs you will notice two things.

  • There is an additional column that contains the additional data.
  • The original Access Rights column has been renamed.

We do not need the new column thus it can be removed. Ensure you review the column carefully, sometimes the first feature is not “FullAccess” but “DeleteItem”, this seems to happen randomly and it not immediate noticeable. This can be corrected by filtering and using the “Does not Equal” filter on the “DeleteItem”.

8

The next step is to close and apply the changes.

9

The data is now fit for our reporting. The Query window will close and the Reporting window becomes the active window. While in the reporting window please import the visualization we downloaded at the beginning of this guide.

10 11 12 13

Once the new visualization has been imported, select it and it will appear on the reporting window.

14

From the reporting window chose the Mailbox column as the first feature then the users as the values feature.

15

Lets change the Title!

Change Title

We should see some progress now! At this point we can see the mailbox name and if we select it the number of users will access is displayed.

That is pretty exciting but we want to know who these users with access are. We can accomplish this by using the built in Matrix Visualization.

17

For the Matrix Visualization we must ensure that Mailbox feature is first then the User feature 2nd in the Rows section.

 

18

Now we can see the users that pertain to the Mailbox select or we can view them all at once.

19

Another option is to add a slicer which would allow the selection of more than one Mailbox at once for those who like to select multiple mailboxes at once.

This guide can be adapted for Public Folders, etc.

I hope this guide is useful and aid in communicating to peers, layman and of course the corporate folks.

 

Best PowerShell Exchange Health Report

Tools

There are many exchange tools on the web but this has been the most useful I have ever encountered. It provides a the bulk of what you need to know about an exchange organization. Every exchange admin should have this in their toolbox. Its called the Exchange Environment Report, it was developed by Steve Goodman Microsoft MVP.

This Report is like a Swiss Army Knife of reports.  It provides a comprehensive view on the exchange organization, from roles to database health, backup information, DAGS, mailbox counts, etc.. it includes this and more!

Enough bragging about it, you can get more information and a copy at Steve’s website or a direct download here. I would like to thank Steve for writing this awesome tool. Don’t forget to send him a message on Twitter!