EAM - Tag copy task failed due to insufficient tag provider edit permissions

I tried to send tags using EAM from the Controller to an Agent, but it failed due to insufficient permissions. I'm not sure how to tell it to run as a particular user? Or how to resolve this?

I have tag editing permissions setup in my tag provider

Shot in the dark, but any chance your EAM module licence on the agent was expired?

I get an access denied when forgetting to reset the trial in the test environment.

I've just checked and both gateway EAMs are running out of trial mode. Not sure where to go from here. Support call it is I think

Do role names line up between the two gateways? Service security permissions met? Any security zones accidentally taking effect, maybe?

Yep, I literally backed up the other gateway and restored it to the 2nd gateway, changed gateway name etc. and setup the GAN.

No security zones configured

What do you mean by this?

Hmm, I removed the Tag Editing Permissions on the tag Agent's tag provider to test, and now the Controller is saying "tag provider not found on this gateway" :confused:

Let me investigate... it definitely exists though

Ever do anything like duplicate a VM before setting up GAN? How dense is this GAN setup - a few nodes, or a whole forest?

It's just the 2 GWs at the moment, will be 3 GWs at some stage and nope to the duplicating VMs

FWIW, sending a project works successfully

This is my tag send tag paths config (don't ask about the "_fixed" :no_mouth:):
image

Does sending tags work from inside the designer?
Have you contacted support? :stuck_out_tongue:

I was just testing this. And the result is, YES, it does work. Maybe I'll create a task from the Designer and see what the difference is...

image

Looks the same to me...

The Agent task created by the Designer works too...

That particular role didn't exist in the user source required for tag editing.

Well it seems to be working now.. I'm getting new errors now though :slight_smile:

Tag JSON import operation failed [default_fixed]types/Packaging: Error_Exception("class com.inductiveautomation.ignition.common.alarming.config.BasicAlarmConfiguration cannot be cast to class com.inductiveautomation.ignition.common.alarming.config.ExtendedAlarmConfiguration (com.inductiveautomation.ignition.common.alarming.config.BasicAlarmConfiguration and com.inductiveautomation.ignition.common.alarming.config.ExtendedAlarmConfiguration are in unnamed module of loader 'app')"

I'm guessing this is some anomaly from a previous upgrade, perhaps from 7 to 8

Time to find the dodgy alarm tag...

I found the type, not sure what's wrong with it though. Copying tag JSON and reimporting it into another type fixed it. I can't import it over the top of the existing one though with error:

Exception: class com.inductiveautomation.ignition.common.alarming.config.BasicAlarmConfiguration cannot be cast to class com.inductiveautomation.ignition.common.alarming.config.ExtendedAlarmConfiguration (com.inductiveautomation.ignition.common.alarming.config.BasicAlarmConfiguration and com.inductiveautomation.ignition.common.alarming.config.ExtendedAlarmConfiguration are in unnamed module of loader 'app')

Ignition v8.1.22 (b2022110109)
Java: Azul Systems, Inc. 11.0.16.1

(same error as the other one)
Any ideas?

A full stacktrace (gateway logs?) Would be helpful

INFO   | jvm 1    | 2022/12/01 11:34:37 | E [t.m.provider                  ] [01:04:37]: Error encountered processing tag edit provider=default_fixed
INFO   | jvm 1    | 2022/12/01 11:34:37 | java.lang.ClassCastException: class com.inductiveautomation.ignition.common.alarming.config.BasicAlarmConfiguration cannot be cast to class com.inductiveautomation.ignition.common.alarming.config.ExtendedAlarmConfiguration (com.inductiveautomation.ignition.common.alarming.config.BasicAlarmConfiguration and com.inductiveautomation.ignition.common.alarming.config.ExtendedAlarmConfiguration are in unnamed module of loader 'app')
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.lambda$mergeAlarms$4(TagEvaluationManagerImpl.java:1050)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at java.base/java.util.ArrayList.forEach(Unknown Source)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.mergeAlarms(TagEvaluationManagerImpl.java:1040)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.moveOrEditNode(TagEvaluationManagerImpl.java:934)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.processEditInternal(TagEvaluationManagerImpl.java:421)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.processEditInternal(TagEvaluationManagerImpl.java:469)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.processEditInternal(TagEvaluationManagerImpl.java:469)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.processEditInternal(TagEvaluationManagerImpl.java:469)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at com.inductiveautomation.ignition.gateway.tags.runtime.TagEvaluationManagerImpl.processEdit(TagEvaluationManagerImpl.java:321)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at com.inductiveautomation.ignition.gateway.tags.TagProviderImpl.saveTagConfigInternal(TagProviderImpl.java:813)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at com.inductiveautomation.ignition.gateway.tags.TagProviderImpl.lambda$importTagsAsync$25(TagProviderImpl.java:1140)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at com.inductiveautomation.ignition.gateway.tags.TagProviderImpl.lambda$exec$5(TagProviderImpl.java:462)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
INFO   | jvm 1    | 2022/12/01 11:34:37 | 	at java.base/java.lang.Thread.run(Unknown Source)
INFO   | jvm 1    | 2022/12/01 11:34:37 | E [t.m.provider                  ] [01:04:37]: Error processing edit for tag path '[default_fixed]_types_/Packaging/Wine Delivery/Packaging Transfer Sequence 1': Error_Exception("class com.inductiveautomation.ignition.common.alarming.config.BasicAlarmConfiguration cannot be cast to class com.inductiveautomation.ignition.common.alarming.config.ExtendedAlarmConfiguration (com.inductiveautomation.ignition.common.alarming.config.BasicAlarmConfiguration and com.inductiveautomation.ignition.common.alarming.config.ExtendedAlarmConfiguration are in unnamed module of loader 'app')") provider=default_fixed
INFO   | jvm 1    | 2022/12/01 11:34:37 | I [t.m.provider                  ] [01:04:37]: Finished import in 3 ms 

I would send you the tag in error, but exporting it and re-importing it removes the issue...

Update:
The type has a parent type. It looks like the only thing changed are the udt parameters are overridden... not sure why it even exists in that case tbh...
If I copy the type and paste it (not JSON), the error follows it.
If I change the parent type of the type, the error is gone. However, if I set it back, the error comes back

There are actually a number of tags in my project that have this issue, it seems. It's really hampering my ability to use EAM :confused: The most time consuming part is trying to locate the bad tags, as the tagpath doesn't get reported, I have to do it by trial and error, literally sending a selection of tags and waiting for it to fail, then narrow down the selection until finally I end up with a single tag/UDT

And RE my OP, if I add the tag editing permission back into my tag provider, I'm still seeing the original issue Bad_AccessDenied("Insufficient Tag Provider Edit Permissions") when trying to send tags to this tag provider