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

# SAIF.Framework.Core dependencies

SAIF.Framework.Core has no intra-repo project dependencies — it is a single-project solution (`SAIF.Framework.Core.sln`) with no `<ProjectReference>` elements. Its dependency landscape combines two internal NuGet packages (`SAIF.HashUtil`, `SAIF.Web.API.Clients` — both confirmed on the SAIFNuget feed, though neither is indexed by the Legends CLI) with a set of external packages: a DI container, a validation framework, WCF/AD compatibility shims, and OpenTelemetry instrumentation. As the root of the SAIF.Framework.* family, it makes outbound calls to several external WCF/REST/LDAP back ends on behalf of the platform services it implements.

## Internal dependencies

No intra-repo project references were found. `SAIF.Framework.Core.csproj` declares no `<ProjectReference>` elements, and `SAIF.Framework.Core.sln` builds only this single project. Two internal NuGet packages are consumed via `<PackageReference>`, however — both confirmed on the SAIFNuget feed (`legends nuget exists`, exit 0, `exists: true`) but not present in the Legends CLI documentation index, so no inherited/transitive content is available for either one.

| Dependency | Reference Type | Usage |
| --- | --- | --- |
| `SAIF.HashUtil` | NuGet Package | Consumed via `SystemHashUtil.cs` (`Services.Common\SystemHashUtil.cs`); produced by a separate SAIF repository not analyzed in this run |
| `SAIF.Web.API.Clients` | NuGet Package | Provides `JsonHttpClient`, `ClientInfo` consumed throughout (`EnvironmentServiceBase`, `SecurityApiClient`, `WindowsEnvironmentService`); produced by a separate SAIF repository not analyzed in this run |

## External dependencies

| Dependency | Version | Usage |
| --- | --- | --- |
| `Autofac` | `[3.5.2,)` (per `.nuspec`) | DI container consumed directly by `ServiceRegistrations` and `ValidatorFactory` |
| `FluentValidation` | Not pinned in `.nuspec`* | Validation framework consumed by `FluentValidationService`, `ValidatorFactory`, `FaxService.FaxConfigValidator` |
| `Grpc.Core` | `[2.44.0]` (pinned) | gRPC runtime |
| `log4net` | Not pinned in `.nuspec`* | Logging sink implementation consumed by `LogService` |
| `System.Runtime.InteropServices.RuntimeInformation` | Not pinned in `.nuspec`* | .NET BCL compatibility package |
| `OpenTelemetry.Exporter.OpenTelemetryProtocol` | Not pinned in `.nuspec`* | OTLP tracing/metrics wiring in `Services\OpenTelemetry\OpenTelemetryExtensions.cs` |
| `OpenTelemetry.Instrumentation.AspNet` | Not pinned in `.nuspec`* | OTLP tracing/metrics wiring in `Services\OpenTelemetry\OpenTelemetryExtensions.cs` |
| `OpenTelemetry.Instrumentation.Http` | Not pinned in `.nuspec`* | OTLP tracing/metrics wiring in `Services\OpenTelemetry\OpenTelemetryExtensions.cs` |
| `OpenTelemetry.Instrumentation.Runtime` | Not pinned in `.nuspec`* | OTLP tracing/metrics wiring; also consumed in `EnvironmentServiceBase` (`ActivitySource`) |
| `System.Configuration.ConfigurationManager` | Not pinned in `.nuspec`* | .NET compat shim backing `ConfigurationManager.AppSettings` usage |
| `System.DirectoryServices` | Not pinned in `.nuspec`* | Backing `ADService`'s AD group-membership queries |
| `System.DirectoryServices.AccountManagement` | Not pinned in `.nuspec`* | Backing `ADService`'s AD group-membership queries |
| `System.ServiceModel.Primitives` | Not pinned in `.nuspec`* | WCF compat shim backing all `Services.WCF.*` contracts/clients |
| `System.Xml.XDocument` | Not pinned in `.nuspec`* | Backing `PropertiesFileUtilities` XML-file reads |

