diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
index 053feb607933524c3e01a94af1b3db9a397f0532..22b8b30b3dd2118a3d439fc49fbfdecfeebc8e28 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/server/ServerFacade.js
@@ -619,27 +619,35 @@ function ServerFacade(openbisServer) {
 			//TO-DO Setting the searchCriteria given the advancedSearchCriteria model
 			var searchCriteria = new SampleSearchCriteria();
 			
-			/*var operator = advancedSearchCriteria.logicalOperator;
+			var operator = advancedSearchCriteria.logicalOperator;
+			if (!operator) {
+				operator = "AND";
+			}
 			searchCriteria.withOperator(operator);
 			
-			var fieldType = null;
-			var fieldName = null;
-			var fieldValue = null;
-
+			
 			var ruleKeys = Object.keys(advancedSearchCriteria.rules);
 			for (var idx = 0; idx < ruleKeys.length; idx++)
 			{
-
+				var fieldType = null;
+				var fieldNameUnparsed = null;
+				var fieldName = null;
+				var fieldValue = null;
+				
 				fieldType = advancedSearchCriteria.rules[ruleKeys[idx]].type;
-				fieldName = advancedSearchCriteria.rules[ruleKeys[idx]].name;
-				if (fieldName.indexOf(".") > 0)
-					fieldName = fieldName.substring(fieldName.indexOf(".")+1,fieldName.length);
+				fieldNameUnparsed = advancedSearchCriteria.rules[ruleKeys[idx]].name;
+				if (fieldNameUnparsed === undefined) {
+					fieldNameUnparsed = null;
+				} else if (fieldNameUnparsed.indexOf(".") != -1) {
+					fieldName = fieldNameUnparsed.substring(fieldNameUnparsed.indexOf(".") + 1, fieldNameUnparsed.length);
+				}
 				fieldValue = advancedSearchCriteria.rules[ruleKeys[idx]].value;
 				
+				//alert("fieldType is " + fieldType + " fieldName is " + fieldName + " fieldValue is " + fieldValue + " fieldNameUnparsed is " + fieldNameUnparsed);
+				
 				//Case 1: fieldType = all
 				if(fieldType === "All") {
 					searchCriteria.withAnyField().thatEquals(fieldValue);
-					//alert("All! type is " + fieldType + " name is " + fieldName + " val is " + fieldValue);
 				}
 
 				//Case 2: fieldType = property
@@ -669,7 +677,7 @@ function ServerFacade(openbisServer) {
 							searchCriteria.withProject().withPermId().thatEquals(fieldValue);
 							break;
 						case "METAPROJECT":
-							//???
+							searchCriteria.withTag().withCode().thatEquals(fieldValue);
 							break;
 						case "REGISTRATION_DATE": //must be format 2009-08-18
 							searchCriteria.withRegistrationDate().thatEquals(fieldValue);
@@ -682,9 +690,9 @@ function ServerFacade(openbisServer) {
 					}
 				}
 				
-				//case 4 = Parents
-				else if (fieldType == "Parent"){
-					if(fieldValue.indexOf("ATTR.") > 0){
+				//Case 4: Parents
+				else if (fieldType === "Parent"){
+					if(fieldNameUnparsed.indexOf("ATTR.") != -1){
 						switch(fieldName) {
 							case "CODE":
 								searchCriteria.withParents().withCode().thatEquals(fieldValue);
@@ -705,7 +713,7 @@ function ServerFacade(openbisServer) {
 								searchCriteria.withParents().withProject().withPermId().thatEquals(fieldValue);
 								break;
 							case "METAPROJECT":
-								//???
+								searchCriteria.withParents().withTag().withCode().thatEquals(fieldValue);
 								break;
 							case "REGISTRATION_DATE": //must be format 2009-08-18
 								searchCriteria.withParents().withRegistrationDate().thatEquals(fieldValue);
@@ -716,21 +724,64 @@ function ServerFacade(openbisServer) {
 							default:
 								//Do Nothing
 						}	
-					}else if(fieldValue.indexOf("PROP.") > 0){
+					}else if(fieldNameUnparsed.indexOf("PROP.") != -1){
 						searchCriteria.withParents().withProperty(fieldName).thatEquals(fieldValue);
 					}
 				}//end parent
 				
+				//Case 5: CHildren
+				else if (fieldType === "Children"){
+					if(fieldNameUnparsed.indexOf("ATTR.") != -1){
+						switch(fieldName) {
+							case "CODE":
+								searchCriteria.withChildren().withCode().thatEquals(fieldValue);
+								break;	
+							case "SAMPLE_TYPE":
+								searchCriteria.withChildren().withType().withCode().thatEquals(fieldValue);
+								break;
+							case "PERM_ID":
+								searchCriteria.withChildren().withPermId().thatEquals(fieldValue);
+								break;
+							case "SPACE":
+								searchCriteria.withChildren().withSpace().withCode().thatEquals(fieldValue);
+								break;
+							case "PROJECT":
+								searchCriteria.withChildren().withProject().withCode().thatEquals(fieldValue);
+								break;
+							case "PROJECT_PERM_ID":
+								searchCriteria.withChildren().withProject().withPermId().thatEquals(fieldValue);
+								break;
+							case "METAPROJECT":
+								searchCriteria.withChildren().withTag().withCode().thatEquals(fieldValue);
+								break;
+							case "REGISTRATION_DATE": //must be format 2009-08-18
+								searchCriteria.withChildren().withRegistrationDate().thatEquals(fieldValue);
+								break;
+							case "MODIFICATION_DATE": //must be format 2009-08-18
+								searchCriteria.withChildren().withModificationDate().thatEquals(fieldValue);
+								break;
+							default:
+								//Do Nothing
+						}	
+					} else if(fieldNameUnparsed.indexOf("PROP.") != -1){
+						searchCriteria.withChildren().withProperty(fieldName).thatEquals(fieldValue);
+					}				
+				}	//end children					
 				
-				//case 5 = CHildren
-				else if (fieldType == "Children"){
-					//copy & paste the code above.				
-				}						
-			
-			}*/
+			}
 			
 			//TO-DO Setting the fetchOptions given standard settings
 			var fetchOptions = new SampleFetchOptions();
