---
title: SAIF.Application.Claim business rules
summary: Enumerated business rules for SAIF.Application.Claim.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-28
library: SAIF.Application.Claim
reference_type: package
---

# SAIF.Application.Claim business rules

This page captures business rules enforced by `SAIF.Application.Claim`.

## BR-001: Conflict claims require conflict access or an override

| Field | Value |
| --- | --- |
| **Statement** | Users without conflict-claim access cannot continue into a worker-conflict claim unless an explicit override exists. |
| **Trigger** | `ClaimSecurity.CheckClaim(ClaimData)` marks `ConflictAccess = False` for a claim where `IsWorkerConflict` is true. |
| **Enforcement** | `ClaimAppManager.OnCheckSecurity()` checks `ClaimSecurity.ConflictAccess` and then calls `CheckForSecurityOverride()`. |
| **Outcome** | The application is marked `NoAccess` and returns the confidential-access message when both checks fail. |
| **Confidence** | Verified |
| **Source** | `Application\SAIF.Application.Claim\ClaimAppManager.vb`; `Application\SAIF.Application.Claim\ClaimSecurity.vb` |

---

## BR-002: Exposure claims require exposure access

| Field | Value |
| --- | --- |
| **Statement** | Claims flagged as exposure claims require the current user to have the `ExposureClaim` resource. |
| **Trigger** | `clsClaimData.IsExposure` is true during `ClaimSecurity.CheckClaim()`. |
| **Enforcement** | `ClaimSecurity.CheckClaim()` sets `ExposureAccess = False` when `ClaimUserAccess.ExposureAccess` is false. |
| **Outcome** | The claim security snapshot records that the user does not have exposure access for the active claim. |
| **Confidence** | Verified |
| **Source** | `Application\SAIF.Application.Claim\ClaimSecurity.vb`; `Application\SAIF.Application.Claim\ClaimUserAccess.vb` |

---

## BR-003: Hostile-worker claims require secure-claim access

| Field | Value |
| --- | --- |
| **Statement** | Claims flagged as hostile-worker claims require the current user to have the `SecureClaim` resource. |
| **Trigger** | `clsClaimData.IsHostileWorker` is true during `ClaimSecurity.CheckClaim()`. |
| **Enforcement** | `ClaimSecurity.CheckClaim()` sets `SecureClaimAccess = False` when `ClaimUserAccess.SecureClaimAccess` is false. |
| **Outcome** | The claim security snapshot records that the user does not have secure-claim access for the active claim. |
| **Confidence** | Verified |
| **Source** | `Application\SAIF.Application.Claim\ClaimSecurity.vb`; `Application\SAIF.Application.Claim\ClaimUserAccess.vb` |

---

## BR-004: Health-issue exposure claims reuse exposure authorization

| Field | Value |
| --- | --- |
| **Statement** | Health-issue claims are denied only when the claim is also an exposure claim and the user lacks exposure access. |
| **Trigger** | `clsClaimData.IsHealthIssue` and `clsClaimData.IsExposure` are both true during `ClaimSecurity.CheckClaim()`. |
| **Enforcement** | `ClaimSecurity.CheckClaim()` evaluates `ClaimUserAccess.ExposureAccess` instead of a separate health-issue resource check. |
| **Outcome** | `HealthIssueAccess` is set to false only for health-issue claims that also fail the exposure-access check. |
| **Confidence** | Verified |
| **Source** | `Application\SAIF.Application.Claim\ClaimSecurity.vb` |

---

## BR-005: Claim retrieval requires a populated and valid context

| Field | Value |
| --- | --- |
| **Statement** | Retrieval runs only when claim context is set, claim data is valid, and the application is not in the `NoAccess` security role. |
| **Trigger** | `Retrieve()` or subclass retrieval depends on `ValidContext`. |
| **Enforcement** | `ClaimAppManager.OnValidContext()` checks `ContextSet`, `SecurityRole <> AppSecurityRole.NoAccess`, and `ClaimData.IsValid`. |
| **Outcome** | `OnRetrieve()` does not execute when the claim context is missing, the claim cannot be found, or security has denied access. |
| **Confidence** | Verified |
| **Source** | `Application\SAIF.Application.Claim\ClaimAppManager.vb` |

---

## BR-006: Invalid claim input returns the standard claim message

| Field | Value |
| --- | --- |
| **Statement** | Blank claim numbers and non-positive claim IDs are rejected before context change processing begins. |
| **Trigger** | `SetClaimContext(String)` receives a blank value or `SetClaimContext(Decimal)` receives `0` or a negative value. |
| **Enforcement** | Both overloads clear `m_ClaimData`, call `MarkContextNotSet()`, and set `Message = ClaimAppConstants.PLEASEENTERCLAIM`. |
| **Outcome** | The application remains out of context and returns the standard invalid-claim message to the caller. |
| **Confidence** | Verified |
| **Source** | `Application\SAIF.Application.Claim\ClaimAppManager.vb`; `Application\SAIF.Application.Claim\ClaimAppConstants.vb` |

---

## Notes
- Rule identifiers in this document are documentation identifiers for this generated library set.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Security and authorization](security-authorization.md)
- [Configuration](configuration.md)
- [API reference](api/index.md)

## Sources
- `Application\SAIF.Application.Claim\ClaimAppManager.vb`
- `Application\SAIF.Application.Claim\ClaimSecurity.vb`
- `Application\SAIF.Application.Claim\ClaimUserAccess.vb`
- `Application\SAIF.Application.Claim\ClaimAppConstants.vb`
