Excel Exporter: Read Access denied on referenced entity attribute

0
We tried to set up the Excel Export mechanism using the module MX Reflection and Excel Exporter. We successfully managed to export an excel for an entity with a reference to another entity.  Scenario 1: Attributes of the entity first entity are succesfully exported as a column Scenario 2: Attributes of an associated (referenced) entity results in an error message with a log entry writen below Scenario 3: Attributes of an associated entity which are inherited from  a generalization (super class) are successfully exported (See here example that works)   We are using the dem administrator user with full rights on both modules and entities, MX version 9.18.0   any tips highly appreciated best regards Jens     Scenario 2 stack trace : An error has occurred while handling the request. [User 'demo_administrator' with session id '5699083d-XXXX-XXXX-XXXX-XXXXXXXX8631' and roles 'Administrator'] -------- com.mendix.modules.microflowengine.MicroflowException: com.mendix.systemwideinterfaces.MendixRuntimeException: com.mendix.core.objectmanagement.SecurityRuntimeException: Read access denied for DataRow column 'Test0' (3)     at P8PM_DeviceCodeManagement.ExportDtcVarVerDoc (JavaAction : 'GenerateExcelDoc')     at P8PM_DeviceCodeManagement.ExportDtcVarVer_List (SubMicroflow : 'ExportDtcVarVerDoc')     at P8PM_DeviceCodeManagement.Export_DtcVarVer_SoftwarePackage (SubMicroflow : 'ExportDtcVarVer_List') Advanced stacktrace:     at com.mendix.modules.microflowengine.MicroflowUtil.processException(MicroflowUtil.java:83) Caused by: com.mendix.core.CoreRuntimeException: com.mendix.systemwideinterfaces.MendixRuntimeException: com.mendix.core.objectmanagement.SecurityRuntimeException: Read access denied for DataRow column 'Test0' (3)     at com.mendix.basis.actionmanagement.ActionManager.executeSync(ActionManager.scala:108) Caused by: com.mendix.systemwideinterfaces.MendixRuntimeException: com.mendix.core.objectmanagement.SecurityRuntimeException: Read access denied for DataRow column 'Test0' (3)     at com.mendix.util.classloading.Runner$.withContextClassLoader(Runner.scala:23) Caused by: com.mendix.core.objectmanagement.SecurityRuntimeException: Read access denied for DataRow column 'Test0' (3)     at com.mendix.connectionbus.data.InternalDataRow.checkAccess(InternalDataRow.scala:222)     at com.mendix.connectionbus.data.InternalDataRow.getValue(InternalDataRow.scala:107)     at xlsreport.report.DataOQL.procesDatatable(DataOQL.java:719)     at xlsreport.report.DataOQL.getRowData(DataOQL.java:87)     at xlsreport.actions.GenerateExcelDoc.executeAction(GenerateExcelDoc.java:136)     at xlsreport.actions.GenerateExcelDoc.executeAction(GenerateExcelDoc.java:34)     at com.mendix.systemwideinterfaces.core.UserAction.execute(UserAction.java:58)     at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.doCall(CoreActionHandlerImpl.scala:71)     at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.call(CoreActionHandlerImpl.scala:48)     at com.mendix.core.actionmanagement.internal.InternalCoreAction.call(InternalCoreAction.java:56)     at com.mendix.basis.actionmanagement.ActionManager.$anonfun$executeSync$2(ActionManager.scala:104)     at com.mendix.util.classloading.Runner$.withContextClassLoader(Runner.scala:20)     at com.mendix.basis.actionmanagement.ActionManager.executeSync(ActionManager.scala:103)     at com.mendix.basis.actionmanagement.UserActionCallBuilderImpl.execute(UserActionCallBuilderImpl.scala:57)     at com.mendix.modules.microflowengine.actions.actioncall.ForegroundJavaAction.doExecute(ForegroundJavaAction.scala:35)     at com.mendix.modules.microflowengine.actions.actioncall.ForegroundJavaAction.doExecute(ForegroundJavaAction.scala:11)     at com.mendix.modules.microflowengine.actions.actioncall.JavaAction.execute(JavaAction.scala:38)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowObject.$anonfun$execute$1(MicroflowObject.scala:32)     at scala.Option.flatMap(Option.scala:283)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowObject.execute(MicroflowObject.scala:29)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.$anonfun$executeAfterBreakingIfNecessary$2(MicroflowImpl.scala:167)     at scala.Option.flatMap(Option.scala:283)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAfterBreakingIfNecessary(MicroflowImpl.scala:167)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAction(MicroflowImpl.scala:114)     at com.mendix.systemwideinterfaces.core.UserAction.execute(UserAction.java:58)     at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.doCall(CoreActionHandlerImpl.scala:71)     at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.call(CoreActionHandlerImpl.scala:48)     at com.mendix.core.actionmanagement.internal.InternalCoreAction.call(InternalCoreAction.java:56)     at com.mendix.basis.actionmanagement.ActionManager.$anonfun$executeSync$2(ActionManager.scala:104)     at com.mendix.util.classloading.Runner$.withContextClassLoader(Runner.scala:20)     at com.mendix.basis.actionmanagement.ActionManager.executeSync(ActionManager.scala:103)     at com.mendix.basis.component.ExecutionCore.doExecuteSync(ExecutionCore.scala:148)     at com.mendix.basis.component.ExecutionCore.doExecuteSync$(ExecutionCore.scala:147)     at com.mendix.basis.component.InternalCore.doExecuteSync(InternalCore.scala:24)     at com.mendix.basis.component.ExecutionCore.executeSync(ExecutionCore.scala:97)     at com.mendix.basis.component.ExecutionCore.executeSync$(ExecutionCore.scala:94)     at com.mendix.basis.component.InternalCore.executeSync(InternalCore.scala:24)     at com.mendix.modules.microflowengine.MicroflowExecuter$.executeSync(MicroflowExecuter.scala:19)     at com.mendix.modules.microflowengine.actions.SubMicroflowAction.execute(SubMicroflowAction.scala:37)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowObject.$anonfun$execute$1(MicroflowObject.scala:32)     at scala.Option.flatMap(Option.scala:283)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowObject.execute(MicroflowObject.scala:29)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.$anonfun$executeAfterBreakingIfNecessary$2(MicroflowImpl.scala:167)     at scala.Option.flatMap(Option.scala:283)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAfterBreakingIfNecessary(MicroflowImpl.scala:167)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAction(MicroflowImpl.scala:114)     at com.mendix.systemwideinterfaces.core.UserAction.execute(UserAction.java:58)     at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.doCall(CoreActionHandlerImpl.scala:71)     at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.call(CoreActionHandlerImpl.scala:48)     at com.mendix.core.actionmanagement.internal.InternalCoreAction.call(InternalCoreAction.java:56)     at com.mendix.basis.actionmanagement.ActionManager.$anonfun$executeSync$2(ActionManager.scala:104)     at com.mendix.util.classloading.Runner$.withContextClassLoader(Runner.scala:20)     at com.mendix.basis.actionmanagement.ActionManager.executeSync(ActionManager.scala:103)     at com.mendix.basis.component.ExecutionCore.doExecuteSync(ExecutionCore.scala:148)     at com.mendix.basis.component.ExecutionCore.doExecuteSync$(ExecutionCore.scala:147)     at com.mendix.basis.component.InternalCore.doExecuteSync(InternalCore.scala:24)     at com.mendix.basis.component.ExecutionCore.executeSync(ExecutionCore.scala:97)     at com.mendix.basis.component.ExecutionCore.executeSync$(ExecutionCore.scala:94)     at com.mendix.basis.component.InternalCore.executeSync(InternalCore.scala:24)     at com.mendix.modules.microflowengine.MicroflowExecuter$.executeSync(MicroflowExecuter.scala:19)     at com.mendix.modules.microflowengine.actions.SubMicroflowAction.execute(SubMicroflowAction.scala:37)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowObject.$anonfun$execute$1(MicroflowObject.scala:32)     at scala.Option.flatMap(Option.scala:283)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowObject.execute(MicroflowObject.scala:29)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.$anonfun$executeAfterBreakingIfNecessary$2(MicroflowImpl.scala:167)     at scala.Option.flatMap(Option.scala:283)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAfterBreakingIfNecessary(MicroflowImpl.scala:167)     at com.mendix.modules.microflowengine.microflow.impl.MicroflowImpl.executeAction(MicroflowImpl.scala:114)     at com.mendix.systemwideinterfaces.core.UserAction.execute(UserAction.java:58)     at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.doCall(CoreActionHandlerImpl.scala:71)     at com.mendix.basis.actionmanagement.CoreActionHandlerImpl.call(CoreActionHandlerImpl.scala:48)     at com.mendix.core.actionmanagement.internal.InternalCoreAction.call(InternalCoreAction.java:56)     at com.mendix.basis.actionmanagement.ActionManager.$anonfun$executeSync$2(ActionManager.scala:104)     at com.mendix.util.classloading.Runner$.withContextClassLoader(Runner.scala:20)     at com.mendix.basis.actionmanagement.ActionManager.executeSync(ActionManager.scala:103)     at com.mendix.basis.actionmanagement.MicroflowCallBuilderImpl.execute(MicroflowCallBuilderImpl.scala:62)     at com.mendix.webui.actions.client.ExecuteMicroflowAction.runMicroflow(ExecuteMicroflowAction.scala:76)     at com.mendix.webui.actions.client.ExecuteMicroflowAction.$anonfun$apply$3(ExecuteMicroflowAction.scala:42)     at com.mendix.webui.actions.client.RegularClientAction$Helpers$.$anonfun$liftEither$1(RegularClientAction.scala:30)     at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.$anonfun$apply$4(RegularClientAction.scala:56)     at com.mendix.webui.requesthandling.helpers.StateHandling.withState(StateHandling.scala:45)     at com.mendix.webui.requesthandling.helpers.StateHandling.withState$(StateHandling.scala:42)     at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.withState(RegularClientAction.scala:46)     at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.apply(RegularClientAction.scala:54)     at com.mendix.webui.actions.client.RegularClientAction$Helpers$StateHandler.apply(RegularClientAction.scala:46)     at com.mendix.webui.actions.client.ExecuteMicroflowAction.apply(ExecuteMicroflowAction.scala:43)     at com.mendix.webui.actions.client.ExecuteMicroflowAction.apply(ExecuteMicroflowAction.scala:22)     at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$3(RegularClientAction.scala:120)     at scala.util.Try$.apply(Try.scala:210)     at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$2(RegularClientAction.scala:120)     at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$2$adapted(RegularClientAction.scala:118)     at com.mendix.webui.requesthandling.helpers.ContextHandling.$anonfun$inContext$7(ContextHandling.scala:58)     at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)     at com.mendix.basis.actionmanagement.ActionMonitoring$.$anonfun$monitor$1(ActionMonitoring.scala:49)     at com.mendix.util.classloading.Runner$.withContextClassLoader(Runner.scala:20)     at com.mendix.basis.actionmanagement.ActionMonitoring$.monitor(ActionMonitoring.scala:49)     at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext(ContextHandling.scala:58)     at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext$(ContextHandling.scala:32)     at com.mendix.webui.actions.client.RegularClientAction.inContext(RegularClientAction.scala:94)     at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext(ContextHandling.scala:29)     at com.mendix.webui.requesthandling.helpers.ContextHandling.inContext$(ContextHandling.scala:21)     at com.mendix.webui.actions.client.RegularClientAction.inContext(RegularClientAction.scala:94)     at com.mendix.webui.actions.client.RegularClientAction.$anonfun$execute$1(RegularClientAction.scala:118)     at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)     at com.mendix.webui.requesthandling.helpers.ProfileHandling.profileRequest(ProfileHandling.scala:14)     at com.mendix.webui.requesthandling.helpers.ProfileHandling.profileRequest$(ProfileHandling.scala:10)     at com.mendix.webui.actions.client.RegularClientAction.profileRequest(RegularClientAction.scala:94)     at com.mendix.webui.actions.client.RegularClientAction.execute(RegularClientAction.scala:115)     at com.mendix.webui.requesthandling.ClientRequestHandler.handleAction(ClientRequestHandler.scala:106)     at com.mendix.webui.requesthandling.ClientRequestHandler.processRequest(ClientRequestHandler.scala:79)     at com.mendix.externalinterface.connector.RequestHandler.doProcessRequest(RequestHandler.java:37)     at com.mendix.external.connector.MxRuntimeConnector.$anonfun$processRequest$1(MxRuntimeConnector.scala:54)     at com.mendix.external.connector.MxRuntimeConnector.$anonfun$processRequest$1$adapted(MxRuntimeConnector.scala:54)     at com.mendix.util.classloading.Runner$.withContextClassLoader(Runner.scala:20)     at com.mendix.external.connector.MxRuntimeConnector.processRequest(MxRuntimeConnector.scala:54)     at com.mendix.basis.impl.MxRuntimeImpl.processRequest(MxRuntimeImpl.scala:221)     at com.mendix.m2ee.appcontainer.server.handler.RuntimeServlet.service(RuntimeServlet.scala:40)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)     at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1665)     at org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:170)     at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)     at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)     at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1571)     at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1378)     at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1544)     at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1300)     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)     at org.eclipse.jetty.server.Server.handle(Server.java:562)     at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505)     at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762)     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497)     at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)     at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:319)     at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)     at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)     at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:412)     at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:381)     at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:268)     at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$0(AdaptiveExecutionStrategy.java:138)     at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:407)     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:894)     at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1038)     at java.base/java.lang.Thread.run(Thread.java:834)  
asked
3 answers
0

Seems to me that the user that is executing the export does not have the correct permissions to allow him/her to access the data that you are trying to export.

Plaese have a look at the permissions for the association and the attribute you are trying to export via the configuration. FIxing the permissions for this user will probably fix the error.

answered
0

Many thanks for your answers: The role that is executing the export is our admin role. This role is allowed to access all data. The role has full access (read/write) on the different screens and also on our REST services. So, there are many use cases already established, where this role already successfully retrieves / changes the same data.

The issue is just on associated objects: There we have the issue that attributes of the associated entities cannot be exported. For any attribute of this associated object we get the access error.

Only in scenario 3, where we inherit attributes from a generalization, we are able to export attributes from an associated objects (we would have expected an error here, but not on regular attributes of an associated object).

answered
0

We recognized the root cause – it was indeed an access control issue – but pretty much hidden.
We missed to apply entity access to the new System.FileDocument entity for the specific role. In our microflows, that collected the data for the Document from the different entities, the "apply entity access setting" was also not set correctly.
We updated both settings and know it works fine.

answered