Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.cpp	(revision 1352)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.cpp	(revision 1353)
@@ -842,5 +842,5 @@
                                         CServerDistributionDescription::ServerDistributionType distType)
   {
-    std::set<CContextClient*>::iterator it;
+    std::list<CContextClient*>::iterator it;
     for (it=clients.begin(); it!=clients.end(); ++it)
     {
@@ -960,5 +960,5 @@
   void CAxis::sendNonDistributedAttributes()
   {
-    std::set<CContextClient*>::iterator it;
+    std::list<CContextClient*>::iterator it;
     for (it=clients.begin(); it!=clients.end(); ++it)
 	{
@@ -1084,5 +1084,5 @@
   {
     int ns, n, i, j, ind, nv, idx;
-    std::set<CContextClient*>::iterator it;
+    std::list<CContextClient*>::iterator it;
 
     for (it=clients.begin(); it!=clients.end(); ++it)
@@ -1441,6 +1441,10 @@
   void CAxis::setContextClient(CContextClient* contextClient)
   {
-    clients.insert(contextClient);
-  }
+    if (clientsSet.find(contextClient)==clientsSet.end())
+    {
+      clients.push_back(contextClient) ;
+      clientsSet.insert(contextClient);
+    }
+}
 
   void CAxis::parse(xml::CXMLNode & node)
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.hpp	(revision 1352)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.hpp	(revision 1353)
@@ -154,5 +154,6 @@
 
 /** Clients that have to send a domain. There can be multiple clients in case of secondary server, otherwise only one client. */
-         std::set<CContextClient*> clients;
+         std::list<CContextClient*> clients;
+         std::set<CContextClient*> clientsSet;
 
          bool isChecked;
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/domain.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/domain.cpp	(revision 1352)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/domain.cpp	(revision 1353)
@@ -2060,5 +2060,5 @@
   {
     int ns, n, i, j, ind, nv, idx;
-    std::set<CContextClient*>::iterator it;
+    std::list<CContextClient*>::iterator it;
     for (it=clients.begin(); it!=clients.end(); ++it)
     {
@@ -2108,5 +2108,5 @@
   void CDomain::sendDistributionAttributes(void)
   {
-    std::set<CContextClient*>::iterator it;
+    std::list<CContextClient*>::iterator it;
     for (it=clients.begin(); it!=clients.end(); ++it)
     {
@@ -2159,5 +2159,5 @@
   {
     int ns, n, i, j, ind, nv, idx;
-    std::set<CContextClient*>::iterator it;
+    std::list<CContextClient*>::iterator it;
     for (it=clients.begin(); it!=clients.end(); ++it)
     {
@@ -2205,5 +2205,5 @@
 
     int ns, n, i, j, ind, nv, idx;
-    std::set<CContextClient*>::iterator it;
+    std::list<CContextClient*>::iterator it;
 
     for (it=clients.begin(); it!=clients.end(); ++it)
@@ -2255,5 +2255,5 @@
 
     int ns, n, i, j, ind, nv, idx;
-    std::set<CContextClient*>::iterator it;
+    std::list<CContextClient*>::iterator it;
     for (it=clients.begin(); it!=clients.end(); ++it)
     {
@@ -2349,5 +2349,5 @@
   {
     int ns, n, i, j, ind, nv, idx;
-    std::set<CContextClient*>::iterator it;
+    std::list<CContextClient*>::iterator it;
     for (it=clients.begin(); it!=clients.end(); ++it)
     {
@@ -3109,5 +3109,9 @@
   void CDomain::setContextClient(CContextClient* contextClient)
   {
-    clients.insert(contextClient);
+    if (clientsSet.find(contextClient)==clientsSet.end())
+    {
+      clients.push_back(contextClient) ;
+      clientsSet.insert(contextClient);
+    }
   }
 
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/domain.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/domain.hpp	(revision 1352)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/domain.hpp	(revision 1353)
@@ -203,5 +203,6 @@
 
 /** Clients that have to send a domain. There can be multiple clients in case of secondary server, otherwise only one client. */
-         std::set<CContextClient*> clients;
+         std::list<CContextClient*> clients;
+         std::set<CContextClient*> clientsSet;
 
          bool doZoomByIndex_;
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/grid.cpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/grid.cpp	(revision 1352)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/grid.cpp	(revision 1353)
@@ -1348,5 +1348,5 @@
     CContext* context = CContext::getCurrent();
     storeIndex_toSrv.clear();
-    std::set<CContextClient*>::iterator it;
+    std::list<CContextClient*>::iterator it;
 
     for (it=clients.begin(); it!=clients.end(); ++it)
@@ -1413,5 +1413,5 @@
     CContext* context = CContext::getCurrent();
     storeIndex_toSrv.clear();
-    std::set<CContextClient*>::iterator it;
+    std::list<CContextClient*>::iterator it;
 
     for (it=clients.begin(); it!=clients.end(); ++it)
@@ -2508,5 +2508,9 @@
   void CGrid::setContextClient(CContextClient* contextClient)
   {
-    clients.insert(contextClient);
+    if (clientsSet.find(contextClient)==clientsSet.end())
+    {
+      clients.push_back(contextClient) ;
+      clientsSet.insert(contextClient);
+    }
     for (int i=0; i<this->getDomains().size(); i++)
     	this->getDomains()[i]->setContextClient(contextClient);
Index: /XIOS/dev/XIOS_DEV_CMIP6/src/node/grid.hpp
===================================================================
--- /XIOS/dev/XIOS_DEV_CMIP6/src/node/grid.hpp	(revision 1352)
+++ /XIOS/dev/XIOS_DEV_CMIP6/src/node/grid.hpp	(revision 1353)
@@ -304,5 +304,6 @@
 
 /** Clients that have to send a grid. There can be multiple clients in case of secondary server, otherwise only one client. */
-        std::set<CContextClient*> clients;
+        std::list<CContextClient*> clients;
+        std::set<CContextClient*> clientsSet;
 
         bool isChecked;
