12.3 Workspaces, Tiles, Lists & KPIs

Key Takeaways

  • Operational Workspaces follow the 'Workspace: Operational' form pattern, organized into three standardized horizontal panorama sections: the Summary Section (tiles and KPIs), the Tabbed Lists Section (actionable grids with contextual commands), and the Links Section (navigational shortcuts).
  • Workspace tiles come in distinct functional types: standard Count Tiles (displaying live or cached record tallies from AOT queries), Summation Tiles (aggregating numeric values), Link Tiles (direct navigation without counts), and KPI Tiles (visualizing business metrics).
  • Clicking a count or KPI tile executes drill-through navigation via its configured Menu Item, opening an inquiry or master form pre-filtered with the exact query criteria that generated the tile metric.
  • To prevent severe workspace loading delays and AOS thread exhaustion, tile queries are evaluated asynchronously by the TileDataService and benefit from count caching, avoiding synchronous blocking of the primary user interface.
  • Workspace performance optimization mandates that tile and list queries avoid unindexed status fields, non-clustered cross-company full table scans, and complex Cartesian outer joins, while list form parts must support lazy loading.
Last updated: September 2026

12.3 Workspaces, Tiles, Lists & KPIs

Quick Answer: Operational Workspaces in Dynamics 365 Finance and Operations provide role-tailored, 360-degree operational hubs based on the Workspace: Operational form pattern. A workspace is organized into three standard panorama sections: the Summary Section (Count Tiles, Summation Tiles, KPI Tiles, and Link Tiles), the Tabbed Lists Section (Form Part controls embedding actionable grids with contextual buttons), and the Links Section (grouped navigational shortcuts). Clicking a tile triggers drill-through navigation, executing its associated Menu Item to open a pre-filtered inquiry form matching the tile's query. To guarantee fast UI rendering, tile counts execute asynchronously through the TileDataService and leverage count caching, preventing synchronous full table scans on form initialization.


1. Operational Workspace Architecture & Form Patterns

Traditional ERP navigation relies on deep menu trees, forcing users to open multiple disparate forms to complete a single business workflow (e.g., verifying open sales orders, checking credit limits, and dispatching pick lists across separate screens). Operational Workspaces fundamentally reshape user interaction by consolidating all tasks, data views, and metrics required by a specific job role into a unified command center.

The Workspace: Operational Form Pattern

In Visual Studio, developer-authored workspaces are built by applying the Workspace: Operational form pattern to a top-level Form artifact. The pattern enforces a rigid, standardized control hierarchy conforming to Microsoft UX guidelines:

Workspace: Operational Form Control Hierarchy

Design
├── ActionPane (Standard actions, Workspace Refresh)
└── Panorama (Main horizontal scrolling container)
    ├── SectionSummary (Summary Section: Tiles & KPIs)
    │   └── TileButtonContainer (Hosts Tile controls)
    ├── SectionTabbedList (Tabbed Lists Section: Tabular grids)
    │   └── TabControl
    │       ├── TabPageList1 (Hosts FormPartControl -> Form 1)
    │       └── TabPageList2 (Hosts FormPartControl -> Form 2)
    ├── SectionLinks (Links Section: Navigational shortcuts)
    │   └── GroupControl (Grouped navigation links)
    └── SectionAnalytics (Optional: PowerBIReportControl)

2. Workspace Layout Sections & Component Responsibilities

A compliant operational workspace consists of three core sections rendered horizontally across a panoramic layout:

1. Summary Section (Left Panorama)

The Summary Section provides an immediate executive pulse on operational workload using visually prominent tiles. Tiles are defined in the AOT as Tile metadata elements and categorized by their display behavior:

Tile TypeDisplay Property (TileDisplay)Visual OutputBehavioral Characteristics
Count TileTileDisplay::CountLarge numeric integer (e.g., 42) with title label.Executes an underlying AOT Query returning COUNT(RecId). Updates dynamically.
Summation TileTileDisplay::SumAggregated decimal currency/numeric total.Sums a specific field (e.g., total overdue balance) across filtered rows.
KPI TileTileDisplay::KPINumeric metric with trend arrow and colored status.Connects to multidimensional Aggregate Measurements or business logic indicators.
Link TileTileDisplay::StandardStatic graphic icon and label without numbers.Acts as a direct navigation shortcut without incurring query computation overhead.

2. Tabbed Lists Section (Center Panorama)

The Tabbed Lists Section presents dense, actionable tabular data. Users can review records, inspect details, and perform direct business operations without leaving the workspace.

  • Form Part Controls: Rather than duplicating form grids directly on the workspace design, each tab page hosts a FormPartControl. This control references an independent, modular list form (modeled using the FormPattern::List or FormPattern::FormPartSection pattern).
  • In-Context Action Buttons: Grids within list form parts feature dedicated ActionPane buttons (e.g., Confirm Order, Release to Warehouse, Cancel Line), enabling transactional execution immediately upon row selection.

3. Links Section (Right Panorama)

