# Bidirectional binding to UDT parameter

**URL:** <https://forum.inductiveautomation.com/t/bidirectional-binding-to-udt-parameter/107603>\
**Category:** Ignition\
**Created:** [June 20, 2025, 3:09am UTC](https://forum.inductiveautomation.com/t/bidirectional-binding-to-udt-parameter/107603 "2025-06-20T03:09:07Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ASF](https://avatars.discourse-cdn.com/v4/letter/a/c4cdca/32.png) [@ASF](https://forum.inductiveautomation.com/u/ASF)\
**Post date:** [June 20, 2025, 3:09am UTC](https://forum.inductiveautomation.com/t/bidirectional-binding-to-udt-parameter/107603/1 "2025-06-20T03:09:07Z")

</div>

I have a UDT which has a parameter called `Alarm Priority`, which is used to automatically set all alarms within the UDT to the same user-specified priority. The user enters Critical, High, Medium, Low or Diagnostic when the UDT is created, and the UDT extrapolates it into the required priority value with appropriate input conditioning and fallback values.

Now I would like to give an engineer the ability to modify the alarm priority at runtime, because from time to time someone in their infinite wisdom will decide that a certain alarm should be a higher priority than the one specified in the functional specification. I have created a dropdown and added five options (Critical, High, Medium, Low and Diagnostic), and bound the `value` to `{tagPath}/Parameters.Alarm Priority`. It correctly displays the alarm priority. However, when I set the binding to bidirectional, it does not update the UDT parameter value at runtime.

I have found a solution by setting the binding to be uni-directional, and putting a change script on the `value` property of the dropdown which uses `system.tag.writeAsync` to write to the UDT parameter, and this works.

Just wanted to know if my original idea should have worked but I was doing something wrong, or if there's an inherent limitation that means bindings can't write to UDT properties?

---

<div class="post-metadata">

**Author:** ![Chris\_Bingham](https://avatars.discourse-cdn.com/v4/letter/c/e5b9ba/32.png) [@Chris\_Bingham](https://forum.inductiveautomation.com/u/Chris_Bingham)\
**Post date:** [June 20, 2025, 4:11am UTC](https://forum.inductiveautomation.com/t/bidirectional-binding-to-udt-parameter/107603/2 "2025-06-20T04:11:35Z")

</div>

A couple of related posts:

> [@Perspective Checkbox with UDT Parameter](https://forum.inductiveautomation.com/t/perspective-checkbox-with-udt-parameter/30766/3):
>
> Good news and bad news. Bad news: You can’t do what you’re trying to do, because UDT parameters are read-only through the binding dialog. This is because UDT parameters are used to construct the UDT, and changing the parameters causes the entire UDT to be rebuilt; something you really don’t want for large UDTs and/or large volumes of UDTs. Good news: If this is absolutely important to you, you could use a change script on the checkbox to set the value of the parameter, but you should absolut…

> [@Write to UDT Instance parameter through GW network](https://forum.inductiveautomation.com/t/write-to-udt-instance-parameter-through-gw-network/99526/3):
>
> Hi Chris, Thanks for your reply. Seems like I had to change the access level in the service security for the tag provider from "ReadWrite" to "ReadWriteEdit" to be able to write to parameters. So writing to parameters seems to fall under the "Edit" category.

It seems that your functional solution (using a `system.tag.write*` function) is the preferred method.

---

<div class="post-metadata">

**Author:** ![ASF](https://avatars.discourse-cdn.com/v4/letter/a/c4cdca/32.png) [@ASF](https://forum.inductiveautomation.com/u/ASF)\
**Post date:** [June 20, 2025, 5:20am UTC](https://forum.inductiveautomation.com/t/bidirectional-binding-to-udt-parameter/107603/3 "2025-06-20T05:20:11Z")

</div>

Thanks Chris, I was sure that I'd read something about it before but my keywords were not keywording today to find them!
