diff --git a/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapDeltaUserGroupBuilder.java b/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapDeltaUserGroupBuilder.java
index c297f68..2852b32 100644
--- a/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapDeltaUserGroupBuilder.java
+++ b/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapDeltaUserGroupBuilder.java
@@ -901,7 +901,7 @@
 						.append(groupDN).append(")");
 			}
 			filter.append("))");
-			groupFilter += config.escapeSearchFilter(filter.toString());
+			groupFilter += filter;
 
 			LOG.info("extendedAllGroupsSearchFilter = " + groupFilter);
 			for (int ou=0; ou<groupSearchBase.length; ou++) {
diff --git a/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapUserGroupBuilder.java b/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapUserGroupBuilder.java
index 488aa76a..6b2648d 100644
--- a/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapUserGroupBuilder.java
+++ b/ugsync/src/main/java/org/apache/ranger/ldapusersync/process/LdapUserGroupBuilder.java
@@ -277,6 +277,7 @@
 					+ ",  ldapReferral: " + ldapReferral
 					);
 		}
+
 	}
 
 	private void closeLdapContext() throws Throwable {
@@ -809,7 +810,7 @@
 						.append(groupDN).append(")");
 			}
 			filter.append("))");
-            groupFilter += config.escapeSearchFilter(filter.toString());
+            groupFilter += filter;
 
 			LOG.debug("extendedAllGroupsSearchFilter = " + groupFilter);
 			for (String ou : groupSearchBase) {
diff --git a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
index ed07696..45eeb1b 100644
--- a/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
+++ b/ugsync/src/main/java/org/apache/ranger/unixusersync/config/UserGroupSyncConfig.java
@@ -960,33 +960,6 @@
 		return deltaSyncEnabled;
 	}
 
-	public String escapeSearchFilter(String searchFilter) {
-		StringBuilder sb = new StringBuilder();
-		for (int i = 0; i < searchFilter.length(); i++) {
-			char ch = searchFilter.charAt(i);
-			switch (ch) {
-				case '\\':
-					sb.append("\\5c");
-					break;
-				case '*':
-					sb.append("\\2a");
-					break;
-				case '(':
-					sb.append("\\28");
-					break;
-				case ')':
-					sb.append("\\29");
-					break;
-				case '\u0000':
-					sb.append("\\00");
-					break;
-				default:
-					sb.append(ch);
-			}
-		}
-		return sb.toString();
-	}
-
 	/* Used only for unit testing */
 	public void setUserSearchFilter(String filter) {
 		prop.setProperty(LGSYNC_USER_SEARCH_FILTER, filter);
