---
title: Configuration settings
summary: Configuration keys consumed by this library, retrieval methods, and runtime dependencies.
status: draft
owner: SAIF.Core documentation team
last_reviewed: 2026-09-24
library: SAIF.Data
reference_type: package
---

# Configuration settings

SAIF.Data reads 3 configuration keys directly through `IEnvironmentService` (2 via `GetConfigSetting`, 1 secure via `GetSecureConfigSetting`) from `Data/SAIF.Data/Clients/HttpClientBase.cs`, and its `AddDataClients` registration pulls in 7 additional transitive keys from `SAIF.Data.Guidewire`; there is no `<appSettings>`, `<connectionStrings>`, or custom `<configSections>` element in `Data/SAIF.Data/app.config` (`saif-data-config-analysis.md`).

## Configuration retrieval methods

| Method | Class / Interface | Namespace | Usage pattern |
| --- | --- | --- | --- |
| `GetConfigSetting(string key)` | `IEnvironmentService` | `SAIF.Core.Services` (package SAIF.Framework.Core) | Called lazily in `SAIF.Data.Clients.HttpClientBase.InitializeClient()` with the subclass's `UrlKey` to set `HttpClient.BaseAddress` |
| `GetConfigSetting(string key)` (transitive base) | `IEnvironmentService` via `SAIF.Data.Guidewire.Clients.HttpClientBase` | `SAIF.Core.Services` | `CCClaimApiService` derives from the Guidewire base, whose constructor reads `UrlKey` eagerly |
| `GetSecureConfigSetting(string key, string cryptoHash)` | `IEnvironmentService` | `SAIF.Core.Services` | Called in `HttpClientBase.InitializeClient()` with `AuthKey` when `AuthKey` is not blank; the value is split on `\|` into user name and password and wrapped in a `NetworkCredential` on an `HttpClientHandler` |
| `SystemHashUtil.ComputeHash(SystemType, string)` / `SystemHashUtil.Get(SystemType)` | `SystemHashUtil` | `SAIF.Services.Common` (package SAIF.HashUtil) | Produces the crypto hash for the secure read; `ComputeHash` is used when `IDataClientConfiguration.SystemName` is set, otherwise `Get(SystemType)` |
| Code-level options object | `IDataClientConfiguration` / `DataClientConfiguration` | `SAIF.Data.Guidewire.Clients` | Built by `ContainerBuilderExtensions.AddDataClients(builder, SystemType, Action<IDataClientConfiguration>, systemName)` and registered as a singleton; drives the system hash inputs and the Polly cache policy |

Not found in this library: `ConfigurationManager.AppSettings`, `ConfigurationManager.ConnectionStrings`, `WebConfigurationManager`, `ApplicationSettingsBase`, `DbConnectionManager`, `EnvironmentConfigKeys`, `IsProduction`.

## Environment API settings

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

| Setting key | Method | Data type | Purpose | Consuming class | Source |
| --- | --- | --- | --- | --- | --- |
| `cc.medicalbillingapiurl` | `GetConfigSetting` | string (URL) | Base URL for the Medical Billing API | `MedicalBillingApiService` (`UrlKey`), read by `HttpClientBase.InitializeClient` | `Data/SAIF.Data/Clients/MedicalBillingApiService.cs`, `Data/SAIF.Data/Clients/HttpClientBase.cs` |
| `cc.ccclaimdataapiurl` | `GetConfigSetting` | string (URL) | Base URL for the Guidewire CC claim data API | `CCClaimApiService` (`UrlKey`), read by `SAIF.Data.Guidewire.Clients.HttpClientBase` constructor | `Data/SAIF.Data/Queries/Claims/CCClaimApiService.cs`, `Data/SAIF.Data.Guidewire/Clients/HttpClientBase.cs` |

`CCClaimApiService.AuthKey` returns `string.Empty`, so the Guidewire base skips the secure read and no `Authorization` header is added for the CC claim data API. `MedicalBillingApiService` reads its URL and credentials lazily on first use of `Client`, but its constructor touches `Client` to set a 10-minute timeout, so in practice both keys are read at construction time. The obsolete `CCClaimApiService` constructor accepts `baseUrlOverride`, documented as "Useful for localhost", but the Guidewire base's obsolete constructor never uses that argument — the URL always comes from `cc.ccclaimdataapiurl`; this is a latent defect for anyone relying on the override*. No key in this catalog is a constant from `EnvironmentConfigKeys`; all are string literals.

## AppSettings (Web.config)

None. `Data/SAIF.Data/app.config` declares no `<appSettings>` section, and no compiled source in this library calls `ConfigurationManager.AppSettings`.

## Database connection configuration

None. The library does not resolve any database connection; it defines NHibernate entities and LINQ query providers over `IRepositoryFactory`. The session factory and connection resolution belong to the host and to `SAIF.Data.NHibernate`/the SAIF.Framework.Data.NHibernate package*.

## Secure settings

Settings that require decryption or credential retrieval.

