# Tag Change script works as normal tag but not as UDT tag

**URL:** <https://forum.inductiveautomation.com/t/tag-change-script-works-as-normal-tag-but-not-as-udt-tag/33178>\
**Category:** Ignition\
**Tags:** ignition80, scripting\
**Created:** [March 17, 2020, 7:51pm UTC](https://forum.inductiveautomation.com/t/tag-change-script-works-as-normal-tag-but-not-as-udt-tag/33178 "2020-03-17T19:51:08Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![wci.jgiese](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/wci.jgiese/32/50225_2.png) [@wci.jgiese](https://forum.inductiveautomation.com/u/wci.jgiese)\
**Post date:** [March 17, 2020, 7:51pm UTC](https://forum.inductiveautomation.com/t/tag-change-script-works-as-normal-tag-but-not-as-udt-tag/33178/1 "2020-03-17T19:51:08Z")

</div>

I have a tag change event that based on one tag will disable or enable other tags. This script below works under normal circumstances but as a UDT it will not work. The script below is defined in my Project Library and I call it from the tag change event.

```auto
def SetEnabled(tagPath, value):
	system.tag.editTag(tagPath, attributes={"enabled": value})

```

As a UDT it produces the following in the log.

**Error publishing tag change event.**

```auto
java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: java.lang.String. Forgot to register a type adapter?

at com.google.gson.internal.bind.TypeAdapters$1.write(TypeAdapters.java:73)

at com.google.gson.internal.bind.TypeAdapters$1.write(TypeAdapters.java:69)

at com.google.gson.TypeAdapter$1.write(TypeAdapter.java:191)

at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69)

at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:97)

at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:61)

at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69)

at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127)

at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245)

at com.google.gson.internal.bind.ObjectTypeAdapter.write(ObjectTypeAdapter.java:107)

at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69)

at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127)

at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245)

at com.google.gson.Gson.toJson(Gson.java:704)

at com.google.gson.Gson.toJson(Gson.java:683)

at com.google.gson.Gson.toJson(Gson.java:638)

at com.google.gson.Gson.toJson(Gson.java:618)

at com.jnjdodev.ignition.modules.websocket.UtilSingleton$1.tagChanged(UtilSingleton.java:92)

at com.inductiveautomation.ignition.gateway.tags.subscriptions.ProviderSubscriptionManagerImpl$TagChangePublish.run(ProviderSubscriptionManagerImpl.java:1093)

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.base/java.util.concurrent.FutureTask.run(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.base/java.lang.Thread.run(Unknown Source)

```

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/2X/e/ea9975715a3be91080650de1bea3689b36a35847.png)

---

<div class="post-metadata">

**Author:** ![wci.jgiese](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/wci.jgiese/32/50225_2.png) [@wci.jgiese](https://forum.inductiveautomation.com/u/wci.jgiese)\
**Post date:** [March 17, 2020, 7:57pm UTC](https://forum.inductiveautomation.com/t/tag-change-script-works-as-normal-tag-but-not-as-udt-tag/33178/2 "2020-03-17T19:57:42Z")

</div>

Maybe I need to do it using something with the overrides?

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/2X/9/997fa522d3ef5cfe290ec54685955e1e58dbae90.png)

---

<div class="post-metadata">

**Author:** ![Sunny](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/sunny/32/13319_2.png) [@Sunny](https://forum.inductiveautomation.com/u/Sunny)\
**Post date:** [March 17, 2020, 7:58pm UTC](https://forum.inductiveautomation.com/t/tag-change-script-works-as-normal-tag-but-not-as-udt-tag/33178/3 "2020-03-17T19:58:02Z")

</div>

I would suggest using a [Leased Tag Group](https://docs.inductiveautomation.com/display/DOC80/Leased+Mode) and disable the pulling (set to 0) when not on screen, and toggle the display with Roll\_1\_Installed.

---

<div class="post-metadata">

**Author:** ![wci.jgiese](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/wci.jgiese/32/50225_2.png) [@wci.jgiese](https://forum.inductiveautomation.com/u/wci.jgiese)\
**Post date:** [March 17, 2020, 8:08pm UTC](https://forum.inductiveautomation.com/t/tag-change-script-works-as-normal-tag-but-not-as-udt-tag/33178/4 "2020-03-17T20:08:15Z")

</div>

> [@Sunny](#):
>
> suggest using a [Leased Tag Group](https://docs.inductiveautomation.com/display/DOC80/Leased+Mode)

I think that only applies to perspectives right? We have our own web HMI so I'm not sure leased applies. That being said I do have a solution worked out. Looks like the overrides tag edit did the trick

My new method for enable disable is below. Seems to work great! Thank you for the input!

```auto
def SetEnabledUDT(udtTag, tagPath, value):
	system.tag.editTag(udtTag, overrides={tagPath:{"enabled": value}})

```

---

<div class="post-metadata">

**Author:** ![Sunny](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/sunny/32/13319_2.png) [@Sunny](https://forum.inductiveautomation.com/u/Sunny)\
**Post date:** [March 17, 2020, 8:11pm UTC](https://forum.inductiveautomation.com/t/tag-change-script-works-as-normal-tag-but-not-as-udt-tag/33178/5 "2020-03-17T20:11:57Z")

</div>

The leased works with Vision and Perspectives (Ignition clients). If you are only using Ignition as a OPC-UA Server only, I’m not sure if the Leased mode would work, maybe @paul-griffith has a better answer for you here.
