diff --git a/servers/slapd/backend.c b/servers/slapd/backend.c
index cac82703390e3f06f4984a4f7fcc2fcc621e95ea..2707e2633d8798861efe5f69e5b6cc7653a46cd2 100644
--- a/servers/slapd/backend.c
+++ b/servers/slapd/backend.c
@@ -366,16 +366,16 @@ select_backend( char * dn )
 
 	dnlen = strlen( dn );
 	for ( i = 0; i < nbackends; i++ ) {
-		for ( j = 0; backends[i].be_suffix != NULL &&
-		    backends[i].be_suffix[j] != NULL; j++ )
+		for ( j = 0; backends[i].be_nsuffix != NULL &&
+		    backends[i].be_nsuffix[j] != NULL; j++ )
 		{
-			len = strlen( backends[i].be_suffix[j] );
+			len = strlen( backends[i].be_nsuffix[j] );
 
 			if ( len > dnlen ) {
 				continue;
 			}
 
-			if ( strcmp( backends[i].be_suffix[j],
+			if ( strcmp( backends[i].be_nsuffix[j],
 			    dn + (dnlen - len) ) == 0 ) {
 				return( &backends[i] );
 			}
@@ -427,8 +427,8 @@ be_issuffix(
 {
 	int	i;
 
-	for ( i = 0; be->be_suffix != NULL && be->be_suffix[i] != NULL; i++ ) {
-		if ( strcmp( be->be_suffix[i], suffix ) == 0 ) {
+	for ( i = 0; be->be_nsuffix != NULL && be->be_nsuffix[i] != NULL; i++ ) {
+		if ( strcmp( be->be_nsuffix[i], suffix ) == 0 ) {
 			return( 1 );
 		}
 	}
diff --git a/servers/slapd/config.c b/servers/slapd/config.c
index 100400e9f3ae88030a917c35fc85762412fc3c32..af5f0ee5a5fbb3e22e2cbaa4b18e9c3e738fab66 100644
--- a/servers/slapd/config.c
+++ b/servers/slapd/config.c
@@ -179,8 +179,10 @@ read_config( char *fname )
 				    fname, lineno, 0 );
 			} else {
 				char *dn = ch_strdup( cargv[1] );
-				(void) dn_normalize_case( dn );
+				(void) dn_normalize( dn );
 				charray_add( &be->be_suffix, dn );
+				(void) dn_upcase( dn );
+				charray_add( &be->be_nsuffix, dn );
 				free( dn );
 			}
 
diff --git a/servers/slapd/slap.h b/servers/slapd/slap.h
index 10cd62fabcd70177c38577e1ea532ad9a8e2c15a..7ce8353259c9159d979ecfb4afc71e8e7d507fac 100644
--- a/servers/slapd/slap.h
+++ b/servers/slapd/slap.h
@@ -255,6 +255,7 @@ struct backend_db {
 
 	/* these should be renamed from be_ to bd_ */
 	char	**be_suffix;	/* the DN suffixes of data in this backend */
+	char	**be_nsuffix;	/* the normalized DN suffixes in this backend */
 	char    **be_suffixAlias;       /* the DN suffix aliases of data in this backend */
 	char	*be_root_dn;	/* the magic "root" dn for this db 	*/
 	char	*be_root_ndn;	/* the magic "root" normalized dn for this db	*/