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

# clsMenuSecurityUserCollection

A collection of `clsMenuSecurityUser` memberships, either the full set or scoped to one user; backs group-membership administration ([OP-MENU-09](../../operations/op-menu-09-load-user-group-memberships.md)).

## Purpose
- Loads and holds group memberships, optionally scoped by `MenuUser` ([BR-MENU-001](../../business-rules.md#br-menu-001-scoped-vs-unfiltered-retrieval)).

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

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| NewMenuSecurityUser | `Shared Function NewMenuSecurityUser(dpi As IDataPortalInfo) As clsMenuSecurityUserCollection` | Factory that creates an empty, unmanaged collection ready to hold new memberships. |
| GetMenuSecurityUserForUser | `Shared Function GetMenuSecurityUserForUser(dpi As IDataPortalInfo, menuUser As String) As clsMenuSecurityUserCollection` | Loads the group memberships for one user ([BR-MENU-001](../../business-rules.md#br-menu-001-scoped-vs-unfiltered-retrieval), [SQL-030](../../sql/SQL-030-retrieve-menu-security-users-for-user.md))*. |
| GetMenuSecurityUserAll | `Shared Function GetMenuSecurityUserAll(dpi As IDataPortalInfo) As clsMenuSecurityUserCollection` | Loads every group membership row ([SQL-029](../../sql/SQL-029-retrieve-all-menu-security-users.md)). |

## Inherited public members

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

| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| First | `Sub First()` | Moves the collection's current-item cursor to the first element (`ITraversion`).† | `SAIF.Framework.Core` — `clsBusinessCollectionBase` |
| Last | `Sub Last()` | Moves the cursor to the last element (`ITraversion`).† | `SAIF.Framework.Core` — `clsBusinessCollectionBase` |
| Next | `Sub Next()` | Advances the cursor to the next element (`ITraversion`).† | `SAIF.Framework.Core` — `clsBusinessCollectionBase` |
| Previous | `Sub Previous()` | Moves the cursor to the previous element (`ITraversion`).† | `SAIF.Framework.Core` — `clsBusinessCollectionBase` |
| SetCurrent | `Sub SetCurrent(item As Object)` | Sets the cursor to the given item (`ITraversion`).† | `SAIF.Framework.Core` — `clsBusinessCollectionBase` |
| Traverse | `Sub Traverse(...)` | Iterates the collection, applying a traversal callback to each element (`ITraversion`).† | `SAIF.Framework.Core` — `clsBusinessCollectionBase` |
| Error | `ReadOnly Property Error As String` | Aggregated validation error message for the collection (`IDataErrorInfo`).† | `SAIF.Framework.Core` — `clsBusinessCollectionBase` |
| Item(columnName) | `ReadOnly Property Item(columnName As String) As String` | Per-column validation error message (`IDataErrorInfo`).† | `SAIF.Framework.Core` — `clsBusinessCollectionBase` |

## Behavioral notes
- `GetMenuSecurityUserForUser`'s underlying `BeforeRetrieve` branch condition is inverted relative to the sibling collections, so passing a `MenuUser` value selects the unfiltered all-users statement and omitting it selects the user-scoped statement — the opposite of the pattern documented by [BR-MENU-001](../../business-rules.md#br-menu-001-scoped-vs-unfiltered-retrieval) for the other collections*.

## 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/clsMenuSecurityUserCollection.vb
