# Informar asignación de licencias programado

### 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 las envía por correo electrónico.

### Personalización de Runbook

#### Configuración relativa al envío de correo electrónico

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

Este proceso se describe en detalle en la [Configurar informes por correo electrónico](https://github.com/realmjoin/realmjoin-runbooks/tree/master/docs/general/setup-email-reporting.md) documentació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** (evitar faltantes):

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

**Solo umbral máximo** (evitar sobreasignación):

```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
                }
            }
        }
    }
}
```

### 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`)
* Informe por correo electrónico con resumen, infracciones, recomendaciones y archivo CSV adjunto

**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`

**No se envió el correo electrónico**: 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

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

### Permisos

#### Permisos de aplicación

* **Tipo**: Microsoft Graph
  * Organization.Read.All
  * User.Read.All
  * Mail.Send

### 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 especifica el número mínimo de licencias que deben estar disponibles y un MaxThreshold opcional que especifica 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 |

#### EmailTo

Dirección de correo electrónico del destinatario o lista de destinatarios separada por comas.

| Propiedad            | Valor  |
| -------------------- | ------ |
| Requerido            | true   |
| Valor predeterminado |        |
| Tipo                 | Cadena |

#### EmailFrom

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

| Propiedad            | Valor  |
| -------------------- | ------ |
| Requerido            | false  |
| Valor predeterminado |        |
| Tipo                 | Cadena |

[Volver a la vista general de referencia del runbook](/es/automatizacion/runbooks/runbook-references.md)


---

# Agent Instructions: 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:

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

The question should be specific, self-contained, and written in natural language.
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.
