Verify tag quality in transaction groups

I am using a transaction group to log production data to a database. I need to make sure that the data is successfully logged before production continues.

With the transaction groups handshake signal we can check if the database transaction was successful or not. However this will return success even if the tags involved in this transaction have a bad quality. We can write an aggregated quality to the data row (meaning the transaction group “knows” this information), but I have not found a way to directly check this value after the transaction group has been executed. The only solution I have found is to perform a validation query against the database.

Is there an easier way to do this? Some kind of return value like the handshake signal?
If not, could this be worth a feature request?

Handshaking with transaction groups is rather limited, unfortunately. The workaround for more complete confirmation is the use a gateway script instead of a transaction group. A script can signal more kinds of failures, and can use handshaking that doesn’t require writing from two directions.

Hm too bad we can not get this information directly from the transaction group.

I have put in a feature request for this:

Please upvote it if you have similar needs.

In a transaction group you could drag the tag in again, and change the value mode. fF there are a lot of tags to monitor, however, then scripting is the way to go.

In one project following expression item (named Trigger) is added to the transaction groups:

forceQuality({tagPath},192)

It is used as a trigger to write to the table.

I have a transaction group that logs data from the machine- tags to DataBase once every minute, the problem is even when the quality of the tag is bad, the transaction group logs the last qualified value. This isn't very clear to customers as they see some value even when the machine is down. I am thinking to stop logging data when tag quality is bad, is there any workaround for this ?
Ideally, it should be either 0 or null


There's a transaction group setting to store NULL for bad quality.

1 Like

Correct, and this is probably already enough for your use case. Unfortunately there is no possibility to NOT execute the transaction group when the tag quality is bad.

I would solve the "all value columns are null" case with an insert trigger in the DB.