Gérer les listes d'adresses dans Office 365

Depuis le premier trimestre de 2013, il est possible de créer des Address Book Policy (ABPs) et des Address lists (ALs)  dans Office 365/Exchange Online. Cet article a pour but de faire la lumière les listes d’adresses dans un contexte Office 365/Exchange Online et sur ce que certains voient comme une limitation de la fonctionnalité.
Les fonctionnalités Address Book Policy (ABP) et Address lists (ALs) sont disponibles pour tous les plans Office 365 Business, Enterprise, Education, Government, Kiosk et même Standalone (Exchange Online plan 1 et 2).

La notion de segmentation devient donc applicable dans un contexte Exchange Online. La seule limitation concerne le nombre d’éléments que vous pouvez créer contrairement à un environnement Exchange 2013 on-premise.
Dans Exchange Online, vous pouvez créer par défaut 250 GALs, 250 OABs, 250 ABPs and 1000 ALs.
Pour plus d’informations sur les limitations, https://technet.microsoft.com/en-us/library/exchange-online-limits.aspx?f=255&MSPPError=-2147217396#abl.Vous pouvez imaginer par exemple, regrouper plusieurs sociétés/entités sur un même tenant Office 365 tout en ayant des GALs complètement isolées.
Ce type de scénario est à ce jour moins courant car je pense que les entreprises cherchent beaucoup plus à regrouper leurs différentes entités.
Par contre, le besoin que je rencontre le plus souvent, concerne les listes d’adresses. Une liste d’adresses (AL) vous permet de regrouper un ensemble d’objets (Contacts, Boîtes aux lettres, Salles, Ressources) suivant un ou des critères bien précis. Les listes d’adresses permettent de filtrer les objets plus facilement depuis Outlook ou Outlook Web App.

  • Création et mises à jour des listes d’adresse (ALs)

La création et la gestion des ALs, des GALs, des OABs et des ABPs se fait uniquement en PowerShell. Par défaut, aucun compte administrateur n’a les permissions nécessaires pour créer des listes d’adresses. Si vous voulez créer des ALs, des GALs, des OABs et ABPs, vous devez d'abord affecter le rôle RBAC Address Lists à vos comptes d’administration.

Les commandes Update-AddressList et Update-GlobalAddressList ne sont pas disponibles dans Exchange Online. Si vous créez des ALs ou des GALs après avoir créé les utilisateurs, les listes seront vides. Certains administrateurs voient cela comme une limitation fonctionnelle mais cela reste justifié car l’offre Offre 365 est mutualisée avec une organisation commune à plusieurs entreprises.
La solution pour éviter ce problème serait donc d’anticiper vos besoins en créant les listes avant vos utilisateurs. Dans le cas d’un provisionning via DirSync, les listes doivent être créées avant la première synchronisation.

Si pour certaines raisons, vous n’avez pas pu anticiper le besoin et que vos listes de retrouvent totalement ou partiellement vides, vous devez « titiller les comptes » concernés en mettant à jour un attribut avant de les voir apparaitre dans vos listes.

  • En pratique, ça donne quoi ?

Je ferai mes tests sur un tenant avec des utilisateurs existant.
Dans un premier temps, je vais créer une liste d'adresses contenant les boîtes aux lettres dont l’attribut CustomAttribute1 est défini à Paris.

New-AddressList -Name "BAL-Paris" -RecipientFilter {((RecipientType -eq "UserMailbox") -and (CustomAttribute1 -eq "Paris"))}

Comme vous vous en doutez, la liste est créée mais elle est vide, parce qu’elle a été créée après les utilisateurs :

Pour corriger ce problème, je vais définir ou re-définir une propriété de chacun des comptes concernés.
En utilisant le filtre de ma liste d’adresse, je vais définir une valeur dans le champ CustomAttribute5 de mes comptes (je choisis volontairement un attribut différent de celui de mon filtre).

get-mailbox | where {(($_.RecipientType -eq "UserMailbox") -and ($_.CustomAttribute1 -eq "Paris"))} |Set-mailbox -CustomAttribute5 temp

Et là, en regardant la liste d’adresses, elle a bien été mise à jour:

Je vais maintenant supprimer la valeur ajoutée temporairement à mes comptes :
get-mailbox | where {(($_.RecipientType -eq "UserMailbox") -and ($_.CustomAttribute1 -eq "Paris"))} |Set-mailbox -CustomAttribute5 $null