Unifi 4.0 Release Notes

Release date: 12 September, 2022


Upgrade Notice

Please note that, as with every release, there may be some changes that are not entirely compatible with your existing integrations. While we do everything we can to make sure you won’t have to fix your integrations when upgrading, we strongly encourage all our customers to perform full end-to-end tests of their integrations before upgrading Unifi in Production.

We also highly recommend aligning your Unifi upgrade with your ServiceNow upgrade. This means you only need to test your integrations one time rather than once for the ServiceNow upgrade and once for the Unifi upgrade.

Feedback and Reviews

We really appreciate feedback on what we’re doing - whether it’s right or wrong! We take feedback very seriously, so if you feel you’d give us anything less than a 5 star rating, we’d love to hear from you so we can find out what we need to do to improve!

If you would rate us 5 stars, and haven’t left a review on the ServiceNow Store yet, we’d be grateful if you would head over there to leave us your feedback. It only takes a few minutes and really does help us a lot. Go on, you know you want to leave a 5-star review on the Store!

Unifi 4.0 Highlights


We are extremely proud to introduce official support for mass data import and export with a brand new feature called Datasets.

Datasets allow you to easily configure imports and exports of large amounts of data on a schedule, with transformation being achieved through the standard use of Unifi Fields and Field Maps, and transportation via automatically generated attachments sent within Unifi Messages. Data is automatically chunked and filtered for delta updates, with full sync being available at any time with one button click. Datasets have been built so you still get the benefit of Unifi operational data but with huge efficiency gains for large amounts of data.

Integration Dashboard

Diagnose and managed your integration with the new Integration Dashboard, containing stats, diagnostics, and access to common integration development actions.

Portal Performance

We're continuing to refine the portal interfaces and this update includes a significant performance boost to the Designer experience, along with several developments and updates to make integrations easier to manage and maintain.

Snapshot Table Cleaner

The Snapshot table was introduced in a previous release as both a mechanism to support automated testing and a precursor to a more efficient method of processing outbound messages which we intend to move towards in a future release. Unfortunately, no cleanup job was included and this table has been known to become very large.

While this update includes a cleanup job to rectify this issue, we strongly recommend the table be emptied before updating to this version since this will be much faster than relying on the job. Note: Once the table is emptied, Unifi will not be able to create tests for existing bonds.

Pre-upgrade requirement

For existing customers using version Unifi 3.1, we strongly recommend the Snapshot [x_snd_eb_snapshot] table be emptied before upgrading to version 4.0. This can be achieved by an administrator:

  1. Change to the Unifi application scope

  2. Navigate to the Snapshot table object (/sys_db_object.do?sys_id=cbe6eb84db856010d78869091396198b), and

  3. Click "Delete All Records".

New Features & Improvements

UN-933 Bond cleanup logic to use scheduled jobs rather than events

Previously, transactional data relating to bonds was removed by an event specifically for that bond that was created when the bond was closed. For customers with long data retention requirements, this could result in thousands of queued cleanup events.

The cleanup logic has now been updated to improve this. A new field called Cleanup date has been added to Bond records. The Cleanup date is set when the bond is closed and specifies the time the transactional data for the bond should be cleaned. A scheduled job triggers an event and script action once per day. Any records which have a cleanup date before the current date are cleaned. (Note: the job is designed to chunk the processing to prevent excessive system resource consumption for systems with high cleanup volumes.)

UN-980 Add a role check to the inbound user on Connection

A new diagnostic test has been added to ensure the inbound users specified on a Connection has the x_snd_eb.integration role.

UN-1044 Improve the Designer Dashboard

The dashboard in Unifi Designer has been improved and updated with a number of new features including:

  • New “All Integrations” pane with tabs for switching between processes and integrations

  • Search bar to allow contextual search for all integrations or just those in the selected process

  • Reversible sorting for Name and Updated date

UN-1070 Parent field should show child fields in Designer

A field that has its configuration inherited by child fields now shows a list of those inherited fields.

UN-1092 Fields list needs more fields

The list of fields in Designer now shows more columns to make it easier to find and identify fields.

UN-1096 Add message direction to Scenarios list in Test Assistant

The Scenarios tab show within a test in Test Assistant now shows the direction of the scenario to make it easier to see which way the messages are flowing.

UN-1125 Prepopulate the instance name on the connection

Connections have the ability to specify the name of the instance the connection belongs to. This value is now prepopulated with the instance name when the connection is created. The value used is from the system property instance_name.

UN-1127 Allow receipts to ignore timeout

Asynchronous integrations use a request-receipt pair of messages where the receipt is a new message sent by the other system to confirm it has processed the original request. Unifi allows a timeout to be specified so that transactions with requests that do not receive a receipt within a given duration can be flagged for investigation with the Timed Out state. By default, Unifi operates in best practice and discards receipts to messages that have timed out, however this update introduces a new setting on the integration to change this behaviour. Setting Process timed out transactions to true on the integration will allow receipts to be processed regardless of how long they take.

UN-1128 Update error text for inbound receipts that are rejected

Previously, when an inbound receipt was rejected because the Transaction state was not “Awaiting Receipt”, the response error would just indicate that it is because it has been “processed already”. This is not always the case so the error message has been updated to explain the actual reason which should be more helpful in testing and operational investigations.

UN-1129 Update inbound connection error responses so it's clear they are from Unifi and not ServiceNow

Response errors for inbound requests that are generated by Unifi have been updated with a [Unifi] prefix so that users can more easily determine if the error is a platform issue such as an invalid user/password or a Unifi issue such as no connection was found.

UN-1130 Update Unifi data preservers to be included in system clones

The Unifi Data Preservers have been updated so the Include in system clone field is now true, allowing system clones to keep existing data on the target instance.

UN-1137 Add last successful execution time to Poller data

Pollers generally need to know the last successful request time so future queries can filter the data efficiently. A new Data Store called $last_completed which contains an ISO date time is now automatically stored on Pollers and is set when a Poll Request state changes to Complete. The Poller object has a new method getLastCompleted() that can be used which returns a GlideDateTime object of the $last_completed value or a new GlideDateTime object if any validation on the datetime fails.

UN-1140 Integration dashboard

A new dashboard has been added to Integrations in Designer to make it easier to manage and diagnose the integration. The dashboard is now the default view of the integration, with the integration settings being moved to a new "Integration" menu option.

UN-1148 Prevent "Copy of" prefix when copying configuration to another integration

Updated copy logic so "Copy of" is only prepended when the name and integration have not been changed by the user or the copy process.

UN-1149 Update Message Path hint to show ${} as well as {} since both are valid

Minor label update to show that ${code} and {code} are valid in the Message path field for running inline code.

UN-1152 Triggering a poller should open a window of poll requests

Executing a Poller in Designer will now open the new Poll Request.

UN-1160 Default the action method field on Message to POST when integration is REST

Unifi has always used POST as the default REST method when no method has been specified on a Message by the user. This value is now set by default for REST integrations so it is explicitly defined and easy to see.

UN-1165 Add snapshot cleanup logic

A new cascading job has been introduced to cleanup Snapshot records.

UN-1167 Update async business rules to use the new async type

ServiceNow have deprecated async business rule with the introduction of new async processing. All Unifi async rules have been updated to use the new version.

UN-1173 Add a check to diagnostic for pollers in production which have the attach response payload set to true

Best practice in Unifi is to turn off unnecessary logging and payload storage in Production since these are generally only necessary in development. A new diagnostic check has been added to find active pollers belonging to active integrations in a production instance which have the Attach response payload flag set as true. The recommendation is that this flag is disabled for Production instances.

Unifi now stores 30 recent items that have been viewed in Designer for each user so they can be accessed easily. These are accessed through a new icon and menu system which has been added on the top-right of Designer.

UN-1181 New diagnostic checks

Unifi Diagnostic has been fully updated with new diagnostic tests, updated messages, and the ability for many issues to be fixed at the click of a button.

UN-1186 Improve form load times

Forms now render much faster in Designer, in many cases almost immediately, with fewer round trips to the server and less work for the server to do.

UN-1187 New capability for Unifi to synchronise large datasets efficiently

Introduced the new Dataset feature to allow mass data import and export within Unifi.

UN-1188 Add new message type called Dataset

A new Message type called Dataset has been added to support Dataset processing. Dataset messages are not processed by Unifi trigger rules.

UN-1189 Add dataset records to the Integration Packager

Datasets are packaged with integrations for export.

UN-1194 Add support for inbound request query parameters

Payload to Stage and Stage to Request scripts now have access to a new variable called query. This is a key-value object that represents the search query parameters in the URL and operates in the same way as the headers object. It can be used to read query parameter values inbound and write them outbound. When writing outbound in the Stage to Request script, the query object will be compiled and automatically added to the search query of the URL.

UN-1198 Allow Script Editor fields to be selected individually

It is now much easier to select one script when editing message scripts in Designer. The menu bar has been updated, with a new "Only" option being added to Scripts shown in the "Change view" menu.

UN-1202 Response Action and Event Action lists should always show Integration

Integration is now always shown in Response Action and Event Action lists, making it easier to distinguish between integration specific and Unifi specific records.


UN-654 Transaction Timed Out does not set Bond to error

A Bond is now set to an Error state when the current Transaction gets set to the Timed Out state, reflecting the fact that no more Transactions can be processed until the current one has been addressed.

UN-1040 Multiple heartbeats in a single integration do not process correctly

Introduced a new rule to prevent more than one Heartbeat message being active at one time.

UN-1056 Copying Unifi records in Designer causes the system to hang

Fixed a bug that occured when copying a field map in the Designer portal. The request would hang and the system would be blocked. The only way to resume things was to manually call cancel_my_transaction.do. This was caused by a scope issue with Field Maps, Response Actions and Event Actions; they now have their scope set automatically to be the same as the integration scope.

UN-1058 The list of fields shown on message does not show integration level data fields

The embedded list of fields on a message in Designer now shows all integration level fields, not just those that specify a table.

UN-1060 Clicking New from a list in Designer will show previously entered data

Creating a new record in Designer using a modal will now always have default values reset.

UN-1061 Clicking New from a list in Designer will always take a long time to load

Added caching support for new records so the user does not need to wait for a full form load from the server in order to create a new record.

UN-1062 Readonly Unifi records are not showing as readonly in Designer

Fixed a bug where fields were not being checked for readonly.

UN-1068 Changing the name of a field does not inherit

Field name changes are now inherited by all child fields.

UN-1069 Scripts that have syntax errors can fail silently

If a field has a map to the payload containing a reserved word, e.g. class, then the script will fail silently and no error will show in the ActivityLog. Since ServiceNow basically ignores any issues with scripts wherever possible and just stops working when it cannot, a new diagnostic test has been added to ensure that message scripts pass Javascript validation tests.

UN-1078 ActivityLog user is always shown as the user viewing the log

Fixed a bug with Activity Log rendering so it shows the user that created the Activity Log instead of the user viewing it.

UN-1109 Field inherited notification is missing when viewing Portal fields

Fixed notifications and other display issues introduced with form caching by adding manual support for display business rules.

UN-1110 Rest Service details are not populated on the Process

Fixed an issue when creating a new Process where the corresponding REST service details are not automatically populated meaning they would not be packaged.

UN-1117 Empty bonds are created and a duplicate sys_id error is thrown

In newer versions of ServiceNow, several customers have reporting that they very rarely see an issue with an empty bond which ends up stopping the transactions from flowing. This was not an issue until the introduction of the new async business rule processing which executes rules almost immediately. Previous inherent latency with event processing meant the issue was entirely hidden and therefore not a problem. New logic has been added which checks for the bond before the transaction is allowed to move into the processing phase.

UN-1123 Replaying a request a second time will run as the current user

Since the current user inserted the new request, ServiceNow executes the request replay as that user. This is fixed with the use of user impersonation for executing the request as it was originally and is supported by the latest version of Unifi Global Utility.

UN-1124 Messages do not authenticate correctly when using OAuth 2.0

Systems using bidirectional asynchronous integrations between two ServiceNow instances where both instances are using OAuth 2.0 can experience connection problems with receipt processing. This is fixed with the use of user impersonation when sending the receipt and is supported by the latest version of Unifi Global Utility.

UN-1132 Transaction number in queueing message instead of integration

Removed the log section . The integration is "TXN0000098040.01". as the integration and transaction number are already mentioned.

UN-1133 Resuming an Integration does not change the Integration status away from Down

Resuming the integration now sets the status to "Awaiting". Once a transaction completes, the integration is set to "Up".

UN-1138 Poll requests do not have responses attached.

Since the deprecation of the integration attach logs debug feature, successful poll requests no longer have responses stored as attachments. A new field called Attach response payload has been added to the Poller and this is what now controls the payloads.

UN-1144 Duplicate bonds caused by triggering updates to records from parent table query

Fixed an issue where records in a hierarchy (e.g. CMDB) that have been updated on the root table would create bonds for the root table record instead of using the existing bond on the extended table record.

UN-1151 In Designer, browser history navigation does not work records

Fixed navigation in Designer so that the browser history is better maintained.

UN-1155 EventAction triage condition can fail to trigger the action

Fixed an issue where strings were being compared to numbers which would prevent the triage condition from working.

UN-1161 Custom auth headers are masked

In a previous release, Unifi introduced auth header masking on the HTTP Request. While intended only for inbound requests, it was a blanket mask since there should never be any auth headers stored. However, we have since found out that there are some custom auth solutions which manually add the auth header which would then be masked by Unifi and break the integration. This release fixes this issue so custom outbound auth headers are allowed.

UN-1162 Payload to stage errors do not fail an HTTP Request

When an error is thrown in an inbound Payload to Stage script for a synchronous message, the system still attempts to identify the bond reference and the HTTP Request is marked as OK even though an error has occured. With this update, the original logic is used by default (since fixing this would be a breaking change for all customers using synchronous messaging), but the new logic that exits when an error occurs can be used by setting request.$abort_process_with_request_error = true; on the payload to stage message script. This will cause the request to exit and prevent further inbound sync logic from running.

UN-1163 Bonded attachment errors are not flagged as errors for integration notes

Fixed attachment errors so that options.type == "error" making it more easily recognisable by the Integration feedback script.

UN-1168 Diagnostic fails with an error when no Global Uitility is installed

Added a check to prevent this issue from occuring.

UN-1169 Script fields do not work in Designer

Some instances of ServiceNow handle UI Script URL's differently, with inline forward slashes working most of the time, but not all the time. This means the UI Script x_snd_eb.keymap/sublime.min.js may not load and this would prevent scripts from loading. The issue has been fixed by changing the slash to a dot: x_snd_eb.keymap.sublime.min.js.

UN-1171 Outbound heartbeat message fails with a custom stage table

Fixed an issue with internal configuration not being updated so the custom stage table was not known.

UN-1178 Designer navigation is slow due to ServiceNow sessionRotationTrigger update

ServiceNow have introduced a new URL flag to Service Portal which causes the URL to be rewritten after it's been requested, meaning it essentially does a double load. The issue has been fixed by manually adding the flag before ServiceNow does.

UN-1182 Calling ws_console.logActivity without a second parameter will throw an error

Fixed by checking for the second parameter before using it.

UN-1184 Instance names with HTML display badly in Unifi

Unifi Designer displays the name of the instance in the header bar, but this looks terrible for instances that have HTML in the instance name. HTML is now stripped from the instance name in Designer so it renders nicely.

Fixed the company table reference so that the links work properly in the operations dashboard.

UN-1193 Editing field order from a message field list view doesn't save

Fixed a bug with field level ACLs so they render correctly in Designer. The field order cannot be written to when it is an inherited field.

UN-1195 Message scripts are built with a missing semi-colon which causes lint error

Added a semi-colon to the checkpoint definition in automatically generated Message Scripts. The script is updated when it is next built.

UN-1196 Using Ctrl + M in the Message Script Editor does not work properly

Fixed Designer so full screen mode in script editors now renders nicely.

UN-1199 Portal does not render glide_time fields correctly

Added support for GlideTime fields in Designer which are not natively supported in Service Portal. This allows Pollers and Datasets to use proper scheduling.

Fixed an issue in Designer where target link generation would still occur even if there was no sys_id on the reference.

UN-1206 Warnings are not highlighted correctly in Activity Logs

Fixed invalid CSS in the Activity Log renderer.

UN-1210 Creating new records from a list in Designer does not always show default values

Added manual display rule support so that forms can be rendered quickly using caching but new values are still populated as expected.

UN-1211 New fields created from a message in Designer do not use the message table

Fields now use the Message table if related to a Message, otherwise they will default to the Process table.

Last updated