ExtendedProperties xml import fails

Ignition 7.6.2

I exported tags from a 7.6.2 gateway and then attempted to import them into another 7.6.2 gateway.

The tags include Memory Tags with a value set to {UDT Parameter Name} since I need to reference UDT Parameters from Expression Tags.

On a similar note, allowing Expression Tags to directly reference UDT Parameters would make more sense to me.

Error Message:
org.xml.sax.SAXException: Cannot coerce value ‘{DeviceName=DEVICE_NAME}’ into type: interface com.inductiveautomation.ignition.common.config.PropertySet
java.lang.ClassCastException: Cannot coerce value ‘{DeviceName=DEVICE_NAME}’ into type: interface com.inductiveautomation.ignition.common.config.PropertySet

caused by ClassCastException: Cannot coerce value '{DeviceName=DEVICE_NAME}' into type: interface com.inductiveautomation.ignition.common.config.PropertySet

Ignition v7.6.2 (b2368)
Java: Oracle Corporation 1.7.0_25

Tag XML Excerpt:

{DeviceName=DEVICE_NAME}

Output Console (I do not know if this is related):
WARN [XMLImport-ClientProgressManager-thread-1] Tag ‘TAG_NAME’ has overriden values for non-existent parent member ‘/PARENT_TAG_NAME’. Overriden values will not be correctly applied.

I wrote a script to parse the tag export and disregard all lines that included the text “ExtendedProperties” and was able to import the tags. I do not yet know if this has other negative implications.

Would it be possible for you to post your full XML so that we can try and mock this up here?

Any word on a fix for this (besides removing all of the extended property elements)? I just encountered the same problem.

Literally all I did was export my tag database, search and replace the device name on a bunch of tags and try to re-import and I get this error. I even get the error when I try to import my original export file. Very frustrating since I cleared out my tag database first to avoid creating a bunch of duplicates.

Hi,

Yes, we have tracked this down, although unfortunately it didn’t make it into 7.6.3.

Basically, parameter values on udt instances inside of other udts aren’t being exported correctly.

The example given:

<Tag name="Panel2" path="" type="EXTENSION"> <Property name="ExtendedProperties">{DeviceName=DEVICE_NAME}</Property> </Tag>

should actually be:

<Tag name="Panel2" path="" type="EXTENSION"> <Parameters> <Property name="DeviceName" type="String">DEVICE_NAME</Property> </Parameters> </Tag>

If you make it like this yourself, it will import correctly. As it stands, removing it means that your instances won’t have the correct parameter values.

You mean in the expression? They definitely can reference them, there’s even a helper button to the right for it. The only real trick of it is that you need to visualize what the expression will look like when the value is swapped it, which is a little different than how tag references work. For example, if you had a parameter called “PersonName”, the correct syntax would be:

"Hello, {PersonName}"

Instead of: "Hello, "+{PersonName} that you’d have with a tag reference. This is because parameters are all replaced before then building the tag.

The export problem will be fixed in the first 7.6.4 beta.

Regards,