---
title: SAIF.Business architecture
summary: Architectural responsibilities, boundaries, and interaction patterns.
status: draft
owner: SAIF
last_reviewed: 2026-07-24
library: SAIF.Business
reference_type: package
---

# SAIF.Business architecture

`SAIF.Business` mixes BOF business objects, claim-facing service facades, contact/value abstractions, and utility/reference-data helpers in one large class library. The dominant architectural pattern is retrieval-oriented BOF objects layered alongside direct-service helpers that call Oracle SQL, Oracle stored procedures, or CCClaimData API routes.

## Responsibilities
- Provide BOF retrieval and persistence surfaces for employee, leave, help-text, translation, and output-address data.
- Expose service helpers for claims, imaging, EFT, policy, unit-stat, globalization, MCO, and bank validation.
- Centralize security/resource checks and claim-scope visibility decisions.
- Publish reusable contact/value objects and shared result contracts.

## Component boundaries
- **BOF business objects**: `clsEmployeeData*`, `clsEmployeeLeave*`, `clsHelpText*`, `clsLanguageTranslation*`, and `clsSAIFOutputAddress`.
- **Claim/security services**: `ClaimServices`, `clsClaimSecurity`, and CCClaimData API DTOs.
- **Contact/value objects**: `ContactInfo` types provide reusable formatting, validation, and effective-dating behavior.
- **Service helpers**: imaging, EFT, policy, unit-stat, external-user, bank-validation, globalization, and MCO helpers.
- **Reference-data layer**: `mdlCodeMaps`, `Enumerations`, and related helpers centralize lookup tables and code translations.

## Interaction model
- BOF objects use criteria-driven retrieval and persistence methods backed by `IDataPortalInfo`, `IBusinessCriteria`, and `SqlHelper`.
- Claim and imaging flows combine claim-security flags, AD-resource checks, and targeted Oracle lookups before exposing secured data.
- Policy, EFT, imaging-alert, and employee-leave operations delegate specialized behavior to Oracle procedures and packages.
- Runtime configuration is resolved through environment-service abstractions and legacy XML-property lookup rather than hard-coded values.

## Architecture diagram
The following diagram shows the major interaction paths across BOF objects, service helpers, Oracle data access, and external framework services.

```mermaid
flowchart TD
    Caller[Consumer application] --> BOF[BOF business objects]
    Caller --> Services[Service helpers]
    BOF --> Framework[SAIF BOF framework]
    Services --> Oracle[(Oracle SQL / procedures)]
    Services --> ClaimApi[CCClaimData API]
    Services --> Security[AD resource checks]
    Framework --> Oracle
    Security --> AD[(Active Directory)]
```

## Sequence diagram
The following diagram shows the primary claim-security and data-retrieval sequence used by the service layer.

```mermaid
sequenceDiagram
    participant Caller
    participant ClaimServices
    participant ClaimSecurity
    participant Oracle
    participant Security as clsSecurityPrincipal
    Caller->>ClaimServices: Request claim-scoped operation
    ClaimServices->>ClaimSecurity: Load claim security flags
    ClaimSecurity-->>ClaimServices: Conflict / exposure / hostile-worker flags
    ClaimServices->>Security: Evaluate resource access
    ClaimServices->>Oracle: Query or call stored procedure
    Oracle-->>ClaimServices: Data or status
    ClaimServices-->>Caller: Authorized result
```

## Design constraints
- No in-repo `<ProjectReference>` dependencies exist; packaged dependencies supply the BOF framework and auxiliary integrations.
- Generated Web Reference proxies were excluded from deep behavioral analysis, so any embedded business behavior in those proxies remains outside this document set.**
- Oracle schema qualification is indirect for most inline SQL because the library does not configure connection users locally; unqualified tables remain `[unqualified]**`.
- `clsHelpText.vb` and `clsHelpTextCollection.vb` both declare a public `clsHelpTextCollection` type, and whether the repository compiles in this state remains unresolved.**

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

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Database tables](database-tables.md)
- [SQL catalog](sql/index.md)
- [Procedures](procedures/index.md)
- [API reference](api/index.md)
- [Security and authorization](security-authorization.md)
- [Configuration](configuration.md)

## Sources
- `Business\SAIF.Business\ClaimServices.vb`
- `Business\SAIF.Business\clsClaimSecurity.vb`
- `Business\SAIF.Business\clsEmployeeData.vb`
- `Business\SAIF.Business\clsEmployeeLeave.vb`
- `Business\SAIF.Business\clsHelpText.vb`
- `Business\SAIF.Business\clsLanguageTranslation.vb`
- `Business\SAIF.Business\clsSAIFOutputAddress.vb`
- `Business\SAIF.Business\ImageServices.vb`
- `Business\SAIF.Business\PolicyServices.vb`
- `Business\SAIF.Business\ContactInfo\clsAddress.vb`
- `Business\SAIF.Business\mdlCodeMaps.vb`
