Index: XIOS/dev/dev_olga/arch/arch-X64_IRENE.env
===================================================================
--- XIOS/dev/dev_olga/arch/arch-X64_IRENE.env	(revision 1653)
+++ XIOS/dev/dev_olga/arch/arch-X64_IRENE.env	(revision 1654)
@@ -1,8 +1,7 @@
 module unload netcdf-c netcdf-fortran hdf5 flavor perl hdf5 boost blitz mpi gnu
-module load gnu
-module load mpi/openmpi/2.0.2
 module load flavor/hdf5/parallel
 module load netcdf-fortran/4.4.4
 module load hdf5/1.8.20
+module load gnu
 module load boost
 module load blitz
Index: XIOS/dev/dev_olga/bld.cfg
===================================================================
--- XIOS/dev/dev_olga/bld.cfg	(revision 1653)
+++ XIOS/dev/dev_olga/bld.cfg	(revision 1654)
@@ -43,7 +43,7 @@
 bld::lib xios
 bld::target libxios.a 
-bld::target generate_fortran_interface.exe 
+#bld::target generate_fortran_interface.exe 
 #bld::target test_remap.exe
-#bld::target xios_server.exe 
+bld::target xios_server.exe 
 #bld::target test_regular.exe
 #bld::target test_xios2_cmip6.exe
Index: XIOS/dev/dev_olga/src/filter/file_server_writer_filter.cpp
===================================================================
--- XIOS/dev/dev_olga/src/filter/file_server_writer_filter.cpp	(revision 1653)
+++ XIOS/dev/dev_olga/src/filter/file_server_writer_filter.cpp	(revision 1654)
@@ -12,11 +12,9 @@
       ERROR("CFileServerWriterFilter::CFileServerWriterFilter(CField* field)",
             "The field cannot be null.");
-    filterId = InvalidableObject::count;
-    InvalidableObject::count++;
   }
 
   void CFileServerWriterFilter::onInputReady(std::vector<CDataPacketPtr> data)
   {
-    field->writeUpdateData(data[0]->data);
+    field->writeUpdateData(data[0]->data);    
   }
 
Index: XIOS/dev/dev_olga/src/filter/file_writer_filter.cpp
===================================================================
--- XIOS/dev/dev_olga/src/filter/file_writer_filter.cpp	(revision 1653)
+++ XIOS/dev/dev_olga/src/filter/file_writer_filter.cpp	(revision 1654)
@@ -7,5 +7,5 @@
 namespace xios
 {
-  CFileWriterFilter::CFileWriterFilter(CGarbageCollector& gc, CField* field)
+  CFileWriterFilter::CFileWriterFilter(CGarbageCollector& gc, CField* field, bool buildWorkflowGraph /* =false */)
     : CInputPin(gc, 1)
     , field(field)
@@ -14,6 +14,9 @@
       ERROR("CFileWriterFilter::CFileWriterFilter(CField* field)",
             "The field cannot be null.");
-    filterId = InvalidableObject::count;
-    InvalidableObject::count++;
+    if (buildWorkflowGraph)
+    {
+      filterId = InvalidableObject::count;
+      InvalidableObject::count++;
+    }
   }
 
@@ -38,4 +41,5 @@
 
     field->sendUpdateData(dataArray);
+
   }
 
Index: XIOS/dev/dev_olga/src/filter/file_writer_filter.hpp
===================================================================
--- XIOS/dev/dev_olga/src/filter/file_writer_filter.hpp	(revision 1653)
+++ XIOS/dev/dev_olga/src/filter/file_writer_filter.hpp	(revision 1654)
@@ -20,6 +20,7 @@
        * \param gc the associated garbage collector
        * \param field the associated field
+       * \param[in] buildWorkflowGraph indicates whether the workflow will be visualized
        */
-      CFileWriterFilter(CGarbageCollector& gc, CField* field);
+      CFileWriterFilter(CGarbageCollector& gc, CField* field, bool buildWorkflowGraph = false);
 
       inline StdString GetName(void) {return StdString("File writer filter");};
Index: XIOS/dev/dev_olga/src/filter/input_pin.hpp
===================================================================
--- XIOS/dev/dev_olga/src/filter/input_pin.hpp	(revision 1653)
+++ XIOS/dev/dev_olga/src/filter/input_pin.hpp	(revision 1654)
@@ -130,4 +130,5 @@
       //! Whether some triggers have been set
       bool hasTriggers;
+
   }; // class CInputPin
 } // namespace xios
