diff --git a/edu.kit.ipd.descartes.adaptation/default.properties b/edu.kit.ipd.descartes.adaptation/default.properties
index 6d38c3ed27394d57de78a57ca936d63c4861a277..b4eeb5caa0677769a02da348d62d749c2fbe4d37 100644
--- a/edu.kit.ipd.descartes.adaptation/default.properties
+++ b/edu.kit.ipd.descartes.adaptation/default.properties
@@ -2,10 +2,19 @@
 #adaptationProcessModel=/Users/nhuber/Documents/workspace/descartes/metamodel/edu.kit.ipd.descartes.adaptation.test/test_models/StaRepository.xmi
 #performanceDataRepositoryModel=/Users/nhuber/Documents/workspace/descartes/metamodel/edu.kit.ipd.descartes.adaptation.test/test_models/PerformanceDataRepositoryDummy.xmi
 #maxIterations=2
+## The list of triggering events can be found in AdaptationControl.java
+#event=
 
-processName=SEAMS_PushPull-v1
-adaptationProcessModel=/Users/nhuber/Documents/workspace/descartes/metamodel/edu.kit.ipd.descartes.adaptation.test/test_models/SEAMS_Case_Study/PushPullAdaptationProcess.xmi
-performanceDataRepositoryModel=/Users/nhuber/Documents/workspace/descartes/metamodel/edu.kit.ipd.descartes.adaptation.test/test_models/SEAMS_Case_Study/PerformanceDataRepositoryDummy.xmi
+#processName=SEAMS_PushPull-v1
+#adaptationProcessModel=/Users/nhuber/Documents/workspace/descartes/metamodel/edu.kit.ipd.descartes.adaptation.test/test_models/SEAMS_Case_Study/PushPullAdaptationProcess.xmi
+#performanceDataRepositoryModel=/Users/nhuber/Documents/workspace/descartes/metamodel/edu.kit.ipd.descartes.adaptation.test/test_models/SEAMS_Case_Study/PerformanceDataRepositoryDummy.xmi
+#maxIterations=2
+## The list of triggering events can be found in AdaptationControl.java
+#event=SlaViolatedEvent
+
+processName=BlueYonderTestAdaptationProcess
+adaptationProcessModel=/Users/nhuber/Documents/workspace/descartes/runtime-EclipseApplication/by_dmm-model/testprocess.adaptation
+performanceDataRepositoryModel=../edu.kit.ipd.descartes.adaptation.test/test_models/SEAMS_Case_Study/PerformanceDataRepositoryDummy.xmi
 maxIterations=1
