# Indirect bindings resolve order in regards to templates and historian

**URL:** <https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391>\
**Category:** Ignition\
**Tags:** vision\
**Created:** [July 11, 2025, 7:00pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391 "2025-07-11T19:00:06Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![robertm](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@robertm](https://forum.inductiveautomation.com/u/robertm)\
**Post date:** [July 11, 2025, 7:00pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391/1 "2025-07-11T19:00:06Z")

</div>

Vision 8.1.38

More of a nuisance, but if there's a simple solution, I'd like to know, or if I'm doing something wrong:

I have a template with a sparkline that resolves to an indirect partial path passed to the template custom property. I do have a default value typed into this custom property. Within the template, this property is an indirect within the sparkline to the historical tag path.

On client startup, and likely when this window with the templates is opened, i get a database entry error in the gateway logs, and the path part that uses the custom property is Null. So somehow the sparkline is querying the historian with an unformed path. Then, of course after that, no more errors, as presumably the property resolves to the binding and all is well.

Its not causing any issues other than irrelevant entries in the logger. But is there a better way to avoid this?

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [July 11, 2025, 8:03pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391/2 "2025-07-11T20:03:07Z")

</div>

I think a lot of people have used fadeIn animations to hide the errors while loading.

You could check the `Overlay Opt-Out` too, but if the binding does legitimately error out, you won't see the overlay. Also, check out the `Publish Initial Uncertain Value`.  
[Tag Bindings in Perspective | Ignition User Manual](https://docs.inductiveautomation.com/docs/8.1/ignition-modules/perspective/working-with-perspective-components/bindings-in-perspective/tag-bindings-in-perspective#options)

---

<div class="post-metadata">

**Author:** ![robertm](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@robertm](https://forum.inductiveautomation.com/u/robertm)\
**Post date:** [July 11, 2025, 8:09pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391/3 "2025-07-11T20:09:13Z")

</div>

Thanks, but Vision, not perspective.

---

<div class="post-metadata">

**Author:** ![dkhayes117](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/dkhayes117/32/68344_2.png) [@dkhayes117](https://forum.inductiveautomation.com/u/dkhayes117)\
**Post date:** [July 14, 2025, 12:17pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391/4 "2025-07-14T12:17:25Z")

</div>

Ah, my bad. Maybe you could use another custom property to hold some initial data, then use a `coalesce()` expression on the data property to default to your initial data while the tag history populates.

```python
coalesce(
	{Root Container.Sparkline Chart.tagHistory},
	{Root Container.Sparkline Chart.default}
)

```

---

<div class="post-metadata">

**Author:** ![robertm](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@robertm](https://forum.inductiveautomation.com/u/robertm)\
**Post date:** [September 9, 2025, 2:00pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391/5 "2025-09-09T14:00:08Z")

</div>

Revisiting this….Coalesce doesn’t work to remove the error log, as the path it is trying to coalesce is still unformed.

To reiterate, I am getting a log error that the sparkline tag path is invalid on initial load of the window. I’ve tried both passing a parameter, and creating an internal property in the template preloaded with a value, but the sparkline appears to try and resolve the indirect within its indirect binding before the passed parameter or the internal parameter. This never happens on popups, doing the same with an easy chart, but this is a sparkline on a template.

I know I can just create two identical seperate templates and not use an indirect, but point the sparkline directly at the path. But I'd like to know what I’m doing wrong.

---

<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:** [September 9, 2025, 2:06pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391/6 "2025-09-09T14:06:10Z")

</div>

Show your history binding and the template's parameter setup.

---

<div class="post-metadata">

**Author:** ![robertm](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@robertm](https://forum.inductiveautomation.com/u/robertm)\
**Post date:** [September 9, 2025, 2:33pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391/7 "2025-09-09T14:33:52Z")

</div>

This is the current iteration where I moved the “ID” to an internal template parameter bound to a memory Tag within the passed pathstr folder. Before, I was passing the ID as an additional template parameter and that didn’t change the behavior. The Error in the logger only occurs on first load of the window/Project. Afterwards, its fine until the Project is restarted. The tag path in the error shows “\_press” instead of “front\_press”.

 ![Binding](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/0/60256386e470fde75c22c612c99fb0dc1f66c0f2.png)

 ![history](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/e/9ee4797a5145e2692cf91ce9336d7a7a1e2fe302.png)

 ![Error](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/2/92a5d0d59cd0796719fa9dd0bc86f303fa270d9a.png)

---

<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:** [September 9, 2025, 3:48pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391/8 "2025-09-09T15:48:24Z")

</div>

Hmmm. May not be fixable. Try with polling off, and cause it to refresh separately (with `system.db.refresh()`).

---

<div class="post-metadata">

**Author:** ![robertm](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@robertm](https://forum.inductiveautomation.com/u/robertm)\
**Post date:** [September 9, 2025, 3:54pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391/9 "2025-09-09T15:54:22Z")

</div>

I was trying to think of a way to “delay” initial sparkline polling. Is it possible to do as you suggest, turning off polling, then programmatically re-enable polling after X time? Or is that more hokey than just using a repeat timer on the template and doing a refresh?

---

<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:** [September 9, 2025, 4:02pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391/10 "2025-09-09T16:02:02Z")

</div>

An option would be to move the history binding to a custom prop, and disable the overlay for that binding. Then use a change script to move good results to the spark line's data property.

---

<div class="post-metadata">

**Author:** ![robertm](https://avatars.discourse-cdn.com/v4/letter/r/ea5d25/32.png) [@robertm](https://forum.inductiveautomation.com/u/robertm)\
**Post date:** [September 9, 2025, 4:30pm UTC](https://forum.inductiveautomation.com/t/indirect-bindings-resolve-order-in-regards-to-templates-and-historian/108391/11 "2025-09-09T16:30:17Z")

</div>

Ok, will try that. Reading the docs, polling off still refreshes one time on initial load, so I think I'd have the same issue with unformed tag path error.
