Hi guys, I´m running a microflow in background that does several commits, and I´m getting the error message below at the end of the mf: com.mendix.systemwideinterfaces.MendixRuntimeException: Autocommitted objects detected at end of transaction for system session for entities: - DSM.CapacityB: 506 instances - DSM.CapacityC: 506 instances - DSM.VariableCostsGHGEnergy: 506 instances - DSM.VariableCostsMaterial: 506 instances - DSM.VariableCostsEnergy: 506 instances - DSM.FixedCostsSCM: 496 instances - DSM.VariableCostsSCM: 135 instances - DSM.CapacityA: 506 instances - DSM.Inventory: 437 instances - DSM.FixedCostsPrice: 501 instances - DSM.FixedCostsVolume: 501 instances at com.mendix.basis.action.RequestScope.$anonfun$endTransaction$1(RequestScope.scala:146) at com.mendix.basis.action.RequestScope.$anonfun$endTransaction$1$adapted(RequestScope.scala:137) at scala.Option.foreach(Option.scala:407) at com.mendix.basis.action.RequestScope.verifyNoAutoCommitsForSystemSessionExists$1(RequestScope.scala:137) at com.mendix.basis.action.RequestScope.$anonfun$endTransaction$7(RequestScope.scala:153) at com.mendix.basis.action.RequestScope.$anonfun$endTransaction$7$adapted(RequestScope.scala:150) at scala.Option.foreach(Option.scala:407) at com.mendix.basis.action.RequestScope.endTransaction(RequestScope.scala:150) at com.mendix.basis.action.ContextImpl.endTransaction(ContextImpl.java:208) at processqueue.queuehandler.ObjectQueueExecutor.run(ObjectQueueExecutor.java:155) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Any clue what could I do to avoid this?
When executing logic in the ProcessQueue, you must explicitly commit all objects.
If you have two objects that are associated, and you commit the child, the parent is committed as well, to keep the database consistent. This implicit commit is called an ‘autocommit’. Autocommitted objects that are not explicitly committed by a user are deleted at the end of a user's session. The ProcessQueue does not allow this, and throws an error instead.
The error message indicates which objects have been autocomitted, but which have not been explicitly committed. Find these objects in your flow and commit them using the Commit Object(s) action.