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

# clsPolicyData.UserAccessLevels

`UserAccessLevels` ranks the audiences that read policy data, from `SAIFEmployee` at 1000 down to `QuickFileUser` at 300. The numeric ordering is deliberate: comparisons treat a higher value as strictly more privileged. Every external audience has a paired demo level fifty points lower, which is how the library distinguishes a real external user from a demonstration account that must see masked data.

## Purpose

- Ranks the audiences that consume policy data, so that visibility decisions can compare levels rather than enumerate roles ([BR-012](../../business-rules.md#br-012-demo-access-levels-are-treated-as-a-distinct-user-population)).
- Pairs every external audience with a demo variant, which drives address and agency masking ([BR-013](../../business-rules.md#br-013-user-type-maps-to-a-ranked-access-level)).
- Supplies the default `SAIFEmployee` level used when a caller does not specify one ([BR-010](../../business-rules.md#br-010-a-non-employer-account-requires-a-non-zero-account-number)).

## Context

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

## Public members

| Member | Signature | Purpose |
| --- | --- | --- |
| SAIFEmployee | `SAIFEmployee = 1000` | Internal SAIF staff — the most privileged level, and the default when a caller supplies none ([BR-010](../../business-rules.md#br-010-a-non-employer-account-requires-a-non-zero-account-number)). |
| Auditor | `Auditor = 900` | A fee auditor, who sees only policies with a current audit assignment ([BR-008](../../business-rules.md#br-008-fee-auditors-see-only-policies-with-a-recent-non-cancelled-audit)). |
| DemoAuditor | `DemoAuditor = 850` | A demonstration account behaving as an auditor; its data is masked ([BR-013](../../business-rules.md#br-013-user-type-maps-to-a-ranked-access-level)). |
| Losscontrol | `Losscontrol = 800` | A loss-control consultant, who sees only policies they are assigned to ([BR-007](../../business-rules.md#br-007-loss-control-consultants-see-only-policies-they-are-assigned-to)). |
| DemoLossControl | `DemoLossControl = 750` | A demonstration account behaving as a loss-control consultant; its data is masked ([BR-013](../../business-rules.md#br-013-user-type-maps-to-a-ranked-access-level)). |
| Agent | `Agent = 700` | An agent or agency, who sees only policies they produce ([BR-004](../../business-rules.md#br-004-agents-see-only-their-own-book)). |
| DemoAgent | `DemoAgent = 650` | A demonstration account behaving as an agent; agency and address detail is masked ([BR-013](../../business-rules.md#br-013-user-type-maps-to-a-ranked-access-level)). |
| Group | `Group = 600` | A group programme administrator, who sees the policies in their group and chapter ([BR-006](../../business-rules.md#br-006-group-users-see-only-policies-in-their-group-or-chapter)). |
| DemoGroup | `DemoGroup = 550` | A demonstration account behaving as a group administrator; its data is masked ([BR-013](../../business-rules.md#br-013-user-type-maps-to-a-ranked-access-level)). |
| Policyholder | `Policyholder = 500` | A policyholder, who sees their own policy and policies under the same parent ([BR-005](../../business-rules.md#br-005-policyholders-see-their-own-policy-and-policies-under-the-same-parent-association)). |
| DemoPolicyholder | `DemoPolicyholder = 450` | A demonstration account behaving as a policyholder; its data is masked ([BR-013](../../business-rules.md#br-013-user-type-maps-to-a-ranked-access-level)). |
| QuickFileUser | `QuickFileUser = 300` | The least privileged level; affiliated policies are hidden entirely ([BR-011](../../business-rules.md#br-011-affiliated-policy-visibility-depends-on-user-access-level-and-affiliate-type)). |

> **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/clsPolicyData.vb`
