Formcreator

Requirements (on-premise)

GLPI Version
Minimum PHP
Recommended

10.0.x

8.1

8.2

11.0.0

8.2

8.4

This plugin is available without a GLPI Network subscription. It is also available on GLPI Cloud.

FormCreator is a plugin which allow creation of custom forms of easy access.

Install the plugin

  • Go to the marketplace. Download and install the plugin Form Creator

Features

  • Direct access to forms self-service interface in main menu,

  • Highlighting forms in homepages,

  • Access to forms controlled: public access, identified user access, restricted access to some profiles,

  • Simple and customizable forms,

  • Forms organized by categories, entities and languages,

  • Questions of any type of presentation: Textareas, lists, LDAP, files, etc,

  • Questions organised in sections. Choice of the display order,

  • Possibility to display a question based on certain criteria (response to a further question),

  • A sharp control on responses from forms: text, numbers, size of fields, email, mandatory fields, regular expressions, etc,

  • Creation of one or more tickets from form answers,

  • Adding a description per fields, per sections, per forms, entities or languages,

  • Formatting the ticket set: answers to questions displayed, tickets templates,

  • Preview form created directly in the configuration,

  • Translation of forms to serve them in several languages.

You can take an look to the full changelog from plugin sources.

Install the Plugin

  • Uncompress the archive.

  • Move the formcreator directory to the <GLPI_ROOT>/plugins directory

  • Navigate to the Configuration > Plugins page,

  • Install and activate the plugin.

Service catalog

The service catalog is a replacement for the GLPI's simplified interface.

It is enabled on a per entity basis and exists in two flavors

  • simplified

  • extended

To enable it, edit an entity, open the [Forms]{.title-ref} tab and set the field [Helpdesk mode]{.title-ref} to [Service catalog simplified]{.title-ref} or [Service catalog extended]{.title-ref}. This setting handles inheritance from parent entity to children entities.

Users using the simplified interface will benefit a new interface allowing them to:

  • browse forms and FAQ with the unified interface

  • follow the process of their requests

  • book assets

  • view their feeds

Users using the extended interface have a more complete view on their requests.

Forms with [Direct access on homepage]{.title-ref} enabled will appear in the interface. Users may search by browsing the categories on the left of the screen, and may also search for forms with a natural language search engine.

By default FAQ items in the Knowledge Base also show with forms. The only prerequisite is to associate form categories to knowledge base categories (in [Setup > Dropdowns : Forms > Form categories]{.title-ref}).

It is possible th have a distinct display of FAQ in [Administration > Entities > Forms]{.title-ref}. When Distinct menu entry is selected the service catalog shows a new menu entry on the left. FAQ are browsable by category and key words.

All entity settings for Formcreator propagate to sub entities by default. The administrator may change the settings in a sub entities to break inheritance.

Overview

The service catalog shows several counters on the top left corner. Those counters show all requests involving the current user as a author, requester, observer, assigned or validator.

The requests displayed here are

  • tickets created without Formcreator

  • tickets generated by forms havung only one target tickets

  • form answers when the form has no target ticket

  • form answers when the form has several target tickets

The request are spread over 4 counters

  • processing

  • pending

  • to validate

  • closed

New requests are not included in the counters.

RSS feeds

When users are allowed to view RSS feds, the service catalog shows a menu entry on the left to access them. RSS feeds administration is done in GLPI as usual.

Reservations

Users may book an asset with GLPI's reservation system, avaialble in the left menu of the service catalog.

Forms configuration

Form creation

The right to create forms is enabled to the profiles having the right to update entities in GLPI. Refer to the documentation of GLPI to know how to setup this right.

Forms must be created in the entities where they are intended to be available. A form may be available in its entity and all sub entities if the field Child entities is set to Yes.

  1. Navigate to Administration > Forms.

image
  1. Click on the button to add a form +

Following fields must be populated:

  • Name: Name of the form.

  • Active: A form is inactive by default. You need to explicitly activate it when it is ready to use.

It is recommended to fill the Category field:

  • In the simplified interface, categories allow to tidy forms by Blocks.

  • If you want to use the service catalog you must use form categories.