## API dependencies

This library implements platform services that call outbound WCF/REST/LDAP endpoints on behalf of consumers.

| Endpoint | Method | Called from | Usage |
| --- | --- | --- | --- |
| WCF `SecurityService` (`securityServiceUrl`) | `IsAuthorized`, `IsAuthorized2`, `GetUser`, `GetSaifUserByUserId`, `GetUserIdForEmployeeId`, `GetSaifUserByEmployeeId`, `GetExternalUser`, `GetExternalUserByCustomerId`, `GetInjuredWorkerUserByCustomerId`, `GetUsersByGroup` | `SecurityServiceClient` (internal), invoked via `SecurityGroupService`, `SystemUserProfile` | Resource/role authorization checks and AD-group membership queries fronted through `BasicHttpBinding` |
| REST Security API (`SecurityClient.ServiceUrl`) | `GET /v1/Users/GetUser/{domain}/{username}` | `SecurityApiClient.GetUser` | Retrieve a user profile from the REST-based Security API |
| REST Security API (`SecurityClient.ServiceUrl`) | `GET /v1/Users/IsAuthorized/{domain}/{username}/{role}` | `SecurityApiClient.IsAuthorized` | Role/resource authorization check via the REST-based Security API |
| Legacy ASMX Active Directory service | `HasAccess` → `HasAccessCache`/`HasAccessCacheExternal`, `GetDefaultPrinter`, `GetContact` → `GetUserInfo` | `ActiveDirectoryServiceProxy` (legacy, no in-repo caller found — likely dead code)* | Legacy AD group/resource membership and directory lookups |
| Environment API (`{EnvironmentApiUrl}/v2/settings/{ApplicationId}/{ApplicationHost}/{section}/section`) | `GetGlobalConfigSettings` / `LoadSection` (`WebClient.DownloadString`) | `EnvironmentServiceBase` | Fetches configuration sections and global settings to populate the in-memory `Configurations` cache |
| Environment API (`{EnvironmentApiUrl}/v2/secureSetting/{applicationId}/{track}/{section}/{key}/value`) | `GetSecureConfigSetting` (via `JsonHttpClient`) | `EnvironmentServiceBase` | Retrieves encrypted/credential settings, cached in `SecureSettingCache` |
| Legacy `DbConnectionServiceProxy` (`dbConnectionServiceUrl`) | `GetOracleConnectionString`, `GetSqlServerConnectionString` (proxy calls) | `DbConnectionManager` | Resolves live Oracle/SQL Server connection strings from an instance/server name indirection |
| WCF/SOAP document endpoints (`documentGeneratorServiceUrl`, `faxServiceUrl`, `fileServiceUrl`, `imagingServiceUrl`, `pdfServiceUrl`, `preferenceServiceUrl`, `uc4coreapi.url`, `workCalendarServiceUrl`) | Various (service-specific) | `DocumentService`, `FaxService`, `FileService`, `ImagingService`, `PDFService`, `PreferenceService`, `UC4Service`, `WorkCalendarService` | Each concrete platform service fronts its own WCF/SOAP endpoint resolved via `IEnvironmentService.GetConfigSetting` |
| REST logging API (`tracingdefaults.loggingapiurl`, `tracingdefaults.logerrorroute`) | POST (via `RestApiAppender`) | `LogService`, `log4netAppenders.RestApiAppender` | Posts application log entries to a REST-based centralized logging sink |

