> 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-shared-channel-owners_scheduled.md).

# Synchronisation planifiée des propriétaires du Shared Channel

Faire des membres d'un groupe les propriétaires des équipes et des Shared Channel mappés

{% hint style="info" %}
Il s'agit d'un runbook planifié. Il est conçu pour s'exécuter selon une planification récurrente plutôt que d'être déclenché pour un seul objet. Voir [Planification](/fr/automatisation/runbooks/scheduling.md) pour plus de détails sur la configuration des planifications de runbook.
{% endhint %}

### Description

Les canaux partagés n’héritent pas des propriétaires de leur équipe. Pour chaque équipe nommée dans le mappage, les membres du Security Group mappé deviennent propriétaires de l’équipe et de chaque canal partagé qu’il héberge. Il ajoute seulement, ne supprime jamais ; les nouveaux canaux partagés sont pris en compte lors de la prochaine exécution. Une exécution à blanc montre les changements sans les appliquer. Le rapport peut être envoyé par e-mail ou fourni sous forme de lien de téléchargement.

### Fonctionnement

À chaque exécution, le runbook :

1. Lit le mappage des noms d’équipe vers le groupe propriétaire à 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 propriétaire de cette entrée en ses membres transitifs **utilisateurs** membres (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 quoi que ce soit d’existant.

#### Configuration du mappage

Le mappage est centralisé dans les paramètres d’organisation RealmJoin (Personnalisation du runbook → `Paramètres` → `SharedChannelOwners.Mapping`) afin d’être maintenu une seule fois et partagé par chaque planification. C’est une liste de `{ TeamName, OwnerGroupId }` objets, où `TeamName` est le **nom d’affichage exact de l’équipe**. Le paramètre masqué `TeamOwnerGroupMapping` est injecté à partir de ce paramètre ; le runbook l’accepte soit sous forme de tableau structuré (forme de sous-paramètre recommandée), soit sous forme de chaîne JSON, et normalise les deux.

Exemple prêt à l’emploi pour les paramètres d’organisation :

```json
{
    "Settings": {
        "SharedChannelOwners": {
            "Mapping": [
                { "TeamName": "EXT Service A", "OwnerGroupId": "11111111-1111-1111-1111-111111111111" },
                { "TeamName": "EXT Service B", "OwnerGroupId": "22222222-2222-2222-2222-222222222222" }
            ]
        }
    }
}
```

#### Correspondance des équipes

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

* Une équipe est mise en correspondance par son **nom d’affichage exact** nom d’affichage exact (sans tenir compte de la casse, conformément à Microsoft Graph ; les espaces autour du 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 propriétaire est appliqué à **tous les** chacune d’elles. Si aucune équipe ne correspond, l’entrée est signalée comme *introuvable* et ignorée.

#### Sélection des équipes

Pour chaque entrée configurée, `TeamName` le runbook exécute une requête Graph `displayName eq '...'` et ne conserve que les groupes Microsoft 365 approvisionnés en tant qu’Équipe **Équipe**.

#### Ce qui est modifié

* **Équipe (facultatif, `IncludeTeamOwners`, activé par défaut) :** les utilisateurs du groupe propriétaire sont ajoutés comme propriétaires et membres du groupe Microsoft 365 parent. L’appartenance à l’équipe est aussi la condition technique pour devenir propriétaire d’un canal partagé, donc cette étape active l’étape dédiée aux canaux.
* **Canaux partagés :** pour chaque canal partagé hébergé (`membershipType eq 'shared'`), chaque utilisateur du groupe propriétaire est assuré d’être propriétaire du canal **propriétaire**  - ajouté directement s’il est absent, ou promu s’il est déjà membre. Si un ajout direct en tant que propriétaire est refusé (par ex. délai de réplication de l’appartenance), le runbook revient à ajouter d’abord l’utilisateur comme membre, puis à le promouvoir.

#### Exécution à blanc

Sélectionnez **Simulation ?** pour consigner ce qui changerait sans écrire quoi que ce soit. Chaque exécution affiche, au préalable, les équipes qu’elle traitera (avec leur groupe propriétaire) et les noms d’équipe configurés qui n’ont pas été trouvés ; lors d’une exécution à blanc, les changements sont listés comme changements prévus.

#### Planification

Conçu pour s’exécuter sans supervision 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 fil des arrivées et des départs des personnes et des canaux.

### Livraison du rapport

Chaque exécution écrit ses résultats dans l’onglet Output Data du portail RealmJoin : un résumé, les changements effectués (ou prévus lors d’une exécution à blanc), les équipes et les utilisateurs ignorés avec le motif (équipe introuvable, groupe propriétaire vide, utilisateurs invités, changements échoués) et les attributions de propriétaire déjà en place. Chaque tableau peut y être exporté vers Excel.

Les fichiers du rapport ne sont générés que lorsqu’une méthode de livraison est sélectionnée via l’ **Livraison du rapport** option (e-mail et/ou lien de téléchargement) : un résumé par équipe et une liste détaillée des changements, sous forme de fichiers CSV et/ou d’un classeur Excel. Avec *Uniquement les données de sortie* sélectionné, les résultats sont lus directement dans l’onglet Output Data. La livraison par e-mail et la génération du lien de téléchargement sont indépendantes et peuvent être combinées ; lorsque les deux sont sélectionnées, les liens de téléchargement sont aussi intégrés dans l’e-mail.

Pour le lien de téléchargement, les fichiers du rapport sont téléversés vers le Storage Account Azure configuré dans les `RJReport.StorageAccount.*` paramètres du Tenant, et des liens de téléchargement SAS à durée limitée sont renvoyés. Le téléversement vers le Storage Account s’authentifie avec l’identité managée du compte Automation ; cette identité nécessite le **Reader and Data Access** rôle RBAC sur le Storage Account cible (il s’agit d’une attribution Azure RBAC, pas d’une autorisation d’application Graph).

Les planifications enregistrées avec les anciens libellés de livraison (par exemple *Rapport par e-mail*) conservent leur livraison. Lorsqu’une telle planification est ouverte pour modification, l’option affiche *Uniquement les données de sortie* bien que la livraison enregistrée reste active ; sélectionnez à nouveau la livraison avant d’enregistrer afin que la boîte de dialogue corresponde à ce que fait la planification.

### Configuration de l’envoi d’e-mails

L’envoi du rapport par e-mail est facultatif et ne se produit que lorsque *Envoyer aussi le rapport par e-mail* ou *Envoyer aussi par e-mail et lien de téléchargement* est sélectionné comme mode de livraison du rapport ; un destinataire est alors requis. L’e-mail aux couleurs de RealmJoin (envoyé via `Send-RjRbReportEmail`) contient les statistiques d’exécution et les fichiers du rapport en pièces jointes. L’adresse d’expéditeur est prise dans le `RJReport.EmailSender` paramètre Tenant.

Ce runbook envoie des e-mails à l’aide de l’API Microsoft Graph. Pour envoyer des e-mails via l’API Graph, vous devez configurer une adresse e-mail existante dans la personnalisation du runbook.

Voir la [documentation des paramètres de rapport RealmJoin](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) pour plus de détails sur tous les paramètres disponibles.

#### Branding des e-mails

L’e-mail du rapport prend en compte l’optionnel `RJReport.Branding.*` paramètres Tenant :

* **Image d’en-tête et de pied de page** - URL HTTPS publiques, PNG/JPEG/GIF, max. 200 Ko chacune
* **Lien de pied de page** - cible de l’image de pied de page
* **Couleur d’accent et de texte** - valeurs hexadécimales à 6 chiffres, par ex. `#0052cc`

Lorsque ces paramètres ne sont pas configurés, les graphismes et couleurs par défaut de RealmJoin sont utilisés. Une image qui ne peut pas être téléchargée ou validée, ou une valeur de couleur invalide, n’empêche jamais l’e-mail du rapport - le défaut correspondant est utilisé à la place.

Instructions de configuration et exigences relatives aux images : [Branding des e-mails](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings#email-branding-optional).

### Emplacement

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

**Nom complet du runbook**

rjgit-org\_general\_sync-shared-channel-owners\_scheduled

### Détails

| Propriété      | Valeur                                                                                                             |
| -------------- | ------------------------------------------------------------------------------------------------------------------ |
| Version        | 1.4.0                                                                                                              |
| Modules requis | <p>RealmJoin.RunbookHelper (>= 0.8.10)<br>Microsoft.Graph.Authentication (>= 2.41.2)<br>Az.Accounts (>= 5.5.2)</p> |
| Planifiable    | oui                                                                                                                |

### Autorisations

#### Autorisations d’application

* **Type**: Microsoft Graph
  * Channel.ReadBasic.All
    * *Liste /teams/{id}/channels pour trouver les canaux partagés à traiter*
  * ChannelMember.ReadWrite.All
    * *Lit les membres du canal et ajoute des utilisateurs ou les promeut au rang de propriétaire de canal partagé*
  * Group.ReadWrite.All
    * *Liste les équipes, lit les noms du groupe propriétaire et les propriétaires du groupe, et ajoute les propriétaires d’équipe manquants via /groups/{id}/owners/$ref*
  * GroupMember.ReadWrite.All
    * *Lit les membres transitifs du groupe propriétaire et ajoute d’abord les utilisateurs comme membres de l’équipe*
  * User.Read.All
    * *Lit les propriétés des utilisateurs membres (UPN, userType) via transitiveMembers pour filtrer les invités*
  * Mail.Send *(facultatif — fonctionnalité : rapport par e-mail)*
    * *Envoie l’e-mail de rapport de synchronisation via Send-RjRbReportEmail lorsque la livraison par e-mail est sélectionnée*
  * Organization.Read.All *(facultatif — fonctionnalité : rapport par e-mail)*
    * *Lit le nom d’affichage du Tenant pour l’e-mail du rapport*

#### Notes sur les autorisations

Azure Storage Account: rôle 'Reader and Data Access' pour l’identité managée du compte Automation sur le Storage Account cible - le téléversement récupère les clés du compte via listKeys (requis uniquement pour les options de lien de téléchargement)

### Paramètres

#### TeamOwnerGroupMapping

Liste des noms d’équipe avec le Security Group dont les membres deviennent propriétaires. Provenant du paramètre de Tenant SharedChannelOwners.Mapping.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      | \[]                                                |
| Type                   | Objet                                              |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### IncludeTeamOwners

Fait aussi des membres du groupe les propriétaires et membres de l’équipe elle-même, ce qui est nécessaire pour être propriétaire de ses canaux.

| Propriété                  | Valeur                                         |
| -------------------------- | ---------------------------------------------- |
| Obligatoire                | faux                                           |
| Valeur par défaut          | Vrai                                           |
| Type                       | Booléen                                        |
| Nom d’affichage du portail | En faire aussi des propriétaires de l’équipe ? |

#### WhatIfMode

N’enregistre que ce qui changerait, sans écrire quoi que ce soit.

| Propriété                  | Valeur       |
| -------------------------- | ------------ |
| Obligatoire                | faux         |
| Valeur par défaut          | Faux         |
| Type                       | Booléen      |
| Nom d’affichage du portail | Simulation ? |

#### SendEmailReport

Envoyer le rapport à l’adresse e-mail du destinataire.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      | Faux                                               |
| Type                   | Booléen                                            |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### EmailTo

Envoyez le rapport à ces adresses. Séparez-en plusieurs par des virgules ; chaque destinataire reçoit un e-mail distinct.

| Propriété                  | Valeur                                             |
| -------------------------- | -------------------------------------------------- |
| Obligatoire                | faux                                               |
| Valeur par défaut          |                                                    |
| Type                       | Chaîne                                             |
| Nom d’affichage du portail | Adresse(s) e-mail du destinataire                  |
| Masqué dans le portail     | oui (prédéfini via la personnalisation du runbook) |

#### EmailFrom

Adresse de l’expéditeur de l’e-mail du rapport. Prise dans le paramètre Tenant RJReport.EmailSender.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      |                                                    |
| Type                   | Chaîne                                             |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### BrandingHeaderImageUrl

Image d’en-tête de l’e-mail du rapport (URL HTTPS, PNG/JPEG/GIF, 200 Ko max.). Prise dans le paramètre Tenant RJReport.Branding.HeaderImageUrl ; l’en-tête RealmJoin par défaut est utilisé si vide.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      |                                                    |
| Type                   | Chaîne                                             |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### BrandingFooterImageUrl

Image de pied de page de l’e-mail du rapport (URL HTTPS, PNG/JPEG/GIF, 200 Ko max.). Prise dans le paramètre Tenant RJReport.Branding.FooterImageUrl ; le pied de page RealmJoin par défaut est utilisé si vide.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      |                                                    |
| Type                   | Chaîne                                             |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### BrandingFooterLink

Lien derrière l’image de pied de page de l’e-mail du rapport. Pris dans le paramètre Tenant RJReport.Branding.FooterLink ; realmjoin.com est utilisé si vide.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      |                                                    |
| Type                   | Chaîne                                             |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### BrandingAccentColor

Couleur d’accent de l’e-mail du rapport sous forme de valeur hexadécimale à 6 chiffres. Prise dans le paramètre Tenant RJReport.Branding.AccentColor ; la valeur par défaut RealmJoin est utilisée si vide ou non valide.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      |                                                    |
| Type                   | Chaîne                                             |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### BrandingTextColor

Couleur du texte de l’e-mail du rapport sous forme de valeur hexadécimale à 6 chiffres. Prise dans le paramètre Tenant RJReport.Branding.TextColor ; la valeur par défaut RealmJoin est utilisée si vide ou non valide.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      |                                                    |
| Type                   | Chaîne                                             |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### ReportFileFormat

Distribuez le rapport en CSV, en classeur Excel ou dans les deux formats.

| Propriété                  | Valeur                                             |
| -------------------------- | -------------------------------------------------- |
| Obligatoire                | faux                                               |
| Valeur par défaut          | CSV et XLSX                                        |
| Type                       | Chaîne                                             |
| Nom d’affichage du portail | Format du fichier de rapport                       |
| Masqué dans le portail     | oui (prédéfini via la personnalisation du runbook) |

**Options du portail**

| Option du portail | Valeur          |
| ----------------- | --------------- |
| CSV et XLSX       | CSV et XLSX     |
| CSV uniquement    | CSV uniquement  |
| XLSX uniquement   | XLSX uniquement |

#### Créer un lien de téléchargement

Télécharge également le rapport et renvoie un lien de téléchargement qui expire après quelques jours.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      | Faux                                               |
| Type                   | Booléen                                            |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### Nom du conteneur

Conteneur de stockage vers lequel les fichiers du rapport sont téléversés. À définir par runbook.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      | shared-channel-owners                              |
| Type                   | Chaîne                                             |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### Nom du groupe de ressources

Groupe de ressources du compte de stockage pour les téléversements du rapport. Pris à partir du paramètre du tenant RJReport.StorageAccount.ResourceGroup.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      |                                                    |
| Type                   | Chaîne                                             |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### Nom du Storage Account

Compte de stockage pour les téléversements du rapport. Pris à partir du paramètre du tenant RJReport.StorageAccount.StorageAccountName.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      |                                                    |
| Type                   | Chaîne                                             |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

#### LinkExpiryDays

Nombre de jours pendant lesquels un lien de téléchargement reste valide. Pris à partir du paramètre du tenant RJReport.StorageAccount.LinkExpiryDays.

| Propriété              | Valeur                                             |
| ---------------------- | -------------------------------------------------- |
| Obligatoire            | faux                                               |
| Valeur par défaut      | 6                                                  |
| Type                   | Int32                                              |
| Masqué dans le portail | oui (prédéfini via la personnalisation du runbook) |

[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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
