diff --git a/graphics/EventDisplaysOnline/python/EventDisplaysOnlineConfig.py b/graphics/EventDisplaysOnline/python/EventDisplaysOnlineConfig.py
index 1baeb0440ef412576a8ef2f500272ae1867bd9ff..9c887124ec17c5df32a94df49024f778edfbdea7 100644
--- a/graphics/EventDisplaysOnline/python/EventDisplaysOnlineConfig.py
+++ b/graphics/EventDisplaysOnline/python/EventDisplaysOnlineConfig.py
@@ -182,12 +182,12 @@ if not testWithoutPartition:
 
 def StreamToFileToolCfg(flags, name='StreamToFileTool',**kwargs):
     result = ComponentAccumulator()
-    prefixFileName = "%s/.Unknown/JiveXML" % outputDirectory
+    prefixFileName = "%s/.Unknown/JiveXMLtest" % outputDirectory
     kwargs.setdefault("FileNamePrefix", prefixFileName)
+    kwargs.setdefault("MyTest", "EDOcofig")
     the_tool = CompFactory.JiveXML.StreamToFileTool(**kwargs)
     result.setPrivateTools(the_tool)
     return result
-
 streamToFileTool = acc.popToolsAndMerge(StreamToFileToolCfg(flags))
 
 if not isOfflineTest:
diff --git a/graphics/EventDisplaysOnline/python/OnlineEventDisplaysSvc.py b/graphics/EventDisplaysOnline/python/OnlineEventDisplaysSvc.py
index 76772b133f13d208718b3e96a40e1f455f6fddd4..9171b6c6a7c0e03fb60e3e1c0dc8f3670202f6e6 100644
--- a/graphics/EventDisplaysOnline/python/OnlineEventDisplaysSvc.py
+++ b/graphics/EventDisplaysOnline/python/OnlineEventDisplaysSvc.py
@@ -27,8 +27,7 @@ class OnlineEventDisplaysSvc( PyAthena.Svc ):
 
                 self.zpgid = None
                 self.partition = None
-
-                self.StreamToFileTool = kw.get('StreamToFileTool')
+                self.StreamToFileTool = None #kw.get('StreamToFileTool')
                 self.StreamToServerTool = None
                 self.VP1EventProducer = None
                 
@@ -58,14 +57,13 @@ class OnlineEventDisplaysSvc( PyAthena.Svc ):
                 return StatusCode.Success
 
         def getJobOptions(self):
-                #self.StreamToFileTool = PyAthena.py_tool('JiveXML::StreamToFileTool', iface='IProperty')
+                self.StreamToFileTool = PyAthena.py_tool('JiveXML::StreamToFileTool', iface='IProperty')
                 self.StreamToServerTool = PyAthena.py_tool('JiveXML::StreamToServerTool', iface='IProperty')
+                help(self.StreamToFileTool)
                 # Some casting magic is needed to access algorithm properties
                 from GaudiPython.Bindings import gbl, InterfaceCast
                 vp1alg = PyAthena.py_alg('VP1EventProd')
                 self.VP1EventProducer = InterfaceCast(gbl.IProperty).cast(vp1alg)
-                print(type(self.StreamToFileTool))
-                print(self.StreamToFileTool.MyTest)
                 self.msg.info("StreamToFileTool: %s", self.StreamToFileTool)
                 self.msg.info("StreamToServerTool: %s", self.StreamToServerTool)
                 self.msg.info("VP1EventProducer: %s", self.VP1EventProducer)
@@ -174,9 +172,10 @@ class OnlineEventDisplaysSvc( PyAthena.Svc ):
                         # Set output stream for JiveXML event streaming (file and server)
                         print('stream name and file name prefix:',"%s" % self.stream, "%s/JiveXML" % self.directory)
                         self.StreamToServerTool.getProperty('StreamName').setValue("%s" % self.stream)
+                        
+                        print('before changing my test in online svc:',self.StreamToFileTool.getProperty("MyTest").value())
                         self.StreamToFileTool.getProperty('FileNamePrefix').setValue("%s/JiveXML" % self.directory)
