Explore the latest product updates and best practices at our hybrid Checkmk Conference #12 from June 16-18, 2026 – Register here

Werk #19313: HW/SW inventory plug-ins: Don't treat key columns as static data if inventory columns are empty and status columns are populated

Component HW/SW inventory
Title HW/SW inventory plug-ins: Don't treat key columns as static data if inventory columns are empty and status columns are populated
Date Feb 17, 2026
Level Trivial Change
Class Bug Fix
Compatibility Incompatible - Manual interaction might be required
Checkmk versions & editions
2.6.0b1
Not yet released
Checkmk Raw (CRE), Checkmk Enterprise (CEE), Checkmk Cloud (CCE), Checkmk MSP (CME)
2.5.0b1
Not yet released
Checkmk Raw (CRE), Checkmk Enterprise (CEE), Checkmk Cloud (CCE), Checkmk MSP (CME)

This werk is aimed at plug-in developers, especially those who implement inventory plug-ins.

Inventory plug-ins are able to generate (static) inventory data or (dynamic) status data via Attributes(...) or TableRow(...), see inline help below Help > Plug-in API references > Agent based.

In case of TableRows a plug-in developer

  • must populate the field key_columns which are used to identiy a row and
  • might populate the fields inventory_columns or status_columns

where key_columns are always treated as static inventory data. Hence it is not possible to generate pure status data.

With this werk we will change the behaviour in order to generate pure dynamic status data. Please take a look at the following possible and useful cases:

  • As before: If an inventory plugin only populates key_columns then this goes into the static inventory tree
TableRow(
    path=["path", "to", "node"],
    key_columns={...},
    inventory_columns={},
    status_columns={},
)
  • As before: If an inventory plugin only populates inventory_columns then this goes into the static inventory tree
TableRow(
    path=["path", "to", "node"],
    key_columns={...},
    inventory_columns={...},
    status_columns={},
)
  • As before: If an inventory plugin populates inventory_columns and status_columns then this goes into the static inventory tree resp. status data tree
TableRow(
    path=["path", "to", "node"],
    key_columns={...},
    inventory_columns={...},
    status_columns={...},
)
  • This has changed: If an inventory plugin only populates status_columns then this goes into the status data tree. The key_columns are not treated as static data anymore.
TableRow(
    path=["path", "to", "node"],
    key_columns={...},
    inventory_columns={},
    status_columns={...},
)

To the list of all Werks