diff --git a/CHANGES b/CHANGES
index d71e3a594e91c012f0e562ea79b37445cab383b3..35f3a4866622f1c38ea26cb6d76e7fae8851c1d2 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,9 +3,10 @@ OpenLDAP 2.4 Change Log
 OpenLDAP 2.4.20 Engineering
 	Fixed libldap uninitialized return value (ITS#6355)
 	Fixed liblutil constant (ITS#5909)
+	Added slapd handling of hex server IDs (ITS#6297)
 	Fixed slapd inclusion of ac/unistd.h (ITS#6342)
 	Fixed slapd debug handling of LDAP_DEBUG_ANY (ITS#6324)
-	Fixed slapd termination for one level dns (ITS#6338)
+	Fixed slapd termination for one level DNs (ITS#6338)
 	Fixed slapd-bdb cache corruption (ITS#6341)
 	Fixed slapd-ldap leak (ITS#6326)
 	Fixed slapd-relay bind segfault (ITS#6337)
@@ -15,6 +16,8 @@ OpenLDAP 2.4.20 Engineering
 		Fixed slapd MAXPATHLEN handling (ITS#6342)
 	Documentation
 		ldap_get_dn(3) typos (ITS#5366)
+		slapd.conf(5) note hex server IDs (ITS#6297)
+		slapd-config(5) note hex server IDs (ITS#6297)
 
 OpenLDAP 2.4.19 Release (2009/10/06)
 	Fixed client tools with null timeouts (ITS#6282)
diff --git a/doc/man/man5/slapd-config.5 b/doc/man/man5/slapd-config.5
index ffbf6f06550af60a2e7b717ab9a688830bb6b9bc..a646deecefb2e575354970eb662e566c281d2b7f 100644
--- a/doc/man/man5/slapd-config.5
+++ b/doc/man/man5/slapd-config.5
@@ -723,7 +723,10 @@ property specifies the maximum security layer receive buffer
 size allowed.  0 disables security layers.  The default is 65536.
 .TP
 .B olcServerID: <integer> [<URL>]
-Specify an integer ID from 0 to 4095 for this server. These IDs are
+Specify an integer ID from 0 to 4095 for this server (limited
+to 3 hexadecimal digits).  The ID may also be specified as a
+hexadecimal ID by prefixing the value with "0x".
+These IDs are
 required when using multimaster replication and each master must have a
 unique ID. Note that this requirement also applies to separate masters
 contributing to a glued set of databases.
diff --git a/doc/man/man5/slapd.conf.5 b/doc/man/man5/slapd.conf.5
index a641d7cbebd1472a927ac8b3801a9b571b9abaa8..0ff35429e9b95152b43186ba71dd4fd058ebd07a 100644
--- a/doc/man/man5/slapd.conf.5
+++ b/doc/man/man5/slapd.conf.5
@@ -915,7 +915,8 @@ e.g. ldapi:// (and eventually IPSEC).  It is not normally used.
 .TP
 .B serverID <integer> [<URL>]
 Specify an integer ID from 0 to 4095 for this server (limited
-to 3 hexadecimal digits).
+to 3 hexadecimal digits).  The ID may also be specified as a
+hexadecimal ID by prefixing the value with "0x".
 These IDs are
 required when using multimaster replication and each master must have a
 unique ID. Note that this requirement also applies to separate masters
diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c
index e1feb5624972bb044a727e112ef10704e62aae71..76d5b853e713a3e41e18bfab4bc33385edb65d33 100644
--- a/servers/slapd/bconfig.c
+++ b/servers/slapd/bconfig.c
@@ -1784,7 +1784,8 @@ sortval_reject:
 				ServerID *si, **sip;
 				LDAPURLDesc *lud;
 				int num;
-				if ( lutil_atoi( &num, c->argv[1] ) ||
+				if (( lutil_atoi( &num, c->argv[1] ) &&	
+					lutil_atoix( &num, c->argv[1], 16 )) ||
 					num < 0 || num > SLAP_SYNC_SID_MAX )
 				{
 					snprintf( c->cr_msg, sizeof( c->cr_msg ),
@@ -1829,7 +1830,7 @@ sortval_reject:
 					BER_BVZERO( &si->si_url );
 					slap_serverID = num;
 					Debug( LDAP_DEBUG_CONFIG,
-						"%s: SID=%d\n",
+						"%s: SID=0x%03x\n",
 						c->log, slap_serverID, 0 );
 				}
 				si->si_next = NULL;
@@ -1842,7 +1843,7 @@ sortval_reject:
 					if ( l ) {
 						slap_serverID = si->si_num;
 						Debug( LDAP_DEBUG_CONFIG,
-							"%s: SID=%d (listener=%s)\n",
+							"%s: SID=0x%03x (listener=%s)\n",
 							c->log, slap_serverID,
 							l->sl_url.bv_val );
 					}