The Links Section organizes secondary navigation paths into structured categories:

  • Fast access to configuration setup forms, complex inquiry forms, periodic batch jobs, and statutory reports.
  • Prevents workspace clutter by keeping routine operational grids in the tabbed lists while preserving access to periodic administrative tasks.

3. Drill-Through Navigation Architecture

Tiles do not merely display numbers; they serve as interactive launch pads. When a user clicks a Count Tile showing 18 Orders on Hold, the system must open the relevant transactional form pre-filtered to show precisely those 18 orders.

Drill-Through Navigation Flow

User clicks Count Tile: 'Orders on Hold (18)'
 │
 ▼
Tile queries AOT Tile Definition
 ├── Query: CustSalesOrdersOnHoldQuery (Range: SalesStatus == Backorder, OnHold == Yes)
 └── MenuItem: SalesTableListPage (Display)
 │
 ▼
AOS runtime instantiates Target Form
 ├── Passes Tile Query ranges via Args object (args.record(), args.parm())
 └── Injects QueryBuildRange into SalesTable_DS root datasource
 │
 ▼
Target Form Opens Filtered
 └── Grid displays exactly the 18 matching records corresponding to the tile count

Developer Configuration Steps for Drill-Through

  1. Author the AOT Query: Create an AOT Query (e.g., CustOrdersOnHoldQuery) with explicit QueryBuildRange filters applied to indexed fields (e.g., SalesTable.Hold == NoYes::Yes).
  2. Create the Menu Item: Create a Display Menu Item pointing to the target inquiry or list form (e.g., SalesTableListPage).
  3. Author the AOT Tile: Create a Tile artifact in Visual Studio. Set:
    • Query = CustOrdersOnHoldQuery
    • MenuItemName = SalesTableListPage
    • TileDisplay = TileDisplay::Count
  4. Embed in Workspace Form: Add a TileButtonControl in the workspace's Summary group, setting its Tile property to the newly created AOT tile.

4. Performance Optimization for Workspace Queries

Workspaces are notorious performance bottlenecks when poorly architected. If a workspace contains 20 count tiles and 5 tabbed lists, executing 25 unindexed, synchronous SQL queries during form initialization will freeze the user interface and exhaust AOS connection pools.

The Asynchronous TileDataService & Count Caching

To eliminate UI blocking, modern Finance and Operations releases execute tile calculations through the TileDataService:

  • Asynchronous Execution: When the workspace loads, the client shell renders immediately. Tile counts are evaluated asynchronously in the background via separate worker threads.
  • Tile Count Caching: Calculated tile counts are cached at the AOS layer with a time-to-live (TTL). When the user opens the workspace, cached counts are served instantly from memory.
  • Manual & Contextual Refresh: Users can click the workspace Refresh button to invalidate cached tallies and force recalculation.

[!WARNING] Real-World Exam Trap: The Tile Caching Delay MB-500 scenario questions frequently ask: "A clerk confirms a sales order, but the 'Unconfirmed Orders' count tile still displays the previous count. Why?" The answer is Tile Count Caching. Tiles do not execute live database triggers on every transactional commit in other sessions; they reflect cached counts until the cache interval expires or the user manually refreshes the workspace.

Query and Indexing Rules for Workspaces

  1. Index Coverage: Every field used in a tile QueryBuildRange must be included in a database index. Ensure the index contains leading partition and DataAreaId fields, followed by status columns.
  2. Avoid Unbounded Cross-Company Queries: Setting AllowCrossCompany = true on tile queries scans tables across all legal entities, causing massive table scans unless strictly partitioned.
  3. Lazy Loading of Tabbed Lists: Configure Form Part controls to load on-demand. The AOS only executes database queries for the active, visible tab page; inactive tabs defer query execution until the user clicks on them.
  4. No Display Methods in Form Part Grids: Placing un-cached X++ display methods on list grids forces row-by-row scalar database lookups, destroying workspace responsiveness.

5. Personalization vs. Developer Workspaces

Dynamics 365 supports two layers of workspace creation:

  • Personalized Workspaces (End Users): Any business user can create a personal workspace via the UI, pinning filtered list pages, custom tiles, and navigation links. However, personalizations are stored as XML blobs in the FormRunConfiguration table and cannot be packaged into deployable code packages or secured across corporate security roles.
  • AOT Workspaces (Developers): Authored in Visual Studio using the Workspace: Operational pattern. They are strongly typed, compiled into application assemblies, version-controlled in Azure DevOps, and bound to role-based security privileges and duties.

6. Realistic Enterprise Scenario Walk-Through: Building a Credit & Collections Workspace

Business Scenario

A global wholesale distributor requires a specialized operational workspace for accounts receivable specialists managing customer credit limits and overdue invoices. The workspace must provide:

  1. Summary Count Tiles for Customers on Credit Hold and Invoices Overdue > 60 Days.
  2. A Tabbed List showing blocked customer records with an inline Release Credit Hold action button.
  3. Direct drill-through navigation opening pre-filtered inquiry screens.
  4. Strict performance governance to ensure sub-two-second load times across 150 concurrent AR clerks.

