diff --git a/test/AllTypesFESA/src/AllTypesFESA/RealTime/RTDeviceClass.cpp b/test/AllTypesFESA/src/AllTypesFESA/RealTime/RTDeviceClass.cpp
index b54fd64733dc7273cc4cb79965aeb9ba1c199d93..2dd03633ed070c9df4fa74700c11bbb75f950180 100644
--- a/test/AllTypesFESA/src/AllTypesFESA/RealTime/RTDeviceClass.cpp
+++ b/test/AllTypesFESA/src/AllTypesFESA/RealTime/RTDeviceClass.cpp
@@ -6,6 +6,8 @@
 #include <AllTypesFESA/GeneratedCode/ServiceLocator.h>
 #include <fesa-core/Core/AbstractEvent.h>
 
+#include <AllTypesFESA/Common/AllTypesFESA.h>
+
 #include <cmw-log/Logger.h>
 
 #include <string>
@@ -30,6 +32,7 @@ RTDeviceClass::RTDeviceClass () :
 
 RTDeviceClass::~RTDeviceClass()
 {
+    AllTypesFESA::cleanup();
 }
 
 RTDeviceClass* RTDeviceClass::getInstance()
@@ -54,23 +57,24 @@ void RTDeviceClass::releaseInstance()
 // You can write code that initializes devices in the loop below.
 void RTDeviceClass::specificInit()
 {
-    const Devices& deviceCol = AllTypesFESAServiceLocator_->getDeviceCollection();
-    for (Devices::const_iterator it = deviceCol.begin(); it != deviceCol.end(); ++it)
+    try 
     {
-        try
-        {
-            Device* device = *it;
-            static_cast<void>(device); // This line prevents an "unused variable" warning, it can be removed safely.
-            // Write here some code to initialize devices
-            
-        }
-        catch (const fesa::FesaException& exception)
+        if (!AllTypesFESA::isInitialized())
         {
-            LOG_ERROR_IF(logger, exception.getMessage());
-            // Re-throwing the exception prevents the process from starting up.
-            throw;
+            AllTypesFESA::setup(this->AllTypesFESAServiceLocator_); 
         }
-    }
+    } 
+    catch(std::exception& ex) 
+    { 
+        // required to trace failures on logstash.acc.gsi.de 
+        LOG_ERROR_IF(logger, ex.what()); 
+        throw; 
+    } 
+    catch(...) 
+    { 
+        LOG_ERROR_IF(logger, "Unexpected error. Please notify support"); 
+        throw;     
+    } 
 }
 
 void RTDeviceClass::specificShutDown()
diff --git a/test/AllTypesFESA/src/AllTypesFESA/RealTime/StatusUpdateAction.cpp b/test/AllTypesFESA/src/AllTypesFESA/RealTime/StatusUpdateAction.cpp
index 210fd3ed9d8e83d27818121693d5ad489086c4ae..29cdeb2fada6b3abb22a1009e3bbb20bc408ab7d 100644
--- a/test/AllTypesFESA/src/AllTypesFESA/RealTime/StatusUpdateAction.cpp
+++ b/test/AllTypesFESA/src/AllTypesFESA/RealTime/StatusUpdateAction.cpp
@@ -49,23 +49,7 @@ StatusUpdateAction::~StatusUpdateAction()
 // of this real time action is there.
 void StatusUpdateAction::execute(fesa::RTEvent* pEvt)
 {
-    const fesa::MultiplexingContext* context = pEvt->getMultiplexingContext();
-    static_cast<void>(context); // This line prevents an "unused variable" warning, it can be removed safely.
-    const Devices& devices = getFilteredDeviceCollection(pEvt);
-    for (Devices::const_iterator it = devices.begin(); it != devices.end(); ++it)
-    {
-        try
-        {
-            Device* device = *it;
-            static_cast<void>(device); // This line prevents an "unused variable" warning, it can be removed safely.
-            // Write here some code to process devices
-            
-        }
-        catch (const fesa::FesaException& exception)
-        {
-            LOG_ERROR_IF(logger, exception.getMessage());
-        }
-    }
+    // We don't need the status action, however it's left here for compliance with the FESA GSI template.
 }
 
 } // AllTypesFESA