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

# Rapport planifié sur l’attribution des licences

### 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 inclut des informations détaillées sur les licences qui se trouvent en dehors des seuils configurés, les exporte en fichiers CSV et/ou Excel (xlsx), et les envoie par e-mail. Les fichiers du rapport peuvent également être téléversés dans un Azure Storage Account, ce qui renvoie des liens de téléchargement temporaires. Le paramètre ReportFileFormat contrôle les formats de fichier générés et distribués (CSV uniquement, CSV et XLSX, ou XLSX uniquement). Lorsque la pièce jointe CSV dépasse la limite de taille des e-mails et que "CSV & XLSX" est sélectionné, l’e-mail se rabat sur le seul classeur Excel.

### Personnalisation du runbook

#### Configuration de l'envoi d'e-mails

L'envoi d'un rapport par courriel est facultatif et ne se produit que lorsqu'un destinataire (`EmailTo`) est renseigné. L'adresse de l'expéditeur est prise à partir du `RJReport.EmailSender` paramètre du Tenant.

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

Consultez la [documentation des paramètres de rapport RealmJoin](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) pour plus de détails.

#### Configuration de InputJson

Chaque configuration de licence nécessite :

* **SKUPartNumber** (obligatoire) : Identifiant SKU Microsoft
* **FriendlyName** (obligatoire) : Nom d’affichage
* **MinThreshold** (facultatif) : Alerte lorsque les licences disponibles < seuil
* **MaxThreshold** (facultatif) : Alerte lorsque les licences disponibles > seuil

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

#### Exemples de configuration

**Seuil minimum uniquement** (pour éviter les ruptures) :

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

**Seuil maximum uniquement** (pour éviter le surdimensionnement) :

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

**Les deux seuils** (maintenir la 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 destinataire"
                },
                "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 pièce 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 de la console dans le journal du travail
* 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 travail 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 de EmailFrom et l’autorisation Mail.Send

**JSON invalide**: Validez le format JSON avant la configuration

### Remarque sur la migration

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

### Emplacement

Organisation → Général → Attribution de licence de rapport (planifiée)

**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 des configurations SKU avec des seuils. Chaque entrée doit inclure un SKUPartNumber comme identifiant 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  |

#### ReportFileFormat

Contrôle quels formats de fichiers de rapport sont générés et livrés : « CSV uniquement », « CSV et XLSX » (par défaut) ou « XLSX uniquement ».

| Propriété         | Valeur      |
| ----------------- | ----------- |
| Obligatoire       | faux        |
| Valeur par défaut | CSV et XLSX |
| Type              | Chaîne      |

#### CreateDownloadLink

Si activé, les fichiers du rapport sont téléversés vers un Azure Storage Account et des liens de téléchargement à durée limitée sont renvoyés. Désactivé par défaut.

| Propriété         | Valeur  |
| ----------------- | ------- |
| Obligatoire       | faux    |
| Valeur par défaut | Faux    |
| Type              | Booléen |

#### ContainerName

Nom du conteneur de stockage utilisé pour le téléversement. Configuré par runbook (et non un paramètre global RJReport).

| Propriété         | Valeur                    |
| ----------------- | ------------------------- |
| Obligatoire       | faux                      |
| Valeur par défaut | report-license-assignment |
| Type              | Chaîne                    |

#### ResourceGroupName

Groupe de ressources qui contient le Storage Account. Provenant des paramètres du Tenant RJReport.

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

#### StorageAccountName

Nom du Storage Account utilisé pour le téléversement. Provenant des paramètres du Tenant RJReport.

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

#### LinkExpiryDays

Nombre de jours avant l’expiration du lien de téléchargement généré. Provenant des paramètres du Tenant RJReport.

| Propriété         | Valeur |
| ----------------- | ------ |
| Obligatoire       | faux   |
| Valeur par défaut | 6      |
| Type              | Int32  |

#### EmailTo

Si elle est spécifiée, un e-mail contenant le rapport sera envoyé à la ou aux adresse(s) fournies. Peut être une seule adresse ou plusieurs adresses séparées par des virgules (chaîne).

| Propriété         | Valeur |
| ----------------- | ------ |
| Obligatoire       | faux   |
| 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       | faux   |
| Valeur par défaut |        |
| Type              | Chaîne |

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