samedi, avril 20, 2024

Le Blog de Teamy

En route pour l'école 2.0 avec Microsoft 365 Education

ExchangeMicrosoft 365PowerShell

Organisation et réservation des salles de réunions


Ha qu’il est compliqué d’organiser une solution de gestion des salles au sein de mon organisation !! Lorsque je souhaite organiser une réunion je me pose toujours les mêmes questions.
Quelle salle est disponible ? Quelle est la capacité de cette salle ? Où se situe-t-elle ? Quels équipements aurais-je ? Est-elle accessible aux personnes à mobilité réduite ?

La plateforme M365 offre la possibilité de mettre en place des boites aux lettres de ressources affectée à un emplacement physique, comme une salle de conférence, un auditorium ou une salle de formation.
Grâce aux boîtes aux lettres de salle, les utilisateurs peuvent réserver facilement ces salles en incluant des boîtes aux lettres de salle dans leurs demandes de réunion.

En parallèle à ces éléments, M365 vous propose de définir des espaces de travail qui permettront à vos utilisateurs d’identifier plus facilement vos différentes salles. Ces espaces de travail pourront contenir des informations utiles, comme la localisation et l’équipement disponible, afin de choisir la salle la plus adaptée à votre réunion.

Et pour terminer, vous avez l’occasion de regrouper vos salles pour créer des unités de type ‘Bâtiment’, toujours dans l’optique de faciliter le choix de l’utilisateur quand il doit faire une réservation de salle.

L’organisation de vos salles nécessite donc d’appréhender cinq concepts complémentaires
– La création des salles de réunions
– La mise en place d’espace pour décrire pleinement vos salles
– La mise en place de stratégies de réservations
– Désigner des gestionnaires des agendas de réservation
– La construction de Bâtiments pour une organisation optimale de vos salles

Il est important d’avoir une configuration complète des salles, car Outlook offre des fonctionnalités avancées pour rechercher des salles en fonction de vos besoins

Description de mon établissement

Léo Collard
Bâtiment Principal, on y retrouve l’ensemble des classes, ainsi que les locaux  administratifs.  On y trouve au rez-de-chaussée, 3 salles de réunions (Paris, Bruxelles, Amsterdam) et 2 salles de formations avec des TBI (Einstein et Copernic)

JC Vandamme
Un hall Omnisport, avec notre salle des sports et son équipement complet.  Au 1er étage, nous avons 2 grandes salles de conférences (Kalahari et Nyiri)

La Rotonde
Un bâtiment dédié principalement à notre cantine et notre bibliothèque.  Au 1er étage, nous avons 5 petites salles de travail pour les projets en commun de nos étudiants ou professeurs
Bulle 1, Bulle 2, Bulle 3, Bulle 4 et Bulle 5

Voici un tableau descriptif complet de nos différentes salles
*PMR = Personne Mobilité Réduite

Ce tableau est sauvegardé, sur mon bureau, dans un fichier de type CSV, que je vous propose en téléchargement
Un fichier csv est un fichier texte dont les données sont séparées par un délimitateur (ici le point-virgule) qui peut être manipulé par Excel

Création des salles

Nous pourrions créer nos salles manuellement via la console d’administration M365, mais je préfère utiliser un script PowerShell, plus rapide à mon sens, surtout si on a beaucoup de salles à créer.  Je vais pour cela utiliser l’outil ‘Windows PowerShell ISE’ en mode administrateur

La création de boites mails de type salles nécessite d’installer le module Exchange Online sur le poste qui va exécuter votre script
Install-Module « ExchangeOnlineManagement » -Repository PSGallery -AllowClobber -Force
Import-Module « ExchangeOnlineManagement »

Cette opération ne doit être exécuté qu’une seule fois

Script de création des salles
Il faut être administrateur Exchange pour exécuter ce script
Merci de vérifier le chemin d’accès à votre fichier csv ($csvFileSource)

				
					#Chargement du fichier cvs contenant la déinfition de mes salles
$csvFileSource = "C:\Users\arnau\Desktop\Mes salles.csv"
$rooms = Import-Csv -Path $csvFileSource -Delimiter ";" -Encoding UTF7


#Connexion à Exchange Online
Connect-ExchangeOnline 

