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

# Sincronizar propietarios de Shared Channel programado

Convertir a los miembros de un grupo en propietarios de los Teams y Shared Channels asignados

{% hint style="info" %}
Este es un runbook programado. Está diseñado para ejecutarse según una programación recurrente en lugar de activarse para un único objeto. Véase [Programación](/es/automatizacion/runbooks/scheduling.md) para obtener detalles sobre cómo configurar las programaciones del runbook.
{% endhint %}

### Descripción

Los canales compartidos no heredan a los propietarios de su equipo. Para cada equipo nombrado en la asignación, los miembros del Security Group asignado pasan a ser propietarios del equipo y de cada Shared Channel que aloja. Solo agrega, nunca elimina; los nuevos canales compartidos se detectan en la siguiente ejecución. Una ejecución en seco muestra los cambios sin aplicarlos. El informe puede enviarse por correo electrónico o proporcionarse como un enlace de descarga.

### Cómo funciona

En cada ejecución, el runbook:

1. Lee la asignación de nombre de equipo a grupo propietario desde la configuración de la organización `SharedChannelOwners.Mapping`.
2. Para cada entrada, busca el equipo por su **nombre visible exacto**.
3. Expande el grupo propietario de esa entrada a sus miembros transitivos de **usuario** miembros (los invitados se omiten: no pueden pertenecer a un Shared Channel).
4. Se asegura de que esos usuarios sean propietarios del equipo y de cada **alojado** canal compartido del equipo.

El runbook es **solo de adición**: nunca degrada ni elimina propietarios o miembros existentes. Por lo tanto, los canales compartidos recién creados se recogen automáticamente en la siguiente ejecución programada, sin alterar nada ya establecido.

#### Configuración de asignación

La asignación vive centralmente en la configuración de la organización de RealmJoin (Runbook Customization → `Configuración` → `SharedChannelOwners.Mapping`) para que se mantenga una sola vez y la comparta cada programación. Es una lista de `{ TeamName, OwnerGroupId }` objetos, donde `TeamName` es el **nombre visible exacto del equipo**. El `TeamOwnerGroupMapping` parámetro oculto se inyecta desde esta configuración; el runbook lo acepta ya sea como una matriz estructurada (forma de subconfiguración recomendada) o como una cadena JSON y normaliza ambos.

Ejemplo listo para usar para la configuración de la organización:

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

#### Coincidencia de equipos

Cada entrada de asignación apunta a un equipo nombrado explícitamente:

* Un equipo se empareja por su **nombre visible exacto** (sin distinguir mayúsculas y minúsculas, en consonancia con Microsoft Graph; los espacios en blanco alrededor del nombre configurado se ignoran). Solo se procesa ese equipo: no hay comportamiento de prefijo ni comodín, así que nombrar una entrada `EXT Service A` nunca afecta a `EXT Service A Backup` o similar.
* No se garantiza que los nombres visibles sean únicos en Entra ID. Si varios equipos comparten el nombre configurado, el grupo propietario se aplica a **todos** todos ellos. Si no coincide ningún equipo, la entrada se informa como *no encontrado* y se omite.

#### Selección de equipo

Para cada `TeamName` la ejecución del runbook realiza una consulta en Graph `displayName eq '...'` y conserva solo los grupos de Microsoft 365 que están aprovisionados como un **equipo**.

#### Qué se cambia

* **Equipo (opcional, `IncludeTeamOwners`, activado de forma predeterminada):** los usuarios del grupo propietario se agregan como propietarios y miembros del grupo principal de Microsoft 365. La pertenencia al equipo también es el requisito técnico previo para convertirse en propietario de un Shared Channel, así que este paso habilita el paso de canales.
* **Canales compartidos:** para cada canal compartido alojado (`membershipType eq 'shared'`), se garantiza que cada usuario del grupo propietario sea un **propietario** - agregado directamente si falta, o promovido si ya es miembro. Si se rechaza una adición directa de propietario (p. ej., por retraso de replicación de la pertenencia), el runbook recurre a agregar primero al usuario como miembro y luego promoverlo.

#### Ejecución en seco

Seleccione **¿Ejecución de prueba?** para registrar lo que cambiaría sin escribir nada. Cada ejecución imprime, por adelantado, los equipos que procesará (con su grupo propietario) y cualquier nombre de equipo configurado que no se haya encontrado; en una ejecución en seco, los cambios se enumeran como cambios previstos.

#### Programación

Diseñado para ejecutarse sin supervisión según una programación. Como la configuración está centralizada en la configuración de la organización y el runbook es solo de adición e idempotente, una sola programación recurrente mantiene sincronizados todos los equipos asignados y sus canales compartidos a medida que las personas y los canales van y vienen.

### Entrega del informe

Cada ejecución escribe sus resultados en la pestaña de Datos de salida del portal de RealmJoin: un resumen, los cambios realizados (o previstos en una ejecución en seco), los equipos y usuarios omitidos con el motivo (equipo no encontrado, grupo propietario vacío, usuarios invitados, cambios fallidos) y las asignaciones de propietario que ya estaban en su lugar. Cada tabla puede exportarse allí a Excel.

