cx->rc = bdb_idl_cache_get(cx->bdb, cx->db, &cx->key, ids);
                        if ( cx->rc == LDAP_SUCCESS ) {
                                if ( cx->depth ) {
+                                       bdb_idl_delete( cx->tmp, cx->id );      /* ITS#6983, drop our own ID */
                                        bdb_idl_append( cx->ids, cx->tmp );
                                        cx->need_sort = 1;
                                }
 
 #define bdb_idl_next                           BDB_SYMBOL(idl_next)
 #define bdb_idl_search                         BDB_SYMBOL(idl_search)
 #define bdb_idl_insert                         BDB_SYMBOL(idl_insert)
+#define bdb_idl_delete                         BDB_SYMBOL(idl_delete)
 #define bdb_idl_intersection           BDB_SYMBOL(idl_intersection)
 #define bdb_idl_union                          BDB_SYMBOL(idl_union)
 #define bdb_idl_sort                           BDB_SYMBOL(idl_sort)
        int                     get_flag );
 
 int bdb_idl_insert( ID *ids, ID id );
+int bdb_idl_delete( ID *ids, ID id );
 
 int bdb_idl_insert_key(
        BackendDB *be,