Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClassificationEnsembleSolutionView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClassificationEnsembleSolutionView.cs	(revision 10085)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClassificationEnsembleSolutionView.cs	(revision 10538)
@@ -37,4 +37,11 @@
     }
 
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      //loading of problemdata is currently not support for ensemble solutions
+      loadProblemDataButton.Enabled = false;
+      loadProblemDataButton.Visible = false;
+    }
+
     protected override void OnContentChanged() {
       base.OnContentChanged();
@@ -47,4 +54,5 @@
         var droppedData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
         if (droppedData is IValueParameter) droppedData = ((IValueParameter)droppedData).Value;
+        else if (droppedData is IClassificationProblem) droppedData = ((IClassificationProblem)droppedData).ProblemData;
 
         ClassificationEnsembleProblemData ensembleProblemData = droppedData as ClassificationEnsembleProblemData;
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClassificationSolutionView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClassificationSolutionView.cs	(revision 10085)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClassificationSolutionView.cs	(revision 10538)
@@ -20,7 +20,10 @@
 #endregion
 
+using System;
 using System.Windows.Forms;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.MainForm;
+using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Problems.DataAnalysis.Views {
@@ -43,5 +46,6 @@
 
       var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
-      if (dropData is ClassificationProblemData) validDragOperation = true;
+      if (dropData is IClassificationProblemData) validDragOperation = true;
+      else if (dropData is IClassificationProblem) validDragOperation = true;
       else if (dropData is IValueParameter) {
         var param = (IValueParameter)dropData;
@@ -50,4 +54,22 @@
     }
     #endregion
+
+    protected override bool CheckCompatibilityOfProblemData(IDataAnalysisProblemData problemData) {
+      IClassificationProblemData classificationProblemData = problemData as IClassificationProblemData;
+      if (classificationProblemData == null) {
+        ErrorHandling.ShowErrorDialog(this, new ArgumentException("The problem data is no classification problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided."));
+        return false;
+      }
+
+      if (!classificationProblemData.TargetVariable.Equals(Content.ProblemData.TargetVariable)) {
+        string message = "The target variables are not matching. Old target variable: '"
+                         + Content.ProblemData.TargetVariable
+                         + "'. New targetvariable: '" + classificationProblemData.TargetVariable + "'";
+        ErrorHandling.ShowErrorDialog(this, new InvalidOperationException(message));
+        return false;
+      }
+
+      return base.CheckCompatibilityOfProblemData(problemData);
+    }
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClusteringSolutionView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClusteringSolutionView.cs	(revision 10085)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/ClusteringSolutionView.cs	(revision 10538)
@@ -43,5 +43,6 @@
 
       var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
-      if (dropData is ClusteringProblemData) validDragOperation = true;
+      if (dropData is IClusteringProblemData) validDragOperation = true;
+      else if (dropData is IClusteringProblem) validDragOperation = true;
       else if (dropData is IValueParameter) {
         var param = (IValueParameter)dropData;
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.Designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.Designer.cs	(revision 10085)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.Designer.cs	(revision 10538)
@@ -19,4 +19,6 @@
  */
 #endregion
+
+
 namespace HeuristicLab.Problems.DataAnalysis.Views {
   partial class DataAnalysisSolutionView {
@@ -46,4 +48,6 @@
       this.exportButton = new System.Windows.Forms.Button();
       this.exportFileDialog = new System.Windows.Forms.SaveFileDialog();
+      this.loadProblemDataButton = new System.Windows.Forms.Button();
+      this.loadProblemDataFileDialog = new System.Windows.Forms.OpenFileDialog();
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
       this.splitContainer.Panel1.SuspendLayout();
@@ -59,4 +63,5 @@
       // splitContainer.Panel2
       // 
+      this.splitContainer.Panel2.Controls.Add(this.loadProblemDataButton);
       this.splitContainer.Panel2.Controls.Add(this.exportButton);
       // 
@@ -76,11 +81,28 @@
       // 
       this.exportButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.exportButton.Location = new System.Drawing.Point(215, 4);
+      this.exportButton.Location = new System.Drawing.Point(194, 3);
       this.exportButton.Name = "exportButton";
-      this.exportButton.Size = new System.Drawing.Size(54, 23);
+      this.exportButton.Size = new System.Drawing.Size(75, 24);
       this.exportButton.TabIndex = 6;
       this.exportButton.Text = "Export";
       this.exportButton.UseVisualStyleBackColor = true;
       this.exportButton.Click += new System.EventHandler(this.exportButton_Click);
+      //
+      // loadProblemDataButton
+      //
+      this.loadProblemDataButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)));
+      this.loadProblemDataButton.Location = new System.Drawing.Point(3, 3);
+      this.loadProblemDataButton.Name = "loadProblemDataButton";
+      this.loadProblemDataButton.Size = new System.Drawing.Size(75, 24);
+      this.loadProblemDataButton.TabIndex = 7;
+      this.loadProblemDataButton.Text = "Load Data";
+      this.loadProblemDataButton.UseVisualStyleBackColor = true;
+      this.loadProblemDataButton.Click += new System.EventHandler(this.loadProblemDataButton_Click);
+      this.toolTip.SetToolTip(this.loadProblemDataButton, "Load new data");
+      // 
+      // openFileDialog
+      // 
+      this.loadProblemDataFileDialog.Filter = "HL files|*.hl";
+      this.loadProblemDataFileDialog.Title = "Load new ProblemData or Problem...";
       // 
       // DataAnalysisSolutionView
@@ -102,4 +124,6 @@
     private System.Windows.Forms.SaveFileDialog exportFileDialog;
     protected System.Windows.Forms.Button exportButton;
+    protected System.Windows.Forms.Button loadProblemDataButton;
+    protected System.Windows.Forms.OpenFileDialog loadProblemDataFileDialog;
 
   }
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.cs	(revision 10085)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.cs	(revision 10538)
@@ -25,4 +25,5 @@
 using System.Drawing;
 using System.Linq;
+using System.Text;
 using System.Windows.Forms;
 using HeuristicLab.Core;
@@ -31,4 +32,5 @@
 using HeuristicLab.Optimization;
 using HeuristicLab.Optimization.Views;
+using HeuristicLab.Persistence.Default.Xml;
 using HeuristicLab.PluginInfrastructure;
 
@@ -54,6 +56,8 @@
       if (Content == null) {
         exportButton.Enabled = false;
+        loadProblemDataButton.Enabled = false;
       } else {
         exportButton.Enabled = !Locked;
+        loadProblemDataButton.Enabled = !Locked;
       }
     }