Step-by-Step Implementation

  1. Author Filtered AOT Queries:
    • In Visual Studio, create CustBlockedCreditQuery. Add CustTable as root datasource. Add range on Blocked field (CustVendorBlocked::All or CustVendorBlocked::Invoice).
    • Ensure CustTable has an active index covering (DataAreaId, Blocked, AccountNum).
    • Create CustOverdueInvoicesQuery. Add CustTrans joined to CustTransOpen. Add range on DueDate (< current date) and Closed == 0.
  2. Create AOT Tiles:
    • Create Tile CustBlockedCreditTile: Set TileDisplay = Count, Query = CustBlockedCreditQuery, MenuItemName = CustTableListPage.
    • Create Tile CustOverdueInvoicesTile: Set TileDisplay = Count, Query = CustOverdueInvoicesQuery, MenuItemName = CustTransOpenListPage.
  3. Build Modular List Form Part:
    • Create a form named CustBlockedListFormPart using the FormPartSection pattern.
    • Add a grid bound to CustTable showing AccountNum, Name, CreditMax, and Blocked.
    • Add an ActionPane with a button calling an X++ controller class method that updates Blocked to No and triggers workflow logging.
  4. Assemble Operational Workspace Form:
    • Create form CustCreditWorkspace applying the Workspace: Operational pattern.
    • In SectionSummary, insert a TileButtonContainer and add TileButtonControl elements referencing CustBlockedCreditTile and CustOverdueInvoicesTile.
    • In SectionTabbedList, add a Tab Page containing a FormPartControl pointing to CustBlockedListFormPart.
    • Configure the Form Part property to enable lazy loading so data queries only run when the tab is actively viewed.
  5. Apply Security and Verification:
    • Create a Display Menu Item CustCreditWorkspaceMenuItem pointing to CustCreditWorkspace.
    • Grant entry point permissions to a custom security duty CreditClerkMaintain.
    • Test drill-through: verify clicking the blocked credit tile opens CustTableListPage filtered exclusively to blocked customers.

7. Real-World Exam Traps: Workspaces, Tiles, Lists & KPIs

[!WARNING] Exam Trap 1: Tile Count Caching vs. Real-Time Expectation When an exam question describes a scenario where an order status changed in another session but the workspace count tile does not immediately decrement, candidates frequently assume a database lock or sync failure. The actual cause is the built-in Tile Count Caching mechanism. Tile counts are cached by the TileDataService and only update when the cache TTL expires or the user explicitly clicks the workspace Refresh button.

[!WARNING] Exam Trap 2: Cross-Company Query Performance Destruction Setting AllowCrossCompany = Yes on tile queries causes the SQL query engine to execute unbounded scans across all legal entities. In enterprise environments with hundreds of companies, this causes severe AOS thread exhaustion and query timeouts. Unless strictly filtered by an indexed partition or explicit list of legal entities, tile queries must remain company-specific.

[!WARNING] Exam Trap 3: Deploying Personalized Workspaces via ALM End users frequently create personalized workspaces via the web client interface and request that IT deploy them to other environments. Personalized workspaces are stored as XML records in the FormRunConfiguration table in the transactional database. They cannot be checked into source control, compiled into models, or distributed via Software Deployable Packages (SDPs). Enterprise workspaces intended for release governance must be authored in Visual Studio as AOT forms.

[!WARNING] Exam Trap 4: Synchronous Tabbed List Loading Including multiple Form Part lists in the Tabbed Lists section without enabling lazy loading causes the AOS to synchronously evaluate the datasources of every tab on form open, even tabs the user never looks at. Always verify that Form Parts defer data fetching until their container tab page receives focus.

[!WARNING] Exam Trap 5: Drill-Through Query Range Disconnect If clicking a count tile opens the target inquiry form but displays all records instead of the filtered count, the root cause is a mismatch between the Tile's Query and the target form's root datasource. Drill-through relies on the menu item transferring the tile's query ranges into matching datasources on the destination form.

Loading diagram...
Operational Workspace Panorama Layout & Execution Flow
Test Your Knowledge

Users report that an operational workspace containing 15 count tiles takes more than 12 seconds to load when opened. A developer analyzes the implementation in Visual Studio. Which architectural change should the developer make to optimize workspace initialization performance?

A
B
C
D
Test Your Knowledge

A developer is creating a custom operational workspace in Visual Studio using the 'Workspace: Operational' form pattern. The developer must add a list of pending purchase orders where managers can review lines and click an 'Approve' button directly from the workspace. Which control structure should be used to display this list within the workspace design?

A
B
C
D
Test Your Knowledge

What is the primary functional difference between a Count Tile and a Link Tile in a Dynamics 365 operational workspace?

A
B
C
D
Test Your Knowledge

An inventory clerk clicks on a tile labeled 'Orders Ready for Dispatch (24)' in an operational workspace. When the target form opens, the grid displays only 24 specific orders corresponding to the tile criteria. Which architectural element ensures this seamless drill-through filtering occurs?

A
B
C
D