Upgrade to Navapp

Custom perspectives

Custom perspectives will be visible in the navapp ‘Extensions’ menu provided that you apply the following changes. For every perspective:

  • Add the mixin frontend:navigationitem (1) and set the mandatory property frontend:appPath (2). The appPath will be the last path segment of the url if the menu item is active. For example, when the appPath is “myapp” and the cms is deployed on “https://cms.example.com” then the url of the custom perspective is “https://cms.example.com/myapp”.

  • Add translation key-value pairs for the languages you need for your perspective (3)

  • Add the appropriate hipposys:userrole (4). You can choose a userrole provided by the product (e.g. xm.cms.user) or you can assign a userrole provided by your own project. Note: the example userrole xm.cms.user below actually is redundant as every logged in CMS user by definition is required to have that userrole. Therefore if the customer perspective should be available to all CMS users this property doesn't need to be configured.

     jcr:primaryType: frontend:plugin
1)   jcr:mixinTypes: ['frontend:navigationitem']
     plugin.class: com.example.Example1Perspective
     wicket.id: service.tab
2)   frontend:appPath: example-1
4)   hipposys:userrole: xm.cms.user


     jcr:primaryType: hipposys:resourcebundles
       jcr:primaryType: hipposys:resourcebundles
         jcr:primaryType: hipposys:resourcebundles
3)         jcr:primaryType: hipposys:resourcebundle
           my-custom: Example 1
           jcr:primaryType: hipposys:resourcebundle
3)         my-custom: Voorbeeld 1

If you use a PluginClusterLoader to load the perspective then you also may have to add the userrole (4) to the loader. This is needed because as of 14.0, brXM will only start plugins for which the user has the required role (see Userroles), if configured.


BrXM has the option to serve the navapp from a cdn. By default the cms uses the navapp packaged with the cms.

Custom Perspective - navapp communication

If you do not only want your perspective to show up in the menu, but also want to communicate with the navapp then add the following wicket behavior to the Custom Perspective and implement the child API.


Proxy configuration


The navapp will put brXM in an iframe. The iframe src URL will therefore look like this:



If the navapp is reloaded (e.g. user presses F5) while a user is logged in then the server adds a query parameter initialPath to the url and responds with a 302 redirect. The navapp will then take care of showing the correct menuItem and URL based on this query parameter.

Make sure that reverse proxies allow these query parameters.

Did you find this page helpful?
How could this documentation serve you better?
On this page
    Did you find this page helpful?
    How could this documentation serve you better?