---
title: clsPolicySecurity.IPolicySecurityDataProvider
summary: API reference for clsPolicySecurity.IPolicySecurityDataProvider.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-07-31
library: SAIF.Business.View.Policy
reference_type: package
---

# clsPolicySecurity.IPolicySecurityDataProvider

`IPolicySecurityDataProvider` states exactly what `clsPolicySecurity` needs to know about a policy in order to decide access: its number, whether it is a secure policy, whether it is valid at all, the agent and agency it belongs to, and the identity of its loss-control consultant. Declaring the contract separately means the decision logic depends on those seven attributes rather than on the full policy aggregate, and it is what allows the decision to be exercised without loading a complete header.

## Purpose

- Names the seven policy attributes the access decision reads ([Authorize a policy for the current user](../../operations/authorize-policy-for-user.md)).
- Decouples `clsPolicySecurity` from the full `clsPolicyData` aggregate.

## Context

- Namespace: `SAIF.Business.View.Policy`
- Assembly/package: `SAIF.BOF.Business.View.Policy`
- Declared in: `Business/SAIF.Business.View.Policy/clsPolicySecurity.vb`

## Public members

| Member | Signature | Purpose |
| --- | --- | --- |
| PolicyNumber | `ReadOnly Property PolicyNumber As Decimal` | The policy under evaluation. |
| IsSecurePolicy | `ReadOnly Property IsSecurePolicy As Boolean` | True when the policy is SAIF-secured and the Active Directory resource check applies ([BR-001](../../business-rules.md#br-001-secure-saif-policies-require-explicit-authorization)). |
| IsValid | `ReadOnly Property IsValid As Boolean` | False when no policy was found, which the decision refuses on ([BR-002](../../business-rules.md#br-002-invalid-or-unnumbered-policies-are-never-accessible)). |
| AgentNumber | `ReadOnly Property AgentNumber As Decimal` | The agent the policy belongs to, compared against an agent principal's user number ([BR-004](../../business-rules.md#br-004-agents-see-only-their-own-book)). |
| AgencySeqNum | `ReadOnly Property AgencySeqNum As Decimal` | The agency the policy belongs to, compared against an agency principal's user number ([BR-004](../../business-rules.md#br-004-agents-see-only-their-own-book)). |
| LossControlConsultantID | `ReadOnly Property LossControlConsultantID As String` | The identifier of the consultant assigned to the policy ([BR-007](../../business-rules.md#br-007-loss-control-consultants-see-only-policies-they-are-assigned-to)). |
| LossControlConsultantName | `ReadOnly Property LossControlConsultantName As String` | The assignment name the loss-control prefix match is performed against ([BR-007](../../business-rules.md#br-007-loss-control-consultants-see-only-policies-they-are-assigned-to)). |

> **Note:** Statements marked with `†` are derived from dependency library
> documentation via the Legends CLI. Statements marked with `*` were inferred
> from code structure or contextual evidence. Statements marked with `**` could
> not be confirmed; treat as unknown until verified.

## Sources

- `Business/SAIF.Business.View.Policy/clsPolicySecurity.vb`