#Creation des salles
foreach ($room in $rooms)
{
    $RoomDisplayName = $room.Nom
    $Capacity = $room.Capacité
    $Office = $room.Lieu

    #check if room is already exists
    if((Get-MailBox -Filter '(Name -eq "$RoomDisplayName")' | Where {$_.ResourceType -eq "Room"}).Count -eq 0)
    {
        Write-Host "$RoomDisplayName Room Not Found - Create New Room" -ForegroundColor Red
        New-Mailbox -Name $RoomDisplayName -DisplayName $RoomDisplayName -Office $Office -ResourceCapacity $Capacity -Room
        
    }
    else
    {
        Write-Host "$RoomDisplayName Room Found - Update Room Settings" -ForegroundColor Green
        Set-Mailbox -Identity $RoomDisplayName -Office $Office -ResourceCapacity $Capacity 
        
    }         
}
				
			

Création des espaces

Maintenant nous allons mettre à jour le détail des salles, pour profiter des outils de recherche de salles dans Outlook (RoomFinder)
On parle ici de capacité, de localisation, d’équipements, de description, d’accessibilité

Voici le script pour cette mise à jour, qui se base toujours sur mon fichier CSV initial

				
					#Chargement du fichier cvs contenant la déinfition de mes salles
$csvFileSource = "C:\Users\arnau\Desktop\Mes salles.csv"
$rooms = Import-Csv -Path $csvFileSource -Delimiter ";" -Encoding UTF7

#Fonction convertissant une valeur texte en booléen
function ConvertTo-Boolean
{
  param
  (
    [Parameter(Mandatory=$false)][string] $value
  )
  switch ($value)
  {
    "y" { return $true; }
    "oui" { return $true; }
    "yes" { return $true; }
    "true" { return $true; }
    "t" { return $true; }
    1 { return $true; }
    "n" { return $false; }
    "no" { return $false; }
    "non" { return $false; }
    "false" { return $false; }
    "f" { return $false; } 
    0 { return $false; }
  }
}


#Connexion à Exchange Online
Connect-ExchangeOnline 

#Création des espaces
foreach ($room in $rooms)
{
    $RoomDisplayName = $room.Nom
    $Capacity = $room.Capacité
    $Building = $room.Batiment
    $Office = $room.Lieu
    $Street = $room.Adresse
    $City = $room.Ville
    $PostalCode = $room.'Code Postal'
    $Floor = $room.Etage
    $FloorLabel = $room.'Etage Libellé'
    $Description = $room.Description

    $IsWheelChairAccessible = ConvertTo-Boolean $room.PMR
    $AudioDeviceName = if($room.Audio -eq "") {$null} else {$room.Audio}
    $VideoDeviceName = if($room.Video -eq "") {$null} else {$room.Video}
    $DisplayDeviceName = if($room.Screen -eq "") {$null} else {$room.Screen}

    $roomMailBox = Get-MailBox -Identity $RoomDisplayName
   
    #Set Room Place Information
    Write-Host "----------------------------------------------------------------------------"
    Write-Host "Set Room $RoomDisplayName Place Infomration"
    Set-Place -Identity $RoomDisplayName -Building $Building -Capacity $Capacity -City $City -PostalCode $PostalCode -Street $Street -IsWheelChairAccessible $IsWheelChairAccessible  -AudioDeviceName "$AudioDeviceName" -VideoDeviceName "$VideoDeviceName" -DisplayDeviceName "$DisplayDeviceName" -Floor $Floor -FloorLabel $FloorLabel  -Tags "$Description"
}

				
			

Stratégie de réservation des salles

Nous pouvons imaginer différents scénarios de réservation, mais ici je vais faire au plus simple. Je considère que tout le monde dans mon établissement peut, lorsqu’il organise une réunion, réserver une des salles disponibles sans qu’il y ait un mécanisme de validation. Par contre, je n’accepte pas qu’il y ait des réservations conflictuelles sur une salle

Si vous voulez consulter d’autres types de stratégies, je vous invite à consulter la documentation officielle.
Set-CalendarProcessing (ExchangePowerShell) | Microsoft Learn

Voici mon script

				
					#Chargement du fichier cvs contenant la déinfition de mes salles
$csvFileSource = "C:\Users\arnau\Desktop\Mes salles.csv"
$rooms = Import-Csv -Path $csvFileSource -Delimiter ";" -Encoding UTF7
clear

#Connexion à Exchange Online
Connect-ExchangeOnline 

