> 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/de/automatisierung/runbooks/runbook-references/org/general/sync-shared-channel-owners_scheduled.md).

# Shared Channel-Besitzer synchronisieren, geplant

Die Mitglieder einer Gruppe zu Besitzern zugeordneter Teams und Shared Channels machen

{% hint style="info" %}
Dies ist ein geplanter Runbook-Lauf. Er ist dafür ausgelegt, nach einem wiederkehrenden Zeitplan ausgeführt zu werden, anstatt für ein einzelnes Objekt ausgelöst zu werden. Siehe [Planung](/de/automatisierung/runbooks/scheduling.md) für Details dazu, wie Runbook-Zeitpläne konfiguriert werden.
{% endhint %}

### Beschreibung

Shared channels erben nicht die Besitzer ihres Teams. Für jedes in der Zuordnung genannte Team werden die Mitglieder der zugeordneten Security Group zu Besitzern des Teams und jedes von ihm gehosteten Shared Channel gemacht. Es fügt nur hinzu, entfernt nie etwas; neue Shared Channel werden beim nächsten Lauf erfasst. Ein Trockenlauf zeigt die Änderungen, ohne sie anzuwenden. Der Bericht kann per E-Mail gesendet oder als Download-Link bereitgestellt werden.

### So funktioniert es

Bei jedem Lauf macht das Runbook Folgendes:

1. Liest die Zuordnung von Teamnamen zu Besitzergruppen aus der Organisations-Einstellung `SharedChannelOwners.Mapping`.
2. Sucht für jeden Eintrag das Team anhand seines **genauen Anzeigenamens**.
3. Erweitert die Besitzergruppe dieses Eintrags auf ihre transitive **Benutzer** Mitglieder (Gäste werden übersprungen – sie können keinem Shared Channel angehören).
4. Stellt sicher, dass diese Benutzer Besitzer des Teams und jedes **gehosteten** Shared Channel des Teams sind.

Das Runbook ist **nur hinzufügend**: es stuft vorhandene Besitzer oder Mitglieder niemals herab und entfernt sie auch nicht. Neu erstellte Shared Channel werden daher beim nächsten geplanten Lauf automatisch erfasst, ohne bereits Vorhandenes zu beeinträchtigen.

#### Zuordnungskonfiguration

Die Zuordnung wird zentral in den RealmJoin-Organisations-Einstellungen gespeichert (Runbook Customization → `Einstellungen` → `SharedChannelOwners.Mapping`) sodass sie einmal gepflegt und von jedem Zeitplan gemeinsam genutzt wird. Es ist eine Liste von `{ TeamName, OwnerGroupId }` Objekten, wobei `TeamName` ist der **exakte Anzeigename des Teams**. Das verborgene `TeamOwnerGroupMapping` Parameter wird aus dieser Einstellung übernommen; das Runbook akzeptiert ihn entweder als strukturiertes Array (empfohlene Form einer Untereinstellung) oder als JSON-String und normalisiert beides.

Sofort verwendbares Beispiel für die Organisations-Einstellungen:

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

#### Team-Zuordnung

Jeder Zuordnungseintrag zielt auf ein ausdrücklich benanntes Team ab:

* Ein Team wird anhand seines **genauen Anzeigenamens** (Groß-/Kleinschreibung wird ignoriert, entsprechend Microsoft Graph; führende und nachgestellte Leerzeichen im konfigurierten Namen werden ignoriert). Nur dieses Team wird verarbeitet - es gibt kein Präfix- oder Wildcard-Verhalten, daher hat das Benennen eines Eintrags `EXT Service A` beeinflusst niemals `EXT Service A Backup` oder Ähnliches.
* Anzeigenamen sind in Entra ID nicht eindeutig garantiert. Wenn mehrere Teams denselben konfigurierten Namen haben, wird die Besitzergruppe auf **alle** alle angewendet. Wenn kein Team übereinstimmt, wird der Eintrag als *nicht gefunden* gemeldet und übersprungen.

#### Team-Auswahl

Für jeden konfigurierten `TeamName` führt das Runbook eine Graph-Abfrage mit `displayName eq '...'` und behält nur Microsoft 365-Gruppen bei, die als ein **Team**.

#### Was geändert wird

