---
title: Configuration settings
summary: Configuration keys consumed by this library, retrieval methods, and runtime dependencies.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-15
library: SAIF.Application.Services.AudioVideo.32
reference_type: package
---

# Configuration settings

This library retrieves all of its environment-specific configuration through the centralized `IEnvironmentService.GetConfigSetting(string)` API. Five plain-text setting keys were identified; no `ConfigurationManager.AppSettings`, `GetSecureConfigSetting`, `DbConnectionManager`, `ApplicationSettingsBase`/`Settings.Default`, or custom `<configSections>` usage was found anywhere in this project's compiled source (including its linked files) or in its own `app.config`.

## Configuration retrieval methods

| Method | Class / Interface | Namespace | Usage pattern |
| --- | --- | --- | --- |
| `GetConfigSetting(string)` | `IEnvironmentService` | `SAIF.Core.Services` | Called inline wherever a value is needed — no dedicated `*Configuration` wrapper class is used; each consumer resolves an injected `IEnvironmentService`/`ILogService`-paired field (`_environmentService`, `environmentService`, `_envSvc`) and calls `GetConfigSetting` directly. |

## Environment API settings

Settings retrieved via `IEnvironmentService` (centralized environment configuration service). All five keys vary by environment (they are URL/path values whose host, port, or filesystem location differs across deployment environments).

| Setting key | Method | Data type | Purpose | Consuming class | Source |
| --- | --- | --- | --- | --- | --- |
| `AudioImportService.callRexMediaOutputPath` | `GetConfigSetting` | string | Filesystem base path for converted/backup recording output | `AudioVideoService` (`GetRecordingPath`, `GetRecordingBackupPath`) | `Application\SAIF.Application.Services.AudioVideo.32\Services\Utilities\AudioVideo\AudioVideoService.cs` |
| `AudioImportService.callRexServiceUrl` | `GetConfigSetting` | string | CallRex `ClientService` WCF endpoint URL | `CallRecordingSystem` (constructor) | `Application\SAIF.Application.Services.AudioVideo.32\Services\Utilities\AudioVideo\RecordingSystem.cs` |
| `AudioImportService.callRexStateServiceUrl` | `GetConfigSetting` | string | CallRex agent-state WCF endpoint URL | `CallRecordingSystem` (constructor and `GetAllUsersCurrentCallState`) | `Application\SAIF.Application.Services.AudioVideo.32\Services\Utilities\AudioVideo\RecordingSystem.cs` |
| `AudioImportService.callRexRecordingBaseUrl` | `GetConfigSetting` | string | Base URL used to construct `CallRecording.RecordingUrl` | `CallRexServiceProxy` (`GetRecordings`, `GetRecording`) | `Application\SAIF.Application.Services.AudioVideo.32\Services\ClientProxies\ThirdParty\CallRexServiceProxy.cs` |
| `AudioImportService.callRexRecordingPath` | `GetConfigSetting` | string | Base filesystem path used to build `CallRecording.AbsoluteFileLocation` | `CallRexServiceProxy` (`GetRecording`) | `Application\SAIF.Application.Services.AudioVideo.32\Services\ClientProxies\ThirdParty\CallRexServiceProxy.cs` |

## Transitive configuration (from dependencies)

This project has no `<ProjectReference>` elements, so there is no same-repo project dependency to trace transitively. The only consumed local package with runtime configuration implications is `SAIF.Framework.Data.NHibernate.32` (persistence), but its connection resolution is fully internal to that package and is not exposed as a setting this library's callers must separately supply; no specific key names could be attributed to this library's runtime requirements without inspecting the package's own source.*

## Configuration dependencies

| Dependency | Type | Required at | Impact if missing |
| --- | --- | --- | --- |
| `AudioImportService.callRexServiceUrl` | Environment API setting | Runtime (WCF proxy construction) | Directly controls which CallRex `ClientService` WCF endpoint is dialed; misconfiguration would misroute or break call-recording import entirely. |
| `AudioImportService.callRexStateServiceUrl` | Environment API setting | Runtime (WCF proxy construction) | Directly controls which CallRex agent-state WCF endpoint is dialed; misconfiguration would misroute or break real-time agent call-state monitoring. |
| `AudioImportService.callRexMediaOutputPath` | Environment API setting | Runtime (file backup/conversion) | Backup copy and converted-audio output paths cannot be constructed; import processing would fail or write to an unintended location. |
| `AudioImportService.callRexRecordingBaseUrl` / `AudioImportService.callRexRecordingPath` | Environment API setting | Runtime (proxy construction) | `CallRecording.RecordingUrl`/`AbsoluteFileLocation` cannot be resolved to a usable value. |

All five `GetConfigSetting` calls pass only a key, with no fallback/default parameter or null-check on the returned value in the surrounding code — each key must be provided by the hosting environment or the corresponding proxy/service construction will operate with a null/empty URL or path.*

## Related but out-of-catalog finding: hard-coded credential

`CallRexServiceProxy` hard-codes a service-account credential pair — `_userId = "AI"` and `_pwd = "AudioImporter"` — directly in source (`Application\SAIF.Application.Services.AudioVideo.32\Services\ClientProxies\ThirdParty\CallRexServiceProxy.cs`), used to log in to the CallRex `ClientServiceClient` WCF service and to populate custom SOAP `Username`/`Password` message headers on every subsequent call. This is a plaintext secret compiled into the assembly rather than retrieved from `IEnvironmentService.GetSecureConfigSetting`, bypassing the SAIF secure-configuration pattern; it is flagged here as a configuration/secrets-management risk rather than catalogued as a secure setting since it does not use the secure-setting retrieval mechanism at all.

Additionally, this project's own `app.config` `system.serviceModel` `CustomBinding_IClientService` endpoint identity is pinned to a fixed SPN (`qmssvc@corp.saif.com`), independent of the runtime-resolved URL; no environment-specific override mechanism for this identity was found in this library.*

> **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)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [API reference](api/index.md)

## Sources
- `Application\SAIF.Application.Services.AudioVideo.32\SAIF.Application.Services.AudioVideo.32.csproj`
- `Application\SAIF.Application.Services.AudioVideo.32\app.config`
- `Application\SAIF.Application.Services.AudioVideo\Services\Utilities\AudioVideo\AudioVideoService.cs`
- `Application\SAIF.Application.Services.AudioVideo\Services\Utilities\AudioVideo\RecordingSystem.cs`
- `Application\SAIF.Application.Services.AudioVideo\Services\ClientProxies\ThirdParty\CallRexServiceProxy.cs`
