Release Notes > Version 8.4.0 Release Notes
  
Version 8.4.0 Release Notes
The following feature enhancements, bug fixes, known issues and limitations, and end-of-life information are part of ThingWorx 8.4.0:
* 
Changes were made in 8.4 that may potentially affect any application that uses Timer or Scheduler Things. If your application/extension contains Timers or Schedulers, you must verify that the runAsUser setting is not blank before upgrading. If your Timers and Schedulers are set as extension entities with editable Configuration Tables, you must perform a platform restart after the runAsUser has been set to take effect. See Thing Templates for additional information. The following error will be seen in the Application Log if you attempt to import extensions that contain an empty runAsUser field:
Thing State is being set to ERROR because it failed during the initialization phase: The runAsUser field was empty!
Enhancements
Platform
A ThingWorx installer is now available. For more information about using this installer, see ThingWorx Installer.
File Repository management has been enhanced in this release. You can now manage files in remote file repositories in the Composer UI.
The ability to import extensions is disabled for all users by default in this release. To enable extension importing, parameters must be added and configured in the platform-settings.json file. For more information, see Importing Extensions.
A username and password must be added in platform-settings.json for the H2 database. See platform-settings.json Configuration Details for more information.
* 
The password, which should not be easily guessed or a known, common password, is recommended to be at least 14 characters in length and should include a mix of uppercase and lowercase letters, numbers, and special characters.
"PersistenceProviderPackageConfigs":
{
"H2PersistenceProviderPackage":
{
"ConnectionInformation":
{
"password": "<changeme>",
"username": "twadmin"
}
}
ThingWorx administrators should be aware during migration of a user from an older version of ThingWorx, existing user passwords will not be validated against any new password rules that have been implemented in this release. User passwords may need to be updated to ensure that they comply with current password validation rules. For more information, see User Passwords.
You can now create configuration tables for Things, Thing Templates, Thing Shapes, and Mashups from the Composer user interface. For more information, see Configuration Tables.
Anomaly Detection has been enhanced to use the ThingWorx Analytics Server microservices. This change streamlines the implementation of Anomaly Detection because no additional external services need to be installed. In the ThingWorx Alert Processing Subsystem, ThingWorx only needs to be configured to point to an AnalyticsGateway.
If you want to migrate a set of existing anomaly models that were created in a previous release, a manual process is available. The initial steps in the process must be completed before you upgrade ThingWorx or the ThingWorx Analytics Server. For more information, see Migrate Existing Anomaly Models in the Anomaly Detection section of the Analytics Help Center.
User password security has been enhanced to allow you to define prohibited user passwords. Minimum password length is now configurable, with a minimum length of 10. See User Management Subsystem for more information.
Value streams have been enhanced to allow big integers. Previous to 8.4, there was a possibility that value stream entries reached the maximum limit (MAX_INT) and new value stream entries could not be created in the database.
An upgrade script is available to allow larger numbers in value streams for versions below 8.4. While running the scripts is optional for older versions, you could potentially run into a MAX_INT limit, which will prevent new value stream entries. For more information, see Migration Scripts for Large Sets of Data in Value Streams.
* 
These scripts must be run if you are upgrading PostgreSQL or MSSQL to 8.4.0. Failure to run the scripts will result in incorrect schema for Value streams.
The capability to create property transformations has been added to Thing properties. This functionality is available only when the Property Transform microserver is installed. This new microserver provides a set of services that can be used to derive value from streaming data entering ThingWorx.
These services automate certain analytic computations as well as some general purpose IoT transformations. They can be added quickly and easily to a numeric source property associated with a Thing, Thing Template, or Thing Shape. For more information, see the Property Transform section in the Analytics Help Center.
ThingWorx has a new data storage option. InfluxDB can be used with persistence providers as part of default installation for PostgreSQL and MSSQL. You can create and configure the persistence provider instance in ThingWorx to connect the InfluxDB data store using the InfluxPersistenceProviderPackage. See Using InfluxDB as the Persistence Provider for more information.
With this release, ThingWorx supports Azure SQL Database as a new persistence provider for model, property, and streaming data. Azure SQL Database is a managed cloud database (SaaS) provided as part of Microsoft Azure. ThingWorx supports all three Azure SQL deployments - Managed Instance, Single and Elastic Pool. See Using Azure SQL Server as the Persistence Provider for more information.
Added the Composer organization and ComposerUsers user group system object.
A significant number of security issues have been fixed in this release including major investments in updating third party libraries and handling of data to address cross-site scripting (XSS) issues. It is recommended to upgrade as soon as possible to take advantage of these important improvements.
To address the broad landscape of devices that connect to the ThingWorx platform, the concept of "connected" has changed from "currently bound using a websocket" to "connection normalcy", which is referred to as Thing Presence. Thing Presence indicates when the connection of a Thing is "normal", based on the Thing.
ThingWorx AlwaysOn devices (running a ThingWorx Edge SDK-based application or the ThingWorx WebSocket-based Edge MicroServer) bind websockets and, if not configured to be offline for a period of time, are always available to receive messages from the ThingWorx platform.
Axeda eMessage and Axeda IDM agent devices poll the platform periodically ("ping" rate) and can receive messages from the platform only when connected and bound. Any requests from the platform wait in a queue to be sent to a polling agent when it next connects.
Both of these main types of devices are supported by Thing Presence. Things that implement the RemoteThing thing template, or one of its derivatives inherit a new property, isReporting, whose value is set by an algorithm that determines if a device is connected, bound, and available to receive platform requests.
Query Microservice is available in this release and can be used to offload the ThingWorx server by allowing query execution to occur in a separate process on the same or on a different physical machine. Query Microservice is recommended if:
Your system uses queries that load/retrieve a very large amount of data in-memory that results in slowness or system crash.
Your system experiences slowness/unresponsiveness due to large volume of queries executed as part of processing.
The Security Management Tool is available with this release and can be used to manage secure information used by ThingWorx software such as licensing and database passwords. It can be used with any ThingWorx application and is supported with products such as the ThingWorx Platform, Connection Server, EMS, Integration Runtime.
For administrator users only, the option, Universal Export, has been added for exporting entities only. See the table of Export options in Importing and Exporting Data, Entities, and Extensions for details.
With this release, the Microsoft SQL Server (MSSQL) persistence provider has been optimized for write performance of streaming data.
* 
Due to this enhancement, some ThingWorx REST APIs (read and delete) may experience loss in performance. For more details on these APIs, see the known issues section below.
Added the supportedMediaEntityContentTypes section to the platform-settings.json file. This can be used to define MIME types that are allowed to be dynamically linked to Media entities.
Multiple subscriptions are now allowed. See Subscriptions for more information.
For administrator users only, the Export options now include a Universal Export option. See the table of Export options in Importing and Exporting Data, Entities, and Extensions for more information.
Mashup Builder
On the List widget in the Combo Box view, the NumberOfItemsPerPage property was added.
This property enables you to set the number of items that is displayed in the list per page. For more information, see List Widget.
Widgets are categorized as Standard, Beta, Legacy, or Imported in this release. For information about categories of widgets, see Widgets.
Existing widgets are now categorized as Standard, except for the Repeater widget, which is categorized as Legacy.
The Standard Radio Button widget is renamed as Button Bar widget from this release. For more information, see Radio Button Widget.
The Beta category includes 13 new widgets.
For information about new Beta widgets, see the following topic: Beta Widgets.
Mashup template support is provided in this release. Templates are a starting point to develop your mashups. Default templates are provided in the platform. Also, you can create mashups and save them as templates. For more information, see Mashup Templates.
Mashup previews are enabled in this release. For more information, see Mashup Previews.
Mashup Project and Tags filters are enabled in this release. For more information, see Mashup Project and Tags Filter.
Mashup configuration form functionality is added in this release. For more information, see Mashup Configuration Form.
Mashup parameter enhancements are included in this release. For more information, see Configure Mashup Parameters.
The Functions panel for expression and validator functions was added. The panel replaces the Expression and Validator widgets.
Theming has been enhanced with Style Themes (Beta) in this release. You can use style themes to style new Beta widgets. You can create, modify, apply, and reuse style themes to quickly customize the look and feel of your mashups. For more information, see Style Themes (Beta).
The following mashup properties were added:
(Beta) UseThemesForHybrids - Applies a style theme to hybrid widgets in the mashup.
(Beta) StyleTheme - Specifies a style theme for the mashup.
For more information, see Mashup Configuration.
Added Beta style theme support for Standard widgets. You can apply a style theme or use style definitions to style these widgets in a mashup. For more information, see Hybrid Widgets (Beta).
Added the Responsive (Advanced) mashup type. You can use advanced responsive layouts to create mashups that are based on Flexbox CSS rules. To use Flexbox-based layouts, you must rebuild your existing mashups. For more information, see Responsive (Advanced) Mashups.
Bug Fixes
Platform
Related JIRA
Fixed an issue that was causing the following error in the Remote Access Client: Uncaught error: Maximum call stack size exceeded.
TW-53058
The behavior of all GetPropertyValue services have been made consistent when called for a property with basetype PASSWORD. Regardless of type, all of these services now attempt to convert the encrypted password value to the type requested. This behavior includes services such as GetIntegerPropertyValue, GetLongPropertyValue, GetNumberPropertyValue, etc.
TW-52775
Fixed an issue that was preventing the Connection Server from consistently reconnecting to the platform in an HA environment.
TW-52603
Fixed an issue that was preventing .doc files, and other file types, from being downloaded. To fix this issue, the following ContentTypeSettings section has been added to the platform-settings.json file in the PlatformSettingsConfig section:
},

"ContentTypeSettings": {
"supportedMediaEntityContentTypes" : ["image/jpeg","application/pdf","application/msword"]
}
},
TW-52069
Fixed an issue that was causing the GetCurrentLicenseInfo service to return more entities than were created.
TW-50986
Fixed an issue that was preventing a user from editing a remote property manually via copy and paste.
TW-49852
Fixed an issue that was preventing alerts from being acknowledged if the alert values were changed after alert was triggered.
TW-49240
Fixed an issue that was causing an exception to be logged in the event of an asynchronous service call failure to the edge.
TW-48423
Fixed an issue that was causing menus in Composer to collapse incorrectly.
TW-48282
Fixed an issue that was preventing run time instance permissions on User Groups to be added on Thing Templates.
TW-48090
Fixed an issue that was causing the application logs to be flooded with warning messages when remote properties were deleted from a Thing Shape.
TW-47965
Changed the websocket behavior from processing messages on a closed websocket to logging.
TW-47562
Updated the DispatchingServerCommunicationsModule behavior when saving WS Communications Subsystem.
TW-47541
Fixed an issue that was preventing the PostImage service from returning a blob result.
TW-47149
Fixed log messages to include exception information on bind failures.
TW-46421
Fixed blocked WSExecution threads.
TW-46363
Fixed an issue that was preventing the ThingStart event from being triggered.
TW-46205
Fixed an issue that was preventing the scroll bar in the service output area of a service from working on Internet Explorer 11.
TW-44457
Fixed an issue where alerts were not fetched even if they were supposed to be active per the alert definition.
TW-43582
Fixed an issue with the AddDataTableEntry and UpdateDataTableEntry services that was causing unexpected behavior.
TW-43007
Fixed an issue with the GET method for ThingWorx requests.
TW-42724
Fixed an issue with services not updating the last modified date on Things.
TW-42717
Documentation has been updated to correct some issues in the description of auditing support.
TW-42707
Fixed an issue where no audit history is returned when querying for DEVICE_COMMUNICATION or FILE_TRANSFER categories.
TW-41554
Documentation has updated to more accurately reflect how to query audit history for the Data Storage category.
TW-41553
Fixed an issue that was preventing Things from being saved.
TW-39836
Fixed an issue that was causing migrations from ThingWorx versions prior to 7.2.2 to fail.
TW-37588
Fixed an issue where an IndustrialThing with default settings and the Value/Quality displayed for an IndustrialThing property did not match the Value/Quality for a tag in KEPServerEX.
TW-35441
Fixed an issue when configuring a Media Entity to act as a content proxy for Navigate in a non-SSO configuration.
TW-35209
Fixed an issue seen when overriding a Thing Template service that displayed the source code of the shape, but at execution time it returned the output of the Thing Template.
TW-35148
Updated the Javadoc information for the AddPropertyDefinition service.
TW-30279
Fixed an issue that was causing a maximum limit to value stream entries.
TW-29081
Fixed an issue with the log permission errors being written to the ThingWorx logs.
TW-27792
Fixed an issue when a Thing was created from a default tag of data type, its base type was set to NOTHING. Changed the default base type to STRING.
TW-27330
Fixed an issue that was preventing a Thing Template with subscriptions that was created and exported in Composer from being imported as part of an extension.
TW-24629
Fixed an issue that was preventing files from being downloaded from a File Repository with spaces in the name of the File Repository.
TW-17195
Mashup Builder
Related JIRA
Fixed an issue that was causing an extra border to display around the container when building a Master mashup.
TW-52621
Fixed an issue that was preventing a Clicked event on a Button widget from firing when clicking between two buttons.
TW-52498
Fixed an issue with the Collection widget that was causing performance issues while adding and deleting.
TW-51726
Fixed an issue that was causing a null value when a configuration mashup with a JSON parameter was bound to a service on the original mashup.
TW-51657
Fixed an issue with the List widget that was causing an extra border to display when viewed on a dropdown.
TW-51621
Fixed an issue that was causing a mashup with a style theme in an extension to fail on import.
TW-51498
Fixed an issue with the Filter Widget.
TW-51334
Fixed an issue with the Advanced Grid widget that was preventing it from being saved in Mashup Builder.
TW-51322
Fixed an issue that was causing imported Mashups with mashup parameters as a custom configuration to fail.
TW-51145
Fixed an issue with Mashups that was causing an iOS user to double tap the screen for some options.
TW-50987
Fixed an issue with incorrect auto sizing that was affecting numerous widgets.
TW-49629
Fixed an issue that was preventing extensions that contained mashups from being imported.
TW-48408
Fixed an issue that was preventing a Mashup using a double byte character on name from loading when set as the home mashup for a user or organization.
TW-48322
Fixed an issue that was preventing borders from being displayed on dropdown options.
TW-48115
Fixed an issue with the Data Export widget that was preventing it from working if its style properties were changed.
TW-47857
Fixed an issue with the Advanced Grid widget that was breaking the copy and paste functionality.
TW-47212
Fixed an issue with the Collection widget that was preventing the AllowSelection property from working.
TW-47026
Fixed an issue that was causing the Combobox widget to retrieve an old selected value after clearing the combobox text.
TW-46743
Fixed an issue with the Collection widget that was preventing cells from being displayed when the data change was less than 300 ms.
TW-45884
Fixed an issue where the RefreshRequested event was not consistently firing when using multiple contained mashups.
TW-44362
Fixed an issue with the Collection widget that was preventing the Sort option from working.
TW-44286
Fixed an issue that was causing mashups to load slowly.
TW-43589
Fixed an issue with the Value Display widget that was causing text to get cut off.
TW-42460
Fixed an issue with the Expression widget that was preventing expressions to be evaluated.
TW-41805
Fixed an issue that was preventing a horizontal scroll bar from displaying if the UseMashupDimensions property was set to false.
TW-41688
Fixed an issue that was preventing mashups from displaying correctly.
TW-40626
Fixed an issue that was preventing some widgets from displaying in run time.
TW-39839
Fixed an issue with the Navigation widget that was causing the modal pop-up to appear behind the mashup pop-up overlay.
TW-39299
Made the DefaultTabAtRuntime property bindable on the Tabs Responsive widget.
TW-39296
Fixed an issue that was preventing groups of widgets to keep the same orientation when grouped using CTRL + click (to select multiple widgets) to drag to a new location.
TW-39156
Fixed an issue with the File Upload widget's Upload button alignment.
TW-36780
Fixed an issue with the Data Filter widget that was causing the Clear button to display incorrectly in other languages.
TW-36123
Fixed an issue with the List widget that was preventing the list dropdown from collapsing when the arrow icon was selected.
TW-35453
Fixed an issue with the Collection widget that was preventing a progress indicator from displaying.
TW-31050
Fixed an issue with the chart widgets that was causing the labels to overlap.
TW-28010
Fixed an issue with the Tab widget that was causing an unnecessary scroll bar to display.
TW-27033
Fixed an issue with the Grid widget that was preventing styles from being applied to fonts.
TW-26797
Fixed an issue with the Numeric Entry widget that was preventing warning messages from being localized correctly.
TW-26170
Fixed an issue with the Menu widget that was causing a 404 error when attempting to open the Mashup in new window.
TW-25850
Fixed an issue seen when a Value Display widget on a panel with the TextWrap property set to false, the alignment was ignored.
TW-25790
Fixed an issue with the Value Display widget that was preventing the ImageScaling property from working correctly.
TW-25782
Fixed an issue with the Grid widget that was causing the sort to function incorrectly after data was reloaded.
TW-24527
Fixed an issue with the Date Time Picker widget that was preventing the tool tips for days of the week to be localized.
TW-24479
Fixed an issue with the chart widgets that was preventing values from being ​applied immediately when binding X and Y axis.
TW-24195
Fixed an issue with the Bubble Chart that was preventing the Y-axis autoscale from choosing proper minimum and maximum values.
TW-24190
Fixed an issue with the Navigation widget that was preventing the close bottom of popup page from displaying.
TW-24177
Fixed an issue with the Button widget that was preventing tool tips from disappearing on an iPad.
TW-24027
Fixed an issue with the Numeric Entry widget that was preventing error messages from being localized.
TW-23057
Fixed an issue with the Navigation widget that was preventing the full screen option from working correctly.
TW-22247
Fixed an issue with the Date Time Picker widget where an infinite loop was created if both mouse buttons were clicked upon selection.
TW-22071
Fixed an issue where labels were displayed inconsistently for bar charts.
TW-22008
Fixed an issue with the Layout widget where expanding the header caused the tabs to stop switching.
TW-21145
Fixed an issue Mashup parameter for the type location was displaying NaN : NaN in widgets.
TW-18669
Fixed an issue with the Date Time Picker widget that was causing the hour and minute field to have an auto-increment loop.
TW-11116
Fixed an issue with the Grid widget that prevented the last column from being resized when scrolling horizontally.
TW-10926
Fixed an issue with the Label chart where the AxisTitle and Labels were crossing each other in a horizontal label chart.
TW-10870
Known Issues and Limitations
The following known issues and limitations exist in ThingWorx 8.4.0:
Platform
Migration from PostgreSQL and H2 to MSSQL or AzureSQL is not supported.
There is a known deadlock issue when performing concurrent updates to the model of an entity. One of the use cases that exacerbates this issue is if you try to add multiple dynamic subscriptions on a Thing at the same time.
The DSE extension (DsePersistenceProviderPackage.zip) is not supported in this release, but will be supported in a future release
The Media option for User Profiles is not available if you are performing an in-place migration to 8.4.0.
Due to optimizations made for MSSQL write performance in this release, the following APIs may have reduced performance:
Impacts of Optimizations on MSSQL (ValueStreamThing)
Service Name
Degradation Percentage
value_stream table with 1 million entries
GetBooleanStreamEntry
GetDateTimeStreamEntry
GetImageStreamEntry
GetInfoTableStreamEntry
GetIntegerStreamEntry
GetLocationStreamEntry
GetLongStreamEntry
GetNumberStreamEntry
GetStringStreamEntry
GetThingCodeStreamEntry
GetVec2StreamEntry
GetVec3StreamEntry
GetVec4StreamEntry
60%
DeleteStreamEntry
85%
AddBooleanStreamEntry
AddDateTimeStreamEntry
AddImageStreamEntry
AddInfoTableStreamEntry
AddIntegerStreamEntry
AddLocationStreamEntry
AddLongStreamEntry
AddNumberStreamEntry
AddStringStreamEntry
AddThingCodeStreamEntry
AddVec2StreamEntry
AddVec3StreamEntry
AddVec4StreamEntry
~10%
Impacts of Optimizations on MSSQL (StreamThing)
Service Name
Degradation Percentage
stream table with ~ 500K entries
GetStreamEntry
GetStreamEntries
20%
DeleteStreamEntry
9.3%
UpdateStreamEntry
47%
Impacts of Optimizations on MSSQL (DataTableThing)
Service Name
Degradation Percentage
data_table with 100K entries
UpdateDataTableEntry
18%
UpdateDataTableEntries
20%
AddOrUpdateDataTableEntries
29%
Mashup Builder
The HTML structure of the Gauge widget has changed. If you apply a custom style definition to the Gauge widget, the CSS rules are not displayed in the design mode of the mashup but is displayed at runtime. Therefore, you must evaluate the CSS rules at runtime. This is a known issue that does not affect your mashup performance. It will be fixed in an upcoming release.
TW-48077
Undefined access permissions for style themes can prevent users from viewing the mashup during design and runtime. Ensure that users have at least Visibility access permission set for the Style Themes (Beta) Collections in order to display mashups that use style theme entities.
TW-51844
In Internet Explorer 11, the Toggle Button, Checkbox, Link, Radio Button, and Label widgets are forced to display on a single line within a container. To fix this issue, specify a value for the widget LabelMaxWidth property. This issue will be fixed in a future release.
TW-52132
End of Life Information
The Legacy Composer UI has been deprecated in this release.
As of this release, Neo4j and Neo4j+DSE are no longer supported upgrade configurations.