Breaking Changes Between Releases

Review this page before upgrading to identify changes that may require manual intervention or script updates.

For upgrade procedures, see Upgrading.

7.0

  • The standalone WebAPI service (nxapisrv) is deprecated and removed; the REST API is now provided by the webapi server module loaded into the server process.

  • The "internal" object tool type was removed and type 0 is now reserved. The built-in Wakeup node tool is converted to a server script tool (Tools::WakeUpNode) during upgrade.

  • A network mask is no longer accepted when creating nodes. Pseudo-interfaces created for unmanaged nodes get a synthetic mask automatically.

  • The Microsoft Teams notification channel driver was reworked to use Power Automate Workflows webhooks. Legacy Office 365 connectors are no longer supported, and the UseMessageCards and ThemeColor driver options are ignored.

  • The web management client requires a servlet container supporting Jakarta Servlet API 6.0 (Tomcat 11 or later, Jetty 12 or later).

  • DCIs with Script origin and DCI instance discovery scripts no longer run in the read-only security context introduced in 6.2. They can modify objects, post events, and send notifications regardless of the Scripts.RestrictWriteAccess setting. Such scripts live in the script library, and write access to the script library already allows unrestricted code to run, for example through hook scripts. All other scripts listed in Write Access Restrictions remain restricted.

6.2

Scripts evaluated automatically by the server — DCI transformation scripts, scripted thresholds, auto-bind filters, conditions, EPP filter and RCA scripts, and others — are now read-only and cannot modify objects, post events, or send notifications. This is controlled by the new Scripts.RestrictWriteAccess server configuration variable, which is set to 1 both on new installations and during upgrade.

Denied operations do not produce a script error: the call returns false and the script continues, so affected scripts stop having effect silently. See Write Access Restrictions for the list of affected scripts and for ways to keep the modifying logic working.

6.0.0

Backslash no longer has special meaning in macro expansion and does not need to be escaped.

The input field macro %(name) has been repurposed into a multi-purpose macro supporting:

  • %(nl) — insert new line character

  • %(cr) — insert carriage return character

  • %(lf) — insert line feed character

  • %(tab) — insert tab character

  • %(in:name) — insert input field value

During upgrade, existing macros are automatically converted.

5.1.4

IPv4 addresses are now supported only in a.b.c.d format with decimal numbers.

5.1

NXSL changes: node attribute ipAddr is deprecated. Use the ipAddress attribute instead.

5.0

MIB File Changes

Previously loaded additional MIB files will not work after upgrade. They must be re-uploaded via Configuration  SNMP MIB files.

  • MIB compilation file extension changed to .mib

  • Compiled MIB file extension changed to .cmib

  • Default MIB file location changed to $HOME/share/netxms/mibs/

  • Default format of SNMP OIDs changed to a format without leading dot — this can break scripts that use SNMP OID string comparisons

NXSL Syntax Overhaul

The NXSL syntax has changed significantly. During upgrade, existing scripts are converted automatically. For manual conversion, use the nxscript command line utility: nxscript -5 script-file.nxsl.

Table 1. NXSL v5.0 Syntax Changes
Description Old Syntax New Syntax

String concatenation

.

..

Object dereference

->

.

Array initialization

%(1,2,3)

[1,2,3]

Safe dereference (custom attribute access)

test@$node

$node?.test

Library import

use ToolBox

import ToolBox

Function definition

sub FunctionName()

function FunctionName()

NXSL Class and Function Renames

Class TIME was renamed to DateTime. New modules Math, Base64, Crypto, Net, and IO were created, and functions were moved under them. The most commonly used functions are left as deprecated aliases, but others were renamed without a deprecated version.

Table 2. Functions renamed without deprecated aliases
Old Name New Name Type

TIME

DateTime

class

asin

Math::Asin

function

acos

Math::Acos

function

atan

Math::Atan

function

atan2

Math::Atan2

function

cosh

Math::Cosh

function

exp

Math::Exp

function

gethostbyaddr

Net::ResolveAddress

function

gethostbyname

Net::ResolveHostname

function

log

Math::Log

function

log10

Math::Log10

function

md5

Crypto::MD5

function

sha1

Crypto::SHA1

function

sha256

Crypto::SHA256

function

sinh

Math::Sinh

function

tanh

Math::Tanh

function

weierstrass

Math::Weierstrass

function

decode

Base64::Decode

function

encode

Base64::Encode

function

CopyFile

IO::CopyFile

function

CreateDirectory

IO::CreateDirectory

function

DeleteFile

IO::DeleteFile

function

FileAccess

IO::FileAccess

function

OpenFile

IO::OpenFile

function

RemoveDirectory

IO::RemoveDirectory

function

RenameFile

IO::RenameFile

function

Other v5.0 Changes

  • Abort and other runtime errors in script DCIs now set the DCI to an error state (previously changed to unsupported)

  • Importing dashboard configurations exported from a previous version will not upgrade the script syntax to the 5.0 format

4.4

The minimal JRE (Java Runtime Environment) version for both web and management client is now Java 17.

4.2

The NXSL functions AgentExecuteAction and AgentExecuteActionWithOutput were renamed to AgentExecuteCommand and AgentExecuteCommandWithOutput.

4.1

  • The CreateDCI NXSL method changed: the last two parameters (polling interval and retention time) should be set to null instead of 0 to use default values

  • NXSL decimal numbers written with leading zeros are no longer interpreted as octal

4.0

  • Incompatible change in NXSL DCI class: instance attribute now refers to the instance value (as in {instance} macro), not instance name. Use instanceName to access the instance name.

  • Several Web API endpoints were renamed (e.g., API_HOME/summaryTable/adHoc became API_HOME/summary-table/ad-hoc)

3.8

The minimal JRE (Java Runtime Environment) version for the management client is Java 11. A Desktop Management Client with bundled JRE is provided for Windows.

3.7

  • Introduced boolean type in NXSL. Comparisons like func() == 1, where func returns a boolean, will always evaluate to false because the boolean value true is not equal to integer 1. This may require fixes in NXSL scripts.

  • Regexp matching operation in NXSL now returns an array with capture groups or false as a result.

  • Clusters now have configuration poll. If you have a configuration poll hook script that references $node, this will produce errors when configuration poll runs on a cluster. Replace $node with $object or add a guard: if (classof($object) == "Node").

3.6

The Certificate Manager was removed from the server. All CA certificates configuration must be manually moved to the TrustedCertificate parameter in the server configuration file.

3.5

External Metrics (ExternalMetric, etc.) now expect UTF-8 encoding on Windows. Adjust scripts called by external metrics if non-ASCII characters are returned.

3.1

  • Regexp matching operation in NXSL returns array with capture groups or NULL as result

  • NXSL objects and arrays in logical expressions are evaluated to TRUE — this may require NXSL script adjustments

3.0

  • Notification channels introduced as new functionality. SMS configuration is automatically migrated from server configuration to a notification channel based on the old driver name (AnySMS, DBTable, Dummy, GSM, Kannel, MyMobile, Nexmo, NXAgent, Portech, Slack, SMSEagle, Text2Reach, WebSMS). No manual action required.

  • Flags and dynamic flags moved to the NetObject class. Node flags are separated into user-set flags and system-set capability flags. Numeric values for flags, capabilities, and dynamic flags were changed — this affects NXSL scripts that check those flags directly.

  • The 32-bit version of the management client is no longer available.

  • The agent always requires encryption unless the RequireEncryption parameter is explicitly set to off. You may need to add this parameter where encryption is not desired.

  • Agent policies were merged with templates. Each policy was converted to a template. No manual changes required.

Java Version Requirements Summary

Starting with version 4.4, Java 17 is the minimum Java version for both the desktop and web management clients. For earlier releases, the release notes stated older minimums for the management client: Java 8 up to version 3.7 and Java 11 from version 3.8.

Current versions of the web management client require Tomcat 11 or later, or Jetty 12 or later (Jakarta Servlet API 6.0).