# Règles

L'exportation, l'importation et la duplication sont possibles pour toutes les règles. Ces opérations peuvent être effectuées globalement depuis la page principale des règles ou par lots depuis les moteurs de recherche des différentes règles via des actions massives. Ces fonctionnalités sont intéressantes par exemple dans le contexte de la bascule de règles d'un environnement de pré-production vers un environnement de production.

{% hint style="info" %}
l'exportation ou l'importation utilisent un format de fichier XML
{% endhint %}

## Moteur de règles

GLPI contient un moteur de règles qui permet d'effectuer un certain nombre d'actions et d'associations automatiquement.

Ce moteur est utilisé à la fois pour :

* les règles de gestion :
  * affecter un matériel à une entité
  * accorder des permissions à un utilisateur
  * affecter une catégorie à un logiciel
  * router des tickets vers des entités
  * actions automatiques à l'ouverture d'un ticket
* les [dictionnaires de données](https://help.glpi-project.org/documentation/fr/modules/administration/dictionnaries) :
  * fabricants
  * logiciels
  * imprimantes
  * types de matériels
  * modèles de matériels
  * champs liés au système d'exploitation

Le moteur se comporte différemment selon les types de règles :

* arrêter après la première règle correspondante
* appliquer toutes les règles
* appliquer les règles et passer le résultat de la règle à la règle suivante

Les règles peuvent être désactivées, par exemple lors de la rédaction et du test de nouvelles règles.

{% hint style="success" %}
en général, il est recommandé de bien tester les règles avant de les utiliser et de faire une sauvegarde avant de mettre en place chaque nouvelle règle. Sur le formulaire principal d'une règle, un bouton *Tester* ouvre une fenêtre supplémentaire qui permet de voir tous les critères et résultats de la règle.
{% endhint %}

## Les différentes règles

### Règles d'affectation d'un ticket ouvert via un collecteur de mails

Voir [Règles d'affectation d'un ticket ouvert via un collecteur de mails](#collectors_rules)

### Règles d'affectation d'autorisations à un utilisateur

Voir [Règles d'affectation d'autorisations à un utilisateur](https://help.glpi-project.org/documentation/fr/modules/administration/rules/userauthorizations)

### Règles d'affectation d'une catégorie à un logiciel

La classification par catégorie facilite l'affichage et la recherche de logiciels. Cela peut être fait automatiquement pour tout nouveau logiciel, ou de manière rétroactive. Les critères disponibles sont l'éditeur, le nom et le commentaire du logiciel. La seule action possible est d'affecter le logiciel à une catégorie. Il est possible de rejouer les règles depuis la liste des logiciels, en utilisant l'action massive *Recalculer la catégorie*.

### Règles métier pour les tickets

Lors de l'ouverture ou de la modification d'un ticket, un mécanisme permet de modifier automatiquement des attributs du ticket.

Voir [Règles métier pour les tickets](https://help.glpi-project.org/documentation/fr/modules/administration/rules/ticketbusinessrules)

### Règles pour l'agent d'inventaire

Les deux menus ci-dessous ne sont visibles que si vous utilisez un agent d'inventaire pour un inventaire automatique des ordinateurs dans GLPI.

* règles d'affectation d'un matériel à une entité
* règles d'importation et de liaison des ordinateurs

Voir [Règles pour l'agent d'inventaire](https://help.glpi-project.org/documentation/fr/modules/administration/rules/inventorytools)

* **Transfert** Ce menu permet de définir les profils de transfert inter-entités.

  Plusieurs actions sont possibles :

  * **Conserver** : le matériel sera transféré avec l'objet ;
  * **Mettre à la corbeille** : le matériel sera placé dans la corbeille de l'entité cédante ;
  * **Supprimer définitivement** : le matériel sera supprimé de la base de données ;
  * **Garder** : le matériel restera dans l'entité cédante ;
  * **Déconnecter** : la connexion entre l'élément et l'objet sera supprimée
* **Listes noires** Grâce au mécanisme de liste noire de GLPI, il est possible d'exclure certaines valeurs du traitement par le moteur de règles. Les types qui peuvent être pris en compte sont :

  * adresse IP ;
  * adresse MAC ;
  * numéro de série ;
  * UUID ;
  * email

  Cela permet, par exemple, d'exclure certaines adresses IP de l'agent d'inventaire (par exemple une IP 127.0.0.1 ou 0.0.0.0) ou de ne pas créer de ticket à partir d'une adresse email particulière (par exemple la sauvegarde quotidienne d'un serveur).

## Créer une règle

Une règle est composée d'une série de critères. Selon l'option choisie (OU/ET) un ou tous les critères doivent être vérifiés pour déclencher une liste d'actions.

Un mécanisme de prévisualisation vous permet de tester les règles en cours de rédaction avant de les mettre en production.

Plusieurs critères sont disponibles :

* simples :
  * est
  * n'est pas
  * contient
  * ne contient pas
  * commence par
  * se termine par
  * sous (pour les listes déroulantes arborescentes, indique être dans cette liste déroulante ou dans l'une des listes déroulantes enfants)
  * pas sous (pour les listes déroulantes arborescentes, indique ne pas être dans cette liste déroulante ou dans l'une des listes déroulantes enfants)
* complexes :
  * correspond à une expression régulière
  * ne correspond pas à une expression régulière

Les expressions régulières (également appelées regex) renvoient un ou plusieurs résultats qui peuvent ensuite être utilisés par les actions à l'aide de la directive #x (où x est le numéro du résultat de l'expression régulière).

{% hint style="info" %}
**Exemple**

Critère : nom correspondant à l'expression régulière `/DESKTOP\_(.\*)/` Si l'objet est nommé `DESKTOP_0001`, alors il sera possible d'utiliser `0001` dans les actions des règles en utilisant le paramètre `#0`
{% endhint %}

**GARDER ?**

Vous devez créer des **règles de localisation** pour affecter une localisation à un ordinateur. Avant cela, vous devez définir les critères qui déclencheront la règle (un tag d'inventaire, un sous-réseau, un domaine, etc.). Dans notre exemple, nous allons créer une règle qui prend en compte le [tag d'inventaire](https://glpi-agent.readthedocs.io/en/latest/man/glpi-agent.md#execution-mode-options). Si le tag est France, alors appliquer la localisation Paris.

* Dans **Administration > Règles > Règles de localisation**
* Cliquez sur **+ Ajouter**
* Vous pouvez ajouter différentes informations (nom, opérateur logique, commentaires, description, actif)

  >

{% hint style="warning" %}

> **Opérateur logique ET / OU**
>
> * **"OU"** la règle s'appliquera alors dès le 1er critère correspondant. Elle ignorera tous les critères suivants.
> * **"ET"**, en revanche, devra prendre en compte tous les critères pour que la règle soit appliquée.
>   {% endhint %}

* **Activez** votre règle
* Cliquez sur **+ Ajouter**
* Dans **Critères**, cliquez sur **Ajouter un nouveau critère**
* Sélectionnez **Agent > Tag d'inventaire**
* Entrez **France**
* Cliquez sur **+ Ajouter**

  > <img src="https://github.com/glpi-network/gitbook-fr/blob/main/manual/modules/tabs/common_fields/images/add-rule-location-criteria.png" alt="add rule location" data-size="original">
* Dans l'onglet **Actions**, cliquez sur **Ajouter une nouvelle action**
* Sélectionnez la localisation à affecter
* Cliquez sur **+ Ajouter**

  > <img src="https://github.com/glpi-network/gitbook-fr/blob/main/manual/modules/tabs/common_fields/images/add-rule-location-action.png" alt="add rule location" data-size="original">

Vous pouvez tester la règle de localisation en cliquant sur **Tester les moteurs de règles** dans **Administration > Règles de localisation**

![add rule location](https://github.com/glpi-network/gitbook-fr/blob/main/manual/modules/tabs/common_fields/images/test-rule-location.png)