* **Team (optional, `IncludeTeamOwners`, standardmäßig aktiviert):** die Benutzer der Besitzergruppe werden als Besitzer und Mitglieder der übergeordneten M365-Gruppe hinzugefügt. Die Team-Mitgliedschaft ist auch die technische Voraussetzung, um Besitzer eines Shared Channel zu werden, daher aktiviert dieser Schritt den Kanal-Schritt.
* **Shared channels:** für jeden gehosteten Shared Channel (`membershipType eq 'shared'`), wird für jeden Benutzer der Besitzergruppe als Kanal- **Besitzer** - direkt hinzugefügt, wenn er fehlt, oder hochgestuft, wenn er bereits Mitglied ist. Wenn ein direktes Hinzufügen als Besitzer abgelehnt wird (z. B. aufgrund von Verzögerungen bei der Replikation der Mitgliedschaft), weicht das Runbook darauf aus, den Benutzer zuerst als Mitglied hinzuzufügen und ihn dann hochzustufen.

#### Trockenlauf

Auswählen **Testlauf?** um zu protokollieren, was sich ändern würde, ohne etwas zu schreiben. Jeder Lauf gibt zu Beginn die Teams aus, die er verarbeiten wird (mit ihrer Besitzergruppe), sowie alle konfigurierten Teamnamen, die nicht gefunden wurden; in einem Trockenlauf werden die Änderungen als geplante Änderungen aufgeführt.

#### Planung

Konzipiert für den unbeaufsichtigten Betrieb nach Zeitplan. Da die Konfiguration zentral in den Organisations-Einstellungen verwaltet wird und das Runbook nur hinzufügend und idempotent ist, hält ein einzelner wiederkehrender Zeitplan alle zugeordneten Teams und ihre Shared Channel synchron, während Personen und Kanäle kommen und gehen.

### Berichtszustellung

Jeder Lauf schreibt seine Ergebnisse auf die Registerkarte Output Data des RealmJoin-Portals: eine Zusammenfassung, die vorgenommenen Änderungen (oder die in einem Trockenlauf geplanten), die übersprungenen Teams und Benutzer mit dem Grund (Team nicht gefunden, leere Besitzergruppe, Gastbenutzer, fehlgeschlagene Änderungen) sowie die Besitzerzuweisungen, die bereits vorhanden waren. Jede Tabelle kann dort nach Excel exportiert werden.

Berichtsdateien werden nur generiert, wenn eine Zustellmethode über die **Berichtszustellung** Option (E-Mail und/oder Download-Link): eine teambezogene Zusammenfassung und eine Detailliste pro Änderung, als CSV-Dateien und/oder als Excel-Arbeitsmappe. Mit *Nur Ausgabedaten* ausgewählt werden die Ergebnisse direkt in der Registerkarte Output Data gelesen. Die Zustellung per E-Mail und die Erzeugung des Download-Links sind unabhängig und können kombiniert werden; wenn beide ausgewählt sind, werden die Download-Links auch in die E-Mail eingebettet.

Für den Downloadlink werden die Berichtsdateien in den in den Azure Storage Account hochgeladen, der in den `RJReport.StorageAccount.*` Tenant-Einstellungen konfiguriert ist, und zeitlich begrenzte SAS-Downloadlinks werden zurückgegeben. Der Speicher-Upload authentifiziert sich mit der verwalteten Identität des Automation-Kontos; diese Identität benötigt die **Reader and Data Access** RBAC-Rolle auf dem Ziel-Storage Account (dies ist eine Azure-RBAC-Zuweisung, keine Graph-Anwendungsberechtigung).

Zeitpläne, die mit den früheren Zustellungsbezeichnungen gespeichert wurden (zum Beispiel *E-Mail-Bericht*) behalten ihre Zustellung. Wenn ein solcher Zeitplan zur Bearbeitung geöffnet wird, zeigt die Option *Nur Ausgabedaten* an, obwohl die gespeicherte Zustellung aktiv bleibt; wählen Sie die Zustellung vor dem Speichern erneut aus, damit der Dialog dem Verhalten des Zeitplans entspricht.

### Konfiguration für den E-Mail-Versand

Das Senden eines Berichts per E-Mail ist optional und erfolgt nur, wenn *Den Bericht auch per E-Mail senden* oder *Den Bericht auch per E-Mail senden & Downloadlink* als Berichtszustellung ausgewählt; dann ist ein Empfänger erforderlich. Die mit RealmJoin gebrandete E-Mail (gesendet über `Send-RjRbReportEmail`) enthält die Laufstatistiken und die Berichtdateien als Anhänge. Die Absenderadresse wird aus dem `RJReport.EmailSender` Mandanteneinstellung bezogen.

Dieses Runbook sendet E-Mails über die Microsoft Graph API. Um E-Mails über die Graph-API zu senden, müssen Sie eine vorhandene E-Mail-Adresse in der Runbook-Anpassung konfigurieren.

Siehe die [RealmJoin Report Settings Dokumentation](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) für Details zu allen verfügbaren Einstellungen.

#### E-Mail-Branding

Die Bericht-E-Mail berücksichtigt die optionalen `RJReport.Branding.*` Mandanteneinstellungen:

* **Kopf- und Fußzeilenbild** - öffentliche HTTPS-URLs, PNG/JPEG/GIF, max. 200 KB jeweils
* **Fußzeilenlink** - Ziel des Fußzeilenbilds
* **Akzent- und Textfarbe** - 6-stellige Hexwerte, z. B. `#0052cc`

Wenn diese Einstellungen nicht konfiguriert sind, werden die Standardgrafiken und -farben von RealmJoin verwendet. Ein Bild, das nicht heruntergeladen oder validiert werden kann, oder ein ungültiger Farbwert verhindert die Berichts-E-Mail nie - stattdessen wird der entsprechende Standardwert verwendet.

Einrichtungsanweisungen und Bildanforderungen: [E-Mail-Branding](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings#email-branding-optional).

### Speicherort

Organisation → Allgemein → Sync Shared Channel Owners (Geplant)

**Voller Runbook-Name**

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

### Details

| Eigenschaft          | Wert                                                                                                               |
| -------------------- | ------------------------------------------------------------------------------------------------------------------ |
| Version              | 1.4.0                                                                                                              |
| Erforderliche Module | <p>RealmJoin.RunbookHelper (>= 0.8.10)<br>Microsoft.Graph.Authentication (>= 2.41.2)<br>Az.Accounts (>= 5.5.2)</p> |
| Planbar              | ja                                                                                                                 |

### Berechtigungen

#### Anwendungsberechtigungen

* **Typ**: Microsoft Graph
  * Channel.ReadBasic.All
    * *Listet /teams/{id}/channels auf, um die zu verarbeitenden Shared Channel zu finden*
  * ChannelMember.ReadWrite.All
    * *Liest Kanalmitglieder und fügt Benutzer hinzu oder befördert sie zum Shared Channel-Besitzer*
  * Group.ReadWrite.All
    * *Listet Teams auf, liest die Namen der Besitzergruppen und die Gruppenbesitzer und fügt fehlende Team-Besitzer über /groups/{id}/owners/$ref hinzu*
  * GroupMember.ReadWrite.All
    * *Liest die transitiven Mitglieder der Besitzergruppe und fügt Benutzer zuerst als Teammitglieder hinzu*
  * User.Read.All
    * *Liest Benutzereigenschaften von Mitgliedern (UPN, userType) über transitiveMembers, um Gäste herauszufiltern*
  * Mail.Send *(optional — Funktion: E-Mail-Bericht)*
    * *Sendet die Synchronisierungs-Bericht-E-Mail über Send-RjRbReportEmail, wenn die Zustellung per E-Mail ausgewählt ist*
  * Organization.Read.All *(optional — Funktion: E-Mail-Bericht)*
    * *Liest den Anzeigenamen des Mandanten für die Bericht-E-Mail*

#### Hinweise zu Berechtigungen

Azure Storage Account: Rolle 'Reader and Data Access' für die verwaltete Identität des Automation-Kontos auf dem Ziel-Storage Account - der Upload ruft die Kontoschlüssel über listKeys ab (nur für die Downloadlink-Optionen erforderlich)

### Parameter

#### TeamOwnerGroupMapping

Liste von Teamnamen mit der Security Group, deren Mitglieder zu Besitzern werden. Aus der Tenant-Einstellung SharedChannelOwners.Mapping übernommen.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           | \[]                                             |
| Typ                    | Objekt                                          |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### IncludeTeamOwners

Macht die Gruppenmitglieder außerdem zu Besitzern und Mitgliedern des Teams selbst, was erforderlich ist, um dessen Kanäle zu besitzen.

| Eigenschaft           | Wert                               |
| --------------------- | ---------------------------------- |
| Erforderlich          | falsch                             |
| Standardwert          | Wahr                               |
| Typ                   | Boolesch                           |
| Anzeigename im Portal | Sie auch zu Team-Besitzern machen? |

#### WhatIfMode

Protokolliert nur, was sich ändern würde, ohne etwas zu schreiben.

| Eigenschaft           | Wert      |
| --------------------- | --------- |
| Erforderlich          | falsch    |
| Standardwert          | Falsch    |
| Typ                   | Boolesch  |
| Anzeigename im Portal | Testlauf? |

#### SendEmailReport

Sendet den Bericht an die E-Mail-Adresse des Empfängers.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           | Falsch                                          |
| Typ                    | Boolesch                                        |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### EmailTo

Senden Sie den Bericht an diese Adressen. Trennen Sie mehrere durch Kommas; jeder Empfänger erhält eine separate E-Mail.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           |                                                 |
| Typ                    | Zeichenfolge                                    |
| Anzeigename im Portal  | Empfänger-E-Mail-Adresse(n)                     |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### EmailFrom

Absenderadresse der Bericht-E-Mail. Wird aus der Mandanteneinstellung RJReport.EmailSender übernommen.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           |                                                 |
| Typ                    | Zeichenfolge                                    |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### BrandingHeaderImageUrl

Kopfzeilenbild der Bericht-E-Mail (HTTPS-URL, PNG/JPEG/GIF, max. 200 KB). Wird aus der Mandanteneinstellung RJReport.Branding.HeaderImageUrl übernommen; wenn leer, wird der standardmäßige RealmJoin-Kopfbereich verwendet.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           |                                                 |
| Typ                    | Zeichenfolge                                    |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### BrandingFooterImageUrl

Fußzeilenbild der Bericht-E-Mail (HTTPS-URL, PNG/JPEG/GIF, max. 200 KB). Wird aus der Mandanteneinstellung RJReport.Branding.FooterImageUrl übernommen; wenn leer, wird die standardmäßige RealmJoin-Fußzeile verwendet.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           |                                                 |
| Typ                    | Zeichenfolge                                    |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### BrandingFooterLink

Link hinter dem Fußzeilenbild der Bericht-E-Mail. Wird aus der Mandanteneinstellung RJReport.Branding.FooterLink übernommen; wenn leer, wird realmjoin.com verwendet.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           |                                                 |
| Typ                    | Zeichenfolge                                    |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### BrandingAccentColor

Akzentfarbe der Bericht-E-Mail als 6-stelliger Hexwert. Wird aus der Mandanteneinstellung RJReport.Branding.AccentColor übernommen; wenn leer oder ungültig, wird der standardmäßige RealmJoin-Wert verwendet.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           |                                                 |
| Typ                    | Zeichenfolge                                    |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### BrandingTextColor

Textfarbe der Bericht-E-Mail als 6-stelliger Hexwert. Wird aus der Mandanteneinstellung RJReport.Branding.TextColor übernommen; wenn leer oder ungültig, wird der standardmäßige RealmJoin-Wert verwendet.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           |                                                 |
| Typ                    | Zeichenfolge                                    |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### ReportFileFormat

Liefern Sie den Bericht als CSV, als Excel-Arbeitsmappe oder beides.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           | CSV & XLSX                                      |
| Typ                    | Zeichenfolge                                    |
| Anzeigename im Portal  | Berichtsdateiformat                             |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

**Portaloptionen**

| Portaloption | Wert       |
| ------------ | ---------- |
| CSV & XLSX   | CSV & XLSX |
| Nur CSV      | Nur CSV    |
| Nur XLSX     | Nur XLSX   |

#### CreateDownloadLink

Lädt den Bericht außerdem hoch und gibt einen Downloadlink zurück, der nach einigen Tagen abläuft.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           | Falsch                                          |
| Typ                    | Boolesch                                        |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### ContainerName

Speichercontainer, in den die Berichtsdateien hochgeladen werden. Pro Runbook festlegen.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           | shared-channel-owners                           |
| Typ                    | Zeichenfolge                                    |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### ResourceGroupName

Ressourcengruppe des Storage Account für Bericht-Uploads. Aus der Tenant-Einstellung RJReport.StorageAccount.ResourceGroup übernommen.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           |                                                 |
| Typ                    | Zeichenfolge                                    |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### StorageAccountName

Storage Account für Bericht-Uploads. Aus der Tenant-Einstellung RJReport.StorageAccount.StorageAccountName übernommen.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           |                                                 |
| Typ                    | Zeichenfolge                                    |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

#### LinkExpiryDays

Anzahl der Tage, die ein Downloadlink gültig bleibt. Aus der Tenant-Einstellung RJReport.StorageAccount.LinkExpiryDays übernommen.

| Eigenschaft            | Wert                                            |
| ---------------------- | ----------------------------------------------- |
| Erforderlich           | falsch                                          |
| Standardwert           | 6                                               |
| Typ                    | Int32                                           |
| Im Portal ausgeblendet | ja (vorkonfiguriert über die Runbook-Anpassung) |

[Zurück zur Übersicht der Runbook-Referenz](/de/automatisierung/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/de/automatisierung/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.