@@ -127,4 +131,30 @@
     }
 
+    protected virtual void loadProblemDataButton_Click(object sender, EventArgs e) {
+      if (loadProblemDataFileDialog.ShowDialog(this) != DialogResult.OK) return;
+      object hlFile = XmlParser.Deserialize(loadProblemDataFileDialog.FileName);
+
+      IDataAnalysisProblemData problemData = null;
+      if (hlFile is IDataAnalysisProblemData) {
+        problemData = (IDataAnalysisProblemData)hlFile;
+      } else if (hlFile is IDataAnalysisProblem) {
+        problemData = ((IDataAnalysisProblem)hlFile).ProblemData;
+      } else if (hlFile is IDataAnalysisSolution) {
+        problemData = ((IDataAnalysisSolution)hlFile).ProblemData;
+      }
+
+      if (problemData == null) {
+        ErrorHandling.ShowErrorDialog(this, new NullReferenceException("The problem data is null." + Environment.NewLine
+                                      + "The .hl-file contains no DataAnalysisProblemData or DataAnylsisProblem."));
+        return;
+      }
+
+      if (CheckCompatibilityOfProblemData(problemData)) {
+        var solution = (IDataAnalysisSolution)Content.Clone();
+        solution.ProblemData = problemData;
+        solution.Name += " with loaded problem data (" + loadProblemDataFileDialog + ")";
+        MainFormManager.MainForm.ShowContent(solution);
+      }
+    }
 
     private void exportButton_Click(object sender, EventArgs e) {
@@ -197,23 +227,44 @@
       var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
       if (dropData is DataAnalysisProblemData) validDragOperation = true;
+      else if (dropData is IDataAnalysisProblem) validDragOperation = true;
       else if (dropData is IValueParameter) {
         var param = (IValueParameter)dropData;
-        if (param.Value is DataAnalysisProblemData) validDragOperation = true;
+        if (param.Value is IDataAnalysisProblemData) validDragOperation = true;
       }
     }
 
     protected override void itemsListView_DragDrop(object sender, DragEventArgs e) {
-      if (e.Effect != DragDropEffects.None) {
-        var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
-        if (dropData is DataAnalysisProblemData) {
-          DataAnalysisProblemData problemData = (DataAnalysisProblemData)dropData;
-          Content.ProblemData = (DataAnalysisProblemData)problemData.Clone();
-        } else if (dropData is IValueParameter) {
-          var param = (IValueParameter)dropData;
-          DataAnalysisProblemData problemData = param.Value as DataAnalysisProblemData;
-          if (problemData != null)
-            Content.ProblemData = (DataAnalysisProblemData)problemData.Clone();
-        }
-      }
+      if (e.Effect == DragDropEffects.None) return;
+
+      IDataAnalysisProblemData problemData = null;
+      var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
+      if (dropData is IDataAnalysisProblemData)
+        problemData = (IDataAnalysisProblemData)dropData;
+      else if (dropData is IDataAnalysisProblem)
+        problemData = ((IDataAnalysisProblem)dropData).ProblemData;
+      else if (dropData is IValueParameter) {
+        var param = (IValueParameter)dropData;
+        problemData = param.Value as DataAnalysisProblemData;
+      }
+      if (problemData == null) return;
+      CheckCompatibilityOfProblemData(problemData);
+      Content.ProblemData = (IDataAnalysisProblemData)problemData.Clone();
+    }
+    #endregion
+
+    #region load problem data
+    protected virtual bool CheckCompatibilityOfProblemData(IDataAnalysisProblemData problemData) {
+      StringBuilder message = new StringBuilder();
+      List<string> variables = problemData.InputVariables.Select(x => x.Value).ToList();
+      foreach (var item in Content.ProblemData.InputVariables.CheckedItems) {
+        if (!variables.Contains(item.Value.Value))
+          message.AppendLine("Input variable '" + item.Value.Value + "' is not in the new problem data.");
+      }
+
+      if (message.Length != 0) {
+        ErrorHandling.ShowErrorDialog(this, new InvalidOperationException(message.ToString()));
+        return false;
+      }
+      return true;
     }
     #endregion
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/RegressionEnsembleSolutionView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/RegressionEnsembleSolutionView.cs	(revision 10085)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/RegressionEnsembleSolutionView.cs	(revision 10538)
@@ -32,4 +32,11 @@
     }
 
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+      //loading of problemdata is currently not support for ensemble solutions
+      loadProblemDataButton.Enabled = false;
+      loadProblemDataButton.Visible = false;
+    }
+
     public new RegressionEnsembleSolution Content {
       get { return (RegressionEnsembleSolution)base.Content; }
@@ -47,7 +54,8 @@
         var droppedData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
         if (droppedData is IValueParameter) droppedData = ((IValueParameter)droppedData).Value;
+        if (droppedData is IRegressionProblem) droppedData = ((IRegressionProblem)droppedData).ProblemData;
 
         RegressionEnsembleProblemData ensembleProblemData = droppedData as RegressionEnsembleProblemData;
-        RegressionProblemData problemData = droppedData as RegressionProblemData;
+        IRegressionProblemData problemData = droppedData as IRegressionProblemData;
         if (ensembleProblemData != null) {
           Content.ProblemData = (RegressionEnsembleProblemData)ensembleProblemData.Clone();
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/RegressionSolutionView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/RegressionSolutionView.cs	(revision 10085)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/RegressionSolutionView.cs	(revision 10538)
@@ -20,7 +20,10 @@
 #endregion
 
+using System;
 using System.Windows.Forms;
+using HeuristicLab.Common;
 using HeuristicLab.Core;
 using HeuristicLab.MainForm;
+using HeuristicLab.PluginInfrastructure;
 
 namespace HeuristicLab.Problems.DataAnalysis.Views {
@@ -43,5 +46,6 @@
 
       var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
-      if (dropData is RegressionProblemData) validDragOperation = true;
+      if (dropData is IRegressionProblemData) validDragOperation = true;
+      else if (dropData is IRegressionProblem) validDragOperation = true;
       else if (dropData is IValueParameter) {
         var param = (IValueParameter)dropData;
@@ -50,4 +54,22 @@
     }
     #endregion
+
+    protected override bool CheckCompatibilityOfProblemData(IDataAnalysisProblemData problemData) {
+      IRegressionProblemData regressionProblemData = problemData as IRegressionProblemData;
+      if (regressionProblemData == null) {
+        ErrorHandling.ShowErrorDialog(this, new ArgumentException("The problem data is no regression problem data. Instead a " + problemData.GetType().GetPrettyName() + " was provided."));
+        return false;
+      }
+
+      if (!regressionProblemData.TargetVariable.Equals(Content.ProblemData.TargetVariable)) {
+        string message = "The target variables are not matching. Old target variable: '"
+                         + Content.ProblemData.TargetVariable
+                         + "'. New targetvariable: '" + regressionProblemData.TargetVariable + "'";
+        ErrorHandling.ShowErrorDialog(this, new InvalidOperationException(message));
+        return false;
+      }
+
+      return base.CheckCompatibilityOfProblemData(problemData);
+    }
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/TimeSeriesPrognosisSolutionView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/TimeSeriesPrognosisSolutionView.cs	(revision 10085)
+++ branches/DataPreprocessing/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/TimeSeriesPrognosisSolutionView.cs	(revision 10538)
@@ -44,4 +44,5 @@
       var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
       if (dropData is ITimeSeriesPrognosisProblemData) validDragOperation = true;
+      else if (dropData is ITimeSeriesPrognosisProblem) validDragOperation = true;
       else if (dropData is IValueParameter) {
         var param = (IValueParameter)dropData;