#Définition des stratégies de réservation
foreach ($room in $rooms)
{
    $RoomDisplayName = $room.Nom

    #Mise en place de la stratégie de réservation des salles
    Set-CalendarProcessing -Identity $RoomDisplayName -AutomateProcessing AutoAccept -DeleteComments $true -AllowConflicts $false -AddOrganizerToSubject $false
    
}
				
			

Gestionnaires des agendas de réservation

Il va certainement se produire des évènements conflictuels. Par exemple, des réservations prioritaires à faire alors qu’une salle est déjà réservée.
Il va donc falloir définir des utilisateurs qui peuvent gérer manuellement l’agenda de réservation des salles. Que ce soit un administrateur IT, ou une secrétaire de mon école, il est fortement conseillé de permettre à certains utilisateurs de gérer ces agendas de réservations manuellement. Histoire de faciliter cette gestion, je vais utiliser un groupe de sécurité à extension de messagerie ‘RoomBookingManagers’. Ainsi il me suffira d’ajouter ou retirer des utilisateurs de ce groupe pour octroyer les droits de gestion sur les agendas de réservation de mes salles.

				
					#Chargement du fichier cvs contenant la définition de mes salles
$csvFileSource = "C:\Users\arnau\Desktop\Mes salles.csv"
$rooms = Import-Csv -Path $csvFileSource -Delimiter ";" -Encoding UTF7
clear

#Connexion à Exchange Online
Connect-ExchangeOnline 

#Définition des gestionnaires de salles
foreach ($room in $rooms)
{
    $RoomDisplayName = $room.Nom

    $roomMailBox = Get-MailBox -Identity $RoomDisplayName
    $roomCalendarFolder = $roomMailBox.PrimarySmtpAddress + ":\Calendar"

    #Mise en place de la stratégie de réservation des salles
    Add-MailboxFolderPermission -Identity "$roomCalendarFolder" -User "RoomBookingManagers" -AccessRights Owner
    
}
				
			

Organisation des Bâtiments

Nous allons maintenant définir nos bâtiments et y ajouter nos salles, afin d’avoir un outil de recherche de salle dans Outlook le plus optimal possible.
Nos 3 groupes, à créer, sont :
– Leo Collard
– JC Vandamme
La Rotonde

				
					#Chargement du fichier cvs contenant la définition de mes salles
$csvFileSource = "C:\Users\arnau\Desktop\Mes salles.csv"
$rooms = Import-Csv -Path $csvFileSource -Delimiter ";" -Encoding UTF7
clear

#Connexion à Exchange Online
Connect-ExchangeOnline 

#Définition des bâtiments de salles
foreach ($room in $rooms)
{
    $RoomDisplayName = $room.Nom
    $Building = $room.Batiment    
     
    #Add Room in the Building Rooms List
    Write-Host "Set Room $RoomDisplayName in $Building"
    Add-DistributionGroupMember -Identity $Building -Member $RoomDisplayName
    
}
				
			

Maintenant que toute ma configuration est complète, il va falloir s’armer de patiente. Il faut à ma plateforme M365 entre 24 et 48h pour qu’elle prenne en compte toute cette configuration.
Pour le moment, nous pouvons déjà faire des réservations de salles sur base de leurs noms, mais l’outil ne recherche dans Outlook ‘RoomFinder’ n’est pas encore opérationnel.

Scénarios de tests

Organisation d'une réunion sur base d'une salle dont je connais le nom et qui est libre

Organisation d'une réunion sur base d'une salle dont je connais le nom et qui n'est pas libre

Gérer les réservations de salles

En tant que gestionnaire des agendas de réservations de salles, je peux ajouter les agendas de réservations dans Outlook afin de visualiser et supprimer les réservations faites.  Je vais ici annuler la réservation faite par mon collègue Paul sur la salle ‘Bulle 1’

Recherche d'une salle

Conclusions

La mise en place de salles pour organiser au mieux vos réunions nécessite une approche qui demande rigueur et organisation. Mais si vous souhaitez un outil efficace, ces étapes de mise en place sont nécessaires.  L’organisation en ‘Bâtiments’ n’est pas obligatoire, mais elle permet d’avoir dans Outlook un outil de recherche efficace, surtout si vous avez plusieurs salles dans différents bâtiments.

Comment avez-vous trouvé ce billet ?

N'hésitez pas à voter !

Score moyen 4.7 / 5. Nombre de vote 3


S’abonner
Notifier de
guest
0 Commentaires
Inline Feedbacks
View all comments