> For the complete documentation index, see [llms.txt](https://help.glpi-project.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.glpi-project.org/glpi-12/administration/rules/inventory-rules.md).

# Inventory rules

These rules determine how data collected during `GLPI Agent` automatic inventories is analyzed and integrated into the GLPI database. The different rule engines presented below are executed in the **indicated order**.

For each inventoried asset, the different engines stop as soon as the criteria of a rule are met. Other rules in the engine will not be tested or executed.

## Transform item types

These rules allow you to replace an asset type detected by the GLPI agent with a custom asset type.

Example: This rule allows GLPI to automatically detect `Dell` computers of the `PowerEdge R740` model and transform the asset type to **`Server`**.

Remember to enable the **"Inventory"** capability in the custom asset so that it appears in the list of object types that can be assigned.

### Available Criteria

| Name                                        | Description                                                  | Key                      | Operator(s)                                                                                                                                                                                                              |
| ------------------------------------------- | ------------------------------------------------------------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Destination entity for the asset            | Entity to which the asset will be attached during inventory. | `entities_id`            | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`                                                                                                      |
| Virtualization system                       | Type of the asset's virtualization system.                   | `virtualmachinetypes_id` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`                                                                                                      |
| Status                                      | Asset status                                                 | `states_id`              | `is`, `is not`                                                                                                                                                                                                           |
| Inventory > Model                           | Asset virtualization system model.                           | `model`                  | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Manufacturer                                | Asset manufacturer.                                          | `manufacturer`           | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Network Port > MAC              | Asset MAC addresses                                          | `mac`                    | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Network Port > IP               | Asset IP addresses.                                          | `ip`                     | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `matches CIDR`, `does not match CIDR`, `is already present`, `is empty` |
| Inventory > Network Port > Port Description | Network port descriptions                                    | `ifdescr`                | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Network Port > Port Number      | Network port numbers                                         | `ifnumber`               | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Serial Number                   | Asset serial number.                                         | `serial`                 | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > UUID                            | Asset UUID.                                                  | `uuid`                   | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Agent > Device ID                           | Agent identifier.                                            | `device_id`              | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > OS Serial Number                | Operating system serial number.                              | `mskey`                  | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Name                            | Asset name.                                                  | `name`                   | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Agent > Inventory Tag                       | Agent inventory tag.                                         | `tag`                    | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Asset > Operating System                    | Name of the operating system.                                | `osname`                 | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Asset > Operating System > Comments         | Comments of the operating system.                            | `oscomment`              | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Asset > Item Type                           | Type of inventoried item (computer, printer, etc.).          | `itemtype`               | `is`, `is not`, `exists`, `does not exist`                                                                                                                                                                               |
| Asset > Domain                              | Domain to which the asset belongs.                           | `domains_id`             | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Is partial                                  | Indicates if the inventory is partial.                       | `partial`                | `is`, `is not`                                                                                                                                                                                                           |

### Available Actions

| Name               | Description                                             | Key       | Actions  |
| ------------------ | ------------------------------------------------------- | --------- | -------- |
| Assign object type | Assign a specific object type to the inventoried asset. | `_assign` | `Assign` |

***

## Rules for Assigning Objects to Entities

These rules allow you to automatically define which **GLPI entity** an asset should be linked to during its inventory (creation or update), in order to respect the organizational hierarchy configured in GLPI.

Example: This rule allows automatically assigning the `Marketing` entity to assets of type `Server` whose IP address starts with `10.0.20.`

### Available Criteria

| Name                        | Description                                         | Key         | Operators                                                                                                                                                                              |
| --------------------------- | --------------------------------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Inventory Tag               | Inventory tag of the asset.                         | `tag`       | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                        |
| Domain                      | Domain to which the asset belongs.                  | `domain`    | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                        |
| Subnet                      | Subnet of the asset.                                | `subnet`    | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `matches CIDR`, `does not match CIDR` |
| IP Address                  | List of asset IPs.                                  | `ip`        | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `matches CIDR`, `does not match CIDR` |
| Equipment Name              | Name of the asset.                                  | `name`      | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                        |
| Serial Number               | Serial number of the asset.                         | `serial`    | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                        |
| Item Type                   | Type of inventoried item (computer, printer, etc.). | `itemtype`  | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                        |
| Operating System > Comments | Comments of the operating system.                   | `oscomment` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                        |
| Source                      | Source of the import.                               | `_source`   | `is`, `is not`                                                                                                                                                                         |

### Available Actions

| Name                   | Description                                                  | Key                     | Actions                   |
| ---------------------- | ------------------------------------------------------------ | ----------------------- | ------------------------- |
| Entity                 | Assigns the item to a specific entity.                       | `entities_id`           | `Assign`                  |
| Location               | Assigns the item to a specific location.                     | `locations_id`          | `Assign`                  |
| Entity from Tag        | Assigns the entity based on a regular expression on the tag. | `_affect_entity_by_tag` | `Assign value from regex` |
| Reject import          | Ignores the import of the item.                              | `_ignore_import`        | `Yes`                     |
| Sub-entities           | Applies the entity assignment recursively to sub-entities.   | `is_recursive`          | `Yes / no`                |
| Responsible Group      | Assign the responsible group.                                | `groups_id_tech`        | `Assign`                  |
| Responsible Technician | Assign the responsible technician.                           | `users_id_tech`         | `Assign`                  |

***

## Location Rules

These rules are used to automatically assign a GLPI location to an asset.

Example: This rule allows automatically assigning the `Paris` location to assets of type `Server` whose IP address starts with `10.0.20.`

### Available Criteria

| Name                        | Description                                            | Key         | Operators                                                                                                                                                                              |
| --------------------------- | ------------------------------------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Inventory > Item Type       | Type of inventoried item (computer, printer, etc.).    | `itemtype`  | `is`, `is not`, `exists`, `does not exist`                                                                                                                                             |
| Agent > Inventory Tag       | Asset's inventory tag.                                 | `tag`       | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                        |
| Domain                      | Network domain to which the asset belongs.             | `domain`    | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                        |
| Subnet                      | List of the asset's subnets.                           | `subnet`    | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `matches CIDR`, `does not match CIDR` |
| Network Port > IP           | List of the asset's IPs.                               | `ip`        | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `matches CIDR`, `does not match CIDR` |
| Name                        | Asset's name.                                          | `name`      | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                        |
| Serial Number               | Asset's serial number.                                 | `serial`    | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                        |
| Operating System > Comments | Comments associated with the asset's operating system. | `oscomment` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                        |

### Available Actions

| Name     | Description                    | Key            | Actions                                          |
| -------- | ------------------------------ | -------------- | ------------------------------------------------ |
| Location | Assign a location to the asset | `locations_id` | `Assign`, `Assign value from regular expression` |

***

## Equipment (Asset) Import and Linking Rules

These rules define how GLPI searches for assets to determine whether to update an existing item or create a new one. This helps prevent duplicates and ensures database consistency and reliability.

There are two types of rules:

1. **Rules by Asset Type**\
   These rules apply specifically to an asset type (computer, server, printer, etc.). They allow defining specific behavior based on the hardware category.
2. **Global Rules**\
   These rules apply to all asset types without distinction. For example, reconciling and updating an asset from the asset's MAC address.

{% hint style="warning" %}
In general, GLPI's native reconciliation rules are sufficient to ensure correct asset reconciliation in the vast majority of cases.

Any addition or adaptation of these rules should be done with caution and tested beforehand in a test environment to ensure their proper functioning before any production deployment.
{% endhint %}

### Available Criteria

| Name                                                 | Description                                                | Key                      | Operators                                                                                                                                                                                                                |
| ---------------------------------------------------- | ---------------------------------------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Destination Entity for Asset                         | GLPI entity of the asset                                   | `entities_id`            | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`                                                                                                      |
| Virtualization System                                | Type of virtualization                                     | `virtualmachinetypes_id` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`                                                                                                      |
| Status                                               | Asset status                                               | `states_id`              | `is`, `is not`                                                                                                                                                                                                           |
| Inventory > Model                                    | Asset model                                                | `model`                  | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Manufacturer                                         | Asset Manufacturer                                         | `manufacturer`           | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Network Port > MAC                       | List of asset MAC addresses                                | `mac`                    | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Network Port > IP                        | List of asset IP addresses                                 | `ip`                     | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `matches CIDR`, `does not match CIDR`, `is already present`, `is empty` |
| Inventory > Network Port > Port Description          | Description of asset network ports                         | `ifdescr`                | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Network Port > Port Number               | Asset network port numbers                                 | `ifnumber`               | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Serial Number                            | Asset serial number                                        | `serial`                 | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > UUID                                     | Asset UUID                                                 | `uuid`                   | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Agent > Device ID                                    | Agent identifier.                                          | `device_id`              | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Operating System Serial Number           | Operating system serial number                             | `mskey`                  | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Name                                     | Asset name                                                 | `name`                   | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Agent > Inventory Tag                                | Asset inventory TAG                                        | `tag`                    | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Operating System                         | Operating system name                                      | `osname`                 | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Operating System > Comments              | Comments associated with the operating system              | `oscomment`              | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Inventory > Item Type                                | Inventoried item type                                      | `itemtype`               | `is`, `is not`, `exists`, `does not exist`                                                                                                                                                                               |
| Inventory > Domain                                   | Domains associated with the asset                          | `domains_id`             | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `is already present`, `is empty`                                        |
| Linked Item                                          |                                                            | `linked_item`            | `is already present`                                                                                                                                                                                                     |
| General > Restrict search to a defined entity        | Limits the search to a specific entity                     | `entityrestrict`         | `Yes`                                                                                                                                                                                                                    |
| General > Restrict criteria to the same network port | Applies the rule only to criteria of the same network port | `link_criteria_port`     | `Yes`                                                                                                                                                                                                                    |
| General > Only these criteria in data                | Applies only the criteria defined in this rule             | `only_these_criteria`    | `Yes`                                                                                                                                                                                                                    |
| Is partial                                           | Indicates if the import is partial                         | `partial`                | `is`, `is not`                                                                                                                                                                                                           |

### Specific Operators

| Operators                                      | Description                                                                                                                                                  | Input Value                                 | Example (field - operator - pattern)                                                                                              | Result                                                                                                                                                                                                |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Restrict search within a defined entity**    | Limits the search for an existing equipment to the destination entity of the inventory. Key: `entityrestrict`                                                | None, the criterion is activated with `yes` | `Restrict search within a defined entity` - `yes`                                                                                 | The rule must link the inventory only to equipment located within the defined entity.                                                                                                                 |
| **Restrict criteria to the same network port** | Requires that network criteria (MAC address, IP address, port name or number) are found on the same network port of the equipment. Key: `link_criteria_port` | None, the criterion is activated with `yes` | `MAC Address` - `is already present` ; `IP Address` - `is already present` ; `Restrict criteria to the same network port` - `yes` | Without this criterion, the MAC and IP can belong to two different ports of the same equipment. With this criterion, the equipment is only retained if a single port carries both the MAC and the IP. |
| **Only these criteria in data**                | Applies the rule only if the inventory data contains no other criteria than those used in the rule. Key: `only_these_criteria`                               | None, the criterion is activated with `yes` | `Serial Number` - `exists` ; `Only these criteria in data` - `yes`                                                                | The rule applies if the inventory only returns the serial number. If the inventory also contains a MAC address or a UUID, the rule does not apply and GLPI moves to the next rule.                    |

### Available Actions

| Name              | Description                                                                                     | Key              | Actions            |
| ----------------- | ----------------------------------------------------------------------------------------------- | ---------------- | ------------------ |
| Link to inventory | Allows linking the asset to the inventory                                                       | `_inventory`     | `Link if possible` |
| Refuse import     | Allows refusing the import of the asset and logs the event in the history of refused equipment. | `_ignore_import` | `Ignore import`    |

### Possible Values for the `Link if possible` Action

| Name                                         | Description                                                                                                       |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `Link if possible`                           | Update the asset if possible; otherwise, create it.                                                               |
| `Link if possible, otherwise import refused` | Update the asset if possible; otherwise, refuse the import and log the event in the history of refused equipment. |
| `Import refused (no logs)`                   | The import is refused without logging the event in the history of refused equipment.                              |

### History of Refused Equipment

When the asset is refused for import by GLPI due to active rules (import refused with logging), the refusal event will be logged in the history of refused equipment. You will find the rule that caused the import refusal.

Example: this asset was refused because the `name` field is not populated in the inventory data. It can be seen that the **Computer constraint (name)** rule is the cause of this refusal.

You can retrieve the inventory file (1) or restart the import (2) once your rules have been adapted, to verify their proper functioning.

### Default Setting

If you wish to reset the hardware reconciliation rules to revert to GLPI's native rules, a reset button is available for this purpose.

{% hint style="danger" %}
This action **replaces all rules**, including native rules as well as those you may have created or customized.
{% endhint %}

***

## Dictionaries

Dictionaries in GLPI allow for **streamlining and standardizing imported data**. They are used, in particular, to **normalize the names of manufacturers, models, software, types, or operating systems**, in order to avoid duplicates, spelling variations, and inconsistencies in the database.

### Software

#### Criteria

| Name                      | Description                | Key                | Operators                                                                                                                                                                                   | Example          |
| ------------------------- | -------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| Software                  | Software name              | `name`             | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regular expression matches`, `regular expression does not match`, `exists`, `does not exist`                   | `Microsoft Word` |
| Editor                    | Software Editor            | `manufacturer`     | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                             | `Microsoft`      |
| Entity                    | Software Entity            | `entities_id`      | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`, `under`, `not under`, `under`, `not under` | `Root Entity`    |
| Inventory Tool Categories | Inventory Agent Categories | `_system_category` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist`                                             | `Office`         |

#### Actions

| Name                 | Description                           | Key                     | Actions                                             |
| -------------------- | ------------------------------------- | ----------------------- | --------------------------------------------------- |
| Software             | Assign software                       | `name`                  | `Assign regex result`                               |
| Ignore Import        | Ignore software on import             | `_ignore_import`        | `Yes`                                               |
| Version              | Assign a version to the software      | `version`               | `Assign`, `Assign regex result`, `Add regex result` |
| Editor               | Assign a manufacturer to the software | `manufacturer`          | `Assign`, `Assign regex result`, `Add regex result` |
| Linkable to a ticket | Is linkable to a ticket               | `is_helpdesk_visible`   | `Yes / No`                                          |
| Entity               | Assign an entity to the software      | `new_entities_id`       | `Assign`                                            |
| Category             | Assign a category to the software     | `softwarecategories_id` | `Assign`, `Assign regex result`                     |

### Manufacturers

#### Criteria

| Name         | Description       | Key    | Operators                                                                                                                                       | Example     |
| ------------ | ----------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| Manufacturer | Manufacturer name | `name` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Microsoft` |

#### Actions

| Name         | Description           | Key    | Actions                                   |
| ------------ | --------------------- | ------ | ----------------------------------------- |
| Manufacturer | Assign a manufacturer | `name` | `Assign regex result`, `Add regex result` |

### Printers

#### Criteria

| Name         | Description          | Key            | Operators                                                                                                                                       | Example            |
| ------------ | -------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| Name         | Printer name         | `name`         | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `HP LaserJet 1020` |
| Manufacturer | Printer manufacturer | `manufacturer` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `HP`               |
| Comments     | Printer comment      | `comment`      | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Network printer`  |

#### Actions

| Name            | Description                | Key              | Actions                         |
| --------------- | -------------------------- | ---------------- | ------------------------------- |
| Name            | Printer name               | `name`           | `Assign`, `Assign regex result` |
| Ignore Import   | Ignore printer on import   | `_ignore_import` | `Yes`                           |
| Manufacturer    | Printer manufacturer       | `manufacturer`   | `Assign`                        |
| Management Type | Set management to ‘global’ | `is_global`      | `Assign`                        |

### Computer Models

#### Criteria

| Name         | Description          | Key            | Operators                                                                                                                                       | Example       |
| ------------ | -------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| Model        | Monitor model name   | `name`         | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Dell U2720Q` |
| Manufacturer | Monitor manufacturer | `manufacturer` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Dell`        |

#### Actions

| Name  | Description    | Key    | Actions                                             |
| ----- | -------------- | ------ | --------------------------------------------------- |
| Model | Assign a model | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Monitor Models

#### Criteria

| Name         | Description          | Key            | Operators                                                                                                                                       | Example       |
| ------------ | -------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| Model        | Monitor model name   | `name`         | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Dell U2720Q` |
| Manufacturer | Monitor manufacturer | `manufacturer` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Dell`        |

#### Actions

| Name  | Description    | Key    | Actions                                             |
| ----- | -------------- | ------ | --------------------------------------------------- |
| Model | Assign a model | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Printer Models

#### Criteria

| Name         | Description          | Key          | Operators                                                                                                                                       | Example                |
| ------------ | -------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
| Model        | Printer model name   | `name`       | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `HP LaserJet Pro M404` |
| Manufacturer | Printer manufacturer | manufacturer | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `HP`                   |

#### Actions

| Name  | Description    | Key    | Actions                                             |
| ----- | -------------- | ------ | --------------------------------------------------- |
| Model | Assign a model | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Peripheral Models

#### Criteria

| Name         | Description             | Key          | Operators                                                                                                                                       | Example                |
| ------------ | ----------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
| Model        | Peripheral model name   | name         | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Logitech MX Master 3` |
| Manufacturer | Peripheral manufacturer | manufacturer | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Logitech`             |

#### Actions

| Name  | Description    | Key    | Actions                                             |
| ----- | -------------- | ------ | --------------------------------------------------- |
| Model | Assign a model | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Network Hardware Models

#### Criteria

| Name         | Description                   | Key          | Operators                                                                                                                                       | Example      |
| ------------ | ----------------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Model        | Network hardware model name   | name         | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Cisco 2960` |
| Manufacturer | Network hardware manufacturer | manufacturer | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Cisco`      |

#### Actions

| Name  | Description    | Key    | Actions                                             |
| ----- | -------------- | ------ | --------------------------------------------------- |
| Model | Assign a model | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Telephone Models

#### Criteria

| Name         | Description            | Key          | Operators                                                                                                                                       | Example     |
| ------------ | ---------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| Model        | Telephone model name   | name         | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `iPhone 15` |
| Manufacturer | Telephone manufacturer | manufacturer | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Apple`     |

#### Actions

| Name  | Description    | Key    | Actions                                             |
| ----- | -------------- | ------ | --------------------------------------------------- |
| Model | Assign a model | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Customizable Asset Model

#### Criteria

| Name         | Description        | Key          | Operators                                                                                                                                       | Example     |
| ------------ | ------------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| Model        | Phone model name   | name         | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `iPhone 15` |
| Manufacturer | Phone manufacturer | manufacturer | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Apple`     |

#### Actions

| Name  | Description    | Key    | Actions                                             |
| ----- | -------------- | ------ | --------------------------------------------------- |
| Model | Assign a model | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Monitor Types

#### Criteria

| Name | Description  | Key    | Operators                                                                                                                                       | Example      |
| ---- | ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Type | Monitor type | `name` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `LCD Screen` |

#### Actions

| Name | Description   | Key    | Actions                                             |
| ---- | ------------- | ------ | --------------------------------------------------- |
| Type | Assign a type | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Printer Types

#### Criteria

| Name | Description  | Key    | Operators                                                                                                                                       | Example |
| ---- | ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| Type | Printer type | `name` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Laser` |

#### Actions

| Name | Description   | Key    | Actions                                             |
| ---- | ------------- | ------ | --------------------------------------------------- |
| Type | Assign a type | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Computer Types

#### Criteria

| Name | Description   | Key    | Operators                                                                                                                                       | Example  |
| ---- | ------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Type | Computer type | `name` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Laptop` |

#### Actions

| Name | Description   | Key    | Actions                                             |
| ---- | ------------- | ------ | --------------------------------------------------- |
| Type | Assign a type | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Phone Types

#### Criteria

| Name | Description | Key    | Operators                                                                                                                                       | Example      |
| ---- | ----------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| Type | Phone type  | `name` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Smartphone` |

#### Actions

| Name | Description   | Key    | Actions                                             |
| ---- | ------------- | ------ | --------------------------------------------------- |
| Type | Assign a type | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Network Hardware Types

#### Criteria

| Name | Description           | Key    | Operators                                                                                                                                       | Example  |
| ---- | --------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| Type | Network hardware type | `name` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Switch` |

#### Actions

| Name | Description   | Key    | Actions                                             |
| ---- | ------------- | ------ | --------------------------------------------------- |
| Type | Assign a type | `name` | `Assign`, `Assign regex result`, `Add regex result` |

### Peripheral Types

#### Criteria

| Name | Description     | Key    | Operators                                                                                                                                       | Example    |
| ---- | --------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
| Type | Peripheral type | `name` | `is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`, `regex matches`, `regex does not match`, `exists`, `does not exist` | `Keyboard` |

#### Actions

| Name | Description   | Key    | Actions                                                                                             |
| ---- | ------------- | ------ | --------------------------------------------------------------------------------------------------- |
| Type | Assign a type | `name` | `Assign`, `Assign the result of the regular expression`, `Add the result of the regular expression` |

For dictionaries related to **operating systems**, **native rules are provided by default in GLPI**, but they are **disabled**.

These rules allow, among other things, to:

* **Standardize the names of imported operating systems** (e.g., "Windows 10 Pro" or "Win 10" → "Windows 10 Professional").
* **Recognize and classify operating system versions and editions**.

As part of the **GLPI-Network** offering, it is possible to **obtain a rule import file** for software dictionaries.

This file allows to:

* **Quickly and standardized import** a list of pre-configured rules into the GLPI software dictionary engine.
* **Automatically apply normalization rules**, in order to avoid duplicates or variations in software names.


---

# 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://help.glpi-project.org/glpi-12/administration/rules/inventory-rules.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.
