diff --git a/src/AlarmHandler.cpp b/src/AlarmHandler.cpp
index bb84f30ceaec5f512bf9ddc45bc72cffc9353e9f..11976002fd92cabaf17d29a232593ba6338ab33a 100644
--- a/src/AlarmHandler.cpp
+++ b/src/AlarmHandler.cpp
@@ -108,6 +108,7 @@ static const char __FILE__rev[] = __FILE__ " $Revision: 1.29 $";
 //  ResetStatistics  |  reset_statistics
 //  StopNew          |  stop_new
 //  GetAlarmInfo     |  get_alarm_info
+//  ReLoadAll        |  re_load_all
 //================================================================
 
 //================================================================
@@ -314,7 +315,7 @@ void AlarmHandler::delete_device()
 	delete internallock;
 	delete dslock;
 	delete events;
-
+	
 	instanceCounter--;
 	//Tango::leavefunc();
 	delete prepare_alm_mtx;
@@ -927,7 +928,7 @@ void AlarmHandler::read_alarmAudible(Tango::Attribute &attr)
 //--------------------------------------------------------
 void AlarmHandler::read_StatisticsResetTime(Tango::Attribute &attr)
 {
-	DEBUG_STREAM << "AlarmHandler::read_StatisticsResetTime(Tango::Attribute &attr) entering... " << endl;
+	//DEBUG_STREAM << "AlarmHandler::read_StatisticsResetTime(Tango::Attribute &attr) entering... " << endl;
 	/*----- PROTECTED REGION ID(AlarmHandler::read_StatisticsResetTime) ENABLED START -----*/
 	timespec now;
 	clock_gettime(CLOCK_MONOTONIC, &now);
@@ -949,7 +950,7 @@ void AlarmHandler::read_StatisticsResetTime(Tango::Attribute &attr)
 //--------------------------------------------------------
 void AlarmHandler::read_alarm(Tango::Attribute &attr)
 {
-	DEBUG_STREAM << "AlarmHandler::read_alarm(Tango::Attribute &attr) entering... " << endl;
+	//DEBUG_STREAM << "AlarmHandler::read_alarm(Tango::Attribute &attr) entering... " << endl;
 	/*----- PROTECTED REGION ID(AlarmHandler::read_alarm) ENABLED START -----*/
 	// Add your own code here
 #if 0
@@ -1289,7 +1290,7 @@ void AlarmHandler::read_alarmFrequency(Tango::Attribute &attr)
 //--------------------------------------------------------
 void AlarmHandler::read_alarmSummary(Tango::Attribute &attr)
 {
-	DEBUG_STREAM << "AlarmHandler::read_alarmSummary(Tango::Attribute &attr) entering... " << endl;
+	//DEBUG_STREAM << "AlarmHandler::read_alarmSummary(Tango::Attribute &attr) entering... " << endl;
 	/*----- PROTECTED REGION ID(AlarmHandler::read_alarmSummary) ENABLED START -----*/
 	//	Set the attribute value
 	attr.set_value(attr_alarmSummary_read, alarmSummary_sz);
@@ -1308,7 +1309,7 @@ void AlarmHandler::read_alarmSummary(Tango::Attribute &attr)
 //--------------------------------------------------------
 void AlarmHandler::read_AlarmState(Tango::Attribute &attr)
 {
-	DEBUG_STREAM << "AlarmHandler::read_AlarmState(Tango::Attribute &attr) entering... " << endl;
+	//DEBUG_STREAM << "AlarmHandler::read_AlarmState(Tango::Attribute &attr) entering... " << endl;
 	Tango::DevEnum	*att_value = get_AlarmState_data_ptr(attr.get_name());
 	/*----- PROTECTED REGION ID(AlarmHandler::read_AlarmState) ENABLED START -----*/
 	string reason("");
@@ -1365,7 +1366,7 @@ void AlarmHandler::read_AlarmState(Tango::Attribute &attr)
 //--------------------------------------------------------
 void AlarmHandler::read_AlarmFormula(Tango::Attribute &attr)
 {
-	DEBUG_STREAM << "AlarmHandler::read_AlarmFormula(Tango::Attribute &attr) entering... " << endl;
+	//DEBUG_STREAM << "AlarmHandler::read_AlarmFormula(Tango::Attribute &attr) entering... " << endl;
 	Tango::DevString	*att_value = get_AlarmFormula_data_ptr(attr.get_name());
 	/*----- PROTECTED REGION ID(AlarmHandler::read_AlarmFormula) ENABLED START -----*/
 	//	Set the attribute value
@@ -2202,6 +2203,7 @@ void AlarmHandler::silence(const Tango::DevVarStringArray *argin)
 
 	/*----- PROTECTED REGION END -----*/	//	AlarmHandler::silence
 }
+
 //--------------------------------------------------------
 /**
  *	Command Modify related method
@@ -2223,84 +2225,7 @@ void AlarmHandler::modify(Tango::DevString argin)
 	//------------------------------
 	string alarm_string(argin);
 	alarm_t alm;
-	alarm_parse al_gr(alm);    //  Construct Spirit grammar
-	alm.name.clear();
-	alm.attr_name.clear();
-	alm.quality = Tango::ATTR_VALID;
-	alm.ex_reason.clear();
-	alm.ex_desc.clear();
-	alm.ex_origin.clear();
-	alm.formula.clear();
-	alm.msg.clear();
-	alm.lev.clear();
-	alm.grp=0;
-	alm.to_be_evaluated = false;
-	alm.on_delay = 0;
-	alm.off_delay = 0;
-	alm.silent_time = -1;
-	alm.silenced = -1;
-	alm.cmd_name_a.clear();
-	alm.cmd_dp_a.clear();
-	alm.cmd_action_a.clear();
-	alm.send_arg_a = false;
-	alm.dp_a = NULL;
-	alm.cmd_name_n.clear();
-	alm.cmd_dp_n.clear();
-	alm.cmd_action_n.clear();
-	alm.send_arg_n = false;
-	alm.dp_n = NULL;
-	alm.enabled=true;
-	alm.shelved=false;
-
-	alm.formula_tree =
-	//boost::spirit::tree_parse_info< std::string::iterator, factory_t> tmp =
-	ast_parse<factory_t>(alarm_string.begin(), alarm_string.end(), al_gr, space_p);	//parse string s with grammar al_gr, skipping white spaces
-	if (alm.formula_tree.full)
-	{
-    	std::transform(alm.name.begin(), alm.name.end(), alm.name.begin(), (int(*)(int))tolower);		//transform to lowercase
-    	//std::transform(alm.formula.begin(), alm.formula.end(), alm.formula.begin(), (int(*)(int))tolower);		//transform to lowercase: incorrect, state has to be written upercase
-    	std::transform(alm.lev.begin(), alm.lev.end(), alm.lev.begin(), (int(*)(int))tolower);		//transform to lowercase
-
-    	if(alm.cmd_name_a.length() > 0)
-    	{
-			const char *c = alm.cmd_name_a.c_str();
-			int j = 0;
-			while (*c) {
-				if (*c == '/')
-					j++;
-				if (j < 3)
-					alm.cmd_dp_a.push_back(*c);
-				else if (*c != '/')
-					alm.cmd_action_a.push_back(*c);
-				c++;
-			}
-    	}
-    	if(alm.cmd_name_n.length() > 0)
-    	{
-			const char *c = alm.cmd_name_n.c_str();
-			int j = 0;
-			while (*c) {
-				if (*c == '/')
-					j++;
-				if (j < 3)
-					alm.cmd_dp_n.push_back(*c);
-				else if (*c != '/')
-					alm.cmd_action_n.push_back(*c);
-				c++;
-			}
-    	}
-
-	}
-    else
-    {
-       	ostringstream o;
-		o << __func__<<": Parsing Failed, parsed up to '" << string(alarm_string.begin(), alm.formula_tree.stop) << "' not parsed '" << string(alm.formula_tree.stop, alarm_string.end()) << "'"; //TODO
-       	DEBUG_STREAM << o.str() << endl;
-       	Tango::Except::throw_exception( \
-				(const char*)"Parsing Failed!", \
-				(const char*)o.str().c_str(), \
-				(const char*)__func__, Tango::ERR);
-    }
+	parse_alarm(alarm_string, alm);
 
 	DEBUG_STREAM << "AlarmHandler::Modify: parsing ended: alm name=" << alm.name << endl;
 	//------------------------------
@@ -3199,6 +3124,46 @@ Tango::DevVarStringArray *AlarmHandler::get_alarm_info(const Tango::DevVarString
 	return argout;
 }
 //--------------------------------------------------------
+/**
+ *	Command ReLoadAll related method
+ *	Description: Re Load all alarms.
+ *
+ */
+//--------------------------------------------------------
+void AlarmHandler::re_load_all()
+{
+	DEBUG_STREAM << "AlarmHandler::ReLoadAll()  - " << device_name << endl;
+	/*----- PROTECTED REGION ID(AlarmHandler::re_load_all) ENABLED START -----*/
+	//	Add your own code
+	vector<string> tmp_alm_vec;
+	alarms.get_alarm_list_db(tmp_alm_vec, saved_alarms);
+	for(const auto &it_al : tmp_alm_vec)
+	{
+		bool modify_err=false;
+		try
+		{
+			modify((Tango::DevString)it_al.c_str());
+		}
+		catch(Tango::DevFailed &e)
+		{
+			INFO_STREAM << __func__ << ": error modifying '" << it_al << "' err='" << e.errors[0].desc << "'";
+			modify_err=true;		
+		}
+		if(modify_err)
+		{
+			try
+			{
+				load((Tango::DevString)it_al.c_str());
+			}
+			catch(Tango::DevFailed &e)
+			{
+				INFO_STREAM << __func__ << ": error loading '" << it_al << "' err='" << e.errors[0].desc << "'";
+			}
+		}
+	}
+	/*----- PROTECTED REGION END -----*/	//	AlarmHandler::re_load_all
+}
+//--------------------------------------------------------
 /**
  *	Method      : AlarmHandler::add_dynamic_commands()
  *	Description : Create the dynamic commands if any
@@ -5562,5 +5527,88 @@ void AlarmHandler::remove_AlarmState_dynamic_attribute_no_clean_db(string attnam
 }
 
 
+void AlarmHandler::parse_alarm(string &alarm_string, alarm_t &alm)
+{
+	alarm_parse al_gr(alm);    //  Construct Spirit grammar
+	alm.name.clear();
+	alm.attr_name.clear();
+	alm.quality = Tango::ATTR_VALID;
+	alm.ex_reason.clear();
+	alm.ex_desc.clear();
+	alm.ex_origin.clear();
+	alm.formula.clear();
+	alm.msg.clear();
+	alm.lev.clear();
+	alm.grp=0;
+	alm.to_be_evaluated = false;
+	alm.on_delay = 0;
+	alm.off_delay = 0;
+	alm.silent_time = -1;
+	alm.silenced = -1;
+	alm.cmd_name_a.clear();
+	alm.cmd_dp_a.clear();
+	alm.cmd_action_a.clear();
+	alm.send_arg_a = false;
+	alm.dp_a = NULL;
+	alm.cmd_name_n.clear();
+	alm.cmd_dp_n.clear();
+	alm.cmd_action_n.clear();
+	alm.send_arg_n = false;
+	alm.dp_n = NULL;
+	alm.enabled=true;
+	alm.shelved=false;
+
+	alm.formula_tree =
+	//boost::spirit::tree_parse_info< std::string::iterator, factory_t> tmp =
+	ast_parse<factory_t>(alarm_string.begin(), alarm_string.end(), al_gr, space_p);	//parse string s with grammar al_gr, skipping white spaces
+	if (alm.formula_tree.full)
+	{
+    	std::transform(alm.name.begin(), alm.name.end(), alm.name.begin(), (int(*)(int))tolower);		//transform to lowercase
+    	//std::transform(alm.formula.begin(), alm.formula.end(), alm.formula.begin(), (int(*)(int))tolower);		//transform to lowercase: incorrect, state has to be written upercase
+    	std::transform(alm.lev.begin(), alm.lev.end(), alm.lev.begin(), (int(*)(int))tolower);		//transform to lowercase
+
+    	if(alm.cmd_name_a.length() > 0)
+    	{
+			const char *c = alm.cmd_name_a.c_str();
+			int j = 0;
+			while (*c) {
+				if (*c == '/')
+					j++;
+				if (j < 3)
+					alm.cmd_dp_a.push_back(*c);
+				else if (*c != '/')
+					alm.cmd_action_a.push_back(*c);
+				c++;
+			}
+    	}
+    	if(alm.cmd_name_n.length() > 0)
+    	{
+			const char *c = alm.cmd_name_n.c_str();
+			int j = 0;
+			while (*c) {
+				if (*c == '/')
+					j++;
+				if (j < 3)
+					alm.cmd_dp_n.push_back(*c);
+				else if (*c != '/')
+					alm.cmd_action_n.push_back(*c);
+				c++;
+			}
+    	}
+
+	}
+	else
+	{
+		ostringstream o;
+		o << __func__<<": Parsing Failed, parsed up to '" << string(alarm_string.begin(), alm.formula_tree.stop) << "' not parsed '" << string(alm.formula_tree.stop, alarm_string.end()) << "'"; //TODO
+		DEBUG_STREAM << o.str() << endl;
+		Tango::Except::throw_exception( \
+			(const char*)"Parsing Failed!", \
+			(const char*)o.str().c_str(), \
+			(const char*)__func__, Tango::ERR);
+	}
+}
+
+
 /*----- PROTECTED REGION END -----*/	//	AlarmHandler::namespace_ending
 } //	namespace
diff --git a/src/AlarmHandler.h b/src/AlarmHandler.h
index 3b48c7f1d16b90212b4835504584c71d68ec467b..f006574831c8e9bef0fc3fed2d8b18adce323993 100644
--- a/src/AlarmHandler.h
+++ b/src/AlarmHandler.h
@@ -493,6 +493,13 @@ public:
 	 */
 	virtual Tango::DevVarStringArray *get_alarm_info(const Tango::DevVarStringArray *argin);
 	virtual bool is_GetAlarmInfo_allowed(const CORBA::Any &any);
+	/**
+	 *	Command ReLoadAll related method
+	 *	Description: Re Load all alarms.
+	 *
+	 */
+	virtual void re_load_all();
+	virtual bool is_ReLoadAll_allowed(const CORBA::Any &any);
 
 
 	//--------------------------------------------------------
@@ -562,6 +569,8 @@ private:
 
 	void remove_AlarmState_dynamic_attribute_no_clean_db(string attname);
 
+	void parse_alarm(string &alarm_string, alarm_t &alm);
+
 	SubscribeThread *thread;
 
 public:
diff --git a/src/AlarmHandler.xmi b/src/AlarmHandler.xmi
index b4af05f8c78f9d573fae2b6f5bab3cc9d193d5ba..60c8e8657eb86258872970859fa3d29bb38f4424 100644
--- a/src/AlarmHandler.xmi
+++ b/src/AlarmHandler.xmi
@@ -168,6 +168,15 @@
       </argout>
       <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
     </commands>
+    <commands name="ReLoadAll" description="Re Load all alarms." execMethod="re_load_all" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
+      <argin description="">
+        <type xsi:type="pogoDsl:VoidType"/>
+      </argin>
+      <argout description="">
+        <type xsi:type="pogoDsl:VoidType"/>
+      </argout>
+      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+    </commands>
     <attributes name="alarmAudible" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
       <dataType xsi:type="pogoDsl:BooleanType"/>
       <changeEvent fire="true" libCheckCriteria="false"/>
diff --git a/src/AlarmHandlerClass.cpp b/src/AlarmHandlerClass.cpp
index d53a4c6c72f8c0af68116d190b7e0f771f8679e7..02edbc2570f08d3c20b62d092fc515e477bdefde 100644
--- a/src/AlarmHandlerClass.cpp
+++ b/src/AlarmHandlerClass.cpp
@@ -406,6 +406,24 @@ CORBA::Any *GetAlarmInfoClass::execute(Tango::DeviceImpl *device, const CORBA::A
 	return insert((static_cast<AlarmHandler *>(device))->get_alarm_info(argin));
 }
 
+//--------------------------------------------------------
+/**
+ * method : 		ReLoadAllClass::execute()
+ * description : 	method to trigger the execution of the command.
+ *
+ * @param	device	The device on which the command must be executed
+ * @param	in_any	The command input data
+ *
+ *	returns The command output data (packed in the Any object)
+ */
+//--------------------------------------------------------
+CORBA::Any *ReLoadAllClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any))
+{
+	cout2 << "ReLoadAllClass::execute(): arrived" << endl;
+	((static_cast<AlarmHandler *>(device))->re_load_all());
+	return new CORBA::Any();
+}
+
 
 //===================================================================
 //	Properties management
@@ -1226,6 +1244,15 @@ void AlarmHandlerClass::command_factory()
 			Tango::OPERATOR);
 	command_list.push_back(pGetAlarmInfoCmd);
 
