> 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

Alertar cuando la disponibilidad de licencias cruce los umbrales

{% 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

Comprueba cuántas licencias de los SKU configurados siguen disponibles. Cuando un recuento cae por debajo de un umbral mínimo o supera un umbral máximo, se notifican los SKU afectados para que puedas comprar o recuperar licencias a tiempo. El informe puede enviarse por correo electrónico o proporcionarse como un enlace de descarga.

### Configuración de licencias

Los SKU que se van a comprobar y sus umbrales se preconfiguran en la personalización del runbook como el `InputJson` valor oculto. 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 < umbral
* **MaxThreshold** (opcional): alerta cuando las licencias disponibles > umbral

Debe establecerse al menos un umbral por licencia.

#### Ejemplos de configuración

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

```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": {
                "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
                        }
                    ]
                }
            }
        }
    }
}
```

Consulte la [Guía de personalización de runbooks](https://docs.realmjoin.com/automation/runbooks/runbook-customization) para la sintaxis.

### 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` - Enterprise Mobility + Security E3

### Resultados

Cada ejecución escribe sus resultados en la pestaña Datos de salida del portal RealmJoin: un resumen, las licencias fuera de sus umbrales, los SKU configurados que no existen en el inquilino y las licencias dentro de sus umbrales. Allí se puede exportar cada tabla a Excel.

* **Cuando se detectan infracciones:** los archivos del informe (CSV y/o libro de Excel) enumeran las licencias fuera de sus umbrales, y el correo electrónico contiene el resumen, las infracciones, las recomendaciones y los archivos como adjuntos.
* **Cuando no se encuentra un SKU configurado:** el correo electrónico enumera el SKU como un problema de configuración.
* **Cuando todas las licencias están dentro de sus umbrales:** no se envía ningún correo electrónico, no se crea ningún archivo de informe y la ejecución finaliza correctamente.

### Entrega del informe

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) y al menos una licencia está fuera de sus umbrales. Con *Solo datos de salida* seleccionado, los resultados se leen directamente en la pestaña Datos de salida del portal RealmJoin, donde cada tabla también puede exportarse a Excel. La entrega por correo electrónico y la generación del enlace de descarga son independientes y pueden combinarse.

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 crearon antes de que la **Entrega del informe** opción existiera siguen enviando su correo electrónico: con un destinatario almacenado solo, el correo electrónico sigue estando habilitado para ellos. Cuando se abre una programación de ese tipo para editarla, la opción muestra *Solo datos de salida*; seleccione de nuevo la entrega antes de guardar; de lo contrario, la programación deja de enviar el informe.

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

### Solución de problemas

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

**Correo electrónico no enviado**: Compruebe la `RJReport.EmailSender` configuración y el permiso Mail.Send de la identidad administrada. No se envía ningún correo electrónico cuando todas las licencias están dentro de sus umbrales.

**JSON no válido**: Valide el formato JSON antes de configurarlo.

### Nota de migración

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

### Ubicación

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

**Nombre completo del runbook**

rjgit-org\_general\_report-license-assignment\_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
  * 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 umbrales mediante Send-RjRbReportEmail cuando se selecciona la entrega por correo electrónico*

#### 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

#### InputJson

Lista de SKU con nombres descriptivos y umbrales mínimos y máximos, como un array JSON. Preconfigurada en la personalización del runbook.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | verdadero                                                   |
| Valor predeterminado |                                                             |
| Tipo                 | Objeto                                                      |
| 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 | report-license-assignment                                   |
| 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) |

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

[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/report-license-assignment_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.
