---
title: SAIF.Framework.Connection operations and processes
summary: Business and technical operations supported by this library.
status: draft
owner: SAIF Framework
last_reviewed: 2026-07-30
library: SAIF.Framework.Connection
reference_type: package
---

# SAIF.Framework.Connection operations and processes

`SAIF.Framework.Connection` exposes exactly two operations, both implemented as overloads of `clsConnection.getConnection`. Neither operation executes SQL or touches a database directly; each one resolves a connection string — either locally or from the remote `ConnectInfo` SOAP service — and assigns it to a caller-supplied `OracleConnection` or `SqlConnection`. Each operation's detailed, step-by-step logic lives in its own page under `operations/`.

## Operation catalog
| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
| --- | --- | --- | --- | --- | --- | --- | --- |
| [Resolve Oracle connection](operations/resolve-oracle-connection.md) | Populate an `OracleConnection.ConnectionString` either from local override state supplied at construction or from the remote `ConnectInfo` service | Caller invokes the Oracle overload of `clsConnection.getConnection` | `inInstance`, `inCode`, `inUserid`, `inCnObj`, constructor state (`m_Userid`, `m_Password`, `m_ConnectStringOverride`), optional pooling arguments | Oracle connection object with a populated `ConnectionString` | [BR-001](business-rules.md#br-001-explicit-oracle-credentials-bypass-the-remote-connection-resolution-service), [BR-002](business-rules.md#br-002-load-balance-timeout-is-always-stripped-from-oracle-connection-strings), [BR-003](business-rules.md#br-003-zspecialchar-token-is-restored-to-a-control-character-in-web-service-resolved-oracle-strings) | — | — |
| [Resolve SQL Server connection](operations/resolve-sql-server-connection.md) | Populate a `SqlConnection.ConnectionString` from the remote `ConnectInfo` service | Caller invokes the SQL Server overload of `clsConnection.getConnection` | `inServer`, `inCode`, `inDatabase`, `inCnObj` | SQL Server connection object with a populated `ConnectionString` | [BR-004](business-rules.md#br-004-sql-server-connection-resolution-always-delegates-to-the-remote-web-service) | — | — |

## Process flow diagram
The following diagram visualizes how a caller's connection request branches by database type and, for Oracle, by whether override credentials were supplied.

```mermaid
flowchart TD
	Start([Caller requests connection string]) --> Type{Oracle or SQL Server overload?}
	Type -->|Oracle| OracleOverride{Override credentials supplied at construction?}
	OracleOverride -->|Yes| OracleLocal[Compose connection string locally]
	OracleOverride -->|No| OracleRemote[Resolve string via ConnectInfo.GetOracleConnectString]
	OracleRemote --> OracleNormalize[Restore ZSPECIALCHAR token and strip Load Balance Timeout]
	OracleLocal --> OracleAssign[Assign Oracle ConnectionString]
	OracleNormalize --> OracleAssign
	Type -->|SQL Server| SqlRemote[Resolve string via ConnectInfo.GetSQLConnectString]
	SqlRemote --> SqlAssign[Assign SQL Server ConnectionString]
	OracleAssign --> End([Return connection object to caller])
	SqlAssign --> End
```

## Failure and edge-case behavior
- On the Oracle override branch, `clsConnection` never allocates a replacement `OracleConnection` when the caller passes `inCnObj` as `Nothing`; the assignment to `ConnectionString` is skipped and the caller receives no usable object.
- The Oracle overload ignores its `inUserid` parameter and all optional pooling arguments (`inPoolFlag`, `inLifeTime`, `inMaxPoolSize`, `inMinPoolSize`) on both the override and remote-resolution branches. The SQL Server overload has no equivalent parameters and always derives the audit identity from `System.Environment.UserName`.
- The override branch composes the Oracle connection string with the literal placeholder `******` rather than the stored `m_Password` value; the analysis could not confirm why the password field is not read directly, so this behavior is treated as an unconfirmed limitation.**
- Both overloads make a synchronous, blocking call into the `ConnectInfo` SOAP proxy and contain no retry, timeout, or fallback logic; an unreachable `ConnectInfo` service surfaces as an unhandled exception to the caller for any request that is not served by the Oracle override path.
- `clsConnection` only ever populates `ConnectionString`. It never opens, tests, or disposes the connection object — that lifecycle remains entirely the caller's responsibility.

> **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.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [Configuration](configuration.md)
- [API reference](api/index.md)

## Sources
- `SAIF.Framework.Connection\clsConnection.vb`
- `SAIF.Framework.Connection\Web References\ConnectInfo\Reference.vb`
- `SAIF.Framework.Connection\My Project\Settings.Designer.vb`
- `SAIF.Framework.Connection\app.config`
