# Forms

Since GLPI 11, forms are native, so the formcreator plugin is no longer required. Forms must be migrated from formcreator to forms.

## Migration formcreator to forms

{% hint style="warning" %}
Form migration must be done from the GLPI 10 database. It is not possible to import forms from GLPI 10 to GLPI 11.
{% endhint %}

When migrating your instance to GLPI 11, the formcreator plugin must be installed. Once the migration is complete, enter the command in `CLI` mode from your GLPI folder:

`php bin/console migration:formcreator_plugin_to_core`

***

## Forms by default

There are two pre-created forms by default:

* Report an issue
* Request a service

![view home self-service profile](/files/ELHCV3axJWHzR81ci5Iq)

These 2 forms are accessible to everyone. They can be deactivated/deleted/modified

***

## List of forms

The list of forms is available from **Administration** > **Forms**. They will also be visible from **Assistance** > **Service catalog**. This tab refers to the self-service profile home page (see [Service catalog](/documentation/modules/assistance/service-catalog.md)).

![List of forms](/files/TIHWUBzhvOO0hKt7H1rF)

***

## Forms options

When creating a form (by **+ Add**), several options will be available to customize and facilitate the user experience as much as possible.

![Add a new form](/files/HnnZi9MYlCmk52jfC0fc)

### Customize the formatting

Tools are available to customize the organization of the forms

![Customize the formatting](/files/DQBtBaLEnmyFCxAXl9lA)

1. Add a new question
2. Add a comment
3. Add a new section
4. Add an horizontal layout

You can move the questions to reorganize the form

![Reorganize your forms](/files/9Rr1AYGYmY1n7Xy5SmVF)

There are tools to reorganize an entire section

![Option for sections](/files/yTYTmu7MrW7t1knHurdT)

### Basic information

* Modify the form's title in the **Underlined form** file (this title will be visible to people with access to the form)
* Add a **description** to simplify the use of the form (this description will be visible to people with access to the form)

### Add questions

Each question has its own **title** field (identified by new question) and will be **visible to the user**. Each question **can be made mandatory** so that the user must fill in the field to validate the form

There are actually several possible question types:

* **Short answer**: Text field with limited length and no formatting (bold, italics, color, etc.).

![Short answer option](/files/aWuK5oVhVX7TxTNbeQ4O)

This field has additional options:

* *Text*: Allows you to enter text (alphanumeric)
* *Emails*: Allows you to enter email addresses only
* *Number*: Allows you to enter numeric characters only
* **Long answer**: field limited to 65,535 characters. The formatting of this field can be customized by the user (bold, italic, color, etc.)

![Long answer option](/files/xsWVJurxIvYAgG5gfEhr)

* **Date and time**: a date and/or time

![Date and time option](/files/3FFhmzA919jnXB9qU834)

This field has additional options:

* *Current date/time*: Use the current date and/or time and not allow the user to change it (leave the box unchecked to allow the user to specify the date/time they want).
* *Date*: Specify the date only (without the time).
* *Time*: Specify the time of day.
* **Actors**: add one or more users/groups/suppliers referenced in GLPI

![Actors option](/files/lhmxOmCZT9YFNAAO62op)

This field has additional options:

> * *Requesters / Observers / Assignees*: each users / groups / suppliers that will be added will be pre-filled in the ticket according to the type of actor that will be chosen. A user/group/provider can be preselected that the user can modify or not
> * *Allow multiple actors*: allow multiple selections (allows groups, users and suppliers in the same field)

{% hint style="warning" %}
If you want to allow the user to select multiple actor types, you will need to create as many questions as desired actors. An actor question can only contain one actor type.
{% endhint %}

* **Urgency**: add an urgency (very low, low, medium, high, very high)

![Urgency option](/files/tjvbyiE50hrBWrH4owcB)

* **Request type**: select the type of request (incident or request)

![Request type option](/files/X4sFHtWYKpEcQAQtxuNP)

* **Document**: add a document

![Document option](/files/G8UlcQfDedCWJXdvAVcN)

* **Radio**: set up a response list. The user will only be able to select one response.

An additional description can be added to make it easier for the user to choose.

![Radio option](/files/K8Q7PzU67wsiY7qBzouF)

* **Checkbox**: set up a response list. The user will be able to select multiple answers.

An additional description can be added to make it easier for the user to choose.

![Checkbox option](/files/cHnqikMKlNO2ckwFY1eJ)

* **Dropdown**: set up a drop-down list to select one or more answers

![Dropdown option](/files/xXigIbilhIL3YGEyMWzr)