-                        print(self.StreamToFileTool.getProperty("MyTest").value())
-                        self.StreamToFileTool.getProperty("MyTest").setValue("updated")
+                        self.StreamToFileTool.getProperty("MyTest").setValue("updatedinOsvc")
                         print(self.StreamToFileTool.getProperty("MyTest").value())
                         self.msg.debug("Directory in try: %s", self.directory)
                 except Exception as err:
diff --git a/graphics/JiveXML/JiveXML/AlgoJiveXML.h b/graphics/JiveXML/JiveXML/AlgoJiveXML.h
index de5b07159a10c1505a4339aa1ff60534e5f0269a..d2e0eac4b8e5cdcb6d8dd3efa03968b7ff4f1276 100755
--- a/graphics/JiveXML/JiveXML/AlgoJiveXML.h
+++ b/graphics/JiveXML/JiveXML/AlgoJiveXML.h
@@ -56,28 +56,26 @@ namespace JiveXML {
       Gaudi::Property<bool> m_onlineMode {this, "OnlineMode", false, "Whether an XMLRPC server shall be started"};
       Gaudi::Property<bool> m_writeGeometry {this, "WriteGeometry", false, "Whether Geometry-XML files shall be produced"};
       Gaudi::Property<std::string> m_geometryVersionIn {this, "GeometryVersion", "default", "Geometry version as read from Athena"};
-      Gaudi::Property<std::vector<std::string>> m_GeoWriterNames {this, "GeoWriterNames", {"JiveXML::GeometryWriter/GeometryWriter","JiveXML::MuonGeometryWriter/MuonGeometryWriter"}, "The names of the geometry-writer tools"};
+    Gaudi::Property<std::vector<std::string>> m_GeoWriterNames {this, "GeoWriterNames", {"JiveXML::GeometryWriter/GeometryWriter","JiveXML::MuonGeometryWriter/MuonGeometryWriter"}, "The names of the geometry-writer tools"};
+    /**
+     * The list of DataRetrievers. This is initialised using the list of names
+     * supplied by the jobOptions. DataRetrievers are AlgTools residing in the
+     * corresponding sub-detector packages (e.g. TrackRetriever in InDetJiveXML).
+     **/
+    ToolHandleArray<JiveXML::IDataRetriever> m_DataRetrievers; 
 
-    protected:
+    /** 
+     * Handle to the formatting tool, which is passed on to
+     * the data retrievers and converts the data into XML
+     **/
+    ToolHandle<JiveXML::IFormatTool> m_FormatTool {this, "FormatTool", "JiveXML::XMLFormatTool/XMLFormatTool", "Format tool"};
 
-      /** 
-       * The list of DataRetrievers. This is initialised using the list of names
-       * supplied by the jobOptions. DataRetrievers are AlgTools residing in the
-       * corresponding sub-detector packages (e.g. TrackRetriever in InDetJiveXML).
-       **/
-      ToolHandleArray<JiveXML::IDataRetriever> m_DataRetrievers;
-      
-      /** 
-       * Handle to the formatting tool, which is passed on to
-       * the data retrievers and converts the data into XML
-       **/
-      ToolHandle<JiveXML::IFormatTool> m_FormatTool;
-
-      /**
-       * List of streaming tools that pass the formatted XML text
-       * into a file, to a server, etc.
-       **/
-      ToolHandleArray<JiveXML::IStreamTool> m_StreamTools;
+    /**
+     * Streaming tools that pass the formatted XML text
+     * into a file, to a server, etc.
+     **/
+    ToolHandle<JiveXML::IStreamTool> m_StreamToFileTool {this, "StreamToFileTool", "JiveXML::StreamToFileTool/StreamToFileTool", "Stream to file tool"};
+    ToolHandle<JiveXML::IStreamTool> m_StreamToServerTool {this, "StreamToServerTool", "JiveXML::StreamToServerTool/StreamToServerTool", "Stream to server tool"};
 
   };
 
diff --git a/graphics/JiveXML/python/JiveXMLConfig.py b/graphics/JiveXML/python/JiveXMLConfig.py
index c1421b4051a5e4453fe2c88018ef157e1a57c949..e6b1e8ba4ef844b156d9d291e563fdd86cfe759e 100644
--- a/graphics/JiveXML/python/JiveXMLConfig.py
+++ b/graphics/JiveXML/python/JiveXMLConfig.py
@@ -1,9 +1,10 @@
-# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaConfiguration.Enums import Format
 
