diff --git a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormController.js b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormController.js
index 04d58540d748587f5d12ba8aefc0a9644b1ece1e..a2833be7517ae94b83ad8ddee5cfdbe115db96c6 100644
--- a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormController.js
+++ b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormController.js
@@ -16,14 +16,14 @@
 
 function DataSetFormController() {
 	this._container = null;
-	this._sample = null;
+	this._sampleOrExperiment = null;
 	this._dataSetFormModel = null;
 	this._dataSetFormView = null;
 	
-	this.init = function($container, sample) {
+	this.init = function($container, sampleOrExperiment) {
 		this._container = $container;
-		this._sample = sample;
-		this._dataSetFormModel = new DataSetFormModel(sample);
+		this._sampleOrExperiment = sampleOrExperiment;
+		this._dataSetFormModel = new DataSetFormModel(sampleOrExperiment);
 		this._dataSetFormView = new DataSetFormView(this, this._dataSetFormModel);
 		
 		var _this = this;
@@ -38,17 +38,6 @@ function DataSetFormController() {
 		});
 	}
 	
-	this._addCommentsWidget = function($container) {
-		var commentsController = new CommentsController(this._dataSetFormModel.dataSet, this._dataSetFormModel.mode, this._dataSetFormModel);
-		if(this._dataSetFormModel.mode !== FormMode.VIEW || 
-			this._dataSetFormModel.mode === FormMode.VIEW && !commentsController.isEmpty()) {
-			commentsController.init($container);
-			return true;
-		} else {
-			return false;
-		}
-	}
-	
 	this._getDataSetType = function(typeCode) {
 		for(var i = 0; i < this._dataSetFormModel.dataSetTypes.length; i++) {
 			if(this._dataSetFormModel.dataSetTypes[i].code === typeCode) {
@@ -81,15 +70,14 @@ function DataSetFormController() {
 		}
 		
 		var method = "insertDataSet";
-		var sampleIdentifier = this._dataSetFormModel.sample.identifier;
 		var dataSetTypeCode = $('#DATASET_TYPE').val();
 		
+		
 		var parameters = {
 				//API Method
 				"sessionToken" : openBIS.getSession(),
 				"method" : method,
 				//Identification Info
-				"sampleIdentifier" : sampleIdentifier, //Use for creation
 				"dataSetType" : dataSetTypeCode,
 				"filenames" : _this._dataSetFormModel.files,
 				"folderName" : folderName,
@@ -100,6 +88,13 @@ function DataSetFormController() {
 				"sessionID" : openBIS.getSession(),
 				"openBISURL" : openBIS._internal.openbisUrl
 		};
+		
+		var sampleOrExperimentIdentifier = this._dataSetFormModel.sampleOrExperiment.identifier;
+		if(sampleOrExperimentIdentifier.split("/").length === 3) {
+			parameters["sampleIdentifier"] = sampleOrExperimentIdentifier;
+		} else if(sampleOrExperimentIdentifier.split("/").length === 4) {
+			parameters["experimentIdentifier"] = sampleOrExperimentIdentifier;
+		}
 			
 		if(this._dataSetFormModel.dataStores.length > 0) {
 			openBIS.createReportFromAggregationService(this._dataSetFormModel.dataStores[0].code, "dataset-uploader-api", parameters, function(response) {
@@ -122,7 +117,7 @@ function DataSetFormController() {
 				} else if (response.result.columns[0].title === "STATUS" && response.result.rows[0][0].value === "OK") { //Success Case
 					Util.showSuccess("DataSet Created.", function() {
 						Util.unblockUI();
-						_this.init(_this._container, _this._sample);
+						_this.init(_this._container, _this._sampleOrExperiment);
 					});
 					
 				} else { //This should never happen
diff --git a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormModel.js b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormModel.js
index fa5546122edae4b68705801ceef0d5302788058f..3a63233a3df0784ab7bd51026c75f5071fee85a1 100644
--- a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormModel.js
+++ b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormModel.js
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-function DataSetFormModel(sample) {
+function DataSetFormModel(sampleOrExperiment) {
 	this.isFormDirty = false;
 	
-	this.sample = sample;
+	this.sampleOrExperiment = sampleOrExperiment;
 	this.dataSet = { properties : {} };
 	
 	this.dataStores = [];
diff --git a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormView.js b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormView.js
index 6dc8336bb8554f0638cff25f8a5b77a1d81eed97..d87061a8b0adbd18bc8394a838ee36bb1d612a31 100644
--- a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormView.js
+++ b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/html/js/DataSetFormView.js
@@ -67,10 +67,7 @@ function DataSetFormView(dataSetFormController, dataSetFormModel) {
 		);
 		$dataSetTypeFieldSet.append($dataSetTypeDropDown);
 		
-		var owner = this._dataSetFormModel.sample.identifier;
-		if(this._dataSetFormModel.sample.experimentIdentifierOrNull) {
-			owner = this._dataSetFormModel.sample.experimentIdentifierOrNull + "/" + this._dataSetFormModel.sample.code;
-		}
+		var owner = this._dataSetFormModel.sampleOrExperiment.identifier;
 		$dataSetTypeFieldSet.append(FormUtil.getFieldForTextWithLabel(owner, "Sample"));
 		
 		//
diff --git a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/plugin.properties b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/plugin.properties
index 7879502e855bf271bf249e8738c2a5b84f784aee..4d322c83fcddb970ea875c960b73f6514c1cf0b0 100644
--- a/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/plugin.properties
+++ b/openbis/source/core-plugins/dataset-uploader/1/as/webapps/dataset-uploader/plugin.properties
@@ -1,4 +1,5 @@
 webapp-folder = html
-openbisui-contexts = sample-details-view
+openbisui-contexts = sample-details-view, experiment-details-view
 sample-entity-types = .*
+experiment-entity-types = .*
 label = DataSet Uploader
\ No newline at end of file
diff --git a/openbis/source/core-plugins/dataset-uploader/1/dss/reporting-plugins/dataset-uploader-api/dataset-uploader-api.py b/openbis/source/core-plugins/dataset-uploader/1/dss/reporting-plugins/dataset-uploader-api/dataset-uploader-api.py
index 33efe8c629c887e53d3f555d6dd994ff0fe2f442..03c1d474fcdc46b710c52dc87ddac88f94ff902b 100644
--- a/openbis/source/core-plugins/dataset-uploader/1/dss/reporting-plugins/dataset-uploader-api/dataset-uploader-api.py
+++ b/openbis/source/core-plugins/dataset-uploader/1/dss/reporting-plugins/dataset-uploader-api/dataset-uploader-api.py
@@ -92,6 +92,7 @@ def getThreadProperties(transaction):
 def insertDataSet(tr, parameters, tableBuilder):
 	#Mandatory parameters
 	sampleIdentifier = parameters.get("sampleIdentifier"); #String
+	experimentIdentifier = parameters.get("experimentIdentifier"); #String
 	dataSetType = parameters.get("dataSetType"); #String
 	folderName = parameters.get("folderName"); #String
 	fileNames = parameters.get("filenames"); #List<String>
@@ -99,10 +100,14 @@ def insertDataSet(tr, parameters, tableBuilder):
 	metadata = parameters.get("metadata"); #java.util.LinkedHashMap<String, String> where the key is the name
 		
 	#Create Dataset
-	dataSetSample = getSampleByIdentifierForUpdate(tr, sampleIdentifier);
 	dataSet = tr.createNewDataSet(dataSetType);
-	dataSet.setSample(dataSetSample);
-	
+	if sampleIdentifier is not None:
+		dataSetSample = getSampleByIdentifierForUpdate(tr, sampleIdentifier);
+		dataSet.setSample(dataSetSample);
+	elif experimentIdentifier is not None:
+		dataSetExperiment = tr.getExperimentForUpdate(experimentIdentifier);
+		dataSet.setExperiment(dataSetExperiment);
+		
 	#Assign Data Set properties
 	for key in metadata.keySet():
 		propertyValue = unicode(metadata[key]);