Operation *op;
        BackendDB be;
        int rc;
+       OpExtra oex;
 
        op = &opbuf.ob_op;
        *op = *so->s_op;
        be.be_flags |= SLAP_DBFLAG_OVERLAY;
        op->o_bd = &be;
        LDAP_SLIST_FIRST(&op->o_extra) = NULL;
+
+       /* Let syncprov_operational know it's us */
+       oex.oe_key = (void *)syncprov_qtask;
+       LDAP_SLIST_INSERT_HEAD(&op->o_extra, &oex, oe_next);
+
        op->o_callback = NULL;
 
        rc = syncprov_qplay( op, so );
 {
        slap_overinst           *on = (slap_overinst *)op->o_bd->bd_info;
        syncprov_info_t         *si = (syncprov_info_t *)on->on_bi.bi_private;
+       OpExtra         *oex;
+
+       /* short-circuit, don't want backends handling this */
+       LDAP_SLIST_FOREACH(oex, &op->o_extra, oe_next) {
+               if ( oex->oe_key == (void *)syncprov_qtask )
+                       return LDAP_SUCCESS;
+       }
 
        /* This prevents generating unnecessarily; frontend will strip
         * any statically stored copy.