Bad_NotFound in tag properties

Ignition 8.3.8 , docker environment

Hi everyone, When adding any tag from the Siemens S7-1500 PLC field, whether in an OPC-UA connection with a Siemens server or with the new Siemens Enhanced driver, the tag is connected correctly. I read the correct value, but if I expand the tag and view the internal properties, these tags are in Bad_NotFound. I haven't found anything regarding the functionality. I've tested various tag types, including DTL float arrays, and I get the same error.
I repeat, it doesn't cause any performance issues or errors. It's not even listed in the Tag Report Tool.

Do you know anything about this?

Regards

Do you have any third party modules installed?

I have

Siemens Enhanced Driver 1.3.9-SNAPSHOT (b2026070114) (for testing new modify for performance)

OperaMetrix Git 2.0.2 (b2026060919)

Automation Professionals, LLC
Integration Toolkit
2.1.5 (b261812214)

Flow Software, Inc.
Timebase Historian
8.3.3 (b2026050117)

I think one of those modules is adding those tag properties. They don't look like Ignition tag properties.

OK i will check deinstalling some module to test....

Those are from my Integration Toolkit. They default to false, so should show as false checkboxes.

This is how the toolkit declares those props:

    static {
        RepublishEnabled = new BasicDescriptiveProperty<>(
                "republishEnabled",
                "simaids.tags.republishEnabled.name",
                "simaids.tags.category",
                "simaids.tags.republishEnabled.desc",
                Boolean.class,
                Boolean.FALSE);
        RepublishToServer = new BasicDescriptiveProperty<>(
                "republishToServer",
                "simaids.tags.republishToServer.name",
                "simaids.tags.category",
                "simaids.tags.republishToServer.desc",
                String.class,
                null);
        RepublishToItem = new BasicDescriptiveProperty<>(
                "republishToItem",
                "simaids.tags.republishToItem.name",
                "simaids.tags.category",
                "simaids.tags.republishToItem.desc",
                String.class,
                null);
        BulkScriptEnabled = new BasicDescriptiveProperty<>(
                "bulkScriptEnabled",
                "simaids.tags.bulkScriptEnabled.name",
                "simaids.tags.category",
                "simaids.tags.bulkScriptEnabled.desc",
                Boolean.class,
                Boolean.FALSE);
        BulkScriptFunction = new BasicDescriptiveProperty<>(
                "bulkScriptToServer",
                "simaids.tags.bulkScriptFunction.name",
                "simaids.tags.category",
                "simaids.tags.bulkScriptFunction.desc",
                String.class,
                null);
        DivertEngWriteEnabled = new BasicDescriptiveProperty<>(
                "divertEngWriteEnabled",
                "simaids.tags.divertEngWriteEnabled.name",
                "simaids.tags.category",
                "simaids.tags.divertEngWriteEnabled.desc",
                Boolean.class,
                Boolean.FALSE);
        DivertEngWriteToServer = new BasicDescriptiveProperty<>(
                "divertEngWriteToServer",
                "simaids.tags.divertEngWriteToServer.name",
                "simaids.tags.category",
                "simaids.tags.divertEngWriteToServer.desc",
                String.class,
                null);
        DivertEngWriteToItem = new BasicDescriptiveProperty<>(
                "divertEngWriteToItem",
                "simaids.tags.divertEngWriteToItem.name",
                "simaids.tags.category",
                "simaids.tags.divertEngWriteToItem.desc",
                String.class,
                null);
        DivertRawWriteEnabled = new BasicDescriptiveProperty<>(
                "divertRawWriteEnabled",
                "simaids.tags.divertRawWriteEnabled.name",
                "simaids.tags.category",
                "simaids.tags.divertRawWriteEnabled.desc",
                Boolean.class,
                Boolean.FALSE);
        DivertRawWriteToServer = new BasicDescriptiveProperty<>(
                "divertRawWriteToServer",
                "simaids.tags.divertRawWriteToServer.name",
                "simaids.tags.category",
                "simaids.tags.divertRawWriteToServer.desc",
                String.class,
                null);
        DivertRawWriteToItem = new BasicDescriptiveProperty<>(
                "divertRawWriteToItem",
                "simaids.tags.divertRawWriteToItem.name",
                "simaids.tags.category",
                "simaids.tags.divertRawWriteToItem.desc",
                String.class,
                null);
    }

Has something changed in the the tag prop model in 8.3.8?

{ I'm seeing the same in 8.3.8 on all tags that do not explicitly set these props. }

Spun up an 8.3.2 VM. There, they show in the tag browser as "null". The declared defaults are not being applied.

I wonder if it is associated with making them dependent on the tag type, like so:

    public static void bulkScriptProps(MutableConfigurationPropertyModel model) {
        model.addDependantProperties(WellKnownTagProps.TagType, TagObjectType.AtomicTag, BulkScriptEnabled);
        model.addDependantProperties(BulkScriptEnabled, Boolean.TRUE, BulkScriptFunction);
    }

No property model or default resolution changes have been made in 8.3, I have some ideas as to what might have caused the change from null to Bad_NotFound, but I think the registration of those properties (both where they're registered and when) is the bigger question.

Where are you registering them? From poking around through code I think you likely need to register them in both TagPropertyDirectory (via TagPropertyDirector.getInstance().register(<static list of properties>)) as well as PropertyModelContributor

They are registered only through the tag actor factory (via the factories' prop model contributor calls).

Is the tag property directory new for v8.3.x? Apparently not new, but maybe a new requirement?

Nope, v8.1.47 also shows nulls. :frowning:

Does the registration have to happen in designer scope, too?

Can registrations be replaced? (For the dynamic prop model contributors I recently added to the toolkit.)

I'll have to look into the history if requirements changed out from under you, but at the very least it's not obvious from our public javadocs. You'll want to register them in both gateway and designer scopes.

Looking into your second question, yes, any re-registered properties will be considered the next time the tag model is fetched (the tag model is re-generated every time it is fetched). There is however no unregister (but that's outside of the scope I think you're getting at)

OK. Toolkit for both v8.1 and v8.3 coming soon.

Thanks Phil ... :+1:

Updated modules are announced here (and on my downloads page):