# OPC UA tag mirroring

**URL:** <https://forum.inductiveautomation.com/t/opc-ua-tag-mirroring/114458>\
**Category:** Ignition\
**Created:** [March 12, 2026, 10:35am UTC](https://forum.inductiveautomation.com/t/opc-ua-tag-mirroring/114458 "2026-03-12T10:35:28Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Emme](https://avatars.discourse-cdn.com/v4/letter/e/e8c25b/32.png) [@Emme](https://forum.inductiveautomation.com/u/Emme)\
**Post date:** [March 12, 2026, 10:35am UTC](https://forum.inductiveautomation.com/t/opc-ua-tag-mirroring/114458/1 "2026-03-12T10:35:28Z")

</div>

Hey, i have my ignition server set up as an OPC UA client connected to multiple OPC UA servers. I want to mirror the value of some tags from one opc server to another. As an example: tag A in OPC UA server A has a value i want to write into Tag B in OPC UA server B. I'm able to do this using the writeblocking when the value on tag A changes. However if the PLC that runs server B resets its value the script wont write the value from A again because that value hasn’t changed. I want to mirror them all the time or somehow check if the value are the sameand if not then write from A to B. Is it possible?

---

<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 12, 2026, 11:40am UTC](https://forum.inductiveautomation.com/t/opc-ua-tag-mirroring/114458/2 "2026-03-12T11:40:23Z")

</div>

See my Integration Toolkit's [Republish Tag Action](https://www.automation-pros.com/toolkit/doc/actors.html#republish-action).

Be aware that if you are calling `system.tag.writeBlocking()`, or `system.opc.writeValues()`, from a tag's valueChange event, any stall on the write will start an event processing pileup in the tag system. Potentially leading to a complete stall.

Some reading for you:

[https://forum.inductiveautomation.com/search?q=tag%20event%20stall%20%40pturmel%20order%3Alatest](https://forum.inductiveautomation.com/search?q=tag%20event%20stall%20%40pturmel%20order%3Alatest)

There's no fix for recipient overwrites except to occasionally run a cleanup script.

---

<div class="post-metadata">

**Author:** ![Emme](https://avatars.discourse-cdn.com/v4/letter/e/e8c25b/32.png) [@Emme](https://forum.inductiveautomation.com/u/Emme)\
**Post date:** [March 12, 2026, 1:08pm UTC](https://forum.inductiveautomation.com/t/opc-ua-tag-mirroring/114458/3 "2026-03-12T13:08:54Z")

</div>

Thanks, it works great but when does it republish the value? With a fixed rate or is it only when the value is changed on the source tag?

---

<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 12, 2026, 1:19pm UTC](https://forum.inductiveautomation.com/t/opc-ua-tag-mirroring/114458/4 "2026-03-12T13:19:12Z")

</div>

It publishes whenever a new value passes through the tag's actor pipeline. For OPC tags, that would be whenever the OPC server delivers a change, or the first value of a new/restored subscription. The tag actor is upstream of the tag subsystem's own change detection, IIUC.

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [March 12, 2026, 2:34pm UTC](https://forum.inductiveautomation.com/t/opc-ua-tag-mirroring/114458/5 "2026-03-12T14:34:53Z")

</div>

Would the SQL bridge module work for this? I've never had to actually use it, but can't you set them up to periodically write OPC values?

---

<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 12, 2026, 2:45pm UTC](https://forum.inductiveautomation.com/t/opc-ua-tag-mirroring/114458/6 "2026-03-12T14:45:31Z")

</div>

> [@michael.flagler](#):
>
> SQL bridge module

It can do DB to OPC, but not OPC to OPC.

---

<div class="post-metadata">

**Author:** ![michael.flagler](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/michael.flagler/32/26272_2.png) [@michael.flagler](https://forum.inductiveautomation.com/u/michael.flagler)\
**Post date:** [March 12, 2026, 3:16pm UTC](https://forum.inductiveautomation.com/t/opc-ua-tag-mirroring/114458/7 "2026-03-12T15:16:03Z")

</div>

So besides your republish tag action, about the only way to guarantee the value always matches is to have a timed gateway task and do async writes. You could do async reads, compare, then write changes I guess if you wanted to reduce writes. Guess it really depends how frequent these tags change on the destination side.
