---
title: SAIF.Application.Services.AudioVideo dependencies
summary: Internal and external dependencies for this library.
status: draft
owner: <owner>
last_reviewed: 2026-09-15
library: SAIF.Application.Services.AudioVideo
reference_type: package
---

# SAIF.Application.Services.AudioVideo dependencies

`SAIF.Application.Services.AudioVideo` consumes three internal SAIF framework packages, one same-repo Oracle-driver transitive dependency, several third-party NuGet packages, and a third-party vendor SDK, all as compiled `<Reference>`/`packages.config` items — the library declares no `<ProjectReference>` to any project in this repository.

## Internal dependencies

| Dependency | Reference Type | Usage |
| --- | --- | --- |
| SAIF.Framework.Core | NuGet Package | Supplies `IEnvironmentService` (config-setting retrieval), `ILogService`, `IUnitOfWork`, and `IRepository<T>` consumed throughout `AudioVideoService`, `ImportStatusManager`, and the CallRex proxy classes. |
| SAIF.Framework.Data.NHibernate | NuGet Package (same-repo) | Supplies the concrete `IUnitOfWork`/`IUnitOfWorkFactory`/`Repository<TEntity>` NHibernate stack this library's repositories run on, plus the bundled `Oracle.DataAccess.dll` driver. |
| SAIF.Framework.Common | NuGet Package | Supplies `EntityBase<T>` (base class for `Recording`/`AudioImportStatus`), `Enforce`, `SaifValidationException`/`ValidationResult`/`ValidationFailure`, `IConsoleLogService`, and extension methods (`GetErrorLogFormattedException`, `GetMD5Hash`, `TakeFromEnd`, `ToStringAll`). No `.nuspec` or `namespace SAIF.Common` exists anywhere in this repository, so its producing project could not be located in-repo.** |
| SAIF.HashUtil | NuGet Package | Referenced in `.csproj`/`packages.config`; no direct code usage of its API was found in this library's own scanned source.* |
| SAIF.Web.API.Clients | NuGet Package | Referenced in `.csproj`/`packages.config`; no direct code usage of its API was found in this library's own scanned source.* |
| SAIF.Web.API.Core | NuGet Package | Referenced in `.csproj`/`packages.config`; no direct code usage of its API was found in this library's own scanned source.* |

<!-- None of the above internal dependencies have a documentation set in this run (no docs/libraries/<slug>/ folder exists for them), so the Dependency column is plain text rather than a link, per the run's dependency-linking scope. -->

## External dependencies

