---
title: clsMenuSecurity
summary: API reference for clsMenuSecurity.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Business.Menu
reference_type: package
---

# clsMenuSecurity

Represents one security grant (`MENU_SECURITY`) — a single security-group name authorized to access one specific `clsMenuItem`. This is the row read (and tested for absence) by the authorization projection's group-granted and unsecured branches ([BR-MENU-002](../../business-rules.md#br-menu-002-group-granted-authorization), [BR-MENU-004](../../business-rules.md#br-menu-004-unsecured-items-open-to-all)).

## Purpose
- Owns the identity of one item-to-security-group grant, persisted to [MENU_SECURITY](../../database-tables.md#menu_security).
- Supplies the `SecurityGroup` value matched case-insensitively against `MENU_SECURITY_USER` membership ([BR-MENU-003](../../business-rules.md#br-menu-003-case-insensitive-group-matching)).

## Context
- Namespace: `SAIF.Business.Menu`
- Assembly/package: `SAIF.Business.Menu` (`SAIF.BOF.Presentation.Web.Infragistics111` NuGet package)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| MenuSecuritySeqNum | `Property MenuSecuritySeqNum As Decimal` | Server-assigned surrogate key from the `MENU_SECURITY_SEQ` sequence ([BR-MENU-014](../../business-rules.md#br-menu-014-sequence-assigned-identity)). |
| MenuItemSeqNum | `Property MenuItemSeqNum As Decimal` | Foreign key to the secured `clsMenuItem`. |
| SecurityGroup | `Property SecurityGroup As String` | The security-group name granted access; matched case-insensitively during authorization resolution ([BR-MENU-002](../../business-rules.md#br-menu-002-group-granted-authorization), [BR-MENU-003](../../business-rules.md#br-menu-003-case-insensitive-group-matching)). |
| NewMenuSecurity | `Shared Function NewMenuSecurity(dpi As IDataPortalInfo) As clsMenuSecurity` | Factory that creates a new grant ready for `Save`; the key is server-assigned on insert ([BR-MENU-014](../../business-rules.md#br-menu-014-sequence-assigned-identity)). |
| GetMenuSecurity | `Shared Function GetMenuSecurity(dpi As IDataPortalInfo, menuSecuritySeqNum As Decimal) As clsMenuSecurity` | Factory that retrieves one grant by its key ([SQL-026](../../sql/SQL-026-retrieve-menu-security-by-seq.md)). |
| Save | `Sub Save()` | Persists the object via insert or update depending on new/dirty state ([BR-MENU-016](../../business-rules.md#br-menu-016-audit-stamp-on-insert-and-update), [BR-MENU-018](../../business-rules.md#br-menu-018-save-only-when-dirty)). |
| Delete | `Sub Delete()` | Removes the row and returns the object to a new, unsaved state ([BR-MENU-022](../../business-rules.md#br-menu-022-delete-returns-object-to-new-state)); once removed the item reverts to unsecured for every user ([BR-MENU-004](../../business-rules.md#br-menu-004-unsecured-items-open-to-all)). |

## Inherited public members

Members in this section are inherited from `clsBusinessBase` in `SAIF.Framework.Core` (delivered by the `SAIF.BOF.Framework` package). They are available on this type through inheritance.

| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| Rules | `ReadOnly Property Rules As clsRulesManager` | Exposes the object's rule manager, used to register and evaluate validation rules.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| BeginEdit | `Sub BeginEdit()` | Begins an editable transaction on the object, snapshotting current state for a later cancel.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| CancelEdit | `Sub CancelEdit()` | Reverts the object to the state captured by the most recent `BeginEdit`.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| ApplyEdit | `Sub ApplyEdit()` | Commits the in-progress edit, discarding the `BeginEdit` snapshot.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| SetPreviousLink | `Sub SetPreviousLink(item As ILinkItem)` | Sets the previous node in a doubly linked list of business objects.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| SetNextLink | `Sub SetNextLink(item As ILinkItem)` | Sets the next node in a doubly linked list of business objects.† | `SAIF.Framework.Core` — `clsBusinessBase` |
| InsertLinkAfter | `Sub InsertLinkAfter(item As ILinkItem)` | Inserts the given item immediately after this object in a linked sequence.† | `SAIF.Framework.Core` — `clsBusinessBase` |

## 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)
- [API reference](../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 `†` were retrieved from dependency library documentation via the Legends CLI RAG service. They describe inherited behavior from the indicated origin library and should be verified if the dependency version changes.

## Sources
- SAIF.Business.Menu/clsMenuSecurity.vb
