Icinga Director v1.12.0 Release

by | Sep 29, 2026

Icinga Director 1.12.0 is out now. This release finally gives custom variables full support for dictionaries, fixes a long standing bug that broke user group restores, and raises the module’s minimum requirements to match the rest of the Icinga Web ecosystem. You can find issues and feature requests related to this release on our roadmap.

What’s new at a glance

  • Full support for dictionary style custom variables, backed by a new model that replaces Data Fields
  • A fix for the user group restore bug, plus a confirmation step before deleting a group
  • A new import modifier that turns an integer into a string
  • A move to the GPLv3

Custom variables finally support dictionaries

The old problem

Icinga 2 has supported dictionaries as a variable type for years. Icinga Director never fully caught up.

Before 1.12.0, generating services from a dictionary type host variable through apply-for rules meant defining that variable outside of Director. You lost managed configuration for it the moment you did that.

A new model built for this

Version 1.12.0 fixes this with a new Custom Variables feature. It replaces the old Data Fields approach.

Your existing Data Fields still work. You’ll find them under a new “Fields (Deprecated)” tab.

Custom Variables run on a dedicated model. It understands strings, numbers, booleans, and sensitive values that get masked wherever you view them. It also handles fixed and dynamic arrays, strict and loose datalist bindings, and both fixed and dynamic dictionaries.

Every one of these types renders correctly to Icinga 2 DSL. They work the same way across hosts, services, commands, users, and notifications. Baskets and the REST API understand them too.

Apply-for rules now work with dictionaries

This was the other half of the problem, and 1.12.0 fixes it in the same release. Service apply-for rules now iterate correctly when the source is a dynamic array or a dynamic dictionary defined on a host template.

Inside the rule, use $value$ to reference each entry. Use $key$ too, when the source is a dictionary.

Migrating your existing fields

A new CLI command handles the move from Data Fields to Custom Variables, icingacli director migrate datafields.

Run it with --dry-run first to preview what would change. Add --delete once you’re happy, to remove the original Data Fields after migration. If one of your template bindings has a var_filter attached, add --allow-lossy-filters to migrate it anyway. The new property system has no equivalent for that filter, so it gets dropped. Use --verbose if you want a detailed rundown of what happened to each field.

Want a health check without changing anything? Run icingacli director migrate summary. It reports the same migrated and skipped counts.

Existing template assignments carry over automatically for anything that gets migrated.

A real fix for user group restores

Deleting a user group and then undoing that change through the activity log used to leave something behind, the link between the group and its members. The group itself came back. Its membership didn’t.

This release adds an assign filter to user groups. Delete a group that has an assign filter, then restore it, and Director now reapplies the filter and relinks the matching users on its own. Undoing a deletion actually brings everything back this time.

Smarter import and sync

A new import modifier lets you cast an integer value to a string during import. This closes a long standing request from a user importing port numbers from the x509 module into a host variable, then needing that value as a string later for an icingacli check. Because the value kept coming in as an integer, every import produced a pointless diff on that field. Casting to string during import stops that.

Under the hood, and what to know before you upgrade

Icinga Director 1.12.0 needs PHP 8.2 or later, and recent releases of Icinga Web and the Icinga PHP libraries.

Icinga Director now uses GPLv3 instead of GPLv2. This is part of a bigger relicensing push across Icinga Web and its modules. Some third party dependencies ship under licenses like Apache-2.0, and those don’t mix well with GPLv2.

As always, back up your database before you upgrade, and check whether any schema migrations apply to your setup.

The source code for the Icinga Director version 1.12.0 can be found here.

You May Also Like…

 

Icinga Web SSO walkthrough

Icinga Web SSO walkthrough

The ability to log into all corporate applications with one username and password is pretty convenient, even compared...

Subscribe to our Newsletter

A monthly digest of the latest Icinga news, releases, articles and community topics.