We all end up doing a lot of work that we don’t need to do. That’s not to say that it doesn’t need to be done–it might be a critical operation that needs to be performed, but does it need to be done by you?… [ Continue reading ]
Available for Pre-Order: Workflow Automation with Microsoft Power Automate
If you’re wondering (or even if you’re not) why I’ve been quiet on my blog lately, it’s because I’ve been furiously working trying to finish up a new book: Workflow Automation with Microsoft Power Automate.

This is a 100-level book is targeted to users new to Microsoft Power Automate and the Microsoft 365 ecosystem.… [ Continue reading ]
The MS-301 Exam Prep Guide is available for order!
It’s officially available for ordering. Woo!

You can order it at all the usual places, including Amazon and Packt!
If you’re preparing to take the exam, you can get started immediately with the electronic copies. I’ve managed to get a few teaser chapters so you can see what you’re in for.… [ Continue reading ]
AAD Connect Phone/Fax Mappings
Yesterday, while working with my colleague Michael Anderson, I needed to investigate where a particular on-premises value was being synced in AAD. The result is this table:
| AD Property | Get-MsolUser | Get-AzureADUser | Get-User | Get-CSOnlineUser | |
| Friendly name | ldapDisplayName | ||||
| Telephone number | telephoneNumber | PhoneNumber | TelephoneNumber | Phone | Phone |
| Pager | pager | – | – | Pager | – |
| Mobile | mobile | MobilePhone | – | Fax | MobilePhone |
| Fax | facsimileTelephoneNumber | Fax | FacsimileTelephoneNumber | Fax | Fax |
| IP Phone | ipPhone | – | – | – | IPPhone |
| Home | homePhone | – | – | HomePhone | HomePhone |
| {otherMobile} | {AlternateMobilePhones} | – | – | – | |
| {otherIpPhone} | – | – | – | – | |
| {otherHomePhone} | – | – | {OtherHomePhone} | – | |
| {otherFacsimileTelphoneNumber} | – | – | {OtherFax} | – | |
| {otherPager} | – | – | – | – | |
| {otherTelephone} | – | – | {OtherTelephone} | {OtherTelephone} | |
It’s important to note that values displayed in braces { } are multivalued attributes, so if there’s something stored in one on-premises that you need or want to map to a a different attribute in Azure AD, you’ll need to either map it to another multivalued attribute or extract the value so you can write it to a single-valued string attribute. … [ Continue reading ]
MS-301 is Off to the Press!
At long last! I’m super stoked to announce that I just approved the cover artwork for my upcoming MS-301 certification prep book. It’s all done but the crying!

Speaking of crying, there is a bit of sadness–we (somewhat unexpectedly, to me) announced the retirement of the MS-301 exam last month. … [ Continue reading ]
PowerShell OAuth Authentication Two Ways
This past week, I’ve been heads down working on an application to take inbound data from one application that doesn’t have a webhook or API available and query a Dynamics 365 instance.
In order to query Dynamics 365 (or any Azure/Microsoft 365 service, to be honest) successfully, you’ll need to work with OAuth. … [ Continue reading ]
Every last msExchRecipientDisplayType and msExchRecipientTypeDetails value
Or at least, every last one that I know.
Over the years, I’ve amassed quite a collection of these. Yesterday, I was helping out a colleague determine what a particular value meant and referenced a spreadsheet that I’ve been maintaining for my own purposes.… [ Continue reading ]
Using a Group Managed Service Account (gMSA) with a Power Platform Data Gateway
This week, I needed to figure out how to use a group Managed Service Account for an on-premises data gateway cluster. Our documentation says you can do it, but the traditional methods for using a gMSA (i.e., enter the user account and leave the password field blank) don’t work with our documentation for the app (currently here: https://docs.microsoft.com/en-us/data-integration/gateway/service-gateway-service-account… [ Continue reading ]
Create Teams meeting invite to allow recipients to join via web automatically
Here’s a quick tip:
For organizations that may not have rolled out the Teams client yet and may want recipients to one-click join meetings without having to interact with this page:

There’s a way. It takes a little bit of work when scheduling your meeting, but it can be done.… [ Continue reading ]
Configure Teams to Co-exist with Google Workspace
With the rise of remote work over the past several weeks (now turned months and years), I’ve engaged with many customers who want to use Microsoft Teams to as part of their work-from-home tool set. Many of my customers have investments in both Microsoft Office 365 as well as Google G Suite Workspace or Google Apps (frequently with other third-party IdP, metadirectory, and federation services thrown in the mix), so it’s not always just as easy as “flipping a switch.”… [ Continue reading ]
Teams Private Channel eDiscovery
Yesterday, I was asked about the eDiscovery process for Private Channels in Teams.
It’s a little bit hairy at the moment, so I’ve included some scripting and examples to help you out with it.
[shameless plug] I’ve adapted some of this content from one of my books, Deploying Microsoft 365 Teamwork: Exam MS-300 Guide.[/shameless… [ Continue reading ]
MS-900 Exam Guide is Here!

It sure has been a busy month! I’m still churning away on new content, but we did get this out the door: The Microsoft 365 Fundamentals MS-900 Exam guide! MS-900 is an entry level exam designed to show mastery of core cloud and Microsoft 365 technologies concepts.… [ Continue reading ]
The MS-300 Exam Prep Guide LIVES!

After several months of hard work, the team at Packt has brought this book to life! The requisite shout-outs include:
Thanks to everyone who was patient with me and supported me along the way with pizza, tacos, good vibes, and positive feedback. … [ Continue reading ]
Flashback to what it took to do math in DOS batch files
While working on a script for an upcoming project, I wanted to test for the presence of various Office versions, including 32-bit and 64-bit components before initiating setup. Here’s one way I found:
@ECHO OFF SET CURRLOCATION32="C:\Program Files (x86)\Microsoft Office\root\Office16" SET CURRLOCATION64="C:\Program Files\Microsoft Office\root\Office16" SET PREV1LOCATION32="C:\Program Files (x86)\Microsoft Office\root\Office15" SET PREV1LOCATION64="C:\Program Files\Microsoft Office\root\Office15" SET PREV2LOCATION32="C:\Program Files (x86)\Microsoft Office\root\Office14" SET PREV2LOCATION64="C:\Program Files\Microsoft Office\root\Office14" REM Check for 64-bit versions IF EXIST ""%CURRLOCATION64%\MANIFEST.XML""… [ Continue reading ]
Pre-order the MS-900 Exam Guide now!
Surprise! I have another book! It’s available for pre-order on Amazon now.

This is gonna be a busy year for me. This time, I’m collaborating with two of my peers:
Together, we’re putting together the MS-900 exam guide, chock full of things you wish you would have known the first time you took the it. … [ Continue reading ]