+
 def getATLASVersion():
     import os
 
@@ -46,7 +47,7 @@ def getDataTypes(flags, haveRDO=False, readAOD=False):
         # Taken from CaloJiveXML_DataTypes.py
         # TODO find correct flag and check the LArDigitRetriever is doing what we want it to do
         #if doLArDigits:
-       # data_types += ["JiveXML::LArDigitRetriever/LArDigitRetriever"]
+            #data_types += ["JiveXML::LArDigitRetriever/LArDigitRetriever"]
         #else:
         data_types += ["JiveXML::CaloFCalRetriever/CaloFCalRetriever"]
         data_types += ["JiveXML::CaloLArRetriever/CaloLArRetriever"]
@@ -177,11 +178,6 @@ def TrackRetrieverCfg(flags, name="TrackRetriever", **kwargs):
     # kwargs.setdefault("DoWriteHLT", True)
     ### switch residual data off:
     kwargs.setdefault("DoWriteResiduals", False)
-    if flags.Common.isOnline:    
-        doHitsDetails = False
-    else:
-        doHitsDetails = True
-    kwargs.setdefault("DoHitsDetails", doHitsDetails)
     the_tool = CompFactory.JiveXML.TrackRetriever(name, **kwargs)
     result.addPublicTool(the_tool)
     return result
@@ -213,95 +209,129 @@ def CaloRetrieversCfg(flags, **kwargs):
     from LArRecUtils.LArADC2MeVCondAlgConfig import LArADC2MeVCondAlgCfg
     result.merge(LArADC2MeVCondAlgCfg (flags))
 
-    rawChannelContainer = flags.Tile.RawChannelContainer
-    digitsContainer = "TileDigitsCnt"
-    if "TileDigitsFlt" in flags.Input.Collections:
-        digitsContainer = "TileDigitsFlt"
+    from AthenaConfiguration.Enums import Format
+    if flags.Input.Format is Format.BS:
+        tileDigitsContainer = "TileDigitsCnt"
+
+        if flags.Tile.doOpt2:
+            tileRawChannelContainer = 'TileRawChannelOpt2'
+        elif flags.Tile.doOptATLAS:
+            tileRawChannelContainer = 'TileRawChannelFixed'
+        elif flags.Tile.doFitCOOL:
+            tileRawChannelContainer = 'TileRawChannelFitCool'
+        elif flags.Tile.doFit:
+            tileRawChannelContainer = 'TileRawChannelFit'
+        else:
+            tileRawChannelContainer = 'TileRawChannelCnt'
 
-    result.addPublicTool(
-        CompFactory.JiveXML.CaloClusterRetriever(name = "CaloClusterRetriever",**kwargs
-        )
-    )
-    
-    if flags.Common.isOnline:
-        doTileCellDetails = True
-        doTileDigit = True
     else:
