NT Higlights for January 2024

Changed and improvements implemented on January. Testing out usage of [public role], instead of [af_user], Updater, Login and Authentication, Data object and File Upload

Testing out changes with [af_users] role

On a solution with a huge number of users adding new member into [af_user] role caused all solution to freeze for a while, so [af_user] role is no longer used and instead standard permissions is added to public role via apply permissions procedure.

If there won't be any negative impact this will become permanent. 

NT Jobs is now ready to replace CT jobs

All functionality is covered, frequency is changed to use CRON expressions and CRON expression builder in place. All jobs are being moved.

Updater will not revert CT apps

CT article revert process updates development version, when actual update just inserts new version into articles table which is used on production environment. 

If solution was not using test environment, dev version was not need and this revert itself was slowing article update 2-3 times. 

In order to inform users that this version is not reverted, message will popup when opening it in appdesigner with option to manually revert it, update development code. 


Appdesigner is checking [Title2] field of development version, if [Title2] = "Article Not Reverted" this will be an indication for such case. No usage was found of this field, so instead of creating new field, this one was reused.

In update script, there is a check if such article exists on a target database, so when applying script and article is not found on a source, article will be reverted. This is needed for various app setting like menu, title and so on to be updated for the first time.

If solution is using test and it needs dev version, there is a setting in [stbl_Database_Setup].[RevertArticleAfterUpdate], this can be checked to 1 so updater will always do a revert.

There is a procedure: [sstp_WebSiteCMS_RevertAllNotRevertedArticles] which would get all apps where [Title2] = 'Article Not Reverted' and will do a revert. Note: this is really heavy, uncheck use transaction when using it, if there are many apps it might be blocking.

Login && Authentication

CT Login screen was redesigned.

New setting to have remember me checkbox set by default

JWT token support was added to CT.

Sessions between CT and NT sites aligned, so when session expires, it expires on both systems.

Data Object 

Localization: Data objects created in Appdesigner will get translation out of the box. When data object is created dynamically, add optional param localizeFields:true when getting ds, this will enable translation out of the box.

Note: added customCaption prop to field object, which is set by data grid when headerTitle is used, this overrides default translation. Captions are used everywhere when system presents fields to the users and can be customized.

Unique Field concept

Such controls like bulk update or selection control was depending on columns like PrimKey or ID. They are set as uniqueField for fields object. If those fields are not available and there is no way to have them unique, another filed can be set as unique:

dsObjects.fields.uniqueField = "MyUniqueField"
Paged data

There might be use cases where old good pagination concept is needed, for that data object is extend and is available for <ODataTable> control. 

Use case is documented under snippets.

UTC Date and DateTime types

Date and datetime type fields no longer needs to be set as UTC for data object from designer as this info is fetched from database. 

In addition Fields object was extended with dataType prop to store SQL data type in order to distinguish dateTime from dateTime2, those 2 types were always treated as datetime.

Data grid

New records panel will have virtual scroll enabled, also when pasting huge amount of data it will show loading indicators.

Layout sharing functionality reviewed, many bugs were fixed, functionality documented under user guides.

Selection control and navigation reviewed.

File upload

No need to provide data object anymore, if route url presented.

Location and Exif data is extracted from main file upload control, in order to enable it check snippets for more details.

App Insights

In order to get DB Jobs logs we need to query app insights, so new data handler for insights was created.