Improved Security for Storing Custom Password Field Values 

  • As of 2021.2, the SuiteScript 1.0 nlapiEncrypt(s, algorithm, key) default encryption method is no longer supported when used to check custom password fields. In addition, SuiteScript 2.x Record.getValue(options) and CurrentRecord.getValue(options) methods are no longer supported for custom password fields.
  • You can use the SuiteScript 1.0 nlapiCheckPasswordField(type, id, value, field, sublist, line) function or the SuiteScript 2.x crypto.checkPasswordField(options) method to check and validate values in custom password fields. In SuiteScript 2.x, if you continue to use Record.getValue(options) or CurrentRecord.getValue(options) on custom password fields, the value will no longer be returned as a hashed value but will be obfuscated instead. For this reason, you should use the crypto.checkPasswordField(options) in your SuiteScript 2.x scripts. For more information, see the help topic crypto.checkPasswordField(options).

_________________________________________________________________________________________________________________

New Locale Parameter for Numbers in Advanced PrintingTemplates

  • The format of the new parameter is ${nsformat_number(record.field,”xx_XX”)}, where record.field represents the field and xx_XX represents the country locale code. For example, use ${nsformat_number(item.quantity, “cs_CZ”)} to format the Quantity field according to Czech Republic standards.
  • If the locale code is valid, the results are formatted according to the locale specified. If the locale code is invalid, the formatting defaults to use en_US (U.S. English). If the locale value is null or empty, the formatting defaults to use the locale of the logged-in user.

Workbook API Is Now Generally Available

  • The Workbook API is now generally available in this release. The Workbook API supports a wide range of features that let you build SuiteAnalytics datasets and workbooks using SuiteScript. The N/dataset module lets you build datasets, and you can use columns, joins, and conditions to filter your data. The N/ workbook module lets you build workbooks using analytics concepts such as data measures, calculated measures, and data dimensions. You can also use the N/workbook module to create pivot tables to analyze your data.

_________________________________________________________________________________________________________________

New SecureString.replaceString Method Added to https.SecureString

  • The https.SecureString object has a new method: SecureString.replaceString(options). This method is used to replace all occurrences of a pattern string inside an https.SecureString with a replacement string. The updated string is returned.

_________________________________________________________________________________________________________________

https.SecureString Method Parameters Have Changed

 To support more secure functionality of the https.SecureString object, the parameters in the following methods have been changed or added:

  • The SecureString.appendSecureString(options) method now includes the options.keepEncoding parameter to keep the appended string in its original encoding.
  • The SecureString.appendString(options) method now includes the options.keepEncoding parameter to keep the appended string in its original encoding. You should use the SecureString.appendString(options) method only for appending a string (UTF-8) to a SecureString.
  • The SecureString.convertEncoding(options) method now includes the options.fromEncoding parameter to specify the original encoding to convert from.
  • The SecureString.hash(options) method now includes the options.contentEncoding and options.resultEncoding parameters to specify the encoding to be used for the SecureString and the resulting hash string.
  • The SecureString.hmac(options) method now includes the options.contentEncoding and options.resultEncoding parameters to specify the encoding to be used for the SecureString and the resulting HMAC string.

_________________________________________________________________________________________________________________

MD5 and SHA1 Hash Algorithms Are No Longer Valid

  • Scripts that use MD5 or SHA1 as the hash algorithm must be updated to use a different hash algorithm, such as SHA256 or SHA512, to ensure these scripts continue to work as expected after the upgrade to 2021.2

_________________________________________________________________________________________________________________

Changed to nlapiEncrypt, CurentRecord.getValue, and Record.getValue for Custom Password Fields

  • The use of the SuiteScript 1.0 nlapiEncrypt(s, algorithm, key) function for custom password fields is no longer supported. You should not use the SuiteScript 2.x CurrentRecord.getValue(options) and Record.getValue(options) methods for custom password fields. You can now use nlapiCheckPasswordField(type, id, value, field, sublist, line) for custom password fields in SuiteScript 1.0 and crypto.checkPasswordField(options) for SuiteScript 2.x custom password fields.

REST Query Service Is Generally Available 

  • All the features that belong to the REST Query Service are generally available. Previously, you had to enable the REST Query Service (Beta) feature to work with the dataset-related features that belong to the REST Query Service.
  • You can work with datasets and related functionality by enabling the REST Web Services feature at Setup > Company > Setup Tasks > Enable Features, in the SuiteTalk (Web Services) section, on the SuiteCloud subtab.

_________________________________________________________________________________________________________________

SOAP Web Services Version 2021.2 

  • You do not need to upgrade your WSDL when the new version is generally available. NetSuite supports each endpoint for three years. For information about the supported generally available versions, see the help topic Support for Existing WSDL Versions.

SuiteApp distribution includes SuiteBundler, SuiteApp Marketplace, and SuiteApp Control Center capabilities that you can use to distribute customizations to accounts.

Bundle Support During Release Phasing 

Bundle support during phasing of 2021.2 is consistent with the support provided during previous releases. During phasing of 2021.2, some accounts continue to use 2021.1 at the same time that other accounts are upgraded to 2021.2. Therefore, you may be using a different version than some of the accounts where your bundles are installed. Review the following descriptions for a reminder of how bundles from different versions are handled during release phasing:

  • Bundles developed with 2021.1 can be installed in accounts that are already using 2021.2.
  • Bundles developed with 2021.2 can be installed in accounts that are still using 2021.1, but with the following limitations:
    • When a user in a 2021.1 account installs a bundle from a 2021.2 account, the bundle installation stops if there are object types in the bundle that are not supported in 2021.1.
    • A bundle with a script that uses a new API available only in 2021.2 can be installed into a 2021.1 account, but the script may not function correctly because 2021.1 does not support the API.