---
title: SAIF.Business.Menu dependencies
summary: Internal and external dependencies for this library.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Business.Menu
reference_type: package
---

# SAIF.Business.Menu dependencies

## Internal dependencies

| Dependency | Reference Type | Usage |
| --- | --- | --- |
| SAIF.Business | Project Reference | `SAIF.Business.clsConstants` (aliased `BOC`) supplies `CreateSQL`/`RetrieveSQL`/`InsertSQL`/`UpdateSQL`/`DeleteSQL` request IDs and `Messages.DBContentionError` / `Messages.InvalidSQLProperty`. Declared twice in the project file (duplicate `<ProjectReference>` with the same GUID)* |
| SAIF.ResourceFiles | Project Reference | Declared reference; no direct type usage found in this library's live source** |
| SAIF.Framework | NuGet Package | Assembly reference (from `SAIF.BOF.Framework` package, 1.0.21217.2) supplying `clsBusinessBase`, `clsBusinessCollection(Of T)`, `IBusinessCriteria`, `IDataPortalInfo`, `IPortalRequest`, `IDataRequest`, `DataRequestType`, `clsSAIFDataReader`, `clsSmartString` |
| SAIF.Framework.Preferences | NuGet Package | Supplied alongside `SAIF.Framework` by the `SAIF.BOF.Framework` package; not directly used by this library's own code |
| SAIF.Framework.Common | NuGet Package | Assembly reference (1.0.18145.1); no direct type usage in live source** |
| SAIF.HashUtil | NuGet Package | Assembly reference (1.0.18067.1); no direct type usage in live source** |
| SAIF.Web.API.Clients | NuGet Package | Assembly reference (1.0.21215.2); no direct type usage in live source** |

`SAIF.Business` and `SAIF.ResourceFiles` do not have a documentation set in this run and are therefore listed as plain text rather than linked.

## External dependencies
| Dependency | Version | Usage |
| --- | --- | --- |
| Newtonsoft.Json | 8.0.3 | Binding redirect in `app.config`; no direct usage in live source** |
| RestSharp | 105.2.3 | Assembly reference; no direct usage in live source** |

## 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 |
| --- | --- | --- | --- |
| `IDataAccess.CreateObject` / `RetrieveObject` criteria-based data-portal operations | `SAIF.Framework.Core` | Transitive | `IBusinessCriteria`/`IBusinessApiCriteria` instances with populated `DataPortalInfo` drive the framework's create/retrieve pipeline that every business object and collection in this library relies on† |

## Dependency risks and notes
- Every business object and collection in this library inherits from a `SAIF.Framework` base type; a breaking change to `clsBusinessBase`, `clsBusinessCollection(Of T)`, or `IBusinessCriteria` in the `SAIF.BOF.Framework` package would affect all 16 classes in this library simultaneously.
- `SAIF.Business` and `SAIF.ResourceFiles` are **not** among the nine libraries packaged by the root nuspec, so this library's compile-time project graph extends beyond the package's own declared source set.*
- The nuspec declares dependencies only on `SAIF.BOF.Framework`, `SAIF.Framework.Common`, and `SAIF.HashUtil`; it omits `SAIF.Web.API.Clients`, `Newtonsoft.Json`, `RestSharp`, and the project references `SAIF.Business`/`SAIF.ResourceFiles` (the latter two are not packaged at all). Consumers relying on the packaged source would need to supply these themselves.*
- `SAIF.ResourceFiles`, `SAIF.HashUtil`, `SAIF.Web.API.Clients`, `Newtonsoft.Json`, and `RestSharp` are referenced but unused in this library's live source; they may be vestigial or required only transitively at runtime.**
- Database connectivity is entirely externalized: the caller supplies an `IDataPortalInfo` that already carries connection/portal configuration and the acting user ID. In the packaged set, `SAIF.Presentation.Web.MVC`'s `NavigationContext` builds that DPI from `clsMSOracleDataLayer` with DB user `MENU`.
- This library defines and evaluates the menu authorization model consumed by [SAIF.Presentation.Web.MVC](../saif-presentation-web-mvc/overview.md); a defect or schema change here (e.g. the mismatched read/write columns noted for `clsMenuSecurityUser`) directly affects page-level authorization decisions upstream.*

## Inherited framework context (from Legends CLI)

The following content is retrieved from `SAIF.Framework.Core`'s own documentation via the Legends CLI RAG service, resolving the `IBusinessCriteria` framework interface detected in this run's library density scan (`frameworkDensity=1`). Every business object and collection in this library implements a nested `Criteria` class against this contract.

### API

The confirmed public surface of `IBusinessCriteria` documented against `SAIF.Framework.Core` includes the following properties†:

- `CreateSQL`†
- `RetrieveSQL`†
- `InsertSQL`†
- `UpdateSQL`†
- `DeleteSQL`†
- `DataPortalInfo` (observed on nested `Criteria` implementations)†

### Business rules

No `IBusinessCriteria`-specific business rules are documented in `SAIF.Framework.Core`; business objects route requests through framework mechanisms such as `IDataPortalInfo.ApiClients` / `DataApiAccessLayer`, and rule enforcement is owned by the consuming business object rather than by the criteria contract itself.†

### Operations and processes

- **Create business object from criteria** — uses an `IBusinessCriteria` or `IBusinessApiCriteria` instance with populated `DataPortalInfo`, exposed as `IDataAccess.CreateObject(criteria)`.†
- **Retrieve business object from criteria** — uses an `IBusinessCriteria` or `IBusinessApiCriteria` instance with populated `DataPortalInfo`, exposed as `IDataAccess.RetrieveObject(criteria)`.†

### Dependencies

- `IBusinessCriteria` defines the CRUD and retrieval contract implemented by package-backed criteria classes, and is used by business-layer and data-portal code across the framework.†
- `SAIF.Framework.Core` documentation notes that changes to `IBusinessCriteria` are risky because they can affect both SQL and API access paths.†
- API and SQL business objects share the same `IBusinessCriteria` / `IBusinessApiCriteria` hierarchy within `SAIF.BOF.Framework`.†

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Database tables](database-tables.md)
- [SQL catalog](sql/index.md)
- [Security and authorization](security-authorization.md)
- [API reference](api/index.md)

> **Note:** Statements marked with `†` are derived from dependency library documentation via the Legends CLI. Statements marked with `*` were inferred from code structure or contextual evidence. Statements marked with `**` could not be confirmed; treat as unknown until verified.

## Sources
- SAIF.Business.Menu/SAIF.Business.Menu.vbproj
- SAIF.Business.Menu/packages.config
- SAIF.Business.Menu/app.config
- SAIF.BOF.Presentation.Web.Infragistics111.nuspec
