ManageEngine ServieDesk : wrong DueBy Date for SLA

Если в созданной заявке неверно проставляется Срок исполнения (DueBy Date), нужно проверить параметры, от которых данный показатель:
1. Admin -> Operation Hours: правильно ли задано рабочее время.
2. Admin -> Service Catalog -> кнопка Manage: правильно ли задано значение времени в SLA.

Если в предыдущих пунктах все верно, то нужно обратить внимание на версию JRE time zone, под которой работает ServiceDesk.
Может быть она устарела и требует немедленного обновления!

1. В командной строке (CMD) получим версию JRE time zone и текущего файла tzupdater.jar (если файла tzupdater.jar нет, то переходим к п.2.):

c:\ManageEngine\ServiceDesk — это директория, куда установлен ServiceDesk

CMD>
cd c:\ManageEngine\ServiceDesk\jre\bin\
java -jar tzupdater.jar -V -v

------------------------------------------
java.home: c:\ManageEngine\ServiceDesk\jre
 java.vendor: Sun Microsystems Inc.
 java.version: 1.6.0_45
 JRE time zone data version: tzdata2014e    //версия загруженная в java
 Embedded time zone data version: tzdata2014e    //версия файла tzupdater.jar
 Validating the time zone data
 Validation complete 

2. Теперь пройдем по этой ссылке http://www.oracle.com/technetwork/java/javase/tzdata-versions-138805.html к списку всхем имеющихся версий tzupdater.jar.

Например, после нашей имеющейся версии tzdata2014e уже было выпущено несколько новых, где добавлены и изменены часовые зоны
(в одном из которых, Since Belarus is not changing its clocks even though Moscow is, the time zone abbreviation in Europe/Minsk is changing from FET to its more-traditional value MSK on 2014-10-26 at 01:00).

3. Здесь можно скачать последнюю версию tzupdater.jar: http://www.oracle.com/technetwork/java/javase/downloads/index.html

4. Скачанный файл нужно скопировать в директорию c:\ManageEngine\ServiceDesk\jre\bin\. Если там уже имеется файл, то переименуйте его, например, tzupdater.jar.old.

5. В командной строке получим разницу версий JRE time zone и скаченного файла tzupdater.jar:

CMD>
cd c:\ManageEngine\ServiceDesk\jre\bin\
java -jar tzupdater.jar -t -v

-----------------------------------------------------------
java.home: c:\ManageEngine\ServiceDesk\jre
java.vendor: Sun Microsystems Inc.
java.version: 1.6.0_45
JRE time zone data version: tzdata2014e    //текущая версия загруженная в java
Embedded time zone data version: tzdata2014i    //версия файла tzupdater.jar недавно скачанного
Validating the time zone data
/data/tzdata2014i.test:4870: test failed: Asia/Kashgar
/data/tzdata2014i.test:4874: test failed: Asia/Urumqi
/data/tzdata2014i.test:5402: test failed: Pacific/Fiji
/data/tzdata2014i.test:5404: test failed: Pacific/Fiji
/data/tzdata2014i.test:5406: test failed: Pacific/Fiji
/data/tzdata2014i.test:5408: test failed: Pacific/Fiji
/data/tzdata2014i.test:5410: test failed: Pacific/Fiji
/data/tzdata2014i.test:5412: test failed: Pacific/Fiji
/data/tzdata2014i.test:5414: test failed: Pacific/Fiji
/data/tzdata2014i.test:5416: test failed: Pacific/Fiji
/data/tzdata2014i.test:5418: test failed: Pacific/Fiji
/data/tzdata2014i.test:5517: time zone not found: Pacific/Bougainville
/data/tzdata2014i.test:5518: time zone not found: Pacific/Bougainville
/data/tzdata2014i.test:5519: time zone not found: Pacific/Bougainville
/data/tzdata2014i.test:5522: test failed: Asia/Yakutsk
/data/tzdata2014i.test:5525: test failed: Europe/Kaliningrad
/data/tzdata2014i.test:5528: test failed: Europe/Volgograd
/data/tzdata2014i.test:5531: test failed: Asia/Magadan
/data/tzdata2014i.test:5532: time zone not found: Asia/Srednekolymsk
/data/tzdata2014i.test:5533: time zone not found: Asia/Srednekolymsk
/data/tzdata2014i.test:5534: time zone not found: Asia/Srednekolymsk
/data/tzdata2014i.test:5537: test failed: Asia/Khandyga
/data/tzdata2014i.test:5540: test failed: Asia/Yekaterinburg
/data/tzdata2014i.test:5543: test failed: Asia/Vladivostok
/data/tzdata2014i.test:5548: test failed: Europe/Simferopol
/data/tzdata2014i.test:5551: test failed: Asia/Ust-Nera
/data/tzdata2014i.test:5554: test failed: Asia/Omsk
/data/tzdata2014i.test:5557: test failed: Asia/Novosibirsk
/data/tzdata2014i.test:5560: test failed: Asia/Sakhalin
/data/tzdata2014i.test:5563: test failed: Asia/Krasnoyarsk
/data/tzdata2014i.test:5564: time zone not found: Asia/Chita
/data/tzdata2014i.test:5565: time zone not found: Asia/Chita
/data/tzdata2014i.test:5566: time zone not found: Asia/Chita
/data/tzdata2014i.test:5569: test failed: Asia/Irkutsk
/data/tzdata2014i.test:5572: test failed: Europe/Moscow
/data/tzdata2014i.test:5577: test failed: America/Grand_Turk
/data/tzdata2014i.test:5580: test failed: W-SU

