diff --git a/servers/slapd/filter.c b/servers/slapd/filter.c
index e0fc41de3b0f74d3fdff101c7f3be0b83260eba6..60f4f0e063b8e944387fe98c1061322b1d02ba80 100644
--- a/servers/slapd/filter.c
+++ b/servers/slapd/filter.c
@@ -608,7 +608,9 @@ filter2bv_x( Operation *op, Filter *f, struct berval *fstr )
 simple:
 		value = f->f_av_value;
 		if ( f->f_av_desc->ad_type->sat_equality &&
-			( f->f_av_desc->ad_type->sat_equality->smr_usage & SLAP_MR_MUTATION_NORMALIZER )) {
+			!undef &&
+			( f->f_av_desc->ad_type->sat_equality->smr_usage & SLAP_MR_MUTATION_NORMALIZER ))
+		{
 			f->f_av_desc->ad_type->sat_equality->smr_normalize(
 				(SLAP_MR_DENORMALIZE|SLAP_MR_VALUE_OF_ASSERTION_SYNTAX),
 				NULL, NULL, &f->f_av_value, &value, op->o_tmpmemctx );