<img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=7178634&amp;fmt=gif">
uControl Book a demo
Docs  ›  Discovery

Asset Aging & Lifecycle

Last updated 2026-06-01

uControl Insight automatically transitions assets through a lifecycle based on whether discovery keeps confirming they exist. This stops your inventory from filling up with stale hosts that have been decommissioned but never told the discovery engine.

What you get

Every asset carries a status that reflects how recently uControl has confirmed it is reachable. There are five values:

StatusMeaningVisible in normal inventory views?
ACTIVE (green) Seen recently. Default state.Yes
STALE (amber) Not seen for the stale threshold (default 30 days), or has failed scans repeatedly (default 3 consecutive failures).Yes — flagged
INACTIVE (grey) Not seen for the inactive threshold (default 90 days), or has many consecutive scan failures (default 10).Yes — flagged
DECOMMISSIONED (red outline) Manually marked end-of-life by an administrator. The sweeper never touches this state. Yes — flagged
MERGED Tombstone — this asset was deduplicated into another. No — always hidden

Where you see it

  • Asset detail page header — a coloured badge next to the asset name shows its current status, with the last-scan outcome and any consecutive-failure count alongside.
  • Dashboard "Stale Assets" tile — now shows the real count of STALE assets (it used to always be zero).
  • Ask uControl — you can ask "how many stale assets do I have?".

How it works

Two signals drive the lifecycle:

  1. Last seen — the timestamp on which a discovery scan most recently confirmed this asset exists. Updated on every successful hit.
  2. Consecutive scan failures — resets to 0 on every successful scan of the asset; increments by 1 each time a scan targeting it fails (host unreachable, credential rejected, etc.).

A daily sweeper (default 01:30 local) applies the rules:

ACTIVE  → STALE     when last_seen_at < (today - staleDays)
                       OR consecutive_scan_failures ≥ staleFailures
STALE   → INACTIVE  when last_seen_at < (today - inactiveDays)
                       OR consecutive_scan_failures ≥ inactiveFailures
STALE / INACTIVE → ACTIVE   when a recent scan succeeded (within last hour)

A previously-stale or inactive asset that uControl sees again is automatically reactivated. DECOMMISSIONED is only set by an administrator and is never changed by the sweeper.

How to enable and tune

The feature is enabled by default with sensible thresholds. To adjust:

  1. Log in as an administrator.
  2. Sidebar → SettingsAsset Aging tab.
  3. Confirm Sweeper enabled is ticked.
  4. Set the thresholds:
    • ACTIVE → STALE: days since last seen, OR consecutive scan failures (whichever comes first). Defaults 30 / 3.
    • STALE → INACTIVE: same pattern. Defaults 90 / 10.
    • Schedule: a Spring cron expression, default 0 30 1 * * * (01:30 every day). Format: second minute hour day month weekday.
  5. Click Save aging settings.

Threshold changes apply on the sweeper's next run — no service restart needed. A cron-schedule change does need a restart.

Manual actions

  • Reactivate — on a STALE / INACTIVE / DECOMMISSIONED asset, the Reactivate button (admin only) flips it back to ACTIVE, clears stale_since and resets the failure counter. Useful when you've fixed the underlying reachability issue and don't want to wait for the next scan.
  • Decommission — the Decommission button (admin only) marks the asset DECOMMISSIONED. Use this for end-of-life hosts you want to keep in the inventory for historical reference but exclude from active reporting.

How to verify it's working

  • After the next sweeper run, the Dashboard "Stale Assets" tile shows a count > 0 if any of your assets meet the threshold.
  • On the asset detail page for a known-stale host, the header badge should read STALE in amber.
  • Force a sweep right now by reducing the stale-days threshold (e.g. to 1 day) temporarily and waiting for 01:30 — or use the application's manual trigger (planned admin button) if available.

What it does not do

  • It doesn't delete assets. INACTIVE and DECOMMISSIONED rows stay in the database for historical reference. To remove them entirely you would need a separate purge job.
  • It doesn't take into account flow data — an asset that's sending NetFlow but has never been credential-scanned will still age out.