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 7e0fb53fd906b3925cc882d17f4839c0c4c60159..78e5b181a9342fc6065ecb99073fd25efdea0b3f 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
@@ -15,17 +15,25 @@ import edu.kit.ipd.descartes.adaptation.analysis.IModelAnalyzer;
 import edu.kit.ipd.descartes.adaptation.evaluation.performance.IEvaluator;
 import edu.kit.ipd.descartes.adaptation.evaluation.performance.WeightingFunctionEvaluator;
 import edu.kit.ipd.descartes.adaptation.event.EventTypeEnum;
+import edu.kit.ipd.descartes.adaptation.model.adaptation.dmm.BlueYonderExperimentTracker;
 import edu.kit.ipd.descartes.adaptation.model.adaptation.dmm.DmmModelActionHandler;
+import edu.kit.ipd.descartes.adaptation.model.adaptation.dmm.TacticsHistory;
 import edu.kit.ipd.descartes.adaptation.model.adaptation.dmm.util.ObjectivesHelper;
 import edu.kit.ipd.descartes.adaptation.analysis.pcm.PcmModelAnalyzer;
 import edu.kit.ipd.descartes.adaptation.model.repository.dmm.AdaptationProcessModelLoader;
 import edu.kit.ipd.descartes.adaptation.model.repository.perfdatarepo.IPerformanceDataRepositoryHandler;
+import edu.kit.ipd.descartes.adaptation.model.repository.perfdatarepo.ObservationRepositoryHelper;
+import edu.kit.ipd.descartes.adaptation.model.repository.perfdatarepo.PerfDataRepoConverter;
+import edu.kit.ipd.descartes.adaptation.model.repository.perfdatarepo.PerformanceDataRepositoryHandler;
 import edu.kit.ipd.descartes.adaptation.model.repository.perfdatarepo.PerformanceDataRepositoryHandlerFactory;
 import edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess;
 import edu.kit.ipd.descartes.mm.adaptation.Event;
 import edu.kit.ipd.descartes.mm.adaptation.Strategy;
 import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
 import edu.kit.ipd.descartes.perfdatarepo.Impact;
+import edu.kit.ipd.descartes.perfdatarepo.Result;
+import edu.kit.ipd.descartes.ql.models.repository.Observation;
+import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository;
 
 public class AdaptationControl {
 
@@ -94,7 +102,7 @@ public class AdaptationControl {
             // set handlers
             dmmModelActionHandler = new DmmModelActionHandler();
             executor = new TacticExecutor(dmmModelActionHandler);
-            modelAnalyzer = new PcmModelAnalyzer();
+            modelAnalyzer = new PcmModelAnalyzer(perfDataRepoHandler);
             evaluator = new WeightingFunctionEvaluator();
         } catch (IOException e) {
             logger.error("Error while initializinig controller.", e);
@@ -147,7 +155,17 @@ public class AdaptationControl {
      */
     public boolean isObjectiveFulfilled() {
         logger.debug("Checking if objective <<" + cause.getTriggers().getObjective().getName() + ">> is fulfilled...");
-        boolean flag = ObjectivesHelper.isObjectiveFulfilled(cause, perfDataRepoHandler.getCurrentSystemState());
+        Result currentSystemState = perfDataRepoHandler.getCurrentSystemState();
+        // TODO: Blue Yonder specific, introduce abstraction layer
+        WeightedTactic latestTactic = TacticsHistory.getInstance().getLatestAppliedTactic();
+        if (latestTactic != null && !(perfDataRepoHandler instanceof PerformanceDataRepositoryHandler)) {
+              String expName = BlueYonderExperimentTracker.getInstance()
+                      .getExperimentNameForDistributedDataCenter(AdaptationProcessModelLoader.getDistributedDataCenter());
+              logger.debug("Searching for result of " + expName);
+              Observation o = ObservationRepositoryHelper.getResultEndingWith(expName, (ObservationRepository) perfDataRepoHandler.getRepository());
+              currentSystemState = PerfDataRepoConverter.convertResult(o);
+        }
+        boolean flag = ObjectivesHelper.isObjectiveFulfilled(cause, currentSystemState);
         if (flag)
             logger.info("Problem that caused event " + cause.getName() + " has been solved, Objective is fulfilled.");
         else
@@ -170,12 +188,11 @@ public class AdaptationControl {
      * repository.
      */
     public void analyzeModel() {
-        modelAnalyzer.analyze();
         WeightedTactic tactic = TacticsHistory.getInstance().getLatestAppliedTactic();
 
         if (TacticsHistory.getInstance().wasLatestTacticSuccessful()) {
-            // TODO Call model analysis
-            Impact latestImpact = perfDataRepoHandler.getLatestImpact(tactic);
+            modelAnalyzer.analyze();
+            Impact latestImpact = modelAnalyzer.getLatestImpact();
             if (latestImpact != null)
                 tactic.setLastImpact(latestImpact);
         } else {