Los archivos del informe solo se generan cuando se selecciona un método de entrega a través de la **Entrega del informe** opción (correo electrónico y/o enlace de descarga): un resumen por equipo y una lista detallada por cambio, como archivos CSV y/o como un libro de Excel. Con *Solo datos de salida* seleccionado, los resultados se leen directamente en la pestaña de Datos de salida. La entrega por correo y la generación de enlaces de descarga son independientes y pueden combinarse; cuando se seleccionan ambas, los enlaces de descarga también se incrustan en el correo.

Para el enlace de descarga, los archivos del informe se cargan en la Storage Account de Azure configurada en la `RJReport.StorageAccount.*` configuración del Tenant, y se devuelven enlaces de descarga SAS con tiempo limitado. La carga al almacenamiento se autentica con la identidad administrada de la cuenta de Automation; esa identidad necesita el **Reader and Data Access** rol RBAC en la Storage Account de destino (esto es una asignación de RBAC de Azure, no un permiso de aplicación de Graph).

Las programaciones que se guardaron con las etiquetas de entrega anteriores (por ejemplo *Informe por correo electrónico*) mantienen su entrega. Cuando se abre una programación de este tipo para editarla, la opción muestra *Solo datos de salida* aunque la entrega almacenada sigue activa; seleccione de nuevo la entrega antes de guardar para que el cuadro de diálogo coincida con lo que hace la programación.

### Configuración relacionada con el envío de correo electrónico

Enviar un informe por correo electrónico es opcional y solo ocurre cuando *Enviar también el informe por correo electrónico* o *Enviar también el informe por correo electrónico y enlace de descarga* se selecciona como entrega del informe; entonces se requiere un destinatario. El correo electrónico con la marca de RealmJoin (enviado mediante `Send-RjRbReportEmail`) contiene las estadísticas de la ejecución y los archivos del informe como adjuntos. La dirección del remitente se toma de la `RJReport.EmailSender` configuración del Tenant.

Este runbook envía correos electrónicos usando la API de Microsoft Graph. Para enviar correos electrónicos a través de la API de Graph, debe configurar una dirección de correo electrónico existente en la personalización del runbook.

Consulte la [documentación de configuración de informes de RealmJoin](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) para obtener detalles sobre todas las configuraciones disponibles.

#### Marca del correo electrónico

El correo electrónico del informe tiene en cuenta la opción opcional `RJReport.Branding.*` del Tenant:

* **Imagen de encabezado y pie de página** - URL HTTPS públicas, PNG/JPEG/GIF, máx. 200 KB cada una
* **Enlace del pie de página** - destino de la imagen del pie de página
* **Color de acento y de texto** - valores hexadecimales de 6 dígitos, p. ej. `#0052cc`

Cuando estos ajustes no están configurados, se usan los gráficos y colores predeterminados de RealmJoin. Una imagen que no puede descargarse o validarse, o un valor de color no válido, nunca impide el correo electrónico del informe; en su lugar se usa el valor predeterminado correspondiente.

