Menus
A Menu in the Application Object Tree (AOT) defines a navigational grouping of menu items, sub-menus, menu references, and tiles. Menus are the metadata objects that drive the module navigation in Dynamics 365 Finance & Operations — the navigation pane on the left side of the web client, the module workspaces, and the hierarchical menu structure users interact with to reach forms, reports, and batch processes.
Each top-level module in D365 F&O (e.g., Accounts Payable, General Ledger, Inventory Management) corresponds to an AOT Menu object. The child elements within the menu define the structure and order of links that appear in the navigation pane, grouped into logical sections via sub-menus.
How AOT Menus Map to the Navigation UI
The D365 F&O web client renders the navigation pane from AOT Menu objects. The mapping is:
| AOT Object | UI Representation |
|---|---|
| Menu (top-level) | A module in the navigation pane (e.g., "Accounts payable") |
Sub-menu (AxMenuElementSubMenu) | A grouping header within the module's navigation tree (e.g., "Invoices", "Setup") |
Menu item reference (AxMenuElementMenuItem) | A clickable link that opens a form, runs a class, or launches a report |
Menu reference (AxMenuElementMenuReference) | An inline reference to another Menu object — its elements are merged into the parent at the reference point |
Tile (AxMenuElementTile) | A workspace tile that appears in the module's default workspace |
When a user clicks a module in the navigation pane, the framework reads the corresponding Menu object and renders its element tree as a hierarchical list of links. Sub-menus become collapsible sections, and menu item references become the actual navigation links.
The navigation pane in D365 F&O is entirely metadata-driven. To add a new link to a module's navigation, you create a Menu Extension that adds menu item references to the target menu — you never modify the base menu directly.
Menu Structure
A Menu contains an ordered collection of elements. Each element is one of four concrete types, all inheriting from the abstract AxMenuElement base:
Menu Item Reference (AxMenuElementMenuItem)
The most common element type. It points to an existing Menu Item (Display, Output, or Action) by name and type. When the user clicks the link, the framework locates the referenced menu item and executes it — opening a form, running a report, or launching a class.
Key properties include MenuItemName (which menu item to execute), MenuItemType (Display, Output, or Action), and Parameters (additional parameter string passed through Args).
Sub-menu (AxMenuElementSubMenu)
A container that groups child elements under a labelled heading. Sub-menus can be nested and can themselves contain menu item references, menu references, tiles, and further sub-menus. In the navigation pane, they render as collapsible sections.
Sub-menus optionally carry their own MenuItemName and MenuItemType properties — when set, clicking the sub-menu heading itself navigates to a form (typically a workspace or list page for that group).
Menu Reference (AxMenuElementMenuReference)
A reference to another AOT Menu object. The referenced menu's elements are inserted inline at the reference point, effectively embedding one menu inside another. This is useful for sharing a common set of links (e.g., shared report menus) across multiple modules.
Tile (AxMenuElementTile)
A reference to an AOT Tile object. Tiles display a count or KPI and link to a form. They appear in the module's default workspace rather than in the navigation tree.
Menu Extensions
To add, remove, or reposition elements in a standard menu without overlayering, use a Menu Extension (AxMenuExtension). A menu extension targets an existing base menu and contains:
- Elements (
AxMenuExtensionElement) — new menu item references, sub-menus, or tiles to insert. Each extension element specifies aParent(which sub-menu to insert into), aPositionType(Begin, End, or AfterItem), and optionally aPreviousSiblingto control exact placement. - Customizations (
AxMenuCustomizationElement) — modifications to existing elements in the base menu (e.g., hiding a standard link by settingVisibleto No). - Property Modifications — changes to the menu's own top-level properties (e.g., changing the Label).
Menu extensions are the only supported way to modify standard menus in D365 F&O. Direct overlayering of Menu objects is not permitted in the extension model.