FIX: REST import: entries without the hostname field are skipped instead of aborting the whole import
FIX: Checkmk users: an empty row under Roles or Contact Groups is no longer sent to Checkmk, which rejected the user because of it
FIX: Files: creating a folder, uploading, renaming or editing a file works again when the syncer runs under a sub-path such as /cmdbsyncer — the dialog sent its form to the address without that path
FEAT: Accounts: a new import source can run as "Shadow Source" next to the current one — its data is stored beside the hosts without changing them, and the host details and Debug Host compare it with the live data and the rule outcomes; the shadow data can be cleared from the account and host list
FIX: Checkmk Site Pools: the member sites of a switched-off pool are readable again in the dark themes
FEAT: Checkmk DCD Rules: the text fields have the Jinja help, and {{ HOST_FOLDER }} gives the folder the host export puts the host in and {{ HOST_POOL_SITE }} the site its site pool assigned
FEAT: Checkmk Setup Rules: the Jinja help of the value shows how a password in the rule points to an entry of the Secret Store
FIX: Checkmk password export no longer fails for Secret Store entries without a comment, such as secrets written by an import — the entry's Checkmk ident is used as comment
FIX: Rules with a Pasted List: switching the rule source to the list no longer hides the Enabled and Last Match checkboxes
FIX: Host list: the page is about a fifth smaller for hosts with many labels and loads faster
FIX: Checkmk host export: a folder Checkmk refuses to create is reported in the terminal with Checkmk's reason — before, only the hosts in it failed later with "folder could not be found"
FIX: Exports to Checkmk, Netbox, i-doit, VMware and Jira write each host once per run instead of once per rule set and keep less in memory on large host counts
FIX: Checkmk rule export: CMDB templates are read once per run instead of once for every host
FIX: Ansible Checkmk agent playbook: a failed host creation, agent download, registration or discovery shows the error message instead of only "the output has been hidden", with the automation secret masked
FIX: Ansible Checkmk agent playbook: hosts without any agent step switched on are skipped before Ansible connects to them
FIX: Ansible inventory: several times faster and with considerably less memory on large host counts
FIX: Ansible projects no longer hand out each other's cached variables, each project computes its own
FIX: ansible update_cache rebuilds the whole Ansible cache instead of reusing the old values
FIX: Checkmk rule export: a rule with Keep Value is no longer deleted and created again on every run when its comment in Checkmk differs, so the value adjusted in Checkmk, including a password, is kept
FIX: Checkmk rule export: correcting the description of a rule no longer replaces a password in its value with the masked ****** Checkmk shows
FIX: Checkmk rule export: when several Setup Rules produce the very same Checkmk rule, it is created only once and its description no longer changes on every run
FIX: Checkmk rule export: when Checkmk holds an outdated copy of a rule next to the current one, the outdated copy is deleted instead of first being updated and the current one deleted as a duplicate
FIX: Checkmk rule export: an update of a rule that runs into the request timeout is no longer sent to Checkmk a second time, so a slow Checkmk costs one timeout per rule instead of two and the update is not applied twice
FIX: The host list shows the Search options button only once again; after a search it appeared a second time next to the filters
FIX: The Checkmk Settings offer the editions of Checkmk 2.5 (Community, Pro, Ultimate, Ultimate with Multi-Tenancy), so the Ansible site management can install and update 2.5 sites
FIX: The Ansible site update updates sites to Checkmk 2.5 without stopping at its version and edition questions, and stops on a failed pre-flight check instead of continuing with a broken site
FIX: The searchable Checkmk ruleset picker in the Setup rule form now also lists the rulesets when the Syncer was installed with pip, the ruleset lists were missing from the package
FIX: CMDB templates are listed alphabetically in the Templates view and in every template selection, like Set Template on the host list
FIX: Searching or filtering the host list by a label or inventory value now also finds numbers, e.g. vlan:5 for a label stored as the number 5, including partial matches and regex
FIX: A Checkmk "Move to Folder" or "Create Empty Folder" value wrapped in a Jinja condition, like {% if var is defined %}/{{var}}|{'title': '{{var}}'}{% endif %}, can be saved again instead of being rejected as invalid folder options
FIX: Host Debug page now lists every condition that matched for an "ALL must match" rule instead of only one, and the hint for a matching rule without a new outcome no longer claims an earlier rule set the value when the outcome was simply empty
FIX: The host action "Redistribute Site Pool" now really moves the selected hosts: the next export assigns them the least-loaded site of their pool again instead of keeping the old one
Version 4.4.0
Setup
FEAT: New account option "http_proxy" sends every HTTP request of that account through a proxy — for a target system like ServiceNow that is only reachable through the corporate proxy; direct sends a single account past a proxy the environment sets for everything else
Interface
FEAT: The times the interface shows for hosts — created, last seen, last synced, the host timeline, the inventory trees, the data quality page and the API token list — are converted to the timezone of the computer you are reading them on, while they stay stored in UTC; cron and log timestamps are unchanged, they are written in the server's own time
Hosts & Objects
FEAT: One imported record can create several hosts: a rewrite_hostname template that renders a list, for example {{ [HOSTNAME, HOSTNAME | replace('SRV01', 'RTR01')] }}, imports one host per entry, each with all attributes of the record; every importer handles it the same way, and a template that renders a plain name works exactly as before
FEAT: The host and object search finds entries by the day they were created: created:today, created:yesterday or created:2026-09-22, and created:>=2026-09-01 together with created:<=2026-09-07 for a range; the day is the one on your own clock — hosts that were created before the syncer recorded a creation time are matched by the day their entry was written to the database
FEAT: CMDB objects can be debugged like hosts: the bug icon in the object list opens the same debug page with the object's attributes, matching rules and outcomes, and the new target "Netbox Objects" shows the IP address, prefix, interface, contact and dataflow rules that apply to a host or object
Rules
FEAT: Rules can take a pasted list (CSV, semicolon or tab separated, e.g. copied from a spreadsheet) as their input instead of the hosts: switch the new Rule source to "From a pasted list", and the first line of the list names the columns, which become variables for the outcomes; the rule renders its outcomes once per row instead of once per host, and the form shows the column variables (a click inserts one into the field you were editing), the first rows and every problem with its line while you paste. Available for the Checkmk Setup Rules (rows that only differ in the service name are joined into one Checkmk rule), DCD rules, BI rules and aggregations, notification rules and downtimes, the i-doit custom attributes, the Jira export rules, the Netbox devices, virtual machines, clusters, prefixes, interfaces, IP addresses, contacts and Dataflow fields, the VMware custom attributes, the Ansible custom variables and the Ansible playbook fire rules; where a row stands for one object (an i-doit or Jira object, a Netbox device, the device or virtual machine of Netbox interfaces, an inventory host, the host of a downtime or of a playbook run), its hostname or name column names it
FEAT: Two new condition types, Older Than and Newer Than, compare the value of an attribute holding a date against the clock — they are offered as a value match only, because a hostname and an attribute name are never a date — so a rule can be limited to the hosts that were not seen for longer than a given age (2d, 12h, 30m, 1w or a plain number of days) — and, the other way round, to the ones seen since; the same thing needed a Jinja expression before
FIX: A rule working with the date a host was last seen is no longer answered out of the export cache, so a host switched off after days without a sighting is switched on again as soon as it is back instead of keeping the state it was given while it was missing; only the rule sets that work with a date are affected, every other one stays cached and exports as fast as before
FIX: "Foreach Value in List" now also accepts an attribute name ending in *, so hosts carrying their groups in several attributes — one per team, each a comma separated list — are read as one list instead of yielding nothing
Checkmk
FIX: Checkmk downtimes with a duration are no longer set again on every run, and the Duration field reads host attributes like every other field of a downtime
FIX: The folder of a Checkmk DCD creation rule now renders its Jinja variables (a host attribute or a column of the pasted list), and one connection Checkmk refuses no longer keeps the others of the same export from being created
Checkmk - Setup Rules
FEAT: The Checkmk rule export calculates its rules about three times faster, so a big inventory spends far less time in "Loop over Hosts and collect distinct rules"
FEAT: Every Checkmk Setup Rule has a debug page, reached by its bug icon in the rule list: for a rule built from a pasted list it shows every row with the number of rules it produced and the Checkmk rules the export would send, without contacting Checkmk; for a rule built per host it opens the host debug page with that rule preselected
Checkmk - User Generation
FEAT: Checkmk users can be generated from host attributes — one user per LDAP group the hosts carry, named after the group and given the mail address that group has in the directory; a new rule under Checkmk says which attributes hold the group names, and existing users created by hand are never overwritten
FEAT: The Checkmk user generation can rewrite a group name before it is looked up, for hosts that carry it in a different shape than the directory uses — a prefix dropped, a domain cut off; a value the rewrite empties is skipped instead of creating a user from whatever the search filter alone finds
FEAT: The fields of a generated Checkmk user can name the group both ways: {{name}} as it was searched in the directory and {{original_name}} as the host carried it before the rewrite
FEAT: Checkmk roles and contact groups of a generated user are Jinja too, so a group can say which ones it deserves — an entry that renders to nothing is dropped and one that renders to several names becomes all of them
FEAT: New page "Preview Generated Users" under Checkmk shows what the generation rules would make of the hosts you have right now — which groups were found, what the directory returned for them and which Checkmk user each one becomes, without writing anything
FEAT: The Checkmk user generation can be debugged from the command line: --debug shows which subtree, filter and attribute the group lookup used and which groups the directory did not return, and --search-filter tries another group filter out without anybody editing the rules first
Event Driven Ansible
FEAT: New module Event Driven Ansible: rules decide which hosts send which event to an Event Driven Ansible event stream or webhook, and the cronjob "EDA: Send Events" sends them, for example to start the TLS or bakery registration of a Checkmk agent that the Checkmk inventory reports as not registered; the same event is sent again only after a configurable number of hours, and every event sent is listed in the Event History
FEAT: Event Driven Ansible shows under Repeated Events which hosts keep getting the same event without effect: every event counts its sends while the host still matches the rule, it counts as repeating from a threshold set on the account (default 3 sends) and as resolved as soon as the host no longer matches; the REST endpoint /api/v1/syncer/eda returns the counters and the repeating events for monitoring with Checkmk
Ansible
FEAT: The Checkmk agent and server playbooks take the new variable cmk_agent_host_name as the host name they report to Checkmk; it defaults to the inventory name, so a host can be known in Checkmk by its short name while Ansible connects to its FQDN, or the other way round
FIX: The shipped Checkmk agent and server playbooks work with an automation secret that contains special characters such as €, ö, spaces, quotes, $ or backslashes, and no longer show the secret in the Ansible output
LDAP
FEAT: Every field of an LDAP account now explains in the form what it configures