| Dependency | Version | Usage |
| --- | --- | --- |
| NHibernate | 4.0.3.4000 | ORM runtime backing the `ClassMap<T>` mappings and repository/unit-of-work operations. |
| FluentNHibernate | 2.0.1.0 | Declarative `ClassMap<T>` mapping DSL used by `AudioImportStatusMap` and `RecordingMap`. |
| Iesi.Collections | 4.0.1.4000 | NHibernate collection-type dependency; no direct code usage found in this library.* |
| FluentValidation | 5.5.0.0 | Backs `AudioVideoValidator : AbstractValidator<ImportAudioRequest>`, enforcing the [BR-AV-01](business-rules.md#br-av-01-currentuserid-required)–[BR-AV-05](business-rules.md#br-av-05-description-length-limit) request-validation rules. |
| Autofac | 3.5.2 | Referenced in `.csproj`; no `ContainerBuilder`/registration code exists in this library's own source — likely consumed only for compile-time interface-resolution types, or registered by a hosting application outside this repo.* |
| log4net | 2.0.5 | Referenced in `.csproj`; no direct `log4net` API usage found — logging is done via injected `ILogService`/`IConsoleLogService` instead.* |
| MediaToolkit | 1.1.0.1 | `MediaToolkit.Engine`/`MediaToolkit.Model.MediaFile` used by `AudioVideoService.ConvertAudioRecording` to invoke the bundled `ffmpeg.exe` for audio format conversion. |
| Newtonsoft.Json | 8.0.3 | Referenced in `.csproj`; no direct JSON (de)serialization call found in scanned source.* |
| RestSharp | 105.2.3 | Referenced in `.csproj`; no direct REST client call found in scanned source.* |
| CallRex.Utilities / CallrexAPIUtilities | Local DLL references (`Libs\ThirdParty\CallRex\*.dll`) | Third-party CallRex vendor SDK types (`CallrexFileTransferCompletedEventArgs`, `CallrexFileTransferProgressChangedEventArgs`) consumed by `CallRexServiceProxy`. |

## Transitive dependencies

Dependencies in this section are inherited from dependency framework libraries. They are not directly referenced by this library but are required at runtime through framework packages.

| Dependency | Source framework | Type | Usage |
| --- | --- | --- | --- |
| Oracle.DataAccess | `SAIF.Framework.Data.NHibernate` | Transitive | Bundled Oracle ODP.NET driver (version 4.112.3.0, `lib\net45`) backing the NHibernate stack; confirms an Oracle database target for this library's `RECORDING`/`audio_import_status` tables. |

## API dependencies

| Endpoint | Method | Called from | Usage |
| --- | --- | --- | --- |
| CallRex `Core.ThirdParty.CallRex.IClientService` (`ClientServiceClient`) | SOAP (`BasicHttpsBinding`, NTLM) | `CallRexServiceProxy` | On-demand recording operations: `MarkInvalid`, `DeleteRecording`, `GetAllRecordings`, `GetRecordings`, `GetRecording`, `GetUsers`, `StartRecording`, `StopRecording`, `PauseRecording`, `ResumeRecording`. Calls are authenticated with hardcoded SOAP-header credentials (`_userId`/`_pwd`) injected via `AuthorizeClientServiceCall`. |
| CallRex `Core.ThirdParty.CallRexAgentState.IAgentStateService` (`AgentStateServiceClient`) | SOAP duplex (`WSDualHttpBinding`, security mode `None`) | `CallRexStateServiceProxy` | Real-time agent/call-state feed: `Register` (`RegisterForRealtimeFeedOnReportsFiltered`), `GetAllUsersCurrentCallState` (`RegisterForRealtimeFeedOnReports`), `Unregister` (`UnregisterForRealtimeFeed`). State updates are pushed back via the `AgentStateCallback` (`IAgentStateServiceCallback`) duplex callback contract. |

## Dependency risks and notes
- **Orphaned packaging metadata** — `nuspec\SAIF.Apps\SAIF.Application.Services.AudioVideo.nuspec`/`.32.nuspec` declare this library as a standalone NuGet package, but no pipeline YAML in this repository's `Pipelines\` folder builds or packs `SAIF.Application.Services.AudioVideo.csproj` or references either nuspec. Whether packaging happens via a pipeline defined outside this repository, or whether this is stale/dead packaging metadata, is unresolved.**
- **`SAIF.Framework.Common` cannot be located in-repo** — no `.nuspec` or `namespace SAIF.Common` declaration exists anywhere in this repository's source tree, so its producing project/package pipeline is external to this repo's scope; a Legends CLI/RAG lookup for its public surface was not performed as part of this single-library analysis pass.**
- **Hardcoded vendor credentials** — `CallRexServiceProxy` embeds a CallRex service-account credential (`_userId = "AI"`, `_pwd = "AudioImporter"`) as plain string literals rather than resolving them via `IEnvironmentService.GetSecureConfigSetting`, creating a supply-chain/credential-rotation risk tied to this dependency's authentication path.
- **Unsecured real-time feed transport** — `CallRexStateServiceProxy` uses `WSDualHttpBinding` with `WSDualHttpSecurityMode.None`, meaning the real-time agent-state duplex channel to the CallRex vendor dependency carries no transport or message security.
- **Declared-but-unexercised package references** — `SAIF.HashUtil`, `SAIF.Web.API.Clients`, `SAIF.Web.API.Core`, `log4net`, `Newtonsoft.Json`, `RestSharp`, and `Autofac` are referenced in `.csproj`/`packages.config` but no direct code usage of their APIs was found in this library's own scanned source; they may be transitively required by other referenced packages or by a hosting application's composition root outside this repo's scope.*
- **NHibernate configuration/session strategy is opaque from this library** — the connection string, Oracle/SQL Server configuration factory selection, and session strategy are all resolved inside `SAIF.Framework.Data.NHibernate` and/or a hosting application's DI composition root; this library only depends on the `IUnitOfWork`/`IRepository<T>` abstractions and cannot itself confirm how the dependency is configured at runtime.**

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

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

## Sources
- `Application\SAIF.Application.Services.AudioVideo\SAIF.Application.Services.AudioVideo.csproj`
- `Application\SAIF.Application.Services.AudioVideo\packages.config`
- `Application\SAIF.Application.Services.AudioVideo\app.config`
- `Application\SAIF.Application.Services.AudioVideo\Services\ClientProxies\ThirdParty\CallRexServiceProxy.cs`
- `Application\SAIF.Application.Services.AudioVideo\Services\ClientProxies\ThirdParty\CallRexStateServiceProxy.cs`
- `Application\SAIF.Application.Services.AudioVideo\Services\ClientProxies\ThirdParty\AgentStateCallback.cs`
- `Core\SAIF.Core\Core\Services\IEnvironmentService.cs`
- `Core\SAIF.Core\Core\Services\ILogService.cs`
- `Core\SAIF.Core\Data\Interfaces\IUnitOfWork.cs`
- `Core\SAIF.Core\Data\Interfaces\Repositories\IRepository.cs`
- `Core\SAIF.Core\SAIF.Framework.Core.nuspec`
- `Data\SAIF.Data.NHibernate\SAIF.Framework.Data.NHibernate.nuspec`
- `Data\SAIF.Data.NHibernate\Factories\ConfigurationFactoryBase.cs`
- `nuspec\SAIF.Apps\SAIF.Application.Services.AudioVideo.nuspec`
- `nuspec\SAIF.Apps\SAIF.Application.Services.AudioVideo.32.nuspec`
