# Issue using TagProvider.writeAsync

**URL:** <https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668>\
**Category:** Module Development\
**Tags:** ignition80\
**Created:** [September 14, 2020, 7:03pm UTC](https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668 "2020-09-14T19:03:53Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![dvaughn](https://avatars.discourse-cdn.com/v4/letter/d/c6cbf5/32.png) [@dvaughn](https://forum.inductiveautomation.com/u/dvaughn)\
**Post date:** [September 14, 2020, 7:03pm UTC](https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668/1 "2020-09-14T19:03:53Z")

</div>

I am working on building a Gateway Module for Ignition version 8.0.15 and I am running into an issue when I try to write tags to a Tag Provider.

The `record` variable below is of type RecordData and `context` is of type [GatewayContext](http://files.inductiveautomation.com/sdk/javadoc/ignition80/8.0.14/com/inductiveautomation/ignition/gateway/model/GatewayContext.html).

```auto
List<TagPath> tagPaths = new ArrayList<>();
List<QualifiedValue> values = new ArrayList<>();

tagPaths.add(new BasicTagPath(record.topic));
values.add(new BasicQualifiedValue(record.value, QualityCode.Good, record.timestamp));

List<QualityCode> results = context.getTagManager().getTagProvider(tagProvider)
    .writeAsync(tagPaths, values, SecurityContext.systemContext()).get();

```

```auto
public class RecordData {
    public String topic;
    public Object value;
    public Date timestamp;
}

```

If I log out everything, this is what I get.

```auto
logger(tagPaths); // [[ACGE-23/level]]
logger(values); // [[0.85033414125612, Good, Thu Aug 27 22:34:31 UTC 2020 (1598567671005)]]
logger(results); // [Bad_Unsupported]

```

I don’t understand why I am getting back `Bad_Unsupported`. Looking through the javadocs, all I can find is the interface of the methods.

Any help would be greatly appreciated!

---

<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:** [September 14, 2020, 7:18pm UTC](https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668/2 "2020-09-14T19:18:06Z")

</div>

What kind of tag are you writing to?

---

<div class="post-metadata">

**Author:** ![dvaughn](https://avatars.discourse-cdn.com/v4/letter/d/c6cbf5/32.png) [@dvaughn](https://forum.inductiveautomation.com/u/dvaughn)\
**Post date:** [September 14, 2020, 8:58pm UTC](https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668/3 "2020-09-14T20:58:49Z")

</div>

I’ve tried it without the tag existing and as a memory tag.

---

<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:** [September 14, 2020, 9:08pm UTC](https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668/4 "2020-09-14T21:08:11Z")

</div>

Ah, don’t write QualifiedValues, write the actual value itself from `record.value`.

And don’t expect writing to a tag that doesn’t exist to succeed. The memory tag should work.

---

<div class="post-metadata">

**Author:** ![dvaughn](https://avatars.discourse-cdn.com/v4/letter/d/c6cbf5/32.png) [@dvaughn](https://forum.inductiveautomation.com/u/dvaughn)\
**Post date:** [September 14, 2020, 9:21pm UTC](https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668/5 "2020-09-14T21:21:23Z")

</div>

According the the javadocs [writeAsync](http://files.inductiveautomation.com/sdk/javadoc/ignition80/8.0.14/com/inductiveautomation/ignition/common/tags/model/TagProvider.html#writeAsync(java.util.List,java.util.List,com.inductiveautomation.ignition.common.tags.model.SecurityContext)) takes a List of QualifiedValues. Am I missing an overload or something?

---

<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:** [September 14, 2020, 9:29pm UTC](https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668/6 "2020-09-14T21:29:00Z")

</div>

Oops, you’re right. I was looking at the API for `TagManager`.

Try turning the log level for “tags.management.provider” to DEBUG and see if there’s any additional information after you write.

[https://docs.inductiveautomation.com/display/DOC80/Diagnostics+-+Logs#Diagnostics-Logs-ChangingLoggingLevels](https://docs.inductiveautomation.com/display/DOC80/Diagnostics+-+Logs#Diagnostics-Logs-ChangingLoggingLevels)

---

<div class="post-metadata">

**Author:** ![dvaughn](https://avatars.discourse-cdn.com/v4/letter/d/c6cbf5/32.png) [@dvaughn](https://forum.inductiveautomation.com/u/dvaughn)\
**Post date:** [September 14, 2020, 9:42pm UTC](https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668/7 "2020-09-14T21:42:21Z")

</div>

Set the logger to TRACE and this is the extra info I get:

```auto
Starting write, paths=[[NFBA-23/level]], values=[[0.85033414125612, Good, Thu Aug 27 22:34:31 UTC 2020 (1598567671005)]]

Async write of 1 values completed in 0 ms

```

---

<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:** [September 14, 2020, 9:45pm UTC](https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668/8 "2020-09-14T21:45:41Z")

</div>

Hmm. Is this just a standard tag provider? Not really sure what’s going wrong yet. Best guess is that the tag at path “NFBA-23/level” is not a standard memory tag but rather a folder or UDT or something else…

---

<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:** [September 14, 2020, 9:52pm UTC](https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668/9 "2020-09-14T21:52:46Z")

</div>

Oh, try creating your tag path like this instead. `TagPathParser.parse(record.topic)`

---

<div class="post-metadata">

**Author:** ![dvaughn](https://avatars.discourse-cdn.com/v4/letter/d/c6cbf5/32.png) [@dvaughn](https://forum.inductiveautomation.com/u/dvaughn)\
**Post date:** [September 14, 2020, 9:58pm UTC](https://forum.inductiveautomation.com/t/issue-using-tagprovider-writeasync/38668/10 "2020-09-14T21:58:46Z")

</div>

That did it! Thanks for all the help!
