[BUG] Errors modifying UDTs

8.0.1

I’ve noticed a few bugs when adding and modifying UDTs in v8.

One in particular is the following when I attempted to add a number of OPC tags into a UDT into the
‘Details’ folder. The changes seems to have gone through however, but the tag editor just comes up with this on OK. The changes haven’t gone in

14:05:55.172 [AWT-EventQueue-0] ERROR com.inductiveautomation.ignition.designer.tags.editing.dialog.TagEditorDialog - Error saving tag changes.
java.util.concurrent.ExecutionException: java.lang.IndexOutOfBoundsException: Index 20 out of bounds for length 20
	at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
	at com.inductiveautomation.ignition.designer.tags.editing.dialog.TagEditorDialog.doApplyAction(TagEditorDialog.java:420)
	at com.inductiveautomation.ignition.designer.tags.editing.dialog.TagEditorDialog.doOkAction(TagEditorDialog.java:466)
	at com.inductiveautomation.ignition.designer.tags.editing.dialog.TagEditorDialog$2.actionPerformed(TagEditorDialog.java:182)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
	at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.Component.processEvent(Unknown Source)
	at java.desktop/java.awt.Container.processEvent(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.IndexOutOfBoundsException: Index 20 out of bounds for length 20
	at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source)
	at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unknown Source)
	at java.base/jdk.internal.util.Preconditions.checkIndex(Unknown Source)
	at java.base/java.util.Objects.checkIndex(Unknown Source)
	at java.base/java.util.ArrayList.get(Unknown Source)
	at com.inductiveautomation.ignition.gateway.util.GroupMapCollate.lambda$groupMapCollateIndexed$4(GroupMapCollate.java:57)
	at java.base/java.util.concurrent.CompletableFuture.uniAcceptNow(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.uniAcceptStage(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.thenAccept(Unknown Source)
	at com.inductiveautomation.ignition.gateway.util.GroupMapCollate.lambda$groupMapCollateIndexed$5(GroupMapCollate.java:55)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
	at java.base/java.util.HashMap$EntrySpliterator.forEachRemaining(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source)
	at com.inductiveautomation.ignition.common.util.Futures.sequence(Futures.java:26)
	at com.inductiveautomation.ignition.gateway.util.GroupMapCollate.groupMapCollateIndexed(GroupMapCollate.java:62)
	at com.inductiveautomation.ignition.gateway.util.GroupMapCollate.groupMapCollate(GroupMapCollate.java:28)
	at com.inductiveautomation.ignition.client.tags.impl.ClientTagManagerImpl.saveTagConfigsAsync(ClientTagManagerImpl.java:284)
	... 38 common frames omitted

That definition of this UDT is:

{
  "accessRights": "Read_Write",
  "dataType": "Int4",
  "name": "VSD",
  "tagGroup": "Default",
  "parameters": {
    "Unit": "",
    "Description": "",
    "Index": "",
    "PLCName": "",
    "DeviceName": "",
    "Global.": ""
  },
  "enabled": true,
  "tagType": "UdtType",
  "tags": [
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.SpeedSP"
      },
      "engUnit": {
        "bindType": "parameter",
        "binding": "{Unit}"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "historyProvider": "SQLServer",
      "dataType": "Float4",
      "historyEnabled": true,
      "name": "Speed SP",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Alarms"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "dataType": "Int2",
      "name": "VSD Alarm Word",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "valueSource": "expr",
      "expression": "case({[.]Status}\r\n, 0, \u0027Stopped\u0027\r\n, 1, \u0027Running\u0027\r\n, 2, \u0027Fault\u0027\r\n, \u0027Invalid\u0027)",
      "dataType": "String",
      "name": "Status Desc",
      "tagType": "AtomicTag"
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Sim"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "historyProvider": "SQLServer",
      "dataType": "Boolean",
      "historyEnabled": true,
      "name": "Simulation",
      "engLimitMode": "Clamp_Both",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.RunTimeResetPB"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "dataType": "Boolean",
      "name": "Run Time Reset CMD",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "accessRights": "Read_Write",
      "dataType": "Int4",
      "name": "Alarms",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "Folder",
      "tags": [
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Alm_ServiceWarn"
          },
          "accessRights": "Read_Write",
          "valueSource": "opc",
          "dataType": "Boolean",
          "alarms": [
            {
              "setpointA": 1.0,
              "activePipeline": "SMS",
              "name": "Alarm",
              "Category": "Process",
              "ackMode": "Auto",
              "label": {
                "bindType": "Expression",
                "value": "{itemName}"
              },
              "displayPath": {
                "bindType": "Expression",
                "value": "{Description}"
              }
            }
          ],
          "name": "Service Due",
          "tagGroup": "Default",
          "enabled": true,
          "tagType": "AtomicTag",
          "opcServer": "Ignition OPC-UA Server"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Alm_CB_Fault"
          },
          "accessRights": "Read_Write",
          "valueSource": "opc",
          "dataType": "Boolean",
          "alarms": [
            {
              "setpointA": 1.0,
              "activePipeline": "SMS",
              "name": "Alarm",
              "label": {
                "bindType": "Expression",
                "value": "{itemName}"
              },
              "Category": "Process",
              "priority": "High",
              "displayPath": {
                "bindType": "Expression",
                "value": "{Description}"
              },
              "ackMode": "Auto"
            },
            {
              "name": "Alarm 3"
            },
            {
              "name": "Alarm 1"
            },
            {
              "name": "Alarm 2"
            }
          ],
          "name": "CB Fault",
          "tagGroup": "Default",
          "enabled": true,
          "tagType": "AtomicTag",
          "opcServer": "Ignition OPC-UA Server"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Alm_FlowSwFault"
          },
          "accessRights": "Read_Write",
          "valueSource": "opc",
          "dataType": "Boolean",
          "alarms": [
            {
              "setpointA": 1.0,
              "activePipeline": "SMS",
              "name": "Alarm",
              "label": {
                "bindType": "Expression",
                "value": "{itemName}"
              },
              "Category": "Process",
              "priority": "High",
              "displayPath": {
                "bindType": "Expression",
                "value": "{Description}"
              },
              "ackMode": "Auto"
            },
            {
              "name": "Alarm 3"
            },
            {
              "name": "Alarm 1"
            },
            {
              "name": "Alarm 2"
            }
          ],
          "name": "Flow Switch Fault",
          "tagGroup": "Default",
          "enabled": true,
          "tagType": "AtomicTag",
          "opcServer": "Ignition OPC-UA Server"
        },
        {
          "accessRights": "Read_Write",
          "valueSource": "expr",
          "expression": "{[.]Failed to Start} ||\n{[.]Failed to Stop} ||\n{[.]VSD Fault}",
          "dataType": "Boolean",
          "name": "_AnyActive",
          "tagGroup": "Default",
          "enabled": true,
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Alm_VSDFault"
          },
          "accessRights": "Read_Write",
          "valueSource": "opc",
          "dataType": "Boolean",
          "alarms": [
            {
              "setpointA": 1.0,
              "activePipeline": "SMS",
              "name": "Alarm",
              "label": {
                "bindType": "Expression",
                "value": "{itemName}"
              },
              "Category": "Mechanical",
              "priority": "High",
              "displayPath": {
                "bindType": "Expression",
                "value": "{Description}"
              },
              "ackMode": "Auto"
            },
            {
              "name": "Alarm 3"
            },
            {
              "name": "Alarm 1"
            },
            {
              "name": "Alarm 2"
            }
          ],
          "name": "VSD Fault",
          "tagGroup": "Default",
          "enabled": true,
          "tagType": "AtomicTag",
          "opcServer": "Ignition OPC-UA Server"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Alm_ServiceWarn"
          },
          "accessRights": "Read_Write",
          "valueSource": "opc",
          "dataType": "Boolean",
          "alarms": [
            {
              "setpointA": 1.0,
              "activePipeline": "SMS",
              "name": "Alarm",
              "Category": "Process",
              "ackMode": "Auto",
              "label": {
                "bindType": "Expression",
                "value": "{itemName}"
              },
              "displayPath": {
                "bindType": "Expression",
                "value": "{Description}"
              }
            }
          ],
          "name": "Service Warning",
          "tagGroup": "Default",
          "enabled": true,
          "tagType": "AtomicTag",
          "opcServer": "Ignition OPC-UA Server"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Alm_StopFault"
          },
          "accessRights": "Read_Write",
          "valueSource": "opc",
          "dataType": "Boolean",
          "alarms": [
            {
              "setpointA": 1.0,
              "activePipeline": "SMS",
              "name": "Alarm",
              "label": {
                "bindType": "Expression",
                "value": "{itemName}"
              },
              "Category": "Process",
              "priority": "High",
              "displayPath": {
                "bindType": "Expression",
                "value": "{Description}"
              },
              "ackMode": "Auto"
            },
            {
              "name": "Alarm 3"
            },
            {
              "name": "Alarm 1"
            },
            {
              "name": "Alarm 2"
            }
          ],
          "name": "Failed to Stop",
          "tagGroup": "Default",
          "enabled": true,
          "tagType": "AtomicTag",
          "opcServer": "Ignition OPC-UA Server"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Alm_CommFault"
          },
          "accessRights": "Read_Write",
          "valueSource": "opc",
          "dataType": "Boolean",
          "alarms": [
            {
              "setpointA": 1.0,
              "activePipeline": "SMS",
              "name": "Alarm",
              "label": {
                "bindType": "Expression",
                "value": "{itemName}"
              },
              "Category": "Process",
              "priority": "High",
              "displayPath": {
                "bindType": "Expression",
                "value": "{Description}"
              },
              "ackMode": "Auto"
            },
            {
              "name": "Alarm 3"
            },
            {
              "name": "Alarm 1"
            },
            {
              "name": "Alarm 2"
            }
          ],
          "name": "Comms Fault",
          "tagGroup": "Default",
          "enabled": true,
          "tagType": "AtomicTag",
          "opcServer": "Ignition OPC-UA Server"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Alm_StartFault"
          },
          "accessRights": "Read_Write",
          "valueSource": "opc",
          "dataType": "Boolean",
          "alarms": [
            {
              "setpointA": 1.0,
              "activePipeline": "SMS",
              "name": "Alarm",
              "label": {
                "bindType": "Expression",
                "value": "{itemName}"
              },
              "Category": "Process",
              "priority": "High",
              "displayPath": {
                "bindType": "Expression",
                "value": "{Description}"
              },
              "ackMode": "Auto"
            },
            {
              "name": "Alarm 3"
            },
            {
              "name": "Alarm 1"
            },
            {
              "name": "Alarm 2"
            }
          ],
          "name": "Failed to Start",
          "tagGroup": "Default",
          "enabled": true,
          "tagType": "AtomicTag",
          "opcServer": "Ignition OPC-UA Server"
        }
      ]
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Man"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "dataType": "Boolean",
      "documentation": "0 - automatic, 1 - manual",
      "name": "Mode",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "valueSource": "expr",
      "expression": "numberFormat(floor({[.]/Run Total Seconds}/(60*60*24)), \u0027000\u0027) + \u0027:\u0027 + // Days\r\nnumberFormat(floor(({[.]/Run Total Seconds}/(60*60))%24), \u002700\u0027) + \u0027:\u0027 + //Hours \r\nnumberFormat(floor(({[.]/Run Total Seconds}/60)%60), \u002700\u0027) //Minutes",
      "dataType": "String",
      "name": "Run Time",
      "tagType": "AtomicTag"
    },
    {
      "valueSource": "expr",
      "expression": "case({[.]Mode}\r\n, 0, \u0027Auto\u0027\r\n, 1, \u0027Manual\u0027\r\n, \u0027Invalid\u0027)",
      "dataType": "String",
      "name": "Mode Desc",
      "tagType": "AtomicTag"
    },
    {
      "name": "Details",
      "tagType": "Folder",
      "tags": [
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.MotorThermal"
          },
          "valueSource": "opc",
          "name": "Motor Thermal",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.NoOfStarts"
          },
          "valueSource": "opc",
          "name": "Number of Starts",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.ServiceRem"
          },
          "valueSource": "opc",
          "name": "Service Time Remaining",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.SpeedRPM"
          },
          "valueSource": "opc",
          "name": "Fault Code 4",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.ServicePB"
          },
          "valueSource": "opc",
          "name": "Service Time Reset CMD",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.Power"
          },
          "valueSource": "opc",
          "name": "Power",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.Current"
          },
          "valueSource": "opc",
          "name": "Current",
          "tagType": "AtomicTag",
          "opcServer": "Ignition OPC-UA Server"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.Voltage"
          },
          "valueSource": "opc",
          "name": "Voltage",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.Voltage"
          },
          "valueSource": "opc",
          "name": "Fault Code 3",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.FaultCode"
          },
          "valueSource": "opc",
          "name": "Fault Code",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.ServiceIntSP"
          },
          "valueSource": "opc",
          "name": "Service Interval SP",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.SpeedRPM"
          },
          "valueSource": "opc",
          "name": "Speed RPM",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.Frequency"
          },
          "valueSource": "opc",
          "name": "Frequency",
          "tagType": "AtomicTag"
        },
        {
          "opcItemPath": {
            "bindType": "parameter",
            "binding": "ns\u003d1;s\u003d[{PLCName}]{DeviceName}.DriveThermal"
          },
          "valueSource": "opc",
          "name": "Drive Thermal",
          "tagType": "AtomicTag"
        }
      ]
    },
    {
      "value": {
        "bindType": "parameter",
        "binding": "{Description}"
      },
      "accessRights": "Read_Write",
      "valueSource": "memory",
      "dataType": "String",
      "name": "Description",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "AtomicTag"
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.StopPB"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "dataType": "Boolean",
      "name": "Stop CMD",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "valueSource": "expr",
      "expression": "({[.]/Run Hours}*60.0 + {[.]/Run Minutes})*60.0",
      "dataType": "Float8",
      "name": "Run Total Seconds",
      "tagType": "AtomicTag"
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.ResetPB"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "dataType": "Boolean",
      "name": "Alarm Reset CMD",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.RunMin"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "dataType": "Int8",
      "name": "Run Minutes",
      "tagGroup": "Default",
      "enabled": true,
      "engUnit": "min",
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.FS_Sts"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "dataType": "Int8",
      "documentation": "Lead Order assigned to pump",
      "name": "Flow Switch",
      "tagGroup": "Default",
      "enabled": true,
      "engUnit": "hrs",
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.ActSpeed"
      },
      "engUnit": {
        "bindType": "parameter",
        "binding": "{Unit}"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "historyProvider": "SQLServer",
      "dataType": "Float4",
      "historyEnabled": true,
      "name": "Speed PV",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.Sts"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "historyProvider": "SQLServer",
      "dataType": "Int8",
      "historyEnabled": true,
      "name": "Status",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.RunHour"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "dataType": "Int8",
      "name": "Run Hours",
      "tagGroup": "Default",
      "enabled": true,
      "engUnit": "hrs",
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    },
    {
      "opcItemPath": {
        "bindType": "parameter",
        "binding": "ns\u003d1;s\u003d[{PLCName}]{Global.}{DeviceName}.StartPB"
      },
      "accessRights": "Read_Write",
      "valueSource": "opc",
      "dataType": "Boolean",
      "name": "Start CMD",
      "tagGroup": "Default",
      "enabled": true,
      "tagType": "AtomicTag",
      "opcServer": "Ignition OPC-UA Server"
    }
  ]
}

I tried this with your UDT on a 8.0.2 nightly build, and didn’t hit the same error. At some point, can you try the nightly build and see if the same error is still there?

I can never seem to reproduce these errors. They just seem to happen sporadically and they cause other strange things as well with the tags. For example I copied this udt with a new name and set the instances to use the new one, then these instances suddenly had no tags in them. I tried changing the instances back to the old udt but same thing. In the end, resaving the tag provider in the gateway resolved the issues. It seems to get itself in a twist after a while.