diff --git a/DetectorDescription/GeoModel/DumpGeo/python/DumpGeoConfig.py b/DetectorDescription/GeoModel/DumpGeo/python/DumpGeoConfig.py
index dedeeda3b0bb83b3d2b10ff645bfcaaea46124b2..3c6489b9d8ca15a785405661a0d2d4b9052b4e60 100644
--- a/DetectorDescription/GeoModel/DumpGeo/python/DumpGeoConfig.py
+++ b/DetectorDescription/GeoModel/DumpGeo/python/DumpGeoConfig.py
@@ -58,10 +58,34 @@ def configureGeometry(flags, cfg):
         from AtlasGeoModel.CavernGMConfig import CavernGeometryCfg
         cfg.merge(CavernGeometryCfg(flags))
     
+
+    # Forward detectors (disabled by default)
+    if flags.Detector.GeometryLucid or flags.Detector.GeometryALFA or flags.Detector.GeometryAFP or flags.Detector.GeometryFwdRegion :
+        from AtlasGeoModel.ForDetGeoModelConfig import ForDetGeometryCfg
+        cfg.merge(ForDetGeometryCfg(flags))
     if flags.Detector.GeometryZDC:
         from ZDC_GeoM.ZdcGeoModelConfig import ZDC_DetToolCfg
         cfg.merge(ZDC_DetToolCfg(flags))
 
+    
+    # Calorimeters
+        # if flags.Detector.GeometryMBTS:
+    # Inner Detector
+        # if flags.Detector.GeometryBCM:
+
+    # Upgrade ITk Inner Tracker is a separate and parallel detector
+        # if flags.Detector.GeometryBCMPrime:
+        # if flags.Detector.GeometryPLR:
+
+    # # HGTD
+    # if flags.Detector.GeometryHGTD:
+    #     #set up geometry
+    #     if flags.HGTD.Geometry.useGeoModelXml:
+    #         from HGTD_GeoModelXml.HGTD_GeoModelConfig import HGTD_SimulationGeometryCfg
+    #     else:
+    #         from HGTD_GeoModel.HGTD_GeoModelConfig import HGTD_SimulationGeometryCfg
+    #     cfg.merge(HGTD_SimulationGeometryCfg(flags))
+        
 
 
 
diff --git a/DetectorDescription/GeoModel/DumpGeo/src/DumpGeo.cxx b/DetectorDescription/GeoModel/DumpGeo/src/DumpGeo.cxx
index 740efccdf9042ec7786ce516976465c0702ec649..75c5a439e7f07f8d782b7d4f0a40f6213642a621 100755
--- a/DetectorDescription/GeoModel/DumpGeo/src/DumpGeo.cxx
+++ b/DetectorDescription/GeoModel/DumpGeo/src/DumpGeo.cxx
@@ -12,6 +12,7 @@
 //  - 2024, Mar -- Riccardo Maria BIANCHI
 //                 <riccardo.maria.bianchi@cern.ch>
 //                 Removed GeoExporter, moved all to DumpGeo
+//  - 2024, Apr -- Added missing sub-systems: Cavern, HGTD, FWD detectors, ...
 
 #include "DumpGeo/DumpGeo.h"
 
@@ -107,53 +108,40 @@ StatusCode DumpGeo::initialize() {
   // We fill a set from the output vector,
   // so we can use its built-in 'count' method later,
   // to search for DetManagers
-  ATH_MSG_INFO(
-      "List of the GeoModel Detector Managers that are being dumped: ");
+  ATH_MSG_INFO("Dumping the GeoModel tree...");
   std::set<std::string> managersList{};
   {
     std::vector<std::string> blub = theExpt->getListOfManagers();
     managersList.insert(blub.begin(), blub.end());
   }
   if (msgLvl(MSG::INFO)) {
+    std::cout
+        << "List of the GeoModel Detector Managers that are being dumped: "
+        << std::endl;
     for (auto const& man : managersList) {
       // get the DetectorManager
       const GeoVDetectorManager* manager = theExpt->getManager(man);
       unsigned int nTreetops = manager->getNumTreeTops();
       std::cout << "\t" << man << " [contains " << nTreetops << " treetops]"
                 << std::endl;
-      // if (msgLvl(MSG::VERBOSE)) {
-        for (unsigned int i = 0; i < nTreetops; ++i) {
-          PVConstLink treetop(manager->getTreeTop(i));
-          // get treetop's volume
-          const GeoVPhysVol* vol = treetop;
-          // get treetop's logvol's name
-          std::string volName = vol->getLogVol()->getName();
-          std::cout << "\t\t treetop: " << volName << std::endl;
-        }
-      // }
+      for (unsigned int i = 0; i < nTreetops; ++i) {
+        PVConstLink treetop(manager->getTreeTop(i));
+        // get treetop's volume
+        const GeoVPhysVol* vol = treetop;
+        // get treetop's logvol's name
+        std::string volName = vol->getLogVol()->getName();
+        std::cout << "\t\t treetop: " << volName << std::endl;
+      }
     }
   }
 
   if (!(m_user_filterDetManagersList.empty())) {
-
-    // // Get list of managers
-    // // We fill a set from the output vector,
-    // // so we can use its built-in 'count' method later,
-    // // to search for DetManagers
-    // ATH_MSG_INFO("List of GeoModel Detector Managers: ");
-    // std::set<std::string> managersList{};
-    // {
-    //    std::vector<std::string> blub = theExpt->getListOfManagers();
-    //    managersList.insert(blub.begin(), blub.end());
-    // }
-
     // Convert the list of det managers passed by the user into a set
     std::set<std::string> user_managersList{};
     {
       user_managersList.insert(m_user_filterDetManagersList.begin(),
                                m_user_filterDetManagersList.end());
     }
-
     // safety check:
     // check that all DetManagers requested by the user are in the list
     // If not, print an error message to warn the user and return
@@ -220,9 +208,9 @@ StatusCode DumpGeo::initialize() {
                 }             // end while
               }
             }
-          }  // end for
-        }    // end if
-      }      // end for
+          }
+        }
+      }
     }
   }