For the complete documentation index, see llms.txt. This page is also available as Markdown.

Activity Feed

ODD Platform records every metadata change as a typed event on a global Activity feed and on per-entity Activity tabs — the catalog's audit trail and change-driven discovery surface.

Track changes to your data entities by monitoring the global Activity page or the Activity tab on a data entity's detail page. Every metadata edit the platform observes — entity lifecycle transitions, ownership changes, tag and term assignments, dataset-field edits, alerts — emits a typed event onto the feed. The feed is the catalog's audit trail and the change-driven discovery surface: who did what to which entity, and when.

Where to find it

  • Global Activity page — top-level Activity entry in the platform's navigation. Shows every event across the catalog with an eight-facet filter panel (see below) and a four-tab axis (All / My Objects / Upstream Dependents / Downstream Dependents).

  • Per-entity Activity tab — every data-entity detail page has an Activity tab that scopes the feed to events on that entity only (plus a few additional internal event types — entity overview / metadata / schema / relation updates and custom-metadata create / update / delete — that are recorded on the per-entity tab but hidden from the global filter to keep that view concise). The per-entity tab does not carry the four-tab axis the global page exposes — see Per-entity Activity tab differences below for the asymmetries you'll hit if you navigate between the two.

My Objects setup (user-owner association prerequisite)

The My Objects, Upstream Dependents, and Downstream Dependents tabs on the global Activity page narrow the feed to entities the signed-in user is bound to as an Owner. The binding lives in the platform's user_owner_mapping table; without a row in that table the platform cannot answer the question "what changed on the things you own" — the three personalised tabs silently render an empty feed.

The binding is created in Management → Associations and the workflow is documented at Authorization → User-owner association. The same prerequisite applies to the Alerts → My Objects tab.

Pre-flight checklist for platform admins. If you are setting up Roles, Policies, and Owners for other people and your own My Objects tabs (here on Activity, on Alerts, on the recommended entities surface) render empty even though the catalog is populated, you likely have no user_owner_mapping for your own account. Adding yourself as an owner on the entities you want surfaced — Management → Associations → Create association — fixes the silent-empty failure mode without changing anyone else's access.

Filters on the global Activity page

The Filters panel on the Activity page lets you narrow the feed by eight facets:

  • Calendar — restrict to a date / date-range window.

  • Datasource — limit to events on entities from a specific datasource.

  • Namespace — limit to events on entities in a given namespace.

  • Event type — pick a single event type from the enumeration in the next subsection (e.g. OWNERSHIP_CREATED, OPEN_ALERT_RECEIVED).

  • Tag — show events on entities carrying one or more selected tags (multi-select).

  • Owner — show events on data entities owned by one or more selected owners (multi-select) — the owner of the affected asset, not the person who made the change. Useful for "what happened to my team's data this week".

  • Made by (owner) — show events performed by users currently associated with one or more selected owners. ODD maps each user to an Owner, and this facet uses that current association — so re-associating an owner changes which past events match. The dropdown lists Owners.

  • Made by (user) — show events performed by one or more selected users, identified by their external username (the created_by actor recorded on each event). This is immutable — it always reflects who actually made the change — and it works even for users with no owner association. The dropdown lists the usernames seen in the feed.

Owner, Made by (owner), and Made by (user) answer three different questions — the owner of the affected asset, the current owner associated with whoever made the change, and the immutable external username of whoever made the change. Each facet carries an help tooltip that spells out exactly what it matches, and the Made by (user) dropdown lists the raw usernames (exactly the values it filters on). Every event row shows the username of whoever made the change plus, when that user has an owner association, their current owner (rendered as "alice — current owner: Team A"). The owner shown is the association as of now: ODD does not record the owner association at the time of the change, so an old event reflects the user's present owner — not necessarily who they were associated with when they made it.

Event types

The Event type filter on the global Activity page exposes the following event types, grouped here by the area of the metadata they describe.

