> 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).

# Informar de asignación de licencias programado

{% 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. Consulte [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 según los SKU transmitidos y envía un informe por correo electrónico si se alcanza alguno de los umbrales. 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 un Azure Storage Account, devolviendo enlaces 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 se selecciona "CSV & XLSX", el correo electrónico recurre únicamente al libro de Excel.

### Personalización del runbook

#### Configuración relacionada con el envío de correos electrónicos

El envío de un informe por correo electrónico es opcional y solo se realiza cuando se proporciona un destinatario (`EmailTo`). La dirección del remitente se toma de la `RJReport.EmailSender` configuración de Tenant.

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

Consulta la [documentación de RealmJoin Report Settings](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) para obtener más detalles.

#### Branding del correo electrónico

El correo electrónico del informe tiene en cuenta la configuración opcional `RJReport.Branding.*` de Tenant: una imagen de encabezado personalizada, una imagen de pie de página personalizada (URL HTTPS públicas, PNG/JPEG/GIF, máx. 200 KB cada una), un enlace personalizado en el pie de página y colores personalizados de acento y de texto (valores hexadecimales de 6 dígitos, p. ej. `#0052cc`). Cuando estas configuraciones no están definidas, se usan los gráficos y colores predeterminados de RealmJoin. Una imagen de branding que no se pueda descargar o validar, o un valor de color que no sea un color hexadecimal válido, nunca impide el envío del correo del informe; en su lugar, se usa el valor predeterminado correspondiente.

Consulta la [documentación de RealmJoin Report Settings](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) para ver los detalles de configuración.

#### Configuración de InputJson

Cada configuración de licencia requiere:

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

Se debe establecer al menos un umbral 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": "Direcciones de correo electrónico de los destinatarios"
                },
                "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
                }
            }
        }
    }
}
```

### Búsqueda de 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` - Enterprise Mobility + Security E3

### Salida

**Cuando se detectan infracciones:**

* Salida de consola en el registro del trabajo
* Exportación CSV (`License_Threshold_Violations.csv`)
* Correo electrónico del informe 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 finaliza correctamente

### Solución de problemas

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

**Correo electrónico no enviado**: Verifique 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

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

### Ubicación

Organization → General → Report License Assignment (Scheduled)

**Nombre completo del runbook**

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

### Detalles

| Propiedad          | Valor                                                                                                             |
| ------------------ | ----------------------------------------------------------------------------------------------------------------- |
| Versión            | 1.3.0                                                                                                             |
| Módulos requeridos | <p>RealmJoin.RunbookHelper (>= 0.8.9)<br>Microsoft.Graph.Authentication (>= 2.39.0)<br>Az.Accounts (>= 5.5.2)</p> |
| 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 — función: 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 deben estar disponibles y un MaxThreshold opcional que especifique el número máximo de licencias que deben estar disponibles.

Esto debe configurarse en la personalización del runbook

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

#### ReportFileFormat

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

| Propiedad                        | Valor                           |
| -------------------------------- | ------------------------------- |
| Requerido                        | falso                           |
| Valor predeterminado             | CSV y XLSX                      |
| Tipo                             | Cadena                          |
| Nombre para mostrar en el portal | Formato del archivo del informe |

**Opciones del portal**

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

#### CreateDownloadLink

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

| Propiedad                        | Valor                                                                             |
| -------------------------------- | --------------------------------------------------------------------------------- |
| Requerido                        | falso                                                                             |
| Valor predeterminado             | Falso                                                                             |
| Tipo                             | Booleano                                                                          |
| Nombre para mostrar en el portal | ¿Crear un enlace de descarga de archivo (cargar el informe en el almacenamiento)? |

**Opciones del portal**

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

#### ContainerName

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

| Propiedad            | Valor                                                    |
| -------------------- | -------------------------------------------------------- |
| Requerido            | falso                                                    |
| Valor predeterminado | report-license-assignment                                |
| Tipo                 | Cadena                                                   |
| Oculto en el portal  | sí (preestablecido mediante personalización del runbook) |

#### ResourceGroupName

Grupo de recursos que contiene el Storage Account. Obtenido de la configuración del Tenant de RJReport.

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

#### StorageAccountName

Nombre del Storage Account usado para la carga. Obtenido de la configuración del Tenant de RJReport.

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

#### LinkExpiryDays

Número de días hasta que expire el enlace de descarga generado. Obtenido de la configuración del Tenant de RJReport.

| Propiedad            | Valor                                                    |
| -------------------- | -------------------------------------------------------- |
| Requerido            | falso                                                    |
| Valor predeterminado | 6                                                        |
| Tipo                 | Int32                                                    |
| Oculto en el portal  | sí (preestablecido mediante 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 direcciones separadas por comas (cadena).

| Propiedad                        | Valor                                                |
| -------------------------------- | ---------------------------------------------------- |
| Requerido                        | falso                                                |
| Valor predeterminado             |                                                      |
| Tipo                             | Cadena                                               |
| Nombre para mostrar en el portal | Dirección(es) de correo electrónico del destinatario |

#### EmailFrom

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

| Propiedad            | Valor                                                    |
| -------------------- | -------------------------------------------------------- |
| Requerido            | falso                                                    |
| Valor predeterminado |                                                          |
| Tipo                 | Cadena                                                   |
| Oculto en el portal  | sí (preestablecido mediante 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 del informe. Procede de la configuración de Tenant RJReport.Branding.HeaderImageUrl. Cuando está vacía, se usa la imagen de encabezado predeterminada de RealmJoin.

| Propiedad            | Valor                                                    |
| -------------------- | -------------------------------------------------------- |
| Requerido            | falso                                                    |
| Valor predeterminado |                                                          |
| Tipo                 | Cadena                                                   |
| Oculto en el portal  | sí (preestablecido mediante 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 del informe. Procede de la configuración de Tenant RJReport.Branding.FooterImageUrl. Cuando está vacía, se usa la imagen de pie de página predeterminada de RealmJoin.

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

#### BrandingFooterLink

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

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

#### BrandingAccentColor

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

#### BrandingTextColor

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

[Volver a la vista general de la 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.
