Эскалация и отложенные заявки

Только для готовых решений! Пожалуйста, не используйте для вопросов и обсуждений!

Модератор: ykolesnikov

Ответить
egorbright
OTRS Новобранец
Сообщения: 126
Зарегистрирован: 11 янв 2013, 12:06

Эскалация и отложенные заявки

Сообщение egorbright » 03 июл 2014, 12:41

Суть проблемы:
В OTRS есть эскалация.
Также есть возможность откладывать заявку (переводить её в статус pending reminder, например) до определённой даты.
Эта функция необходима, когда, например, происходит следующее:

Вариант 1:
а. Написал пользователь заявку на внесение модификаций в его рабочую станцию (например, добавить оперативы);
б. Доблестные админы обнаружили, что сегодня утром оператива на склдае закончилась, и ничего не остаётся делать, как заказывать новую и ждать доставки.
в. Поставщик объявляет сроки доставки необходимого железа.
г. Админы откладывают заявку до даты, определённой поставщиком оперативы.

В данном случае, если произойдёт эскалация данной заявки, это будет неправильно, т.к. (возможно) бухгалтерия не выделила вовремя деньги на закупку нового оборудования, или произошёл массовый приём новых сотрудников, благодаря чему что-то требуемое юзером в заявке (в данном случае это оперативная память) внезапно кончилось. И по большому счёту, этой эскалацией можно нарушить показатели подразделения доблестных администраторов. Нам это надо? Ни в коем случае.

Вариант 2:
Пользователя, оставившего заявку, нет на месте. Он заболел, а без его присутствия лезть в недры системника не представляется возможным.

В обоих вариантах, чтобы избежать эскалации подобной заявки, предусмотрена функция, позволяющая отложить выполнение заявки на определённый срок.
И вот мы с вами на радостях берём и переводим заявку в статус "Отложена" (или Pending reminder, тут кто какой язык юзает). А эскалация продолжает "тикать". То есть время до эскалирования заявки продолжает уменьшаться. А нам такое поведение системы надо? Совсем нет.


Решение проблемы:

Нам нужно установить и правильно настроить специальный add-on от znuny.com

Ребята из http://znuny.com запилили свой репозиторий расширений для OTRS.
Для того, чтобы пользоваться их замечательными аддонами, нам необходимо:

1. Соединение сервера с интернетом (если сервер находится за NAT-ом, можно открыть доступ на 10 минут и успеть всё сделать)
2. Скачать и установить руками пакет: http://portal.znuny.com/api/addon_repos/public/803 (так мы получаем доступ в репозиторий)

Теперь у нас в админке появился репозиторий, из которого ставим пакет Znuny4OTRS - Escalation suspend

После установки закрадывается впечатление, что всё уже должно работать. Но не работает. А почему?

В комплекте с этим пакетом идёт свой файл под названием znuny.RebuildEscalationIndexOnline.pl, расположенный в папке bin
Чтобы всё заработало как надо, этот файл необходимо добавить в cron, т.к. время до возобновления эскалации пересчитывается после запуска этого файла.

Логика работы этого аддона следующая:

Как только заявка переходит в один из указанных в админке статусов (/otrs/index.pl?Action=AdminSysConfig;Subaction=Edit;SysConfigSubGroup=EscalationSuspend;SysConfigGroup=Znuny4OTRS-EscalationSuspend), время до эскалации заявки продолжает уменьшаться. НО как только запустился этот файл, всё встаёт на свои места. И время до эскалации становится тем же, которое было перед обновлением статуса заявки.

Вот так у меня выглядит запись в crontab (запуск производится каждую минуту, в системе уже over 30 000 заявок, всё работает шустро):

Код: Выделить всё

# run a znuny addon's escalation time rebuilder
*/1 * * * *     /usr/local/otrs/bin/znuny.RebuildEscalationIndexOnline.pl
Всем добра, спасибо за внимание! =)
FreeBSD 7.4 :: OTRS 3.3.11
FreeBSD 9.1 :: OTRS 5

wikkid
OTRS Новобранец
Сообщения: 1
Зарегистрирован: 31 июл 2015, 12:42

Re: Эскалация и отложенные заявки

Сообщение wikkid » 31 июл 2015, 13:11

Подскажите пожалуйста, а для 4го отрса есть такой модуль? Никак не могу найти, в репозитории знуни похоже убрали. Кеш гугловский видит, а по ссылке - страница не найдена :(
Если кто имеет сие чудо - очень прошу, поделитесь! :)

krutoy
OTRS Новобранец
Сообщения: 58
Зарегистрирован: 15 июн 2015, 16:39

Re: Эскалация и отложенные заявки

Сообщение krutoy » 30 ноя 2015, 19:57

добрый день.
а для otrs 4 есть решение?
C уважением, Андрей.
OTRS 4.0.14 CentOS 6.7 MySQL

alex
OTRS Новобранец
Сообщения: 48
Зарегистрирован: 01 ноя 2010, 14:47
Откуда: Воронеж
Контактная информация:

Re: Эскалация и отложенные заявки

Сообщение alex » 06 янв 2016, 06:12

Предлагаю такое решение: берем файл /opt/otrs/Kernel/System/Ticket.pm, копируем его в каталог /opt/otrs/Custom/Kernel/System, добавляем в него пару строчек и перезапускаем веб-сервер. Ниже патч:

Код: Выделить всё

--- Ticket.pm.orig	2016-01-06 06:04:39.443000000 +0300
+++ Ticket.pm	2016-01-06 06:22:05.728000000 +0300
@@ -2492,20 +2492,21 @@
         }
     }

     # get ticket attributes
     my %Ticket = %{ $Param{Ticket} };

     # do no escalations on (merge|close|remove) tickets
     return if $Ticket{StateType} eq 'merged';
     return if $Ticket{StateType} eq 'closed';
     return if $Ticket{StateType} eq 'removed';
+    return if $Ticket{StateType} eq 'pending reminder';

     # get escalation properties
     my %Escalation = $Self->TicketEscalationPreferences(
         Ticket => $Param{Ticket},
         UserID => $Param{UserID} || 1,
     );

     # return if we do not have any escalation attributes
     my %Map = (
         EscalationResponseTime => 'FirstResponse',
@@ -2639,21 +2640,21 @@
     my %Ticket = $Self->TicketGet(
         TicketID      => $Param{TicketID},
         UserID        => $Param{UserID},
         DynamicFields => 0,
     );

     # get database object
     my $DBObject = $Kernel::OM->Get('Kernel::System::DB');

     # do no escalations on (merge|close|remove) tickets
-    if ( $Ticket{StateType} =~ /^(merge|close|remove)/i ) {
+    if ( $Ticket{StateType} =~ /^(merge|close|remove|pending reminder)/i ) {

         # update escalation times with 0
         my %EscalationTimes = (
             EscalationTime         => 'escalation_time',
             EscalationResponseTime => 'escalation_response_time',
             EscalationUpdateTime   => 'escalation_update_time',
             EscalationSolutionTime => 'escalation_solution_time',
         );

         TIME:
OTRS::ITSM 5.0.5

vovab
OTRS Новобранец
Сообщения: 17
Зарегистрирован: 27 фев 2013, 21:16

Re: Эскалация и отложенные заявки

Сообщение vovab » 06 янв 2016, 14:48

А можно еще в 2-х словах суть предложенного решения? Как оно должно работать?
Алексей Шульгин
SoftServe Business Systems
OTRS 3.3.12 + ITSM 3.3.12

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Эскалация и отложенные заявки

Сообщение ykolesnikov » 06 янв 2016, 16:06

Все вопросы в другие разделы форума!
Через час пост удалю!

Читайте правила форума! :twisted:
Модератор форума.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

krutoy
OTRS Новобранец
Сообщения: 58
Зарегистрирован: 15 июн 2015, 16:39

Re: Эскалация и отложенные заявки

Сообщение krutoy » 06 янв 2016, 16:20

мне тоже интересно как работает.
если возможно, расскажите
alex писал(а):Предлагаю такое решение: берем файл /opt/otrs/Kernel/System/Ticket.pm, копируем его в каталог /opt/otrs/Custom/Kernel/System, добавляем в него пару строчек и перезапускаем веб-сервер. Ниже патч:

Код: Выделить всё

--- Ticket.pm.orig	2016-01-06 06:04:39.443000000 +0300
+++ Ticket.pm	2016-01-06 06:22:05.728000000 +0300
@@ -2492,20 +2492,21 @@
         }
     }

     # get ticket attributes
     my %Ticket = %{ $Param{Ticket} };

     # do no escalations on (merge|close|remove) tickets
     return if $Ticket{StateType} eq 'merged';
     return if $Ticket{StateType} eq 'closed';
     return if $Ticket{StateType} eq 'removed';
+    return if $Ticket{StateType} eq 'pending reminder';

     # get escalation properties
     my %Escalation = $Self->TicketEscalationPreferences(
         Ticket => $Param{Ticket},
         UserID => $Param{UserID} || 1,
     );

     # return if we do not have any escalation attributes
     my %Map = (
         EscalationResponseTime => 'FirstResponse',
@@ -2639,21 +2640,21 @@
     my %Ticket = $Self->TicketGet(
         TicketID      => $Param{TicketID},
         UserID        => $Param{UserID},
         DynamicFields => 0,
     );

     # get database object
     my $DBObject = $Kernel::OM->Get('Kernel::System::DB');

     # do no escalations on (merge|close|remove) tickets
-    if ( $Ticket{StateType} =~ /^(merge|close|remove)/i ) {
+    if ( $Ticket{StateType} =~ /^(merge|close|remove|pending reminder)/i ) {

         # update escalation times with 0
         my %EscalationTimes = (
             EscalationTime         => 'escalation_time',
             EscalationResponseTime => 'escalation_response_time',
             EscalationUpdateTime   => 'escalation_update_time',
             EscalationSolutionTime => 'escalation_solution_time',
         );

         TIME:
C уважением, Андрей.
OTRS 4.0.14 CentOS 6.7 MySQL

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Эскалация и отложенные заявки

Сообщение alexus » 06 янв 2016, 17:12

Мне тоже интересно послушать соображения автора, как это должно работать.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Эскалация и отложенные заявки

Сообщение ykolesnikov » 06 янв 2016, 17:27

Коллеги!!!
А не перейти ли Вам в другой раздел?
Там пободаться и решить, что делать с автором интересующей Вас темы. Закопать перед Рождеством или отправить поститься!
О решении сообщите!
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

alex
OTRS Новобранец
Сообщения: 48
Зарегистрирован: 01 ноя 2010, 14:47
Откуда: Воронеж
Контактная информация:

Re: Эскалация и отложенные заявки

Сообщение alex » 06 янв 2016, 21:37

При переводе заявки в одно из состояний pending reminder заявка не должна эскалироваться, по крайней мере на моей тестовой системе это вроде как сработало, хотя честно сознаюсь, много не тестил, просто увидел этот пост и решил попробовать сделать, так как для меня это тоже актуально.
OTRS::ITSM 5.0.5

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Эскалация и отложенные заявки

Сообщение alexus » 06 янв 2016, 22:57

А что происходит, когда заявка возвращается в рабочий статус, в котором SLA надо опять считать?
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

alex
OTRS Новобранец
Сообщения: 48
Зарегистрирован: 01 ноя 2010, 14:47
Откуда: Воронеж
Контактная информация:

Re: Эскалация и отложенные заявки

Сообщение alex » 06 янв 2016, 23:21

Ничего не происходит )) Надо дорабатывать. Буду разбираться.
OTRS::ITSM 5.0.5

krutoy
OTRS Новобранец
Сообщения: 58
Зарегистрирован: 15 июн 2015, 16:39

Re: Эскалация и отложенные заявки

Сообщение krutoy » 07 янв 2016, 09:08

такое можно сделать при помощи 2х заданий планировщика.
1. закрывает заявку - sla останавливается, но в заявке указано
2. переводит в статус ожидания
при в переводе в рабочее состояние sla не запускается,увы
пока другого решения не нашёл
C уважением, Андрей.
OTRS 4.0.14 CentOS 6.7 MySQL

Timian
OTRS Новобранец
Сообщения: 2
Зарегистрирован: 23 июн 2016, 17:50

Re: Эскалация и отложенные заявки

Сообщение Timian » 12 июл 2016, 10:59

Доброго времени суток.
Презентую следующее готовое решение для OTRS5, представляющее собой переписанный модуль SuspendEscalation OTRS3 (Znuny):

Описание работы и инструкция по установке функции «Приостановление таймера эскалации для заявок в состоянии ожидания» в OTRS5

Реализация

Задача привнесения нового функционала в систему целиком и полностью ложиться на три новых файла: RebuildEscalaationIndex.pl, EscalationSuspend.xml, EscalationSuspend.pm.
RebuildEscalationIndex.pl представляет собой скрипт, запускаемый по расписанию планировщиком задач Cron.
EscalationSuspend.xml задает параметры управления реализуемой функцией: переключатель включения/выключения функции, имя пакета (включен в файл EscalationSuspend.pm) для переопределения методов класса Ticket.
EscalationSuspend.pm добавляет новые алгоритмы для расчета точек эскалации.

Алгоритм

Скрипт RebuildEscalationIndex.pl выполняет поиск заявок, находящихся в момент запуска скрипта в состояниях типа (StateType) «pending reminder», и для каждой из них вызывает метод TicketEscalationIndexBuild объекта класса Ticket.
Для поданной на вход заявки метод TicketEscalationIndexBuild определяет необходимость перерасчета точек эскалации (время до первого ответа, время до изменения, время до решения заявки, минимальное время до эскалации). Расчет точки эскалации без учета интервалов приостановления таймера эскалации выполняется методом DestinationTime класса Time, расчет точки эскалации с учетом интервалов приостановления таймера эскалации выполняется методом TicketEscalationSuspendCalculate.
Метод TicketEscalationSuspendCalculate рассчитывает новую точку эскалации путем анализа событий типа CreateTicket и StateUpdate, произошедших с заявкой, за все время ее существования. Исходные точки эскалации сдвигаются на общее рабочее время нахождения заявки в состоянии по типу (StateType) «pending reminder». Фактически точка эскалации определяется сдвигом временной точки создания заявки на значение таймера эскалации, заданного либо в SLA, либо в параметрах очереди, и на суммарную длительность нахождения заявке в состояниях типа (StateType) «pending reminder». При занесении новых данных о точках эскалации в поля таблицы ticket, информация в остальных полях остается без изменений.
Метод TicketWorkingTimeSuspendCalculate выполняет расчет рабочего времени, потраченного на решение заявки без учета интервалов ее нахождения в состояниях типа «ожидает напоминания».
Переопределенный метод _TicketGetClosed отличается от оригинала подсчетом времени, затраченного на решение заявки, с помощью (когда функция приостановления таймера эскалации активирована) метода TicketWorkingTimeSuspendCalculate, взамен метода WorkingTime класса Time, для исключения временных интервалом нахождения заявки в состояниях типа (StateType) «pending reminder».

Инструкция по добавлению функционала в OTRS5

Подключение функции происходит в три этапа:

1) Скопировать содержимое папки OTRS-SuspendEscalation в корневую директорию системы OTRS (/opt/otrs) Конечное размещение файлов должно быть следующим:
/opt/otrs/bin/RebuildEscalaationIndex.pl,
/opt/otrs/Kernel/Config/Files/EscalationSuspend.xml,
/opt/otrs/Kernel/System/Ticket/EscalationSuspend.pm;

2) Назначить владельцем файла /opt/otrs/bin/RebuildEscalationIndex.pl пользователя «otrs» и предоставить ему права на его исполнение
(# chown otrs RebuildEscalationIndex.pl; chmod 770 RebuildEscalationIndex.pl);

3) Добавить следующее задание под пользователем «otrs» в Cron (# crontab -u otrs -e):
*/1 * * * * $HOME/bin/RebuildEscalationIndex.pl >> /dev/null.

Настройка функционала из подраздела «Администрирование» - «Конфигурация системы»:

SuspendEscalatedTickets = 1 – функция активирована (значение по умолчанию);
SuspendEscalatedTickets = 0 – функция деактивирована.

Приятного пользования и удовлетворенности! ;)
Вложения
OTRS-SuspendEscalation.7z
Три файла с правильным размещением в дереве каталогов
(5.25 КБ) 655 скачиваний

