# UDT parameter names containing special characters

**URL:** <https://forum.inductiveautomation.com/t/udt-parameter-names-containing-special-characters/112521>\
**Category:** Ignition\
**Tags:** ignition81, perspective, scripting\
**Created:** [December 1, 2025, 10:35am UTC](https://forum.inductiveautomation.com/t/udt-parameter-names-containing-special-characters/112521 "2025-12-01T10:35:01Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![PatrickB](https://avatars.discourse-cdn.com/v4/letter/p/838e76/32.png) [@PatrickB](https://forum.inductiveautomation.com/u/PatrickB)\
**Post date:** [December 1, 2025, 10:35am UTC](https://forum.inductiveautomation.com/t/udt-parameter-names-containing-special-characters/112521/1 "2025-12-01T10:35:01Z")

</div>

Can anyone help me with the correct way to ensure the correct parameter name (with period “.”) is passed/parsed through a system.tag.readBlocking /.writeBlocking command so I can update the parameter individually?

_Background…_

I inherited an Ignition 8.1 Perspective-based system where the UDT parameter names include a period (“.”) character of the format “Z.9 Some Name”. I need to update a particular parameter for several UDT instances and had been unsuccessful implementing system.tag.readBlocking and .writeBlocking. I implemented system.tag.getConfiguration and system.tag.configure successfully in a script however as @nminchin wrote [here](https://forum.inductiveautomation.com/t/need-help-controlling-tag-browser-in-power-chart-component/106846/4), this is A Bad Idea (confirmed) as it has decoupled all those instances’ parameters (all 33 of them, when I only want 1 to change) from the UDT parameters.

The issue I was having with path (copied from the parameter in the tag browser by right-clicking and selecting “Copy Path”) is that the period (“.”) acts as a property delimiter and I get complaints about having more than one…

(note these are running in the Designer Script Console scope)

_`system.tag.readBlocking("[default]someTag/Parameters.Z.9 Some Name")`_

```python
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: Invalid path element '[default]someTag/Parameters.Z.9 Some Name': Token PROPERTY_SEPARATOR found after property name.

```

Trying to escape the second period with a backslash (“\”) results in complaints about out-of-place path elements. I’ve tried various iterations of escaping and also in various quote configurations…

_`system.tag.readBlocking("[default]someTag/Parameters.Z\.9 Some Name")`_

```python
Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: Invalid path element '[default]someTag/Parameters.A\.4 Some Name': Token PATH_SEPARATOR found after property name.

```

The couple of solutions I have are:

1. Redefine all the UDT parameters without special characters. I don’t wish to do this as that will break (I have 33 Parameters to rename for that UDT) a whole lot of things I will then have to unbreak.
2. Roll back (yay for backups 🙂) and work out how to use system.tag.readBlocking and .writeBlocking so as to only disturb the 1 parameter I need.

So as stated at the top, it would be much appreciated if someone could assist with the correct configuration of the system.tag.readBlocking / .writeBlocking command format to cope with the period (“.”) in the name.

Thanks in advance,

Patrick.

P. S. and if it’s some absurdly simple solution staring me in the face that I should have seen, I also apologise in advance for missing it!

---

<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:** [December 1, 2025, 1:34pm UTC](https://forum.inductiveautomation.com/t/udt-parameter-names-containing-special-characters/112521/2 "2025-12-01T13:34:21Z")

</div>

Do (1).

IA has been fixing bugs that allowed such situations to be created and your situation will only get worse.

Ideally, you should make all names in your project, including folder and atomic tag names, usable as programming identifiers. Letters and digits and underscores, not starting with a digit.

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [December 1, 2025, 3:25pm UTC](https://forum.inductiveautomation.com/t/udt-parameter-names-containing-special-characters/112521/3 "2025-12-01T15:25:58Z")

</div>

I agree with Phil. Break things and fix them now, not later when you have even more things to break.

---

<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:** [December 1, 2025, 3:38pm UTC](https://forum.inductiveautomation.com/t/udt-parameter-names-containing-special-characters/112521/4 "2025-12-01T15:38:27Z")

</div>

> [@PatrickB](#):
>
> Redefine all the UDT parameters without special characters. I don’t wish to do this as that will break (I have 33 Parameters to rename for that UDT) a whole lot of things I will then have to unbreak.

As others have said that’ll be your best way to go. Worth mentioning that some Regex search and replace likely can make quick work of converting things. Just be careful of course.

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [December 1, 2025, 8:50pm UTC](https://forum.inductiveautomation.com/t/udt-parameter-names-containing-special-characters/112521/5 "2025-12-01T20:50:45Z")

</div>

While I agree the right solution is to remove the dots, to answer the question itself about how to write to those params, I'm sure you can use system.tag.configure to do it. You just need to provide the skeleton json for the UDT instance, along with your UDT parameter, and ensure you use the merge option.

---

<div class="post-metadata">

**Author:** ![PatrickB](https://avatars.discourse-cdn.com/v4/letter/p/838e76/32.png) [@PatrickB](https://forum.inductiveautomation.com/u/PatrickB)\
**Post date:** [December 3, 2025, 11:38am UTC](https://forum.inductiveautomation.com/t/udt-parameter-names-containing-special-characters/112521/6 "2025-12-03T11:38:12Z")

</div>

Firstly, _ **thanks to all** _ for your comments and sage advice, it is much appreciated.

I am working on something to do with this (‘cos I’m a stubborn $#!t) and will get back to you in due course.

Option 1 (remove the offending character(s)) as promulgated by all is looking more appropriate (and perhaps easier) by the minute!

Regarding the actual query 😁 , thanks nminchin, I did use the “merge” option. I used the lists/dictionary structure supplied by system.tag.getConfiguration which (for me) is a list with an single element, which is the configuration as a dict with a nested parameters dict. I changed the required parameter’s value in the nested dict and wrote the config back with system.tag.configure. I’m guessing the whole nested parameters dict may be classified as being the value changed for the tag so it wrote the _whole_ parameters dict structure back and somehow that carries through to all of the parameters dict structure elements as being changed.

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [December 3, 2025, 1:13pm UTC](https://forum.inductiveautomation.com/t/udt-parameter-names-containing-special-characters/112521/7 "2025-12-03T13:13:38Z")

</div>

> [@nminchin](#):
>
> You just need to provide the skeleton json

By this I meant bare bones skeleton. Too hard to produce with mobile, but I'll get you an example tomorrow. Literally just the name keys though

---

<div class="post-metadata">

**Author:** ![nminchin](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/nminchin/32/6911_2.png) [@nminchin](https://forum.inductiveautomation.com/u/nminchin)\
**Post date:** [December 3, 2025, 9:36pm UTC](https://forum.inductiveautomation.com/t/udt-parameter-names-containing-special-characters/112521/8 "2025-12-03T21:36:36Z")

</div>

As in like this:

```python
a = {
  "name": "New Instance",
  "tags": [
    {
      "name": "Folder A",
      "tags": [
      	{
      		"name": "New Tag",
      		"tooltip": "Hello World!"
      	}
      ]
    }
  ]
}
system.tag.configure('[default]', tags=a, collisionPolicy='m') # "m" is critical else you'll wipe the rest of the config

```

for a udt instance that looks like this:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/5/8/587c78ffb309f9ec55aec666b62ac43428f3c8cf.png)

You just need the `name` structure to get to the tag you want to edit
