Index: XIOS/dev/dev_trunk_graph/src/filter/pass_through_filter.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/filter/pass_through_filter.cpp	(revision 2021)
+++ XIOS/dev/dev_trunk_graph/src/filter/pass_through_filter.cpp	(revision 2023)
@@ -32,10 +32,25 @@
         data[0]->graphPackage->fromFilter = -1;
       }
+
+      for(int i=0; i<this->graphPackage->filterId; i++)
+      {
+        if(  (*CWorkflowGraph::vectorOfNodes_)[i].label_field_id == this->label_field_id  
+          && (*CWorkflowGraph::vectorOfNodes_)[i].timestamp == data[0]->timestamp
+          && CXios::isClient
+          && (*CWorkflowGraph::vectorOfNodes_)[i].filter_name == "Pass through filter" )
+        {
+          data[0]->graphPackage->fromFilter = i;
+          return;
+        }  
+      }
       
       CWorkflowGraph::addNode("Pass through filter", 2, false, 1, data[0]);
+      if(CXios::isClient) (*CWorkflowGraph::vectorOfNodes_)[this->graphPackage->filterId].label_field_id = this->label_field_id;
+      CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]);
+      
       data[0]->graphPackage->currentField = this->graphPackage->inFields[0];
       std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end());
       
-      CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]);
+      
       data[0]->graphPackage->fromFilter = this->graphPackage->filterId;
         
Index: XIOS/dev/dev_trunk_graph/src/filter/pass_through_filter.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/filter/pass_through_filter.hpp	(revision 2021)
+++ XIOS/dev/dev_trunk_graph/src/filter/pass_through_filter.hpp	(revision 2023)
@@ -20,4 +20,6 @@
       CPassThroughFilter(CGarbageCollector& gc);
 
+      StdString label_field_id;
+
     protected:
       /*!
Index: XIOS/dev/dev_trunk_graph/src/filter/temporal_filter.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/filter/temporal_filter.cpp	(revision 2021)
+++ XIOS/dev/dev_trunk_graph/src/filter/temporal_filter.cpp	(revision 2023)
@@ -27,4 +27,5 @@
     , nbSamplingDates(0)
     , isFirstOperation(true)
+    , graphCycleCompleted(true)
   {
   }
@@ -32,5 +33,5 @@
   void CTemporalFilter::buildWorkflowGraph(std::vector<CDataPacketPtr> data)
   {
-    if(this->graphEnabled)
+    if(this->graphEnabled )
     {
       if(!data[0]->graphPackage)
@@ -39,8 +40,10 @@
       }
       
-      if(this->graphPackage->sourceFilterIds.size()==0)
+      //if(this->graphPackage->sourceFilterIds.size()==0)
+      if(graphCycleCompleted)
       {  
         this->graphPackage->filterId = CWorkflowGraph::getNodeSize();
         CWorkflowGraph::addNode("Temporal filter", 3, false, 0, data[0]);
+        graphCycleCompleted = false;
       }
       
@@ -105,4 +108,5 @@
         isFirstOperation = false;
         
+        graphCycleCompleted = true;
       }
     }
Index: XIOS/dev/dev_trunk_graph/src/filter/temporal_filter.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/filter/temporal_filter.hpp	(revision 2021)
+++ XIOS/dev/dev_trunk_graph/src/filter/temporal_filter.hpp	(revision 2023)
@@ -54,4 +54,5 @@
        */
       bool virtual isDataExpected(const CDate& date) const;
+      bool graphCycleCompleted;
 
     private:
Index: XIOS/dev/dev_trunk_graph/src/filter/transform_filter.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/filter/transform_filter.cpp	(revision 2021)
+++ XIOS/dev/dev_trunk_graph/src/filter/transform_filter.cpp	(revision 2023)
@@ -51,10 +51,13 @@
       packet->graphPackage->contextId = data[0]->graphPackage->contextId;          
       packet->graphPackage->currentField = data[0]->graphPackage->currentField;//this->graphPackage->inFields[0];
-      std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end());
     
       CWorkflowGraph::addNode("Spatial transform filter "+algorithm->getAlgoName(), 4, false, 1, packet);
       CWorkflowGraph::addEdge(packet->graphPackage->fromFilter, this->graphPackage->filterId, packet);