krasn000v
OTRS Новобранец
Сообщения: 38
Зарегистрирован: 20 авг 2015, 13:59

Re: Эскалация и отложенные заявки

Сообщение krasn000v » 29 июл 2016, 10:59

Добрый день!
Решил попробовать поставить вчера патч Ваш.
Все установилось нормально как я понимаю, но -
1. Создал очередь с настройками эскалации "до решения заявки" 5 минут.
2. Создал в этой очереди Тестовую заявку в 10-29
3. Поставил напоминание в 10-30 на 10-39
На сколько я понимаю, время Эскалации должно быть 10-44, ну или 10-45.
Но дальше происходит следующее, статус заявки так и остается Ожидает напоминания, в информации о заявки "В ожидании еще: -10 мин 29.07.2016 10-39", а cron благополучно каждую минуту сдвигает заявку дальше пересчитывая "Время до решения заявки: 5 мин 29.07.2014 10-54", а время в ожидании уходил в минус.
В эскалированный заявки она, конечно, не попадает.
Может настройки какие некорректные, и по истечению времени ожидания он не присваивает статус Открыта, например?
Или я что-то не так делаю? Подскажите куда копать?

P.S. Надеюсь получилось объяснить что происходит :)
С Уважением, Александр Краснов
OTRS ver. 4.0.7
MySQL 5.5.43

