> 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

### 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 as licenças que estão fora dos limites configurados, exporta-as para arquivos CSV e/ou Excel (xlsx) e envia-as por email. Os arquivos do relatório também podem ser carregados para uma Azure Storage Account, retornando links de download com tempo limitado. O parâmetro ReportFileFormat controla quais formatos de arquivo são gerados e entregues (somente CSV, CSV e XLSX, ou somente 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-mail

O envio de um relatório por e-mail é opcional e só acontece quando é fornecido 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 das definições de relatório do RealmJoin](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) para mais detalhes.

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

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

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

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

### Saída

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

* Saída do console no log 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 de 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 a funcionar.

### Localização

Organização → Geral → Atribuição de licença de relatório (Agendado)

**Nome completo do runbook**

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

### Permissões

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

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

### Parâmetros

#### InputJson

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

Isso precisa ser configurado na personalização do runbook

| Propriedade       | Valor  |
| ----------------- | ------ |
| Obrigatório       | true   |
| Valor predefinido |        |
| Tipo              | Objeto |

#### ReportFileFormat

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

| Propriedade       | Valor      |
| ----------------- | ---------- |
| Obrigatório       | false      |
| Valor predefinido | CSV & XLSX |
| Tipo              | String     |

#### CreateDownloadLink

Se ativado, os ficheiros do relatório são carregados para um Azure Storage Account e são devolvidas ligações de download com validade limitada. Desativado por predefinição.

| Propriedade       | Valor    |
| ----------------- | -------- |
| Obrigatório       | false    |
| Valor predefinido | Falso    |
| Tipo              | Booleano |

#### 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       | false                     |
| Valor predefinido | report-license-assignment |
| Tipo              | String                    |

#### ResourceGroupName

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

| Propriedade       | Valor  |
| ----------------- | ------ |
| Obrigatório       | false  |
| Valor predefinido |        |
| Tipo              | String |

#### StorageAccountName

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

| Propriedade       | Valor  |
| ----------------- | ------ |
| Obrigatório       | false  |
| Valor predefinido |        |
| Tipo              | String |

#### LinkExpiryDays

Número de dias até que a ligação de download gerada expire. Obtido das configurações do Tenant do RJReport.

| Propriedade       | Valor |
| ----------------- | ----- |
| Obrigatório       | false |
| Valor predefinido | 6     |
| Tipo              | Int32 |

#### 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       | false  |
| Valor predefinido |        |
| Tipo              | String |

#### EmailFrom

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

| Propriedade       | Valor  |
| ----------------- | ------ |
| Obrigatório       | false  |
| Valor predefinido |        |
| Tipo              | String |

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