Form categories are plugin's dropdowns. You can add form categories directly when editing a form using the + next to category field. You can do the same from Configuration > Dropdowns > Form category.

  • Direct access on homepage: Direct access to the form from the GLPI's simplified interface.

  • Description: displays in the list forms.

  • Language: by default a form is set to the language of its creator. The form will be available only to users using the same language as the form. Choose All languages to make the form available to users without language restriction.

  • Header: displays when the form is displayed.

  • Need to be validate: If Yes a list of validators is displayed. This is a list of GLPI users (with the right Validate an incident or Validate a request (in its profile) on a compatible entity with the form's entity. The list of validators is a multiple choice list. If no validator is selected all of them are submitted when the form is being used.

  • Default form in service catalog: if Yes the form will display in the service catalog without being filtered by the current category or keywords.

When all fields are filled, click on the add button at the bottom of the page.

Deleting a form is possible only if there are no associated answers. To delete a form, delete all its answers first from the Form answers tab.

Sections

After clicking on the tab Question the following page displays:

image

You must create a first section. Sections are intended to organize questions in the form.

image

It is possible to setup conditions to show the whole section, based on the answers provided to questions located in other sections of the form.

Questions

Click on the link Add a question in a section of your choice.

image

The following page displays:

image

A question is made of:

  • a title: this is the label of the question in the form.

  • a type: see list below.

  • a section: the section containing the question. You can move a question to an other section with this field.

  • a description: it is displayed under the question in the form. Use it as a hint for the requester, telling him which content is expected.

  • a dropdown list Show field to enable a condition

image

It submits the following choices:

  • Always visible: the field is always displays

  • Hidden unless: The question is hidden except if answers to other questions matches a condition.

  • Displayed unless: The question is displayed except if the answers to other questions matches a condition.

Conditions may be multiple. To add or remove a condition two buttons are available:

image

List of pictograms

  • The circle allows you to make a question mandatory

image

, or optional

image

  • Arrow up and arrow down allow you to reorder questions in a section.

  • Clicking on a question allow you to edit it.

  • Two stacked squares allows you to duplicate a question or a whole section.

  • The recycle bin allows you to delete a question or a whole section.

Questions are organized on a 4 columns array. You can resize width of questions, reorder them using drag and drop and put up to 4 questions on the same row.

Types of question

There are about twenty types of questions available. Depending on the chosen type, you need to provide additional information.

  • Required: Yes/No. When running the form a red star shows next to label of questions requiring an input.

  • Default values: its content depends on the type of the question.

  • Range Min/Max: Restricts the value to the given range when running the form.

  • Additional validation (Regular expression): You may set a custom regex with a regular expression. Use it when other restriction methods cannot satisfy your needs. Don't forget to specify the delimiters of the regex. You may add any modifier after the closing delimiter.

Actors

image

This field allows you to choose one or several users:

  • in GLPI, available in Administration > Users

  • not in GLPI, by typing an email address

Checkboxes (multiple choices)

image

image

Add a line per value in Values. Default values may be set in Default values, one per line. If this field is empty, no checkbox will be ticked.

Date / Datetime / Time

image

This field allows to select a date, a datetime or a time from a mini calendar.

Description

This field only displays information. Use it to give more details about a question.

This field allows the user to choose a value among those available in a dropdown from GLPI (in Configuration > Dropdowns).

image

Email

The answer to this type of field must be a syntactically valid email address.

File

image

This field allows the requester to upload a file.

Float

This field must be a float value. Note you may use a regular expression to tighter restrict the answer.

GLPI Object

This field allows you to build a dropdown from a GLPI object among those available in the menus:

  • Assets

  • Assistance

  • Management

  • Tools

  • Administration

Hidden field

This field is hidden and allows to retrieve an arbitrary value when generating the target (ticket or change).

This type of questions never shows on a form.

Hostname

This field is invisible. It allows to get the hostname of the computer used by the requester, assuming the DNS is able to properly resolve it from its IP address

Integer

This field must be an integer value. Note you may use a regular expression to tighter restrict the answer.

IP Address

This field is hidden and collects the IP address of the form requester. It does not show in the form.

LDAP select

This field allows you to create a dropdown list with objects from a LDAP directory:

image

This type of questions cannot be used to fill actors of a target.

Multiselect (multiple choice)

This field allows you to create a dropdown list with ability to select multiple items. Values are added one per line in the field Values. You may set default values, one per line in Default values*. If no default value is set then no item will be selected by default.

Request type

This field is a dropdown with "Incident" or "Request" choices. It can be used to set the request type of a ticket being generated by the form.

Radio buttons (one choice only)

image

image

Add a line per value in Values. A default value may be set in Default value. If this field is empty, no radio will be selected.

Select (one choice only)

This field allows you to create a dropdown list and set its items. Items are added one per line in Values. Default value may be set in Default value. If there is no default, no item is selected by default.

Tags

This is a hidden field to add a tag to the form for future processing.

This type of field is only available when the plugin Tag is installed and enabled.

Text

This field allows you to input a single line of text.

Text area

This field allows you to input several lines of text.

Urgency

This field allows you to select an urgency defined in GLPI.

Conditions

Conditions are expressions involving questions and sections which are evaluated in order to determine

  • if a question is displayed

  • if a section is displayed

  • if the submit button of a form is displayed

  • if a target (see below) must be generated

Available operators in an assertion are:

  • equals

  • not equals

  • less than

  • greater than

  • less than or equal

  • greater than or equal

  • is visible

  • is not visible

  • matches a regular expression

The condition expression can be used with the following rules:

  • Hidden unless: the item is hidden or not generated except when the expression is true

  • Displayed unless: the item is displayed or generated except when the expression is true

Access types

Three values are available:

  • Public access: Anonymous users may access the form; you may use it in an intranet.

  • Private access: Users having a GLPI account may access the form.

  • Restricted access: Only users having the specified profiles may access the form.

When a form is set to Public access it is possible to enable a simple captcha. This captcha should prevent spamming if a form is accessible from internet.

Captchas are not enabled by default on anonymous forms. Administrators need to enabled them explicitly depending on how the form may be accessible from an hostile network such Internet.

Targets

There are three types of targets for a form:

  • tickets

  • changes

  • problems

It is possible to generate any number of targets from a single form. Mixing types of targets is also possible.

To create a target click on the link Add a target

image

The following window is then displayed:

image

Choose a target name and type, then validate. The new target is created and is available for tuning.

Preview

This tab allows you to view how the form will be rendered and test it without activating it.

Submitting answers from the preview will be actually saved, and will generate targets if the form is not configured with validation.

Form answers

This tab shows all answers saved for the form.

To delete a form, all its answers must be deleted first. A warning shows at the bottom of the main tab of a form as a reminder.

Categories

Menu : [Setup > Dropdowns : Forms > Form categories]{.title-ref}

Form categories allow you to arrange your forms list. Forms are displayed when they belong to the selected category or any sub category. When a form does not have any category, it is displayed when no category is selected or when the user selects "view all".

You can add or edit categories generally from the Setup menu : [Setup > Dropdowns]{.title-ref}.

You can also add new categories directly from the form page like all GLPI dropdowns.

They are defined by entities and can be translated since GLPI 0.85 like all other dropdowns.

Dropdowns translation must be enabled on GLPI general configuration page [Setup > General]{.title-ref}, [General setup > Translate dropdowns = Yes]{.title-ref}

Categories may be associated to [Knowledge base categories]{.title-ref}. This link is necessary to allow FAQ entries to show along your forms.

Configuration

image

Render

image

Questions

After the creation of a form, create fields for the user to fill out.

image

The name of the questions will appear on the left and the field type selected on the right.

The Description will be under the input field.

Additional options may be displayed depending on the currently selected question type.

If validation of the input is desired, it can be implemented following PHP Regular Expressions.

If you want to show or hide questions depending on the answers of other questions, use the show fields area when editing a question. In the version 2.5.0 you may use more complex expressions checking for the content of several questions, and use logic operator OR and AND. The precedence of boolean operators applies, meaning that AND has precedence over OR.

Translation

In some cases a form should be available in several languages. Choose first in which language a form should be created. This language should be english (US or UK) or the language that most of target users understand. This is the fallback language if no alternative is found.

This language is also used as reference in the translation process. Then be sure that the chosen language is readable by the user who will translate the form.

To translate a form open the tab Form languages, then create all languages you need to provide to users.

image

Choose a language added to the form and click it to begin or resume translation, then select the tab Translations. Click the button New translation and a popup dialog will open and show a string to translate. Type the translation, and click save or validate with Enter on your keyboard.

image

If another string must be translated, it will show immediately. If no more string needs to be translated, a message will show instead.

image

When you close the dialog the list of translated strings is refreshed. You can edit a translation by clicking on it, delete one or several translations with the checkboxes on the left of the list and the Delete button**. You can also filter the list with the filter input box.

image

Targets

Targets are objects generated by FormCreator submission. If a form requires validation, the targets are delayed until approbation.

Targets are currently tickets only.

A target ticket defines the ticket generated by the form. You may have several targets per form.

Open the tab [Destination]{.title-ref} and create a target with a name and a type (currently ticket only).

Target ticket

A target ticket generates a ticket.

image

The ticket is build from scratch or from a ticket template available in GLPI. You may

  • customize the name of the target ticket to distinguish it from possible other targets,

  • customize the title and description of the ticket using questions and answers,

  • set tne destination entity of the generated ticket,

  • set a time to resomve (formerly due date),

  • set the type of ticket (request or incident),

  • set the associated elements,

  • set the category,

  • set the urgency,

  • set the location,

  • assign tags to the ticket if the plugin [Tags]{.title-ref} is available,

  • link the generated ticket to other tickets

  • define actors of the ticket.

  • define conditions to meet to generate the target ticket

Setting an urgency, a category or a location (specific or from a question) overrides the urgency defined in a ticket template (if any)

Destination entity

Many choices are avaialble:

  • Current active entity: the entity of the requester who fills a form,

  • Default requester's entity: the default entity defined for the user who fills the form,

  • First dynamic requester's entity (alphabetical): sorts all dynamic entities of the requester alphabetically and selects the first one,

  • Last dynamic requester's entity (alphabetical): sorts all dynamic entities of the requester alphabetically and selects the last one,

  • The form's entity: the entity where is located the form being filled by the requester,

  • Default entity of the validator: the default entity of the validator who validates the request,

  • Specific entity: an entity set by the form's designer,

  • Default entity of a user type question answer: the default entity of a user choosen by the requester in a question.

  • From a GLPI object > Entity type question answer: the entity choosen by the requester from a question.

Default requester's entity may be not set, then there is a risk to generate tickets in the root entity.

Default entity of the validator may be not set, then there is a risk to generate tickets in the root entity.

Dynamic requester's entity requires user synchronization, then there is a risk to generate tickets in the root entity.

Ticket template

Sets predefined setings for the ticket from a template. All settings defined in the target ticket will override the values found in the template.

Request type

Sets the type of the generated ticket

  • Default or from a template: value set by GLPI when no type is set, or from a template, if any and if this template defiines a type

  • Specific type: either request or incident,

  • Equals to the answer to the question: the value is set from a request type question.

Associated elements

Sets associated elements to the generated ticket

None : self explanatory, Specific asset: an asset set by the designer of the form, Equals to the answer to a question: an asset set by the requester, from a question Last valid answer: an asset set by the requester, from the last visible question eligible for this purpose

Category

Sets the category of the generated ticket

  • Category fro template or none: sets the category from a template if any and if this template has a predefined category. None in all other cases,

  • Specific category: a category set by the form's designer,

  • Equals to the answer to a question: a category choosen by the requester,

  • lastr valid answer: a category from the last visible question of type category,

Urgency

  • Urgency fro template or none: sets the urgency from a template if any and if this template has a predefined urgency. None in all other cases,

  • Specific urgency: an urgency set by the form's designer

  • Equals to the answer to a question: a category choosen by the requester,

Location

  • Location from template or none: sets the location from a template if any and if this template has a predefined location. None in all other cases,

  • Specific location: a location set by the form's designer

  • Equals to the answer to a question: a category choosen by the requester,

Condition to show the target

The form's designer may restrict creation of the ticket depending on conditions.

Target change

A target change generates a change

image

The change is built from scratch. You may

  • customize the title, description, imapct, control list, deployment path, backup plan and checklist fields using questions and answers,

  • set the urgency from a value or a question

  • choose the entity of the change among many policies

  • set the time to resolve

  • define the actors of the change

  • set the category of the change

  • define conditions to meet to generate the target ticket

Target description templating

Target ticket and target change both have description template. By default the template uses the tag ##FULLFORM##. This tag is a default template where all questions and sections are displayed in the same order as the form.

Each question has 2 tags

  • ##question_x## which is replaced by the label of the question. X is the ID of the question.

  • ##answer_x## which is replaced by the answer to a question. X is the ID of the matching question.

Questions of type dropdown support more complex expression like ##answer_x.name##. x still means the ID of a question. the word after the dot is the name of a property available in the search options of the itemtype of the dropdown question.

As an example, consider a dropdown question which shows locations. The itemtype set by the form designer is "Location". The designer can render in the target many fields of the location selected by the requester, such address, postcode, state, building, and many other data. To find them, the admin may rely on the list available in the search filters for a location.

Issues lifecycle

Abstract

The service catalog relies mostly on a list of issues (or assitance request). Issues are created and maintained upon events related to tickets and form answers.

When a ticket is created from GLPI, then a new issue is created in the database. When this ticket is being updated, the issue is updated to reflect all relevant changes.

Form answers are created when a requester fills a form and submits it. When a form answer is created a new issue is created as well. As a form answer may or may not trigger the creation of tickets, issues behave differently depending on this quantity of generated tickets.

Ticket created from GLPI

When a ticket is created from GLPI, the issue reflects most useful information from this ticket.

Form answer without any generated ticket

When a form answer did not generate a ticket, or when the form answer generating tickets is waiting for validation, then the issue reflects the form answer.

Form answer with a single generated ticket

When a form answer trigered the creation of one and only one ticket, then the issue reflects this ticket. This is also true when the approval of a form answer triggers the creation of a single ticket.

Form answer with several generated tickets

When a form answer generated several tickets, then the issue reflects a list of those tickets. Each ticket is viewable by the requester, if he is granted to view it.

Status

Computation of status

Issues follow the lifecycle of tickets or form answers, depending on which object it reflects.

When an issue reflects a single ticket, its status takes into account the validation status of a ticket, if any. The validation status of the ticket takes precedence when the ticket is not solved and waiting for approval or has been refused. For all other cases, the issue shows the regular ticket status.

You may refer to the following table to have a quick view of how the status is computed:

Validation Status

NONE

WAITING

REFUSED

ACCEPTED

Ticket

Status

INCOMING

T

V

V

T

ASSIGNED

T

V

V

T

PLANNED

T

V

V

T

WAITING

T

V

V

T

SOLVED

T

T

T

T

CLOSED

T

T

T

T

  • T = status picked from Ticket

  • V = status picked from Validation

When an issue reflects several tickets then the status of each ticket is computed from the above description, and the least advanced status is used. If an issue reflects 3 tickets having statuses Waiting, Resolved and Closed, then the choosen status is Waiting. This means that an issue is closed oly when all its tickets are closed.

searching issues by status

The search engine shows many statuses. Some are shortcuts to search several statuses at once, like tickets, some are specific to the statuses of form answers.

  • new: new issues

  • processing (assigned): processing issues

  • processing (planned): planned issues

  • waiting: issues waiting for information from requester or waiting for validation by a valdiator

  • solved: issues solved or refused by a validator

  • closed: issues closed or accepted by a validator (this happens when no ticket has been generated after validation)

  • not solved: all statuses but solved or closed

  • not closed: all statuses but closed

  • solved + closed: issues solved or closed

  • all: any status

  • accepted: issues accepted by a validator

  • refused: isses refused by a validator

Exporting and importing forms

Abstract

Formcreator allows exporting and importing forms between instances of GLPI.

This feature is designed to let administrators develop forms on a testing environment and copy them on a production environment.

When a form is being imported the plugin searches for a matchng form in the database. This is done with the help of a random identifier created when a new form is instanciated. Each sub object (sections, questions, conditions, targets) also have a random identifier. This helps the plugin to find a matching item and update it if necessary. Thanks to this mechanism Formcreator is able to update a form when it is imported more than once.

Limitations

A form may contain relations to objects of GLPI itself (mostly users, groups, categories, entities). There is currently no reliable way to maintain relations between forms and GLPI's objects or assets accross instances. It is therefore highly recommended to develop forms on a testing environemnt with a reasonably recent copy of the production database.

The export / import feature does not support importing forms accros different versions of Formcreator. The version 2.10 shows a warning if it detects a attempt of importing forms from a previous version. In version 2.11 such imports are not allowed.

Exporting forms

  1. Navigate to Administration > Forms

  2. Use massive actions to export one or more forms. Clicking on the Post button will start the download of a JSON formated file. This file contains all forms selected for the export.

image

Importing forms

  1. Navigate to Administration > Forms

  2. Use the toolbar to import forms.

image
  1. Select one or more JSON files created with the same version of Formcreator and validate.

image
  1. Depending on the complexity and the quantity of forms the process may be slow. Please be patient.

  2. Carefully check the messages when the import completes. You may get warnings and errors.

Import behavior

Entities

When Formcreator imports a form, it checks that the entity of the form exists and the user has right to update entities. If not, the form is ignored and trigger a warning.

Form categories

Form categories are created if they don't exist yet.

Users and groups

The users and groups found in target actors must exist. If not, the import of the form will stop with an error, leading to an incomplete form. Other forms will be imported.

Last updated

Was this helpful?