diff --git a/CHANGES b/CHANGES
index 5756c73862f42fda72a32be7fa28da320b3b7cd9..4ba2a5c0cb243796c621c0557c486a0bfafdf34c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,7 @@ OpenLDAP 2.4.12 Engineering
 	Fixed slapd-meta quarantine behavior (ITS#5592)
 	Fixed slapd-sql freeing of connection (ITS#5607)
 	Fixed slapo-constraint string termination (ITS#5609)
+	Fixed slapo-memberof internal operations DN (ITS#5622)
 	Fixed slapo-rwm callback cleanup (ITS#5601)
 	Build Environment
 		Fixed ODBC library detection (ITS#5602)
diff --git a/servers/slapd/overlays/memberof.c b/servers/slapd/overlays/memberof.c
index f289b82470b3f53e323b56bf132dbf8ff34252c0..72b29ed8dfeb5e43a1d7761b764dbd04dc12937e 100644
--- a/servers/slapd/overlays/memberof.c
+++ b/servers/slapd/overlays/memberof.c
@@ -571,7 +571,7 @@ memberof_op_add( Operation *op, SlapReply *rs )
 			&& is_entry_objectclass_or_sub( op->ora_e, mo->mo_oc_group ) )
 	{
 		op->o_dn = op->o_bd->be_rootdn;
-		op->o_dn = op->o_bd->be_rootndn;
+		op->o_ndn = op->o_bd->be_rootndn;
 		op->o_bd->bd_info = (BackendInfo *)on->on_info;
 
 		for ( ap = &op->ora_e->e_attrs; *ap; ) {
@@ -805,7 +805,7 @@ memberof_op_modify( Operation *op, SlapReply *rs )
 			BerVarray	vals = NULL;
 
 			op->o_dn = op->o_bd->be_rootdn;
-			op->o_dn = op->o_bd->be_rootndn;
+			op->o_ndn = op->o_bd->be_rootndn;
 			op->o_bd->bd_info = (BackendInfo *)on->on_info;
 			rc = backend_attribute( op, NULL, &op->o_req_ndn,
 					mo->mo_ad_member, &vals, ACL_READ );
@@ -820,7 +820,7 @@ memberof_op_modify( Operation *op, SlapReply *rs )
 				&& !get_relax( op ) )
 		{
 			op->o_dn = op->o_bd->be_rootdn;
-			op->o_dn = op->o_bd->be_rootndn;
+			op->o_ndn = op->o_bd->be_rootndn;
 			op->o_bd->bd_info = (BackendInfo *)on->on_info;
 		
 			assert( op->orm_modlist != NULL );