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

# SAIF.Application.Services.AudioVideo.32 dependencies

This library has no `<ProjectReference>` elements — all internal SAIF collaboration is through organizational NuGet packages, most notably the 32-bit-specific `SAIF.Framework.Data.NHibernate.32` package (which bundles the x86 `Oracle.DataAccess.dll`), plus vendored third-party CallRex binaries and standard NuGet packages for validation, mapping, logging, and audio conversion.

## Internal dependencies

| Dependency | Reference Type | Usage |
| --- | --- | --- |
| SAIF.Framework.Core | NuGet Package | Supplies `IEnvironmentService`, `IConsoleLogService`/`ILogService`, `SaifValidationException`, `IUnitOfWork`, and `IRepository<T>` contracts consumed by `AudioVideoService`, `ImportStatusManager`, `CallRecordingSystem`, and `CallRexServiceProxy`. |
| SAIF.Framework.Common | NuGet Package | Supplies `SAIF.Common` types (`Enforce`, `EntityBase<T>`, and extension methods `GetErrorLogFormattedException`, `TakeFromEnd`, `ToStringAll`, `GetMD5Hash`) used by the entity base classes and by `AudioVideoService`'s backup-file MD5 verification. |
| SAIF.Framework.Data.NHibernate.32 | NuGet Package | 32-bit NHibernate data-access stack backing `IUnitOfWork`/`IRepository<T>`; bundles the x86 `Oracle.DataAccess.dll` driver required because this project builds with `PlatformTarget=x86`. |
| SAIF.HashUtil | NuGet Package | Backs the `GetMD5Hash` extension method used by `AudioVideoService.CopyOriginalRecordingFileToBackup` to verify backup-copy integrity. |
| SAIF.Web.API.Clients | NuGet Package | `SAIF.Web.API.Core`/`SAIF.Web.API.Clients` assemblies referenced by the project; no direct usage was observed in the scanned source. |

## External dependencies

| Dependency | Version | Usage |
| --- | --- | --- |
| Autofac | 3.5.2 | DI container reference; no direct container-registration code was found in the scanned files. |
| FluentNHibernate | 2.0.1.0 | `ClassMap<T>` entity mapping for `AudioImportStatusMap` and `RecordingMap`. |
| FluentValidation | 5.5.0.0 | Base class for `AudioVideoValidator : AbstractValidator<ImportAudioRequest>`. |
| Iesi.Collections | 4.0.1.4000 | NHibernate collection-support dependency. |
| log4net | 2.0.5 | Logging infrastructure dependency, consumed indirectly via `ILogService`/`IConsoleLogService`. |
| MediaToolkit | 1.1.0.1 | Wraps FFmpeg for audio transcoding (`MediaToolkit.Engine`, `MediaToolkit.Model.MediaFile`) in `AudioVideoService.ConvertAudioRecording`; vendored FFmpeg binary attribution is recorded in `MediaToolkit\README.txt`. |
| Newtonsoft.Json | 8.0.3 | JSON serialization dependency; no direct usage was observed in the scanned files (transitive via framework packages). |
| NHibernate | 4.0.3.4000 | ORM engine underlying the Framework4 data-access stack. |
| RestSharp | 105.2.3 | HTTP client dependency; no direct usage was observed in the scanned files (likely transitive via `SAIF.Web.API.Clients`). |
| CallRex.Utilities.dll (vendored) | n/a (HintPath reference) | Third-party CallRex client utility library, referenced directly from `Libs\ThirdParty\CallRex\`, not NuGet-restored. |
| CallrexAPIUtilities.dll (vendored) | n/a (HintPath reference) | Third-party CallRex API utility library, referenced directly from `Libs\ThirdParty\CallRex\`, not NuGet-restored. |

## 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.dll (x86, ODP.NET unmanaged) | `SAIF.Framework.Data.NHibernate.32` | Transitive | Bundled x86 Oracle client driver required for this project's `PlatformTarget=x86` build; loaded when `IUnitOfWork`/`IRepository<T>` resolve database connections at runtime, in place of the sibling library's 64-bit-capable Oracle client. |

## Dependency risks and notes
- **Bitness-coupled dependency chain**: this library's choice of `SAIF.Framework.Data.NHibernate.32` (and its bundled x86 `Oracle.DataAccess.dll`) is directly tied to the project's `PlatformTarget=x86` setting; deploying this assembly into a 64-bit host process would be incompatible with the vendored unmanaged Oracle client.
- **Vendored, non-NuGet third-party binaries**: `CallRex.Utilities.dll` and `CallrexAPIUtilities.dll` are referenced by `HintPath` rather than restored via NuGet, so they are not subject to standard package-vulnerability/version tooling and must be tracked manually.
- **Hard-coded third-party service credentials**: `CallRexServiceProxy` logs in to the CallRex `ClientServiceClient` WCF service using a hard-coded credential pair (`"AI"` / `"AudioImporter"`) compiled directly into source, rather than retrieved via `IEnvironmentService.GetSecureConfigSetting`; this bypasses the SAIF secure-configuration pattern and is a configuration/secrets-management risk (see [Configuration](configuration.md)).
- **Design-time WCF endpoint addresses are overridden at runtime**: the `app.config` `system.serviceModel` client endpoints use `localhost`-style placeholder addresses; the actual CallRex endpoints dialed at runtime are constructed from `IEnvironmentService`-resolved settings (`AudioImportService.callRexServiceUrl`, `AudioImportService.callRexStateServiceUrl`), so endpoint configuration risk is concentrated in those environment settings rather than in `app.config` itself.
- **No independently-versioned business logic**: because this project shares 100% of its business-logic source with `SAIF.Application.Services.AudioVideo` via linked files, any dependency-version divergence between the two projects' `packages.config` files (beyond the intentional `SAIF.Framework.Data.NHibernate.32` vs. the sibling's package) should be treated as a build-variant risk, not an intentional behavioral difference.

## 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)

## Sources
- `Application\SAIF.Application.Services.AudioVideo.32\SAIF.Application.Services.AudioVideo.32.csproj`
- `Application\SAIF.Application.Services.AudioVideo.32\packages.config`
- `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`
