diff --git a/servers/slapd/back-mdb/dn2id.c b/servers/slapd/back-mdb/dn2id.c
index 175c4b44d1138ae1d9fa11a6cf1db0f8a37dbb28..a1ad917b8f1dead67f223fc4429f02908b638566 100644
--- a/servers/slapd/back-mdb/dn2id.c
+++ b/servers/slapd/back-mdb/dn2id.c
@@ -190,11 +190,14 @@ mdb_dn2id_add(
 	rc = mdb_cursor_put( mcp, &key, &data, MDB_NODUPDATA );
 
 	if (rc == 0) {
+		int flag = MDB_NODUPDATA;
 		nid = e->e_id;
 		memcpy( ptr, &pid, sizeof( ID ));
 		d->nrdnlen[0] ^= 0x80;
 
-		rc = mdb_cursor_put( mcd, &key, &data, MDB_NODUPDATA|MDB_APPEND );
+		if (slapMode & SLAP_TOOL_MODE)
+			flag |= MDB_APPEND;
+		rc = mdb_cursor_put( mcd, &key, &data, flag );
 	}
 
 fail: