diff --git a/DDCore/src/plugins/StandardPlugins.cpp b/DDCore/src/plugins/StandardPlugins.cpp
index 1942cbcdcf355002d41c96b4d1a9bf9330cc1e25..ec4128563d96dce90efda30889c029c9e32e6398 100644
--- a/DDCore/src/plugins/StandardPlugins.cpp
+++ b/DDCore/src/plugins/StandardPlugins.cpp
@@ -461,6 +461,7 @@ DECLARE_APPLY(DD4hepXMLProcessor,process_xml_doc)
  *  \date    01/04/2014
  */
 static long load_volmgr(LCDD& lcdd, int, char**) {
+  printout(INFO,"DD4hepVolumeManager","**** running plugin DD4hepVolumeManager ! " );
   try {
     LCDDImp* imp = dynamic_cast<LCDDImp*>(&lcdd);
     if ( imp )  {
diff --git a/DDRec/src/IDDecoder.cpp b/DDRec/src/IDDecoder.cpp
index ef872386a5f090181096b645321b319c3287ba82..afe888b1e2239d4812e340b3e63d0da509e80210 100644
--- a/DDRec/src/IDDecoder.cpp
+++ b/DDRec/src/IDDecoder.cpp
@@ -34,7 +34,8 @@ IDDecoder::IDDecoder() {
 	LCDD& lcdd = LCDD::getInstance();
 	_volumeManager = lcdd.volumeManager();
 	if (not _volumeManager.isValid()) {
-		_volumeManager = VolumeManager(lcdd, "volman", lcdd.world(), Readout(), VolumeManager::TREE);
+		lcdd.apply("DD4hepVolumeManager",0,0);
+		_volumeManager = lcdd.volumeManager();
 	}
 	_tgeoMgr = lcdd.world().volume()->GetGeoManager();
 }
diff --git a/DDRec/src/SurfaceHelper.cpp b/DDRec/src/SurfaceHelper.cpp
index 728f0b3084f9e7b730629d3bf21f951d02a754aa..e172813d68874cb62c6a338e478d9cdd21746e3a 100644
--- a/DDRec/src/SurfaceHelper.cpp
+++ b/DDRec/src/SurfaceHelper.cpp
@@ -27,7 +27,13 @@ namespace DD4hep {
       // have to populate the volume manager once in order to have 
       // the volumeIDs attached to the DetElements
       LCDD& lcdd = LCDD::getInstance();
-      static VolumeManager volMgr( lcdd  , "volMan" , lcdd.world() ) ;
+      VolumeManager volMgr = lcdd.volumeManager();
+      if(not volMgr.isValid()) {
+	// VolumeManager initialised by DD4hepVolumeManager plugin
+	lcdd.apply("DD4hepVolumeManager",0,0);
+	volMgr = lcdd.volumeManager();
+      }
+
 
  
       //------------------ breadth first tree traversal ---------