Indirect Bindings with Alarm Metrics

Good Morning all,

I've recently upgraded to 8.3 on a large customer of mine, who I was previously using gateway scripts and expression tags to make my own "Alarm Metrics" before that feature was added. I'm considering shifting over to this new feature, but I have concerns regarding its subscription method. It is my understanding that the alarm metrics are not constantly being updated unless something is explicitly subscribed to them, which makes sense from a performance standpoint.

My question is, does using indirect bindings reliably update the alarm metrics since nothing is directly subscribed? My current method is a UDT with several different expression tags that look like this:

runScript("gs.SystemAlarmsQtyWarn", 900000, {[.]SystemPath})

I have hundreds of 'areas' that use this UDT, so having to only change the tag path is essential for me. My problem with alarm metrics is that if I am not able to use indirect tagging, it would be a massive undertaking to have to directly bind each of these.

Does anyone have any insight on how Alarm Metrics work with indirect tagging and their reliability at scale? Thanks

An indirect binding is still a binding. It's just automagically changeable. I've been very happy with the new Alarm Metrics.

Alright, that's what I would assume, but I could've sworn I had read something about inconsistencies with the indirect bindings early on in 8.3.

Scripted reads are not the same as actual indirect tag bindings. Your runScript() expression is not a tag binding.

I understand that, the runScript() expression is what I'm trying to replace with the Alarm Metrics. Essentially instead of running different scripts to query alarm counts I would have an tag binding like

tag({[.]SystemPath} + "/Alarm Metrics/activeUnackCount")

My question is whether or not that would be reliable with the subscription model, and how that would scale to 500+ tags

For an expression tag, that looks fine, and should work well.

(Do remember that tag() is a disaster in UI bindings. Use a proper indirect tag binding there.)

Great, appreciate the input. And yes this binding is not for UI, it would be on an expression tag that is used with other memory tags to determine a "state".

Do you have any opinions on the Alarm Metrics gateway load? The one thing I like about my current script approach is that I'm able to control the polling rate directly.Like I said I will have a lot of these tags pointing to alarm metrics if I end up going down this path

Not enough experience with it to say.