Address Lists are a way to create an additional “view” within the Global Address List (GAL) based on a set of mailboxes attributes.
As an example, perhaps you want to create a view for everyone with the “Office” of “Headquarters”. This new Address List would appear as an additional dropdown in both Outlook and OWA. Address Lists are also part of Address Book Policies (ABPs) should you want to have actual segmentation of your GAL.
However, with Exchange Online, there is a small issue with Address Lists that can make them challenging to work with.
An interesting limitation in Exchange Online is that there is no “Update-AddressList” cmdlet. So if your users are already provisioned in your Office 365 tenant (which will nearly always be the case) and you go create an Address List, the contents of the Address List are never updated until there is a change made to every object that should be in scope.
When I first experienced this issue, I ran across a blog post by the Exchange Team with the entertaining suggestion to “tickle” the mailbox. Yes, “tickle”.
For the purposes of this article, we’ll use this completely unofficial definition that I’ve made up:
Try to stay with me through the rest of this ridiculousness, I promise not to mention a certain furry red Sesame Street character…
Time to “Tickle”
Important to note is that in an Exchange Online environment that is using Directory Synchronization, nearly all the attributes are authored on-premises and synchronized to the cloud.
So to “tickle” a mailbox would mean doing the following:
- Finding an attribute that could be changed (e.g. an extension attribute)
- Change the attribute for all mail objects
- Initiate a directory sync
- Change the attribute back for all mail objects
- Initiate a directory sync
After all this, your Address List would now show the proper members.
Microsoft eventually released a KB article (KB2955640) that describes the above process (minus any reference of “tickling”).
A Better Way…
I’m not a fan of using attributes in ways they weren’t designed or implementing “hacks” that are subject to change with future functionality but this situation had me wonder if there was a way to at least shorten this ugly process.
While most attributes are authored from your on-premises Active Directory, there are a few that can be written directly in the cloud. If we “tickled” the mailbox with one of these attributes, it would remove the directory sync requirement.
Of the list of attributes that can be written directly in the cloud, I wanted to make sure it would be relatively non-impactful if something went wrong. It’s probably not a good idea to play with any of the litigation hold attributes as it would be difficult to explain all this “tickling” as part of conversations with your corporate legal.
The value I settled on was “SimpleDisplayName”. This attribute exists on mailboxes, mail users and distribution groups; in most cases this attribute will have a null value. It also seems to have an interesting behavior in that just setting it to its original value still seems to trigger an update.
So in the interest of continuing this “tickling” silliness, I have put together a quick “Tickle-MailRecipients” script. Running this script in Exchange Online will take the existing “SimpleDisplayName” value for all mailboxes, mail users and distribution groups and write it back to the object, thus forcing an update of any Address Lists.
I’ve skipped over the process of actually creating an Address List; if you’ve found this article, you’ve probably already figured that out. If not, checkout Tony Redmond’s article for the process on creating an Address List and be sure to note the RBAC requirement. You should also be aware of the limitations around Address Lists in Exchange Online.
The script for this post can be found in the Microsoft Script Center at the following link: Tickle-MailRecipients.ps1
- Address Lists can be a useful way to provide additional filtered views of the GAL.
- In Exchange Online, Address Lists have the unexpected behavior of not populating at creation.
- Lack of an “Update-AddressList” cmdlet means objects need to be “tickled”.
- The “SimpleDisplayName” attribute is not synchronized from on-premises AD and is authored in the cloud.
- A form of the word “tickle” has been used 12 times in this article. …well, now 13.
Did you find this article helpful?
Leave a comment below or follow me on Twitter (@JoePalarchio) for additional posts and information on Office 365.
Looking to do some more reading on Office 365?
Catch up on my past articles here: Joe Palarchio.