Inventory Freshness - edmozley/freeitsm GitHub Wiki
๐ Inventory freshness - how current is each list?
An asset's software, drives and Device Manager lists come from tools that report on their own schedule: the inventory agent, and any tool you connect through the REST API. Until now the lists just sat there. A software list could be a year old, a Device Manager tab could say 0 because the machine had never sent any, and a collection that failed looked exactly like one that worked.
Now every list says where it came from, how old it is, and whether the last attempt to update it worked.
Requested by @Dr4inder in #200. This is part B of the design. Part A was asset type layouts.
๐งญ At a glance
| Where | On every asset: a line above Storage (Key info), Devices and Software, and an Inventory sources panel at the bottom of Key info |
| Who | Anyone who can open the asset |
| The setting | Assets โ Settings โ Discovery & reconciliation โ Inventory counts as stale after (days) - 7 by default |
| What you need to do | Run Database Verification after upgrading. To see reported empty and failed collections from the agent, roll out the agent script that comes with this release. The old one keeps working |
๐ What you see on an asset
Above each list, one line per tool that reports it:
| What the line says | What it means |
|---|---|
| From the agent, observed 3 hr ago. | The last report included this list, and this is it |
| The same, in amber | That observation is older than your stale setting (7 days unless you change it). The machine may be switched off, in a drawer, or its scheduled task may have stopped |
| Reported empty by the agent, 2 hr ago. | The tool looked and found nothing. A real empty list, not a missing one |
| Not in the agent's last report (3 hr ago). The list kept was observed 5 days ago. | The last report left this list out, so the list you see is the one from before, with its own age |
| The last import from the agent failed (1 hr ago): Could not read Device Manager... The list kept was observed 2 days ago. - in red | The tool tried and could not. Nothing was thrown away: the list from the last good report stays, and the line says how old it is |
When nothing has ever reported a list - a monitor, a phone, a printer - the list says No device information has been reported for this asset, and the tab's count shows โ instead of 0. A 0 now only ever means "a tool looked, and there were none".
The Inventory sources panel at the bottom of Key info lists every tool that reports this asset, and every list it keeps:
| List | Status | Observed | Items |
|---|---|---|---|
| Software | Current | 3 hr ago | 214 |
| Volumes | Stale | 9 days ago | 2 |
| Devices | Failed - Could not read Device Manager: ... | 2 days ago | 188 |
A list in Status can be Current, Stale, Reported empty, Not in last report or Failed. Observed is when the tool looked, never when FreeITSM received it, so a scan imported a week late still says a week ago.
If two tools report the same machine - the agent and, say, your RMM through the REST API - each has its own block, so one succeeding never hides the other failing.
The panel is not part of the type's layout, so no layout can hide it. If a type hides the Software tab, the panel still shows how fresh the software list is.
โ๏ธ The stale setting
Assets โ Settings โ Discovery & reconciliation โ Inventory counts as stale after (days). 7 by default, the same as Last seen and Watchtower. Anything from 1 to 365 days.
Set it to how often your tools report. An agent that runs daily is worth worrying about after a week. A monthly export from another tool would be amber most of the month at 7, so set 35 for that.
๐ฅ๏ธ The agent: old and new scripts
The agent script that ships with this release (scripts/Invoke-AssetInventory.ps1) tells FreeITSM what happened to each list:
- a list it collected is sent, even when it is empty, so FreeITSM can believe an empty software list
- a list it could not read is named, with Windows' error message, and FreeITSM keeps the previous one
- if Windows answers nothing at all for volumes, physical drives, network adapters or Device Manager, the script counts that as a failed collection, not an empty list. Every PC that can reach FreeITSM has at least one of each, so an empty answer means Windows did not answer properly
The old script keeps working. An older script cannot say whether an empty list means "none" or "could not look", so FreeITSM treats an empty list from it as Not in last report and keeps what it had, as it always has. You will simply never see Reported empty or Failed from an older script.
You can roll out the new script before or after upgrading the server. An older FreeITSM ignores the extra information.
See The inventory agent for rolling it out.
๐ What it does not do
- It does not tell you about Intune. Intune's software and stand-in disk figure still appear in the lists, marked with their source, but Intune does not record when each list was observed yet, so it has no block in the panel.
- It does not alert anyone. A stale or failed list is shown on the asset. Watchtower still counts machines that have stopped reporting altogether.
- Assets the agent reported before you upgraded show their lists without a status line until the agent's next report. Their age was never recorded, and FreeITSM will not guess one.