diff --git a/storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp b/storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp
index 0fdce8b5166fbc391b5d7e89e0ae6b7ddedd440d..674b8bf0669049b927099459da0a5421ef3940a5 100644
--- a/storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp
+++ b/storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp
@@ -455,6 +455,12 @@ private:
   void recompute_version_info(Uint32 type, Uint32 version);
   void execNODE_VERSION_REP(Signal* signal);
   void sendApiVersionRep(Signal* signal, NodeRecPtr nodePtr);
+  void sendVersionedDb(NodeReceiverGroup rg,
+                       GlobalSignalNumber gsn, 
+                       Signal* signal, 
+                       Uint32 length, 
+                       JobBufferLevel jbuf,
+                       Uint32 minversion);
 };
 
 #endif
diff --git a/storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp b/storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
index f4a4bbbb400263ec4fde1388bbe164fd7cacdc4c..317cc870873f3d1768504521eca130a49019be79 100644
--- a/storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
+++ b/storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
@@ -2786,30 +2786,12 @@ void Qmgr::execAPI_REGREQ(Signal* signal)
     
     recompute_version_info(type, version);
     
-    if (info.m_type[NodeInfo::DB].m_min_version >= NDBD_NODE_VERSION_REP)
-    {
-      jam();
-      NodeReceiverGroup rg(QMGR, c_clusterNodes);
-      rg.m_nodes.clear(getOwnNodeId());
-      signal->theData[0] = apiNodePtr.i;
-      signal->theData[1] = version;
-      sendSignal(rg, GSN_NODE_VERSION_REP, signal, 2, JBB);
-    }
-    else
-    {
-      Uint32 i = 0;
-      while((i = c_clusterNodes.find(i + 1)) != NdbNodeBitmask::NotFound)
-      {
-	jam();
-	if (i == getOwnNodeId())
-	  continue;
-	if (getNodeInfo(i).m_version >= NDBD_NODE_VERSION_REP)
-	{
-	  jam();
-	  sendSignal(calcQmgrBlockRef(i), GSN_NODE_VERSION_REP, signal, 2,JBB);
-	}
-      }
-    }
+    signal->theData[0] = apiNodePtr.i;
+    signal->theData[1] = version;
+    NodeReceiverGroup rg(QMGR, c_clusterNodes);
+    rg.m_nodes.clear(getOwnNodeId());
+    sendVersionedDb(rg, GSN_NODE_VERSION_REP, signal, 2, JBB, 
+		    NDBD_NODE_VERSION_REP);
     
     signal->theData[0] = apiNodePtr.i;
     EXECUTE_DIRECT(NDBCNTR, GSN_API_START_REP, signal, 1);
@@ -2817,6 +2799,38 @@ void Qmgr::execAPI_REGREQ(Signal* signal)
   return;
 }//Qmgr::execAPI_REGREQ()
 
+void
+Qmgr::sendVersionedDb(NodeReceiverGroup rg,
+		      GlobalSignalNumber gsn, 
+		      Signal* signal, 
+		      Uint32 length, 
+		      JobBufferLevel jbuf,
+		      Uint32 minversion)
+{
+  jam();
+  NodeVersionInfo info = getNodeVersionInfo();
+  if (info.m_type[NodeInfo::DB].m_min_version >= minversion)
+  {
+    jam();
+    sendSignal(rg, gsn, signal, length, jbuf);
+  }
+  else
+  {
+    jam();
+    Uint32 i = 0, cnt = 0;
+    while((i = rg.m_nodes.find(i + 1)) != NodeBitmask::NotFound)
+    {
+      jam();
+      if (getNodeInfo(i).m_version >= minversion)
+      {
+	jam();
+	cnt++;
+	sendSignal(numberToRef(rg.m_block, i), gsn, signal, length, jbuf);
+      }
+    }
+    ndbassert(cnt < rg.m_nodes.count());
+  }
+}
 
 void
 Qmgr::execAPI_VERSION_REQ(Signal * signal) {