diff --git a/src/main/java/org/olat/admin/user/UserSearchController.java b/src/main/java/org/olat/admin/user/UserSearchController.java
index 6b3f20e493aaabb7c1a2da881403bcff274e1cc5..6645a8946916a763b1e0b36be245e4549060937c 100644
--- a/src/main/java/org/olat/admin/user/UserSearchController.java
+++ b/src/main/java/org/olat/admin/user/UserSearchController.java
@@ -246,27 +246,29 @@ public class UserSearchController extends BasicController {
 				}
 			}
 		} else if (source == autocompleterC) {
-			EntriesChosenEvent ece = (EntriesChosenEvent)event;
-			List<String> res = ece.getEntries();
-			// if we get the event, we have a result or an incorrect selection see OLAT-5114 -> check for empty
-			String mySel = res.isEmpty() ? null : (String) res.get(0);
-			if (( mySel == null) || mySel.trim().equals("")) {
-				getWindowControl().setWarning(translate("error.search.form.notempty"));
-				return;
-			}
-			Long key = -1l; // default not found
-			try {
-				key = Long.valueOf(mySel);				
-				if (key > 0) {
-					Identity chosenIdent = BaseSecurityManager.getInstance().loadIdentityByKey(key);
-					// No need to check for null, exception is thrown when identity does not exist which really 
-					// should not happen at all. 
-					// Tell that an identity has been chosen
-					fireEvent(ureq, new SingleIdentityChosenEvent(chosenIdent));
+			if(event instanceof EntriesChosenEvent) {
+				EntriesChosenEvent ece = (EntriesChosenEvent)event;
+				List<String> res = ece.getEntries();
+				// if we get the event, we have a result or an incorrect selection see OLAT-5114 -> check for empty
+				String mySel = res.isEmpty() ? null : (String) res.get(0);
+				if (( mySel == null) || mySel.trim().equals("")) {
+					getWindowControl().setWarning(translate("error.search.form.notempty"));
+					return;
+				}
+				Long key = -1l; // default not found
+				try {
+					key = Long.valueOf(mySel);				
+					if (key > 0) {
+						Identity chosenIdent = BaseSecurityManager.getInstance().loadIdentityByKey(key);
+						// No need to check for null, exception is thrown when identity does not exist which really 
+						// should not happen at all. 
+						// Tell that an identity has been chosen
+						fireEvent(ureq, new SingleIdentityChosenEvent(chosenIdent));
+					}
+				} catch (NumberFormatException e) {
+					getWindowControl().setWarning(translate("error.no.user.found"));
+					return;									
 				}
-			} catch (NumberFormatException e) {
-				getWindowControl().setWarning(translate("error.no.user.found"));
-				return;									
 			}
 		} else if (source == searchform) {
 			if (event == Event.DONE_EVENT) {
diff --git a/src/main/java/org/olat/core/gui/components/table/TableController.java b/src/main/java/org/olat/core/gui/components/table/TableController.java
index 1655135116ea8dd567a7d58a253df776654dbf0d..75175130bfafb6347b554feb23c57a847b10d169 100644
--- a/src/main/java/org/olat/core/gui/components/table/TableController.java
+++ b/src/main/java/org/olat/core/gui/components/table/TableController.java
@@ -44,6 +44,7 @@ import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.gui.control.generic.ajax.autocompletion.AutoCompleterController;
+import org.olat.core.gui.control.generic.ajax.autocompletion.EmptyChosenEvent;
 import org.olat.core.gui.control.generic.ajax.autocompletion.EntriesChosenEvent;
 import org.olat.core.gui.control.generic.ajax.autocompletion.ListProvider;
 import org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowController;
@@ -141,7 +142,7 @@ public class TableController extends BasicController {
 
 	private boolean tablePrefsInitialized = false;
 	private CloseableCalloutWindowController cmc;
-	private Controller tableSearchController;
+	private AutoCompleterController tableSearchController;
 	private TableSort tableSort;
 
 	private Link resetLink;
@@ -296,11 +297,12 @@ public class TableController extends BasicController {
 		}
 	}
 
-	private Controller createTableSearchController(final UserRequest ureq, final WindowControl wControl) {
+	private AutoCompleterController createTableSearchController(final UserRequest ureq, final WindowControl wControl) {
 		ListProvider genericProvider = new TableListProvider(table);
 		removeAsListenerAndDispose(tableSearchController);
 		tableSearchController = new AutoCompleterController(ureq, wControl, genericProvider, null, false, 60, 3, translate("table.filter.label"));
-		listenTo(tableSearchController); // TODO:CG 02.09.2010 Test Tablesearch Performance, remove
+		tableSearchController.setEmptyAsReset(true);
+		listenTo(tableSearchController);
 		return tableSearchController;
 	}
 
@@ -414,7 +416,9 @@ public class TableController extends BasicController {
 			  // reset filter search filter in modelChanged
 				modelChanged();
 			}
-		} 
+		}  else if(event instanceof EmptyChosenEvent) {
+			modelChanged(true);
+		}
 	}
 	
 	public int getRowCount() {
diff --git a/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/AutoCompleterController.java b/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/AutoCompleterController.java
index 867bd28b21380ce5068b630e02beeddd2a332768..ddad6227a9381ddfba3841fab8f094056451ea40 100644
--- a/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/AutoCompleterController.java
+++ b/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/AutoCompleterController.java
@@ -36,7 +36,6 @@ import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.htmlheader.jscss.CustomJSComponent;
 import org.olat.core.gui.components.velocity.VelocityContainer;
-import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
@@ -72,6 +71,7 @@ public class AutoCompleterController extends BasicController {
 	private Mapper mapper;
 	private final ListProvider gprovider;
 	private final String noResults;
+	private boolean emptyAsReset;
 	
 	private String datastoreName;
 	private String comboboxName;
@@ -133,12 +133,21 @@ public class AutoCompleterController extends BasicController {
 		putInitialPanel(myContent);
 	}
 
+	public boolean isEmptyAsReset() {
+		return emptyAsReset;
+	}
+
+	public void setEmptyAsReset(boolean emptyAsReset) {
+		this.emptyAsReset = emptyAsReset;
+	}
+
 	/**
 	 * This dispatches component events...
 	 * 
 	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
 	 *      org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
 	 */
+	@Override
 	public void event(UserRequest ureq, Component source, Event event) {
 		if (source == myContent) {
 			if (event.getCommand().equals(COMMAND_SELECT)) {
@@ -153,6 +162,12 @@ public class AutoCompleterController extends BasicController {
 						logError("Auto complete JS code must always send 'key' or the autocomplete parameter!", null);						
 						getWindowControl().setError(translate("autocomplete.error"));
 						return;
+					} else if (searchValue.equals("")) {
+						if(!isEmptyAsReset()) {
+							getWindowControl().setWarning(translate("autocomplete.not.enough.chars"));
+						}
+						fireEvent(ureq, new EmptyChosenEvent());
+						return;
 					} else if (searchValue.equals("") || searchValue.length() < 3) {
 						getWindowControl().setWarning(translate("autocomplete.not.enough.chars"));
 						return;
@@ -187,19 +202,7 @@ public class AutoCompleterController extends BasicController {
 		}
 	}
 
-	/**
-	 * This dispatches controller events...
-	 * 
-	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
-	 *      org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event)
-	 */
-	public void event(UserRequest ureq, Controller source, Event event) {
-		// Nothing to dispatch
-	}
-
-	/**
-	 * @see org.olat.core.gui.control.DefaultController#doDispose()
-	 */
+	@Override
 	protected void doDispose() {
 		// Cleanup javascript objects on browser side by triggering dispose
 		// function
diff --git a/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/EmptyChosenEvent.java b/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/EmptyChosenEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..219682c37b7109238311c21e2ea98fdaf083d119
--- /dev/null
+++ b/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/EmptyChosenEvent.java
@@ -0,0 +1,37 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.core.gui.control.generic.ajax.autocompletion;
+
+import org.olat.core.gui.control.Event;
+
+/**
+ * 
+ * Initial date: 14.01.2015<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class EmptyChosenEvent extends Event {
+
+	private static final long serialVersionUID = -7054150729828549832L;
+
+	public EmptyChosenEvent() {
+		super("emptyentries");
+	}
+}