We found a notable regression in 8.1.6 LTS, and have since removed that build from our downloads page. The next 8.1 release, 8.1.7, will soon be released to fix the reported issue.
In 8.1.6, if you import a UDT definition using an Overwrite collision policy, then members in instances of that UDT would unintentionally lose their overrides.
This means members (tags) in existing UDT instances would lose some of their configurations, resulting in them behaving differently after the import.
Should a system run into this issue, then you will need to add the overrides back. This can be done either by importing from a tag provider export that contains the UDT instances and overrides on their members, performing a gateway restore with a backup from prior to the UDT import, or by manually adding the overrides back.
We’ve identified the following cases on 8.1.6 systems that can cause the unintended behavior:
- Using system.tag.configure with an Overwrite collision policy to modify a UDT definition.
- Importing UDT definitions using the Tag Browser, while using an Overwrite collision policy (note the section on Tag Imports under the Workarounds section)
- Modifying a UDT definition by pasting JSON into the Tag Browser: pasting JSON like this always implicitly uses an Overwrite policy.
The actions listed above are the only known cause of the issue. As long as you have not performed any of the actions, then your system likely has not been impacted by the issue mentioned above.
A fix for this issue was implemented into Ignition Version 8.1.7 or greater. Systems on version 8.1.6 should upgrade as soon as possible.
In cases where immediate upgrades are not possible, the following information can help avoid any unintended effects.
Tag Imports Should Contain Member Overrides
When importing tags from a tag import file, if the import file contains both UDT definitions and instances of that UDT with their configured overrides, then you will not run into the issue.
The core problem is that using an Overwrite collision policy on a UDT definition causes instances of that definition to lose member overrides. Thus, if the import file also contains instances and their overrides, the import procedure will simply use the configurations in the file.
In short: if you’re going to import UDT definitions on 8.1.6, make sure the import file includes configurations for all the existing instances as well.
Use a MergeOverwrite Collision Policy
Should you need to import via system.tag.configure or the Tag Browser’s import functionality, select MergeOverwite for the collision policy instead.
While MergeOverwrite behaves differently than Overwrite, functionally they overlap somewhat, making it ideal to use instead of Overwrite.