# Ignition 8.0 SDK - Classes missing/moved

**URL:** <https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295>\
**Category:** Module Development\
**Tags:** ignition80\
**Created:** [April 22, 2019, 6:33pm UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295 "2019-04-22T18:33:44Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![UdayBaskar.Guntupall](https://avatars.discourse-cdn.com/v4/letter/u/bbce88/32.png) [@UdayBaskar.Guntupall](https://forum.inductiveautomation.com/u/UdayBaskar.Guntupall)\
**Post date:** [April 22, 2019, 6:33pm UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295/1 "2019-04-22T18:33:44Z")

</div>

We have been testing Ignition 8.0 SDK, and found multiple classes were missing.  
For instance  
com.inductiveautomation.ignition.gateway.sqltags.TagProvider  
com.inductiveautomation.ignition.gateway.sqltags.model.TagSubscriptionModel  
com.inductiveautomation.ignition.gateway.sqltags.model.TagWriteValidator

Most of the classes that looks to have either missing or moved are from com.inductiveautomation.ignition.gateway.sqltags.model package.

Any information or guidance on how to find these or equivalent classes would be appreciated.

Thanks

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [April 22, 2019, 6:54pm UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295/2 "2019-04-22T18:54:02Z")

</div>

You should be able to find these classes and their packages in the javadocs:

[http://files.inductiveautomation.com/sdk/javadoc/ignition80/8.0.0-beta/com/inductiveautomation/ignition/common/tags/model/TagProvider.html](http://files.inductiveautomation.com/sdk/javadoc/ignition80/8.0.0-beta/com/inductiveautomation/ignition/common/tags/model/TagProvider.html)

---

<div class="post-metadata">

**Author:** ![UdayBaskar.Guntupall](https://avatars.discourse-cdn.com/v4/letter/u/bbce88/32.png) [@UdayBaskar.Guntupall](https://forum.inductiveautomation.com/u/UdayBaskar.Guntupall)\
**Post date:** [April 22, 2019, 7:40pm UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295/3 "2019-04-22T19:40:10Z")

</div>

Sorry for multiple posts. I still have more of missing classes, not sure if there is a way to find where the classes are moved to or removed in Java docs. Few more i have are

import com.inductiveautomation.ignition.gateway.sqltags.model.TagWriteValidator;  
import com.inductiveautomation.ignition.gateway.sqltags.model.ExecutableScanClass;  
import com.inductiveautomation.ignition.gateway.sqltags.model.ExecutableTag;  
import com.inductiveautomation.ignition.gateway.sqltags.model.TagSubscription;  
import com.inductiveautomation.ignition.gateway.sqltags.model.TagSubscriptionChangeEvent;  
import com.inductiveautomation.ignition.gateway.sqltags.model.TagSubscriptionModel;  
import com.inductiveautomation.ignition.gateway.sqltags.providers.ProviderSubscriptionManager;  
import com.inductiveautomation.ignition.gateway.sqltags.providers.datasource.DatasourceTagProvider;  
import com.inductiveautomation.ignition.gateway.sqltags.scanclasses.BasicScanClassInstance;  
import com.inductiveautomation.ignition.gateway.sqltags.simple.SimpleTagProvider;  
import com.inductiveautomation.ignition.gateway.sqltags.simple.WriteHandler;

import com.inductiveautomation.ignition.common.sqltags.model.TagQualities;  
import com.inductiveautomation.ignition.common.model.values.CommonQualities;

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [April 22, 2019, 7:45pm UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295/4 "2019-04-22T19:45:36Z")

</div>

Most of those have the same name and you can search for them on the left on the overview page: [http://files.inductiveautomation.com/sdk/javadoc/ignition80/8.0.0-beta/index.html?overview-summary.html](http://files.inductiveautomation.com/sdk/javadoc/ignition80/8.0.0-beta/index.html?overview-summary.html)

Some of those no longer exist any more though. You may need to back up here and explain what your module used to do and see what the implementation in 8.0 is going to be. Not everything is just a package change.

---

<div class="post-metadata">

**Author:** ![UdayBaskar.Guntupall](https://avatars.discourse-cdn.com/v4/letter/u/bbce88/32.png) [@UdayBaskar.Guntupall](https://forum.inductiveautomation.com/u/UdayBaskar.Guntupall)\
**Post date:** [April 30, 2019, 11:12pm UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295/5 "2019-04-30T23:12:47Z")

</div>

Sorry for delayed response.  
I spent some time to look into SDK 8.0 implementation and could fix some of the classes. However there are still few more classes that i am yet to fix.  
TagWriteValidator - We use this class to receive a quality that verifies if a authenticated user is allowed make writes to given Tag Collection  
TagQualities - Some of the static tag qualities like not found/not writable statuses are used in above validator.  
ExecutableTag - This class is one more we frequently use with various Tag providers.

Thanks

---

<div class="post-metadata">

**Author:** ![Yogini\_Marathe](https://avatars.discourse-cdn.com/v4/letter/y/85e7bf/32.png) [@Yogini\_Marathe](https://forum.inductiveautomation.com/u/Yogini_Marathe)\
**Post date:** [May 8, 2019, 9:49am UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295/6 "2019-05-08T09:49:32Z")

</div>

Looking for equivalents in 8.0 for following -

```auto
TagProvider.getInformation().isSystem() ( We are using this to skip browsing System tags)
Tag.getAttribute(TagProp.HistoryEnabled) ( To find out if Tag is history enabled. I tried using NodeAttribute however no such property is available)

```

Appreciate any information regarding the same.

---

<div class="post-metadata">

**Author:** ![UdayBaskar.Guntupall](https://avatars.discourse-cdn.com/v4/letter/u/bbce88/32.png) [@UdayBaskar.Guntupall](https://forum.inductiveautomation.com/u/UdayBaskar.Guntupall)\
**Post date:** [May 8, 2019, 4:11pm UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295/7 "2019-05-08T16:11:48Z")

</div>

I see isSystem method available in TagProviderMeta class in com.inductiveautomation.ignition.common.sqltags.model package, not sure if this would suffice.  
Also the Tag class with getAttribute method is avaialable in the same package as above.

---

<div class="post-metadata">

**Author:** ![Yogini\_Marathe](https://avatars.discourse-cdn.com/v4/letter/y/85e7bf/32.png) [@Yogini\_Marathe](https://forum.inductiveautomation.com/u/Yogini_Marathe)\
**Post date:** [May 9, 2019, 9:20am UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295/8 "2019-05-09T09:20:50Z")

</div>

Thank you very much for the information.  
I explored more on this and was not able to get the Tag.getAttribute yet.  
What I need to do is as below -

1. Call following to get list of all tags under the specified tag provider

```auto
gatewayContext.GatewayTagManager.browseAsync 

```

1. This returns - Collection and from this node description I derive the tag path and tag names.

In this manner I can not use the Tag class from com.inductiveautomation.ignition.common.sqltags.model

1. This NodeDescription class has method called getAttributes , however I am not yet able to retrieve the Attribute / property similar to what we had in 7.9.x which states whether Tag is history enabled or not.

---

<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 9, 2019, 3:16pm UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295/9 "2019-05-09T15:16:23Z")

</div>

1. If any class you're using has `sqltags` in the package, it's deprecated and not the one you should be using.

2. To read the history enabled state, use browseAsync to get the tags in the location you want, then you will just perform a read on the tag with the history enabled sub prop. To easily get that path, use a new PropertyAlteredTagPath:  
`TagPath histEnabledPath = new PropertyAlteredTagPath(path, WellKnownTagProps.HistoryEnabled);`

> [@UdayBaskar.Guntupall](#):
>
> TagWriteValidator - We use this class to receive a quality that verifies if a authenticated user is allowed make writes to given Tag Collection

Tag security is actively getting improved - wait a bit for 8.0.2 to be out and revisit this.

> [@UdayBaskar.Guntupall](#):
>
> TagQualities - Some of the static tag qualities like not found/not writable statuses are used in above validator.

You should only be verifying qualities against the static values in QualityCode.

> [@UdayBaskar.Guntupall](#):
>
> ExecutableTag

The entire tag model has changed, to passing tags through various actors. I don't believe there's a direct analogue to ExecutableTag anymore.

---

<div class="post-metadata">

**Author:** ![Yogini\_Marathe](https://avatars.discourse-cdn.com/v4/letter/y/85e7bf/32.png) [@Yogini\_Marathe](https://forum.inductiveautomation.com/u/Yogini_Marathe)\
**Post date:** [May 10, 2019, 5:14am UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295/10 "2019-05-10T05:14:54Z")

</div>

> [@paul-griffith](#):
>
> To read the history enabled state, use browseAsync to get the tags in the location you want, then you will just perform a read on the tag with the history enabled sub prop. To easily get that path, use a new PropertyAlteredTagPath:  
> `TagPath histEnabledPath = new PropertyAlteredTagPath(path, WellKnownTagProps.HistoryEnabled);`

Thank you very much. This solved my problem, I am able to read the History Enabled property now.

---

<div class="post-metadata">

**Author:** ![UdayBaskar.Guntupall](https://avatars.discourse-cdn.com/v4/letter/u/bbce88/32.png) [@UdayBaskar.Guntupall](https://forum.inductiveautomation.com/u/UdayBaskar.Guntupall)\
**Post date:** [September 12, 2019, 4:52pm UTC](https://forum.inductiveautomation.com/t/ignition-8-0-sdk-classes-missing-moved/24295/11 "2019-09-12T16:52:38Z")

</div>

We are trying to build custom modules with SDK 8.0.2. With 7.9 we used to extend com.inductiveautomation.ignition.gateway.sqltags.providers.datasource.DataSourceTagProvider for implementing custom Tag Provider, however i found different implementations with 8.0.2 like GatewayTagProvider and TagProviderServiceImpl.

Can you please advise which one would be more appropriate that would provide subscription changes?
