---
title: Determine Business Online access
summary: Resolves Business Online access, latest external logon, and rendered access text for the current policy.
status: draft
owner: SAIF Documentation Generation
last_reviewed: 2026-07-31
library: SAIF.Application.Policy
reference_type: package
operation_id: OP-03
trigger: First read of HasBusinessOnlineAccess, LastLoginDate, or BOAccessText
---

# Determine Business Online access

This operation computes whether the current policy has Business Online access, derives the latest external logon date, and renders the internal-only access text shown by the application layer.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-03 |
| **Trigger** | First read of `HasBusinessOnlineAccess`, `LastLoginDate`, or `BOAccessText` |
| **Inputs** | Policy number, policy validity, environment service |
| **Outputs** | Cached access flag, latest external logon date, and rendered access text |
| **Primary components** | `PolicyAppManager.HasBusinessOnlineAccess`, `LastLoginDate`, `BOAccessText` |
| **Entry point** | `Application\SAIF.Application.Policy\PolicyAppManager.vb` |

## Steps

1. Start with Business Online access set to `False`.
2. Proceed only when the current policy is valid and its policy number is greater than zero ([BR-108](../business-rules.md#br-108-business-online-access-comes-from-external-accounts)).
3. Create `clsAccountMaintProxy` and enumerate the external accounts returned for the policy.
   - Any returned account marks Business Online access as `True` ([BR-108](../business-rules.md#br-108-business-online-access-comes-from-external-accounts)).
4. For each returned account, ask for the `EXTERNAL` last-logon date and keep the maximum value.
5. When rendering `BOAccessText`, emit nothing for external clients and, for internal clients, render either `Last Logon: <date>` or `Never logged on` when the date is `Date.MinValue` or `1/1/2000` ([BR-109](../business-rules.md#br-109-business-online-text-is-internal-only)).

## Process flow

The following diagram visualizes the Business Online access evaluation.

```mermaid
flowchart TD
    Start([Read BO access property]) --> Valid{Valid policy and positive number?}
    Valid -->|No| Done([Return cached false])
    Valid -->|Yes| Accounts[Load external accounts]
    Accounts --> Exists{Any accounts?}
    Exists -->|No| Text[Render empty or never-logged-on text]
    Exists -->|Yes| Logon[Track latest external logon date]
    Logon --> Text
    Text --> Done2([Return access flag and text])
```

## Failure and edge-case behavior
- External clients receive no rendered Business Online text even when access exists ([BR-109](../business-rules.md#br-109-business-online-text-is-internal-only)).
- The package-internal call sequence of `clsAccountMaintProxy` was not available from the findings.**

> **Note:** Statements marked with `**` could not be confirmed; treat as unknown until verified.

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [Configuration](../configuration.md)

## Sources
- `Application\SAIF.Application.Policy\PolicyAppManager.vb`