-        doTileCellDetails = False
-        doTileDigit = False
-    result.addPublicTool(
-        CompFactory.JiveXML.CaloTileRetriever(
-            name = "CaloTileRetriever",
-            TileDigitsContainer = digitsContainer,
-            TileRawChannelContainer = rawChannelContainer,
-            DoTileCellDetails = doTileCellDetails,
-            DoTileDigit = doTileDigit,
-            DoBadTile = False,
+        if "TileDigitsCnt" in flags.Input.Collections:
+            tileDigitsContainer = "TileDigitsCnt"
+        elif "TileDigitsFlt" in flags.Input.Collections:
+            tileDigitsContainer = "TileDigitsFlt"
+
+        if "TileRawChannelOpt2" in flags.Input.Collections:
+            tileRawChannelContainer = 'TileRawChannelOpt2'
+        elif "TileRawChannelFitCool" in flags.Input.Collections:
+            tileRawChannelContainer = 'TileRawChannelFitCool'
+        elif "TileRawChannelFit" in flags.Input.Collections:
+            tileRawChannelContainer = 'TileRawChannelFit'
+        elif "TileRawChannelCnt" in flags.Input.Collections:
+            tileRawChannelContainer = 'TileRawChannelCnt'
+
+    from CaloJiveXML.CaloJiveXMLConf import JiveXML__LArDigitRetriever
+    theLArDigitRetriever = JiveXML__LArDigitRetriever(name="LArDigitRetriever")
+    theLArDigitRetriever.DoLArDigit = False
+    theLArDigitRetriever.DoHECDigit = False
+    theLArDigitRetriever.DoFCalDigit = False
+
+    if (theLArDigitRetriever.DoLArDigit or theLArDigitRetriever.DoHECDigit or theLArDigitRetriever.DoFCalDigit):
+        result.addPublicTool(
+            CompFactory.JiveXML.LArDigitRetriever(
+                name="LArDigitRetriever",
+                DoLArDigit=False,
+                DoHECDigit=False,
+                DoFCalDigit=False,
+            )
         )
-    )
-
-    if flags.Common.isOnline:
-        doMBTSDigits = True
-        doMBTSCellDetails = True
+ 
     else:
-        doMBTSDigits = False
-        doMBTSCellDetails = False
+        result.addPublicTool(
+            CompFactory.JiveXML.CaloFCalRetriever(
+                name="CaloFCalRetriever",
+                DoFCalCellDetails=False,
+                DoBadFCal=False,
+            )
+        )
 
-    result.addPublicTool(
-        CompFactory.JiveXML.CaloMBTSRetriever(
-            name = "CaloMBTSRetriever",
-            TileDigitsContainer= digitsContainer,
-            TileRawChannelContainer = rawChannelContainer,
-            DoMBTSDigits = doMBTSDigits,
-            DoMBTSCellDetails = doMBTSCellDetails,
+        result.addPublicTool(
+            CompFactory.JiveXML.CaloLArRetriever(
+                name="CaloLArRetriever",
+                DoLArCellDetails=False,
+                DoBadLAr=False,
+            )
         )
-    )
 
-    result.addPublicTool(
-        CompFactory.JiveXML.CaloFCalRetriever(
-            name = "CaloFCalRetriever",
-            DoFCalCellDetails = False,
-            DoBadFCal = False,
+        result.addPublicTool(
+            CompFactory.JiveXML.CaloHECRetriever(
+                name="CaloHECRetriever",
+                DoHECCellDetails=False,
+                DoBadHEC=False,
+            )
         )
-    )
 
     result.addPublicTool(
-        CompFactory.JiveXML.CaloLArRetriever(
-            name = "CaloLArRetriever",
-            DoLArCellDetails = False,
-            DoBadLAr = False,
+        CompFactory.JiveXML.CaloClusterRetriever(name = "CaloClusterRetriever",**kwargs
         )
     )
-
+    
     result.addPublicTool(
-        CompFactory.JiveXML.CaloHECRetriever(
-            name = "CaloHECRetriever",
-            DoHECCellDetails = False,
-            DoBadHEC = False,
+        CompFactory.JiveXML.CaloTileRetriever(
+            name = "CaloTileRetriever",
+            TileDigitsContainer = tileDigitsContainer,
+            TileRawChannelContainer = tileRawChannelContainer,
+            DoTileCellDetails = False,
+            DoTileDigit = False,
+            DoBadTile = False,
         )
     )
 
     result.addPublicTool(
-        CompFactory.JiveXML.LArDigitRetriever(
-            name = "LArDigitRetriever",
-            DoLArDigit = False,
-            DoHECDigit = False,
-            DoFCalDigit = False,
+        CompFactory.JiveXML.CaloMBTSRetriever(
+            name = "CaloMBTSRetriever",
+            TileDigitsContainer= tileDigitsContainer,
+            TileRawChannelContainer = tileRawChannelContainer,
+            DoMBTSDigits = False,
         )
     )
+
     return result
 
 
 def MuonRetrieversCfg(flags, **kwargs):
     result = ComponentAccumulator()
-    # TODO add in other retrievers
-    # Based on MuonJiveXML_DataTypes.py
     #kwargs.setdefault("StoreGateKey", "MDT_DriftCircles")
 
-    result.addPublicTool(
-        CompFactory.JiveXML.MdtPrepDataRetriever(name = "MdtPrepDataRetriever",**kwargs
-        )
-    )
+    if flags.Detector.EnableMuon:
+        # Taken from MuonJiveXML_DataTypes.py
+        if flags.Detector.EnableMDT:
+            result.addPublicTool(CompFactory.JiveXML.MdtPrepDataRetriever(name="MdtPrepDataRetriever"), **kwargs)
+        if flags.Detector.EnableTGC:
+            result.addPublicTool(CompFactory.JiveXML.TgcPrepDataRetriever(name="TgcPrepDataRetriever"), **kwargs)
+        if flags.Detector.EnableRPC:
+            result.addPublicTool(CompFactory.JiveXML.RpcPrepDataRetriever(name="RpcPrepDataRetriever"), **kwargs)
+        if flags.Detector.EnableCSC:
+            result.addPublicTool(CompFactory.JiveXML.CSCClusterRetriever(name="CSCClusterRetriever"), **kwargs)
+            result.addPublicTool(CompFactory.JiveXML.CscPrepDataRetriever(name="CscPrepDataRetriever"), **kwargs)
+        if flags.Detector.EnablesTGC:
+            result.addPublicTool(CompFactory.JiveXML.sTgcPrepDataRetriever(name="sTgcPrepDataRetriever"), **kwargs)
+        if flags.Detector.EnableMM:
+            result.addPublicTool(CompFactory.JiveXML.MMPrepDataRetriever(name="MMPrepDataRetriever"), **kwargs)
+        # TODO Not sure if below are still needed?
+        # data_types += ["JiveXML::TrigMuonROIRetriever/TrigMuonROIRetriever"]
+        # data_types += ["JiveXML::MuidTrackRetriever/MuidTrackRetriever]
+        # data_types += ["JiveXML::TrigRpcDataRetriever/TrigRpcDataRetriever"]
+
     return result
 
 
@@ -384,7 +414,6 @@ def xAODRetrieversCfg(flags):
     )
     return result
 
-
 def TriggerRetrieversCfg(flags):
     result = ComponentAccumulator()
     if flags.Reco.EnableTrigger:
@@ -428,21 +457,16 @@ def TriggerRetrieversCfg(flags):
         )
     return result
 
-
 def AlgoJiveXMLCfg(flags, name="AlgoJiveXML", **kwargs):
     # This is based on a few old-style configuation files:
     # JiveXML_RecEx_config.py
     # JiveXML_jobOptionBase.py
     result = ComponentAccumulator()
-
     kwargs.setdefault("AtlasRelease", getATLASVersion())
     kwargs.setdefault("WriteToFile", True)
-    # Enable this to recreate the geometry XML files for Atlantis
+    kwargs.setdefault("OnlineMode", False)
+    ### Enable this to recreate the geometry XML files for Atlantis
     kwargs.setdefault("WriteGeometry", False)
-    if flags.Common.isOnline:
-        kwargs.setdefault("OnlineMode", True)
-    else:
-        kwargs.setdefault("OnlineMode", False)
 
     # This next bit sets the data types, then we set the associated public tools
     readAOD = False  # FIXME - set this properly
@@ -471,6 +495,4 @@ def AlgoJiveXMLCfg(flags, name="AlgoJiveXML", **kwargs):
 
     the_alg = CompFactory.JiveXML.AlgoJiveXML(name="AlgoJiveXML", **kwargs)
     result.addEventAlgo(the_alg, primary=True)
-    
-    
     return result
diff --git a/graphics/JiveXML/src/AlgoJiveXML.cxx b/graphics/JiveXML/src/AlgoJiveXML.cxx
index 33f0fad4bb8968a8753e0209b8b762d2f1b8190a..d3eb97469df0a6bde35e2949a649e32dabd72087 100755
--- a/graphics/JiveXML/src/AlgoJiveXML.cxx
+++ b/graphics/JiveXML/src/AlgoJiveXML.cxx
@@ -21,14 +21,7 @@ namespace JiveXML{
   AlgoJiveXML::AlgoJiveXML(const std::string& name, ISvcLocator* pSvcLocator) :
     AthAlgorithm(name, pSvcLocator) {
 
-    //Array of tools that retrieve the data, set public and createIf as default
-    declareProperty("DataRetrievers", m_DataRetrievers = ToolHandleArray<IDataRetriever>( NULL ,true));
-
-    //Generate XMLFormatTool as default privat format tool
-    declareProperty("FormatTool", m_FormatTool = ToolHandle<IFormatTool>("JiveXML::XMLFormatTool/XMLFormatTool",this));
-
-    //Array of tools for streaming events, set public and createIf as default
-    declareProperty("StreamTools", m_StreamTools = ToolHandleArray<IStreamTool>(NULL,true));
+    
   }
 
   /**
@@ -37,8 +30,7 @@ namespace JiveXML{
    * - Get GeometryWriters and write geometry if asked for
    * - Get the formatting tool
    * - Get the data retrievers
-   * - Get the streaming tools, including defaults if asked for
-   */
+   * - Get the streaming tools, including defaults if asked for   */
   StatusCode AlgoJiveXML::initialize(){
 
     //be verbose
@@ -91,22 +83,16 @@ namespace JiveXML{
      */
     ATH_MSG_DEBUG("Retrieving streaming tools");
     if (m_writeToFile){
-      ATH_MSG_INFO("Adding default file streaming tool");
-      m_StreamTools.push_back("JiveXML::StreamToFileTool/StreamToFileTool");
+      ATH_MSG_INFO("Retrieving default file streaming tool");
+      ATH_CHECK(m_StreamToFileTool.retrieve());
     }
     /// Get the streaming tools
     if (m_onlineMode == true){
-      m_StreamTools.push_back("JiveXML::StreamToServerTool/StreamToServerTool");
+      ATH_MSG_INFO("Retrieving default server streaming tool");
+      ATH_CHECK(m_StreamToFileTool.retrieve());
    }
 
-    if (m_StreamTools.size() == 0) {
-      ATH_MSG_WARNING("No streaming tools defined, events will be created but not stored!");
-    } else {
-      if (m_StreamTools.retrieve().isFailure()){
-        ATH_MSG_ERROR("Unable to retrieve streaming tools !");
-        return StatusCode::FAILURE;
-      }
-    }
+  
 
     /**
      * Get the IDataRetrievers requested in the m_dataTypes list from the toolSvc 
@@ -314,16 +300,17 @@ namespace JiveXML{
     /**
      * Now stream the events to all registered streaming tools
      */
-    ATH_MSG_DEBUG( "Starting loop over event streamers" );
-    //Loop over streaming tools
-    ToolHandleArray<IStreamTool>::iterator StreamToolsItr = m_StreamTools.begin();
-    for ( ; StreamToolsItr != m_StreamTools.end(); ++StreamToolsItr ){
-      ATH_MSG_INFO("Streaming event to " << (*StreamToolsItr)->name() );
-        if ( (*StreamToolsItr)->StreamEvent(eventNo, runNo, m_FormatTool->getFormattedEvent()).isFailure() ){
-           ATH_MSG_WARNING( "Could not stream event to " << (*StreamToolsItr)->name() );
-        } 
+  
+    ATH_MSG_INFO("Streaming event to file");
+    if ( (m_StreamToFileTool->StreamEvent(eventNo, runNo, m_FormatTool->getFormattedEvent()).isFailure() )){
+	  ATH_MSG_WARNING( "Could not stream event to file" );
+    }
+    if(m_onlineMode==true){
+      ATH_MSG_INFO("Streaming event to server");
+      if ( (m_StreamToServerTool->StreamEvent(eventNo, runNo, m_FormatTool->getFormattedEvent()).isFailure() )){
+	ATH_MSG_WARNING( "Could not stream event to server" );
+      }
     }
-    ATH_MSG_DEBUG( "Finished loop over event streamers" );
 
     return StatusCode::SUCCESS;
   }
@@ -339,8 +326,9 @@ namespace JiveXML{
     /// Release all the tools
     m_DataRetrievers.release().ignore();
     m_FormatTool.release().ignore();
-    m_StreamTools.release().ignore();
-
+    m_StreamToFileTool.release().ignore();
+    m_StreamToServerTool.release().ignore();
+    
     return StatusCode::SUCCESS;
   }