Original Folder Item Recovery in Exchange is Now Available

After so much wait, with the new Exchange Updates released on June 2017, now will be possible to recover item their original folder in Exchange 2016.
However, there are still some limitations:

  1. First, to use this functionality, the user’s mailbox must be on a Mailbox server that has CU6 installed. The user must also use Outlook on the web to recover to the original folder; neither Outlook for Windows or Outlook for Mac support this functionality, today.
  2. If an item does not have an LAPEID stamped, then the item will be recovered to its folder type origin – Inbox for mail items, Calendar for calendar items, Contacts for contact items, and Tasks for task items. How could an item not have an LAPEID? Well, if the item was deleted before CU1 was installed, it won’t have an LAPEID.
  3. And lastly, this feature does not recover deleted folders. It only recovers items to folders that still exist within the user’s mailbox hierarchy. Once a folder is deleted, recovery will be to the folder type origin for that item.

I have not doubt that this will make your life easier and your end-users happier

Configure Exchange 2016 URLs During Installation

After the installation Wizard is complete, the first things you need to do is to set the Exchange URL and setup the SSL certificate to make the installation suitable for production.

The best practice is to use a generic “service” name such as OWA or WebMail (e.g. owa.domain.com) and not the server name for the URL and Certificates.
In a single server installation example we will use the following:

  • External Name: OWA
  • Internal Name: OWA
  • Server Name: Machine1
$i = "machine1"
$externalurl = "owa.domain.com"
$internalurl = "owa.domain.com"

Get-OwaVirtualDirectory -Server $i | Set-OwaVirtualDirectory -ExternalUrl https://$externalurl/owa -InternalUrl https://$internalurl/owa
Get-EcpVirtualDirectory -Server $i | Set-EcpVirtualDirectory -ExternalUrl https://$externalurl/ecp -InternalUrl https://$internalurl/ecp
Get-ActiveSyncVirtualDirectory -Server $i | Set-ActiveSyncVirtualDirectory -ExternalUrl https://$externalurl/Microsoft-Server-ActiveSync -InternalUrl https://$internalurl/Microsoft-Server-ActiveSync
Get-WebServicesVirtualDirectory -Server $i | Set-WebServicesVirtualDirectory -ExternalUrl https://$externalurl/EWS/Exchange.asmx -InternalUrl https://$internalurl/EWS/Exchange.asmx
Get-OabVirtualDirectory -Server $i | Set-OabVirtualDirectory -ExternalUrl https://$externalurl/OAB -InternalUrl https://$internalurl/OAB
Get-MapiVirtualDirectory -Server $i | Set-MapiVirtualDirectory -ExternalUrl https://$externalurl/mapi -InternalUrl https://$internalurl
Get-ClientAccessServer $i | Set-ClientAccessServer -AutoDiscoverServiceInternalUri https://$internalurl/Autodiscover/Autodiscover.xml
Set-PowerShellVirtualDirectory "$i\PowerShell (Default Web Site)" -InternalUrl ((Get-PowerShellVirtualDirectory "$i\PowerShell (Default Web Site)").ExternalUrl)
Get-OfflineAddressBook | Where {$_.ExchangeVersion.ExchangeBuild.Major -Eq 15} | Set-OfflineAddressBook -GlobalWebDistributionEnabled $True -VirtualDirectories $Null

Recreate Office365 GAL (Global Address List)

By default, it takes between 24 to 48 hours for Exchange Online to re-synchronize the address lists and all users to download the most updated information. Unfortunately, the commands available in Exchange on premise to update the Address Lists are not available in Office365 – Exchange Online.

https://technet.microsoft.com/en-us/library/aa997982(v=exchg.160).aspx

Therefore we will need to force that sync manually. Updating the Address Lists, requires requires to have the Address List Management Role. By default in Exchange online, the Address List role isn’t assigned to any role groups.

1 – Connect to Exchange Online

$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session

2 – Create a new Group Role

New-RoleGroup -Name "AddressList" -Roles "Address Lists" -Members Account@domain.com

3 – Run the Following Commands to update the lists

Get-AddressList
Set-AddressList -Identity "All users"