diff --git a/CHANGES b/CHANGES
index 4ecf01f7cac7f809e92a1ad4177ea5f9666dbc06..1abbd0c3ec420ed89d12951e34fd6f431c90a9e5 100644
--- a/CHANGES
+++ b/CHANGES
@@ -24,6 +24,7 @@ OpenLDAP 2.4.14 Engineering
 	Fixed slapd-bdb/hdb dncachesize handling (ITS#5860)
 	Fixed slapd-bdb/hdb RFC4528 control support (ITS#5861)
 	Fixed slapd-bdb/hdb trickle task usage (ITS#5864)
+	Fixed slapd-hdb idlcache with empty suffix (ITS#5859)
 	Fixed slapd-ldap idassert-bind validity checking (ITS#5863)
 	Fixed slapd-ldif numerous bugs (ITS#5408)
 	Fixed slapd-ldif rename on same DN (ITS#5319)
diff --git a/servers/slapd/back-bdb/dn2id.c b/servers/slapd/back-bdb/dn2id.c
index 2a927f3a4f5e32da6d3467e12856870c0628f02c..7a022db165fcc72d51d6ca613b4dbe2dd6815a85 100644
--- a/servers/slapd/back-bdb/dn2id.c
+++ b/servers/slapd/back-bdb/dn2id.c
@@ -623,6 +623,11 @@ hdb_dn2id_add(
 				tmp[1] = eip->bei_id;
 				bdb_idl_cache_add_id( bdb, db, &key, e->e_id );
 			}
+			/* Handle DB with empty suffix */
+			if ( !op->o_bd->be_suffix[0].bv_len && eip ) {
+				tmp[1] = eip->bei_id;
+				bdb_idl_cache_add_id( bdb, db, &key, e->e_id );
+			}
 		}
 	}
 
@@ -722,6 +727,11 @@ func_leave:
 				tmp[1] = eip->bei_id;
 				bdb_idl_cache_del_id( bdb, db, &key, e->e_id );
 			}
+			/* Handle DB with empty suffix */
+			if ( !op->o_bd->be_suffix[0].bv_len && eip ) {
+				tmp[1] = eip->bei_id;
+				bdb_idl_cache_del_id( bdb, db, &key, e->e_id );
+			}
 		}
 	}
 	Debug( LDAP_DEBUG_TRACE, "<= hdb_dn2id_delete 0x%lx: %d\n", e->e_id, rc, 0 );