Первичные настройки
=================================

Для общей работоспособности
---------------------------------

В подсистеме администрирования:
    * обновить БД
    * завести пользователей и орг.структуру (Либо настроить синхронизацию с AD), в которой будут:
        * Системный пользователь (создается до установки Synergy ITSM, должен быть назначен на должность)
        * Инициаторы обращений
        * Операторы Первой линии
        * Исполнители Второй линии (Количество уровней исполнения можно увеличить).
    * Добавить пользователей в группы:
        * Первая линия - всех операторов первой линии
        * Вторая линия - всех исполнителей второй линии
        * itsm_group_reassign_access - Пользователи, которым предоставляется доступ к Переназначению обращений, находящихся на исполнении.
        * itsm_group_admin - Администраторы и системный пользователь.


*Примечание*. Обязательно необходимо добавить системного пользователя в группу itsm_group_admin. 

В Конфигураторе:

1. В справочник Форм завершения добавить новые формы завершения для обращения, проблемы, запроса на изменение и изменения следующим образом:

.. figure:: _static/Configurator_wcf.png

        Рис. 


.. figure:: _static/Configurator_wcf_problem.png

        Рис. 

.. figure:: _static/Configurator_wcf_rfc.png

        Рис. 

.. figure:: _static/Configurator_wcf_change.png

        Рис. 
        
2. Для формы завершения "Комментарий" активировать чек-бокс "Не требует подтверждения".

3. На формах:
    * в форме “Обращение” вставить значения оператора, исполнителя, системного пользователя по умолчанию
    * в форме “Проблема” вставить значения ответственного менеджера, исполнителя, системного пользователя по умолчанию
    * в форме “Изменение” вставить значение ответственного за координацию изменений в ИТ/администратора системы, владельца БП, ответственного за релиз, бизнес-аналитика, разработчика, тестировщика, системного пользователя по умолчанию
    * в форме "Запрос на изменение RFC" вставить значение ответственного за координацию изменений в ИТ/администратора системы, CAB, системного пользователя по умолчанию
    
4. Проверить/уточнить права на реестры 

5. Сбросить значения счетчиков, либо при необходимости создать свои шаблоны номеров для идентификаторов и применить их в соответствующих формах

6. Прописать логин/пароль системного пользователя для всех скриптов Блокирующих процессов.Для следующих блокирующих процессов включить галочку библиотеки synergy_class:

    * event.blocking.interpreter.calcResTimeExecute
    * event.blocking.interpreter.completion
    * event.blocking.interpreter.filter.operation
    * event.blocking.interpreter.finish.date
    * event.blocking.interpreter.incidents.operation
    * event.blocking.interpreter.responsible.duration
    * event.blocking.interpreter.incident.problemDone
    * event.blocking.interpreter.incident.waitingProblem
    * event.blocking.interpreter.problem.completion

7. Для реестра "Заявка на права доступа" в маршруте активации для работы "Прошу назначить права доступа" указать требуемого ответственного.

8. Для реестра "База знаний" в маршруте активации для согласования "Прошу согласовать" указать требуемого ответственного.



В пользовательской части:

1. Создать и заполнить одну запись в реестре “Настройки портала” и после этого для всех групп закрыть доступ на создание и удаление в этом реестре (необходимо для корректной работы портала):

.. figure:: _static/portal_settings.png

2. Создать и заполнить хотя бы одну запись реестра "Сервисы" для возможности запуска обращения по маршруту.

**Примечание:** Для отправки уведомлений из системы настроить в системе администрирования "Настройки уведомлений", это описано в следующей главе "Настройка интеграции с почтой".

Для работоспособности дашбордов:
-----------------------------------------


В интерфейсе Synergy:
    * создать хотя бы по одной тестовой записи в реестрах “Обращения” и “Проблемы”
    
В подсистеме администрирования:
    * проиндексировать данные форм
    