+			fetchOptions.withType();
+			fetchOptions.withSpace();
+			fetchOptions.withExperiment();
+			fetchOptions.withRegistrator();
+			fetchOptions.withModifier();
+			fetchOptions.withParents();
+			fetchOptions.withProperties();
+			
+			//to get all levels
+			//fetchOptions.withParentsWith(fetchOptions);
 			
 			v3Api.searchSamples(searchCriteria, fetchOptions)
 			.done(function(result) {
diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js
index 2bfc51f9c9b0364720dff8093bffff38ca67b134..37eecfdb7deea91c332e13d746cc999360d177cc 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/util/FormUtil.js
@@ -295,6 +295,9 @@ var FormUtil = new function() {
 			if(mapVals[mIdx].disabled) {
 				$option.attr('disabled', '');
 			}
+			if(mapVals[mIdx].selected) {
+				$option.attr('selected', '');
+			}
 			$component.append($option);
 		}
 		
diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchController.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchController.js
index f6a114596b4499a12ecc34cf9c06d047bb19756b..d26c6fb9fb7bddf7dde5c678df26c18492ea7fa6 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchController.js
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchController.js
@@ -25,12 +25,13 @@ function AdvancedSearchController(mainController) {
 	}
 	
 	this.search = function() {
+		var _this = this;
 		var model = this._advancedSearchModel.criteria;
-//		Util.showInfo(JSON.stringify(model));
 		
-		var callbackFunction = function(result) {
-			Util.showInfo("Call Succeeded: " + JSON.stringify(result).length);
-			//TO-DO Render table with results
+		Util.blockUI();
+		var callbackFunction = function(results) {
+			_this._advancedSearchView.renderResults(results);
+			Util.unblockUI();
 		};
 		mainController.serverFacade.searchForSamplesAdvanced(model, callbackFunction);
 	}
diff --git a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchView.js b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchView.js
index 467b034b337b11c43c7729d8e12cee1f68703ef3..1d53479531099634c992b2f70dabcbf2fa215ab0 100644
--- a/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchView.js
+++ b/plasmid/source/core-plugins/eln-lims/1/as/webapps/eln-lims/html/js/views/AdvancedSearch/AdvancedSearchView.js
@@ -20,6 +20,7 @@ function AdvancedSearchView(advancedSearchController, advancedSearchModel) {
 	this._$menuPanelContainer = null;
 	this._$searchCriteriaPanelContainer = null;
 	this._$tbody = null;
+	this._$dataGridContainer = null;
 	
 	//
 	// Main Repaint Method
@@ -48,6 +49,8 @@ function AdvancedSearchView(advancedSearchController, advancedSearchModel) {
 		$mainPanel.append(this._$searchCriteriaPanelContainer);
 		
 		//Search Results Panel
+		this._$dataGridContainer = $("<div>");
+		$mainPanel.append(this._$dataGridContainer);
 		//TODO
 		
 		//Triggers Layout refresh
@@ -64,7 +67,7 @@ function AdvancedSearchView(advancedSearchController, advancedSearchModel) {
 		var $entityTypeDropdown = this._getEntityTypeDropdown();
 		$menuPanelContainer.append(FormUtil.getFieldForComponentWithLabel($entityTypeDropdown, "Search For", null, true));
 
-		var andOrOptions = [{value : "AND", label : "AND"}, {value : "OR", label : "OR"}];
+		var andOrOptions = [{value : "AND", label : "AND", selected : true}, {value : "OR", label : "OR"}];
 		var $andOrDropdownComponent = FormUtil.getDropdown(andOrOptions, "Select logical operator");
 		var _this = this;
 		$andOrDropdownComponent.change(function() {
@@ -305,4 +308,102 @@ function AdvancedSearchView(advancedSearchController, advancedSearchModel) {
 		return $minusButton;
 	}
 	
+	this.renderResults = function(results) {
+		var dataGridController = this._getGridForResults(results);
+		dataGridController.init(this._$dataGridContainer);
+	}
+	
+	this._getGridForResults = function(results) {
+			var columns = [ {
+				label : 'Entity Kind',
+				property : 'entityKind',
+				sortable : true
+			}, {
+				label : 'Entity Type',
+				property : 'entityType',
+				sortable : true
+			}, {
+				label : 'Code',
+				property : 'code',
+				sortable : true
+			}, {
+				label : 'Matched',
+				property : 'matched',
+				sortable : true,
+				filter : function(data, filter) {
+					var matchedValue = data.matched.text();
+					return matchedValue.toLowerCase().indexOf(filter) !== -1;
+				},
+				sort : function(data1, data2, asc) {
+					var value1 = data1.matched.text();
+					var value2 = data2.matched.text();
+					var sortDirection = (asc)? 1 : -1;
+					return sortDirection * naturalSort(value1, value2);
+				}
+			}, {
+				label : '-----------',
+				property : '-----------',
+				sortable : true
+			}];
+			
+			//Add properties as columns dynamically depending on the results
+			var foundPropertyCodes = {};
+			
+			for(var rIdx = 0; rIdx < results.objects.length; rIdx++) {
+				var entity = results.objects[rIdx];
+				for(var propertyCode in entity.properties) {
+					foundPropertyCodes[propertyCode] = true;
+				}
+			}
+			
+			for(var propertyCode in foundPropertyCodes) {
+				columns.push({
+					label : propertyCode,
+					property : propertyCode,
+					sortable : true
+				});
+			}
+			//
+			
+			var getDataRows = function(callback) {
+				var rows = [];
+				for(var rIdx = 0; rIdx < results.objects.length; rIdx++) {
+					var entity = results.objects[rIdx];
+					var entityKind = null;
+					var entityType = null;
+					var code = entity.code;
+					
+					switch(entity["@type"]) {
+						case "as.dto.sample.Sample":
+							entityKind = "Sample";
+							entityType = entity.type.code;
+							break;
+					}
+					
+					//properties
+					var rowData = {
+							entityKind : entityKind,
+							entityType : entityType,
+							code : code,
+							matched : "TO-DO"
+					};
+					
+					for(var propertyCode in entity.properties) {
+						rowData[propertyCode] = entity.properties[propertyCode];
+					}
+					
+					//Add the row data
+					rows.push(rowData);
+				}
+				callback(rows);
+			};
+			
+			var rowClick = function(e) {
+//				mainController.changeView('showViewSamplePageFromPermId', e.data.permId);
+			}
+			
+			var dataGrid = new DataGridController("Search Results", columns, getDataRows, rowClick, false, "ADVANCED_SEARCH_OPENBIS");
+			return dataGrid;
+	}
+	
 }
\ No newline at end of file