One of our customers wanted to have Thumbnail photo attribute configured for offline access.
- Enhance AD schema of AD attribute ThumbnailPhoto (Done by default for Exchange 2010 SP2+)
- Upload pictures via Powershell or Sharepoint
Enable ThumbnailPhoto attribute in OAB (Done by default in Exchange 2010 SP2, but only indicator to fetch data from AD online)
- Configure ThumbnailPhoto to true Offline access (change attribute Thumbnailphoto,indicator to ThumbnailPhoto,value)
The rough process is simple, but in my case there was a problem, because customer has coexistence scenario Exchange 2007 / Exchange 2010 in single AD site. In this scenario OAB has been first created in Exchange 2003 -> Then Exchange 2003 has been replaced by Exchange 2007 and after that Exchange 2007 left for business purpose (several mailboxes ) and it was extended by Exchange 2010 (Currently SP3). In this scenario OAB is missing ConfiguredAttributes (It is empty) So the process is as follows:
1. Get info about OAB
Command lists OAB and its empty attribute.
Get-OfflineAddressBook "Default Offline Address List" | fl
2. Create new OAB to see configured attributes
To be sure users will not be disrupted by the change I have created new OAB on Exchange 2010.
New-OfflineAddressBook -Name 'Default Offline Address Book + offline photo' -Server 'PF1' -AddressLists '\Default Global Address List' -PublicFolderDistributionEnabled $false -VirtualDirectories 'CH1\OAB (Default Web Site)','CH2\OAB (Default Web Site)','CH2\OAB (Default Web Site)','CH1\OAB (Default Web Site)'
3. List configured attributes
To display all attributes configured we need to use the following cmdlets:
$FormatEnumerationLimit = -1 Get-OfflineAddressBook "Default Offline Address Book*" | select name, Configuredattributes | fl
4. Change attributes
To change attributes I first read attributes to variable and adjusted ThumbnailPhoto,Indicator to ThumbnailPhoto,Value. It will phycically store ThumbnailPhoto data to OAB. Caution. This might increase network load, since OAB will increase its size based on user counts.
$attr = (Get-OfflineAddressBook "Default Offline Address Book*").configuredattributes $attr.remove("ThumbnailPhoto,Indicator") $attr.Add("ThumbnailPhoto,Value")
5. Import to OAB
To import modified set of attributes to OAB use:
Set-OfflineAddressBook "Default Offline Address Book*" -ConfiguredAttributes $attr
6. Update OAB and Check OAB
To generate new OAB and distribute it accross WEB distribution points use:
Get-OfflineAddressBook "Default Offline Address Book*" | Update-OfflineAddressBook
Restart Microsoft Exchange File Distribution service on each previously configured distribution points
7. Set generation time
Set-OfflineAddressBook -Schedule 'Sun.5:00 AM-Sun.6:00 AM, Mon.5:00 AM-Mon.6:00 AM,Tue.5:00 AM-Tue.6:00 AM, Wed.5:00 AM-Wed.6:00 AM, Thu.5:00 AM-Thu.6:00 AM, Fri.5:00 AM-Fri.6:00 AM, Sat.5:00 AM-Sat.6:00 AM' -Identity '\Default Offline Address Book + offline photo'
8. Assign OAB to mailboxes
I selected a method to assign OAB for each mailbox database. Each mailbox inside database, which doesnt have explicitly defined OfflineAddressBook parameter will get the one from database. Exchange Information Store is using cache so changes will be visible after up to 2 hours of actual setting of database. To perform changes immediately you shoud dismount / mount database, where change must be visible immediately. Command:
Get-DailboxDatabase MDB* | Set-MailboxDatabase -OfflineAddressBook "Default Offline Address Book + offline photo"
9. Download new OAB to mailbox via Outlook
You should check autodiscover record if OAB URL changed from old one to new one.
10. Test offline access
After OAB is successfuly downloaded turn on Offline access and test if OAB can be opened and if Thumbnail photo is visible.
Exchange blog article
Works for Exchange 2013 as well.