| Setting key | Encryption method | Purpose | Consuming class | Source |
| --- | --- | --- | --- | --- |
| `medicalbillingapi.creds` | `SystemHashUtil.ComputeHash(SystemType, SystemName)` when `SystemName` is set, else `SystemHashUtil.Get(SystemType)` | HTTP Basic-style credential (`user\|password`) for the Medical Billing API | `MedicalBillingApiService` (`AuthKey`), read by `HttpClientBase.InitializeClient` | `Data/SAIF.Data/Clients/HttpClientBase.cs`, `Data/SAIF.Data/Configuration/ContainerBuilderExtensions.cs` |

The value is held in the environment-config service and is not present in the repository. The code expects the format `user|password` and indexes `creds[0]`/`creds[1]` without a length check, so a malformed value raises `IndexOutOfRangeException` at client initialization*.

## Transitive configuration (from dependencies)

`SAIF.Data.Configuration.ContainerBuilderExtensions.AddDataClients` registers every Guidewire client from the `SAIF.Data.Guidewire` project reference. A host that calls `AddDataClients` must therefore provide these keys when the corresponding clients are resolved (`saif-data-guidewire-config-analysis.md` has full detail).

| Setting key | Method | Source dependency | Dependency type | Purpose |
| --- | --- | --- | --- | --- |
| `cc.activitydata.api.url.v1` | `GetConfigSetting` | SAIF.Data.Guidewire | Project Reference | Base URL for `ActivityDataApiClient` |
| `cc.claimdata.api.url.v1` | `GetConfigSetting` | SAIF.Data.Guidewire | Project Reference | Base URL for `ClaimDataApiClient` (also injected into `CCClaimApiService`) |
| `cc.financial.api.url.v1` | `GetConfigSetting` | SAIF.Data.Guidewire | Project Reference | Base URL for `FinancialDataApiClient` |
| `ab.providerdata.api.url.v1` | `GetConfigSetting` | SAIF.Data.Guidewire | Project Reference | Base URL for `ProviderDataApiClient` |
| `cc.workerdata.api.url.v1` | `GetConfigSetting` | SAIF.Data.Guidewire | Project Reference | Base URL for `WorkerDataApiClient` |
| `cc.gwcreds` | `GetSecureConfigSetting` | SAIF.Data.Guidewire | Project Reference | Secure Basic credential for Activity, Claim, Financial and Worker clients |
| `cc.providerdataapi.gwcreds` | `GetSecureConfigSetting` | SAIF.Data.Guidewire | Project Reference | Secure Basic credential for `ProviderDataApiClient` |

The external packages SAIF.Framework.Core (the `IEnvironmentService` implementation) and SAIF.HashUtil may require their own host settings (for example the Environment API endpoint); those are not visible from this repository**.

## Configuration dependencies

| Dependency | Type | Required at | Impact if missing |
| --- | --- | --- | --- |
| `IEnvironmentService` (SAIF.Framework.Core) | Injected service | Startup/construction | `CCClaimApiService`'s Guidewire base constructor fails to resolve `BaseAddress` at DI resolution time* |
| `medicalbillingapi.creds` secure setting | Environment config value | First access of `MedicalBillingApiService.Client` (construction, in practice) | `InitializeClient()` cannot build the credential, so the client throws or fails to authenticate* |
| `IDataClientConfiguration` | Code-level options object | Construction (via `AddDataClients`) | Client falls back to code defaults (`UseCache=true`, `CachePolicyKey="data-client-cache-policy"`, `MaxCacheDuration=30s`) if a custom configuration is not supplied |
| 7 transitive `SAIF.Data.Guidewire` keys | Environment config values | Resolution of the corresponding Guidewire client | The affected client fails to resolve its base URL or credential; see `saif-data-guidewire-config-analysis.md` |

## Related documentation
- [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)
- [Database tables](database-tables.md)
- [SQL catalog](sql/index.md)
- [API reference](api/index.md)

## Sources
- `Data/SAIF.Data/app.config`
- `Data/SAIF.Data/packages.config`
- `Data/SAIF.Data/Clients/HttpClientBase.cs`
- `Data/SAIF.Data/Clients/MedicalBillingApiService.cs`
- `Data/SAIF.Data/Queries/Claims/CCClaimApiService.cs`
- `Data/SAIF.Data/Configuration/ContainerBuilderExtensions.cs`
- `Data/SAIF.Data.Guidewire/Clients/HttpClientBase.cs`
- `Data/SAIF.Data.Guidewire/Clients/DataClientConfiguration.cs`
- `Data/SAIF.Data.Guidewire/Clients/IDataClientConfiguration.cs`
- `Data/SAIF.Data.Guidewire/Clients/ActivityDataApiClient.cs`
- `Data/SAIF.Data.Guidewire/Clients/ClaimDataApiClient.cs`
- `Data/SAIF.Data.Guidewire/Clients/FinancialDataApiClient.cs`
- `Data/SAIF.Data.Guidewire/Clients/ProviderDataApiClient.cs`
- `Data/SAIF.Data.Guidewire/Clients/WorkerDataApiClient.cs`
- `Services/SAIF.Services.WebApi/EnvironmentApi/App_Data/environments.xml`
