> 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/pt/automacao/runbooks/runbook-references/org/general/report-license-assignment_scheduled.md).

# Relatar atribuição de licenças agendado

{% hint style="info" %}
Este é um runbook agendado. Ele foi projetado para ser executado em um agendamento recorrente, em vez de ser acionado para um único objeto. Veja [Agendamento](/pt/automacao/runbooks/scheduling.md) para detalhes sobre como configurar os agendamentos do runbook.
{% endhint %}

### Descrição

Este runbook verifica a disponibilidade de licenças com base nos SKUs transmitidos e envia um relatório por email se algum limite for atingido. Dois tipos de limites podem ser configurados. O primeiro tipo é um limite mínimo, que dispara um alerta quando o número de licenças disponíveis fica abaixo de um número especificado. O segundo tipo é um limite máximo, que dispara um alerta quando o número de licenças disponíveis excede um número especificado. O relatório inclui informações detalhadas sobre licenças que estão fora dos limites configurados, exporta-as para ficheiros CSV e/ou Excel (xlsx) e envia-as por email. Os ficheiros do relatório também podem ser carregados para uma Azure Storage Account, retornando links de transferência com validade limitada. O parâmetro ReportFileFormat controla quais formatos de ficheiro são gerados e entregues (apenas CSV, CSV & XLSX, ou apenas XLSX). Quando o anexo CSV excede o limite de tamanho do email e "CSV & XLSX" é selecionado, o email recorre apenas ao livro do Excel.

### Personalização do Runbook

#### Configuração relativa ao envio de e-mail

O envio de um relatório por e-mail é opcional e só acontece quando um destinatário (`EmailTo`) é fornecido. O endereço do remetente é obtido da configuração de tenant `RJReport.EmailSender` .

Este runbook envia e-mails usando a API do Microsoft Graph. Para enviar e-mails via API do Graph, é necessário configurar um endereço de e-mail existente na personalização do runbook.

Consulte a [documentação das Configurações de Relatório RealmJoin](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) para detalhes.

#### Branding do e-mail

O e-mail do relatório respeita as configurações opcionais `RJReport.Branding.*` do tenant: uma imagem de cabeçalho personalizada, uma imagem de rodapé personalizada (URLs HTTPS públicas, PNG/JPEG/GIF, máx. 200 KB cada), um link de rodapé personalizado e cores personalizadas de destaque e de texto (valores hexadecimais de 6 dígitos, por ex. `#0052cc`). Quando essas configurações não estão definidas, são usadas as imagens e cores padrão do RealmJoin. Uma imagem de branding que não possa ser transferida por download ou validada, ou um valor de cor que não seja uma cor hex válida, nunca impede o e-mail do relatório - em vez disso, é usado o padrão correspondente.

Consulte a [documentação das Configurações de Relatório RealmJoin](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) para detalhes de configuração.

#### Configuração do InputJson

Cada configuração de licença requer:

* **SKUPartNumber** (obrigatório): Identificador de SKU da Microsoft
* **FriendlyName** (obrigatório): Nome de exibição
* **MinThreshold** (opcional): Alertar quando as licenças disponíveis < limite
* **MaxThreshold** (opcional): Alertar quando as licenças disponíveis > limite

Pelo menos um limite deve ser definido por licença.

#### Exemplos de configuração

**Apenas limite mínimo** (evitar escassez):

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

**Apenas limite máximo** (evitar sobreaprovisionamento):

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

**Ambos os limites** (manter o intervalo):

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

#### Personalização completa do Runbook

```json
{
    "Settings": {
        "RJReport": {
            "EmailSender": "sender@contoso.com"
        }
    },
    "Runbooks": {
        "rjgit-org_general_report-license-assignment_scheduled": {
            "Parameters": {
                "EmailTo": {
                    "DisplayName": "Endereço(s) de email do destinatário"
                },
                "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
                }
            }
        }
    }
}
```

### Localizando números de peça do SKU

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

SKUs comuns:

* `ENTERPRISEPACK` - Microsoft 365 E3
* `ENTERPRISEPREMIUM` - Microsoft 365 E5
* `EMS` - Mobilidade Empresarial + Segurança E3

### Saída

**Quando forem detetadas violações:**

