Updating time zone data

Time zone and daylight savings time (DST) are often adjusted by individual governments around the world according to their local rules. LSF Process Manager provides a build method for International Components for Unicode (ICU) data and adds a dynamic method for applying ICU data updates. It also provides a parameter to offset all time events in LSF Process Manager, if necessary.

About this task

ICU 57.1 for Unix and Windows is used as an example in the following procedure. The procedure for other versions of ICU are similar. Find instructions for other versions of ICU:

http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data

http://download.icu-project.org/files/icu4c/
Important: Rebuilding the ICU data lib l(icu4c) with the data (2019a) can be performed on all platforms except HP-UX.

Procedure

  1. Download the ICU source code.
    Download the ICU packages from http://download.icu-project.org/files/icu4c/57.1

    The following packages are required:

    • icu4c-57_1-src.zip for Windows
    • icu4c-57_1-src.tgz for Unix
  2. Download the latest ICU data files.
    Go to https://github.com/unicode-org/icu-data/tree/master/tzdata/icunew

    For example, go to the directory 2018i/44/le (where 2018i is the latest ICU data for the year 2018, 44 is the directory for updates to ICU version 4.4 and newer, and le is the directory for Little Endian processors, including all Intel processors.

    The following ICU data files are required:
    • zoneinfo64.res
    • windowsZones.res
    • timezoneTypes.res
    • metaZones.res
  3. Build the ICU data library for Windows.
    1. Unzip the package icu4c-57_1-src.zip to a convenient location.
      In this example, they are extracted to: C:/icu4c-57_1-src
    2. Open the source/allinone/allinone.sln workspace file in Microsoft Visual Studio.
    3. Set the active platform to "Win32" or "x64" and configuration to "Release" or "Debug".
      1. Choose Build. Select Configuration Manager.
      2. Select Release or Debug for the Active Solution Configuration.
      3. Select Win32 or x64 for the Active Solution Platform.
    4. Choose Build. Select Build Solution to build ICU.
    5. Update the ICU data files:
      set PATH=%PATH%;C:/icu4c-57_1-src/bin

      Check that the icupkg tool is available with the command icupkg -h

    6. Copy the new ICU data files *.res to the directory source/data/in/
    7. Execute the following commands to update the ICU data file:
      icupkg -a zoneinfo64.res icudt57l.dat
        icupkg -a windowsZones.res icudt57l.dat
        icupkg -a timezoneTypes.res icudt57l.dat
        icupkg -a metaZones.res icudt57l.dat
    8. Choose Build. Select Rebuild Solution to rebuild the ICU.
      The new ICU data library is located at C:/icu4c-57_1-src/bin/icudt57.dll
  4. Build the ICU data library for UNIX.
    1. Compile the ICU tool and libraries.
      Execute the following commands to compile the ICU:
      gunzip -d < icu4c-57_1-src.tgz | tar xvf -
        cd icu/source
        chmod +x runConfigureICU configure install-sh
        ./runConfigureICU Linux --with-data-packaging=library
        make or gmake
      
      Note: Linux is used in the following example for runConfigureICU. For other UNIX platforms get help using the command ./runConfigureICU -h
    2. Install the ICU tool.
      Note: The new icupkg tool is located at ./bin/icupkg. The libraries that the icupkg tool uses are located at ./lib/.

      Execute the following commands to install the icupkg tool:

      cd icu/source
        chmod +x ./bin/icupkg
        cp ./bin/icupkg /usr/sbin/
      
      Run the command ldd /usr/sbin/icupkg to check the dependencies for the icupkg tool. For example:
      ldd icupkg
        linux-vdso64.so.1 (0x00007b813bc10000)
        libicutu.so.57 => not found
        libstdc++.so.6 => /usr/lib/powerpc64le-linux-gnu/libstdc++.so.6 (0x00007b813b990000)
        libgcc_s.so.1 => /lib/powerpc64le-linux-gnu/libgcc_s.so.1 (0x00007b813b950000)
        libc.so.6 => /lib/powerpc64le-linux-gnu/libc.so.6 (0x00007b813b720000)
        libm.so.6 => /lib/powerpc64le-linux-gnu/libm.so.6 (0x00007b813b5d0000)
        /lib64/ld64.so.2 (0x00007b813bc30000)
      
      Note: If you encounter the error libicutu.so.57 not found, copy the ICU libraries to /lib/ in the same directory as libc.so.6: cp ./lib/libicu*.so.57 /lib/

      Run the command icupkg -h to check that the tool is now available.

    3. Update the ICU data files.
      Copy the new ICU data files *.res to the directory source/data/in/.
      Execute the following commands to update the ICU data file:
      cp ./source/data/in/icudt57l.dat ./source/data/in/icudt57l.dat.bak
        icupkg -a zoneinfo64.res icudt57l.dat
        icupkg -a windowsZones.res icudt57l.dat
        icupkg -a timezoneTypes.res icudt57l.dat
        icupkg -a metaZones.res icudt57l.dat
      
    4. Compile the ICU data library.
      Execute the following commands to compile ICU data:
      cd icu/source/data
        make or gmake clean
        make or gmake
      
      The new ICU data library is located at icu/source/lib/libicudata.so.57.1.
  5. Apply the ICU data library.
    1. Copy the new ICU data library libicudata.so.57.1 to $JS_SERVERDIR/../lib/ for UNIX.
    2. Copy the new ICU data library icudt57.dll to %JS_SERVERDIR% for Windows.
    3. Restart the LSF Process Manager server.
      All previously triggered flows will not be affected. Any newly triggered flows by a time event will use the new ICU time zone data.
  6. Configure the LSF Process Manager properties file for the correct time zone.
    1. Open the timezones.properties file for the LSF Process Manager client.

      If the name and time zone of cities needs to be corrected, update the timezones.properties file. Search for city time zones using the site https://greenwichmeantime.com/time-zone

    2. Update the package properties files for LSF Application Center
      Update the following files with the latest time zones:
      • export PPM_DIR=$GUI_TOP/3.0/wlp/usr/servers/platform/apps/platform.war/WEB-INF/classes/com/platform/gui/ppm/
      • $PPM_DIR/view/package_zh_CN.properties
      • $PPM_DIR/view/package.properties
      • $PPM_DIR/view/package_en.properties
    3. Restart the application.
      Restart LSF Application Center:
        pmcadmin stop;pmcadmin start
      
        Restart LSF Process Manager:
        jadmin stop;jadmin start
      

What to do next

Configure JS_TIME_EVENT_OFFSET

If a country temporarily changes their time zone (for example, delaying Daylight Savings Time (DST) by a week), or the latest time zone data from https://github.com/unicode-org/icu-data/tree/master/tzdata/icunew does not contain the required time zone changes, it may be necessary to use the JS_TIME_EVENT_OFFSET parameter as a temporary measure.

The JS_TIME_EVENT_OFFSET parameter specifies the time event offset to adjust the LSF Process Manager server time. The server time will add the offset to its time and all time events of a flow will be triggered according to the adjusted server time. The valid range is -180 to 180 minutes.

When the time zone offset is no longer required, JS_TIME_EVENT_OFFSET can be disabled (set to 0) and LSF Process Manager restarted so that time events are scheduled at the current time zone.