This field has an additional option:

> * *Allow muliple options*

* **Item**: Allows you to select differents GLPI's objects

![Item option](/files/6gmts3FgUHUIP6sw5EZV)

This field has additional options

**Users devices**: allows the user to select their own assets

**GLPI Objects** available :

<details>

<summary>Assets</summary>

* Computers
* Monitors
* Network devices
* Peripherals
* Phones
* Printers
* Licenses
* Certificates
* Unmanaged assets
* Appliances
* Software
* Cartridge models
* Consumable models
* Lines
* Passive devices
* PDUs

</details>

<details>

<summary>Assistance</summary>

* Tickets
* Changes
* Problems
* Recurrent tickets

</details>

<details>

<summary>Management</summary>

* Budgets
* Suppliers
* Contacts
* Contracts
* Documents
* Projects
* Certificates
* Appliances
* Databases

</details>

<details>

<summary>Tools</summary>

* Reminders
* RSS Feed

</details>

<details>

<summary>Administration</summary>

* Users
* Groups
* Entities
* Profiles

</details>

**Dropdowns** available:

<details>

<summary>Common</summary>

* Locations
* Statuses of items
* Manufacturers
* Blacklists
* Blacklisted mail content
* Default filters

</details>

<details>

<summary>Assistance</summary>

* ITIL category
* Task categories
* Task templates
* Solution types
* Solutions templates
* Approval templates
* Request sources
* Followup templates
* Project states
* Project types
* Project tasks types
* Project tasks templates
* External events templates
* Event categories
* Pending reason
* Service catalog categories
* Approval steps

</details>

<details>

<summary>Type</summary>

* Computer types
* Networking types
* Printer types
* Monitor types
* Devices types
* Phone types
* License types
* Cartrige types
* Consumable types
* Contract types
* Contact types
* Generic types
* Sensor types
* Memory types
* Third party types
* Interface types (Hard drive...)
* Cases types
* Phone power supply types
* Files systems
* Certificate types
* Budget types
* Simacard types
* Line types
* Rack types
* PDU types
* Passive device types
* Cluster types
* Database instance type

</details>

<details>

<summary>Models</summary>

* Computer models
* Networking models
* Printer models
* Monitor models
* Peripheral models
* Phone models
* Device camera models
* Device case models
* Device control models
* Device drive models
* Device generic models
* Device graphic card models
* Device hard drive models
* Device memory models
* System board models
* Other component models
* Device power supply models
* Device processor models
* Device sound card models
* Device sensor models
* Rack models
* Enclosure models
* PDU models
* Passive device models

</details>

<details>

<summary>Virtual machines</summary>

* Virtualization systems
* Virtualization models
* States of the virtual machine

</details>

<details>

<summary>Maangement</summary>

* Document heading
* Document types
* Business criticies
* Databse instance categories

</details>

<details>

<summary>Tools</summary>

* Knowledge base categories

</details>

<details>

<summary>Calendars</summary>

* Calendars
* Close times

</details>

<details>

<summary>Operating systems</summary>

* Operating systems
* Versions of the operating systems
* Service packs
* Operating systems architectures
* Editions
* Kernels
* Kernels versions
* Update sources

</details>

<details>

<summary>Networking</summary>

* Networking interfaces
* Networks
* Network port types
* VLANs
* Line operators
* Domain types
* Domain relations
* Records types
* Fiber types

</details>

<details>

<summary>Cable management</summary>

* Cables types
* Cable strands
* Socket models

</details>

<details>

<summary>Internet</summary>

* IP networks
* Internet domains
* Wifi networks
* Networks names

</details>

<details>

<summary>Software</summary>

* Software categories

</details>

<details>

<summary>User</summary>

* Users titles
* User categories

</details>

<details>

<summary>Authorizations assignment rules</summary>

* LDAP criteria

</details>

<details>

<summary>Fields unicity</summary>

* Ignored values for the unicity

</details>

<details>

<summary>External authentications</summary>

* Fields storage of the login in the HTTP request

</details>

<details>

<summary>Power management</summary>

* Plugs

</details>

<details>

<summary>Appliance</summary>

* Appliance types
* Appliance environments

</details>

<details>

<summary>Camera</summary>

* Resolutions
* Image formats

</details>

<details>

<summary>Others</summary>

* USB vendors
* PCI vendors
* Webhook categories

</details>

### Configure visibility

Visibility conditions can be specified for a question based on the answer to a previous question.

