New in Content Server 21.1: New Webreport Widgets and Extensions


There is already an amazing set of webreport related widgets in the smartui (like HTML Webreport, Nodes List WebReport, Visual Count and Widget Carousel) in smartUI along with a couple of controls, models and actions which make the usage of webreports in smartUI much easier (like parameter.prompt.form,, status.screen, open.webreport, WRTextModel etc). More detailled informations can be found in my Training “Advanced Workshop Webreports”.
At the dawn of the new version, we got a couple of new and extended widgets to be used with webreports.

Some amazing new full-page widgets hit the road

New in Content Server 21.1: New Webreport Widgets and Extensions. They display a full-page of data in a folder or Business Workspace in the Smart View. Three new full-page Content Intelligence widgets are now available to use with Perspectives:

  • Nodes Table Report – Full page
  • Table WebReport – Full page
  • Visual Count – Full page

Users may want to display visual countable data as a full-page chart or present a list of nodes, for example documents to be processed, in a full-page format in the Smart View.
The new full-page widgets will also work with Business Workspace tabbed perspectives, to add various reports sourced using WebReports. Full-page widgets can also be used with other Perspective layouts.

New Webreport Destination

A new WebReport destination, Full Page Widget, sees action for the Nodes Table WebReport, Table WebReport, HTML WebReport and Visual Count destinations.
Once the Full Page Widget output destination is selected, the Nodes Table WebReport, Table WebReport, HTML WebReport or Visual Count can be selected for the Type.
To support the new transport destination added for full page widgets, the transport destination page now has references to the Table Report SubWebReport node and the Visual Count button node to be transported.

Nodes Table WebReport – full page

The Nodes List WebReport widget displays a list of items (nodes) generated from the WebReport’s data source in a full-page view, similar to the browse view.
Parameter prompts can be added for the user to input date ranges, attribute values, etc. using the commands, actions and models mentioned above (since 20.1). If in use, an edit pencil button will display to edit the parameters.
Custom columns, scrolling, name search and pagination are supported.
The node action menu and multi-select actions are available to work with the items in the result set.
All titles and labels support multilingual metadata.

Configuration is done this way. Configure thhis widget and add the title and the node id of the webreport to display in the perspective manager. An Icon Class displays the appropriate Icon on the widget.

Table Web Report – full page

The Table WebReport widget displays a list of items based on the WebReports data source in full page mode.
Parameter prompts can be added for the user to input date ranges, attribute values, etc. using the commands, actions and models mentioned above (since 20.1). An edit pencil button will display to edit the parameters.
Additional data columns, scrolling, column filtering for multiple columns and pagination are supported.
Additional actions can be added, for example a sub-WebReport to initiate a workflow, send an email or create a document node from the item.
Titles and labels support multilingual metadata.

Visual Count – full page

The Visual Count helps visualize countable data using a full-page chart in the Smart View. The chart view (can use bar, donut or pie) has controls for users to filter and drill into data easily.
Parameter prompts can be added for the user to input date ranges, attribute values, etc. using the commands, actions and models mentioned above (since 20.1). If in use, an edit pencil button will display to edit the parameters.
Action buttons can be added, such as export to CSV file, email report data and initiate workflow.
Titles and labels support multilingual metadata.
The Visual Count tile widget and full-page Visual Count widget has a new Horizontal Bar type option.
The original Bar type has been renamed to Vertical Bar to distinguish the two bar types.
The horizontal bar, vertical bar, donut and pie chart types can be changed in the Perspective Manager and Edit page.

New WebReport features

New Enable Row Filters Tag

This new tag [LL_WEBREPORT_ENABLEROWFILTERS /] is designed to automatically filter a WebReport data source when the report is used as a button with the Visual Count widget.
This has also been added to the tag guide as a general feature. This allows WebReports to have better out- of-the box support for dynamic complex filters.

Hidden columns allowed to be included in Table WebReport widget