Validation tests failed. 

6. Теперь обновим JRE Time zone:
CMD>

CMD>
cd c:\ManageEngine\ServiceDesk\jre\bin\
java -jar tzupdater.jar -u -v

----------------------------------------------------------
java.home: c:\ManageEngine\ServiceDesk\jre
java.vendor: Sun Microsystems Inc.
java.version: 1.6.0_45
JRE time zone data version: tzdata2014e
Embedded time zone data version: tzdata2014i
Extracting files... done.
Renaming directories... done.
Validating the new time zone data... done.
Time zone data update is complete. 

7. Проверим версию JRE time zone:
CMD>

</pre>
CMD>
cd c:\ManageEngine\ServiceDesk\jre\bin\
java -jar tzupdater.jar -t -v

----------------------------------------------------------
java.home: c:\ManageEngine\ServiceDesk\jre
java.vendor: Sun Microsystems Inc.
java.version: 1.6.0_45
JRE time zone data version: tzdata2014i        //версия загруженная в java
Embedded time zone data version: tzdata2014i    //версия файла tzupdater.jar
Validating the time zone data
Validation complete 

Значения JRE time zone data version и Embedded time zone data version должны быть равны!

8. Перезапустим машину, на которой установлен сервер ManageEngine SevriceDesk, чтобы все измнения вступили в силу.

9. Если после выполнения п.1-п.8 все равно проблема осталась, то откройте файл c:\ManageEngine\Servicedesk\bin\startout.log и найдите в нем значение параметра user.timezone (временная зона). Если значение не равно временной зоне, что установлена в системе (например, если user.timezone = America/Caracas, а в системе установлено Europe/Minsk), значит Java запускается с какой-то своей временной зоной по умолчанию.

10. Чтобы исправить эту ситуацию, нужно остановить службу SD, открыть файл c:\ManageEngine\Servicedesk\server\default\conf\wrapper.conf на редактирование. Найти в нем раздел # Java Additional Parameters, где перечислены параметры запуска Java, и добавить туда новый параметр (-Duser.timezone):
В моем случае в этом разделе:

# Java Additional Parameters (added new parameter #24)
wrapper.java.additional.1=-server
wrapper.java.additional.2=-Dprogram.name=run.sh
wrapper.java.additional.3=-Djboss.server.type=com.adventnet.j2ee.deployment.system.AdventNetServerImpl
wrapper.java.additional.4=-Dorg.jboss.logging.Log4jService.catchSystemOut=false
wrapper.java.additional.5=-Dorg.jboss.logging.Log4jService.catchSystemErr=false
wrapper.java.additional.6=-Djava.util.logging.manager=com.adventnet.logging.LogManager
wrapper.java.additional.7=-Djava.util.logging.config.file=../server/default/conf/logging.xml
wrapper.java.additional.8=-Djava.util.logging.config.class=com.adventnet.logging.LoggingScanner
wrapper.java.additional.9=-Dlog.dir=../server/default
wrapper.java.additional.10=-Dtier-type=BE
wrapper.java.additional.11=-Dtier-id=BE1
wrapper.java.additional.12=-Ddb.home=../pgsql
wrapper.java.additional.13=-Dproduct.home=../
wrapper.java.additional.14=-Dfile.encoding=UTF-8
wrapper.java.additional.15=-Dsdp.java.gc=false
wrapper.java.additional.16=-Dserver.dir=../
wrapper.java.additional.17=-Duser.language=en
wrapper.java.additional.18=-Duser.region=US
wrapper.java.additional.19=-XX:PermSize=64m
wrapper.java.additional.20=-XX:MaxPermSize=256m
wrapper.java.additional.21=-Djboss.shutdown.forceHalt=false
wrapper.java.additional.100=-DlogDir=../server/default/log
wrapper.java.additional.22=-Dproduct.home=../
wrapper.java.additional.23=-Dorg.tanukisoftware.wrapper.WrapperManager.mbean=false
wrapper.java.additional.24=-Duser.timezone=Europe/Minsk # добавил нужную мне timezone

11. Запустить службу SD. Попробовать создать новую заявку, Срок исполнения должен ставиться верный, исходя из выбранного SLA.

Реклама

ManageEngine ServiceDesk Plus часовой пояс, формат даты и время

  • ManageEngine ServiceDesk Plus 8, 9
  • база данных на MS SQL Server

Для индивидуального изменения параметров часового пояса, формата даты и время нужно:
> зайти в веб-клиент ManageEngine ServiceDesk Plus
> перейти в Личные настройки и там выбрать нужный часовой пояс и формат даты и время.

Если нужно быстро сменить эти параметры для всех пользователей  ManageEngine ServiceDesk Plus, тогда следует подключиться к базе данных (в моем случае это servicedesk (MS SQL Server 2012)) и выполнить команду:

use servicedesk
go
update dbo.sduserprofile
set TIMEZONEID = <TIMEZONEID>,
    DATE_FORMAT = <DATE_FORMAT>,
    TIME_FORMAT = <TIME_FORMAT>
go

<TIMEZONEID> - выбираем из таблицы TimezoneDefinition,
соответствующий нужному нам Часовому поясу
<DATE_FORMAT> - формат даты, например, 'yyyy.MM.dd'
<TIME_FORMAT> -  формат время, например, 'dd.MM.yyyy HH:mm'</span>

Пример
Нужно всем поменять Часовой пояс на (GMT +3:00) Further-Eastern European Time Europe/Minsk, формат Даты на yyyy.MM.dd и Время на dd.MM.yyyy HH:mm. В таблице TimezoneDefinition этому часовому поясу соответствует TIMEZONEID = 301. Далее выполняем:

use servicedesk
go
update dbo.sduserprofile
set TIMEZONEID = 301,
    DATE_FORMAT = 'yyyy.MM.dd',
    TIME_FORMAT = 'dd.MM.yyyy HH:mm'
go

Также может оказаться, что в базе данных ServiceDesk отсутствуют записи о пользователях в таблице профилей dbo.sduserprofile. В этом случае, чтобы таким пользователям изменить часовой профиль не заходя к ним в веб-клиент, нужно создать записи в таблице профилей с ссылками на dbo.aaauser. Для это нужно выполнить следующий код:

insert into dbo.sduserprofile
(USERID,
TIMEZONEID,
DATE_FORMAT,
TIME_FORMAT,
SIGNATURE)
select au.USER_ID,
       301,
       'yyyy.MM.dd',
       'dd.MM.yyyy HH:mm',
       NULL
from dbo.aaauser au
     left join dbo.sduserprofile sd on au.USER_ID = sd.USERID
     inner join dbo.aaalogin lg on au.USER_ID = lg.USER_ID
where sd.USERID is NULL;