> For the complete documentation index, see [llms.txt](https://docs.realmjoin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.realmjoin.com/fr/automatisation/runbooks/runbook-references/org/general/sync-sharedchannel-owners_scheduled.md).

# Synchronisation planifiée des propriétaires de canaux partagés

### Description

Les canaux partagés Teams n’héritent pas de la propriété de leur équipe parente. Ce runbook planifié comble cette lacune : pour chaque équipe nommée dans un mappage, il s’assure que les membres d’un groupe de sécurité mappé sont propriétaires de l’équipe et de chaque canal partagé hébergé par l’équipe. Le mappage du nom de l’équipe au groupe de propriétaires est maintenu de manière centralisée comme paramètre d’organisation RealmJoin. Le runbook est en ajout uniquement — les propriétaires et membres existants ne sont jamais supprimés — de sorte que les canaux partagés nouvellement créés sont simplement pris en compte lors de l’exécution suivante. Il peut éventuellement envoyer un rapport par e-mail et/ou téléverser les résultats CSV sous forme de lien de téléchargement. Consultez la documentation d’accompagnement pour les règles de mappage et la configuration.

### Fonctionnement

À chaque exécution, le runbook :

1. Lit le mappage du nom d’équipe vers le groupe de propriétaires à partir du paramètre d’organisation `SharedChannelOwners.Mapping`.
2. Pour chaque entrée, recherche l’équipe par son **nom d’affichage exact**.
3. Développe le groupe de propriétaires de cette entrée jusqu’à ses **utilisateur** membres transitive (les invités sont ignorés — ils ne peuvent pas appartenir à un canal partagé).
4. S’assure que ces utilisateurs sont propriétaires de l’équipe et de chaque **hébergé** canal partagé de l’équipe.

Le runbook est **en ajout uniquement**: il ne rétrograde ni ne supprime jamais les propriétaires ou membres existants. Les canaux partagés nouvellement créés sont donc pris en compte automatiquement lors de la prochaine exécution planifiée, sans perturber l’existant.

#### Configuration du mappage

Le mappage est défini de manière centralisée dans les paramètres d’organisation RealmJoin (Personnalisation du runbook → `Paramètres` → `SharedChannelOwners.Mapping`) `ainsi il est maintenu une seule fois et partagé par chaque planification. C’est une liste de` objets, où `TeamName` est le **nom d’affichage exact de l’équipe** (voir la *section Notes* pour un exemple prêt à l’emploi). Le paramètre caché `TeamOwnerGroupMapping` est injecté à partir de ce paramètre ; le runbook l’accepte soit comme tableau structuré (forme de sous-paramètre recommandée), soit comme chaîne JSON, et normalise les deux.

#### Correspondance des équipes

Chaque entrée de mappage cible une équipe explicitement nommée :

* Une équipe est reconnue par son **nom d’affichage exact** (insensible à la casse, conformément à Microsoft Graph ; les espaces de début et de fin dans le nom configuré sont ignorés). Seule cette équipe est traitée — il n’y a aucun comportement de préfixe ni de caractère générique, donc nommer une entrée `EXT Service A` n’affecte jamais `EXT Service A Backup` ou similaire.
* Les noms d’affichage ne sont pas garantis uniques dans Entra ID. Si plusieurs équipes partagent le nom configuré, le groupe de propriétaires est appliqué à **toutes** d’entre elles. Si aucune équipe ne correspond, l’entrée est signalée comme *introuvable* et ignorée.

#### Sélection de l’équipe

Pour chaque `TeamName` configuré, le runbook exécute une requête Graph `displayName eq '...'` de recherche et conserve uniquement les groupes Microsoft 365 qui sont approvisionnés en tant que **équipe**.

#### Ce qui est modifié

* **Équipe (facultatif, `IncludeTeamOwners`, activé par défaut) :** les utilisateurs du groupe de propriétaires sont ajoutés en tant que propriétaires et membres du groupe Microsoft 365 parent. L’appartenance à l’équipe est aussi le prérequis technique pour devenir propriétaire d’un canal partagé ; cette étape permet donc l’étape des canaux.
* **Canaux partagés :** pour chaque canal partagé hébergé (`membershipType eq 'shared'`), chaque utilisateur du groupe de propriétaires est défini comme un **propriétaire** - ajouté directement s’il est absent, ou promu s’il est déjà membre. Si l’ajout direct d’un propriétaire est refusé (par ex. en cas de latence de réplication de l’appartenance), le runbook se rabat sur l’ajout de l’utilisateur en tant que membre d’abord, puis sur sa promotion.

#### Exécution à blanc

Définissez **`WhatIfMode`** pour consigner ce qui changerait sans rien écrire. Dans ce mode, le runbook affiche d’emblée les équipes qu’il traiterait (avec leur groupe de propriétaires) ainsi que tous les noms d’équipe configurés qui n’ont pas été trouvés.

#### Rapports (facultatif, les deux désactivés par défaut)

* **`SendEmailReport`** envoie un e-mail aux couleurs de RealmJoin (via `Send-RjReportEmail`) avec les statistiques d’exécution et deux pièces jointes CSV : un récapitulatif par équipe et une liste détaillée des changements. L’expéditeur est pris dans le `RJReport.EmailSender` paramètre.
* **`CreateDownloadLink`** téléverse les mêmes CSV vers un compte de stockage et renvoie des liens de téléchargement SAS à durée limitée (également intégrés dans l’e-mail lorsque les deux options sont activées). Le compte de stockage cible est pris dans le `RJReport.StorageAccount.*` paramètres.

Le téléversement vers le stockage s’authentifie avec l’identité managée du compte Automation ; cette identité a besoin du rôle **Storage Blob Data Contributor** RBAC sur le compte de stockage cible (il s’agit d’une attribution Azure RBAC, et non d’une autorisation d’application Graph).

#### Planification

Conçu pour s’exécuter sans surveillance selon une planification. Comme la configuration est centralisée dans les paramètres d’organisation et que le runbook est en ajout uniquement et idempotent, une seule planification récurrente maintient toutes les équipes mappées et leurs canaux partagés synchronisés, au gré des arrivées et départs des personnes et des canaux.

### Emplacement

Organisation → Général → Synchroniser les propriétaires de Sharedchannel (planifié)

**Nom complet du Runbook**

rjgit-org\_general\_sync-sharedchannel-owners\_scheduled

### Autorisations

#### Autorisations d'application

* **Type**: Microsoft Graph
  * Group.ReadWrite.All
  * GroupMember.ReadWrite.All
  * Channel.ReadBasic.All
  * ChannelMember.ReadWrite.All
  * Mail.Send

### Paramètres

#### TeamOwnerGroupMapping

Mappage d’un nom d’affichage exact d’équipe vers l’ID d’objet d’un groupe de sécurité propriétaire, par ex. \[{ "TeamName": "EXT Service A", "OwnerGroupId": "00000000-0000-0000-0000-000000000000" }]. Paramètre masqué, lié au paramètre d’organisation "SharedChannelOwners.Mapping". Le portail RealmJoin injecte cette valeur ; le runbook l’accepte soit comme objet/tableau désérialisé (sous-paramètres structurés), soit comme chaîne JSON, et normalise les deux.

| Propriété         | Valeur |
| ----------------- | ------ |
| Requis            | faux   |
| Valeur par défaut | \[]    |
| Type              | Objet  |

#### IncludeTeamOwners

Lorsqu’il est activé (par défaut), les membres du groupe de propriétaires sont aussi définis comme propriétaires et membres de l’équipe parente elle-même (propriétaires/membres du groupe Microsoft 365). L’appartenance à l’équipe est également le prérequis pour la propriété d’un canal.

| Propriété         | Valeur  |
| ----------------- | ------- |
| Requis            | faux    |
| Valeur par défaut | Vrai    |
| Type              | Boolean |

#### WhatIfMode

Lorsqu’il est activé, le runbook enregistre uniquement les changements qu’il apporterait, sans rien écrire.

| Propriété         | Valeur  |
| ----------------- | ------- |
| Requis            | faux    |
| Valeur par défaut | Faux    |
| Type              | Boolean |

#### SendEmailReport

Lorsqu’il est activé, un rapport par e-mail aux couleurs de RealmJoin est envoyé via Send-RjReportEmail après l’exécution. Le corps contient les statistiques d’exécution et deux pièces jointes CSV (récapitulatif par équipe et détail des changements).

| Propriété         | Valeur  |
| ----------------- | ------- |
| Requis            | faux    |
| Valeur par défaut | Faux    |
| Type              | Boolean |

#### Envoyer à

Adresse(s) e-mail des destinataires du rapport (séparées par des virgules). Utilisé uniquement lorsque SendEmailReport est activé.

| Propriété         | Valeur               |
| ----------------- | -------------------- |
| Requis            | faux                 |
| Valeur par défaut |                      |
| Type              | Chaîne de caractères |

#### Envoyer depuis

Boîte aux lettres expéditrice du rapport. Liée au paramètre d’organisation "RJReport.EmailSender".

| Propriété         | Valeur               |
| ----------------- | -------------------- |
| Requis            | faux                 |
| Valeur par défaut |                      |
| Type              | Chaîne de caractères |

#### CreateDownloadLink

Lorsqu’il est activé, le ou les rapports CSV sont téléversés vers un compte de stockage et un lien de téléchargement à durée limitée est renvoyé (et inclus dans le rapport par e-mail si cette option est également activée). Désactivé par défaut.

| Propriété         | Valeur  |
| ----------------- | ------- |
| Requis            | faux    |
| Valeur par défaut | Faux    |
| Type              | Boolean |

#### Nom du conteneur

Conteneur de stockage utilisé pour le téléversement. Configuré par runbook (et non comme paramètre RJReport global).

| Propriété         | Valeur                |
| ----------------- | --------------------- |
| Requis            | faux                  |
| Valeur par défaut | shared-channel-owners |
| Type              | Chaîne de caractères  |

#### Nom du groupe de ressources

Groupe de ressources qui contient le compte de stockage. Lié à "RJReport.StorageAccount.ResourceGroup".

| Propriété         | Valeur               |
| ----------------- | -------------------- |
| Requis            | faux                 |
| Valeur par défaut |                      |
| Type              | Chaîne de caractères |

#### StorageAccountName

Compte de stockage utilisé pour le téléversement. Lié à "RJReport.StorageAccount.StorageAccountName".

| Propriété         | Valeur               |
| ----------------- | -------------------- |
| Requis            | faux                 |
| Valeur par défaut |                      |
| Type              | Chaîne de caractères |

#### LinkExpiryDays

Nombre de jours avant l’expiration du lien de téléchargement généré. Lié à "RJReport.StorageAccount.LinkExpiryDays".

| Propriété         | Valeur |
| ----------------- | ------ |
| Requis            | faux   |
| Valeur par défaut | 6      |
| Type              | Int32  |

[Retour à l'aperçu de la référence du Runbook](/fr/automatisation/runbooks/runbook-references.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.realmjoin.com/fr/automatisation/runbooks/runbook-references/org/general/sync-sharedchannel-owners_scheduled.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
