---
title: "Policy output documents"
summary: Operation implemented by PolicyOutputDocumentRepository
status: draft
owner: SAIF.Core documentation team
last_reviewed: 2026-09-24
library: SAIF.Data.NHibernate
reference_type: package
operation_id: "OP-SDN-16"
trigger: "See steps below"
---


# Policy output documents

Policy output documents is implemented by `PolicyOutputDocumentRepository` and is documented as OP-SDN-16 in the Stage 1 analysis.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-SDN-16 |
| **Trigger** | See steps below |
| **Primary components** | `PolicyOutputDocumentRepository` |

## Steps

1. Queries on `PolicyOutputDocument` (`policy_output_document`) eager-fetch related entities.
2. Inbox: `ShowOnlyDocuments` determines the filter.
   - Unread: `NonViewed` + `NotAgencyDeleted`.
   - All: `NotAgencyDeleted`.
   - Deleted: `AgencyDeleted`, meaning `AgencyDeleteDate` is set.
   - Also filtered by agency or producer and by release date.
   - Rule: [SDN-BR-060](../business-rules.md#sdn-br-060-agency-inbox%3A-unread-%3D-not-viewed-and-not-agency-deleted).
3. Released and agency-viewable filters use statuses RELE/HELD/PEND. Rule: [SDN-BR-061](../business-rules.md#sdn-br-061-agencies-see-only-released%2C-agency-viewable-documents). This duplicates [SD-BR-070](../../saif-data/business-rules.md#sd-br-070-output-document-status-code-set)/[SD-BR-072](../../saif-data/business-rules.md#sd-br-072-agency-sees-only-agency-viewable-and-inbox-viewable-documents) from SAIF.Data (originating `SAIF.Data` / `PolicyOutputDocumentExtensions`).
4. `ForCategory`: "ALL" or blank means no filter. Rule: [SDN-BR-062](../business-rules.md#sdn-br-062-category-%22all%22-or-blank-means-no-filter) (duplicates SD-BR-073).
5. `GetReleasedAgencyViewableChildOutputDocuments` requires a released parent. Rule: [SDN-BR-063](../business-rules.md#sdn-br-063-child-documents-are-returned-only-for-a-released-parent).
6. `CheckDocumentExist(document, documentTypeCode)` checks for duplicate documents.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start(["Policy output documents"]) --> S1["`PolicyOutputDocumentRepository`"]
	S1 --> S2{"Rules satisfied?"}
	S2 -->|Yes| EndOk([Result returned])
	S2 -->|No| EndErr([Exception / empty result])
```

## 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.NHibernate/Repositories/OutputDocuments/PolicyOutputDocumentRepository.cs`
