Navigation - Tips & Common Mistakes

Center of Excellence
edited April 2023 in Best Practices

1. Abstract

Talking about navigation, there are several best practices and tips to avoid common mistakes and sources of issues.

2. Content

  • No calculation in navigation procedures: based on what has been discussed above the usage of navigation procedures should be very limited since most of the data access logic is covered by the cube visibility feature; however, if a procedure is necessary to move from a screen to another, the best practice is to avoid using it also to perform calculations; calculations should have dedicated procedures and should be managed directly on the screen. For example, "currency conversion" needs to be executed, however, instead of performing it in the process that opens the report, it should be executed in the screen/procedure where the base data is entered, loaded or calculated.
  • Avoid storing selection in cubes and avoid resetting all selection steps: in certain occasions, developers decide to store the user selection into temporary cubes so that they can reset the entire selection and recall it in other parts of the application; this is very prone to failure and should be avoided; the selection must be carried over from a screen to the next and adjusted only where necessary.
  • Manage CPM navigation vs BI navigation: Another common mistake is to combine too many CPM and BI screens; typically, these two types of screens follow very different logic and it can be more efficient to separate the reporting from the planning part of the application.
  • User access management setup should produce a dataset to reduce complexity and improve ease of use: usually, the access management is generated inside Board or it is a mix of data entry and data received from an external source system; the final user access dataset must be generated in such a way that it can be easily used into the "cube visibility" setup and make the navigation & access management as simple as possible; for example, a common mistake in this area is that the data access setups are scattered in several cubes and there is no final process to condense them into few manageable cubes (or even one only if possible).
  • Use a Multi capsule approach: especially when the application is made of different business processes and therefore different groups of users, a multi-capsule approach is suggested; this not only makes the Navigation easier but also simplifies the deployment to the production of new features and allows the usage of "Folder Security" features which can remove complex access logic from within the application.
  • Use the "Go to the previous screen" native functionality: instead of complex Go-back procedures this functionality should always be the preferred option; using this functionality we exploit screen/select cache mechanisms so that we maximize response time and avoid executing a procedure that uses the server's resources; moreover, this feature is also "dynamic" in the sense that the previous screen is not hardcoded in a procedure but it depends on which path the user has followed to arrive there, this cannot be achieved with a go-back procedure;
  • Keep the masks to a minimum and include into these the navigation buttons and menu; this will simplify the maintenance compared to having a menu on each and every screen;
  • Keep into account the Selectors and pagers on the starting screen to avoid unexpected behavior: often, these objects are added to the screen and can affect the selection carried over to the next screen, even making the screen not usable; for this reason, we must consider these potential user selections and manage them appropriately.
  • Insert checks on the most critical entities to avoid landing on the final screen with the "wrong" selection: to avoid errors and unexpected behaviors the most important thing to check is the selection, in particular, if one or many elements are expected we should check the selection before opening a specific screen; this will allow to prevent errors or make evident to end users eventual mistakes of configuration.



  • Good post!

    I find that navigation is often overlooked in projects and perhaps not enough time is spent to optimize it but in my opinion it is crucial to improve the user experience.