Sync Tempo worklogs to Unit4 Zeiterfassung via Playwright browser automation.
USE AT YOUR OWN RISK. No warranty, no support, no guarantees. Always
verify your time entries manually in Unit4 after syncing. Full disclaimer
in LICENSE and below.
- Tested: Linux + German Unit4 UI (DD/MM dates, comma decimals; the
browser context is hardcoded to
locale='de'because Unit4 silently strips period decimals). - NOT tested: Windows (use WSL), and English Unit4 UI / English locale formats. The codebase has bilingual selectors but no live verification against an EN tenant yet.
CDDS AB and the contributors make no guarantees about correctness or suitability, accept no liability, and provide no support obligations. This tool automates browser interactions with Unit4, which may break at any time due to UI changes.
# 1. Install uv (one-time, brings Python with it)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. Clone and set up — installs the j2u4 global command
git clone https://github.com/cdds-ab/j2u4.git
cd j2u4
./setup.sh
# 3. Configure interactively (Jira / Tempo / Unit4 tokens with helper
# links and hidden token input — writes ~/.config/j2u4/config.json)
j2u4 --init
# 4. Verify, then sync today
j2u4 --check
j2u4 --day $(date -I) # dry-run
j2u4 --day $(date -I) --execute # actually syncWindows users: the setup script needs a Unix shell. Use WSL
(wsl --install in an Administrator PowerShell, then run the
Quickstart inside the Ubuntu terminal).
cd j2u4 && git pull && ./setup.sh --upgrade--upgrade refreshes deps + Chromium + the global j2u4 binary while
leaving your config and mapping files alone.
| Topic | Where |
|---|---|
| Config file layout, fields, env vars, lookup paths | docs/configuration.md |
| CLI reference, sync semantics, mapping resolver, tracking log | docs/usage.md |
| Common errors, failure captures, trace viewer | docs/troubleshooting.md |
| Repo layout, testing, dev environment | docs/development.md |
MIT — see LICENSE.