+	//	Command ReLoadAll
+	ReLoadAllClass	*pReLoadAllCmd =
+		new ReLoadAllClass("ReLoadAll",
+			Tango::DEV_VOID, Tango::DEV_VOID,
+			"",
+			"",
+			Tango::OPERATOR);
+	command_list.push_back(pReLoadAllCmd);
+
 	/*----- PROTECTED REGION ID(AlarmHandlerClass::command_factory_after) ENABLED START -----*/
 	
 	//	Add your own code
diff --git a/src/AlarmHandlerClass.h b/src/AlarmHandlerClass.h
index b17e2a3b750ae88ef19f67894c20c6bf24cb0c7d..fd49b6636e9d0b5f3910acdb7f052c23e7690024 100644
--- a/src/AlarmHandlerClass.h
+++ b/src/AlarmHandlerClass.h
@@ -558,6 +558,29 @@ public:
 	{return (static_cast<AlarmHandler *>(dev))->is_GetAlarmInfo_allowed(any);}
 };
 
+//	Command ReLoadAll class definition
+class ReLoadAllClass : public Tango::Command
+{
+public:
+	ReLoadAllClass(const char   *name,
+	               Tango::CmdArgType in,
+				   Tango::CmdArgType out,
+				   const char        *in_desc,
+				   const char        *out_desc,
+				   Tango::DispLevel  level)
+	:Command(name,in,out,in_desc,out_desc, level)	{};
+
+	ReLoadAllClass(const char   *name,
+	               Tango::CmdArgType in,
+				   Tango::CmdArgType out)
+	:Command(name,in,out)	{};
+	~ReLoadAllClass() {};
+	
+	virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any);
+	virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any)
+	{return (static_cast<AlarmHandler *>(dev))->is_ReLoadAll_allowed(any);}
+};
+
 
 /**
  *	The AlarmHandlerClass singleton definition
diff --git a/src/AlarmHandlerStateMachine.cpp b/src/AlarmHandlerStateMachine.cpp
index 393ac93eba970227509ac4b5eb560e4bd5a89c1a..0a855a31c9674dab54d39b0940761897dbab343d 100644
--- a/src/AlarmHandlerStateMachine.cpp
+++ b/src/AlarmHandlerStateMachine.cpp
@@ -484,6 +484,21 @@ bool AlarmHandler::is_GetAlarmInfo_allowed(TANGO_UNUSED(const CORBA::Any &any))
 	return true;
 }
 
+//--------------------------------------------------------
+/**
+ *	Method      : AlarmHandler::is_ReLoadAll_allowed()
+ *	Description : Execution allowed for ReLoadAll attribute
+ */
+//--------------------------------------------------------
+bool AlarmHandler::is_ReLoadAll_allowed(TANGO_UNUSED(const CORBA::Any &any))
+{
+	//	Not any excluded states for ReLoadAll command.
+	/*----- PROTECTED REGION ID(AlarmHandler::ReLoadAllStateAllowed) ENABLED START -----*/
+	
+	/*----- PROTECTED REGION END -----*/	//	AlarmHandler::ReLoadAllStateAllowed
+	return true;
+}
+
 
 /*----- PROTECTED REGION ID(AlarmHandler::AlarmHandlerStateAllowed.AdditionalMethods) ENABLED START -----*/