# Access UDT root custom property inside a Tag Expression

**URL:** <https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361>\
**Category:** Ignition\
**Created:** [May 3, 2026, 7:15am UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361 "2026-05-03T07:15:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [May 3, 2026, 7:15am UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/1 "2026-05-03T07:15:36Z")

</div>

Hi

I have a UDT that has custom property at root level and inside UDT I have some tags inside a folder.

I want those tags access root custom property in expression. What is the correct syntax?

In following code the first two dots is used to access root level and the next one is for custom property and API is the name of the custom property. But this is not resolve.

`{[.]...API}`

If I have a tag in the root of UDT this syntax works:

`{[.].API}`

So what is correct syntax to read UDT root custom property inside a Tag Expression?

Tested in both 8.1 and 8.3

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/d/b/db183419b5462f0ada58b5998b9c916e4a8842fa.png)

---

<div class="post-metadata">

**Author:** ![Markus\_Oosthuizen](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/markus_oosthuizen/32/81030_2.png) [@Markus\_Oosthuizen](https://forum.inductiveautomation.com/u/Markus_Oosthuizen)\
**Post date:** [May 3, 2026, 8:35am UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/2 "2026-05-03T08:35:16Z")

</div>

I am not sure how to do this using just the path referencing, but this works `tag(concat({ParentInstanceName},".API"))`

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [May 3, 2026, 9:30am UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/3 "2026-05-03T09:30:09Z")

</div>

Thanks Markus. This seems a bug to me that path referring doesn't work.

The interesting problem is if I define custom property on one of the internal folder I can't edit it in udt instance in designer.

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [May 3, 2026, 1:03pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/4 "2026-05-03T13:03:10Z")

</div>

@pturmel In your option which method execute more efficient? (Of course if direct udy tag referencing is working)

---

<div class="post-metadata">

**Author:** ![bschroeder](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bschroeder/32/13260_2.png) [@bschroeder](https://forum.inductiveautomation.com/u/bschroeder)\
**Post date:** [May 3, 2026, 1:07pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/5 "2026-05-03T13:07:17Z")

</div>

I had a ticket open on something very similar to this. The resolution from support was what @Markus_Oosthuizen suggested. I don't remember if it was marked as a bug, or just the way it works right now.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 3, 2026, 1:42pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/6 "2026-05-03T13:42:51Z")

</div>

Have you tried `{[.]../.API}` ?

---

<div class="post-metadata">

**Author:** ![msteele](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/msteele/32/77889_2.png) [@msteele](https://forum.inductiveautomation.com/u/msteele)\
**Post date:** [May 3, 2026, 1:51pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/7 "2026-05-03T13:51:58Z")

</div>

My mind keeps going to how many times I heard @pturmel say to avoid `tag()` at all costs.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 3, 2026, 1:54pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/9 "2026-05-03T13:54:25Z")

</div>

> [@msteele](#):
>
> avoid `tag()` at all costs.

Except you cannot avoid them in expression tags. As there is no such thing as indirect bindings for tags.

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [May 3, 2026, 2:10pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/10 "2026-05-03T14:10:08Z")

</div>

Yes not working

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [May 3, 2026, 2:10pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/11 "2026-05-03T14:10:51Z")

</div>

Even this method doesn't work if your insurance is in nested folder.

---

<div class="post-metadata">

**Author:** ![bschroeder](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bschroeder/32/13260_2.png) [@bschroeder](https://forum.inductiveautomation.com/u/bschroeder)\
**Post date:** [May 4, 2026, 11:46am UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/12 "2026-05-04T11:46:52Z")

</div>

InstanceName means something different at different times. We created a tag on the parent UDT as an anchor for all other embedded UDTs that are used in the parent UDT. I believe it is an expression tag that is the InstanceName. That way the embedded UDT can grab that as a reference to the parent and then get the data that it needs. I would rather have the ability to read the property directly as you can a tag, but that isn't how it is as the moment.

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [May 4, 2026, 1:32pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/13 "2026-05-04T13:32:03Z")

</div>

The only workaround for this dot problem syntax is to create a tag as reference and put all customs properties on that tag and then easily the udt expression tag reference is work. Note that even folder custom property doesn't have option in designer UI to edit custom property right now.

---

<div class="post-metadata">

**Author:** ![Nol](https://avatars.discourse-cdn.com/v4/letter/n/8e8cbc/32.png) [@Nol](https://forum.inductiveautomation.com/u/Nol)\
**Post date:** [May 4, 2026, 3:45pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/14 "2026-05-04T15:45:28Z")

</div>

Edit: Realized it works if the tag is in the root folder but nested it doesn't

Seems like IA needs to add a PathToRootInstance syntax

---

<div class="post-metadata">

**Author:** ![Nol](https://avatars.discourse-cdn.com/v4/letter/n/8e8cbc/32.png) [@Nol](https://forum.inductiveautomation.com/u/Nol)\
**Post date:** [May 4, 2026, 3:54pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/15 "2026-05-04T15:54:32Z")

</div>

Okay so I found a way to make it work.

Create a UDT parameter called pathRoot and set it equal to:

```python
{PathToParentFolder}/{InstanceName}

```

Then on your tag you can use:

```python
tag({pathRoot}+".API")

```

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [May 4, 2026, 5:29pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/16 "2026-05-04T17:29:46Z")

</div>

My problem is using tag() in expression is costly compared to udt tags reference method.

---

<div class="post-metadata">

**Author:** ![Nol](https://avatars.discourse-cdn.com/v4/letter/n/8e8cbc/32.png) [@Nol](https://forum.inductiveautomation.com/u/Nol)\
**Post date:** [May 4, 2026, 9:15pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/17 "2026-05-04T21:15:55Z")

</div>

Unfortunately with an expression tag then there's no way. tag() is likely your best bet but if you want to avoid that then your options are:

1. Use a derived tag: [.]../../{InstanceName}.API and then put your expression in the read expression
2. Move the custom prop into a parameter and reference the parameter
3. Move all your custom props down onto a tag called properties and then you can reference it with {[.]../properties.API}
4. Use a reference tag: [.]../../{InstanceName}.API
5. Use #3 as a reference tag and then use that in your expression tag but then you have two tags (effectively same as #1 but split)
6. Define the UDT instance name in the path, but then every instance would need to be overridden to put the correct instance name which defeats the purpose, but technically works: {[.]../../udtA.API}

---

<div class="post-metadata">

**Author:** ![nader.chinichian](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nader.chinichian/32/9261_2.png) [@nader.chinichian](https://forum.inductiveautomation.com/u/nader.chinichian)\
**Post date:** [May 5, 2026, 4:51am UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/18 "2026-05-05T04:51:25Z")

</div>

Yes I already use option 3 for sake of performance.

But I really hope IA add a ticket and fix this problem

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [May 24, 2026, 9:13am UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/19 "2026-05-24T09:13:00Z")

</div>

Yes this is a big pain point for us too.

we us some expression with:

```python
tag(concat('[.]../../',{InstanceName},'.alarmsDisabled')),"")

```

to workaround, but we would like to use direct reference with {..}

**I think that tag() in expression are managed with readBlocking with more load than subscription mecanism.** subject to confirmation of @mgross or @paul-griffith

Moreover, we often delete all udt/tag and generate them, and it seems that using tag() in expression results in a very long udt instance creation process with lots of readBlocking Error in the gateway, probably because in the creation process tag referenced by tag() expression are not always existing, it depends from creation order...

I suppose that this is not a problem with subcription used for {..} member in expression.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 24, 2026, 3:14pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/20 "2026-05-24T15:14:41Z")

</div>

`tag()` subscribes to the target tag. Your readBlocking errors are likely something else.

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [May 24, 2026, 3:31pm UTC](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361/21 "2026-05-24T15:31:20Z")

</div>

In case of tag() used in gateway expression tags ? Ignition use suscription ?  
So what why is their use discouraged, especially if the path provided to the tag() does not change ?

[Next page](https://forum.inductiveautomation.com/t/access-udt-root-custom-property-inside-a-tag-expression/115361.md?page=2)
