diff --git a/FullSimLight/fullSimLight.cc b/FullSimLight/fullSimLight.cc
index 8dd2f4e745980ff19145c36d378558c08a62e73f..d014d25400297ab1cad06fbcfe4819f0e5985f00 100644
--- a/FullSimLight/fullSimLight.cc
+++ b/FullSimLight/fullSimLight.cc
@@ -209,6 +209,14 @@ int main(int argc, char** argv) {
     
     // 3. User action
     FSLActionInitialization* actInit = new FSLActionInitialization(parIsPerformance);
+    actInit->SetActions(
+                        simConfig::jf["Event Actions"],
+                        simConfig::jf["Run Actions"],
+                        simConfig::jf["Tracking Actions"],
+                        simConfig::jf["Stepping Actions"],
+                        simConfig::jf["Stacking Actions"]
+                       );
+    
     // set the name of a region in which we are interested to see a very basic simulation
     // stat e.g. "EMEC" (NOTE: only if the given region can be found and executed in
     // non-perfomance mode)
diff --git a/FullSimLight/include/FSLActionInitialization.hh b/FullSimLight/include/FSLActionInitialization.hh
index 8a072abe578641b73f951cf1d3ce44a70dff0e44..0d042396f9eb1f7979dd339a122da7bc4c6daa3a 100644
--- a/FullSimLight/include/FSLActionInitialization.hh
+++ b/FullSimLight/include/FSLActionInitialization.hh
@@ -10,19 +10,41 @@ class FSLActionInitialization : public G4VUserActionInitialization {
 
 public:
 
-  FSLActionInitialization(bool isperformance=false);
+  FSLActionInitialization(bool isperformance=false, bool customUserActions = false);
  ~FSLActionInitialization() override;
 
   void BuildForMaster() const override;
   void Build() const override;
 
   void SetPerformanceModeFlag(bool val) { fIsPerformance = val; }
-  void  SetSpecialScoringRegionName(const G4String& rname) { fSpecialScoringRegionName = rname; }
-
+  void SetSpecialScoringRegionName(const G4String& rname) { fSpecialScoringRegionName = rname; }
+    
+  void SetActions(std::vector<std::string> &evtActions,
+                    std::vector<std::string> &rActions,
+                    std::vector<std::string> &trActions,
+                    std::vector<std::string> &steActions,
+                    std::vector<std::string> &staActions)
+    {
+        eventActions = evtActions;
+        runActions = rActions;
+        trackingActions = trActions;
+        steppingActions = steActions;
+        stackingActions = staActions;
+    };
+    
 private:
   GeantinoMapsConfigurator* fGeantinoMapsConfig;
   bool     fIsPerformance;
+  bool     fCustomUserActions;
   G4String fSpecialScoringRegionName;
+    
+    
+  std::vector<std::string> eventActions;
+  std::vector<std::string> runActions;
+  std::vector<std::string> trackingActions;
+  std::vector<std::string> steppingActions;
+  std::vector<std::string> stackingActions;
+    
 
 
 };
diff --git a/FullSimLight/src/FSLActionInitialization.cc b/FullSimLight/src/FSLActionInitialization.cc
index ac6c7117e8ad70137b78caff3d79d3b8a459696e..84a51686fe9e43a5c689e7361eef33f6f55a9e37 100644
--- a/FullSimLight/src/FSLActionInitialization.cc
+++ b/FullSimLight/src/FSLActionInitialization.cc
@@ -1,6 +1,6 @@
 
 #include "FSLActionInitialization.hh"
-
+#include "GeoModelKernel/GeoPluginLoader.h"
 #include "FSLPrimaryGeneratorAction.hh"
 #include "FSLRunAction.hh"
 #include "FSLEventAction.hh"
@@ -22,8 +22,8 @@
 
 //const G4AnalysisManager* FSLActionInitialization::fMasterAnalysisManager = nullptr;
 
-FSLActionInitialization::FSLActionInitialization(bool isperformance)
-: G4VUserActionInitialization(), fIsPerformance(isperformance),
+FSLActionInitialization::FSLActionInitialization(bool isperformance, bool customuseractions)
+: G4VUserActionInitialization(), fIsPerformance(isperformance),fCustomUserActions(customuseractions),
   fSpecialScoringRegionName("") {
       
       fGeantinoMapsConfig = GeantinoMapsConfigurator::getGeantinoMapsConf();
@@ -35,10 +35,12 @@ FSLActionInitialization::~FSLActionInitialization() {}
 // called in case of MT
 void FSLActionInitialization::BuildForMaster() const {
     
-    FSLRunAction* masterRunAct = new FSLRunAction();
+    if(fCustomUserActions){}/*set run action from config file*/
+    else
+    {FSLRunAction* masterRunAct = new FSLRunAction();
     masterRunAct->SetPerformanceFlag(fIsPerformance);
     masterRunAct->SetSpecialScoringRegionName(fSpecialScoringRegionName);
-
+    
 #if USE_PYTHIA
     if (use_pythia()) {
       G4String str(get_pythia_config());
@@ -47,6 +49,7 @@ void FSLActionInitialization::BuildForMaster() const {
 #endif
     SetUserAction(masterRunAct);
 }
+}
 
 
 void FSLActionInitialization::Build() const {
@@ -81,7 +84,7 @@ void FSLActionInitialization::Build() const {
   }
 #endif
   // do not create Run,Event,Stepping and Tracking actions in case of perfomance mode
-  if (!fIsPerformance) {
+  if (!fIsPerformance && !fCustomUserActions) {
       FSLRunAction* runact = new FSLRunAction();
       SetUserAction(runact);
       runact->SetSpecialScoringRegionName(fSpecialScoringRegionName);
@@ -113,4 +116,61 @@ void FSLActionInitialization::Build() const {
 #endif
       //MultiEventActions?? TO DO?
   }
+    
+  else if(fCustomUserActions)
+  {
+      for (const auto& element : runActions)
+      {
+          GeoPluginLoader<FSLUserRunActionPlugin> loader;
+          const FSLUserRunActionPlugin * plugin = loader.load(element);
+          G4UserRunAction*  runAct = plugin->getRunAction();
+          SetUserAction(runAct);
+          
+      }
+      
+      for (const auto& element : eventActions)
+      {
+          GeoPluginLoader<FSLUserEventActionPlugin> loader;
+          const FSLUserEventActionPlugin * plugin = loader.load(element);
+          G4UserEventAction*  evtAct = plugin->getEventAction();
+          SetUserAction(evtAct);
+          
+      }
+      
+      for (const auto& element : steppingActions)
+      {
+          GeoPluginLoader<FSLUserSteppingActionPlugin> loader;
+          const FSLUserSteppingActionPlugin * plugin = loader.load(element);
+          G4UserSteppingAction*  steAct = plugin->getSteppingAction();
+          SetUserAction(steAct);
+          
+      }
+      
+      
+      for (const auto& element : trackingActions)
+      {
+          GeoPluginLoader<FSLUserTrackingActionPlugin> loader;
+          const FSLUserTrackingActionPlugin * plugin = loader.load(element);
+          G4UserTrackingAction*  traAct = plugin->getTrackingAction();
+          SetUserAction(traAct);
+          
+      }
+      
+      for (const auto& element : stackingActions)
+      {
+          GeoPluginLoader<FSLUserStackingActionPlugin> loader;
+          const FSLUserStackingActionPlugin * plugin = loader.load(element);
+          G4UserStackingAction*  staAct = plugin->getStackingAction();
+          SetUserAction(staAct);
+          
+      }
+      
+      
+      
+      
+      
+      
+      
+  }
+  
 }