diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html
index fd2c2934c9186ede407bbf411b3bd78a273caeb1..24cfb9b41028267143d473574c2bd86b3414957c 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/index.html
@@ -88,7 +88,6 @@
 	<script type="text/javascript" src="./js/views/SampleForm.js"></script>
 	<script type="text/javascript" src="./js/views/SampleHierarchy.js"></script>
 	<script type="text/javascript" src="./js/views/SampleTable.js"></script>
-	<script type="text/javascript" src="./js/views/ExperimentForm.js"></script>
 	
 	<script type="text/javascript" src="./js/views/StorageManager/StorageManagerController.js"></script>
 	<script type="text/javascript" src="./js/views/StorageManager/StorageManagerModel.js"></script>
@@ -113,6 +112,10 @@
 	<script type="text/javascript" src="./js/views/ProjectForm/ProjectFormModel.js"></script>
 	<script type="text/javascript" src="./js/views/ProjectForm/ProjectFormView.js"></script>
 	
+	<script type="text/javascript" src="./js/views/ExperimentForm/ExperimentFormController.js"></script>
+	<script type="text/javascript" src="./js/views/ExperimentForm/ExperimentFormModel.js"></script>
+	<script type="text/javascript" src="./js/views/ExperimentForm/ExperimentFormView.js"></script>
+	
 	<script type="text/javascript" src="./js/widgets/DataSetViewer.js"></script>
 	<script type="text/javascript" src="./js/widgets/SampleLinksWidget.js"></script>
 	<script type="text/javascript" src="./js/widgets/Storage.js"></script>
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js
index 0044ac9fbe7e7bf0c53d881aaba2336d673bad56..f46bd79416ffc1a1908161b1d3902bb5a70a683b 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/controllers/MainController.js
@@ -444,9 +444,9 @@ function MainController(profile) {
 	
 	this._showExperimentPage = function(experiment, mode) {
 		//Show Form
-		var experimentForm = new ExperimentForm("mainContainer", this, experiment, mode);
-		experimentForm.init();
-		this.currentView = experimentForm;
+		var experimentFormController = new ExperimentFormController(this, mode, experiment);
+		experimentFormController.init($("#mainContainer"));
+		this.currentView = experimentFormController;
 	}
 	
 	this._showViewSamplePage = function(sample, isELNSubExperiment) {
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm.js
deleted file mode 100644
index 388f9c34638c214dbe692f5c53bdb077169b092e..0000000000000000000000000000000000000000
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm.js
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Copyright 2014 ETH Zuerich, Scientific IT Services
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-function ExperimentForm(containerId, mainController, experiment, mode) {
-	this._containerId = containerId;
-	this._mainController = mainController;
-	this._experiment = experiment;
-	this._mode = mode;
-	this._isFormDirty = false;
-	
-	this.isDirty = function() {
-		return this._isFormDirty;
-	}
-	
-	this.init = function() {
-		this.repaint();
-		Util.unblockUI();
-	}
-	
-	this.repaint = function() {
-		var _this = this;
-		$("#" + this._containerId).empty();
-		
-		var $form = $("<div>", { "class" : "row"});
-		var $formColumn = $("<form>", { 
-			"class" : FormUtil.formColumClass + " form-horizontal", 
-			'role' : "form", 
-			"action" : "javascript:void(0);", 
-			"onsubmit" : "mainController.currentView._updateExperiment();"
-		});
-			
-		$form.append($formColumn);
-		
-		//
-		// Title
-		//
-		var $formTitle = null;
-		if(this._mode === FormMode.VIEW || this._mode === FormMode.EDIT) {
-			$formTitle = $("<h2>").append("Experiment " + this._experiment.identifier);
-		} else {
-			$formTitle = $("<h2>").append("Create " + this._experiment.experimentTypeCode);
-		}
-		$formColumn.append($formTitle);
-		
-		//
-		// Create Sub Experiment
-		//
-		if(this._mode === FormMode.VIEW) {
-			var $createSubExpBtn = $("<a>", { "class" : "btn btn-default"}).append("Create Sub Experiment");
-			$createSubExpBtn.click(function() {
-				var $dropdown = FormUtil.getSampleTypeDropdown("sampleTypeDropdown", true);
-				Util.blockUI("Select the type for the sub Experiment: <br><br>" + $dropdown[0].outerHTML + "<br> or <a class='btn btn-default' id='sampleTypeDropdownCancel'>Cancel</a>");
-				
-				$("#sampleTypeDropdown").on("change", function(event) {
-					var sampleTypeCode = $("#sampleTypeDropdown")[0].value;
-					var argsMap = {
-							"sampleTypeCode" : sampleTypeCode,
-							"experimentIdentifier" : _this._experiment.identifier
-					}
-					var argsMapStr = JSON.stringify(argsMap);
-					
-					_this._mainController.changeView("showCreateSubExperimentPage", argsMapStr);
-				});
-				
-				$("#sampleTypeDropdownCancel").on("click", function(event) { 
-					Util.unblockUI();
-				});
-			});
-			$formTitle.append(" ");
-			$formTitle.append($createSubExpBtn);
-			
-			var $editBtn = $("<a>", { "class" : "btn btn-default"}).append("<span class='glyphicon glyphicon-edit'></span> Enable Editing");
-			$editBtn.click(function() {
-				_this._mainController.changeView("showEditExperimentPageFromIdentifier", _this._experiment.identifier);
-			});
-			$formTitle.append(" ");
-			$formTitle.append($editBtn);
-		}
-		
-		//
-		// Metadata Identification
-		//
-		var $identificationInfo = $('<div>').append($('<legend>').text("Identification Info"));
-		$formColumn.append($identificationInfo);
-		
-		var identifierParts = this._experiment.identifier.split("/");
-		
-		$formColumn.append(FormUtil.getFieldForLabelWithText("Type", this._experiment.experimentTypeCode));
-		$formColumn.append(FormUtil.getFieldForLabelWithText("Project", identifierParts[0] + "/" + identifierParts[1] + "/" + identifierParts[2]));
-		var $projectField = FormUtil._getInputField("text", "PROJECT", "project", null, true);
-		$projectField.val(identifierParts[0] + "/" + identifierParts[1] + "/" + identifierParts[2]);
-		$projectField.hide();
-		$formColumn.append($projectField);
-		
-		if(this._mode === FormMode.VIEW || this._mode === FormMode.EDIT) {
-			$formColumn.append(FormUtil.getFieldForLabelWithText("Code", identifierParts[3]));
-			
-			var $codeField = FormUtil._getInputField("text", "CODE", "code", null, true);
-			$codeField.val(identifierParts[3]);
-			$codeField.hide();
-			$formColumn.append($codeField);
-			
-			$formColumn.append(FormUtil.getFieldForLabelWithText("Registrator", this._experiment.registrationDetails.userId));
-			$formColumn.append(FormUtil.getFieldForLabelWithText("Registration Date", (new Date(this._experiment.registrationDetails.registrationDate)).toLocaleString()));
-		} else if(this._mode === FormMode.CREATE){
-			var $codeField = FormUtil._getInputField("text", "CODE", "code", null, true);
-			$formColumn.append(FormUtil.getFieldForComponentWithLabel($codeField, "Code"));
-		}
-		
-		//
-		// Metadata Fields
-		//
-		var experimentType = this._mainController.profile.getExperimentTypeForExperimentTypeCode(this._experiment.experimentTypeCode);
-		
-		for(var i = 0; i < experimentType.propertyTypeGroups.length; i++) {
-			var propertyTypeGroup = experimentType.propertyTypeGroups[i];
-			
-			var $fieldset = $('<div>');
-			var $legend = $('<legend>'); 
-			$fieldset.append($legend);
-			
-			if(propertyTypeGroup.name) {
-				$legend.text(propertyTypeGroup.name);
-			} else if(experimentType.propertyTypeGroups.length === 1) { //Only when there is only one group without name to render it with a default title.
-				$legend.text("Metadata Fields");
-			} else {
-				$legend.remove();
-			}
-			
-			for(var j = 0; j < propertyTypeGroup.propertyTypes.length; j++) {
-				var propertyType = propertyTypeGroup.propertyTypes[j];
-				
-				var $controlGroup =  null;
-				
-				if(this._mode === FormMode.VIEW) { //Show values without input boxes if the form is in view mode
-					$controlGroup = FormUtil.getFieldForLabelWithText(propertyType.label, this._experiment.properties[propertyType.code]);
-				} else {
-					var $component = FormUtil.getFieldForPropertyType(propertyType);
-					
-					//Update values if is into edit mode
-					if(this._mode === FormMode.EDIT) {
-						if(propertyType.dataType === "BOOLEAN") {
-							$($component.children()[0]).prop('checked', this._experiment.properties[propertyType.code] === "true");
-						} else if(propertyType.dataType === "TIMESTAMP") {
-							var value = this._experiment.properties[propertyType.code];
-							$($($component.children()[0]).children()[0]).val(value);
-						} else {
-							var value = this._experiment.properties[propertyType.code];
-							if(!value && propertyType.code.charAt(0) === '$') {
-								value = this._experiment.properties[propertyType.code.substr(1)];
-							}
-							$component.val(value);
-						}
-					}
-					
-					$component.change(function(event) {
-						_this._isFormDirty = true;
-					});
-					$controlGroup = FormUtil.getFieldForComponentWithLabel($component, propertyType.label);
-				}
-				
-				$fieldset.append($controlGroup);
-			}
-			
-			$formColumn.append($fieldset);
-		}
-		
-		if(this._mode === FormMode.EDIT || this._mode === FormMode.CREATE) {
-			var label = "";
-			
-			if(this._mode === FormMode.EDIT) {
-				label = "Update Experiment " + this._experiment.code;
-			} else if(this._mode === FormMode.CREATE) {
-				label = "Create Experiment";
-			}
-			
-			var $submitButton = $('<fieldset>')
-									.append($('<div>', { class : "form-group"}))
-									.append($('<div>', {class: FormUtil.controlColumnClass})
-									.append($('<input>', { class : 'btn btn-primary', 'type' : 'submit', 'value' : label})));
-			
-			$formColumn.append($submitButton);
-		}
-		
-		$("#" + this._containerId).append($form);
-	}
-	
-	this._updateExperiment = function() {
-		Util.blockUI();
-		
-		var experimentType = this._mainController.profile.getExperimentTypeForExperimentTypeCode(this._experiment.experimentTypeCode);
-		
-		//Identification Info
-		var projectIdentifier = $("#PROJECT").val().split("/");
-		var experimentSpace = projectIdentifier[1];
-		var experimentProject = projectIdentifier[2];
-		var experimentCode = $("#CODE").val();
-		var experimentIdentifier = "/" + experimentSpace + "/" + experimentProject + "/" + experimentCode;
-		//Properties
-		var experimentProperties = {};
-		
-		for(var i = 0; i < experimentType.propertyTypeGroups.length; i++) {
-			var propertyTypeGroup = experimentType.propertyTypeGroups[i];
-			for(var j = 0; j < propertyTypeGroup.propertyTypes.length; j++) {
-				var propertyType = propertyTypeGroup.propertyTypes[j];
-				var value = null;
-				
-				if (propertyType.dataType === "BOOLEAN") {
-					value = $("#"+propertyType.code.replace('$','\\$').replace(/\./g,'\\.')+":checked").val() === "on";
-				} else {
-					value = Util.getEmptyIfNull($("#"+propertyType.code.replace('$','\\$').replace(/\./g,'\\.')).val());
-				}
-				
-				experimentProperties[propertyType.code] = value;
-			}
-		}
-		
-		var method = "";
-		if(this._mode === FormMode.CREATE) {
-			method = "insertExperiment";
-		} else if(this._mode === FormMode.EDIT) {
-			method = "updateExperiment";
-		}
-		
-		var parameters = {
-				//API Method
-				"method" : method,
-				//Identification Info
-				"experimentType" : this._experiment.experimentTypeCode,
-				"experimentIdentifier" : experimentIdentifier,
-				"experimentSpace" : experimentSpace,
-				"experimentProject" : experimentProject,
-				"experimentCode" : experimentCode,
-				//Properties
-				"experimentProperties" : experimentProperties
-		};
-		
-		var _this = this;
-		
-		if(this._mainController.profile.allDataStores.length > 0) {
-			this._mainController.serverFacade.createReportFromAggregationService(this._mainController.profile.allDataStores[0].code, parameters, function(response) {
-				if(response.error) { //Error Case 1
-					Util.showError(response.error.message, function() {Util.unblockUI();});
-				} else if (response.result.columns[1].title === "Error") { //Error Case 2
-					var stacktrace = response.result.rows[0][1].value;
-					Util.showStacktraceAsError(stacktrace);
-				} else if (response.result.columns[0].title === "STATUS" && response.result.rows[0][0].value === "OK") { //Success Case
-					var experimentType = profile.getExperimentTypeForExperimentTypeCode(_this._experiment.experimentTypeCode);
-					var experimentTypeDisplayName = experimentType.description;
-					if(!experimentTypeDisplayName) {
-						experimentTypeDisplayName = _this._experiment.experimentTypeCode;
-					}
-					
-					var message = "";
-					if(_this._mode === FormMode.CREATE) {
-						message = "Created.";
-					} else if(_this._mode === FormMode.EDIT) {
-						message = "Updated.";
-					}
-					
-					var callbackOk = function() {
-						_this._mainController.sideMenu.refreshExperiment($("#PROJECT").val(), experimentCode);
-						_this._isFormDirty = false;
-						_this._mainController.changeView("showExperimentPageFromIdentifier", experimentIdentifier);
-						Util.unblockUI();
-					}
-					
-					Util.showSuccess(experimentTypeDisplayName + " " + message, callbackOk);
-				} else { //This should never happen
-					Util.showError("Unknown Error.", function() {Util.unblockUI();});
-				}
-				
-			});
-		} else {
-			Util.showError("No DSS available.", function() {Util.unblockUI();});
-		}
-	}
-}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormController.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormController.js
new file mode 100644
index 0000000000000000000000000000000000000000..646d8d1596f6c70ad2a65be9d88a17d278a3b94d
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormController.js
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2014 ETH Zuerich, Scientific IT Services
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function ExperimentFormController(mainController, mode, experiment) {
+	this._mainController = mainController;
+	this._experimentFormModel = new ExperimentFormModel(mode, experiment);
+	this._experimentFormView = new ExperimentFormView(this, this._experimentFormModel);
+	
+	this.init = function($container) {
+		this._experimentFormView.repaint($container);
+	}
+	
+	this.isDirty = function() {
+		return this._experimentFormModel.isFormDirty;
+	}
+	
+	this.updateExperiment = function() {
+		Util.blockUI();
+		
+		var experimentType = this._mainController.profile.getExperimentTypeForExperimentTypeCode(this._experimentFormModel.experiment.experimentTypeCode);
+		
+		//Identification Info (This way of collecting the identifier also works for the creation mode)
+		var projectIdentifier = this._experimentFormModel.experiment.identifier.split("/");
+		var experimentSpace = projectIdentifier[1];
+		var experimentProject = projectIdentifier[2];
+		var experimentCode = this._experimentFormModel.experiment.code;
+		var experimentIdentifier = "/" + experimentSpace + "/" + experimentProject + "/" + experimentCode;
+		
+		var method = "";
+		if(this._experimentFormModel.mode === FormMode.CREATE) {
+			method = "insertExperiment";
+		} else if(this._experimentFormModel.mode === FormMode.EDIT) {
+			method = "updateExperiment";
+		}
+		
+		var parameters = {
+				//API Method
+				"method" : method,
+				//Identification Info
+				"experimentType" : this._experimentFormModel.experiment.experimentTypeCode,
+				"experimentIdentifier" : experimentIdentifier,
+				//Properties
+				"experimentProperties" : this._experimentFormModel.experiment.properties
+		};
+		
+		var _this = this;
+		
+		if(this._mainController.profile.allDataStores.length > 0) {
+			this._mainController.serverFacade.createReportFromAggregationService(this._mainController.profile.allDataStores[0].code, parameters, function(response) {
+				if(response.error) { //Error Case 1
+					Util.showError(response.error.message, function() {Util.unblockUI();});
+				} else if (response.result.columns[1].title === "Error") { //Error Case 2
+					var stacktrace = response.result.rows[0][1].value;
+					Util.showStacktraceAsError(stacktrace);
+				} else if (response.result.columns[0].title === "STATUS" && response.result.rows[0][0].value === "OK") { //Success Case
+					var experimentType = _this._mainController.profile.getExperimentTypeForExperimentTypeCode(_this._experimentFormModel.experiment.experimentTypeCode);
+					var experimentTypeDisplayName = experimentType.description;
+					if(!experimentTypeDisplayName) {
+						experimentTypeDisplayName = _this._experimentFormModel.experiment.experimentTypeCode;
+					}
+					
+					var message = "";
+					if(_this._experimentFormModel.mode === FormMode.CREATE) {
+						message = "Created.";
+					} else if(_this._experimentFormModel.mode === FormMode.EDIT) {
+						message = "Updated.";
+					}
+					
+					var callbackOk = function() {
+						var projectIdentifier = "/" + experimentSpace + "/" + experimentProject;
+						_this._mainController.sideMenu.refreshExperiment(projectIdentifier, experimentCode);
+						_this._experimentFormModel.isFormDirty = false;
+						_this._mainController.changeView("showExperimentPageFromIdentifier", experimentIdentifier);
+						Util.unblockUI();
+					}
+					
+					Util.showSuccess(experimentTypeDisplayName + " " + message, callbackOk);
+				} else { //This should never happen
+					Util.showError("Unknown Error.", function() {Util.unblockUI();});
+				}
+				
+			});
+		} else {
+			Util.showError("No DSS available.", function() {Util.unblockUI();});
+		}
+	}
+}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormModel.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormModel.js
new file mode 100644
index 0000000000000000000000000000000000000000..4ad313857cffd9420bb397201b17ea9485304811
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormModel.js
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2014 ETH Zuerich, Scientific IT Services
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function ExperimentFormModel(mode, experiment) {
+	this.mode = mode;
+	this.isFormDirty = false;
+	//Initialize properties if not present for the creation mode
+	if(!experiment.properties) {
+		experiment.properties = {};
+	}
+	this.experiment = experiment;
+}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormView.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormView.js
new file mode 100644
index 0000000000000000000000000000000000000000..25b22372a8d731767515c57a5c678e9c02ca2185
--- /dev/null
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ExperimentForm/ExperimentFormView.js
@@ -0,0 +1,209 @@
+/*
+ * Copyright 2014 ETH Zuerich, Scientific IT Services
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+function ExperimentFormView(experimentFormController, experimentFormModel) {
+	this._experimentFormController = experimentFormController;
+	this._experimentFormModel = experimentFormModel;
+	
+	this.repaint = function($container) {
+		var _this = this;
+		$container.empty();
+		
+		var $form = $("<div>", { "class" : "row"});
+		var $formColumn = $("<form>", { 
+			"class" : FormUtil.formColumClass + " form-horizontal", 
+			'role' : "form", 
+			"action" : "javascript:void(0);", 
+			"onsubmit" : "mainController.currentView._updateExperiment();"
+		});
+			
+		$form.append($formColumn);
+		
+		//
+		// Title
+		//
+		var $formTitle = null;
+		if(this._experimentFormModel.mode === FormMode.VIEW || this._experimentFormModel.mode === FormMode.EDIT) {
+			$formTitle = $("<h2>").append("Experiment " + this._experimentFormModel.experiment.identifier);
+		} else {
+			$formTitle = $("<h2>").append("Create " + this._experimentFormModel.experiment.experimentTypeCode);
+		}
+		$formColumn.append($formTitle);
+		
+		//
+		// Create Sub Experiment
+		//
+		if(this._experimentFormModel.mode === FormMode.VIEW) {
+			var $createSubExpBtn = $("<a>", { "class" : "btn btn-default"}).append("Create Sub Experiment");
+			$createSubExpBtn.click(function() {
+				var $dropdown = FormUtil.getSampleTypeDropdown("sampleTypeDropdown", true);
+				Util.blockUI("Select the type for the sub Experiment: <br><br>" + $dropdown[0].outerHTML + "<br> or <a class='btn btn-default' id='sampleTypeDropdownCancel'>Cancel</a>");
+				
+				$("#sampleTypeDropdown").on("change", function(event) {
+					var sampleTypeCode = $("#sampleTypeDropdown")[0].value;
+					var argsMap = {
+							"sampleTypeCode" : sampleTypeCode,
+							"experimentIdentifier" : _this._experimentFormModel.experiment.identifier
+					}
+					var argsMapStr = JSON.stringify(argsMap);
+					
+					mainController.changeView("showCreateSubExperimentPage", argsMapStr);
+				});
+				
+				$("#sampleTypeDropdownCancel").on("click", function(event) { 
+					Util.unblockUI();
+				});
+			});
+			$formTitle.append(" ");
+			$formTitle.append($createSubExpBtn);
+			
+			var $editBtn = $("<a>", { "class" : "btn btn-default"}).append("<span class='glyphicon glyphicon-edit'></span> Enable Editing");
+			$editBtn.click(function() {
+				mainController.changeView("showEditExperimentPageFromIdentifier", _this._experimentFormModel.experiment.identifier);
+			});
+			$formTitle.append(" ");
+			$formTitle.append($editBtn);
+		}
+		
+		//
+		// Metadata Identification
+		//
+		var $identificationInfo = $('<div>').append($('<legend>').text("Identification Info"));
+		$formColumn.append($identificationInfo);
+		
+		var identifierParts = this._experimentFormModel.experiment.identifier.split("/");
+		
+		$formColumn.append(FormUtil.getFieldForLabelWithText("Type", this._experimentFormModel.experiment.experimentTypeCode));
+		$formColumn.append(FormUtil.getFieldForLabelWithText("Project", identifierParts[0] + "/" + identifierParts[1] + "/" + identifierParts[2]));
+		var $projectField = FormUtil._getInputField("text", null, "project", null, true);
+		$projectField.val(identifierParts[0] + "/" + identifierParts[1] + "/" + identifierParts[2]);
+		$projectField.hide();
+		$formColumn.append($projectField);
+		
+		if(this._experimentFormModel.mode === FormMode.VIEW || this._experimentFormModel.mode === FormMode.EDIT) {
+			$formColumn.append(FormUtil.getFieldForLabelWithText("Code", this._experimentFormModel.experiment.code));
+			
+			var $codeField = FormUtil._getInputField("text", null, "code", null, true);
+			$codeField.val(identifierParts[3]);
+			$codeField.hide();
+			$formColumn.append($codeField);
+			
+			$formColumn.append(FormUtil.getFieldForLabelWithText("Registrator", this._experimentFormModel.experiment.registrationDetails.userId));
+			$formColumn.append(FormUtil.getFieldForLabelWithText("Registration Date", (new Date(this._experimentFormModel.experiment.registrationDetails.registrationDate)).toLocaleString()));
+		} else if(this._experimentFormModel.mode === FormMode.CREATE){
+			var $codeField = FormUtil._getInputField("text", null, "code", null, true);
+			$codeField.change(function() {
+				_this._experimentFormModel.experiment.code = $(this).val();
+			})
+			$formColumn.append(FormUtil.getFieldForComponentWithLabel($codeField, "Code"));
+		}
+		
+		//
+		// Metadata Fields
+		//
+		var experimentType = mainController.profile.getExperimentTypeForExperimentTypeCode(this._experimentFormModel.experiment.experimentTypeCode);
+		
+		for(var i = 0; i < experimentType.propertyTypeGroups.length; i++) {
+			var propertyTypeGroup = experimentType.propertyTypeGroups[i];
+			
+			var $fieldset = $('<div>');
+			var $legend = $('<legend>'); 
+			$fieldset.append($legend);
+			
+			if(propertyTypeGroup.name) {
+				$legend.text(propertyTypeGroup.name);
+			} else if(experimentType.propertyTypeGroups.length === 1) { //Only when there is only one group without name to render it with a default title.
+				$legend.text("Metadata Fields");
+			} else {
+				$legend.remove();
+			}
+			
+			for(var j = 0; j < propertyTypeGroup.propertyTypes.length; j++) {
+				var propertyType = propertyTypeGroup.propertyTypes[j];
+				
+				var $controlGroup =  null;
+				
+				if(this._experimentFormModel.mode === FormMode.VIEW) { //Show values without input boxes if the form is in view mode
+					$controlGroup = FormUtil.getFieldForLabelWithText(propertyType.label, this._experimentFormModel.experiment.properties[propertyType.code]);
+				} else {
+					var $component = FormUtil.getFieldForPropertyType(propertyType);
+					var propertyTypeCode = null;
+					//Update values if is into edit mode
+					if(this._experimentFormModel.mode === FormMode.EDIT) {
+						if(propertyType.dataType === "BOOLEAN") {
+							$($component.children()[0]).prop('checked', this._experimentFormModel.experiment.properties[propertyType.code] === "true");
+							propertyTypeCode = propertyType.code;
+						} else if(propertyType.dataType === "TIMESTAMP") {
+							var value = this._experimentFormModel.experiment.properties[propertyType.code];
+							$($($component.children()[0]).children()[0]).val(value);
+							propertyTypeCode = propertyType.code;
+						} else {
+							var value = this._experimentFormModel.experiment.properties[propertyType.code];
+							propertyTypeCode = propertyType.code;
+							if(!value && propertyType.code.charAt(0) === '$') {
+								value = this._experimentFormModel.experiment.properties[propertyType.code.substr(1)];
+								propertyTypeCode = propertyType.code.substr(1);
+							}
+							$component.val(value);
+						}
+					}
+					
+					var changeEvent = function(propertyType, propertyTypeCode) {
+						return function() {
+							_this._experimentFormModel.isFormDirty = true;
+							var field = $(this);
+							if(propertyType.dataType === "BOOLEAN") {
+								_this._experimentFormModel.experiment.properties[propertyTypeCode] = field.children()[0].checked;
+							} else if (propertyType.dataType === "TIMESTAMP") {
+								var timeValue = $($(field.children()[0]).children()[0]).val();
+								_this._experimentFormModel.experiment.properties[propertyTypeCode] = timeValue;
+							} else {
+								_this._experimentFormModel.experiment.properties[propertyTypeCode] = Util.getEmptyIfNull(field.val());
+							}
+						}
+					}
+					
+					$component.change(changeEvent(propertyType, propertyTypeCode));
+					$controlGroup = FormUtil.getFieldForComponentWithLabel($component, propertyType.label);
+				}
+				
+				$fieldset.append($controlGroup);
+			}
+			
+			$formColumn.append($fieldset);
+		}
+		
+		if(this._experimentFormModel.mode === FormMode.EDIT || this._experimentFormModel.mode === FormMode.CREATE) {
+			var label = "";
+			
+			if(this._experimentFormModel.mode === FormMode.EDIT) {
+				label = "Update Experiment " + this._experimentFormModel.experiment.code;
+			} else if(this._experimentFormModel.mode === FormMode.CREATE) {
+				label = "Create Experiment";
+			}
+			
+			var $updateBtn = $("<a>", { "class" : "btn btn-primary"}).append(label);
+			$updateBtn.click(function() {
+				_this._experimentFormController.updateExperiment();
+			});
+			
+			$formColumn.append($updateBtn);
+		}
+		
+		$container.append($form);
+		Util.unblockUI();
+	}
+}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ProjectForm/ProjectFormView.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ProjectForm/ProjectFormView.js
index 0954111160c5f169624fdda76d12719ec9b20f23..ac3ceefafea80e2c19e622e398c81bab6ba75095 100644
--- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ProjectForm/ProjectFormView.js
+++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/ProjectForm/ProjectFormView.js
@@ -117,7 +117,7 @@ function ProjectFormView(projectFormController, projectFormModel) {
 				btnText = "Update Project " + this._projectFormModel.project.code;
 			}
 				
-			var $updateBtn = $("<a>", { "class" : "btn btn-default"}).append(btnText);
+			var $updateBtn = $("<a>", { "class" : "btn btn-primary"}).append(btnText);
 			$updateBtn.click(function() {
 				_this._projectFormController.updateProject();
 			});
diff --git a/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py b/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py
index aeb14e253b6cc2718f0f9caf401e6d9f17a2c987..c07d2a143a285629f3ceb74dc26c7464bc08e6ce 100644
--- a/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py
+++ b/plasmid/source/core-plugins/newbrowser/1/dss/reporting-plugins/newbrowserapi/script.py
@@ -240,9 +240,6 @@ def insertUpdateExperiment(tr, parameters, tableBuilder):
 	
 	#Mandatory parameters
 	experimentType = parameters.get("experimentType"); #String
-	experimentSpace = parameters.get("experimentSpace"); #String
-	experimentProject = parameters.get("experimentProject"); #String
-	experimentCode = parameters.get("experimentCode"); #String
 	experimentIdentifier = parameters.get("experimentIdentifier"); #String
 	experimentProperties = parameters.get("experimentProperties"); #java.util.LinkedHashMap<String, String> where the key is the name