A new tag option is now available for Table WebReport widgets, INCLUDEHIDDENCOLUMNS:, to specify a list of columns that you want to include in the data returned to the client for each data row. The column will not be included in the columns array in the response.

New in 21.1: Dynamic Security Clearance Level Part 1

Dynamic Security Levels

Good news for security concerned organisations. Finally, its possible to assign different Security Clearance Levels for different organizational conditions, such as devices logged in or network used to login.

Let me explain this using an example.

A company manager called John Doe is regularily working with secret and top secret docs. Therefore he is assigned the highest level of SCL, 100, which allows him to access the most confidential docs of the enterprise, like the canteen menu or so……

All from his normal office with a secured network.

But, when he is on the road, he occasionally is in other offices of the company using the company network. Or even in Home Office, which is a good idea in these times. Here, from time to time he has to check things, but on a lower security level.

Also, from time to time, he wants to have a coffee in some coffee shops. But he wants to hide all information from other guests (maybe Mary Jane?) , so he wants only access to the company intranet docs. This implies an even lower SCL.

How dynamic security levels work

And, of course, he an amend his SCL up to the level originally granted anytime he wants.

How does it work?

At first, it works only with a SAML Identity Provider of any kind. SAML means Security Assertion Markup Language and is an open standard for exchanging data between an identity provider and a service provider.

Wow, sounds like an alien thing.

Not really, we already know OTDS (OpenText Directory Services. And our Content Server (Cluster) is the Service Provider. If a user logs into the Content Server, he is redirected to OTDS, his ID is verified and he can log in the Content Server.

In all cases, the Service Provider has to trust the OTDS.

Logins can be handled in the easiest cases directly from OTDS, OTDS can also utilize any LDAP directory for getting the Verification.

Identity Provider. An example

Next in our chain is the Identity Provider. There are many Identity Providers available, but let’s start with ADFS (Microsofts Active Directory Federation Services).

In this schematic there is the so called “Claims based application” which is OTDS with Content Servers. There must be also any information to tell something abount the user and if he is ok or not. This is dprovided by Active Directory / Active Directory Lightweight Directory Services or any Database or custom storages for the user information.

ADFS is only an example, there are many other Identity Providers avaliable, like Octa, OneLogin, Google, Centrify, Azure, Salesforce, SAP, …….

Here at ADFS there are three things left to do.

  1. define an Access Control Policy

2. Define the rule against attributes

3. Define the Assertion to send

Here, its an example “ID, email, Given Name and Surname” – Rule.

OTDS – Mon amour

In the next post, we’ll deal with OTDS.

Possible amendment of the search results

We just discussed a possible amendment in the OpenText smartUI Content Server Search Results. Whats about an addition of a thumbnail for each document found?

Tabular View with Thumbnails

It looks like this:

New in 21.1: Business Events

Business Events

Good News for Content Server Administrators. They are no longer aloane on monitoring the system.

A new type of Administrator is born, the Business Administrator. The Content Server now has two kinds of events. The “System Events” are for Administrators, the “Business Events” are for Business Administrators.

Business Events are not only for a relief of System Administrators but also to capture events of interest to Business Administrators operating their normal day business.

New in System Monitoring

There is a new link in the System Monitoring Admin Pages

New link in System Monitoring

In the Configuration, email Notofications will be send automatically to the group BENotifyGroup. This group is created for new installs and upgrades. An option to send these notifications also to Administrators is per default on.

email Notifications in Business Monitoring

This Events are also scriptable and exportable

Export Admin Settings

And also there is a new Usage Privilege called “System Monitoring”. With that privilege you can access the “Business Events” configuration page ans the “System Events” reports page.

To access, the group “Business Administrators” must be enabled, which is the default, otherwise the access will be restricted.

The new privilege System Monitoring

Business Event Reports

The “System Event Reports” is a shared admin page for reviewing and exporting reports. Here we have two kinds of users:

  • Business Administrators see Business Events, no System Events.
  • System Administrators see only System Events, unless the “send to Administrators” is checked. If its checked, they see both.
System Event Report

New on this page is the filter by Event Type.

Happy Event Monitoring for Business Administrators and Happy Spare Time for Administrators.

Activating missing Webreport Tabs

Missing Tabs

A short, but sometimes time consuming thing are the missing Webreport Tabs. Imagine, you have a Content Server with an jetty based internal Admin Server or an external Admin server on a fast machine.

The problem

Then, from time to time, you will see this on editing a webreport:

Missing Webreports Tabs

All Edit Tabs for the webreport are missing. Although you can start the missing functions within the URL, its annoying.

The Cure

If this happens, use this Magic Trick N,12:

Simply stop Content Server and Admin Server. Start the Admin Server and wait at least 5 min before starting the Content Server.

Magic Trick N.12 in Action

Then you’ll see everything is there.

Wow. You made it. You are a great wizard.


There is a timing problem in the Content/Admin Server. If the Content Server starts to fast, COntent Server thinks, there is no license for webreports at first. Later, it gets the license, but the GUI is drawn without the webreports tabs.

Wait for your Content Server to start up. Wait at least for 5 min. Then everything will be drawn in the GUI.

Happy webreporting.

The new Treebrowse Component – Nearly a Windows Explorer

Treeview Control

The Treebrowse Component is a new in Content Server 21.1. What’s a Treebrowse?

Let’s take a look at the index.html at csui/controls/treebrowse/test

Treeview Control

This is an additional Window with the tree based display of all folders in a Content Server. It can be configured that a click on the top left icon will switch it on and off. This Treebrowse Control will then change the display of a Nodestable according to the folder pressed.

Additional Features

Lazy loading and prefetch options for performance. There are a couple of options to configure the loading of the nodes for performance. A “Show More” button can be configured

Tree Navigation is in sync with Table View in Nodestable view. The Nodestable is displays the children of the selected folder.

Multiple root nodes can be configured.


This Treebrowse is always there, but it must be enabled.

'csui/lib/backbone', "csui-ext!csui/controls/treebrowse/navigation.tree"
], function (module, Backbone, moduleConfigs) {
'use strict';
var config = module.config(),
enableSystemLevel = !!config.enable;
moduleConfigs = moduleConfigs || [];
var configModel = Backbone.Model.extend({
defaults: {
sequence: 100,
enabled: function (status, options) {
return false;
data: function (status, options) {
return {};
configCollection = Backbone.Collection.extend({
model: configModel,
comparator: 'sequence'

The var enableSystemLevel is interesting.

var NavigationTree = {
enabled: function (status, options) {
  if (!!enableSystemLevel) {
    return true;
  var enabled                = false,
      moduleConfigCollection = new configCollection(moduleConfigs);
  moduleConfigCollection.some(function (mConfig) {
    enabled = mConfig.get('enabled')(status, options);
    if (enabled) {
      status.originatingView.treeData = mConfig.get('data')(status, options);
    enabled = enabled ? true : enabled;
    return enabled;
  return enabled;
return NavigationTree;

As you can see, the Enablement on a system level can be done in OScript. Refer to this post, if you want so figure out how.

If you want to configure this control only for certain folders, you should do:

  • Implement methods enable and data in a separate file and return them in an enclosed object.
  • Register this file which returns object containing enable and data methods as an extension to the “csui/controls/treebrowse/navigation.tree” in the respective module.
"csui/controls/treebrowse/navigation.tree": {
    "extensions": {
      "RMExtensions": ["RMExtensions/controls/treebrowse/RMExtensions.treebrowse.tree"]
  • Enable method should return a condition that specifies when the Tree Navigation should be enabled.
  • The data method should return data that must be passed to tree navigation while instantiation. This data should include configurable settings. If there is no data to be passed default settings are applied.


define([], function () {
  'use strict';
  var RMTreeView= {
    enabled: function (status, options) {
       var supportMaximizeWidget = $("body").hasClass("csui-support-maximize-widget");               return (supportMaximizeWidget && $("body").hasClass("csui-maximized-widget-mode") === false);
    data: function () {
      return {
        "lazyTree": true;
    sequence: 50
  return RMTreeView;

A more complex enabled function (like in the index.html) is

enabled: function (status, options) {
var parent_id = status && status.container && status.container.get('parent_id');
return !!parent_id;


  • Parameters thats need to be included as part of module config:
    • sequence – number default: 100 Decides the priority of a module when multiple modules enabled treeview.
    • enable – function controls whether the treeview command should be visible or not. Need to return a logic whether tree view command is visible.
    • data – function Returns an object of data that are passed to treeview. The parameters that are returned by the data method are passed as options to the constructor of node.tree.view.
    • Parameters that can be returned by the data method are::
      • lazyTree – Boolean default: false Decides whether to prefetch items at one level ahead to display without any delay on clicking showmore button / to fetch the items after clicking show more button.
      • showItemsBlockSize – Number default: 10 Number of items that are shown on expansion of any node or clicking on showmore button.
      • rootNodes – Array of nodemodels default: top most ancestor node of the currently active node An array of nodes which are used as root nodes by the tree. If more than one root node is provided then multiples root nodes are displayed.

Happy Tree Browsing!

New in Content Server 21.1


This is an brief overview on the highlights of Content Server 21.1. This is only a technical list without any screenshots.

In the following posts I will discuss some of the new features more in detail, of course with screenshots

What’s new? A brief overview.

This is an excerpt from the Content Server 21.1 Release Notes

  • Administration
    • Admin Server Processes have now names which follow the the schema AdminServer-NN.
    • Read-Only Partitions. They have been eliminated. During Upgrade, they will be converted to retired node.
    • New Indexing Control Rules. For new installations, they follow the best practices for configuration.
    • Transport Warehouse, The system was simplified.
  • Connected Workspaces
    • Folder Templates. Like creating documents and workspaces from predefined templates, Folders now can be created from predefined folder templates.
  • SmartView
    • Multilingual Metadata. The name and the description fields in the metadata now support the edit of these fields in the configured multilingual metadata
    • Search Forms. Search Forms, created in classic UI are now available from smartUI.
    • TreeBrowse. A new widget allows to browse the nodelist widget with tree like display (similar to the Windows Explorer) after enabling this widget.
  • OpenText Viewing
    • Is now available as Windows Installer in an non-containerized environment.
  • Perspectives
    • Perspectives now can be enabled or disabled
  • Content Intelligence
    • Three new full-page widgets.
      • Nodes Table Webreport -Full
      • Table Webreport – Full
      • Visual Count – Full
    • New full page Webreport destination supports the new full page widgets.
    • New Tags/Tag Options
      • Enable Row Filters: Automatically filter a Webreport data source if the report is used as a button within the Visual Count Widget.
      • Hidden Columns: INDLUDEHIDDENCOLUMS: <hiddencolumns to include> is a new option in Table Webreports to display hidden columns.
  • Records Management
    • REST
      • Add and remove users to a hold
      • Add and remove users to a user based hold
      • Execute a user based hold and apply or remove holds from content owned or modified by the user
  • Security Clearance
    • Dynamic Security Clearance. The Clearance can now be controlled based on organizational defined criteria, like network and device to provide a finer control of the Clearance. For example, a login from a coffee shop can receive a lower Clearance as one from the intranet.
    • User profile. Clearances and Supplemental Markings can now be displayed on the user profile.
  • Workflow
    • Initiation by Mime Type. Workflows can be initiated by mime type, such as a pdf in the proper format.

The famous “Primordials is not defined” Error

Primordials not defined

If you install the smartUI with node.js and then you are creating a project with yo, you may encounter this nice error message during creation:

NodeJS error message

OK, you may wonder about this message.

The reason is easy. In the nodejs modules, there is primordials missing. So search the module and text it or

use V11.15.0 of node.js, not 12.14.1 or later.