Data entity lifecycle

  • DATA_ENTITY_CREATED – a data entity was created in the platform.

  • DATA_ENTITY_STATUS_UPDATED – an entity's status changed (UNASSIGNED, DRAFT, STABLE, DEPRECATED, DELETED). This is the event to filter on to find entity deletions — there is no separate "deleted" event type.

  • BUSINESS_NAME_UPDATED – the business name of an entity was edited.

  • DESCRIPTION_UPDATED – the description of an entity was edited.

Ownership

  • OWNERSHIP_CREATED – an owner was added to a data entity.

  • OWNERSHIP_UPDATED – an owner's role on a data entity was changed.

  • OWNERSHIP_DELETED – an owner was removed from a data entity.

Tags and terms

  • TAG_ASSIGNMENT_UPDATED – tags on a data entity were added, removed, or changed. Carries before-and-after tag lists.

  • DATASET_FIELD_TAGS_UPDATED – tags on a dataset field (column) were added, removed, or changed. Carries before-and-after tag lists.

  • TERM_ASSIGNMENT_UPDATED – terms linked to a data entity were added, removed, or changed.

Dataset fields (columns)

  • DATASET_FIELD_VALUES_UPDATED – enum values configured on a dataset field were edited.

  • DATASET_FIELD_DESCRIPTION_UPDATED – a field's description was edited.

  • DATASET_FIELD_INTERNAL_NAME_UPDATED – a field's internal (user-defined) name was edited.

  • DATASET_FIELD_TAGS_UPDATED – tags on a dataset field were added, removed, or changed.

  • DATASET_FIELD_TERM_ASSIGNMENT_UPDATED – terms linked to a dataset field were added, removed, or changed.

Data entity groups

  • CUSTOM_GROUP_CREATED – a custom data entity group was created.

  • CUSTOM_GROUP_UPDATED – the members or metadata of a custom group were changed.

Alerts

  • OPEN_ALERT_RECEIVED – a new alert was opened for a data entity. Driven by the Alerting subsystem.

  • RESOLVED_ALERT_RECEIVED – an existing alert was resolved.

  • ALERT_STATUS_UPDATED – the status of an alert was changed manually.

  • ALERT_HALT_CONFIG_UPDATED – the per-entity alert halt configuration was changed.

The platform emits a few additional internal event types (entity overview / metadata / schema / relation updates) that are recorded on the entity's own Activity tab but are intentionally hidden from the global Activity filter to keep the feed concise.

Known caveats

A few behaviours of the Activity Feed are non-obvious from the page above. Each item below states what an operator might assume, what the platform actually does, and what to do today.

Per-entity Activity tab differences

The per-entity Activity tab on a data-entity detail page exposes a smaller filter surface than the global Activity page does:

Feature
Global Activity page
Per-entity Activity tab

Tab axis

All / My Objects / Upstream Dependents / Downstream Dependents

None — the tab is implicitly "all events for this entity"

Calendar filter

Yes

Yes

Event type filter

Yes

Yes

Made by (owner) filter (actor's current owner)

Yes

Yes

Made by (user) filter (external username)

Yes

Yes

Datasource / Namespace / Tag / Owner filters

Yes

No (the entity is already fixed)

The per-entity tab is the right surface for "what changed on this one entity, in this window" investigations; the global page is the right surface for "what changed across the catalog this week."

Auto-resolved alert events

Auto-resolution events emitted from the Alerting subsystem are recorded as system events on the feed (no operator identity attached); manually-resolved alerts carry the operator's identity. This lets a reader walking the feed distinguish between alerts that were worked on by a human and alerts that simply cleared themselves on the next ingest.

Configuration

Activity-feed partitioning is controlled by the platform-level setting odd.activity.partition-period (default 30 days) on Configure ODD Platform. The key sets the width of each time partition on the activity table — it controls how the data is chunked, not how long it is kept. Adjust the partitioning cadence per the volume your deployment generates — the operator-side reference is the canonical home for this key.

Where to next

Last updated