For example, a user reports an issue with a printer. Depending on the location (question type **Item** > **Dropdowns** > **Common - Locations**), the form could be conditional on displaying only a list of printers linked to that location.

![Configure the visibility](/files/nCVccGEI2VQlA5Vd9Vpf)

You can indicate whether the question should be shown or hidden based on chosen criteria.

![Choose your condition](/files/DPY1rFiBXx8seI85smal)

The available condition types:

* *Always visible*
* *Visible if...*
* *Hidden if...*

Select the question from the drop-down list

Select the condition:

* *Is visible*
* *Is note visible*
* *Is equal to*
* *Is not equal to*
* *Contains*
* *Do not contains*
* *Match regular expression*
* *Do not match regular expression*

Enter the desired value as needed.

### Conditionnal Approval

It is possible to set conditional Approval (only on short/longer answer fields) using a `Regular expression`. This forces the user to enter a conditional answer, such as a certain number of digits, a maximum of 30 characters, etc.

In this example, the expected response is a sequence of 6 numbers

![Add a conditionnal Approval](/files/7oCiOOYfjUMofc8HQYf3)

If the entered answer is not suitable, a red error message will appear during Approval.

![Error conditionnal Approval](/files/GLOiMbssg5D2tegZTTnW)

### Submit button visibility

To ensure that the form is filled in as accurately as possible, it is also possible to specify conditions for the visibility of a form. If certain conditions are not met, the send button will not be visible and the user will not be able to submit the form.

This can be used, for example, to prevent a field with a default choice from being left blank even though it is mandatory.

Conditions can be created using the logical AND/OR operators.

<div align="left"><img src="/files/6msVYALnQSVUoyIbkyku" alt="Submit button visibility"></div>

***

## Service catalog

The service catalog allows you to make a form visible in the **Assistance** > **Service catalog** tab and from the home page of a self-service portal

![View service catalog](/files/YuT09eFjaZIND6BnIZh4)

### Customization

You can add:

* A description that will be visible on the form tile
* An illustration (from a catalog or you can upload one)

<div align="left"><img src="/files/QE1TxxTgjPkV8rxkgWXC" alt="Add an illustration of the catalog"></div>

<div align="left"><img src="/files/3aw07DhLJwYhFqSRZqDJ" alt="Add a custom illustration"></div>

### Category

You can create a category (and child-categories) to make it easier to select a form (e.g., all IT forms, all HR forms, etc.)

