---
title: Output document queries
summary: Query policy output documents by status, category, agency visibility, and parent/child release state.
status: draft
owner: SAIF.Core documentation team
last_reviewed: 2026-09-24
library: SAIF.Data
reference_type: package
operation_id: OP-SD-20
trigger: Document retrieval requests from agency/policy workflows.
---

# Output document queries

Query policy output documents by status, category, agency visibility, and parent/child release state.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-SD-20 |
| **Trigger** | Document retrieval requests from agency/policy workflows. |
| **Inputs** | Policy id, category, document id |
| **Outputs** | Document list, or throws |
| **Primary components** | `OutputDocumentQueryProvider`, `PolicyOutputDocumentExtensions` |
| **Entry point** | `Data/SAIF.Data/Queries/OutputDocuments/OutputDocumentQueryProvider.cs` |

## Steps

1. Status codes PEND/HELD/DELE/RELE ([SD-BR-070](../business-rules.md#sd-br-070-output-document-status-code-set)). Data: `PolicyOutputDocument` (`policy_output_document`), `DocumentStatusCode` (`document_status_code`).
2. `DOCUMENTDATE` comes from `BatchProcessLog` (`batch_process_log`), defaulting to today ([SD-BR-071](../business-rules.md#sd-br-071-document-date-defaults-from-batch-process-log), [SQL-181](../sql/SQL-181-output-document-query-provider-get-released-status.md), [SQL-182](../sql/SQL-182-output-document-query-provider-get-account-number.md), [SQL-183](../sql/SQL-183-output-document-query-provider-get-document-date.md), [SQL-184](../sql/SQL-184-output-document-query-provider-document-system-date.md), [SQL-185](../sql/SQL-185-output-document-query-provider-get-policy-output-document.md), [SQL-186](../sql/SQL-186-output-document-query-provider-policy-output-document-query.md)).
3. Agency visibility filters: `AgencyViewable` and `AgencyInboxViewable` ([SD-BR-072](../business-rules.md#sd-br-072-agency-sees-only-agency-viewable-and-inbox-viewable-documents)).
4. `ForCategory`: "ALL" or blank means no filter ([SD-BR-073](../business-rules.md#sd-br-073-blank-or-all-category-applies-no-filter)).
5. `ForPolicyOrAccount` returns policy documents only; an `accountDocs` variable is computed but not used, a probable defect ([SD-BR-074](../business-rules.md#sd-br-074-policy-or-account-filter-returns-policy-docs-only-while-account-docs-remain-unused)).
6. `GetReleasedAgencyViewableChildOutputDocuments` throws if the parent document is not released ([SD-BR-075](../business-rules.md#sd-br-075-child-documents-only-retrievable-for-a-released-parent)).

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start([Document retrieval requests from agency/policy workflows.]) --> S1["`OutputDocumentQueryProvider`"]
	S1 --> S2{"Rules satisfied?"}
	S2 -->|Yes| EndOk([Result returned])
	S2 -->|No| EndErr([Exception / empty result])
```

## Failure and edge-case behavior
- Parent document not released: throws rather than returning an empty child list.

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)


## Sources
- `Data/SAIF.Data/Queries/OutputDocuments/OutputDocumentQueryProvider.cs`
- `Data/SAIF.Data/Queries/OutputDocuments/OutputDocumentQueryProvider.cs:23`
- `Data/SAIF.Data/Queries/OutputDocuments/OutputDocumentQueryProvider.cs:35`
- `Data/SAIF.Data/Queries/OutputDocuments/OutputDocumentQueryProvider.cs:41`
