---
title: Configuration settings
summary: Configuration keys consumed by this library, retrieval methods, and runtime dependencies.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Presentation.Web.Core.Infragistics111
reference_type: package
---

# Configuration settings

`SAIF.Presentation.Web.Core.Infragistics111` reads two runtime settings through two different mechanisms: the legacy SAIF mail SOAP endpoint URL is resolved from the framework environment service (`AppGlobal.EnvironmentService.GetConfigSetting`), and the Oracle environment name used for menu data access is read from the host application's `<appSettings>` via `System.Configuration.ConfigurationManager.AppSettings.Get`. The library ships no settings of its own — its `app.config` contains only an assembly binding redirect and its generated settings class declares no properties — so every value must be supplied by the consuming web application.

## Configuration retrieval methods

| Method | Class / Interface | Namespace | Usage pattern |
| --- | --- | --- | --- |
| `GetConfigSetting(String)` | `AppGlobal.EnvironmentService` (framework environment service) | `SAIF.Framework.Security` (package `SAIF.BOF.Framework`) | Static access through the `AppGlobal` singleton; called with a string literal key immediately before assigning the SOAP proxy `Url`. |
| `ConfigurationManager.AppSettings.Get(String)` | `System.Configuration.ConfigurationManager` | `System.Configuration` | Fully-qualified inline call in the `NavigationContext` constructor; the result is passed straight into the Oracle data-layer constructor. |
| `IsClientExternal` (property, not a keyed setting) | `AppGlobal.EnvironmentService` | `SAIF.Framework.Security` | Read as a boolean environment classification to decide whether the session keep-alive script is emitted; it takes no key argument and is listed here only for completeness. |

No `GetSecureConfigSetting`, `SystemHashUtil`, `DbConnectionManager`, `EnvironmentConfigKeys`, `WebConfigurationManager`, or `<connectionStrings>` usage exists in this library.

## Environment API settings

Settings retrieved via `IEnvironmentService` (centralized environment configuration service).

| Setting key | Method | Data type | Purpose | Consuming class | Source |
| --- | --- | --- | --- | --- | --- |
| `LegacyMailWebServiceUrl` | `GetConfigSetting` | String | Absolute endpoint URL of the `SAIFMail.clsSAIFMessage` legacy SOAP mail service | `clsMailMessage` (all six `SendMail` overloads) | `SAIF.Presentation.Web.Core.Infragistics111/clsMailMessage.vb` (lines 99, 123, 148, 175, 202, 226) |

The key is a hard-coded string literal — no constant indirection to resolve. No null/empty guard surrounds the call; a missing setting produces an unusable proxy URL at send time.*

## AppSettings (Web.config)

Settings retrieved via `ConfigurationManager.AppSettings`.

| Setting key | Default value | Purpose | Consuming class | Source |
| --- | --- | --- | --- | --- |
| `MENU_ENVIRONMENT` | N/A — not declared in any config file in this repository; must be supplied by the hosting application | Names the Oracle environment/database instance used for menu data access | `NavigationContext` (constructor `New(inUser As String)`) | `SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb` (line 186) |

Accessed via `System.Configuration.ConfigurationManager.AppSettings.Get("MENU_ENVIRONMENT")` and passed as the second argument to `New clsMSOracleDataLayer(m_DBUserName, …)`, where `m_DBUserName` is the hard-coded literal `"MENU"` (`NavigationContext.vb` line 11). The key is accessed in code but not declared in any `app.config`/`Web.config` in this repository — it is an injected/deploy-time setting. `Get` returns `Nothing` when the key is absent, and the value is used without a guard.*

## Database connection configuration

Connection strings and database provider settings consumed by this library.

| Connection name | Provider | Retrieval method | Purpose | Source |
| --- | --- | --- | --- | --- |
| Menu authorization data layer (`clsMSOracleDataLayer`) | Oracle (via `SAIF.Framework` `clsMSOracleDataLayer`) | `MENU_ENVIRONMENT` (AppSettings) + hard-coded schema/user `MENU` | Loads the user's authorized menu items (`clsMenuAuthorizedItemCollection.GetMenuAuthorizedItems`) that back all `NavigationContext` navigation and page-authorization answers | `SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb` (lines 11, 186) |

No `DbConnectionManager` call, no `GetOracleConnectionString`/`GetSqlConnectionString` call, and no `<connectionStrings>` entry appears in this library. The connection string itself is resolved inside `clsMSOracleDataLayer` from the environment name plus the user name; the credential material is not present in this repository.*

## Secure settings

No secure configuration is retrieved by this library. There are no `GetSecureConfigSetting` calls and no `SystemHashUtil.ComputeHash` usage, even though `SAIF.HashUtil` is a package reference of the project.

## Transitive configuration (from dependencies)

