# Bulk Edit UDT Data

**URL:** <https://forum.inductiveautomation.com/t/bulk-edit-udt-data/114729>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [March 27, 2026, 2:49pm UTC](https://forum.inductiveautomation.com/t/bulk-edit-udt-data/114729 "2026-03-27T14:49:34Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![automator591](https://avatars.discourse-cdn.com/v4/letter/a/8baadc/32.png) [@automator591](https://forum.inductiveautomation.com/u/automator591)\
**Post date:** [March 27, 2026, 2:49pm UTC](https://forum.inductiveautomation.com/t/bulk-edit-udt-data/114729/1 "2026-03-27T14:49:34Z")

</div>

Back at Ignition development after a 12 year hiatus, so a little rusty yet, and new to perspective.

I created views where I created tags in a folder hierarchy to get it working the way I wanted. I am now converting those tags to UDTs. The UDTs then need to be replicated to use in other views, with different data (string, bool, int, OPC). I was planning on doing a copy JSON and editing in Notepad++, but all I get is the UDT definition, no data values. The data values are there in the created tag, but do not show in the JSON copy. Am I missing something?

---

<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:** [March 27, 2026, 2:57pm UTC](https://forum.inductiveautomation.com/t/bulk-edit-udt-data/114729/2 "2026-03-27T14:57:55Z")

</div>

Tag values are not part of a tag's configuration, except for memory tags.

---

<div class="post-metadata">

**Author:** ![automator591](https://avatars.discourse-cdn.com/v4/letter/a/8baadc/32.png) [@automator591](https://forum.inductiveautomation.com/u/automator591)\
**Post date:** [March 27, 2026, 2:59pm UTC](https://forum.inductiveautomation.com/t/bulk-edit-udt-data/114729/3 "2026-03-27T14:59:19Z")

</div>

OK, thanks. I should just keep as raw tags then.

---

<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:** [March 27, 2026, 3:26pm UTC](https://forum.inductiveautomation.com/t/bulk-edit-udt-data/114729/4 "2026-03-27T15:26:22Z")

</div>

> [@automator591](#):
>
> keep as raw tags then

Not sure what you mean. Doesn't matter if a UDT member or not.

---

<div class="post-metadata">

**Author:** ![automator591](https://avatars.discourse-cdn.com/v4/letter/a/8baadc/32.png) [@automator591](https://forum.inductiveautomation.com/u/automator591)\
**Post date:** [March 27, 2026, 8:38pm UTC](https://forum.inductiveautomation.com/t/bulk-edit-udt-data/114729/5 "2026-03-27T20:38:29Z")

</div>

I may have misunderstood your reply, sorry.

---

<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:** [March 27, 2026, 11:23pm UTC](https://forum.inductiveautomation.com/t/bulk-edit-udt-data/114729/6 "2026-03-27T23:23:17Z")

</div>

I’m still a bit (very) confused with what you've done and what you’re trying to do.

You’ve made a UDT Definition I think, by creating folders and standard tags and converting them into a UDT definition with the context menu option.

Have you created instances of those UDT definitions?

You’ve also created a perspective View, presumably to show tag values from a UDT instance. You should be passing in the tagpath to the udt instance as a param into the View, and then use indirect tag bindings on custom prop to read any tag values from the UDT instance.

Have I (mis)understood any of that correctly?

Edit: note that UDT definitions (aka UDT types) were moved into their own tab in the tab browser in v8. Previously, UDT types and standard tags were all in the one tree hierarchy. (I think I arrived here in v7.6)

---

<div class="post-metadata">

**Author:** ![automator591](https://avatars.discourse-cdn.com/v4/letter/a/8baadc/32.png) [@automator591](https://forum.inductiveautomation.com/u/automator591)\
**Post date:** [March 28, 2026, 12:18am UTC](https://forum.inductiveautomation.com/t/bulk-edit-udt-data/114729/7 "2026-03-28T00:18:27Z")

</div>

Yes, I created folders with tags, that I converted to a UDT. The tags had values in them from the testing before creating the UDT. I created an instance of the UDT and copied it as a JSON to edit it for another instance. The JSON did not include any values in it, only the definitions. On further testing, I edited the values in the UDT instance I originally created and when I copied to JSON again, the values were in the JSON. It appears that if the default values are what is in the UDT instance, it will not include them in the JSON.

---

<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:** [March 28, 2026, 5:33am UTC](https://forum.inductiveautomation.com/t/bulk-edit-udt-data/114729/8 "2026-03-28T05:33:15Z")

</div>

If you create a UDT inctance and don’t change anything, the UDT instance json will have the barebones structure which includes:

- name of the item (tag / folder / UDTinstance)
- type of the item (AtomicTag, Folder, UdtInstance, etc.)
- a `tags[]`array if the item is a folder or UDT instance
- the `typeId` if the item is a UDT Instance

If you override properties on tags or set UDT parameters, that’s when you’ll see these props stored in the UDT instance’s configuration / JSON.

The moment you store more configuration for tags in the UDt instance, these props will no longer use the definition’s values for them.

> [@automator591](#):
>
> It appears that if the default values are what is in the UDT instance, it will not include them in the JSON.

Also, this isn’t correct. You can still have a property configured in the Udt Instance which overrides the Udt definition that have the same values. e.g. a tag “PV” in the UDT definition could have the eng units set to “L”. In the UDT instance, if you override this to “kL” and then set it back to “L”, this prop will still be marked as an override on that property value, because you’ve essentially added the eng units into the udt instance configuration. This will also now show up in the UDT instance’s JSON.

You want as few properties in your UDT instance tags as possible. Getting off topic a bit… this is one of the reasons using `system.tag.getConfiguration` with `system.tag.configure` is so destructive; `getConfiguration` gets _all_ configuration from both the UDT instance _and_ the UDT definition. So using `configure` to write back the configuration to the UDt instance tags will apply _all_ of the configuration in the UDT definition as overrides, thus effectively disconnecting it from the UDT definition itself, defeating the purpose of using a UDT.