* Saída do console no registo do job
* Exportação CSV (`License_Threshold_Violations.csv`)
* Relatório por email com resumo, violações, recomendações e anexo CSV

**Quando tudo estiver dentro dos limites:**

* Nenhum email enviado
* O job é concluído com êxito

### Resolução de problemas

**SKU não encontrado**: Verifique se o SKU existe usando `Get-MgSubscribedSku`

**Email não enviado**: Verifique a configuração do EmailFrom e a permissão Mail.Send

**JSON inválido**: Valide o formato JSON antes da configuração

### Nota de migração

Legado `WarningThreshold` mapeia automaticamente para `MinThreshold` - as configurações antigas continuam funcionando.

### Localização

Organização → Geral → Relatório de atribuição de licença (Agendado)

**Nome completo do runbook**

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

### Detalhes

| Propriedade         | Valor                                                                                                             |
| ------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Versão              | 1.3.0                                                                                                             |
| Módulos necessários | <p>RealmJoin.RunbookHelper (>= 0.8.9)<br>Microsoft.Graph.Authentication (>= 2.39.0)<br>Az.Accounts (>= 5.5.2)</p> |
| Agendável           | sim                                                                                                               |

### Permissões

#### Permissões de aplicação

* **Tipo**: Microsoft Graph
  * Organization.Read.All
    * *Lê /organization e /subscribedSkus para avaliar as contagens de licenças em relação aos limites*
  * Mail.Send *(opcional — funcionalidade: relatório por e-mail)*
    * *Envia o email do relatório de limites via Send-RjReportEmail quando EmailTo está configurado*

### Parâmetros

#### InputJson

Vetor JSON contendo configurações de SKU com limites. Cada entrada deve incluir um SKUPartNumber para o identificador de SKU da Microsoft, um FriendlyName como nome de exibição da licença, um MinThreshold opcional que especifica o número mínimo de licenças que deve estar disponível, e um MaxThreshold opcional que especifica o número máximo de licenças que deve estar disponível.

Isto precisa ser configurado na personalização do runbook

| Propriedade      | Valor                                           |
| ---------------- | ----------------------------------------------- |
| Obrigatório      | verdadeiro                                      |
| Valor padrão     |                                                 |
| Tipo             | Objeto                                          |
| Oculto no portal | sim (predefinido via personalização do runbook) |

#### ReportFileFormat

Controla quais formatos de ficheiro de relatório são gerados e entregues: "apenas CSV", "CSV & XLSX" (predefinição) ou "apenas XLSX".

| Propriedade                | Valor                            |
| -------------------------- | -------------------------------- |
| Obrigatório                | falso                            |
| Valor padrão               | CSV & XLSX                       |
| Tipo                       | String                           |
| Nome de exibição no portal | Formato do ficheiro de relatório |

**Opções do portal**

| Opção do portal | Valor |
| --------------- | ----- |
| CSV & XLSX      |       |
| Apenas CSV      |       |
| Apenas XLSX     |       |

#### CreateDownloadLink

Se ativado, os ficheiros de relatório são carregados para uma Azure Storage Account e são devolvidos links de download com validade limitada. Desativado por predefinição.

| Propriedade                | Valor                                                                            |
| -------------------------- | -------------------------------------------------------------------------------- |
| Obrigatório                | falso                                                                            |
| Valor padrão               | Falso                                                                            |
| Tipo                       | Booleano                                                                         |
| Nome de exibição no portal | Criar um link de download do ficheiro (carregar relatório para o armazenamento)? |

**Opções do portal**

| Opção do portal                                           | Valor      |
| --------------------------------------------------------- | ---------- |
| Sim - carregar o relatório e devolver um link de download | verdadeiro |
| Não - não criar um link de download                       | falso      |

#### ContainerName

Nome do contentor de armazenamento usado para o carregamento. Configurado por runbook (não é uma definição global do RJReport).

| Propriedade      | Valor                                           |
| ---------------- | ----------------------------------------------- |
| Obrigatório      | falso                                           |
| Valor padrão     | report-license-assignment                       |
| Tipo             | String                                          |
| Oculto no portal | sim (predefinido via personalização do runbook) |

#### ResourceGroupName

Grupo de recursos que contém a storage account. Obtido a partir das definições do Tenant do RJReport.

