---
title: "SQL-016: Retrieve authorized menu items for all users"
summary: Retrieve authorized menu items for all users
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-08-17
library: SAIF.Business.Menu
reference_type: package
---

# SQL-016: Retrieve authorized menu items for all users

This statement is the `RetrieveAllSQL` implementation of `clsMenuAuthorizedItemCollection.Criteria`, executed from `BeforeRetrieve` against `MENU_ITEM`, `MENU_SECURITY`, `MENU_SECURITY_USER`, `MENU_PAGE`, `BUSONLINE_APPS_CODE`, `MENU_CATEGORY_CODE`. Retrieve authorized menu items for all users.

## Classification

| Field | Value |
| --- | --- |
| **SQL ID** | SQL-016 |
| **Operation type** | Read |
| **Execution method** | StringBuilder-assembled |
| **Database** | Oracle |
| **Schema** | `[unqualified]`** |
| **Command type** | Text |
| **Business object** | `clsMenuAuthorizedItemCollection` |
| **Criteria property** | `RetrieveAllSQL` |
| **Lifecycle method** | `BeforeRetrieve` |

## Parameters

This statement takes no bind parameters.

## Tables

| Table | Access | Columns used |
| --- | --- | --- |
| [MENU_ITEM](../database-tables.md#menu_item) | SELECT | MENU_ITEM_SEQ_NUM, PAGE_ORDER_NUM, MENU_CATEGORY_CODE, TOOL_TIP_TXT, VISIBLE_FLAG |
| [MENU_SECURITY](../database-tables.md#menu_security) | SELECT / JOIN | MENU_ITEM_SEQ_NUM, SECURITY_GROUP_TXT (join / NOT EXISTS) |
| [MENU_SECURITY_USER](../database-tables.md#menu_security_user) | SELECT / JOIN | MENU_USER, SECURITY_GROUP_TXT, MENU_USER_EMPLID |
| [MENU_PAGE](../database-tables.md#menu_page) | SELECT / JOIN | MENU_PAGE_SEQ_NUM, PAGE_NAME, PAGE_LINK_TXT, APPLICATION_CODE, toolbar flags/tips |
| [BUSONLINE_APPS_CODE](../database-tables.md#busonline_apps_code) | SELECT / JOIN | CODE, CODE_DESCR (application path) |
| [MENU_CATEGORY_CODE](../database-tables.md#menu_category_code) | SELECT / JOIN | CODE, CODE_DESCR (category) |

## Sample SQL

```sql
-- Retrieve authorized menu items for all users
SELECT DISTINCT
  ITM.MENU_ITEM_SEQ_NUM AS MenuItemSeqNum,
  USR.MENU_USER AS MenuUser,
  ITM.PAGE_ORDER_NUM AS MenuOrder,
  'N' AS FavoriteFlag,
  USR.MENU_USER_EMPLID AS MenuUserEmplid,
  ITM.MENU_CATEGORY_CODE AS MenuCategoryCode,
  CAT.CODE_DESCR AS Category,
  ITM.TOOL_TIP_TXT AS ToolTip,
  ITM.VISIBLE_FLAG AS VisibleFlag,
  PAG.MENU_PAGE_SEQ_NUM AS MenuPageSeqNum,
  PAG.PAGE_NAME AS PageName,
  PAG.PAGE_LINK_TXT AS PageLink,
  PAG.APPLICATION_CODE AS ApplicationCode,
  APP.CODE_DESCR AS ApplicationPath,
  PAG.FAVORITE_NAME AS FavoriteName,
  PAG.SAVE_PREFERENCES_FLAG AS SavePreferencesFlag,
  PAG.PRINT_FLAG AS PrintFlag,
  PAG.DOWNLOAD_FLAG AS DownloadFlag,
  PAG.HELP_FLAG AS HelpFlag,
  PAG.SAVE_FLAG AS SaveFlag,
  PAG.INSERT_FLAG AS InsertFlag,
  PAG.DELETE_FLAG AS DeleteFlag,
  PAG.PRINT_TIP_TXT AS PrintTip,
  PAG.DOWNLOAD_TIP_TXT AS DownloadTip,
  PAG.SAVE_TOOLTIP_TXT AS SaveTip,
  PAG.DELETE_TOOLTIP_TXT AS DeleteTip,
  PAG.INSERT_TOOLTIP_TXT AS InsertTip,
  'N' as UnsecuredFlag
FROM
  menu_item itm,
  menu_security sec,
  menu_security_user usr,
  MENU_PAGE PAG,
  BUSONLINE_APPS_CODE app,
  MENU_CATEGORY_CODE cat
WHERE
  SEC.MENU_ITEM_SEQ_NUM = ITM.MENU_ITEM_SEQ_NUM
  AND PAG.MENU_PAGE_SEQ_NUM = ITM.MENU_PAGE_SEQ_NUM
  AND APP.CODE = PAG.APPLICATION_CODE
  AND CAT.CODE = ITM.MENU_CATEGORY_CODE
  AND upper(USR.SECURITY_GROUP_TXT) = upper(SEC.SECURITY_GROUP_TXT)
UNION
SELECT
  ITM.MENU_ITEM_SEQ_NUM AS MenuItemSeqNum,
  'UNSECURED' AS MenuUser,
  ITM.PAGE_ORDER_NUM AS MenuOrder,
  'N' AS FavoriteFlag,
  NULL AS MenuUserEmplid,
  ITM.MENU_CATEGORY_CODE AS MenuCategoryCode,
  CAT.CODE_DESCR AS Category,
  ITM.TOOL_TIP_TXT AS ToolTip,
  ITM.VISIBLE_FLAG AS VisibleFlag,
  PAG.MENU_PAGE_SEQ_NUM AS MenuPageSeqNum,
  PAG.PAGE_NAME AS PageName,
  PAG.PAGE_LINK_TXT AS PageLink,
  PAG.APPLICATION_CODE AS ApplicationCode,
  APP.CODE_DESCR AS ApplicationPath,
  PAG.FAVORITE_NAME AS FavoriteName,
  PAG.SAVE_PREFERENCES_FLAG AS SavePreferencesFlag,
  PAG.PRINT_FLAG AS PrintFlag,
  PAG.DOWNLOAD_FLAG AS DownloadFlag,
  PAG.HELP_FLAG AS HelpFlag,
  PAG.SAVE_FLAG AS SaveFlag,
  PAG.INSERT_FLAG AS InsertFlag,
  PAG.DELETE_FLAG AS DeleteFlag,
  PAG.PRINT_TIP_TXT AS PrintTip,
  PAG.DOWNLOAD_TIP_TXT AS DownloadTip,
  PAG.SAVE_TOOLTIP_TXT AS SaveTip,
  PAG.DELETE_TOOLTIP_TXT AS DeleteTip,
  PAG.INSERT_TOOLTIP_TXT AS InsertTip,
  'Y' as UnsecuredFlag
FROM
  menu_item itm,
  MENU_PAGE PAG,
  BUSONLINE_APPS_CODE app,
  MENU_CATEGORY_CODE cat
WHERE
  PAG.MENU_PAGE_SEQ_NUM = ITM.MENU_PAGE_SEQ_NUM
  AND APP.CODE = PAG.APPLICATION_CODE
  AND CAT.CODE = ITM.MENU_CATEGORY_CODE
  AND NOT EXISTS (SELECT 1 FROM menu_security SEC
                  WHERE SEC.MENU_ITEM_SEQ_NUM = ITM.MENU_ITEM_SEQ_NUM)
```

## Operations and processes

- [Resolve a user's authorized menu items](../operations/op-menu-01-resolve-authorized-menu-items.md)

## Business rules

- [BR-MENU-001](../business-rules.md#br-menu-001-scoped-vs-unfiltered-retrieval): Scoped vs. unfiltered retrieval
- [BR-MENU-002](../business-rules.md#br-menu-002-group-granted-authorization): Group-granted authorization
- [BR-MENU-003](../business-rules.md#br-menu-003-case-insensitive-group-matching): Case-insensitive group matching
- [BR-MENU-004](../business-rules.md#br-menu-004-unsecured-items-open-to-all): Unsecured items open to all
- [BR-MENU-025](../business-rules.md#br-menu-025-unsecured-pseudo-user-membership): UNSECURED pseudo-user membership

> **Note:** Statements marked with `**` could not be confirmed; treat as unknown until verified.

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