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

# Relatório agendado de atribuição de licenças

Gerar e enviar por email um relatório de disponibilidade de licenças com base em limiares

{% hint style="info" %}
Este é um Runbook agendado. Foi concebido para ser executado segundo um agendamento recorrente, em vez de ser acionado para um único objeto. Consulte [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. Podem ser configurados dois tipos de limites. O primeiro tipo é um limite mínimo, que desencadeia 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 desencadeia um alerta quando o número de licenças disponíveis ultrapassa um número especificado. O relatório inclui informações detalhadas sobre as 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, devolvendo ligações de download com tempo limitado. O parâmetro ReportFileFormat controla quais formatos de ficheiro são gerados e entregues (apenas CSV, CSV e XLSX, ou apenas XLSX). Quando o anexo CSV excede o limite de tamanho do email e "CSV & XLSX" é selecionado, o email recorre apenas à pasta de trabalho do Excel.

### Personalização do runbook

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

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 `RJReport.EmailSender` configuração do Tenant.

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

Consulte a [documentação de Configurações de Relatório do RealmJoin](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) para detalhes sobre todas as definições disponíveis.

#### Branding do e-mail

O e-mail do relatório respeita a configuração opcional `RJReport.Branding.*` do Tenant:

* **Imagem de cabeçalho e rodapé** – URLs públicas HTTPS, PNG/JPEG/GIF, máx. 200 KB cada
* **Ligação do rodapé** – destino da imagem de rodapé
* **Cor de acento e texto** – valores hexadecimais de 6 dígitos, por exemplo `#0052cc`

Quando estas definições não estão configuradas, são usados os gráficos e cores padrão do RealmJoin. Uma imagem que não possa ser descarregada ou validada, ou um valor de cor inválido, nunca impede o e-mail do relatório – em vez disso, é usado o padrão correspondente.

Instruções de configuração e requisitos de imagem: [Branding do e-mail](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings#email-branding-optional).

#### Configuração do InputJson

Cada configuração de licença requer:

* **SKUPartNumber** (obrigatório): identificador do SKU da Microsoft
* **FriendlyName** (obrigatório): nome a apresentar
* **MinThreshold** (opcional): alertar quando as licenças disponíveis < limite
* **MaxThreshold** (opcional): alertar quando as licenças disponíveis > limite

Tem de ser definido, pelo menos, um limite por licença.

#### Exemplos de configuração

**Apenas limite mínimo** (para evitar ruturas):

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

**Apenas limite máximo** (para 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
                }
            }
        }
    }
}
```

### Encontrar números de parte de 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` - Enterprise Mobility + Security E3

### Saída

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

* Saída do console no registo do trabalho
* 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 trabalho é 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 EmailFrom e a permissão Mail.Send

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

### Nota de migração

Legado `WarningThreshold` é mapeado automaticamente para `MinThreshold` - as configurações antigas continuam a funcionar.

### Localização

Organização → Geral → Relatório de atribuição de licenças (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 da aplicação

* **Tipo**: Microsoft Graph
  * Organization.Read.All
    * *Lê /organization e /subscribedSkus para avaliar os contadores 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 através de Send-RjReportEmail quando EmailTo estiver configurado*

### Parâmetros

#### InputJson

Array JSON contendo configurações de SKU com limites. Cada entrada deve incluir um SKUPartNumber para o identificador do SKU da Microsoft, um FriendlyName como nome a apresentar 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 de ser configurado na personalização do runbook

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | verdadeiro                                             |
| Valor predefinido |                                                        |
| Tipo              | Objeto                                                 |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### ReportFileFormat

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

| Propriedade                | Valor                           |
| -------------------------- | ------------------------------- |
| Obrigatório                | falso                           |
| Valor predefinido          | CSV e XLSX                      |
| Tipo                       | Texto                           |
| Nome de exibição no portal | Formato do arquivo do relatório |

**Opções do portal**

| Opção do portal | Valor |
| --------------- | ----- |
| CSV e XLSX      |       |
| Somente CSV     |       |
| Somente XLSX    |       |

#### CreateDownloadLink

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

| Propriedade                | Valor                                                                            |
| -------------------------- | -------------------------------------------------------------------------------- |
| Obrigatório                | falso                                                                            |
| Valor predefinido          | 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 predefinido | report-license-assignment                              |
| Tipo              | Texto                                                  |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### ResourceGroupName

Grupo de recursos que contém a Storage Account. Obtido das definições do Tenant RJReport.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Texto                                                  |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### StorageAccountName

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

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Texto                                                  |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### LinkExpiryDays

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

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido | 6                                                      |
| Tipo              | Int32                                                  |
| Oculto no portal  | sim (predefinido através da 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 predefinido          |                                       |
| Tipo                       | Texto                                 |
| Nome de exibição no portal | Endereço(s) de e-mail do destinatário |

#### EmailFrom

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

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Texto                                                  |
| Oculto no portal  | sim (predefinido através da 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 vazio, é usada a imagem de cabeçalho padrão do RealmJoin.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Texto                                                  |
| Oculto no portal  | sim (predefinido através da 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 vazio, é usada a imagem de rodapé padrão do RealmJoin.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Texto                                                  |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### BrandingFooterLink

URL opcional para a qual a imagem de rodapé aponta. Obtida da configuração do Tenant RJReport.Branding.FooterLink. Quando vazio, é usada a ligação padrão (<https://www.realmjoin.com>).

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Texto                                                  |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### BrandingAccentColor

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Texto                                                  |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### BrandingTextColor

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Texto                                                  |
| Oculto no portal  | sim (predefinido através da 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.
