> For the complete documentation index, see [llms.txt](https://docs.sharelogic.com/unifi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sharelogic.com/unifi/install/critical-upgrade-notice.md).

# CRITICAL UPGRADE NOTICE

**Affects Unifi 4.3, 4.4, and 4.5 starting in ServiceNow Zurich Patch 10 Hotfix 3, Zurich Patch 11, and Australia Patch 4**

**Last updated:** Aug 14, 2026

{% hint style="info" %}
**Update – August 2026**

Unifi **4.5.1** is now available and resolves the outbound messaging issues caused by ServiceNow’s GlideScopedEvaluator changes (Zurich Patch 10 Hotfix 3, Zurich Patch 11, Australia Patch 4, and all future ServiceNow versions).

This is a pure patch release containing only the required fixes.

* If you are still on a version older than 4.5 and are not yet ready to upgrade, continue to apply the workaround documented below.
* When upgrading to 4.5.1, ensure any local updates are reverted to the versions delivered with the application so that future updates are applied correctly.
* Always test thoroughly in a sub-production environment before promoting changes to production.
  {% endhint %}

## Overview

ServiceNow has introduced backend security changes in **Zurich Patch 10 Hotfix 3**, **Zurich Patch 11**, and **Australia Patch 4** that cause **breaking issues** in Unifi’s outbound messaging functionality.

*Note: This is not a bug, but a change in the way ServiceNow works and we expect future versions to continue to be affected.*

These changes impact core Unifi behavior and will prevent outbound messages from being sent unless the fixes below are applied when upgrading.

{% hint style="warning" %}
We recommend applying fixes before upgrading to ensure functionality. If you have already upgraded, we  suggest applying the workaround as soon as possible and checking that recently modified records are integrated correctly.
{% endhint %}

## Issues

1. **Outbound Condition Script Failure**\
   The condition script defined on Outbound Messages is no longer evaluated correctly. Messages using a single-line condition script will fail to send. Activity Log will show "Message condition script did not permit."
2. **Outbound HTTP Requests Missing Endpoint**\
   Outbound HTTP Request records are created without an endpoint value, preventing outbound communication.
3. **XML Template Messages Failing**\
   Messages using the XML Template feature will not work unless the Global Utility is installed.

**Root Cause:**\
All issues are caused by ServiceNow’s internal security updates to the **GlideScopedEvaluator API**, which Unifi uses extensively.

## Workaround

{% hint style="info" %}
**Note:** The fixes below apply to all supported versions of Unifi.
{% endhint %}

These actions require the admin role. We recommend capturing changes in an update set.

### Fix 1: Update Message Outbound Condition

1. Navigate to the **Message** table.
2. Find the Outbound condition string field, right click the label and **Configure Dictionary.**
3. Change the **Type** to **Condition String**.

<figure><img src="/files/EyLvoArO8zDht9LxZ18U" alt="Field dictionary screenshot" width="375"><figcaption></figcaption></figure>

### Fix 2: Update Apply Hotfix Script

Append the following script to the Unifi **hotfix** Script Include.

The hotfix makes use of the OOB global CTIEvaluator Script Include. Please ensure this has not been modified and continues to be available for scoped application access.

{% code overflow="wrap" %}

```javascript
/**
 * This hotfix fixes critical issues introduced in Zurich patch 11 and Australia
 * patch 4.
 * 
 * Traditional methods of using GlideScopedEvaluator to evaluate inline scripts
 * in templates no longer work since ServiceNow have prevented dynamic script
 * execution in scoped apps.
 * 
 * The only workaround we have right now is to use the global CTIEvaluator class
 * which happens to be available to all scopes OOB.
 */
hotfix.JellyRunnerLite = function (JellyRunnerLite) {

  JellyRunnerLite.prototype.setVars = function (vars, use_jvar) {
    var jvar = use_jvar ? 'jvar_' : '';

    this.eval_vars = this.eval_vars || {};
    this.eval_vars.jelly = this.eval_vars.jelly || {};
  
    vars = vars || {};
    for (var prop in vars) {
      this.eval_vars[jvar + prop] = vars[prop];
      if (use_jvar) {
        this.eval_vars.jelly[jvar + prop] = vars[prop];
      }
    }
  };

  JellyRunnerLite.prototype._processScript = function (script) {
    var try_script = 'try { ' + script + ';\n} ' +
        'catch (ex) { x_snd_eb.ws_console.error(ex); ex}';
    
    var evaluator = new global.CTIEvaluator('', this.eval_vars);
    evaluator.expression = try_script;
    
    var result = evaluator.evaluate();

    // Return empty string for null/undefined to avoid "null" or "undefined" in output
    if (result === null || result === undefined) {
        return '';
    }

    return String(result);
  };

};
```

{% endcode %}

## Recommendations

* For best results, apply both fixes to Unifi **before** upgrading to the affected ServiceNow versions.
* Thoroughly test all outbound integrations in a sub-production instance after applying the fixes and completing the upgrade.
* Consider delaying the ServiceNow upgrade until these changes have been validated in your environment.

A more permanent solution will be included in a future Unifi release.