## Dependency risks and notes
- `SAIF.Common` (`EntityBase<TEntity>`, `IDataEntity`, `Enforce`, `LongSequence`, `Extensions.*`) is used pervasively throughout this library but has **no confirmed `<PackageReference>`/`<ProjectReference>`** in `SAIF.Framework.Core.csproj` or its `.nuspec` `<dependencies>` — presumed transitive through `SAIF.HashUtil` or `SAIF.Web.API.Clients` (both confirmed internal NuGet packages on the SAIFNuget feed, but neither is indexed by the Legends CLI, so their own dependency graphs remain unknown**), and this transitive path is unconfirmed.* This is an open risk for downstream dependency-graph accuracy.
- `SaifValidationException` (thrown by `FluentValidationService.ValidateAndThrow<T>`) is not defined anywhere in this project's `Exceptions\*` folder — likely defined in the same unresolved `SAIF.Common`-family dependency.*
- `SAIF.HashUtil` and `SAIF.Web.API.Clients` are confirmed internal NuGet packages on the SAIFNuget feed (`legends nuget exists`, both `exists: true`; declared `<PackageReference>`s with explicit `.nuspec` version ranges `[2,3)`), but neither is indexed by the Legends CLI, and both are produced by separate SAIF repositories not analyzed in this run — their own transitive dependency graphs remain unknown.**
- The generic `IUnitOfWork`/`IRepository<TEntity>` data-access abstraction has no production implementation shipped in this library (only an in-memory `TestRepository`/`TestUnitOfWork` test double) — consumers or other Framework4 libraries must supply the real implementation, which is an implicit dependency-graph gap for any consumer relying on this library alone for data access.
- `PropertiesFileUtilities.GetValue` (backed by `System.Xml.XDocument`) has no internal call sites in this library — it is a declared-but-unused public utility retained for consuming web applications.*
- The legacy ASMX `ActiveDirectoryServiceProxy` dependency path has no in-repo caller and is flagged as likely-dead legacy code, not an active runtime dependency.*
- `nuget.config` is present at the repository root but its `repositoryPath`/custom sources were not inspected during analysis — flagged as an open question for source verification.**

## 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)
- [Security and authorization](security-authorization.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
- `Core\SAIF.Core\SAIF.Framework.Core.csproj`
- `Core\SAIF.Core\SAIF.Framework.Core.nuspec`
- `Core\SAIF.Core\app.config`
- `Core\SAIF.Core\Services.Common\SystemHashUtil.cs`
- `Core\SAIF.Core\Services.Common\EnvironmentServiceBase.cs`
- `Core\SAIF.Core\Services.Common\DbConnectionManager.cs`
- `Core\SAIF.Core\Services.Common\WindowsEnvironmentService.cs`
- `Core\SAIF.Core\Services\ClientProxies\SecurityServiceClient.cs`
- `Core\SAIF.Core\Services\ClientProxies\Legacy\ActiveDirectoryServiceProxy.cs`
- `Core\SAIF.Core\Services\Utilities\SecurityApiClient.cs`
- `Core\SAIF.Core\Services\Utilities\FluentValidationService.cs`
- `Core\SAIF.Core\Services\Utilities\LogService.cs`
- `Core\SAIF.Core\Services\Utilities\Documents\DocumentService.cs`
- `Core\SAIF.Core\Services\Utilities\Documents\FaxService.cs`
- `Core\SAIF.Core\Services\Utilities\Documents\PdfConvertAndMergeService.cs`
- `Core\SAIF.Core\Services\Utilities\Documents\ImagingService.cs`
- `Core\SAIF.Core\Services\Utilities\Documents\PDFService.cs`
- `Core\SAIF.Core\Services\Utilities\Documents\PrintService.cs`
- `Core\SAIF.Core\Services\Utilities\FileService.cs`
- `Core\SAIF.Core\Services\Utilities\PreferenceService.cs`
- `Core\SAIF.Core\Services\Utilities\UC4Service.cs`
- `Core\SAIF.Core\Services\Utilities\WorkCalendarService.cs`
- `Core\SAIF.Core\Services.WCF\Contracts\ISecurityService.cs`
- `Core\SAIF.Core\Services.WCF\ClientProxies\DisposableClientBase.cs`