+      
+      
+      
       packet->graphPackage->fromFilter = this->graphPackage->filterId;
       packet->graphPackage->currentField = this->graphPackage->inFields[0];
+      std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end());
     }
   }
Index: XIOS/dev/dev_trunk_graph/src/node/field.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/field.cpp	(revision 2021)
+++ XIOS/dev/dev_trunk_graph/src/node/field.cpp	(revision 2023)
@@ -569,5 +569,6 @@
       if(buildGraph_)
       {
-        (*fieldRef).build_workflow_graph.set(build_workflow_graph);  
+        (*fieldRef).build_workflow_graph.set(build_workflow_graph); 
+        inputFilter->label_field_id = fieldRef->getId(); 
       }    
       else
@@ -653,5 +654,5 @@
          if (fileIn_->isClientSide()) fileIn_->readFieldAttributesMetaData(this);
          CGrid* newGrid ;
-         std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = grid_->buildTransformationGraph(gc, true, nullptr, detectMissingValues, defaultValue, newGrid, buildGraph_) ;
+         std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = grid_->buildTransformationGraph(gc, true, nullptr, detectMissingValues, defaultValue, newGrid, buildGraph_, this) ;
          grid_ = newGrid ;
          grid_ref=grid_->getId() ; // for server 
@@ -672,5 +673,5 @@
         grid_->solveElementsRefInheritance() ;
         CGrid* newGrid ;
-        std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = grid_->buildTransformationGraph(gc, true, nullptr, detectMissingValues, defaultValue, newGrid, buildGraph_) ;
+        std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = grid_->buildTransformationGraph(gc, true, nullptr, detectMissingValues, defaultValue, newGrid, buildGraph_, this) ;
         newGrid->duplicateAttributes(grid_) ; // for grid attributes (mask)
         grid_ = newGrid ;
Index: XIOS/dev/dev_trunk_graph/src/node/grid.cpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/node/grid.cpp	(revision 2021)
+++ XIOS/dev/dev_trunk_graph/src/node/grid.cpp	(revision 2023)
@@ -1700,6 +1700,9 @@
     std::shared_ptr<CFilter> inputFilter = std::shared_ptr<CPassThroughFilter>(new CPassThroughFilter(gc));
     std::shared_ptr<CFilter> outputFilter = inputFilter ;
-
-
+    /*cout<<"***************CGrid::buildTransformationGraph***************"<<field->getId()<<" CGrid::buildTransformationGraph"<<endl;
+    inputFilter->graphEnabled = true;
+    inputFilter->graphPackage = new CGraphPackage;
+    inputFilter->graphPackage->inFields.push_back(field);
+*/
     string newId ;
     if (gridSrc!=nullptr) newId = gridSrc->getId() + " --> " + this->getId()  ;
Index: XIOS/dev/dev_trunk_graph/src/transformation/domain_algorithm/domain_algorithm_reorder.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/transformation/domain_algorithm/domain_algorithm_reorder.hpp	(revision 2021)
+++ XIOS/dev/dev_trunk_graph/src/transformation/domain_algorithm/domain_algorithm_reorder.hpp	(revision 2023)
@@ -26,4 +26,5 @@
 
       static bool registerTrans();
+      virtual StdString getAlgoName() {return "\\nreorder_domain";}
 
   
Index: XIOS/dev/dev_trunk_graph/src/transformation/generic_algorithm_transformation.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/transformation/generic_algorithm_transformation.hpp	(revision 2021)
+++ XIOS/dev/dev_trunk_graph/src/transformation/generic_algorithm_transformation.hpp	(revision 2023)
@@ -42,5 +42,5 @@
     virtual bool isGenerateTransformation(void) { return false ;}
     
-    virtual StdString getAlgoName() { return "Generic algorithm transformation";}
+    virtual StdString getAlgoName() { return "\\nGeneric algorithm transformation";}
 
     virtual vector<string> getAuxFieldId(void) ;
Index: XIOS/dev/dev_trunk_graph/src/workflow_graph.hpp
===================================================================
--- XIOS/dev/dev_trunk_graph/src/workflow_graph.hpp	(revision 2021)
+++ XIOS/dev/dev_trunk_graph/src/workflow_graph.hpp	(revision 2023)
@@ -66,4 +66,5 @@
     StdString context_id;
     int context;
+    StdString label_field_id;
   };
 