Instrucciones de configuración y requisitos de imagen: [Marca del correo electrónico](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings#email-branding-optional).

### Ubicación

Organization → General → Sincronizar propietarios de Shared Channel (Programado)

**Nombre completo del runbook**

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

### Detalles

| Propiedad          | Valor                                                                                                              |
| ------------------ | ------------------------------------------------------------------------------------------------------------------ |
| Versión            | 1.4.0                                                                                                              |
| Módulos requeridos | <p>RealmJoin.RunbookHelper (>= 0.8.10)<br>Microsoft.Graph.Authentication (>= 2.41.2)<br>Az.Accounts (>= 5.5.2)</p> |
| Programable        | sí                                                                                                                 |

### Permisos

#### Permisos de aplicación

* **Tipo**: Microsoft Graph
  * Channel.ReadBasic.All
    * *Lista /teams/{id}/channels para encontrar los canales compartidos que se van a procesar*
  * ChannelMember.ReadWrite.All
    * *Lee los miembros del canal y agrega usuarios o los promueve a propietario de Shared Channel*
  * Group.ReadWrite.All
    * *Enumera los equipos, lee los nombres del grupo propietario y los propietarios del grupo y agrega los propietarios de equipo que faltan mediante /groups/{id}/owners/$ref*
  * GroupMember.ReadWrite.All
    * *Lee los miembros transitivos del grupo propietario y agrega primero a los usuarios como miembros del equipo*
  * User.Read.All
    * *Lee las propiedades del usuario miembro (UPN, userType) a través de transitiveMembers para filtrar invitados*
  * Mail.Send *(opcional — característica: informe por correo electrónico)*
    * *Envía el correo electrónico del informe de sincronización mediante Send-RjRbReportEmail cuando se selecciona la entrega por correo electrónico*
  * Organization.Read.All *(opcional — característica: informe por correo electrónico)*
    * *Lee el nombre para mostrar del Tenant para el correo electrónico del informe*

#### Notas sobre permisos

Azure Storage Account: rol 'Reader and Data Access' para la identidad administrada de la Automation Account en la Storage Account de destino - la carga recupera las claves de la cuenta mediante listKeys (solo necesario para las opciones de enlace de descarga)

### Parámetros

#### TeamOwnerGroupMapping

Lista de nombres de equipo con el Security Group cuyos miembros pasan a ser propietarios. Obtenido de la configuración del Tenant SharedChannelOwners.Mapping.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado | \[]                                                         |
| Tipo                 | Objeto                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### IncludeTeamOwners

También hace que los miembros del grupo sean propietarios y miembros del propio equipo, lo cual es necesario para poseer sus canales.

| Propiedad                      | Valor                                             |
| ------------------------------ | ------------------------------------------------- |
| Requerido                      | falso                                             |
| Valor predeterminado           | Verdadero                                         |
| Tipo                           | Booleano                                          |
| Nombre para mostrar del portal | ¿También convertirlos en propietarios del equipo? |

#### WhatIfMode

Solo registra lo que cambiaría sin escribir nada.

| Propiedad                      | Valor                 |
| ------------------------------ | --------------------- |
| Requerido                      | falso                 |
| Valor predeterminado           | Falso                 |
| Tipo                           | Booleano              |
| Nombre para mostrar del portal | ¿Ejecución de prueba? |

#### SendEmailReport

Enviar el informe a la dirección de correo electrónico del destinatario.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado | Falso                                                       |
| Tipo                 | Booleano                                                    |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### EmailTo

Envía el informe a estas direcciones. Separe varias con comas; cada destinatario recibe un correo electrónico independiente.

| Propiedad                      | Valor                                                       |
| ------------------------------ | ----------------------------------------------------------- |
| Requerido                      | falso                                                       |
| Valor predeterminado           |                                                             |
| Tipo                           | Cadena                                                      |
| Nombre para mostrar del portal | Dirección(es) de correo electrónico del destinatario        |
| Oculto en el portal            | sí (preconfigurado mediante la personalización del runbook) |

#### EmailFrom

Dirección del remitente del correo electrónico del informe. Se toma de la configuración del Tenant RJReport.EmailSender.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingHeaderImageUrl

Imagen de encabezado del correo electrónico del informe (URL HTTPS, PNG/JPEG/GIF, máx. 200 KB). Se toma de la configuración del Tenant RJReport.Branding.HeaderImageUrl; se usa el encabezado predeterminado de RealmJoin cuando está vacío.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingFooterImageUrl

Imagen de pie de página del correo electrónico del informe (URL HTTPS, PNG/JPEG/GIF, máx. 200 KB). Se toma de la configuración del Tenant RJReport.Branding.FooterImageUrl; se usa el pie de página predeterminado de RealmJoin cuando está vacío.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingFooterLink

Enlace asociado a la imagen de pie de página del correo electrónico del informe. Se toma de la configuración del Tenant RJReport.Branding.FooterLink; realmjoin.com se usa cuando está vacío.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingAccentColor

Color de acento del correo electrónico del informe como valor hexadecimal de 6 dígitos. Se toma de la configuración del Tenant RJReport.Branding.AccentColor; se usa el valor predeterminado de RealmJoin cuando está vacío o es inválido.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingTextColor

Color de texto del correo electrónico del informe como valor hexadecimal de 6 dígitos. Se toma de la configuración del Tenant RJReport.Branding.TextColor; se usa el valor predeterminado de RealmJoin cuando está vacío o es inválido.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### ReportFileFormat

Entrega el informe como CSV, como un libro de Excel o ambos.

| Propiedad                      | Valor                                                       |
| ------------------------------ | ----------------------------------------------------------- |
| Requerido                      | falso                                                       |
| Valor predeterminado           | CSV y XLSX                                                  |
| Tipo                           | Cadena                                                      |
| Nombre para mostrar del portal | Formato del archivo del informe                             |
| Oculto en el portal            | sí (preconfigurado mediante la personalización del runbook) |

**Opciones del portal**

| Opción del portal | Valor      |
| ----------------- | ---------- |
| CSV y XLSX        | CSV y XLSX |
| Solo CSV          | Solo CSV   |
| Solo XLSX         | Solo XLSX  |

#### CreateDownloadLink

También carga el informe y devuelve un enlace de descarga que expira después de unos días.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado | Falso                                                       |
| Tipo                 | Booleano                                                    |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### ContainerName

Contenedor de almacenamiento al que se cargan los archivos del informe. Se configura por runbook.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado | shared-channel-owners                                       |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### ResourceGroupName

Grupo de recursos de la Storage Account para las cargas del informe. Obtenido de la configuración del Tenant RJReport.StorageAccount.ResourceGroup.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### StorageAccountName

Storage Account para las cargas del informe. Obtenido de la configuración del Tenant RJReport.StorageAccount.StorageAccountName.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### LinkExpiryDays

Número de días que un enlace de descarga permanece válido. Obtenido de la configuración del Tenant RJReport.StorageAccount.LinkExpiryDays.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado | 6                                                           |
| Tipo                 | Int32                                                       |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

[Volver a la vista general de referencia del runbook](/es/automatizacion/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/es/automatizacion/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.
