Skip to content

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

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