Exchange Online Migration: Deprecation of BadItemLimit and use of Data Consistency Score

Hi All,

If you are a frequent Reader of the Exchange Team Blog, then you probably saw, that they announced to depreciate Bad Item Limit (BIL) and Large Item Limit (LIL) until end of 2022.

Let’s see that in Action

Connect-ExchangeOnline
$ONPREMCREDS = get-credential "CORP\Administrator"

Let’s create a MoveRequest with the BadItemLimit Parameter. You see there is a warning.

How to delete MAPI Permission if Remove-MailboxFolderPermission does not work

Hi All,

Today i helped a Collegue with an Exchange Online Folderpermission Problem. He could not remove the Permissions from a Mailbox Folder (MAPI Permission).

Get-MailboxFolderPermission -Identity email@domain.tld:\Kalender | fl

Let’s remove the User (In fact a Mail Enabled Security Group)

Remove-MailboxFolderPermission -Identity email@domain.tld:\Kalender -User CH_DE_Room_Equipment_Reviewer

This resulted in the following Error: Microsoft.Exchange.Management.StoreTasks.UserNotFoundInPermissionEntryException | There is no existing Permission entry found for user

I’ve grabbed MFCMAPI from Stephen Griffin.

Microsoft Teams FeedbackPolicy

Hi All,

Do you know that there is a Feedback Policy in Microsoft Teams?

Connect-MicrosoftTeams
Get-CsTeamsFeedbackPolicy

Let’s enable FeatureSuggestions on the Global Policy

Set-CsTeamsFeedbackPolicy -Identity Global -EnableFeatureSuggestions $True
Get-CsTeamsFeedbackPolicy

Let’s see all the Policies for my User. Teams Feedback Policy is blank - that means that the Global Policy will be applied

Get-CsOnlineUser -Identity a.bohren@icewolf.ch | fl *pol*

You can’t see that Policy in Teams Admin Center (TAC)

How to Fix "WorkHoursVersion1 is null" in Exchange Online

Hi All,

I’ve performed a lot of Exchange Online Migrations this Year.

After the Mailbox was migrated i did run a Post Migration Script to set some Setting on the Mailbox like:

Set-MailboxRegionalConfiguration -Identity $UPN  -TimeZone "W. Europe Standard Time" -DateFormat "dd.MM.yyyy" -TimeFormat "HH:mm" -Language "de-CH" -ErrorAction Stop
Set-MailboxCalendarConfiguration -Identity $UPN -WeekStartDay Monday -WorkDays Weekdays -WorkingHoursStartTime 08:00:00 -WorkingHoursEndTime 17:00:00 -WorkingHoursTimeZone "W. Europe Standard Time" -ShowWeekNumbers $True -ErrorAction Stop

In some cases there where this Error: “WorkHoursVersion1 is null”

Jabra Evolve 65 SE

Hi All,

Yesterday my Jabra Evolve 65 Headset broke down.

It had served me for several years. The leather Polster of the earprotection already ripped - but was fixed with glue.

Now it was time to order a new one. As i was happy with the Headset i ordered the same again.

It was delivered this morning. All that was left do do is charge the Battery and update the Firmware of the Headset and the Bluethooth Dongle.

Exchange Online - Other ways of Testing IMAP OAuth2 Client Credential Flow

Hi All,

I write this Blog Article in Addition to the Exchange Online POP and IMAP OAUTH 2.0 Client Credentials Flow

I tried out other ways of testing

First we need to get the Access Token

###############################################################################
# Get Access Token with MSAL
###############################################################################
Import-Module MSAL.PS
$AppID = "3bf0cf36-87bf-47a9-927b-0ef9df7cf146"
$TenantID = "icewolfch.onmicrosoft.com" 
$ClientSecret = ConvertTo-SecureString "YourClientSecret" -AsPlainText -Force
$Scope = "https://outlook.office.com/.default"
Clear-MsalTokenCache
$Token = Get-MSALToken -ClientId $AppID -ClientSecret $ClientSecret -TenantId $TenantID -Scope $Scope
$AccessToken = $Token.AccessToken

ExchangeOnlineManagement 3.1.0-Preview2 released

Hi All,

Yesterday the ExchangeOnlineManagement 3.1.0-Preview2 PowerShell Module has been released to the PowerShell Gallery.

A few REST API cmdlets in Exchange Online PowerShell have been updated with the experimental UseCustomRouting switch. This switch routes the command directly to the required Mailbox server, and might improve overall performance.

When you use the UseCustomRouting switch, you can use only the following values for identity of the mailbox:

  • User principal name (UPN)
  • Email address
  • Mailbox GUID

The UseCustomRouting switch is available only on the following REST API cmdlets in Exchange Online PowerShell:

Microsoft.Graph PowerShell Module 2.0.0-preview2 released

Hi All,

Just a few Hours ago, Microsoft has released Microsoft.Graph 2.0.0-preview2 PowerShell Modules to the PowerShell Gallery.

With the 2.x Version of the Module there has been changed a lot

Breaking Changes:

  • Drops profile support (Select-MgProfile) in favor of independent v1.0 and beta modules.
  • Drops support for -ForceRefresh on Connect-MgGraph.
  • Renames beta command names from <Verb>-Mg<Noun> to <Verb>-MgBeta<Noun>.
  • Changes beta namespace from Microsoft.Graph.PowerShell.Models.<Entity> to Microsoft.Graph.Beta.PowerShell.Models.<Entity>.
  • Changes -AccessToken type on Connect-MgGraph from String to SecureString.

New Features and Improvements:

Azure AD Dynamic Groups

Hi All,

Azure AD Dynamic Groups allows you to create Security Groups or M365 Groups/Teams that add Members based on Attributes. Like already known in Exchange with Dynamic Distribution Groups for a long time.

Create or update a dynamic group in Azure Active Directory

Go to Azure AD and create a new Group. Select your group Type: Security or Microsoft 365 Group / Teams

Then select the Membership Type: Assigned, Dynamic User, Dynamic Device

Exchange Online POP and IMAP OAuth 2.0 Client Credentials Flow

Hi All,

OAuth 2 Authentication for POP and IMAP was announced already back in June 2022 at the Exchange Team Blog.

There is a pretty decent Step-by-step Guide here. But there are some steps missing - that’s why i have created a more detailed Guide.

As a personal Opinion: I don’t like this POP/IMAP approach. If you as a developer are able to change your existing Code for the Authentication and Token handling - you have already done 50% of the Job. It’s easy to do the rest via Graph Calls - check out mit GitHub Repo for Examples of that https://github.com/BohrenAn/GitHub_PowerShellScripts/blob/main/ExchangeOnline/GraphAPI/ExOGraphAPI.ps1