FormCreator много лет был самым устанавливаемым плагином GLPI, а в GLPI 11 он перестаёт существовать как плагин. Вопрос перестал звучать как «что лучше» и стал операционным: на какой вы версии и как перенести формы, уже работающие в продакшене, в новый встроенный модуль, не сломав каталог услуг.
Что изменилось при переходе с GLPI 10 на GLPI 11
В GLPI 9 и 10 пользовательская форма — синоним FormCreator: плагин сообщества (поддерживаемый Teclib), который даёт каталог услуг, условные поля, разделы и автоматическое создание заявки по ответу. Последняя самостоятельная линейка — 2.13.x; после неё разработка плагина остановилась.
В GLPI 11 эта функциональность стала модулем ядра: меню «Формы» с визуальным редактором, разделами, условными вопросами и destinations (то, что создаёт форма, — заявка или изменение). Самостоятельный FormCreator в 11 не работает. Вместо него существует только переходный плагин Formcreator Migration Tool (линейка 3.0.x), единственная функция которого — перенести старые формы во встроенный модуль и затем объявить FormCreator снятым с поддержки (EOL).
Прямое сравнение
| Критерий | FormCreator (GLPI 9/10) | Встроенные формы (GLPI 11) |
|---|---|---|
| Природа | Плагин сообщества (Teclib) | Модуль ядра, без плагина |
| Совместимость | GLPI 9 и 10 (линейка 2.13.x) | GLPI 11+ |
| Визуальный редактор | Разделы, вопросы и условия | Редактор со встроенными разделами и условиями |
| Условные поля | Да, по вопросу и по разделу | Да, встроенные условия |
| Создание заявки | «Target» (заявка, изменение, проблема) | «Destinations» (заявка, изменение) |
| Где хранятся определения | Таблицы glpi_plugin_formcreator_* | Таблицы glpi_forms_* |
| Где хранятся ответы | Таблицы самого плагина | Набор ответов (answers set) в ядре |
| Экспорт/импорт между средами | Ограничен самим плагином | Встроенный, в JSON, с сопоставлением зависимостей |
| Будущее / поддержка | Заморожен (EOL после миграции) | Поддерживается Teclib в ядре |
| Миграция с 10 на 11 | Источник (Migration Tool 3.0.x) | Официальная цель миграции |
| Стоимость | Бесплатно (GPL) | Входит в ядро |
Миграция — не волшебная кнопка
Официальная миграция действительно есть, и это опровергает миф, что «всё придётся пересоздавать вручную». Путь управляемый: обновите FormCreator до 2.13.10 или выше ещё в GLPI 10, поднимите GLPI 11 с Migration Tool, проверьте объём в Инструменты > Formcreator EOL Info и запустите миграцию из командной строки.
# 1) Ainda no GLPI 10: atualize o FormCreator para a versao 2.13.10 ou superior.
# 2) Suba o GLPI 11 e instale o "Formcreator Migration Tool" (plugin 3.0.x).
# 3) Confira o volume a migrar no menu Ferramentas, item Formcreator EOL Info.
# 4) Rode a migracao pela CLI, como o usuario do servidor web
# (Debian/Ubuntu usa www-data; RHEL/CentOS usa apache):
sudo -u www-data php bin/console migration:formcreator_plugin_to_core
# Ordem correta quando ha varios plugins legados no mesmo ambiente:
# Generic Objects, depois Fields e por ultimo o FormCreator.
Прежде чем что-либо запускать, оцените объём работы. Быстрая инвентаризация в базе покажет, сколько форм, вопросов и целей вам придётся проверить потом и какие из них самые тяжёлые:
-- Inventario ANTES de migrar: rode no banco do GLPI (10, ou 11 com o
-- Migration Tool instalado) para dimensionar a conferencia pos-migracao.
SELECT
(SELECT COUNT(*) FROM glpi_plugin_formcreator_forms WHERE is_deleted = 0) AS formularios,
(SELECT COUNT(*) FROM glpi_plugin_formcreator_sections) AS secoes,
(SELECT COUNT(*) FROM glpi_plugin_formcreator_questions) AS perguntas,
(SELECT COUNT(*) FROM glpi_plugin_formcreator_targettickets) AS alvos_de_chamado;
-- Os formularios com mais perguntas sao os que mais exigem conferencia
SELECT f.name AS formulario, COUNT(q.id) AS perguntas
FROM glpi_plugin_formcreator_forms f
LEFT JOIN glpi_plugin_formcreator_sections s
ON s.plugin_formcreator_forms_id = f.id
LEFT JOIN glpi_plugin_formcreator_questions q
ON q.plugin_formcreator_sections_id = s.id
WHERE f.is_deleted = 0
GROUP BY f.id, f.name
ORDER BY perguntas DESC;
Инструмент хорошо переносит структуру и содержимое: разделы, вопросы и типы полей. Человеческая проверка нужна в логике маршрутизации: FormCreator использовал «target ticket», чтобы задать категорию, шаблон, группу и участников создаваемой заявки; во встроенных формах это становится destinations, и импорт отмечает зависимости, которых не хватает в целевой среде (организация, категория), чтобы вы сопоставили их до завершения.
Компромисс, который проявляется при сопровождении
При сопровождении парков GLPI клиентов чаще всего мы видим ошибку не техническую, а в ожиданиях: кто-то запускает команду миграции, формы появляются в новом меню, и команда считает задачу выполненной. Это не так. Переносится оболочка; начинка — какая заявка создаётся, в какой категории, для какой группы, с каким шаблоном — как раз и требует пересмотра. Поэтому мы всегда сначала мигрируем на тестовый стенд, отправляем по тестовой заявке на каждую форму и сравниваем маршрутизацию с поведением старого FormCreator, поле за полем.
Две детали подлавливают тех, кто делает это впервые. Во-первых, таблицы glpi_plugin_formcreator_* остаются в базе после миграции: ничего не удаляется, они становятся источником для чтения/EOL и не исчезают, так что «всё пропало» обычно означает лишь то, что меню переехало. Во-вторых, встроенные формы получают новые ID (и UUID), поэтому любая прямая ссылка, закладка портала или ярлык самообслуживания, указывавшие на форму FormCreator, перестают работать и должны быть перенаправлены. И есть скрытое предварительное условие: если FormCreator на версии ниже 2.13.10, Migration Tool просто не видит формы — обновление в первую очередь предотвращает «пустую» миграцию.
Вердикт по сценариям
Оставайтесь на FormCreator, когда среда — GLPI 9 или 10 и миграции на 11 в ближайшей перспективе нет. В этих версиях он остаётся зрелым вариантом без замены для каталога услуг и пользовательских форм. Практическая рекомендация: держите его на 2.13.10 или выше, даже не мигрируя сейчас, — это оставляет дверь для миграции открытой, когда придёт время 11.
Используйте встроенные формы, когда вы на GLPI 11 (или собираетесь мигрировать). Здесь решать нечего: самостоятельный FormCreator в 11 не работает, а встроенный модуль — единственный путь: без плагина, за которым нужно следить при обновлении, с экспортом/импортом форм между средами в JSON (чего FormCreator встроенными средствами никогда не умел) и сопоставлением зависимостей в целевой среде.
При миграции с 10 на 11 используйте официальный инструмент, но относитесь к этому как к проекту, а не к команде: проведите инвентаризацию форм, оцените объём проверки по количеству вопросов и условий, мигрируйте на тестовый стенд, проверьте маршрутизацию каждой формы и только потом переносите в продакшен. Если устаревших плагинов несколько, соблюдайте порядок, указанный в самой документации: Generic Objects, затем Fields, затем FormCreator.
Стоимость и трудозатраты
Лицензия здесь не главное: и FormCreator, и встроенные формы бесплатны, а в 11 встроенный модуль уже входит в ядро. Реальная стоимость — это миграция и проверка. Автоматическая часть — запуск bin/console — занимает от минут до нескольких десятков минут в зависимости от объёма. Время людей уходит на проверку маршрутизации и воссоздание логики destinations, которая не перенеслась 1:1. Честная оценка: для нескольких простых форм вся миграция умещается в полдня; для десятков форм с множеством условий, участников и шаблонов планируйте дни проверки на тестовом стенде перед выпуском в продакшен.
В NexTool мы внедряем и сопровождаем GLPI у клиентов в обоих поколениях и проводим миграцию с FormCreator на встроенные формы, не обрушивая каталог услуг. Если вы уходите с GLPI 10 и не хотите обнаружить в продакшене, что миграция не перенесла, наши проекты внедрения и миграции покрывают этот путь от начала до конца.
Проверено командой NexTool Solutions.