-# The triggering event can either be SlaViolation or scheduledMaintenance
-event=SlaViolation
\ No newline at end of file
+## The list of triggering events can be found in AdaptationControl.java
+event=BottleneckFoundEvent
\ No newline at end of file
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/AdaptationControl.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/AdaptationControl.java
index 949aef098b5273c52adf8841e6d8d0ffb2e41085..050652fbe2afa371d512406bf46b9eb7d20050e3 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/AdaptationControl.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/AdaptationControl.java
@@ -30,7 +30,8 @@ public class AdaptationControl {
 
 	public enum EventType {
 	    SLA_VIOLATION ("SlaViolatedEvent", "12345"),
-	    SCHEDULED_MAINTENANCE ("scheduledMaintenanceEvent", "_H_MTgIAnEeKW2vVcg5ekRw");
+	    SCHEDULED_MAINTENANCE ("ScheduledMaintenanceEvent", "_H_MTgIAnEeKW2vVcg5ekRw"),
+	    BOTTLENECK_FOUND ("BottleneckFoundEvent", "_VvZEwKEoEeKDl52Xojo4CQ");
 
 	    private final String name;   
 	    private final String id; 
@@ -39,6 +40,13 @@ public class AdaptationControl {
 	        this.name = name;
 	        this.id = id;
 	    }
+
+        public static EventType getEventType(String eventTypeName) {
+            if (eventTypeName.equals(SLA_VIOLATION.name)) return SLA_VIOLATION;
+            if (eventTypeName.equals(SCHEDULED_MAINTENANCE.name)) return SCHEDULED_MAINTENANCE;
+            if (eventTypeName.equals(BOTTLENECK_FOUND.name)) return BOTTLENECK_FOUND;
+            return null;
+        }
 	}
 	
 	private static final String DEFAULT_PROP_FILE_PATH = "./default.properties";
@@ -73,7 +81,7 @@ public class AdaptationControl {
 	 */
 	public static void main(String[] args) throws IOException {
 		BasicConfigurator.configure();
-		Logger.getRootLogger().setLevel(Level.INFO);
+		Logger.getRootLogger().setLevel(Level.DEBUG);
 
 		AdaptationControl adaptationController = new AdaptationControl();
 		// Initialize controller (load models, create Action handler, etc.)
@@ -100,9 +108,9 @@ public class AdaptationControl {
 		}
 	}
 
+	// Creates an "artifical event". Will be replaced later when integrated in the system
     private Event createTriggeringEvent() {
-        // Create an "artifical event"
-        EventType type = eventType.equals("SlaViolation") ? EventType.SLA_VIOLATION : EventType.SCHEDULED_MAINTENANCE;
+        EventType type = EventType.getEventType(eventType);
         
         Event triggeringEvent = AdaptationFactory.eINSTANCE.createEvent();
         triggeringEvent.setName(type.name);
@@ -156,6 +164,14 @@ public class AdaptationControl {
 		// Caluclate the new weight of the tactic
 		wFunction = new WeightedSumCalculator(function);
 		wFunction.updateWeight(tactic);
+		
+		//save results
+		try {
+		    logger.debug("Saving tactics evaluation results...");
+            adaptationProcessModelManager.saveAll();
+        } catch (IOException e) {
+            logger.error("Error while persisting evaluation results.", e);
+        }
 	}
 
     private void processResults(WeightedTactic tactic) {
@@ -189,6 +205,8 @@ public class AdaptationControl {
 
 		String eventName = triggeringEvent.getName();
 		String eventId = triggeringEvent.getId();
+		
+		logger.debug("Caught event: " + eventName + " (ID: " + eventId + ")");
 
 		for (Strategy strategy : staRepo.getStrategies()) {
 			if (strategy.getTriggeringEvents().getId().equals(eventId)
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/TacticExecutor.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/TacticExecutor.java
index e8ba1bb7d72b10e5ad233c713075045b00422a5f..1b0526cfe306e15c5acaa39737702590d4598857 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/TacticExecutor.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/TacticExecutor.java
@@ -6,6 +6,7 @@ import org.apache.log4j.Logger;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 
+import edu.kit.ipd.descartes.adaptation.exceptions.InvalidAdaptationPlan;
 import edu.kit.ipd.descartes.adaptation.exceptions.OperationNotPerformedException;
 import edu.kit.ipd.descartes.adaptation.model.dmm.util.OclEvaluationHelper;
 import edu.kit.ipd.descartes.mm.adaptation.AbstractControlFlowElement;
@@ -43,13 +44,16 @@ public class TacticExecutor {
      */
     private void executeAdaptationPlan(AdaptationPlan plan) throws OperationNotPerformedException {
 
-        StartAction start = null;
-        start = findStartAction(plan);
+        StartAction start = findStartAction(plan);
         if (start == null) 
             throw new OperationNotPerformedException("No start action for adaptation plan " + plan.getName() + " found.");
 
         logger.info("Executing the adaptation plan <<" + plan.getName() + ">>.");
-        executeNextStep(start.getSuccessor());
+        try {
+            executeNextStep(start.getSuccessor());
+        } catch (InvalidAdaptationPlan e) {
+            logger.error("Invalid adaptation plan <<" + plan.getName() + ">> when executing action with ID <<" + start.getId() + ">>.", e);
+        }
         logger.info("Adaptation plan of adaptation plan <<" + plan.getName() + ">> terminated.");
     }
 
@@ -64,25 +68,20 @@ public class TacticExecutor {
 	}
 
 	private void executeNextStep(AbstractControlFlowElement step)
-			throws OperationNotPerformedException {
+			throws OperationNotPerformedException, InvalidAdaptationPlan {
+	    
+	    if (step == null)
+	        throw new InvalidAdaptationPlan("Current AbstractControlFlowElement is null!");
 
 		if (step instanceof StopAction) {
 			return;
-		} else
-
-		if (step instanceof BranchAction) {
+		} else if (step instanceof BranchAction) {
 		    executeBranchAction(step);
-		} else
-		
-		if (step instanceof LoopAction) {
+		} else if (step instanceof LoopAction) {
 		    execLoopAction(step);
-		} else
-
-		if (step instanceof ActionReference) {
+		} else if (step instanceof ActionReference) {
 			executeReferredAction(step);
-		}
-		// Handle invalid actions and control flow elements
-		else
+		} else	// Handle invalid actions and control flow elements
 		    throw new OperationNotPerformedException(
 		            "No valid control flow element " + step.toString());
 		
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/exceptions/InvalidAdaptationPlan.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/exceptions/InvalidAdaptationPlan.java
new file mode 100644
index 0000000000000000000000000000000000000000..ac06c40b63d59ff5515d569f2b6026e6c93f9b7c
--- /dev/null
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/exceptions/InvalidAdaptationPlan.java
@@ -0,0 +1,14 @@
+package edu.kit.ipd.descartes.adaptation.exceptions;
+
+public class InvalidAdaptationPlan extends Exception {
+    
+    public InvalidAdaptationPlan(String message) {
+        super(message);
+    }
+
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 963013704332157870L;
+
+}
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/DmmModelActionHandler.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/DmmModelActionHandler.java
index 204158b926fd6eee5fe72ed7c07f3e0795ed9a69..9a28ccd5d3f2e36220cbf556609c4f0cea0085af 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/DmmModelActionHandler.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/DmmModelActionHandler.java
@@ -31,17 +31,17 @@ import edu.kit.ipd.descartes.mm.resourcelandscape.RuntimeEnvironment;
 public class DmmModelActionHandler implements IActionHandler {
     static Logger logger = Logger.getLogger(DmmModelActionHandler.class);
 
-    private AdaptationProcessModelManager dmmModelResourceLoader;
+    private AdaptationProcessModelManager adaptProcessModelMgr;
 
     public DmmModelActionHandler() {
 
-        dmmModelResourceLoader = AdaptationProcessModelManager.getInstance();
+        adaptProcessModelMgr = AdaptationProcessModelManager.getInstance();
         logger.info("DMM Models loaded.");
     }
 
     private void saveModels() {
         try {
-            dmmModelResourceLoader.saveAll();
+            adaptProcessModelMgr.saveAll();
         } catch (IOException e) {
             logger.error("Error while saving models", e);
         }
@@ -191,6 +191,10 @@ public class DmmModelActionHandler implements IActionHandler {
             targetContainer.getContains().add(migratedEntity);
             parent.getContains().remove(migratedEntity);
             break;
+        case ContainerrepositoryPackage.CONTAINER_TEMPLATE:
+            logger.debug("Migration a container referring to container template " + adaptableEntity);
+            //TODO: Implement ContainerTemplate Migration
+            break;
         default:
             throw new IllegalArgumentException("No implemented migrate operation for " + adaptableEntity);
         }
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/weightingfunction/WeightedSumCalculator.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/weightingfunction/WeightedSumCalculator.java
index 67c304e35187c43fa71a630159354eac5689f6dd..0770ba64526c1f61009e16cd03c89a2eb23253f4 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/weightingfunction/WeightedSumCalculator.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/weightingfunction/WeightedSumCalculator.java
@@ -40,7 +40,7 @@ public class WeightedSumCalculator implements IWeightingFunctionCalculator {
 					afterMetricValue.getMetricType());
 
             if (Double.isNaN(weightOfMetric))
-                logger.error("No weight found for metric type: " + afterMetricValue.getMetricType().getName());
+                logger.info("No weight found for metric type: " + afterMetricValue.getMetricType().getName() + ", skipping...");
             else {
                 // add it
                 newWeight += weightOfMetric * delta;