egorbright
OTRS Новобранец
Сообщения: 126
Зарегистрирован: 11 янв 2013, 12:06

Re: Эскалация и отложенные заявки

Сообщение egorbright » 29 июл 2016, 11:31

Znuny сделали пакет для OTRS 5. Лучше не парьтесь с кастомными штуками, возьмите готовое рабочее расширение.
FreeBSD 7.4 :: OTRS 3.3.11
FreeBSD 9.1 :: OTRS 5

krasn000v
OTRS Новобранец
Сообщения: 38
Зарегистрирован: 20 авг 2015, 13:59

Re: Эскалация и отложенные заявки

Сообщение krasn000v » 29 июл 2016, 11:37

egorbright писал(а):Znuny сделали пакет для OTRS 5. Лучше не парьтесь с кастомными штуками, возьмите готовое рабочее расширение.
Не обновляли OTRS до 5 версии.
В 5 версии после окончания времени напоминания статус возвращается обратно в Открытый?
Я так понимаю кастомизация с этим должна быть.
С Уважением, Александр Краснов
OTRS ver. 4.0.7
MySQL 5.5.43

Timian
OTRS Новобранец
Сообщения: 2
Зарегистрирован: 23 июн 2016, 17:50

Re: Эскалация и отложенные заявки

Сообщение Timian » 02 авг 2016, 14:46

krasn000v писал(а): Может настройки какие некорректные, и по истечению времени ожидания он не присваивает статус Открыта, например?
Или я что-то не так делаю? Подскажите куда копать?
В OTRS 5 Free c приходом времени напоминания заявка остается в состоянии ожидающей напоминания. В открытую ее нужно переводить вручную.

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Эскалация и отложенные заявки

Сообщение ykolesnikov » 02 авг 2016, 16:20

Что, в общем- то логично, т.к. После истечения срока напоминания агент должен либо написать заметку, а там, обычно, в качестве следующего состояния будет "открыта" или закрыть заявку или вновь отложить.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

ashilov
OTRS Новобранец
Сообщения: 16
Зарегистрирован: 29 дек 2016, 12:48
Откуда: Екб

Re: Эскалация и отложенные заявки

Сообщение ashilov » 10 апр 2017, 16:02

egorbright писал(а):Znuny сделали пакет для OTRS 5. Лучше не парьтесь с кастомными штуками, возьмите готовое рабочее расширение.
Добрый день! Можно ли ссылку или ткнуть туда где его найти? Что-то не могу ничего найти для 5 отрс... :(

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Эскалация и отложенные заявки

Сообщение ykolesnikov » 10 апр 2017, 16:39

Посмотрел, похоже нет теперь версии для 5.х и на OPAR и на родном ZNUNY сайте. Видимо, политика изменилась.
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

Korshun
OTRS Новобранец
Сообщения: 1
Зарегистрирован: 17 май 2018, 20:45

Re: Эскалация и отложенные заявки

Сообщение Korshun » 17 май 2018, 21:13

Здравствуйте. Не осталась ли у кого-нибудь эта удалённая версия Znuny4OTRS-EscalationSuspend для OTRS 5?

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Эскалация и отложенные заявки

Сообщение alexus » 17 май 2018, 21:18

Korshun писал(а):Здравствуйте. Не осталась ли у кого-нибудь эта удалённая версия Znuny4OTRS-EscalationSuspend для OTRS 5?
Там были глюки, видимо потому и удалили. У нас есть платный модуль. Контакты в подписи.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

Ответить