diff --git a/cps/tests/org.eclipse.viatra.examples.cps.tests.util/src/org/eclipse/viatra/examples/cps/tests/util/CPSTestBase.xtend b/cps/tests/org.eclipse.viatra.examples.cps.tests.util/src/org/eclipse/viatra/examples/cps/tests/util/CPSTestBase.xtend
index 9a640f5..a84b1dd 100644
--- a/cps/tests/org.eclipse.viatra.examples.cps.tests.util/src/org/eclipse/viatra/examples/cps/tests/util/CPSTestBase.xtend
+++ b/cps/tests/org.eclipse.viatra.examples.cps.tests.util/src/org/eclipse/viatra/examples/cps/tests/util/CPSTestBase.xtend
@@ -26,10 +26,10 @@
 	def static setupRootLogger() {
 		doStandaloneEMFSetup()
 		
-		Logger.getLogger("cps.xform").level = PropertiesUtil.getCPSXformLogLevel
+		Logger.getLogger("cps.xform").initLoggerForLevel(PropertiesUtil.getCPSXformLogLevel, COMMON_LAYOUT)
 		Logger.getLogger("cps.generator").initLoggerForLevel(PropertiesUtil.getCPSGeneratorLogLevel, COMMON_LAYOUT)
 		Logger.getLogger("cps.performance").initLoggerForLevel(PropertiesUtil.getCPSGeneratorLogLevel, COMMON_LAYOUT)
-		Logger.getLogger("org.eclipse.viatra.query").level = PropertiesUtil.getIncQueryLogLevel
+		Logger.getLogger("org.eclipse.viatra.query").initLoggerForLevel(PropertiesUtil.getIncQueryLogLevel, COMMON_LAYOUT)
 		Logger.getLogger("cps.mondosam").initLoggerForLevel(PropertiesUtil.getBenchmarkLogLevel, COMMON_LAYOUT)
 		Logger.getLogger("cps.stats").initLoggerForLevel(PropertiesUtil.getStatsLogLevel, STATS_LAYOUT)
 		Logger.getLogger("cps.proto").initLoggerForLevel(PropertiesUtil.getCPSGeneratorLogLevel, COMMON_LAYOUT)
@@ -44,16 +44,17 @@
 	}
 	
 	def static initLoggerForLevel(Logger logger, Level level, String patternLayout) {
-		var ConsoleAppender ca = new ConsoleAppender();
-		val logFilePath = "./results/log/log.log";
-		val fileAppender = new FileAppender(new PatternLayout(patternLayout+FILE_LOG_LAYOUT_PREFIX),logFilePath,true);
-		fileAppender.threshold = Level.DEBUG;
-		ca.setWriter(new OutputStreamWriter(System.out));
-		ca.setLayout(new PatternLayout(patternLayout));
-		logger.setAdditivity(false);
-		logger.removeAllAppenders();
-		logger.addAppender(ca);
-		logger.addAppender(fileAppender);
-		logger.setLevel(level);
+		var ConsoleAppender ca = new ConsoleAppender()
+		val logFilePath = "./results/log/log.log"
+		val fileAppender = new FileAppender(new PatternLayout(patternLayout+FILE_LOG_LAYOUT_PREFIX),logFilePath,true)
+		fileAppender.threshold = Level.INFO
+		ca.setWriter(new OutputStreamWriter(System.out))
+		ca.setLayout(new PatternLayout(patternLayout))
+		ca.threshold = Level.WARN
+		logger.setAdditivity(false)
+		logger.removeAllAppenders()
+		logger.addAppender(ca)
+		logger.addAppender(fileAppender)
+		logger.setLevel(level)
 	}
 }
diff --git a/cps/tests/org.eclipse.viatra.examples.cps.xform.m2m.tests/src/org/eclipse/viatra/examples/cps/xform/m2m/tests/mappings/ActionMappingTest.xtend b/cps/tests/org.eclipse.viatra.examples.cps.xform.m2m.tests/src/org/eclipse/viatra/examples/cps/xform/m2m/tests/mappings/ActionMappingTest.xtend
index c6af7b3..d15fa28 100644
--- a/cps/tests/org.eclipse.viatra.examples.cps.xform.m2m.tests/src/org/eclipse/viatra/examples/cps/xform/m2m/tests/mappings/ActionMappingTest.xtend
+++ b/cps/tests/org.eclipse.viatra.examples.cps.xform.m2m.tests/src/org/eclipse/viatra/examples/cps/xform/m2m/tests/mappings/ActionMappingTest.xtend
@@ -14,15 +14,14 @@
 import org.eclipse.viatra.examples.cps.cyberPhysicalSystem.Transition
 import org.eclipse.viatra.examples.cps.deployment.BehaviorTransition
 import org.eclipse.viatra.examples.cps.traceability.CPSToDeployment
-import org.eclipse.viatra.examples.cps.xform.m2m.tests.CPS2DepTest
 import org.eclipse.viatra.examples.cps.xform.m2m.launcher.CPSTransformationWrapper
+import org.eclipse.viatra.examples.cps.xform.m2m.tests.CPS2DepTest
 import org.junit.Ignore
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.Parameterized
 
 import static org.junit.Assert.*
-import org.eclipse.emf.ecore.util.EcoreUtil
 
 @RunWith(Parameterized)
 class ActionMappingTest extends CPS2DepTest {
@@ -813,7 +812,9 @@
 		cps2dep.assertActionMapping(transition, transition2)
 		
 		info("Removing host instance for wait")
-		EcoreUtil.delete(hostInstance2);
+		appInstance2.allocatedTo = null
+		hostInstance.communicateWith -= hostInstance2
+		host2.instances -= hostInstance2
 		executeTransformation
 		
 		cps2dep.assertNoTrigger(transition)
