Adds a workflow engine to GLPI tickets: define ordered sequences of task templates, apply them to tickets (manually or via GLPI Forms), and let each step automatically hand off to the next as tasks are completed.
- Named workflows as ordered sequences of GLPI task templates.
- Manual application via a dedicated Workflow tab on every Ticket.
- Form integration — pick a workflow as part of a GLPI Form's ticket destination, so submissions are routed through your workflow from day one.
- Automatic step advance — when a step's task is marked Done (checkbox or status dropdown), the next step's task is created automatically on the same ticket.
- Per-step routing — the new task's and the ticket's assigned group/technician come from the task template, so notifications reach the right team at every stage.
- GLPI 11 native — CSRF-compliant via
CheckCsrfListener, uses the native form-destination API, PSR-4 autoloaded.
| Component | Version |
|---|---|
| GLPI | 11.0.0 – 11.0.x |
| PHP | ≥ 8.1 |
| MySQL/MariaDB | 8.0+ / 10.5+ |
- Download the latest release tarball from the Releases page and extract it into
glpi/plugins/tasksmanager/— or clone this repository there directly. - In GLPI, go to Setup → Plugins.
- Find Tasks Manager in the list, click Install, then Enable.
- Create your workflows under Tools → Workflows (build them from existing GLPI Task Templates).
- Apply a workflow to a ticket from its Workflow tab, or set it as the default for a GLPI Form destination.
- A workflow is an ordered list of GLPI Task Templates.
- When applied to a ticket, the first template's task is instantiated.
- The ticket's assigned tech / group are set from that task's template.
- When the user marks the task Done, the plugin:
- finds the next step,
- swaps the ticket's assigned tech / group to the next template's values (so the next notification reaches the right team),
- creates the next task.
- When the last step is done, the workflow is marked
completed.
tasksmanager/
├── setup.php Plugin registration, hooks, JS injection
├── hook.php Install/uninstall, event callbacks
├── composer.json PSR-4 autoload
├── plugin.xml GLPI catalog descriptor
├── logo.svg Plugin logo
├── README.md
├── LICENSE
├── CHANGELOG.md
├── src/
│ ├── Workflow.php Workflow model + step engine
│ ├── TaskState.php Per-task state extension
│ ├── TaskDashboard.php Ticket "Workflow" tab
│ ├── Config.php Plugin configuration
│ └── Form/Destination/
│ ├── WorkflowField.php Form destination integration
│ └── WorkflowFieldConfig.php
├── front/ Form pages (workflow.list, workflow.form, …)
├── ajax/ XHR endpoints (workflow, taskstate)
├── js/
│ └── workflow-refresh.js Auto-reload after a task is marked Done
└── locales/
└── tasksmanager.pot Translation template (en_GB, fr_FR)
.\build.ps1 # uses version from setup.php
.\build.ps1 -Version 1.3.12 # or overrideProduces dist/glpi-tasksmanager-<VERSION>.tar.bz2, excluding everything
listed in .glpiignore (git metadata, build artifacts, IDE files, etc.).
- Replace the LICENSE stub with the full GPL-3.0 text:
Invoke-WebRequest https://www.gnu.org/licenses/gpl-3.0.txt -OutFile LICENSE
- Push to GitHub under
github.com/bacus99/GLPI_Ticket_Tasks_Manager(must be public). - Tag and release the build:
git tag -a 1.3.12 -m "Release 1.3.12" git push --tags gh release create 1.3.12 dist/glpi-tasksmanager-1.3.12.tar.bz2 \ --title "1.3.12" --notes-from-tag
- Verify that the URLs in
plugin.xmlall resolve (logo, homepage, issues, readme, and most importantly thedownload_url). - Submit the plugin to the GLPI plugin catalog
by sending a Pull Request to
pluginsGLPI/data adding your
plugin.xmlURL toxml/plugins.json.
Christian Bernard