Be careful when converting Room mailboxes, or why are messages automatically deleted

Another interesting issue I encountered on Experts Exchange: messages sent to shared mailbox were being deleted immediately after arriving in the Inbox. None of the common suspects were the cause (rules, add-ins, mobile devices, etc). The only thing left uncertain (and unverified by the author) was the automatic processing options, the ones visible/configurable via Get-CalendarProcessing/Set-CalendarProcessing.

Here are the default settings for a room mailbox:

PS C:\> Get-CalendarProcessing wc | fl @{n='Recipient Type'; e={(Get-Recipient $_.Identity).RecipientTypeDetails }}, AutomateProcessing, DeleteNonCalendarItems

Recipient Type         : RoomMailbox
AutomateProcessing     : AutoAccept
DeleteNonCalendarItems : True

Well, the important bits at least. The DeleteNonCalendarItems does what it says, but on its own, it’s a pretty harmless setting. It is actually configured to True for all mailboxes, even user ones. Yet you don’t see messages disappearing from a user mailbox, as there’s a major difference in the settings:

PS C:\> Get-CalendarProcessing vasil | fl @{n='Recipient Type';e={(Get-Recipient $_.Identity).RecipientTypeDetails}}, AutomateProcessing, DeleteNonCalendarItems

Recipient Type         : UserMailbox
AutomateProcessing     : AutoUpdate
DeleteNonCalendarItems : True

So here’s the real villain. Setting AutomateProcessing to AutoAccept means that both the Calendar Attendant and Resource Booking Attendant are enabled on the mailbox, which in turn means that some of the ‘dormant’ settings will take effect. Now, the safeguard here is that you cannot switch to AutoAccept for any non-resource mailbox. For example, trying to do so against a user mailbox will return the following error:

PS C:\> Set-CalendarProcessing vasil -AutomateProcessing AutoAccept
AutoAccept can only be enabled on resource mailboxes.
+ CategoryInfo          : InvalidData: (vasil:ADObjectId) [Set-CalendarProcessing], ResourceOnlyException
+ FullyQualifiedErrorId : [Server=DBXPR03MB617,RequestId=c3383cd0-738f-4554-a766-93d13caa6a2a,TimeStamp=4/8/2015 8:45:39 AM] [FailureCategory=Cmdlet-ResourceOnlyException] E4B882CD,Microsoft.Exchange.Management.StoreTasks.SetCalendarProcessing
+ PSComputerName        : outlook.office365.com

The same applies to Shared mailboxes as well. But there is a catch: if you convert a mailbox from Room to Shared (or user), you will end up with the AutoAccept setting configured! Here’s the proof:

PS C:\> Get-CalendarProcessing  bathroom | fl @{n='Recipient Type';e={(Get-Recipient $_.Identity).RecipientTypeDetails}}, AutomateProcessing, DeleteNonCalendarItems

Recipient Type         : SharedMailbox
AutomateProcessing     : AutoAccept
DeleteNonCalendarItems : True

So, long story short: be careful when converting mailboxes (especially if originally provisioned as room mailbox) and always double-check the settings. Might save you some head-scratching.

This entry was posted in Exchange Online, Office 365, PowerShell. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *