Unifi 4.0 Release Notes
Release date: 12 September, 2022
Last updated
Release date: 12 September, 2022
Last updated
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!
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.
Diagnose and managed your integration with the new Integration Dashboard, containing stats, diagnostics, and access to common integration development actions.
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.
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:
Change to the Unifi application scope
Navigate to the Snapshot table object (/sys_db_object.do?sys_id=cbe6eb84db856010d78869091396198b), and
Click "Delete All Records".
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.)
A new diagnostic test has been added to ensure the inbound users specified on a Connection has the x_snd_eb.integration role.
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
A field that has its configuration inherited by child fields now shows a list of those inherited fields.
The list of fields in Designer now shows more columns to make it easier to find and identify fields.
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.
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
.
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.
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.
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.
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.
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.
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.
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.
Minor label update to show that ${code}
and {code}
are valid in the Message path field for running inline code.
Executing a Poller in Designer will now open the new Poll Request.
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.
A new cascading job has been introduced to cleanup Snapshot records.
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.
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.
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.
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.
Introduced the new Dataset feature to allow mass data import and export within Unifi.
A new Message type called Dataset has been added to support Dataset processing. Dataset messages are not processed by Unifi trigger rules.
Datasets are packaged with integrations for export.
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.
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.
Integration is now always shown in Response Action and Event Action lists, making it easier to distinguish between integration specific and Unifi specific records.
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.
Introduced a new rule to prevent more than one Heartbeat message being active at one time.
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.
The embedded list of fields on a message in Designer now shows all integration level fields, not just those that specify a table.
Creating a new record in Designer using a modal will now always have default values reset.
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.
Fixed a bug where fields were not being checked for readonly.
Field name changes are now inherited by all child fields.
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.
Fixed a bug with Activity Log rendering so it shows the user that created the Activity Log instead of the user viewing it.
Fixed notifications and other display issues introduced with form caching by adding manual support for display business rules.
Fixed an issue when creating a new Process where the corresponding REST service details are not automatically populated meaning they would not be packaged.
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.
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.
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.
Removed the log section . The integration is "TXN0000098040.01".
as the integration and transaction number are already mentioned.
Resuming the integration now sets the status to "Awaiting". Once a transaction completes, the integration is set to "Up".
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.
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.
Fixed navigation in Designer so that the browser history is better maintained.
Fixed an issue where strings were being compared to numbers which would prevent the triage condition from working.
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.
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.
Fixed attachment errors so that options.type == "error"
making it more easily recognisable by the Integration feedback script.
Added a check to prevent this issue from occuring.
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
.
Fixed an issue with internal configuration not being updated so the custom stage table was not known.
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.
Fixed by checking for the second parameter before using it.
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.
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.
Added a semi-colon to the checkpoint definition in automatically generated Message Scripts. The script is updated when it is next built.
Fixed Designer so full screen mode in script editors now renders nicely.
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.
Fixed invalid CSS in the Activity Log renderer.
Added manual display rule support so that forms can be rendered quickly using caching but new values are still populated as expected.
Fields now use the Message table if related to a Message, otherwise they will default to the Process table.