![Add a form's category](/files/Zqq7Wy2n8isng5SGkk6k)

You can select the category in the dropdwon list or create a new one by clicking on **+**

{% hint style="success" %}
Categories are manage in **Setup** > **Drowpdowns** > **Service catalog**
{% endhint %}

It is also possible to pin the form in the service catalog (with or without category) so that it is available directly to users

***

## Access control

Access control allows you to determine who can use the form. It can be public or private, visible to users, groups, or profiles.

![Access control view](/files/jdwJAj5Pqyif7td8CgiB)

{% hint style="warning" %}
If you need to specify a visibility condition from an entity, you simply need to create the form in the desired entity
{% endhint %}

### Public access

Public access allows all users with the form link to access it in order to submit their request. If you check the `allow unauthenticated users` box, you can also allow users who do not have a GLPI account to use the form.

{% hint style="success" %}
If the `allow unauthenticated users` box is checked, authenticated users will no longer see this form
{% endhint %}

### Private access

Private access allows you to filter the visibility of the form. It can be conditioned to users and/or groups and/or profiles. Multiple selection is allowed.

If all users should have access to the form, you can use the all users option in the drop-down list.

{% hint style="success" %}
When your selection is complete, you will be able to see the list of people who have access to the form

<img src="/files/Rlz2MRHCvGf66TdDXTKq" alt="List of users allowed to see the form" data-size="original">
{% endhint %}

If you see this message, This means that unauthenticated users are not allowed to see certain GLPI objects contained in certain questions. You must then check the question(s) in order to modify them and avoid an error when submitting the form by unauthenticated users.

![Error form](/files/5O7e7TQcmVw8O3tVMAq1)

***

## Item to create

This tab allows you to customize the various fields of the item to be created (entity, priority, actors, etc.).

You can create various items from the form:

* Tickets
* Changes
* Problems

You can allow the creation of multiple items from the same form.

### Conditions

It is possible to specify creation conditions.

For example, if the user answers **yes** to the question, "**Is this problem recurring?**", the form could create a problem instead of a ticket.

![Condition's creation of item](/files/TTDKEvAkHanMyz5XILVr)

You need to click on **Always created** to create one or more conditions.

### Custom fields

It is possible to customize the content of the item that will be created. By default, **autoconfig** is selected. This will include all questions/answers in the ticket that will be created.

![Custom content of item](/files/PN5wIacoF4rwYw3Mq1M9)

By clicking on `#` you can add answers for existing questions or delete them.

A formatting menu is available to improve the rendering display.

### Followup / Task / Approval <a href="#followup-task-approval" id="followup-task-approval"></a>

For each item created, you can add a follow-up, a task or request an approval

![Add a followup, task or approval](/files/iCYyQmbqjk7hR5nhfxwU)

For **followup** and **task**, you can:

* Not indicate one
* Choose from the template list
* Create a new template that you can then select

For Approval, you can:

* Not indicate one
* Add a specific actor (user, group or supplier, multiple selection is allowed)
* Answer from specific questions (a question with a user object is required in the form)

***

## Custom

You can customize the various fields of the item to be created (properties, actors, service levels, associated items).

### Properties

{% hint style="warning" %}
Please note that if business rules for tickets/changes/problems are implemented, some information may be modified.
{% endhint %}

#### Template

You can choose a specific template to automatically implement certain elements. For more information, go to [template](https://glpi-user-documentation.readthedocs.io/fr/latest/modules/overview/templates.md#ticket-templates)

{% hint style="warning" %}
Only unfilled elements will be included via a template. The template never takes precedence over field filling.
{% endhint %}

#### Entity

Choose a specific entity in which the ticket must be created. A possible choice among several proposals:

* **Active in entity of the form filler**: uses the entity in which the user creates their ticket
* **From form**: uses the entity in which the form was created
* **Specific entity**: manually select the desired entity
* **Answer from a specific question**: if a question with the entity object is asked, forms will use that answer. If no such question is asked or the answer remains empty, forms will use the option
* **Answer to last "Entity" item question**: if multiple entity questions are asked, forms will use the last entity object type question. If no such question is asked or the answer remains empty, forms will use "active entity of the form filler". The entities offered in the form will be only those to which the user is authorized

#### Request type

Allows you to select the ticket type (incident or request):

* **From template**: if a template is selected, the forms will use the requested types entered
* **Specific request type**: select request or incident
* **Answer from a specific question**: uses the answer to the question regarding the request type. If no question exists or the answer remains empty, forms will use **incident** by default
* **Answer to last Request type" question**: if multiple questions of the request type are asked, forms will use the last question. If no question exists or the answer remains empty, forms will use **incident** by default

#### ITIL Category

Allows you to select a specific category:

* **Specific category**: choose a category that already exists in the dropdown list
* **Answer from a specific category**: uses the answer to the question referring to the category. If no question is asked or the answer remains empty, the category will not be populated.
* **Answer to last "ITIL Category" dropdown question**: if multiple questions of ITIL category are asked, forms will use the last question. If no question exists or the answer remains empty, the category will not be entered

#### Status

Define the status of the ticket:

* **Default**: use the behavior by default (**new** if no actor is assigned, **processing (assigned)** if a actor is assigned, **processing (planned)** if a task is scheduled)
* **Closed**: ticket will be directly closed

#### Request source

* **From template**: use the template's specific source. The template uses the default value specified in **Setup** > **General** > **Assistance** > **Request sources by default**
* **From a specific source**: select a source from the dropdown list

#### Urgency

* **From template**: if a template is selected, the forms will use the urgency entered. If no emergency is entered, this field will remain empty
* **Specific urgency**: select the urgency from the dropdown list
* **Answer from a specific question**: uses the answer to the question referring to the urgency. If no question is asked or the answer remains empty, the emergency will not be entered
* **Answer to last "Urgency" question**: if multiple questions of urgency are asked, forms will use the last question. If no question exists or the answer remains empty, the urgency will not be entered

#### Location

* **From template**: if a template is selected, the forms will use the location entered. If no location is entered, this field will remain empty
* **Specific location**: select the location from the dropdown list.
* **Answer from a specific question**: uses the answer to the question referring to the location. If no question is asked or the answer remains empty, the location will not be entered
* **Answer to last "Location" dropdown question**: if multiple questions of loaction are asked, forms will use the last question. If no question exists or the answer remains empty, the location will not be entered

### Actors

#### Requesters / Observers / Assignees <a href="#requesters-observers-assignees" id="requesters-observers-assignees"></a>

{% hint style="success" %}
For each type of actor, it is possible to combine several criteria by clicking on **+ Combine with another option**

<img src="/files/ipWUi48xLIvRA7yg85Pz" alt="Combine option with another option" data-size="original">
{% endhint %}

* **User who filled the form**
* **Supervisor of the user who filled the form**: use the person entered as supervisor in **Administration** > **Users** > *User* > **Supervisor** If no supervisor is entered, the **User who filled the form** option will apply
* **From template**: if a template is selected, the forms will use the user entered. If no user is entered, the **User who filled the form** option will apply
* **Specific actors**: select user/group/supplier in the dropdwon list. Mutliple selection is allowed
* **Answer from a specific questions**: use the actor of the question that uses a users object. If no user is entered, the **User who filled the form** option will apply
* **Answer from the last "Requesters" question**: if multiple questions of user are asked, forms will use the last question If no question exists or the answer remains empty, the **User who filled the form** option will apply
* **User from GLPI object answer**: this option is used to retrieve the user assigned to an asset (asset **user** field). A question of type *object GLPI* > *asset* must therefore be present
* **Tech from GLPI object answer**: this option is used to retrieve the technician assigned to an asset (asset **technician in charge** field). A question of type *object GLPI* > *asset* must therefore be present
* **Group from GLPI object answer**: this option is used to retrieve the group assigned to an asset (asset **group** field). A question of type *object GLPI* > *asset* must therefore be present
* **Tech group from GLPI object answer**: this option is used to retrieve the group(s) of technician assigned to an asset (asset **group in charge** field). A question of type *object GLPI* > *asset* must therefore be present. If multiple groups are present in the field, they will all be assigned to the ticket

### Service levels

#### `TTO` / `TTR` / Internal TTO / Internal TTR <a href="#tto-ttr-internal-tto-internal-ttr" id="tto-ttr-internal-tto-internal-ttr"></a>

* **From template**: if a template is selected, the forms will use the SLA entered. If no SLA is entered, this field will remain empty
* **Specific location**: select the SLA from the dropdown list

### Associated items

Items include:

* Computers
* Databases
* Enclosures
* Monitors
* Network devices
* Peripherals
* Phones
* Printers
* Rack
* Server rooms
* Software

**Possible choices**:

* **Specific items**: select the item from the dropdown list.
* **Answer from a specific questions**: use the item of the question that uses an item object. If no item is entered, the item will not be entered
* **Answer from the last assets item question**: if multiple questions of item are asked, forms will use the last question If no question exists or the answer remains empty, the item will not be entered
* **All valid "Item" answers**: includes all valid items entered

***

## Form translations

You can translate your forms. Displaying the form in another language is based on the language set in the user's preferences.

When you click on **+Add language**, you can select the language you want to translate your form.

![Add a a new translation](/files/MYiKiaDbcgXpeiCROLI9)

Each field is displayed in the language the form was created in, along with another translation field.

![Update the translation](/files/FWbVrVo8ibABXb7jJXst)

A progress bar shows you the progress of the form translation

![Progress of the form translation](/files/dGDjj867lfzYrhvanQrh)

***

## Documents

The document tab lets you link different types of file to a material (PDF, txt, png, etc.) You can attach a document already uploaded to GLPI or add a new one directly from this tab. These documents are only visible to form administrators and are not implemented in the form itself.

<a href="/pages/w32vCvu0aiIGxjSJMpeZ" class="button secondary">Go to Documents</a>

***

## Import / Export <a href="#import-export" id="import-export"></a>

Forms allows exporting and importing forms between instances of GLPI.

{% hint style="warning" %}
This feature is designed to let administrators develop forms on a testing environment and copy them on a production environment.
{% endhint %}

### Export

To export forms, you need to use the massive actions

![Export forms](/files/RFNLDPdwq61gH8vYuDXL)

### Import

To import forms, you need to click on **Import Forms** at the top of the screen

![Import forms](/files/ujiDASqDxi2WkpYuj4Dz)

If your import is correct, you can click on import

![Import correct](/files/FV98VMpMl9qaFxkdyn58)

#### Import behavior

Forms allows field reconciliation. If some information is missing (entity, user, group, etc.) from the instance where the form is imported, Forms will offer you to either select a different existing value or create a new value for each field in conflict. Click on "Resolve issues" to display the conflicts.

![Preview after incorrect import](/files/0XubBVemm2RWtcZn2HH5)

1. displays the field found during import
2. the value with which you wish to replace it

![Form reconciliation](/files/Q1nEPt5wU5a9eMFyLoit)


---

# 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://help.glpi-project.org/documentation/modules/administration/forms.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.