| Propriedade      | Valor                                           |
| ---------------- | ----------------------------------------------- |
| Obrigatório      | falso                                           |
| Valor padrão     |                                                 |
| Tipo             | String                                          |
| Oculto no portal | sim (predefinido via personalização do runbook) |

#### StorageAccountName

Nome da Storage Account usado para o carregamento. Obtido a partir das definições do Tenant do RJReport.

| Propriedade      | Valor                                           |
| ---------------- | ----------------------------------------------- |
| Obrigatório      | falso                                           |
| Valor padrão     |                                                 |
| Tipo             | String                                          |
| Oculto no portal | sim (predefinido via personalização do runbook) |

#### LinkExpiryDays

Número de dias até o link de download gerado expirar. Obtido a partir das definições do Tenant do RJReport.

| Propriedade      | Valor                                           |
| ---------------- | ----------------------------------------------- |
| Obrigatório      | falso                                           |
| Valor padrão     | 6                                               |
| Tipo             | Int32                                           |
| Oculto no portal | sim (predefinido via personalização do runbook) |

#### EmailTo

Se especificado, será enviado um email com o relatório para o(s) endereço(s) fornecido(s). Pode ser um único endereço ou vários endereços separados por vírgulas (string).

| Propriedade                | Valor                                 |
| -------------------------- | ------------------------------------- |
| Obrigatório                | falso                                 |
| Valor padrão               |                                       |
| Tipo                       | String                                |
| Nome de exibição no portal | Endereço(s) de e-mail do destinatário |

#### EmailFrom

Endereço de email do remetente resolvido a partir das definições.

| Propriedade      | Valor                                           |
| ---------------- | ----------------------------------------------- |
| Obrigatório      | falso                                           |
| Valor padrão     |                                                 |
| Tipo             | String                                          |
| Oculto no portal | sim (predefinido via personalização do runbook) |

#### BrandingHeaderImageUrl

URL HTTPS pública opcional de uma imagem de cabeçalho personalizada (PNG/JPEG/GIF, máx. 200 KB) para o e-mail do relatório. Obtida da configuração do tenant RJReport.Branding.HeaderImageUrl. Quando vazia, é usada a imagem padrão de cabeçalho do RealmJoin.

| Propriedade      | Valor                                           |
| ---------------- | ----------------------------------------------- |
| Obrigatório      | falso                                           |
| Valor padrão     |                                                 |
| Tipo             | String                                          |
| Oculto no portal | sim (predefinido via personalização do runbook) |

#### BrandingFooterImageUrl

URL HTTPS pública opcional de uma imagem de rodapé personalizada (PNG/JPEG/GIF, máx. 200 KB) para o e-mail do relatório. Obtida da configuração do tenant RJReport.Branding.FooterImageUrl. Quando vazia, é usada a imagem padrão de rodapé do RealmJoin.

| Propriedade      | Valor                                           |
| ---------------- | ----------------------------------------------- |
| Obrigatório      | falso                                           |
| Valor padrão     |                                                 |
| Tipo             | String                                          |
| Oculto no portal | sim (predefinido via personalização do runbook) |

#### BrandingFooterLink

URL opcional para onde a imagem de rodapé aponta. Obtida da configuração do tenant RJReport.Branding.FooterLink. Quando vazia, é usado o link padrão (<https://www.realmjoin.com>).

| Propriedade      | Valor                                           |
| ---------------- | ----------------------------------------------- |
| Obrigatório      | falso                                           |
| Valor padrão     |                                                 |
| Tipo             | String                                          |
| Oculto no portal | sim (predefinido via personalização do runbook) |

#### BrandingAccentColor

| Propriedade      | Valor                                           |
| ---------------- | ----------------------------------------------- |
| Obrigatório      | falso                                           |
| Valor padrão     |                                                 |
| Tipo             | String                                          |
| Oculto no portal | sim (predefinido via personalização do runbook) |

#### BrandingTextColor

| Propriedade      | Valor                                           |
| ---------------- | ----------------------------------------------- |
| Obrigatório      | falso                                           |
| Valor padrão     |                                                 |
| Tipo             | String                                          |
| Oculto no portal | sim (predefinido via personalização do runbook) |

[Voltar à visão geral da referência do runbook](/pt/automacao/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/pt/automacao/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.
