FabrikFabrik
FabrikTime Machine

Track DN

Follow a single Distinguished Name across snapshots — see when it was created, when it was deleted, and exactly how each attribute changed over time.

The snapshot list and comparison views answer "what changed between two points?" Track DN answers a sharper question: "How did this specific object evolve across all the points I have?"

Use it during incident response to see when a tenant's bridge-domain ARP flag flipped, when a new EPG was added, or when an object disappeared from the fabric entirely. Everything is read out of snapshots already in Postgres — nothing hits the live APIC.

Opening the panel

From a saved query's detail view (Time Machine landing page → click a query), use the Track DN button in the top-right of the page header.

A picker drops down. The plain <input> of older versions has been replaced with an autocomplete fed by the latest snapshot of the same query — type fv and Fabrik instantly suggests every fvTenant, fvBD, and fvAEPg it found in the most recent capture. Keyboard navigation: / to highlight, Enter to commit, Esc to close. You can also paste any DN you got from elsewhere (a fault message, an APIC log) and press Enter to track it directly even if it isn't in the latest snapshot.

What the panel shows

Once a DN is committed, the panel renders four stacked layers:

1. Header

DN string, snapshot count badges, and two view-mode toggles:

ToggleUse it when
MatrixYou want to see every attribute side-by-side across every snapshot — the classic "value at this moment" grid.
DiffYou want a chronological list of only the moments something changed, with old → new pairs.

The view-mode is sticky per browser session.

2. Range picker

Quick-pick buttons (Last 24h, Last 7 days, Last 30 days, All) plus a Custom toggle that swaps in two <input type="datetime-local"> fields for an explicit from / to window. Default is Last 7 days, capped at 100 snapshots.

The range filter applies in SQL, so a tight window is fast even on saved queries with thousands of historical snapshots.

3. Lifecycle bar

A single row of small tiles, one per snapshot in the chosen range:

  • Green tile — the DN was present in that snapshot.
  • Grey tile — it was absent.
  • Green ring with new label — first snapshot where the object appeared (created).
  • Rose ring with gone label — first snapshot where the object disappeared (deleted).

This is the layer the previous version of Track DN didn't have: it makes object lifecycle events impossible to miss. "When was this BD deleted?" becomes a one-glance question.

4. Matrix or Diff view

Matrix mode

A table where rows are attributes and columns are snapshot timestamps. Volatile attributes (those that changed at least once in the window) float to the top with a change count. Stable attributes are dimmed below a separator. Cells where the value differed from the previous snapshot are highlighted; cells where the DN was absent show a muted .

Diff mode

A flat list of every change moment in the window, newest first:

Apr 24, 14:22  scope         private  →  shared
Apr 22, 09:15  arpFlood      no       →  yes
Apr 18, 18:01  descr         (initial) →  Production users

(initial) marks the very first time an attribute had a value — useful for newly-created objects. Diff mode is the right tool when you're answering "what just happened to this object?" rather than "what does its complete history look like?"

Typical workflows

Confirm an object was deleted at a specific time

  1. Open the saved query that captures the object.
  2. Track DN → autocomplete the DN.
  3. Glance at the lifecycle bar. The first rose tile is the snapshot where it disappeared; hover for the timestamp.

Audit a maintenance-window change

  1. Pre-window: capture a snapshot, optionally add a label like "before-change".
  2. Run the maintenance.
  3. Post-window: capture another snapshot.
  4. Track DN with the Custom range bracketing your window.
  5. Diff mode shows every attribute that moved while you were working.

Find when a misbehaviour started

  1. Start with Last 30 days in Diff mode.
  2. Read the changes top-down (newest first) — you're looking for the inflection point where a previously-stable attribute started flipping.
  3. Narrow with Custom once you've found the rough date.

Performance and limits

  • Latest-snapshot autocomplete — the picker queries only the most recent snapshot of the saved query, not the entire history. That's intentional: you want a name you recognise now. Search is debounced at 350 ms with a minimum two-character trigger.
  • Custom range — the SQL adds BETWEEN clauses on executed_at, so query latency scales with the number of snapshots in the window, not in the table.
  • Limit cap — even on All, the response is capped at 100 snapshots. If you need wider history, narrow with a from date and re-fetch.
  • Caching — autocomplete results cache for 30 seconds in the browser. The timeline itself is not cached because every chunk request adds new data; React Query keys it by (savedQueryId, dn, fromDate, toDate) and refetches when any of those move.

Cancellation and refresh

The picker doesn't run anything in the background — closing the dropdown or hitting Esc is free. The timeline panel itself is a single REST call; there's no long-running task to cancel. Reloading the page resets the view-mode to whatever you last persisted.

Troubleshooting

  • Autocomplete shows "No matching DNs in the latest snapshot" — the latest snapshot is empty (the query returned nothing) or the DN you're hunting was added after that snapshot. You can still type the full DN and hit Enter to track it directly; the timeline runs against history regardless of whether the DN is in the latest snapshot.
  • Timeline says "No timeline data found for this DN in the selected range" — narrow your range guess or pick All. The DN may have only existed before/after your window.
  • Diff mode is empty but Matrix shows changes — Matrix highlights every cell where the value differs from the previous non-absent snapshot; Diff lists actual change events. If a DN keeps appearing/disappearing without its attributes moving, you'll see lifecycle markers in the bar but no rows in Diff. Switch to Matrix.
  • The page refreshes, the panel reattaches, but the request count goes through the roof — fixed in 2026. Update to a Fabrik build that memoises the date-range computation.