diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/index.html b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/index.html
index a7ea0d0164674e43ca9e7e6819b9a493a5324263..1383f4af1789d3c1c7269cdd0894f7e15ef0e75b 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/index.html
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/index.html
@@ -192,6 +192,11 @@
 	<script type="text/javascript" src="./js/views/DrawingBoards/DrawingBoardsModel.js"></script>
 	<script type="text/javascript" src="./js/views/DrawingBoards/DrawingBoardsView.js"></script>
 	
+	<script type="text/javascript" src="./js/views/DataGrid/ExperimentDataGridUtil.js"></script>
+	<script type="text/javascript" src="./js/views/ExperimentTable/ExperimentTableController.js"></script>
+	<script type="text/javascript" src="./js/views/ExperimentTable/ExperimentTableModel.js"></script>
+	<script type="text/javascript" src="./js/views/ExperimentTable/ExperimentTableView.js"></script>
+	
 	<script type="text/javascript">
 	//
 	// Configurations Available (Available under the js/config folder)
diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js
index fcd2fcce9e7938b372ee9bd6ccf4650f6d55e91a..161cf3a6c75472e2ea84df6da2fae673d19612f7 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/config/Profile.js
@@ -391,6 +391,46 @@ $.extend(DefaultProfile.prototype, {
 			return null;
 		}
 	
+		this.getAllPropertiCodesForExperimentTypeCode = function(typeCode) {
+			var allPropertiCodes = new Array();
+			var type = this.getExperimentTypeForExperimentTypeCode(typeCode);
+			for(var i = 0; i < type.propertyTypeGroups.length; i++) {
+				var propertyGroup = type.propertyTypeGroups[i].propertyTypes;
+				for(var j = 0; j < propertyGroup.length; j++) {
+					var propertyType = propertyGroup[j];
+					allPropertiCodes.push(propertyType.code);
+				}
+			}
+			return allPropertiCodes;
+		}
+		
+		this.getPropertiesDisplayNamesForExperimentTypeCode = function(typeCode, propertiesTypeCode) {
+			var allPropertiDisplayNames = new Array();
+			for(var i = 0; i < propertiesTypeCode.length; i++) {
+				var propertyTypeCode = propertiesTypeCode[i];
+				var propertyTypeDisplayName = this.getPropertyDisplayNamesForExperimentTypeCode(typeCode, propertyTypeCode);
+				allPropertiDisplayNames.push(propertyTypeDisplayName);
+			}
+			return allPropertiDisplayNames;
+		}
+		
+		this.getPropertyDisplayNamesForExperimentTypeCode = function(typeCode, propertyTypeCode) {
+			var propertyDisplayName = "";
+			var type = this.getExperimentTypeForExperimentTypeCode(typeCode);
+		
+			for(var i = 0; i < type.propertyTypeGroups.length; i++) {
+				var propertyGroup = type.propertyTypeGroups[i].propertyTypes;
+				for(var j = 0; j < propertyGroup.length; j++) {
+					var propertyType = propertyGroup[j];
+					if(propertyType.code === propertyTypeCode) {
+						propertyDisplayName = propertyType.label;
+					}
+				}
+			}
+		
+			return propertyDisplayName;
+		}
+		
 		this.getAllPropertiCodesForTypeCode = function(typeCode) {
 			var allPropertiCodes = new Array();
 			var sampleType = this.getSampleTypeForSampleTypeCode(typeCode);
diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/ExperimentDataGridUtil.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/ExperimentDataGridUtil.js
new file mode 100644
index 0000000000000000000000000000000000000000..e55dbc6c512b6046f7552d9c5fef350ea18f7804
--- /dev/null
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/DataGrid/ExperimentDataGridUtil.js
@@ -0,0 +1,149 @@
+var ExperimentDataGridUtil = new function() {
+	this.getExperimentDataGrid = function(typeCode, entities, rowClick) {
+		var type = profile.getExperimentTypeForExperimentTypeCode(typeCode);
+		var propertyCodes = profile.getAllPropertiCodesForExperimentTypeCode(typeCode);
+		var propertyCodesDisplayNames = profile.getPropertiesDisplayNamesForExperimentTypeCode(typeCode, propertyCodes);
+		
+		//Fill Columns model
+		var columns = [];
+		
+		columns.push({
+			label : 'Identifier',
+			property : 'identifier',
+			isExportable: true,
+			sortable : true,
+			render : function(data) {
+				var href = Util.getURLFor(mainController.sideMenu.getCurrentNodeId(), "showExperimentPageFromIdentifier", data.identifier);
+				var link = $("<a>", { "href" : href, "class" : "browser-compatible-javascript-link" }).append(data.identifier);
+				return link;
+			},
+			filter : function(data, filter) {
+				return data.identifier.toLowerCase().indexOf(filter) !== -1;
+			},
+			sort : function(data1, data2, asc) {
+				var value1 = data1.identifier;
+				var value2 = data2.identifier;
+				var sortDirection = (asc)? 1 : -1;
+				return sortDirection * naturalSort(value1, value2);
+			}
+		});
+		
+		if($.inArray("NAME", propertyCodes) !== -1) {
+			columns.push({
+				label : 'Name',
+				property : 'NAME',
+				isExportable: true,
+				sortable : true
+			});
+		}
+		
+		var propertyColumnsToSort = [];
+		for (var idx = 0; idx < propertyCodes.length; idx++) {
+			var propertiesToSkip = ["NAME"];
+			var propertyCode = propertyCodes[idx];
+			if($.inArray(propertyCode, propertiesToSkip) !== -1) {
+				continue;
+			}
+			var propertyType = profile.getPropertyType(propertyCode);
+			if(propertyType.dataType === "CONTROLLEDVOCABULARY") {
+				var getVocabularyColumn = function(propertyType) {
+					return function() {
+						return {
+							label : propertyCodesDisplayNames[idx],
+							property : propertyCodes[idx],
+							isExportable: true,
+							sortable : true,
+							render : function(data) {
+								return FormUtil.getVocabularyLabelForTermCode(propertyType, data[propertyType.code]);
+							},
+							filter : function(data, filter) {
+								var value = FormUtil.getVocabularyLabelForTermCode(propertyType, data[propertyType.code]);
+								return value && value.toLowerCase().indexOf(filter) !== -1;
+							},
+							sort : function(data1, data2, asc) {
+								var value1 = FormUtil.getVocabularyLabelForTermCode(propertyType, data1[propertyType.code]);
+								if(!value1) {
+									value1 = ""
+								};
+								var value2 = FormUtil.getVocabularyLabelForTermCode(propertyType, data2[propertyType.code]);
+								if(!value2) {
+									value2 = ""
+								};
+								var sortDirection = (asc)? 1 : -1;
+								return sortDirection * naturalSort(value1, value2);
+							}
+						};
+					}
+				}
+				
+				var newVocabularyColumnFunc = getVocabularyColumn(propertyType);
+				propertyColumnsToSort.push(newVocabularyColumnFunc());
+			} else {
+				propertyColumnsToSort.push({
+					label : propertyCodesDisplayNames[idx],
+					property : propertyCodes[idx],
+					isExportable: true,
+					sortable : true
+				});
+			}
+		}
+		
+		columns.push({
+			label : '---------------',
+			property : null,
+			isExportable: false,
+			sortable : false
+		});
+		propertyColumnsToSort.sort(function(propertyA, propertyB) {
+			return propertyA.label.localeCompare(propertyB.label);
+		});
+		columns = columns.concat(propertyColumnsToSort);
+		columns.push({
+			label : '---------------',
+			property : null,
+			isExportable: false,
+			sortable : false
+		});
+		
+		columns.push({
+			label : 'Registration Date',
+			property : 'registrationDate',
+			isExportable: false,
+			sortable : true
+		});
+		
+		columns.push({
+			label : 'Modification Date',
+			property : 'modificationDate',
+			isExportable: false,
+			sortable : true
+		});
+		
+		//Fill data model
+		var getDataList = function(callback) {
+			var dataList = [];
+			for(var sIdx = 0; sIdx < entities.length; sIdx++) {
+				var entity = entities[sIdx];
+				var model = {		'identifier' : entity.identifier, 
+									'permId' : entity.permId,
+									'registrationDate' : Util.getFormatedDate(new Date(entity.registrationDetails.registrationDate)),
+									'modificationDate' : Util.getFormatedDate(new Date(entity.registrationDetails.modificationDate))
+				};
+				
+				for (var pIdx = 0; pIdx < propertyCodes.length; pIdx++) {
+					var propertyCode = propertyCodes[pIdx];
+					model[propertyCode] = entity.properties[propertyCode];
+				}
+				
+				dataList.push(model);
+			}
+			callback(dataList);
+		};
+			
+		//Create and return a data grid controller
+		var configKey = "ENTITY_TABLE_"+ typeCode;
+		var dataGridController = new DataGridController(null, columns, getDataList, rowClick, false, configKey);
+		return dataGridController;
+	}
+
+}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentTable/ExperimentTableController.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentTable/ExperimentTableController.js
new file mode 100644
index 0000000000000000000000000000000000000000..20f9d5749ab6942a1ce05f4fc17420476712d26a
--- /dev/null
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentTable/ExperimentTableController.js
@@ -0,0 +1,83 @@
+/*
+ * 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 ExperimentTableController(parentController, title, project, showInProjectOverview) {
+	this._parentController = parentController;
+	this._experimentTableModel = new ExperimentTableModel(title, project, showInProjectOverview);
+	this._experimentTableView = new ExperimentTableView(this, this._experimentTableModel);
+	
+	this.init = function($container) {
+		var _this = this;
+		Util.blockUI();
+		
+		var callback = function(data) {
+			var typeCount = 0;
+			var lastType = null;
+			for(var i = 0; i < data.result.length; i++) {
+				var item = data.result[i];
+				if(item.properties["SHOW_IN_PROJECT_OVERVIEW"]) {
+					_this._experimentTableModel.allExperiments.push(item);
+					if(!_this._experimentTableModel.types[item.experimentTypeCode]) {
+						lastType = item.experimentTypeCode;
+						_this._experimentTableModel.types[item.experimentTypeCode] = true;
+						typeCount++;
+					}
+				}
+			}
+			
+			_this._experimentTableView.repaint($container);
+			Util.unblockUI();
+			
+			if(typeCount === 1) {
+				_this._experimentTableView.getTypeSelector().val(lastType);
+				_this._reloadTableWithType(lastType);
+			}
+		};
+		
+		if(this._experimentTableModel.project) {
+			this._loadProjectData(callback);
+		}
+	}
+	
+	this._loadProjectData = function(callback) {
+		var project = this._experimentTableModel.project;
+		delete project["@id"];
+		delete project["@type"];
+		mainController.serverFacade.listExperiments([project], callback);
+	}
+	
+	this._reloadTableWithType = function(selectedTypeCode) {
+		if(selectedTypeCode !== '') { //Verify something selected
+			//Get experiments from type
+			var experiments = [];
+			for (var idx = 0; idx < this._experimentTableModel.allExperiments.length; idx++) {
+				var exptoCheckType = this._experimentTableModel.allExperiments[idx];
+				if(exptoCheckType.experimentTypeCode === selectedTypeCode) {
+					experiments.push(exptoCheckType);
+				}
+			}
+			
+			//Click event
+			var rowClick = function(e) {
+				mainController.changeView('showExperimentPageFromIdentifier', e.data.identifier);
+			}
+			
+			//Create and display table
+			var dataGridController = ExperimentDataGridUtil.getExperimentDataGrid(selectedTypeCode, experiments, rowClick);
+			dataGridController.init(this._experimentTableView.getTableContainer());
+		}
+	}
+}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentTable/ExperimentTableModel.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentTable/ExperimentTableModel.js
new file mode 100644
index 0000000000000000000000000000000000000000..26ffae29249f614f318ea24d1a4d6d0f9995eba3
--- /dev/null
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentTable/ExperimentTableModel.js
@@ -0,0 +1,23 @@
+/*
+ * 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 ExperimentTableModel(title, project, showInProjectOverview) {
+	this.title = title;
+	this.project = project;
+	this.showInProjectOverview = showInProjectOverview;
+	this.types = {};
+	this.allExperiments = new Array();
+}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentTable/ExperimentTableView.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentTable/ExperimentTableView.js
new file mode 100644
index 0000000000000000000000000000000000000000..da8e2a046b808a908ef5ec51791fb7730a8eb2b6
--- /dev/null
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ExperimentTable/ExperimentTableView.js
@@ -0,0 +1,65 @@
+/* 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 ExperimentTableView(experimentTableController, experimentTableModel) {
+	this._experimentTableController = experimentTableController;
+	this._experimentTableModel = experimentTableModel;
+	this._tableContainer = $("<div>");
+	this.typeSelector = null;
+	
+	this.repaint = function($container) {
+		var _this = this;
+		$container.empty();
+		if(this._experimentTableModel.title) {
+			var $title = $("<h1>").append(this._experimentTableModel.title);
+			$container.append($title);
+		}
+		
+		var $toolbox = $("<div>", { 'id' : 'toolBoxContainer', class : 'toolBox'});
+		$toolbox.append("Experiment Type: ");
+		$toolbox.append(this._getProjectExperimentTypesDropdown()).append(" ").append();
+		
+		$container.append($toolbox);
+		$container.append(this._tableContainer);
+	}
+	
+	this.getTableContainer = function() {
+		return this._tableContainer;
+	}
+	
+	//
+	// Components
+	//
+	this.getTypeSelector = function() {
+		return this.typeSelector;
+	}
+	
+	this._getProjectExperimentTypesDropdown = function() {
+		var _this = this;
+		var	$typesSelector = $('<select>', { class : 'form-control' });
+		$typesSelector.append($('<option>', { 'value' : '' }).text(''));
+		for(typeCode in this._experimentTableModel.types) {
+			$typesSelector.append($('<option>', { 'value' : typeCode }).text(typeCode));
+		}
+		
+		$typesSelector.change(function(event) {
+			var typeToShow = $(this).val();
+			_this._experimentTableController._reloadTableWithType(typeToShow);
+		});
+		this.typeSelector = $typesSelector;
+		return $("<span>").append($typesSelector);
+	}
+	
+}
\ No newline at end of file
diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js
index 1078bf780d60a2fe29d3713554d86ecab42b2aaf..95f7949f462cd92fcbd76177eaae0172fcf93fcd 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/ProjectForm/ProjectFormView.js
@@ -148,6 +148,16 @@ function ProjectFormView(projectFormController, projectFormModel) {
 			var $updateBtn = $("<input>", { "type": "submit", "class" : "btn btn-primary", 'value' : btnText });
 			$formColumn.append($updateBtn);
 		}
+		
+		//
+		// Experiment Table
+		//
+		var $experimentsContainer = $("<div>");
+		$formColumn.append($experimentsContainer);
+		
+		var experimentTableController = new ExperimentTableController(this._projectFormController, "Experiments", this._projectFormModel.project);
+		experimentTableController.init($experimentsContainer);
+		
 		$container.append($form);
 		FormUtil.activateRichTextProperties();
 	}