Index: XIOS/dev/dev_olga/src/filter/output_pin.cpp
===================================================================
--- XIOS/dev/dev_olga/src/filter/output_pin.cpp	(revision 1653)
+++ XIOS/dev/dev_olga/src/filter/output_pin.cpp	(revision 1654)
@@ -10,6 +10,9 @@
     , buildWorkflowGraph(buildWorkflowGraph)
   {
-    filterId = InvalidableObject::count;
-    InvalidableObject::count++;
+    if (buildWorkflowGraph)
+    {
+      filterId = InvalidableObject::count;
+      InvalidableObject::count++;
+    }
   }
 
@@ -49,5 +52,7 @@
     }
     else
+    {
       deliverOuput(packet);
+    }
   }
 
Index: XIOS/dev/dev_olga/src/filter/output_pin.hpp
===================================================================
--- XIOS/dev/dev_olga/src/filter/output_pin.hpp	(revision 1653)
+++ XIOS/dev/dev_olga/src/filter/output_pin.hpp	(revision 1654)
@@ -97,8 +97,8 @@
       CGarbageCollector& gc; //!< The garbage collector associated to the output pin
 
-      //!< Whether the ouput should be triggered manually
+      //! Whether the ouput should be triggered manually
       bool manualTrigger;
 
-      //!< The list of connected filters and the corresponding slot numbers
+      //! The list of connected filters and the corresponding slot numbers
       std::vector<std::pair<std::shared_ptr<CInputPin>, size_t> > outputs;
 
Index: XIOS/dev/dev_olga/src/filter/source_filter.cpp
===================================================================
--- XIOS/dev/dev_olga/src/filter/source_filter.cpp	(revision 1653)
+++ XIOS/dev/dev_olga/src/filter/source_filter.cpp	(revision 1654)
@@ -25,5 +25,5 @@
             "Impossible to construct a source filter without providing a grid.");
   }
-
+  
   template <int N>
   void CSourceFilter::streamData(CDate date, const CArray<double, N>& data)
Index: XIOS/dev/dev_olga/src/filter/source_filter.hpp
===================================================================
--- XIOS/dev/dev_olga/src/filter/source_filter.hpp	(revision 1653)
+++ XIOS/dev/dev_olga/src/filter/source_filter.hpp	(revision 1654)
@@ -74,4 +74,5 @@
       const bool compression ; //!< indicates if data need to be compressed : on client side : true, on server side : false
       const bool mask ;        //!< indicates whether grid mask should be applied (true for clients, false for servers)
+      
   }; // class CSourceFilter
 } // namespace xios
Index: XIOS/dev/dev_olga/src/filter/store_filter.cpp
===================================================================
--- XIOS/dev/dev_olga/src/filter/store_filter.cpp	(revision 1653)
+++ XIOS/dev/dev_olga/src/filter/store_filter.cpp	(revision 1654)
@@ -21,6 +21,6 @@
       ERROR("CStoreFilter::CStoreFilter(CContext* context, CGrid* grid)",
             "Impossible to construct a store filter without providing a grid.");
-    filterId = InvalidableObject::count;
-    InvalidableObject::count++;
+//    filterId = InvalidableObject::count;
+//    InvalidableObject::count++;
   }
 
Index: XIOS/dev/dev_olga/src/node/field.cpp
===================================================================
--- XIOS/dev/dev_olga/src/node/field.cpp	(revision 1653)
+++ XIOS/dev/dev_olga/src/node/field.cpp	(revision 1654)
@@ -1212,4 +1212,5 @@
             instantDataFilter = clientSourceFilter = std::shared_ptr<CSourceFilter>(new CSourceFilter(gc, grid, false, true, NoneDu, false,
                                                                                                       detectMissingValues, defaultValue, buildWorkflowGraph));
+            if (buildWorkflowGraph) CWorkflowGraph::mapFilters[instantDataFilter->getFilterId()] = instantDataFilter->GetName();
          }
        }
@@ -1227,5 +1228,5 @@
          if (file && (file->mode.isEmpty() || file->mode == CFile::mode_attr::write))
          {
-           fileWriterFilter = std::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this));
+           fileWriterFilter = std::shared_ptr<CFileWriterFilter>(new CFileWriterFilter(gc, this, buildWorkflowGraph));
            getTemporalDataFilter(gc, file->output_freq)->connectOutput(fileWriterFilter, 0);
            if (buildWorkflowGraph)
Index: XIOS/dev/dev_olga/src/workflow_graph.cpp
===================================================================
--- XIOS/dev/dev_olga/src/workflow_graph.cpp	(revision 1653)
+++ XIOS/dev/dev_olga/src/workflow_graph.cpp	(revision 1654)
@@ -24,7 +24,8 @@
     // Create a list of filters (graph nodes)
     size_t filterIdx = 0;
+    filters.resize(mapFilters.size());
     for (auto it=mapFilters.begin(); it != mapFilters.end(); it++)
     {
-      filters.push_back(it->second);
+      filters[it->first]=it->second;
     }
 