Settings required at runtime by referenced libraries or packages, not directly consumed by this library's code. Only two referenced projects consume configuration; the control libraries and `SAIF.Business.Menu` contain no configuration calls in live code.

| Setting key | Method | Source dependency | Dependency type | Purpose |
| --- | --- | --- | --- | --- |
| `oracleDatabase`† (`EnvironmentConfigKeys.OracleDatabase`) | `GetConfigSetting` | SAIF.Presentation | ProjectReference | `clsPreferences.Load` builds its Oracle data layer from this key; `clsAppModelBase`-derived models load user preferences. |
| `oracleDatabase`† (`EnvironmentConfigKeys.OracleDatabase`) | `GetConfigSetting` | SAIF.Presentation.Web.MVC | ProjectReference | `NavigationContext` (MVC) menu authorization. |
| `netFrameworkSqlServer`† (`EnvironmentConfigKeys.NetFrameworkSqlServer`) | `GetConfigSetting` | SAIF.Presentation.Web.MVC | ProjectReference | `clsContext.clsContextRepository` cross-application context persistence. |
| `policymanagement.supportemaillist` | `GetConfigSetting` | SAIF.Presentation.Web.MVC | ProjectReference | `clsControllerBase.HandleErrors` error-notification distribution list — `AppViewPageBase`/`clsAppControllerBase` inherit this error path. |
| `ErrorPageName` | `AppSettings` | SAIF.Presentation.Web.MVC | ProjectReference | Error-page redirect target used by the inherited error handler. |
| `TraceLogging`, `PageTraceOn`, `TraceUser` | `AppSettings` | SAIF.Presentation.Web.MVC | ProjectReference | `clsControllerBase.New` trace-logging switches; every `clsAppControllerBase` instance runs this constructor. |
| `EXT_VIEWSTATE_SESSION` | `AppSettings` | SAIF.Presentation.Web.MVC | ProjectReference | `ViewPageBase.PageStatePersister`; `AppViewPageBase` derives from `ViewPageBase`. |
| `SAIFTracingSwitch` | `System.Diagnostics.TraceSwitch` (`<system.diagnostics><switches>`) | SAIF.Presentation.Web.MVC | ProjectReference | Trace level for the inherited controller base. |

† Constant values resolved from the `SAIF.BOF.Framework` package documentation (`EnvironmentConfigKeys`); the literals are not defined in this repository.

## Configuration dependencies

| Dependency | Type | Required at | Impact if missing |
| --- | --- | --- | --- |
| `LegacyMailWebServiceUrl` | Environment service setting | Request (every `SendMail` call) | SOAP proxy `Url` is unusable; mail send fails at the first attempt to use the proxy.* |
| `MENU_ENVIRONMENT` | AppSettings key | Request (`NavigationContext` construction) | `clsMSOracleDataLayer` construction fails or behaves unpredictably with a `Nothing` environment name.* |
| Host application `web.config` | Configuration file | Startup/deploy | Both settings above are required with no in-repository default; missing entries surface at first use rather than at startup. |

Additional risks: `MENU_ENVIRONMENT` uses the raw `AppSettings` channel rather than the environment service, so it bypasses the central environment API and must be maintained separately in each hosting application's `web.config`. Naming is inconsistent between the two settings (`SCREAMING_SNAKE_CASE` vs. PascalCase), which increases the chance of a mis-keyed entry in a host `web.config`.* The library's own `app.config` is not deployed for a class library, so its `Newtonsoft.Json` binding redirect must be duplicated in the host application configuration.*

## Related documentation
- [Library index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Security and authorization](security-authorization.md)

## Sources
- `SAIF.Presentation.Web.Core.Infragistics111/clsMailMessage.vb`
- `SAIF.Presentation.Web.Core.Infragistics111/NavigationContext.vb`
- `SAIF.Presentation.Web.Core.Infragistics111/AppViewPageBase.aspx.vb`
- `SAIF.Presentation.Web.Core.Infragistics111/app.config`
- `SAIF.Presentation.Web.Core.Infragistics111/My Project/Settings.settings`
- `SAIF.Presentation.Web.Core.Infragistics111/My Project/Settings.Designer.vb`
- `SAIF.Presentation.Web.Core.Infragistics111/SAIF.Presentation.Web.Core.Infragistics111.vbproj`
- `SAIF.Presentation/clsPreferences.vb`
- `SAIF.Presentation.Web.MVC/clsContext.vb`
- `SAIF.Presentation.Web.MVC/clsControllerBase.vb`
- `SAIF.Presentation.Web.MVC/NavigationContext.vb`
- `SAIF.Presentation.Web.MVC/ViewPageBase.aspx.vb`
- `SAIF.Presentation.Web.Controls.Claim/Web.config`
- `SAIF.Presentation.Web.Controls.Policy/Web.config`
