--- task: Set up and operate a redundant HAC server pair (steps, hac.sup tabs, switchover, patching) version: R1.05 (first written for R1.03) source: IM 36K10J20-01EN 4th Edition (Feb. 2026) §1.2–§1.5, §2.4–§2.6, §3, §4.3–§4.11, §6.4, §7 (unchanged since the 3rd Edition); IM 36K01A50-01EN 5th Edition §1.15, §1.19; IM 36K01C10-01EN §3.4; hac.sup and scripts checked on the R1.03 test system 2026-10-01 and compared with the R1.05 test server 2026-10-08/09 status: from docs; not tested on R1.03 or R1.05 (needs two licensed servers, the R1.05 test server is a single server); R1.05 installed files compared read-only (hac.sup and hacw_standby/stop identical, hacw_activate/deactivate extension hooks and hacw_hmi classpath new) --- # Redundant server pair (HAC) Everything here needs admin rights on both servers and a planned outage. Prepare the files; the user applies them. ## 1. Preparation - Identical servers: same OS, CI Server version and patches, install path, TLS variables, node number and licence (including HAC). - ≥ 2 separate network interfaces/segments between the servers (≤ 4), separate from field networks if possible. One link only = single point of failure and the risk that both servers go active. - Time sync on each server from an NTP/GPS source with jumps ≤ 1 s (not DUR time sync between the pair: same node number). - At least one real IP device per server for the network check (router/switch, priority 1). - CI Service start type *Automatic* (HAC reboots servers). - All servers physical, or all virtual: never mix them in one HAC configuration (A50 §1.19). - `TLS_BACKUP_PATH` on a partition at least as large as `TLS_HIS_PATH` (the standby zips its runtime environment before each synchronization; without the variable the scripts use `TLS_LST_PATH`). ## 2. Steps (on every server unless noted) 1. System variable `CI_PRIM` = 0 (primary), 1 (secondary), 2, 3. 2. Start CI Server once; create the optional status items per server (section, e.g. `SYSTEM.HAC1`, items `OPER_MODE`, `OPER_STAT`, `CI_STAT`, `IP_STAT`, `DATA1_MODE`, `DATA1_STAT`, …, all Integer); stop CI Server. 3. `tls\com`: rename `ci_start.cmd`/`ci_stop.cmd` to e.g. `ci_start_old.cmd`/`ci_stop_old.cmd`, copy `hacw_standby.cmd` → `ci_start.cmd`, `hacw_stop.cmd` → `ci_stop.cmd`. R1.05: `hacw_standby`/`hacw_stop` have **no** extension-script hook, so `?*_ci_start.cmd` / `?*_ci_stop.cmd` scripts (ISS-121) no longer run once `ci_start`/`ci_stop` are replaced. The service scripts that `hacw_activate`/`hacw_deactivate` call (`integration_start` …) still run their own `?*_