# Custom QualifiedValue

**URL:** <https://forum.inductiveautomation.com/t/custom-qualifiedvalue/90394>\
**Category:** Module Development\
**Created:** [May 14, 2024, 11:06pm UTC](https://forum.inductiveautomation.com/t/custom-qualifiedvalue/90394 "2024-05-14T23:06:44Z")\
**Posts on this page:** 1\
**Showing post:** 6

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [May 17, 2024, 4:46pm UTC](https://forum.inductiveautomation.com/t/custom-qualifiedvalue/90394/6 "2024-05-17T16:46:02Z")

</div>

_Everything_ in the new tag system is a tag actor.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/c/9/c9e07fe2d87b11a11d43daeeafda22b8b59ea860.png)

If it's flexible enough to drive tag values, including OPC, scaling, history, etc... I'm pretty confident it's flexible enough for your purposes. As a bonus, you can get it working _today_.

> [@Matt\_McCormick](#):
>
> submitting a feature request

We wouldn't add that feature to 8.1, so at minimum you're waiting until 8.3 is released at the end of this year. More likely much longer than that, because it's low priority relative to other customer demands.

> [@Matt\_McCormick](#):
>
> could you please expand on how the `TagActor` and factory fits into a solution?

So, again, I'm not the expert in this area, but I'll just really try to push that working inside the capabilities that are already exposed is definitely going to be a better experience.

My rough understanding of the whole idea is something like this:

1. You get the tag manager from your instance of GatewayContext: [https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.40/com/inductiveautomation/ignition/gateway/model/GatewayContext.html#getTagManager()](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.40/com/inductiveautomation/ignition/gateway/model/GatewayContext.html#getTagManager())
2. You get the tag config manager:  
[GatewayTagManager](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.40/com/inductiveautomation/ignition/gateway/tags/model/GatewayTagManager.html#getConfigManager())
3. From there, you register your actor factories: [TagConfigurationManager](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.40/com/inductiveautomation/ignition/gateway/tags/config/TagConfigurationManager.html#registerActorFactory(com.inductiveautomation.ignition.gateway.tags.evaluation.TagActorFactory))
  - Optionally, you can contribute known property types to the tag system - this is how e.g. the alarm notification module adds the 'pipeline' properties to tags: [TagConfigurationManager](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.40/com/inductiveautomation/ignition/gateway/tags/config/TagConfigurationManager.html#registerTagGroupPropertyContributor(com.inductiveautomation.ignition.common.config.PropertyModelContributor))

4. Your TagActorFactory defines the "things that it cares about" via getMonitoredProperties:  
[TagActorFactory](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.40/com/inductiveautomation/ignition/gateway/tags/evaluation/TagActorFactory.html#getMonitoredProperties())
5. Your factory is called to create new TagActors by the tag system, whenever your relevant properties change. Your TagActors themselves act as either 'read' or 'write' agents in a constructed pipeline (highly recommend reading the class documentation on TagActor): [TagActor](https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.40/com/inductiveautomation/ignition/gateway/tags/evaluation/TagActor.html)

---

_[View the full topic](https://forum.inductiveautomation.com/t/custom-qualifiedvalue/90394)._
