---
title: SAIF.Framework.Connection business rules
summary: Enumerated business rules with per-rule trigger, enforcement, and outcomes.
status: draft
owner: <owner>
last_reviewed: 2026-07-23
library: SAIF.Framework.Connection
reference_type: package
---

# SAIF.Framework.Connection business rules

This page captures business rules enforced by `clsConnection`, the sole class in this library.

## BR-001: Explicit Oracle credentials bypass the remote connection-resolution service

| Field | Value |
| --- | --- |
| **Statement** | If explicit Oracle credentials were provided at construction, `clsConnection` bypasses the remote `ConnectInfo` web service and builds the connection string locally using those credentials. |
| **Trigger** | `m_ConnectStringOverride = True`, set when the caller uses the `New(inOracleUser, inOraclePassword)` constructor overload. |
| **Enforcement** | `clsConnection.getConnection` (Oracle overload), `clsConnection.vb`. |
| **Outcome** | A locally composed Oracle connection string (`Data Source=...;User ID=...;...`) is used instead of a web-service-resolved string. |
| **Source** | `SAIF.Framework.Connection\clsConnection.vb` |

---

## BR-002: Load Balance Timeout is always stripped from Oracle connection strings

| Field | Value |
| --- | --- |
| **Statement** | The `Load Balance Timeout=900;` clause is always removed from the final Oracle connection string, regardless of source (local override or web-service-resolved).* |
| **Trigger** | Always, in the Oracle `getConnection` overload. |
| **Enforcement** | `clsConnection.vb` (`CnString.Replace("Load Balance Timeout=900;", "")`). |
| **Outcome** | The final Oracle connection string never contains a `Load Balance Timeout` setting. |
| **Source** | `SAIF.Framework.Connection\clsConnection.vb` |

---

## BR-003: ZSPECIALCHAR token is restored to a control character in web-service-resolved Oracle strings

| Field | Value |
| --- | --- |
| **Statement** | The token `ZSPECIALCHAR` returned by the remote `ConnectInfo.GetOracleConnectString` call is replaced with the BEL control character (`Chr(7)`), apparently to escape a special character (likely a password character) that cannot be transmitted directly through the SOAP contract.* |
| **Trigger** | Only applies when the web-service-resolved (non-override) Oracle path is used. |
| **Enforcement** | `clsConnection.vb`. |
| **Outcome** | Connection strings containing an escaped special character are restored to their literal control-character form before being assigned to the caller's `OracleConnection.ConnectionString`. |
| **Source** | `SAIF.Framework.Connection\clsConnection.vb` |

---

## BR-004: SQL Server connection resolution always delegates to the remote web service

| Field | Value |
| --- | --- |
| **Statement** | SQL Server connection resolution always delegates to the remote `ConnectInfo.GetSQLConnectString` web service; there is no local-override path for SQL Server. |
| **Trigger** | Always, in the SQL Server `getConnection` overload. |
| **Enforcement** | `clsConnection.vb`. |
| **Outcome** | The SQL Server connection string is always sourced from the `ConnectInfo` SOAP service; a `ConnectInfo` service outage prevents SQL Server connection resolution entirely for this overload. |
| **Source** | `SAIF.Framework.Connection\clsConnection.vb` |

## Notes
- [BR-002](#br-002-load-balance-timeout-is-always-stripped-from-oracle-connection-strings) and [BR-003](#br-003-zspecialchar-token-is-restored-to-a-control-character-in-web-service-resolved-oracle-strings) are undocumented in code comments; their business rationale is inferred from observed behavior only.*
- These four rules are the complete set of business rules identified in this library; no additional validation, authorization, or workflow rules were found.

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

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Framework.Connection\clsConnection.vb`
