diff --git a/mvd/CbmMvdDetector.cxx b/mvd/CbmMvdDetector.cxx
index 75e5d5d308a5faf1d2b0f70f9686514195bcb6e0..a00cc45f985ffa13f7edaa946a9d1904711efb9e 100644
--- a/mvd/CbmMvdDetector.cxx
+++ b/mvd/CbmMvdDetector.cxx
@@ -19,7 +19,7 @@
 #include "plugins/tasks/CbmMvdSensorClusterfinderTask.h"  //khun
 #include "plugins/tasks/CbmMvdSensorDigiToHitTask.h"
 #include "plugins/tasks/CbmMvdSensorDigitizerTBTask.h"
-#include "plugins/tasks/CbmMvdSensorDigitizerTask.h"
+//#include "plugins/tasks/CbmMvdSensorDigitizerTask.h"
 //#include "plugins/tasks/CbmMvdSensorFindHitTask.h"
 #include "CbmDigiManager.h"
 #include "plugins/tasks/CbmMvdSensorHitfinderTask.h"  //khun
@@ -204,19 +204,21 @@ void CbmMvdDetector::AddPlugin(CbmMvdSensorPlugin* plugin)
   const TString hitname       = "CbmMvdSensorHitfinderTask";      //khun
   const TString digitohitname = "CbmMvdSensorDigiToHitTask";
 
-
   for (Int_t i = 0; i < nSensors; i++) {
 
 
     if (plugin->GetPluginType() == task) {
 
       if (plugin->ClassName() == digitizername) {
+        LOG(fatal) << "Should never come here. Tasks are now added in CbmMvdDigitizer class";
+/*
         CbmMvdSensorDigitizerTask* digiTask = new CbmMvdSensorDigitizerTask();
         sensor                              = (CbmMvdSensor*) fSensorArray->At(i);
         sensor->AddPlugin(digiTask);
         sensor->SetDigiPlugin(fPluginCount);
 
         //cout <<  "Adding Task CbmMvdSensorDigitizerTask at Sensor " << sensor->GetName() << endl;
+*/
       }
       else if (plugin->ClassName() == digitizerTBname) {
         CbmMvdSensorDigitizerTBTask* digiTask = new CbmMvdSensorDigitizerTBTask();
diff --git a/mvd/CbmMvdDetector.h b/mvd/CbmMvdDetector.h
index 3f31836f086c9800a7311831df44b5d568184761..6ad02200d9c99321a9f4a541e609ab105151e92b 100644
--- a/mvd/CbmMvdDetector.h
+++ b/mvd/CbmMvdDetector.h
@@ -79,6 +79,8 @@ public:
   // TClonesArray* GetClonesArray(Int_t dataLevel){ return 0;}
   Int_t GetSensorArraySize() { return (fSensorArray->GetEntriesFast()); }
   Int_t GetPluginArraySize() { return fPluginCount - 1; }
+  UInt_t GetPluginCount() { return fPluginCount; }
+  void SetPluginCount(UInt_t count) { fPluginCount=count; }
   Int_t  DetectPlugin(Int_t pluginID);
 
 
@@ -99,6 +101,7 @@ public:
   void ShowDebugHistos();
   /** Data Processing */
 
+  std::map<int, CbmMvdSensor*>& GetSensorMap() { return fSensorMap;};
 
   void ExecChain();          //Processes the full execution chain
   void Exec(UInt_t nLevel);  //Processes Element nLevel of the chain
@@ -119,6 +122,8 @@ public:
 
   static void SetSensorTyp(CbmMvdSensorTyp typ) { fSensorTyp = typ; };
 
+  void SetSensorArrayFilled(Bool_t value = kTRUE) {fSensorArrayFilled=value;}
+
 private:
   static CbmMvdSensorTyp fSensorTyp;
 
diff --git a/mvd/CbmMvdDigitizer.cxx b/mvd/CbmMvdDigitizer.cxx
index 1891f6cf370c779339e6828d15c9fa5e468085d6..218264b4ca5bc48b5f8ab3703d8fefdf74716ddd 100644
--- a/mvd/CbmMvdDigitizer.cxx
+++ b/mvd/CbmMvdDigitizer.cxx
@@ -326,10 +326,20 @@ InitStatus CbmMvdDigitizer::Init()
     }
   }
 
-  CbmMvdSensorDigitizerTask* digiTask = new CbmMvdSensorDigitizerTask();
 
-  fDetector->AddPlugin(digiTask);
+  // Add the digitizer plugin to all sensors
+  std::map<int, CbmMvdSensor*>& sensorMap = fDetector->GetSensorMap();
+
+  for (auto itr = sensorMap.begin();
+              itr != sensorMap.end(); itr++) {
+    CbmMvdSensorDigitizerTask* digiTask = new CbmMvdSensorDigitizerTask();
+    itr->second->AddPlugin(digiTask);
+    itr->second->SetDigiPlugin(plugincount);
+  }
+  fDetector->SetSensorArrayFilled(kTRUE);
+  fDetector->SetPluginCount(plugincount+1);
   fDigiPluginNr = (UInt_t)(fDetector->GetPluginArraySize());
+
   if (fShowDebugHistos) fDetector->ShowDebugHistos();
   fDetector->Init();