В конфигураторе:  
    * заменить во внешних модулях “Аналитика по инцидентам” и “Аналитика по проблемам” адрес приложения актуальной ссылкой на дашборды Kibana (полностью заменить ссылку)

В Kibana:
    * создать 2 шаблона индекса: ``r-itsm_registry_incidents`` и ``r-itsm_registry_problems``
    * проверить, что всё загрузилось, в дашбордах отсутствуют визуализации, помеченные «!» (при этом возможно наличие визуализаций со значениями “0”, “?”, “No results found”, и это всё не является ошибкой)

В клиентской части:
    * проверить работоспособность обоих дашбордов
   

    
Для реализации дашборда "Облако тегов"
-----------------------------------------

Данный дашборд отображает самые часто встречающиеся слова в поле "Тема"/"Описание" обращения, частота соответствует размеру текста. Чем чаще встречается то или иное слово, тем больше его шрифт. Таким образом, можно определить с чем чаще всего возникают проблемы.

Для того чтобы исключить слова, которые повторяются, но не несут важности для пользователя, создан "Реестр исключений". Примеры слов: доброе, утро, не, работает и т.д.

.. figure:: _static/exceptions.jpg

        Рис. Реестр исключений

Так как одно слово может быть использовано с разными окончаниями, для группирования создан "Реестр синонимов". Например, в обращении могут использоваться слова: принтер, принтеру, принтера. Чтобы все эти слова воспринимались на визуализации как "принтер", необходимо заполнить его в Реестре синонимов.

.. figure:: _static/synonyms.jpg

        Рис. Реестр синонимов

1. Заполнить по возможности Реестр синонимов и Реестр исключений.

**Примечание:** изменения в синонимах и исключениях после первичной индексации не будут применяться. Для этого требуется использование отдельного скрипта. В связи с этим необходимо на первом этапе заполнить реестры синонимов и исключений всеми необходимыми словами.

2. Создать хотя бы одну запись реестра Обращений, заполнить тему, описание, запустить по маршруту активации.

3. Создать индекс ``itsm_incident_tagcloud`` в Kibana->Management->Index Patterns->Add new

.. figure:: _static/index.jpg

        Рис. Создание индекса

4. Загрузить  дашборд "Облако тегов и 2 визуализации "Облако тегов по теме", "Облако тегов по описанию". Архив можно скачать здесь_.

.. _здесь: _static/TagCloud.7z

Для загрузки его необходимо перейти в Kibana->Management->Saved Objects и загрузить нажав на Import. Загружать необхрдимо json файлы, а не архив.

5. После импорта можно перейти на дашборд и ознакомиться с результатами.

6. При необходимости создать внешний модуль в SynergyIDE и добавить ссылку на этот дашборд, дать права группам пользователей.


Для настройки уведомления о том, что у пользователя открыт документ
-----------------------------------------

Реализовано уведомление для записей реестра Обращения в статусе "Зарегистрировано", которое отображается когда один пользователь открывает обращение, которое открыто у другого пользователя. Таким образом можно исключить одновременную работу над одним документом при распределении обращений.

Также бывают ситуации, когда пользователь закрывает сразу же страницу браузера и тем самым документ не закрывается. В базе данных документ остается открытым под данным пользователем. Реализовано несколько API методов для работы с открытыми документами:

1. GET `/itsm/rest/document/isopen?documentID={documentID}` - возвращает информацию по документу если он открыт, пример ответа:


{
    "errorCode": 0,
    "errorMessage": "OK",
    "data": {
        "userID": "1",
        "documentID": "bba1e996-c745-4d4f-b933-47aeef158ab2",
        "dataUUID": "63857",
        "date": "1577244327226"
    }
}


2. GET `/itsm/rest/document/list` - получает весь список открытых документов, пример ответа:

{
    "errorCode": 0,
    "errorMessage": "OK",
    "data": [
        {
            "userID": "f7abd6d9-7b92-4da4-a183-d53feaee2296",
            "documentID": "1b5f6d64-0d61-4f4c-b6a4-8fc80e6be177",
            "dataUUID": "63828",
            "date": "1577244489896"
        },
        {
            "userID": "1",
            "documentID": "bba1e996-c745-4d4f-b933-47aeef158ab2",
            "dataUUID": "63857",
            "date": "1577244327226"
        }
    ]
}


3. POST `/itsm/rest/document/remove/{documentID}` - удаляет из списка один документ, в ответ приходит 1 если был удален или 0 если в базе не найден данный документ, пример ответа:

{
    "errorCode": 0,
    "errorMessage": "OK",
    "data": 1
}


4. POST `/itsm/rest/document/removeAll` - удаляет из списка все документы, в ответ приходит количество удаленных записей, пример ответа:

{
    "errorCode": 0,
    "errorMessage": "OK",
    "data": 4
}


В случае если при выполнении любого из вышеперечисленных методов возникает ошибка, в ответ возвращается json:

{
    "errorCode": 13,
    "errorMessage": "сообщение, характеризующее ошибку"
}

Также для удобства реализован скрипт `closeOpenDocument.sh`, который проверяет и удаляет из базы открытые документы. Данный скрипт можно поставить в крон для автоматического удаления зависших документов (*для случаев когда событие закрытия документа из UI Synergy не может быть вызвано*). Скрипт содержит настройки, которые по необходимости изменить под потребности:
Скрипт находится в папке `/opt/synergy/apps/itsm/scripts`.

# кол-во часов, прошедших с даты открытия документа, по истечению которых нужно удалить документ из базы  

HOURS=5  
  
# mySQL настройки 

mysqlUser="root"   

mysqlPass="root"  

mysqlDB="synergy"  

mysqlHost="localhost"


Для того чтобы поставить в крон необходимо:

1. Подключиться по ssh и в терминале ввести команду 

`$ crontab -e`

2. Добавить текст

0 22 * * * /opt/synergy/apps/itsm/scripts/closeOpenDocument.sh

В данном случае скрипт будет запускаться каждый день в 22.00. При необходимости можно поменять сроки исполнения.

3. Сделать скрипт исполняемым:

$ chmod a+x /opt/synergy/apps/itsm/scripts/closeOpenDocument.sh



Для  закрытия обращений, которые ожидают доработки со стороны инициатора
-----------------------------------------

Бывают ситуации, когда пользователь обратился с обращением, и после отправки обращения на доработку пользователь не отвечает (возможно обращение уже не актуально). Обращения так и находится в статусе "Ожидает ответа пользователя". И так может собираться большое количество обращений. Для того чтобы их закрывать реализован скрипт `close_incident.sh`, который позволит закрыть данные заявки, если с момента отправления на доработку прошло 16 рабочих часов. Для того чтобы этот скрипт исполнялся его необходимо поставить в крон.
Скрипт находится в папке `/opt/synergy/apps/itsm/scripts`. В скрипте имеются следующие настройки:

1. файл откуда берутся настройки соединения с synergy: source /opt/synergy/jboss/standalone/configuration/arta/apps/itsm/itsm.properties

2. подключение к базе mysql(при необходимости заменить в скрипте логин и пароль)

mysqlUser="User"  

mysqlPass="Pass"  

mysqlHost="127.0.0.1"  

3. расположение лог файла, код реестра инцидентов и комментарий по умолчанию:

logFile="/var/log/synergy/scripts.log"  

...  

registryCode="itsm_registry_incidents"  

comment="Закрыто по истечению времени на ожидание ответа пользователя"  

Для того чтобы его поставить в крон необходимо:

1. Подключиться по ssh и в терминале ввести команду 

`$ crontab -e`

2. Добавить текст

0 23 * * * /opt/synergy/apps/itsm/scripts/close_incident.sh

В данном случае скрипт будет запускаться каждый день в 23.00. При необходимости можно поменять сроки исполнения.

3. Сделать скрипт исполняемым:

$ chmod a+x /opt/synergy/apps/itsm/scripts/close_incident.sh



