Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.cpp	(revision 1986)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.cpp	(revision 1988)
@@ -1119,6 +1119,6 @@
       for(auto field : fileInField) 
       {
+        field->sendFieldToInputFileServer() ;
         field->connectToServerInput(garbageCollector) ; // connect the field to server filter
-        field->sendFieldToInputFileServer() ;
         fileInFields_.push_back(field) ;
       }
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/field.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/field.cpp	(revision 1986)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/field.cpp	(revision 1988)
@@ -777,5 +777,5 @@
         // new
         
-        std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = grid->buildTransformationGraph(gc, gridSrc, detectMissingValues, defaultValue, newGrid) ;
+        std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = grid->buildTransformationGraph(gc, false,  gridSrc, detectMissingValues, defaultValue, newGrid) ;
         lastFilter->connectOutput(filters.first, 0);
         lastFilter = filters.second;
@@ -827,8 +827,12 @@
          grid_->solveElementsRefInheritance() ;
          if (fileIn_->isClientSide()) fileIn_->readFieldAttributesMetaData(this);
-         grid_->completeGrid(); // grid generation, to be checked
+         CGrid* newGrid ;
+         std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = grid_->buildTransformationGraph(gc, true, nullptr, detectMissingValues, defaultValue, newGrid) ;
+         grid_ = newGrid ;
+         grid_ref=grid_->getId() ; // for server 
+         //grid_->completeGrid(); // grid generation, to be checked
          if (fileIn_->isClientSide()) fileIn_->readFieldAttributesValues(this);
          grid_->checkElementsAttributes() ;
-         grid_->solveDomainAxisBaseRef();
+//         grid_->solveDomainAxisBaseRef();
          // probably in future tag grid incomplete if coming from a reading
          instantDataFilter=inputFilter ;
@@ -845,5 +849,5 @@
         grid_->solveElementsRefInheritance() ;
         CGrid* newGrid ;
-        std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = grid_->buildTransformationGraph(gc, nullptr, detectMissingValues, defaultValue, newGrid) ;
+        std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = grid_->buildTransformationGraph(gc, true, nullptr, detectMissingValues, defaultValue, newGrid) ;
         grid_ = newGrid ;
         grid_ref=grid_->getId() ; // for server 
@@ -1638,5 +1642,6 @@
     CContext::getCurrent()->sendContextToFileServer(client);
     getRelFile()->sendFileToFileServer(client);
-    grid_->sendGridToFileServer(client);
+    sentGrid_ = grid_-> duplicateSentGrid() ;
+    sentGrid_->sendGridToFileServer(client);
     read_access=true ; // not the best solution, but on server side, the field must be a starting point of the workflow
                        // must be replace by a better solution when implementing filters for reading and send to client
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.cpp	(revision 1986)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.cpp	(revision 1988)
@@ -176,7 +176,7 @@
 
       }
-
+      
  //     grid->solveElementsRefInheritance(true);
-
+      grid->computeElements() ;
       return grid;
    }
@@ -1905,5 +1905,5 @@
 
   std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > 
-  CGrid::buildTransformationGraph(CGarbageCollector& gc, CGrid* gridSrc, double detectMissingValues, double defaultValue, CGrid*& newGrid)
+  CGrid::buildTransformationGraph(CGarbageCollector& gc, bool isSource, CGrid* gridSrc, double detectMissingValues, double defaultValue, CGrid*& newGrid)
   TRY
   {
@@ -1982,6 +1982,6 @@
             transformationPath.removeNextTransform() ;
             dstDomain->setTransformationPaths(transformationPath) ;
-            newGrid->addDomain(dstDomain->getId()) ;
           }
+          newGrid->addDomain(dstDomain->getId()) ;
           algo = dstDomain->getTransformationAlgorithm() ;
         }
@@ -2009,6 +2009,6 @@
             transformationPath.removeNextTransform() ;
             dstAxis->setTransformationPaths(transformationPath) ;
-            newGrid->addAxis(dstAxis->getId()) ;
           }
+          newGrid->addAxis(dstAxis->getId()) ;
           algo = dstAxis->getTransformationAlgorithm() ;
         }
@@ -2036,6 +2036,6 @@
             transformationPath.removeNextTransform() ;
             dstScalar->setTransformationPaths(transformationPath) ;
-            newGrid->addScalar(dstScalar->getId()) ;
           }
+          newGrid->addScalar(dstScalar->getId()) ;
           algo = dstScalar->getTransformationAlgorithm() ;          
         }
@@ -2098,10 +2098,13 @@
     if (hadTransform)
     {
-      shared_ptr<CTransformFilter> transformFilter = shared_ptr<CTransformFilter>(new CTransformFilter(gc, algo, dimBefore, dimAfter, detectMissingValues, defaultValue)) ;
-      outputFilter->connectOutput(transformFilter,0) ;
-      outputFilter = transformFilter ;
+      if (!isSource)
+      {
+        shared_ptr<CTransformFilter> transformFilter = shared_ptr<CTransformFilter>(new CTransformFilter(gc, algo, dimBefore, dimAfter, detectMissingValues, defaultValue)) ;
+        outputFilter->connectOutput(transformFilter,0) ;
+        outputFilter = transformFilter ;
+      }
 
       gridSrc=newGrid ;
-      pair<shared_ptr<CFilter>, shared_ptr<CFilter> > filters = gridSrc->buildTransformationGraph(gc, gridSrc, detectMissingValues, defaultValue, newGrid) ;
+      pair<shared_ptr<CFilter>, shared_ptr<CFilter> > filters = gridSrc->buildTransformationGraph(gc, isSource, gridSrc, detectMissingValues, defaultValue, newGrid) ;
       outputFilter->connectOutput(filters.first,0) ;
       outputFilter=filters.second ;
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.hpp	(revision 1986)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/node/grid.hpp	(revision 1988)
@@ -236,5 +236,5 @@
          void setGenerated();
          void setTransformationAlgorithms();
-         pair<shared_ptr<CFilter>, shared_ptr<CFilter> > buildTransformationGraph(CGarbageCollector& gc, CGrid* gridSrc, double detectMissingValues,
+         pair<shared_ptr<CFilter>, shared_ptr<CFilter> > buildTransformationGraph(CGarbageCollector& gc, bool isSource, CGrid* gridSrc, double detectMissingValues,
                                                                                   double defaultValue, CGrid*& newGrid) ;
       private:
