diff --git a/CHANGES b/CHANGES
index efa5da3ddcbbc3be9aa86e09a32f41ba5b0b6986..49c39d79a63cd16e99f3a4bf3cb8628eb69c749d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -51,6 +51,7 @@ OpenLDAP 2.4.24 Engineering
 	Fixed slapo-syncprov filter race condition (ITS#6708)
 	Fixed slapo-syncprov active mod race (ITS#6709)
 	Fixed slapo-syncprov to refresh if context is dirty (ITS#6710)
+	Fixed slapo-syncprov CSN updates to all replicas (ITS#6718)
 	Fixed contrib/autogroup LDAP URI with attribute filter (ITS#6536)
 	Fixed contrib/nssov to only close socket on shutdown (ITS#6676)
 	Fixed contrib/nssov multi platform support (ITS#6604)
diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c
index 7fd374f016aa7b9eecf25400710dd39479c92611..c9b5e5bd25a11664a9ac2a27ef3402a9c4093aa8 100644
--- a/servers/slapd/overlays/syncprov.c
+++ b/servers/slapd/overlays/syncprov.c
@@ -1819,17 +1819,20 @@ syncprov_op_response( Operation *op, SlapReply *rs )
 			ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock );
 
 			if ( csn_changed ) {
+				syncops *ss;
 				ldap_pvt_thread_mutex_lock( &si->si_ops_mutex );
-				have_psearches = ( si->si_ops != NULL );
-				ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
-
-				if ( have_psearches ) {
-					for ( sm = opc->smatches; sm; sm=sm->sm_next ) {
-						if ( sm->sm_op->s_op->o_abandon )
-							continue;
-						syncprov_qresp( opc, sm->sm_op, LDAP_SYNC_NEW_COOKIE );
-					}
+				for ( ss = si->si_ops; ss; ss = ss->s_next ) {
+					if ( ss->s_op->o_abandon )
+						continue;
+					/* Send the updated csn to all syncrepl consumers,
+					 * including the server from which it originated.
+					 * The syncrepl consumer and syncprov provider on
+					 * the originating server may be configured to store
+					 * their csn values in different entries.
+					 */
+					syncprov_qresp( opc, ss, LDAP_SYNC_NEW_COOKIE );
 				}
+				ldap_pvt_thread_mutex_unlock( &si->si_ops_mutex );
 			}
 			} else {
 			ldap_pvt_thread_rdwr_wunlock( &si->si_csn_rwlock );