# Rapporter l’affectation de licence planifié

### Description

Ce runbook vérifie la disponibilité des licences en fonction des SKU transmis et envoie un rapport par e-mail si des seuils sont atteints. Deux types de seuils peuvent être configurés. Le premier type est un seuil minimum, qui déclenche une alerte lorsque le nombre de licences disponibles passe en dessous d’un nombre spécifié. Le second type est un seuil maximum, qui déclenche une alerte lorsque le nombre de licences disponibles dépasse un nombre spécifié. Le rapport comprend des informations détaillées sur les licences qui sont en dehors des seuils configurés, les exporte dans des fichiers CSV et les envoie par e-mail.

### Personnalisation du runbook

#### Configuration concernant l’envoi d’e-mails

Ce runbook envoie des e-mails à l’aide de l’API Microsoft Graph. Pour envoyer des e-mails via l’API Graph, vous devez configurer une adresse e-mail existante dans la personnalisation du runbook.

Ce processus est décrit en détail dans le [Configuration du rapport par e-mail](https://github.com/realmjoin/realmjoin-runbooks/tree/master/docs/general/setup-email-reporting.md) documentation.

#### Configuration de InputJson

Chaque configuration de licence nécessite :

* **SKUPartNumber** (obligatoire) : identifiant de SKU Microsoft
* **FriendlyName** (obligatoire) : nom d’affichage
* **MinThreshold** (facultatif) : alerte lorsque le nombre de licences disponibles < seuil
* **MaxThreshold** (facultatif) : alerte lorsque le nombre de licences disponibles > seuil

Au moins un seuil doit être défini par licence.

#### Exemples de configuration

**Seulement le seuil minimum** (prévenir les ruptures) :

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

**Seulement le seuil maximum** (prévenir le surdimensionnement) :

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

**Les deux seuils** (maintenir une plage) :

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

#### Personnalisation complète du runbook

```json
{
    "Settings": {
        "RJReport": {
            "EmailSender": "sender@contoso.com"
        }
    },
    "Runbooks" : {
        "rjgit-org_general_report-license-assignment_scheduled": {
            "Parameters" : {
                "EmailTo": {
                    "DisplayName": "Adresse(s) e-mail du ou des destinataires"
                },
                "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
                }
            }
        }
    }
}
```

### Recherche des numéros de partie SKU

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

SKU courants :

* `ENTERPRISEPACK` - Microsoft 365 E3
* `ENTERPRISEPREMIUM` - Microsoft 365 E5
* `EMS` - Enterprise Mobility + Security E3

### Sortie

**Lorsque des violations sont détectées :**

* Sortie console dans le journal du job
* Export CSV (`License_Threshold_Violations.csv`)
* Rapport par e-mail avec résumé, violations, recommandations et pièce jointe CSV

**Lorsque tout est dans les seuils :**

* Aucun e-mail envoyé
* Le job se termine avec succès

### Dépannage

**SKU introuvable**: Vérifiez que le SKU existe à l’aide de `Get-MgSubscribedSku`

**E-mail non envoyé**: Vérifiez la configuration EmailFrom et l’autorisation Mail.Send

**JSON non valide**: Validez le format JSON avant la configuration

### Note de migration

Hérité `WarningThreshold` est automatiquement mappé à `MinThreshold` - les anciennes configurations continuent de fonctionner.

### Emplacement

Organisation → Général → Rapport d’affectation de licences (planifié)

**Nom complet du runbook**

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

### Autorisations

#### Autorisations d’application

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

### Paramètres

#### InputJson

Tableau JSON contenant les configurations de SKU avec des seuils. Chaque entrée doit inclure un SKUPartNumber pour l’identifiant de SKU Microsoft, un FriendlyName comme nom d’affichage de la licence, un MinThreshold facultatif spécifiant le nombre minimum de licences qui doivent être disponibles, et un MaxThreshold facultatif spécifiant le nombre maximum de licences qui doivent être disponibles.

Cela doit être configuré dans la personnalisation du runbook

| Propriété         | Valeur |
| ----------------- | ------ |
| Obligatoire       | true   |
| Valeur par défaut |        |
| Type              | Objet  |

#### EmailTo

Adresse e-mail du destinataire ou liste de destinataires séparés par des virgules.

| Propriété         | Valeur |
| ----------------- | ------ |
| Obligatoire       | true   |
| Valeur par défaut |        |
| Type              | Chaîne |

#### EmailFrom

Adresse e-mail de l’expéditeur résolue à partir des paramètres.

| Propriété         | Valeur |
| ----------------- | ------ |
| Obligatoire       | false  |
| Valeur par défaut |        |
| Type              | Chaîne |

[Retour à l’aperçu de la référence du runbook](/fr/automatisation/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/fr/automatisation/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.
