> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dqlabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Exception Records

> How to view, filter, manage, and remediate individual exception records in Prizm.

<script type="application/ld+json">
  {`{
            "@context": "https://schema.org",
            "@type": "TechArticle",
            "headline": "Exception Records",
            "description": "How to view, filter, manage, and remediate individual exception records in Prizm.",
            "url": "https://docs.dqlabs.ai/architecture/exceptions/exception-records",
            "publisher": {
              "@type": "Organization",
              "name": "DQLabs Inc",
              "logo": "https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg"
            }
            }`}
</script>

The Exception Records page lists every failing data record captured across all metrics. Records load automatically when the page opens — use filters to narrow to specific assets, metrics, statuses, owners, or time ranges.

## Two ways to view exceptions

Use the view switcher in the top-right of the page to toggle between:

| View                         | What it shows                                                                 |
| :--------------------------- | :---------------------------------------------------------------------------- |
| **All Exceptions** (default) | A flat list of every exception record, one row per record                     |
| **Exception by Metric**      | Records grouped under the metric that generated them, with a rollup per group |

### Exception by Metric

Each metric group shows the metric name, the set of owners across its records (as stacked avatars), and a summary — for example, **"2 Total · 0% Breached"**. Expand a group to see its records. Two sub-tabs are available: **All** and **Conditional**, letting you isolate records tied to conditional threshold logic.

| Column              | Description                                                                                                                   |
| :------------------ | :---------------------------------------------------------------------------------------------------------------------------- |
| **Exception**       | Record identifier                                                                                                             |
| **Failing Column**  | The specific column that triggered the failure                                                                                |
| **Owner**           | Assigned user — click the **+** to assign or reassign inline without opening the record                                       |
| **Status**          | Current lifecycle status                                                                                                      |
| **Age**             | Time since the record was created                                                                                             |
| **SLA**             | Current SLA state (e.g. Stopped, Breached)                                                                                    |
| **Resolution Note** | System- or user-entered note explaining how the record was handled (e.g. "Auto resolved because related alert was marked...") |

Use **Export** to download the current grouped view.

## Status summary bar

The top of the page shows a count card for each status. Click any card to filter the records table to that status instantly.

| Status Card          | Records included                              |
| :------------------- | :-------------------------------------------- |
| **NEW**              | Newly captured records awaiting triage        |
| **INPROGRESS**       | Records actively being remediated             |
| **READY FOR REVIEW** | Remediation complete, awaiting sign-off       |
| **BLOCKED**          | Remediation blocked by an external dependency |
| **RESOLVED**         | Corrected in the source system                |
| **REJECTED**         | Reviewed and accepted as-is or dismissed      |
| **RE OPEN**          | Previously resolved and re-opened             |
| **AUTO RESOLVE**     | Automatically resolved by the system          |

## Records table columns (All Exceptions view)

| Column                    | Description                                             |
| :------------------------ | :------------------------------------------------------ |
| **Exception Asset Name**  | The table or view that contains the failing record      |
| **Exception Metric Name** | The metric that flagged this record                     |
| **Exception Status**      | Current lifecycle status (NEW, INPROGRESS, etc.)        |
| **SLA Status**            | Whether remediation is within the configured SLA window |
| **Exception Owner**       | User responsible for remediation                        |
| **Exception Created At**  | Timestamp when the record was first captured            |
| **Action**                | Edit, assign, resolve, or update status inline          |

## Filters

The filter bar scopes the records table by **Source, Asset, Metric, Owner,** and **Created** (date). The **Exception by Metric** view adds two more: **SLA** and **Status**.

## Opening a record

Click into any record to open its detail view, with a breadcrumb showing **Source → Asset → Metric** and a status badge at the top.

### Overview tab — field-level breakdown

The Overview tab shows a full row-by-row breakdown of the failing record:

| Column               | Description                                                               |
| :------------------- | :------------------------------------------------------------------------ |
| **Field**            | Column name from the source record                                        |
| **Current Value**    | The value at the time of capture                                          |
| **Previous Value**   | The value from the prior run, when available                              |
| **Related Criteria** | Which configured condition this field is evaluated against (e.g. "Match") |
| **Action**           | Whether the field passed (**Valid**) or failed (e.g. **Out of Range**)    |
| **Comment**          | Free-text note field                                                      |

The field(s) that actually caused the failure are visually highlighted in the table. An **Action Items** panel below lets you track remediation steps against the record, with an AI-assist option to suggest next actions.

### Audit tab

Every record has an **Audit Log** — an immutable, timestamped history of everything that's happened to it: status changes, owner reassignments, SLA status transitions (e.g. "SLA status updated from breached to stopped"), and action-item creation/deletion. Each entry captures the acting user, a description of the change, and — where available — the client IP and device.

## Bulk actions

Select multiple records using the row checkboxes, then use the bulk action menu to:

* **Assign** to a user (Exception Owner)
* **Update status** — move selected records to any status in bulk
* **Download** — export selected records to CSV

## Incremental write logic

Exception records accumulate across metric runs — they are not replaced. Each run:

1. Executes the Failed Rows Query.
2. Compares returned rows against existing exception records using a record hash key.
3. Writes **new** failing records not already captured.
4. **Retains** all existing open records — records that are no longer failing in the latest run stay open until a user explicitly resolves them.

**Example (PR-2591):**

| Run             | Failing rows returned          | Records on Exception page           |
| :-------------- | :----------------------------- | :---------------------------------- |
| Run 1           | 5 records                      | 5 open records                      |
| Run 2           | 2 new records (different keys) | 7 open records (5 retained + 2 new) |
| User resolves 3 | —                              | 4 open records                      |

This ensures a record fixed in the source system is intentionally reviewed before being marked Resolved — it doesn't silently disappear.

<Note>
  Auto Resolve status is assigned by the system when a subsequent metric run confirms the previously failing record now passes. This is distinct from a user manually resolving a record.
</Note>

## Exception Reporting

The Exception module includes a **Reports** builder for scheduled exception delivery — accessible from the same view switcher as **All Exceptions** and **Exception by Metric**. From there you can:

* Configure which columns appear in the report (including drag-and-drop column ordering)
* Apply **Group By** to aggregate records by asset, metric, owner, or status
* Schedule the report to be emailed on a recurring cadence, and see each report's last/next run time and audience
