In Dynamics 365 For Finance and Operations workspaces provides an overview of specific activities, a colletcion of controls around a business scenario.
Ths system comes with several workspaces containing specific content for different roles and organization. In this blog post i will share how we can get this list of all out-of-box system workspaces with their tile properties by code, and how to get informations about new created workspaces by users and how they are managed in the system.
How the system build standard workspaces?
All out-of-box workspaces are accessible via default dashboard form or the workspaces navigation pane, but how they are initialized ?
- Constructing the Menu Navigation Data Provider
After loading company image, workflow items with related tasks associated to current user and setting current session datetime, the system start to call the process that will construct the Menu Navigation data provider framework and control how data can be provided from the MainMenu and then initialize / extended it via initializeFromObjectParsing method.
- Generatting the Navigation Pane Menu Structure
While initializing the NavePaneMenu Menu, the runtime call in parallel the MenuNavigationObjectInterface and retrieve the associated global structure of the NavPaneMenu Menu which contains all Dynamics 365 For Finance and Operations menus with their dictionary implementation, system navigation object references (In my case i have 32 Modules) and MetaModel elements corresponding to the MainMenu.
- Getting Workspace data tiles
Once the DataContract and the menu structure well implemented from the MenuNavigationInterface, we will start iterating each menu navigation structure, walk the navigation object looking for tiles only, and then pulling the workspace tiles information.
- Store workspaces data tiles
Each workspace have an associated tile element, which is finally a menu item represented by the following informations:
I create new workspace, how can i get it ?
While processing the workspaces data tiles, the system each time check if there is any specific workspaces configurations stored for the current user to initialize and assign the settings to config owner.
After investigating, The FORMRUNCONFIGURATIONUSERWORKSPACE table contains information about all customized workspaces configurations created by users. and some more useful methods like Loading /Deleting / Get and setting associated workspace configurations for specified user