diff --git a/servers/slapd/backend.c b/servers/slapd/backend.c
index b003354219566b2c49ee8321537d4f698eef2960..10320083539bce051c684869cd3659fb2bb649dc 100644
--- a/servers/slapd/backend.c
+++ b/servers/slapd/backend.c
@@ -762,7 +762,7 @@ be_shadow_update( Operation *op )
 	/* This assumes that all internal ops (connid <= -1000) on a syncrepl
 	 * database are syncrepl operations.
 	 */
-	return (( SLAP_SYNC_SHADOW( op->o_bd ) && op->o_connid <= -1000 ) ||
+	return ( ( SLAP_SYNC_SHADOW( op->o_bd ) && SLAPD_SYNC_IS_SYNCCONN( op->o_connid ) ) ||
 		( SLAP_SHADOW( op->o_bd ) && be_isupdate_dn( op->o_bd, &op->o_ndn ) ) );
 }
 
diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c
index 2f426d6106252d73aea57bf97d7e2c2f6479347b..7f8331f5329875b6bc8b486f7377b5f00383ac7b 100644
--- a/servers/slapd/connection.c
+++ b/servers/slapd/connection.c
@@ -48,7 +48,7 @@ static ldap_pvt_thread_mutex_t connections_mutex;
 static Connection *connections = NULL;
 
 static ldap_pvt_thread_mutex_t conn_nextid_mutex;
-static unsigned long conn_nextid = 0;
+static unsigned long conn_nextid = SLAPD_SYNC_SYNCCONN_OFFSET;
 
 static const char conn_lost_str[] = "connection lost";
 
diff --git a/servers/slapd/slap.h b/servers/slapd/slap.h
index 6015dbf8377bf6ccd76be9b2204e7bef1e8a3741..076b898a5b6ac60b4f2434d98939a6109bc3ac57 100644
--- a/servers/slapd/slap.h
+++ b/servers/slapd/slap.h
@@ -1703,6 +1703,13 @@ struct syncinfo_s;
 
 #define SLAP_SYNC_RID_MAX	999
 #define SLAP_SYNC_SID_MAX	4095	/* based on liblutil/csn.c field width */
+
+/* fake conn connid constructed as rid; real connids start
+ * at SLAPD_SYNC_CONN_OFFSET */
+#define SLAPD_SYNC_SYNCCONN_OFFSET (SLAP_SYNC_RID_MAX + 1)
+#define SLAPD_SYNC_IS_SYNCCONN(connid) ((connid) < SLAPD_SYNC_SYNCCONN_OFFSET)
+#define SLAPD_SYNC_RID2SYNCCONN(rid) (rid)
+
 #define SLAP_SYNCUUID_SET_SIZE 256
 
 struct sync_cookie {
diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c
index 414ab32506e4f41169fbbf79df0c18ea53357073..a9b3d7150bf5231a4ea035c4845da4cadfe1395c 100644
--- a/servers/slapd/syncrepl.c
+++ b/servers/slapd/syncrepl.c
@@ -1354,7 +1354,7 @@ do_syncrepl(
 	connection_fake_init( &conn, &opbuf, ctx );
 	op = &opbuf.ob_op;
 	/* o_connids must be unique for slap_graduate_commit_csn */
-	op->o_connid = -1000 - si->si_rid;
+	op->o_connid = SLAPD_SYNC_RID2SYNCCONN(si->si_rid);
 
 	op->o_managedsait = SLAP_CONTROL_NONCRITICAL;
 	be = si->si_be;
diff --git a/tests/data/monitor1.out b/tests/data/monitor1.out
index 06beecc8911a140cd8a3e8e5d48cb4b6c450fd7c..59192485ae1d9a72c9738188166e0b725bc61f30 100644
--- a/tests/data/monitor1.out
+++ b/tests/data/monitor1.out
@@ -1,4 +1,4 @@
-dn: cn=Connection 1,cn=Connections,cn=Monitor
+dn: cn=Connection 1001,cn=Connections,cn=Monitor
 structuralObjectClass: monitorConnection
 monitorConnectionProtocol: 3
 monitorConnectionOpsReceived: 2
@@ -11,7 +11,7 @@ monitorConnectionWrite: 0
 monitorConnectionMask: rx
 monitorConnectionListener: ldap://localhost:@PORT1@/
 monitorConnectionLocalAddress: IP=127.0.0.1:@PORT1@
-entryDN: cn=Connection 1,cn=Connections,cn=Monitor
+entryDN: cn=Connection 1001,cn=Connections,cn=Monitor
 
 dn: cn=Connections,cn=Monitor
 structuralObjectClass: monitorContainer