> 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/report-license-assignment_scheduled.md).

# Informe programado de asignación de licencias

Generar y enviar por correo electrónico un informe de disponibilidad de licencias basado en umbrales

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

### Descripción

Este runbook comprueba la disponibilidad de licencias en función de los SKU transmitidos y envía un informe por correo electrónico si se alcanza algún umbral. Se pueden configurar dos tipos de umbrales. El primer tipo es un umbral mínimo, que activa una alerta cuando el número de licencias disponibles cae por debajo de un número especificado. El segundo tipo es un umbral máximo, que activa una alerta cuando el número de licencias disponibles supera un número especificado. El informe incluye información detallada sobre las licencias que están fuera de los umbrales configurados, las exporta a archivos CSV y/o Excel (xlsx) y las envía por correo electrónico. Los archivos del informe también se pueden cargar en una Azure Storage Account, devolviendo vínculos de descarga con tiempo limitado. El parámetro ReportFileFormat controla qué formatos de archivo se generan y entregan (solo CSV, CSV y XLSX, o solo XLSX). Cuando el archivo adjunto CSV supera el límite de tamaño del correo electrónico y "CSV & XLSX" se selecciona, el correo electrónico recurre solo al libro de Excel.

### Personalización del runbook

#### Configuración relativa al envío de correos electrónicos

Enviar un informe por correo electrónico es opcional y solo ocurre cuando se proporciona un destinatario (`EmailTo`) . 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 mediante Graph API, necesitas configurar una dirección de correo electrónico existente en la personalización del runbook.

Consulta 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 respeta las configuraciones opcionales `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, por ejemplo `#0052cc`

Cuando estas configuraciones no están definidas, se usan los gráficos y colores predeterminados de RealmJoin. Una imagen que no se pueda descargar o validar, 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).

#### Configuración de InputJson

Cada configuración de licencia requiere:

* **SKUPartNumber** (obligatorio): identificador de SKU de Microsoft
* **FriendlyName** (obligatorio): nombre para mostrar
* **MinThreshold** (opcional): alerta cuando las licencias disponibles < el umbral
* **MaxThreshold** (opcional): alerta cuando las licencias disponibles > el umbral

Al menos un umbral debe establecerse por licencia.

#### Ejemplos de configuración

**Solo umbral mínimo** (para evitar escasez):

```json
[
    {
        "SKUPartNumber": "ENTERPRISEPACK",
        "FriendlyName": "Microsoft 365 E3",
        "MinThreshold": 50
    }
]
```

**Solo umbral máximo** (para evitar sobreaprovisionamiento):

```json
[
    {
        "SKUPartNumber": "POWER_BI_PRO",
        "FriendlyName": "Power BI Pro",
        "MaxThreshold": 500
    }
]
```

**Ambos umbrales** (mantener el rango):

```json
[
    {
        "SKUPartNumber": "ENTERPRISEPREMIUM",
        "FriendlyName": "Microsoft 365 E5",
        "MinThreshold": 50,
        "MaxThreshold": 150
    }
]
```

#### Personalización completa del runbook

```json
{
    "Settings": {
        "RJReport": {
            "EmailSender": "sender@contoso.com"
        }
    },
    "Runbooks": {
        "rjgit-org_general_report-license-assignment_scheduled": {
            "Parameters": {
                "EmailTo": {
                    "DisplayName": "Dirección(es) de correo electrónico del destinatario"
                },
                "InputJson": {
                    "Hide": true,
                    "DefaultValue": [
                        {
                            "SKUPartNumber": "SPE_E5",
                            "FriendlyName": "Microsoft 365 E5",
                            "MinThreshold": 20,
                            "MaxThreshold": 30
                        },
                        {
                            "SKUPartNumber": "FLOW_FREE",
                            "FriendlyName": "Microsoft Power Automate Free",
                            "MinThreshold": 10
                        }
                    ]
                },
                "EmailFrom": {
                    "Hide": true
                },
                "CallerName": {
                    "Hide": true
                }
            }
        }
    }
}
```

### Encontrar números de parte de SKU

```powershell
Connect-MgGraph -Scopes "Organization.Read.All"
Get-MgSubscribedSku | Select-Object SkuPartNumber, SkuId | Sort-Object SkuPartNumber
```

SKU comunes:

* `ENTERPRISEPACK` - Microsoft 365 E3
* `ENTERPRISEPREMIUM` - Microsoft 365 E5
* `EMS` - Movilidad empresarial + Seguridad E3

### Salida

**Cuando se detectan infracciones:**

* Salida de consola en el registro del trabajo
* Exportación CSV (`License_Threshold_Violations.csv`)
* Informe por correo electrónico con resumen, infracciones, recomendaciones y archivo adjunto CSV

**Cuando todo está dentro de los umbrales:**

* No se envía ningún correo electrónico
* El trabajo se completa correctamente

### Solución de problemas

**SKU no encontrado**: Verifique que el SKU exista usando `Get-MgSubscribedSku`

**No se envió el correo electrónico**: Compruebe la configuración de EmailFrom y el permiso Mail.Send

**JSON no válido**: Valide el formato JSON antes de la configuración

### Nota de migración

Anterior `WarningThreshold` se asigna automáticamente a `MinThreshold` - las configuraciones antiguas siguen funcionando.

### Ubicación

Organización → General → Informe de asignación de licencias (programado)

**Nombre completo del runbook**

rjgit-org\_general\_report-license-assignment\_scheduled

### Detalles

| Propiedad          | Valor                                                                                                  |
| ------------------ | ------------------------------------------------------------------------------------------------------ |
| Versión            | 1.3.0                                                                                                  |
| Módulos requeridos | RealmJoin.RunbookHelper (>= 0.8.9)\nMicrosoft.Graph.Authentication (>= 2.39.0)\nAz.Accounts (>= 5.5.2) |
| Programable        | sí                                                                                                     |

### Permisos

#### Permisos de aplicación

* **Tipo**: Microsoft Graph
  * Organization.Read.All
    * *Lee /organization y /subscribedSkus para evaluar los recuentos de licencias frente a los umbrales*
  * Mail.Send *(opcional — característica: informe por correo electrónico)*
    * *Envía el correo electrónico del informe de umbral mediante Send-RjReportEmail cuando EmailTo está configurado*

### Parámetros

#### InputJson

Matriz JSON que contiene configuraciones de SKU con umbrales. Cada entrada debe incluir un SKUPartNumber para el identificador de SKU de Microsoft, un FriendlyName como nombre para mostrar de la licencia, un MinThreshold opcional que especifique el número mínimo de licencias que debe estar disponible y un MaxThreshold opcional que especifique el número máximo de licencias que debe estar disponible.

Esto debe configurarse en la personalización del runbook

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | true                                                        |
| Valor predeterminado |                                                             |
| Tipo                 | Objeto                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### ReportFileFormat

Controla qué formatos de archivo del informe se generan y entregan: "solo CSV", "CSV & XLSX" (predeterminado) o "solo XLSX".

| Propiedad                    | Valor                          |
| ---------------------------- | ------------------------------ |
| Obligatorio                  | false                          |
| Valor predeterminado         | CSV & XLSX                     |
| Tipo                         | String                         |
| Nombre mostrado en el portal | Formato de archivo del informe |

**Opciones del portal**

| Opción del portal | Valor |
| ----------------- | ----- |
| CSV & XLSX        |       |
| solo CSV          |       |
| solo XLSX         |       |

#### CreateDownloadLink

Si está habilitado, los archivos del informe se cargan en una Azure Storage Account y se devuelven enlaces de descarga con tiempo limitado. Deshabilitado de forma predeterminada.

| Propiedad                    | Valor                                                                         |
| ---------------------------- | ----------------------------------------------------------------------------- |
| Obligatorio                  | false                                                                         |
| Valor predeterminado         | Falso                                                                         |
| Tipo                         | Booleano                                                                      |
| Nombre mostrado en el portal | ¿Crear un enlace de descarga de archivo (subir el informe al almacenamiento)? |

**Opciones del portal**

| Opción del portal                                     | Valor |
| ----------------------------------------------------- | ----- |
| Sí: subir el informe y devolver un enlace de descarga | true  |
| No: no crear un enlace de descarga                    | false |

#### ContainerName

Nombre del contenedor de almacenamiento usado para la carga. Configurado por runbook (no es una configuración global de RJReport).

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado | report-license-assignment                                   |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### ResourceGroupName

Grupo de recursos que contiene la Storage Account. Procede de las configuraciones de Tenant de RJReport.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### StorageAccountName

Nombre de la Storage Account usado para la carga. Procede de las configuraciones de Tenant de RJReport.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### LinkExpiryDays

Número de días hasta que expira el enlace de descarga generado. Procede de las configuraciones de Tenant de RJReport.

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

#### EmailTo

Si se especifica, se enviará un correo electrónico con el informe a la(s) dirección(es) proporcionada(s). Puede ser una sola dirección o varias separadas por comas (cadena).

| Propiedad                    | Valor                                                |
| ---------------------------- | ---------------------------------------------------- |
| Obligatorio                  | false                                                |
| Valor predeterminado         |                                                      |
| Tipo                         | String                                               |
| Nombre mostrado en el portal | Dirección(es) de correo electrónico del destinatario |

#### EmailFrom

Dirección de correo del remitente resuelta a partir de la configuración.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingHeaderImageUrl

URL HTTPS pública opcional de una imagen de encabezado personalizada (PNG/JPEG/GIF, máx. 200 KB) para el correo electrónico del informe. Se obtiene de la configuración del tenant RJReport.Branding.HeaderImageUrl. Cuando está vacía, se usa el gráfico de encabezado predeterminado de RealmJoin.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingFooterImageUrl

URL HTTPS pública opcional de una imagen de pie de página personalizada (PNG/JPEG/GIF, máx. 200 KB) para el correo electrónico del informe. Se obtiene de la configuración del tenant RJReport.Branding.FooterImageUrl. Cuando está vacía, se usa el gráfico de pie de página predeterminado de RealmJoin.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingFooterLink

URL opcional a la que enlaza la imagen del pie de página. Se obtiene de la configuración del tenant RJReport.Branding.FooterLink. Cuando está vacía, se usa el enlace predeterminado (<https://www.realmjoin.com>).

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingAccentColor

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingTextColor

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| 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 dynamically by asking a question.

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

```
GET https://docs.realmjoin.com/es/automatizacion/runbooks/runbook-references/org/general/report-license-assignment_scheduled.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
