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

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

Alertar quando a disponibilidade de licenças ultrapassar limites

{% 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/automatizacao/runbooks/scheduling.md) para obter detalhes sobre como configurar os agendamentos do runbook.
{% endhint %}

### Descrição

Verifica quantas licenças dos SKUs configurados ainda estão disponíveis. Quando a contagem desce abaixo de um limite mínimo ou sobe acima de um limite máximo, os SKUs afetados são reportados para que possa comprar ou recuperar licenças a tempo. O relatório pode ser enviado por e-mail ou disponibilizado como um link de download.

### Configuração de licença

Os SKUs a verificar e os respetivos limites são predefinidos na personalização do runbook como o `InputJson` valor oculto. Cada configuração de licença requer:

* **SKUPartNumber** (obrigatório): identificador do SKU da Microsoft
* **FriendlyName** (obrigatório): nome apresentado
* **MinThreshold** (opcional): alerta quando as licenças disponíveis < limite
* **MaxThreshold** (opcional): alerta 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** (para evitar faltas):

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

**Apenas limite máximo** (para evitar sobreprovisionamento):

```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": {
                "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 a [Guia de Personalização de Runbooks](https://docs.realmjoin.com/automation/runbooks/runbook-customization) para a sintaxe.

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

### Resultados

Cada execução escreve os seus resultados no separador Output Data do portal RealmJoin: um resumo, as licenças fora dos respetivos limites, os SKUs configurados que não existem no Tenant e as licenças dentro dos respetivos limites. Cada tabela pode ser exportada para o Excel ali.

* **Quando são detetadas violações:** os ficheiros do relatório (CSV e/ou pasta de trabalho do Excel) listam as licenças fora dos respetivos limites, e o e-mail contém o resumo, as violações, as recomendações e os ficheiros como anexos.
* **Quando um SKU configurado não é encontrado:** o e-mail lista o SKU como um problema de configuração.
* **Quando todas as licenças estão dentro dos respetivos limites:** nenhum e-mail é enviado, nenhum ficheiro de relatório é criado e a execução termina com êxito.

### Entrega do relatório

Os ficheiros do relatório só são gerados quando um método de entrega é selecionado através da **Entrega do relatório** opção (e-mail e/ou link de download) e pelo menos uma licença está fora dos respetivos limites. Com *Apenas dados de saída* selecionado, os resultados são lidos diretamente na aba Output Data do portal RealmJoin, onde cada tabela também pode ser exportada para o Excel. A entrega por e-mail e a geração de link de download são independentes e podem ser combinadas.

Para a ligação de transferência, os ficheiros do relatório são carregados para a Storage Account do Azure configurada nas `RJReport.StorageAccount.*` definições de Tenant, e são devolvidos links de download SAS com prazo limitado. O carregamento para o armazenamento autentica-se com a identidade gerida da conta de Automação; essa identidade precisa da **Leitor e acesso aos dados** função RBAC na Storage Account de destino (isto é uma atribuição de Azure RBAC, não uma permissão de aplicação do Graph).

Os agendamentos criados antes da **Entrega do relatório** opção existir continuam a enviar o respetivo email: um destinatário guardado por si só ainda ativa o email para eles. Quando esse agendamento é aberto para edição, a opção mostra *Apenas dados de saída*; selecione novamente a entrega antes de guardar, caso contrário o agendamento deixa de enviar o relatório.

### Configuração relativa ao envio de emails

O envio de um relatório por email é opcional e só acontece quando *Enviar também o relatório por email* ou *Enviar também email e ligação de transferência* é selecionado como entrega do relatório; nesse caso é necessário um destinatário. O endereço do remetente é obtido de `RJReport.EmailSender` Tenant.

Este runbook envia emails utilizando a API do Microsoft Graph. Para enviar emails através da Graph API, é necessário configurar um endereço de email existente na personalização do runbook.

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

#### Branding do email

O email do relatório respeita as definições opcionais de `RJReport.Branding.*` do Tenant:

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

Quando estas definições não estão configuradas, são usadas as imagens e cores predefinidas de RealmJoin. Uma imagem que não possa ser transferida ou validada, ou um valor de cor inválido, nunca impede o email do relatório - em vez disso, é usada a predefinição correspondente.

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

### Resolução de problemas

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

**E-mail não enviado**: Verifique a `RJReport.EmailSender` definição e a permissão Mail.Send da identidade gerida. Não é enviado nenhum e-mail quando todas as licenças estão dentro dos respetivos limites.

**JSON inválido**: Valide o formato JSON antes de o configurar.

### Nota de migração

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

### Localização

Organization → General → 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.4.0                                                                                                              |
| Módulos necessários | <p>RealmJoin.RunbookHelper (>= 0.8.10)<br>Microsoft.Graph.Authentication (>= 2.41.2)<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 as contagens de licenças em relação aos limites*
  * Mail.Send *(opcional — funcionalidade: Relatório por email)*
    * *Envia o e-mail do relatório de limites através de Send-RjRbReportEmail quando a entrega por e-mail é selecionada*

#### Notas de permissão

Azure Storage Account: função 'Leitor e acesso aos dados' para a identidade gerida da conta de Automação na Storage Account de destino - o carregamento obtém as chaves da conta através de listKeys (necessário apenas para as opções de ligação de transferência)

### Parâmetros

#### InputJson

Lista de SKUs com nomes amigáveis e limites mínimos e máximos, como um array JSON. Predefinida 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

Entregar o relatório como CSV, como uma pasta de trabalho do Excel ou ambos.

| Propriedade                | Valor                                                  |
| -------------------------- | ------------------------------------------------------ |
| Obrigatório                | falso                                                  |
| Valor predefinido          | CSV e XLSX                                             |
| Tipo                       | Cadeia de caracteres                                   |
| Nome de exibição do portal | Formato do ficheiro do relatório                       |
| Oculto no portal           | sim (predefinido através da personalização do runbook) |

**Opções do portal**

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

#### CreateDownloadLink

Também carregue o relatório e devolva uma ligação de download que expira após alguns dias.

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

#### ContainerName

Contentor de armazenamento para o qual os ficheiros do relatório são carregados. Definir por runbook.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido | report-license-assignment                              |
| Tipo              | Cadeia de caracteres                                   |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### ResourceGroupName

Grupo de recursos da conta de armazenamento para carregamentos do relatório. Obtido a partir da definição de tenant RJReport.StorageAccount.ResourceGroup.

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

#### StorageAccountName

Conta de armazenamento para carregamentos do relatório. Obtida a partir da definição de tenant RJReport.StorageAccount.StorageAccountName.

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

#### LinkExpiryDays

Número de dias que uma ligação de download permanece válida. Obtido a partir da definição de tenant RJReport.StorageAccount.LinkExpiryDays.

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

#### SendEmailReport

Envia o relatório para o endereço de email do destinatário.

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

#### EmailTo

Enviar o relatório para estes endereços. Separe vários com vírgulas; cada destinatário recebe um email separado.

| Propriedade                | Valor                                                  |
| -------------------------- | ------------------------------------------------------ |
| Obrigatório                | falso                                                  |
| Valor predefinido          |                                                        |
| Tipo                       | Cadeia de caracteres                                   |
| Nome de exibição do portal | Endereço(s) de email do(s) destinatário(s)             |
| Oculto no portal           | sim (predefinido através da personalização do runbook) |

#### EmailFrom

Endereço do remetente do email do relatório. Obtido da definição do Tenant RJReport.EmailSender.

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

#### BrandingHeaderImageUrl

Imagem de cabeçalho do email do relatório (URL HTTPS, PNG/JPEG/GIF, máx. 200 KB). Obtida da definição do Tenant RJReport.Branding.HeaderImageUrl; é utilizado o cabeçalho predefinido do RealmJoin quando estiver vazio.

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

#### BrandingFooterImageUrl

Imagem de rodapé do email do relatório (URL HTTPS, PNG/JPEG/GIF, máx. 200 KB). Obtida da definição do Tenant RJReport.Branding.FooterImageUrl; é utilizado o rodapé predefinido do RealmJoin quando estiver vazio.

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

#### BrandingFooterLink

Ligação por trás da imagem de rodapé do email do relatório. Obtida da definição do Tenant RJReport.Branding.FooterLink; realmjoin.com é utilizado quando estiver vazio.

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

#### BrandingAccentColor

Cor de destaque do email do relatório como um valor hexadecimal de 6 dígitos. Obtida da definição do Tenant RJReport.Branding.AccentColor; é utilizado o valor predefinido do RealmJoin quando estiver vazio ou inválido.

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

#### BrandingTextColor

Cor do texto do email do relatório como um valor hexadecimal de 6 dígitos. Obtida da definição do Tenant RJReport.Branding.TextColor; é utilizado o valor predefinido do RealmJoin quando estiver vazio ou inválido.

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

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