UDT Instance Behavior During Upgrade

Recently we have started upgrading a lot of our gateways to take advantage of new features (ex: feature 2155).

Today we had a case where there seemingly was instances of UDT’s that had parameters that were not defined in the UDT. It seems that when the upgrade happened, Ignition rebuilt the tags vs. the UDT definition and the parameters disappeared making all the tag values bad.

I have 2 questions:

  1. Is it even possible to have a parameter defined on an instance of a UDT that is not defined on the UDT itself?

  2. When doing a version upgrade, does Ignition verify the tags vs. the UDT definitions?

For 2) I don’t know if that is what is happening, its just what it seems like based on what we see.



Up to 8.1.12 (iirc), you could actually write parameters to UDTs that weren’t part of the definition. I used to do that with the following syntax:
system.tag.writeBlocking(['[default]myUdt/parameters.myParam'], ['paramValue'])

That functionality seems to have been removed recently - I had to remove that functionality from my UDTs (probably for the best, it was kind of hacky :sweat_smile:). May or may not be related to what you’re seeing.

Yeah, from what I am seeing, the UDT instances were made in such a fashion that the parameters were not included in the definition. Judging by the outcome yesterday, they then disappear some time later (in our case when doing version upgrade).

At least from this case I have seen, having parameters on a UDT instance that are not in the UDT definition is bad behavior…its under the list of THOU SHALL NOT.