diff --git a/src/Client.cpp b/src/Client.cpp
index 46ab55bda3b236d5d200a31cdb132f78ba8c166d..94969ef483703909bfc0de346b5fdaba67b8de5d 100644
--- a/src/Client.cpp
+++ b/src/Client.cpp
@@ -1,4 +1,5 @@
 #include <Client.h>
+#include <DataImporter.h>
 
 #include <boost/lexical_cast.hpp>
 #include <boost/bind.hpp>
@@ -10,8 +11,8 @@ namespace DataImporter_ns
 //==============================================================================
 //      Client::Client()
 //==============================================================================
-Client::Client(Tango::DeviceImpl* deviceImpl_p, Configuration::SP configuration_sp) :
-    Tango::LogAdapter(deviceImpl_p), m_deviceImpl_p(deviceImpl_p),
+Client::Client(DataImporter* dataImporter_p, Configuration::SP configuration_sp) :
+    Tango::LogAdapter(dataImporter_p), m_dataImporter_p(dataImporter_p),
     m_configuration_sp(configuration_sp),  m_resolver(m_ioService),
     m_resetConnectionTimer(m_ioService), m_listsUpdateTimer(m_ioService)
 {
@@ -19,7 +20,7 @@ Client::Client(Tango::DeviceImpl* deviceImpl_p, Configuration::SP configuration_
 
     GOOGLE_PROTOBUF_VERIFY_VERSION;
 
-    m_dBManager_sp = DBManager::create(deviceImpl_p, configuration_sp);
+    m_dBManager_sp = DBManager::create(dataImporter_p, configuration_sp);
 
     m_state = Tango::OFF;
     m_status="Disconnected";
@@ -55,7 +56,7 @@ void Client::start()
 
     m_dBManager_sp->connectAll();
 
-    m_protocolManager_sp = ProtocolManager::create(m_deviceImpl_p,
+    m_protocolManager_sp = ProtocolManager::create(m_dataImporter_p,
         m_configuration_sp, m_dBManager_sp);
 
     m_ioService.reset();
diff --git a/src/Client.h b/src/Client.h
index f45abe8ca61f5b4624eb82496a0ca157270df5a6..9d9ba258e5fdfbc459ee7484414241965f4854c1 100644
--- a/src/Client.h
+++ b/src/Client.h
@@ -20,6 +20,8 @@
 namespace DataImporter_ns
 {
 
+class DataImporter;
+
 class Client : public Tango::LogAdapter
 {
 public:
@@ -32,7 +34,7 @@ protected:
 //------------------------------------------------------------------------------
 //  [Protected] Constructor destructor
 //------------------------------------------------------------------------------
-    Client(Tango::DeviceImpl*, Configuration::SP);
+    Client(DataImporter*, Configuration::SP);
 
     virtual ~Client();
 
@@ -143,7 +145,7 @@ protected:
 //  [Protected] Class variables
 //------------------------------------------------------------------------------
     //Tango server class pointer
-    Tango::DeviceImpl* m_deviceImpl_p;
+    DataImporter* m_dataImporter_p;
 
     //Configuration shared pointer
     Configuration::SP m_configuration_sp;
diff --git a/src/DataImporter.cpp b/src/DataImporter.cpp
index 36fe2e5d799cfdbd95585b420a9023b06cd3a8af..d280a4522367950625e55d673dba5167c928a496 100644
--- a/src/DataImporter.cpp
+++ b/src/DataImporter.cpp
@@ -63,11 +63,14 @@
 //  Status        |  Inherited (no method)
 //  On            |  on
 //  Off           |  off
+//  ResetCounter  |  reset_counter
 //================================================================
 
 //================================================================
-//  Attributes managed is:
+//  Attributes managed are:
 //================================================================
+//  RegularFileCounter  |  Tango::DevULong	Scalar
+//  FailedFileCounter   |  Tango::DevULong	Scalar
 //================================================================
 
 namespace DataImporter_ns
@@ -126,6 +129,8 @@ void DataImporter::delete_device()
 	//	Delete device allocated objects
 
 	/*----- PROTECTED REGION END -----*/	//	DataImporter::delete_device
+	delete[] attr_RegularFileCounter_read;
+	delete[] attr_FailedFileCounter_read;
 }
 
 //--------------------------------------------------------
@@ -148,6 +153,8 @@ void DataImporter::init_device()
 	//	Get the device properties from database
 	get_device_property();
 
+	attr_RegularFileCounter_read = new Tango::DevULong[1];
+	attr_FailedFileCounter_read = new Tango::DevULong[1];
 
 	/*----- PROTECTED REGION ID(DataImporter::init_device) ENABLED START -----*/
 
@@ -608,7 +615,7 @@ void DataImporter::get_device_property()
 //--------------------------------------------------------
 void DataImporter::always_executed_hook()
 {
-	INFO_STREAM << "DataImporter::always_executed_hook()  " << device_name << endl;
+	DEBUG_STREAM << "DataImporter::always_executed_hook()  " << device_name << endl;
 	/*----- PROTECTED REGION ID(DataImporter::always_executed_hook) ENABLED START -----*/
 
     if(get_state() != Tango::FAULT)
@@ -640,6 +647,46 @@ void DataImporter::read_attr_hardware(TANGO_UNUSED(vector<long> &attr_list))
 	/*----- PROTECTED REGION END -----*/	//	DataImporter::read_attr_hardware
 }
 
+//--------------------------------------------------------
+/**
+ *	Read attribute RegularFileCounter related method
+ *	Description:
+ *
+ *	Data type:	Tango::DevULong
+ *	Attr type:	Scalar
+ */
+//--------------------------------------------------------
+void DataImporter::read_RegularFileCounter(Tango::Attribute &attr)
+{
+	DEBUG_STREAM << "DataImporter::read_RegularFileCounter(Tango::Attribute &attr) entering... " << endl;
+	/*----- PROTECTED REGION ID(DataImporter::read_RegularFileCounter) ENABLED START -----*/
+
+    boost::mutex::scoped_lock regularCounterLock(m_regularCounterMutex);
+
+	attr.set_value(attr_RegularFileCounter_read);
+
+	/*----- PROTECTED REGION END -----*/	//	DataImporter::read_RegularFileCounter
+}
+//--------------------------------------------------------
+/**
+ *	Read attribute FailedFileCounter related method
+ *	Description:
+ *
+ *	Data type:	Tango::DevULong
+ *	Attr type:	Scalar
+ */
+//--------------------------------------------------------
+void DataImporter::read_FailedFileCounter(Tango::Attribute &attr)
+{
+	DEBUG_STREAM << "DataImporter::read_FailedFileCounter(Tango::Attribute &attr) entering... " << endl;
+	/*----- PROTECTED REGION ID(DataImporter::read_FailedFileCounter) ENABLED START -----*/
+
+    boost::mutex::scoped_lock failedCounterLock(m_failedCounterMutex);
+
+	attr.set_value(attr_FailedFileCounter_read);
+
+	/*----- PROTECTED REGION END -----*/	//	DataImporter::read_FailedFileCounter
+}
 
 //--------------------------------------------------------
 /**
@@ -722,9 +769,68 @@ void DataImporter::off()
 
 	/*----- PROTECTED REGION END -----*/	//	DataImporter::off
 }
+//--------------------------------------------------------
+/**
+ *	Command ResetCounter related method
+ *	Description:
+ *
+ */
+//--------------------------------------------------------
+void DataImporter::reset_counter()
+{
+	DEBUG_STREAM << "DataImporter::ResetCounter()  - " << device_name << endl;
+	/*----- PROTECTED REGION ID(DataImporter::reset_counter) ENABLED START -----*/
+
+    boost::mutex::scoped_lock regularCounterLock(m_regularCounterMutex);
+
+	*attr_RegularFileCounter_read = 0;
+
+    boost::mutex::scoped_lock failedCounterLock(m_failedCounterMutex);
+
+	*attr_FailedFileCounter_read = 0;
+
+	/*----- PROTECTED REGION END -----*/	//	DataImporter::reset_counter
+}
 
 /*----- PROTECTED REGION ID(DataImporter::namespace_ending) ENABLED START -----*/
 
+//==============================================================================
+//      DataImporter::incrementRegularCounter()
+//==============================================================================
+void DataImporter::incrementRegularCounter()
+{
+    DEBUG_STREAM << "DataImporter::incrementRegularCounter()  - " << device_name << endl;
+
+    boost::mutex::scoped_lock regularCounterLock(m_regularCounterMutex);
+
+	++*attr_RegularFileCounter_read;
+}
+
+//==============================================================================
+//      DataImporter::incrementFailedCounter()
+//==============================================================================
+void DataImporter::incrementFailedCounter()
+{
+    DEBUG_STREAM << "DataImporter::incrementFailedCounter()  - " << device_name << endl;
+
+    boost::mutex::scoped_lock failedCounterLock(m_failedCounterMutex);
+
+	++*attr_FailedFileCounter_read;
+}
+
+//==============================================================================
+//      DataImporter::decrementFailedCounter()
+//==============================================================================
+void DataImporter::decrementFailedCounter()
+{
+    DEBUG_STREAM << "DataImporter::decrementFailedCounter()  - " << device_name << endl;
+
+    boost::mutex::scoped_lock failedCounterLock(m_failedCounterMutex);
+
+	if(*attr_FailedFileCounter_read > 0)
+        --*attr_FailedFileCounter_read;
+}
+
 //==============================================================================
 //      DataImporter::checkIfFileExists()
 //==============================================================================
diff --git a/src/DataImporter.h b/src/DataImporter.h
index 08ac019b26d5ae1e077910631431684a8935f6ea..73563c521840d77d52de3d3cea45d330c667eaf7 100644
--- a/src/DataImporter.h
+++ b/src/DataImporter.h
@@ -73,6 +73,12 @@ class DataImporter : public TANGO_BASE_CLASS
     //Client class shared pointer
     Client::SP m_client_sp;
 
+    //Regular file counter synchronization
+    boost::mutex m_regularCounterMutex;
+
+    //Failed file counter synchronization
+    boost::mutex m_failedCounterMutex;
+
     //Max port number allowed value for data import database
     static const unsigned int MAX_PORT_NUMBER = 65535;
 
@@ -138,6 +144,10 @@ public:
 	//	AuxDatabaseFailedTable:	File transfer auxiliary database failed transfer table
 	string	auxDatabaseFailedTable;
 
+//	Attribute data members
+public:
+	Tango::DevULong	*attr_RegularFileCounter_read;
+	Tango::DevULong	*attr_FailedFileCounter_read;
 
 //	Constructors and destructors
 public:
@@ -199,6 +209,25 @@ public:
 	//--------------------------------------------------------
 	virtual void read_attr_hardware(vector<long> &attr_list);
 
+/**
+ *	Attribute RegularFileCounter related methods
+ *	Description:
+ *
+ *	Data type:	Tango::DevULong
+ *	Attr type:	Scalar
+ */
+	virtual void read_RegularFileCounter(Tango::Attribute &attr);
+	virtual bool is_RegularFileCounter_allowed(Tango::AttReqType type);
+/**
+ *	Attribute FailedFileCounter related methods
+ *	Description:
+ *
+ *	Data type:	Tango::DevULong
+ *	Attr type:	Scalar
+ */
+	virtual void read_FailedFileCounter(Tango::Attribute &attr);
+	virtual bool is_FailedFileCounter_allowed(Tango::AttReqType type);
+
 
 	//--------------------------------------------------------
 	/**
@@ -226,10 +255,28 @@ public:
 	 */
 	virtual void off();
 	virtual bool is_Off_allowed(const CORBA::Any &any);
+	/**
+	 *	Command ResetCounter related method
+	 *	Description:
+	 *
+	 */
+	virtual void reset_counter();
+	virtual bool is_ResetCounter_allowed(const CORBA::Any &any);
 
 
 /*----- PROTECTED REGION ID(DataImporter::Additional Method prototypes) ENABLED START -----*/
 
+//------------------------------------------------------------------------------
+//  [Public] Counters methods
+//------------------------------------------------------------------------------
+
+    virtual void incrementRegularCounter();
+
+    virtual void incrementFailedCounter();
+
+    virtual void decrementFailedCounter();
+
+protected:
 //------------------------------------------------------------------------------
 //  [Protected] Utilities methods
 //------------------------------------------------------------------------------
diff --git a/src/DataImporter.xmi b/src/DataImporter.xmi
index cac1f4322df4bc9910ba1faaf824e78fcc3802bb..496f8db25965936f9760b13404c334a1e47e9891 100644
--- a/src/DataImporter.xmi
+++ b/src/DataImporter.xmi
@@ -183,6 +183,31 @@
       <excludedStates>OFF</excludedStates>
       <excludedStates>FAULT</excludedStates>
     </commands>
+    <commands name="ResetCounter" description="" execMethod="reset_counter" displayLevel="OPERATOR" polledPeriod="0">
+      <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="RegularFileCounter" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
+      <dataType xsi:type="pogoDsl:UIntType"/>
+      <changeEvent fire="false" libCheckCriteria="false"/>
+      <archiveEvent fire="false" libCheckCriteria="false"/>
+      <dataReadyEvent fire="false" libCheckCriteria="true"/>
+      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
+    </attributes>
+    <attributes name="FailedFileCounter" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
+      <dataType xsi:type="pogoDsl:UIntType"/>
+      <changeEvent fire="false" libCheckCriteria="false"/>
+      <archiveEvent fire="false" libCheckCriteria="false"/>
+      <dataReadyEvent fire="false" libCheckCriteria="true"/>
+      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
+    </attributes>
     <states name="ON" description="Data exporter is in ON state (searching new file to transfer)">
       <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
     </states>
diff --git a/src/DataImporterClass.cpp b/src/DataImporterClass.cpp
index b34f8fe14386ecb7eda304683e8aebf565d94f57..e5852054b28dd8eea5a7040b0472da0d0b75f7bb 100644
--- a/src/DataImporterClass.cpp
+++ b/src/DataImporterClass.cpp
@@ -131,8 +131,8 @@ DataImporterClass *DataImporterClass::init(const char *name)
 		catch (bad_alloc &)
 		{
 			throw;
-		}
-	}
+		}		
+	}		
 	return _instance;
 }
 
@@ -194,6 +194,24 @@ CORBA::Any *OffClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORB
 	return new CORBA::Any();
 }
 
+//--------------------------------------------------------
+/**
+ * method : 		ResetCounterClass::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 *ResetCounterClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any))
+{
+	cout2 << "ResetCounterClass::execute(): arrived" << endl;
+	((static_cast<DataImporter *>(device))->reset_counter());
+	return new CORBA::Any();
+}
+
 
 //===================================================================
 //	Properties management
@@ -266,7 +284,7 @@ void DataImporterClass::get_class_property()
 	cl_prop.push_back(Tango::DbDatum("AuxDatabaseSchema"));
 	cl_prop.push_back(Tango::DbDatum("AuxDatabaseTimestampTable"));
 	cl_prop.push_back(Tango::DbDatum("AuxDatabaseFailedTable"));
-
+	
 	//	Call database and extract values
 	if (Tango::Util::instance()->_UseDb==true)
 		get_db_class()->get_property(cl_prop);
@@ -913,7 +931,7 @@ void DataImporterClass::write_class_property()
 				header = "$HeadURL: ";
 				start = header.length();
 				string	strloc = src_path.substr(start, (end-start));
-
+				
 				Tango::DbDatum	svn_loc("svn_location");
 				svn_loc << strloc;
 				data.push_back(svn_loc);
@@ -922,13 +940,13 @@ void DataImporterClass::write_class_property()
 	}
 
 	//	Get CVS or SVN revision tag
-
+	
 	// CVS tag
 	string	tagname(TagName);
 	header = "$Name: ";
 	start = header.length();
 	string	endstr(" $");
-
+	
 	end   = tagname.find(endstr);
 	if (end!=string::npos && end>start)
 	{
@@ -937,17 +955,17 @@ void DataImporterClass::write_class_property()
 		cvs_tag << strtag;
 		data.push_back(cvs_tag);
 	}
-
+	
 	// SVN tag
 	string	svnpath(SvnPath);
 	header = "$HeadURL: ";
 	start = header.length();
-
+	
 	end   = svnpath.find(endstr);
 	if (end!=string::npos && end>start)
 	{
 		string	strloc = svnpath.substr(start, end-start);
-
+		
 		string tagstr ("/tags/");
 		start = strloc.find(tagstr);
 		if ( start!=string::npos )
@@ -955,7 +973,7 @@ void DataImporterClass::write_class_property()
 			start = start + tagstr.length();
 			end   = strloc.find(filename);
 			string	strtag = strloc.substr(start, end-start-1);
-
+			
 			Tango::DbDatum	svn_tag("svn_tag");
 			svn_tag << strtag;
 			data.push_back(svn_tag);
@@ -1005,7 +1023,7 @@ void DataImporterClass::device_factory(const Tango::DevVarStringArray *devlist_p
 	for (unsigned long i=0 ; i<devlist_ptr->length() ; i++)
 	{
 		cout4 << "Device name : " << (*devlist_ptr)[i].in() << endl;
-		device_list.push_back(new DataImporter(this, (*devlist_ptr)[i]));
+		device_list.push_back(new DataImporter(this, (*devlist_ptr)[i]));							 
 	}
 
 	//	Manage dynamic attributes if any
@@ -1045,6 +1063,54 @@ void DataImporterClass::attribute_factory(vector<Tango::Attr *> &att_list)
 	//	Add your own code
 
 	/*----- PROTECTED REGION END -----*/	//	DataImporterClass::attribute_factory_before
+	//	Attribute : RegularFileCounter
+	RegularFileCounterAttrib	*regularfilecounter = new RegularFileCounterAttrib();
+	Tango::UserDefaultAttrProp	regularfilecounter_prop;
+	//	description	not set for RegularFileCounter
+	//	label	not set for RegularFileCounter
+	//	unit	not set for RegularFileCounter
+	//	standard_unit	not set for RegularFileCounter
+	//	display_unit	not set for RegularFileCounter
+	//	format	not set for RegularFileCounter
+	//	max_value	not set for RegularFileCounter
+	//	min_value	not set for RegularFileCounter
+	//	max_alarm	not set for RegularFileCounter
+	//	min_alarm	not set for RegularFileCounter
+	//	max_warning	not set for RegularFileCounter
+	//	min_warning	not set for RegularFileCounter
+	//	delta_t	not set for RegularFileCounter
+	//	delta_val	not set for RegularFileCounter
+	
+	regularfilecounter->set_default_properties(regularfilecounter_prop);
+	//	Not Polled
+	regularfilecounter->set_disp_level(Tango::OPERATOR);
+	//	Not Memorized
+	att_list.push_back(regularfilecounter);
+
+	//	Attribute : FailedFileCounter
+	FailedFileCounterAttrib	*failedfilecounter = new FailedFileCounterAttrib();
+	Tango::UserDefaultAttrProp	failedfilecounter_prop;
+	//	description	not set for FailedFileCounter
+	//	label	not set for FailedFileCounter
+	//	unit	not set for FailedFileCounter
+	//	standard_unit	not set for FailedFileCounter
+	//	display_unit	not set for FailedFileCounter
+	//	format	not set for FailedFileCounter
+	//	max_value	not set for FailedFileCounter
+	//	min_value	not set for FailedFileCounter
+	//	max_alarm	not set for FailedFileCounter
+	//	min_alarm	not set for FailedFileCounter
+	//	max_warning	not set for FailedFileCounter
+	//	min_warning	not set for FailedFileCounter
+	//	delta_t	not set for FailedFileCounter
+	//	delta_val	not set for FailedFileCounter
+	
+	failedfilecounter->set_default_properties(failedfilecounter_prop);
+	//	Not Polled
+	failedfilecounter->set_disp_level(Tango::OPERATOR);
+	//	Not Memorized
+	att_list.push_back(failedfilecounter);
+
 	//	Create a list of static attributes
 	create_static_attribute_list(get_class_attr()->get_attr_list());
 	/*----- PROTECTED REGION ID(DataImporterClass::attribute_factory_after) ENABLED START -----*/
@@ -1087,6 +1153,15 @@ void DataImporterClass::command_factory()
 			Tango::OPERATOR);
 	command_list.push_back(pOffCmd);
 
+	//	Command ResetCounter
+	ResetCounterClass	*pResetCounterCmd =
+		new ResetCounterClass("ResetCounter",
+			Tango::DEV_VOID, Tango::DEV_VOID,
+			"",
+			"",
+			Tango::OPERATOR);
+	command_list.push_back(pResetCounterCmd);
+
 	/*----- PROTECTED REGION ID(DataImporterClass::command_factory_after) ENABLED START -----*/
 
 	//	Add your own code
@@ -1103,7 +1178,7 @@ void DataImporterClass::command_factory()
  * method : 		DataImporterClass::create_static_attribute_list
  * description : 	Create the a list of static attributes
  *
- * @param	att_list	the ceated attribute list
+ * @param	att_list	the ceated attribute list 
  */
 //--------------------------------------------------------
 void DataImporterClass::create_static_attribute_list(vector<Tango::Attr *> &att_list)
@@ -1137,10 +1212,10 @@ void DataImporterClass::erase_dynamic_attributes(const Tango::DevVarStringArray
 	Tango::Util *tg = Tango::Util::instance();
 
 	for (unsigned long i=0 ; i<devlist_ptr->length() ; i++)
-	{
+	{	
 		Tango::DeviceImpl *dev_impl = tg->get_device_by_name(((string)(*devlist_ptr)[i]).c_str());
 		DataImporter *dev = static_cast<DataImporter *> (dev_impl);
-
+		
 		vector<Tango::Attribute *> &dev_att_list = dev->get_device_attr()->get_attribute_list();
 		vector<Tango::Attribute *>::iterator ite_att;
 		for (ite_att=dev_att_list.begin() ; ite_att != dev_att_list.end() ; ++ite_att)
diff --git a/src/DataImporterClass.h b/src/DataImporterClass.h
index 1091f63c613d91e9ecf48c0d9994c76c754189d2..b2db9918bc6fc423c7db2c37e187a3393d58c54a 100644
--- a/src/DataImporterClass.h
+++ b/src/DataImporterClass.h
@@ -56,6 +56,36 @@ namespace DataImporter_ns
 
 /*----- PROTECTED REGION END -----*/	//	DataImporterClass::classes for dynamic creation
 
+//=========================================
+//	Define classes for attributes
+//=========================================
+//	Attribute RegularFileCounter class definition
+class RegularFileCounterAttrib: public Tango::Attr
+{
+public:
+	RegularFileCounterAttrib():Attr("RegularFileCounter",
+			Tango::DEV_ULONG, Tango::READ) {};
+	~RegularFileCounterAttrib() {};
+	virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
+		{(static_cast<DataImporter *>(dev))->read_RegularFileCounter(att);}
+	virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
+		{return (static_cast<DataImporter *>(dev))->is_RegularFileCounter_allowed(ty);}
+};
+
+//	Attribute FailedFileCounter class definition
+class FailedFileCounterAttrib: public Tango::Attr
+{
+public:
+	FailedFileCounterAttrib():Attr("FailedFileCounter",
+			Tango::DEV_ULONG, Tango::READ) {};
+	~FailedFileCounterAttrib() {};
+	virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
+		{(static_cast<DataImporter *>(dev))->read_FailedFileCounter(att);}
+	virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
+		{return (static_cast<DataImporter *>(dev))->is_FailedFileCounter_allowed(ty);}
+};
+
+
 //=========================================
 //	Define classes for commands
 //=========================================
@@ -105,6 +135,29 @@ public:
 	{return (static_cast<DataImporter *>(dev))->is_Off_allowed(any);}
 };
 
+//	Command ResetCounter class definition
+class ResetCounterClass : public Tango::Command
+{
+public:
+	ResetCounterClass(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)	{};
+
+	ResetCounterClass(const char   *name,
+	               Tango::CmdArgType in,
+				   Tango::CmdArgType out)
+	:Command(name,in,out)	{};
+	~ResetCounterClass() {};
+	
+	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<DataImporter *>(dev))->is_ResetCounter_allowed(any);}
+};
+
 
 /**
  *	The DataImporterClass singleton definition
diff --git a/src/DataImporterStateMachine.cpp b/src/DataImporterStateMachine.cpp
index e5a97508cbc3a2c01206ecd6b446a184f7ef364d..f9e6fdb3234c7ee1228dec9df2bd7d2794898222 100644
--- a/src/DataImporterStateMachine.cpp
+++ b/src/DataImporterStateMachine.cpp
@@ -54,6 +54,38 @@ namespace DataImporter_ns
 //		Attributes Allowed Methods
 //=================================================
 
+//--------------------------------------------------------
+/**
+ *	Method      : DataImporter::is_RegularFileCounter_allowed()
+ *	Description : Execution allowed for RegularFileCounter attribute
+ */
+//--------------------------------------------------------
+bool DataImporter::is_RegularFileCounter_allowed(TANGO_UNUSED(Tango::AttReqType type))
+{
+
+	//	Not any excluded states for RegularFileCounter attribute in read access.
+	/*----- PROTECTED REGION ID(DataImporter::RegularFileCounterStateAllowed_READ) ENABLED START -----*/
+	
+	/*----- PROTECTED REGION END -----*/	//	DataImporter::RegularFileCounterStateAllowed_READ
+	return true;
+}
+
+//--------------------------------------------------------
+/**
+ *	Method      : DataImporter::is_FailedFileCounter_allowed()
+ *	Description : Execution allowed for FailedFileCounter attribute
+ */
+//--------------------------------------------------------
+bool DataImporter::is_FailedFileCounter_allowed(TANGO_UNUSED(Tango::AttReqType type))
+{
+
+	//	Not any excluded states for FailedFileCounter attribute in read access.
+	/*----- PROTECTED REGION ID(DataImporter::FailedFileCounterStateAllowed_READ) ENABLED START -----*/
+	
+	/*----- PROTECTED REGION END -----*/	//	DataImporter::FailedFileCounterStateAllowed_READ
+	return true;
+}
+
 //=================================================
 //		Commands Allowed Methods
 //=================================================
@@ -100,4 +132,19 @@ bool DataImporter::is_Off_allowed(TANGO_UNUSED(const CORBA::Any &any))
 	return true;
 }
 
+//--------------------------------------------------------
+/**
+ *	Method      : DataImporter::is_ResetCounter_allowed()
+ *	Description : Execution allowed for ResetCounter attribute
+ */
+//--------------------------------------------------------
+bool DataImporter::is_ResetCounter_allowed(TANGO_UNUSED(const CORBA::Any &any))
+{
+	//	Not any excluded states for ResetCounter command.
+	/*----- PROTECTED REGION ID(DataImporter::ResetCounterStateAllowed) ENABLED START -----*/
+	
+	/*----- PROTECTED REGION END -----*/	//	DataImporter::ResetCounterStateAllowed
+	return true;
+}
+
 }	//	End of namespace
diff --git a/src/PlainClient.cpp b/src/PlainClient.cpp
index cea1a61e1343e7fcf9e9e3ea4e82330cadced6ac..88c77f52601ae14c73aaeaf73e577294a2b17962 100644
--- a/src/PlainClient.cpp
+++ b/src/PlainClient.cpp
@@ -1,4 +1,5 @@
 #include <PlainClient.h>
+#include <DataImporter.h>
 
 #include <boost/lexical_cast.hpp>
 #include <boost/bind.hpp>
@@ -11,8 +12,8 @@ namespace DataImporter_ns
 //==============================================================================
 //      PlainClient::PlainClient()
 //==============================================================================
-PlainClient::PlainClient(Tango::DeviceImpl* deviceImpl_p,
-    Configuration::SP configuration_sp) : Client(deviceImpl_p, configuration_sp),
+PlainClient::PlainClient(DataImporter* dataImporter_p,
+    Configuration::SP configuration_sp) : Client(dataImporter_p, configuration_sp),
     m_plainSocket(m_ioService)
 {
     DEBUG_STREAM << "PlainClient::PlainClient()" << endl;
@@ -31,10 +32,10 @@ PlainClient::~PlainClient()
 //==============================================================================
 //      PlainClient::create()
 //==============================================================================
-Client::SP PlainClient::create(Tango::DeviceImpl* deviceImpl_p,
+Client::SP PlainClient::create(DataImporter* dataImporter_p,
     Configuration::SP configuration_sp)
 {
-    Client::SP c_sp(new PlainClient(deviceImpl_p, configuration_sp),
+    Client::SP c_sp(new PlainClient(dataImporter_p, configuration_sp),
         PlainClient::Deleter());
 
     return c_sp;
diff --git a/src/PlainClient.h b/src/PlainClient.h
index 6b3b2889ebf506f5779992097ddcaa1cc41aa59e..7aeb61fcd5be013ecedc873e9b8832d102adcf67 100644
--- a/src/PlainClient.h
+++ b/src/PlainClient.h
@@ -12,7 +12,7 @@ protected:
 //------------------------------------------------------------------------------
 //  [Protected] Constructor destructor
 //------------------------------------------------------------------------------
-    PlainClient(Tango::DeviceImpl*, Configuration::SP);
+    PlainClient(DataImporter*, Configuration::SP);
 
     virtual ~PlainClient();
 
@@ -28,7 +28,7 @@ public:
 //------------------------------------------------------------------------------
 //  [Public] Class creation method
 //------------------------------------------------------------------------------
-    static Client::SP create(Tango::DeviceImpl*, Configuration::SP);
+    static Client::SP create(DataImporter*, Configuration::SP);
 
 protected:
 //------------------------------------------------------------------------------
diff --git a/src/ProtocolManager.cpp b/src/ProtocolManager.cpp
index 61b684f5b7c4caa98150bfac9d62ae16d0518796..1175b5fa7c026108759d2fdeac0c7512fc0f1fcd 100644
--- a/src/ProtocolManager.cpp
+++ b/src/ProtocolManager.cpp
@@ -1,4 +1,6 @@
 #include <ProtocolManager.h>
+#include <DataImporter.h>
+
 #include <boost/filesystem.hpp>
 
 namespace DataImporter_ns
@@ -7,9 +9,9 @@ namespace DataImporter_ns
 //==============================================================================
 //      ProtocolManager::ProtocolManager()
 //==============================================================================
-ProtocolManager::ProtocolManager(Tango::DeviceImpl* deviceImpl_p,
+ProtocolManager::ProtocolManager(DataImporter* dataImporter_p,
     Configuration::SP configuration_sp, DBManager::SP dBManager_sp) :
-    Tango::LogAdapter(deviceImpl_p), m_deviceImpl_p(deviceImpl_p),
+    Tango::LogAdapter(dataImporter_p), m_dataImporter_p(dataImporter_p),
     m_configuration_sp(configuration_sp), m_dBManager_sp(dBManager_sp)
 {
     DEBUG_STREAM << "ProtocolManager::ProtocolManager()" << endl;
@@ -26,10 +28,10 @@ ProtocolManager::~ProtocolManager()
 //==============================================================================
 //      ProtocolManager::create()
 //==============================================================================
-ProtocolManager::SP ProtocolManager::create(Tango::DeviceImpl* deviceImpl_p,
+ProtocolManager::SP ProtocolManager::create(DataImporter* dataImporter_p,
     Configuration::SP configuration_sp, DBManager::SP dBManager_sp)
 {
-    ProtocolManager::SP d_sp(new ProtocolManager(deviceImpl_p, configuration_sp,
+    ProtocolManager::SP d_sp(new ProtocolManager(dataImporter_p, configuration_sp,
         dBManager_sp), ProtocolManager::Deleter());
 
     return d_sp;
@@ -265,7 +267,7 @@ FileWrapper::SP ProtocolManager::processResponse(ResponseSP response_sp)
 
         int fileVersion = response_sp->file_version();
 
-        std::string fileName =  response_sp->file_name();
+        std::string fileName = response_sp->file_name();
 
         if(fileName.empty())
             throw std::invalid_argument("Empty file path received");
@@ -276,7 +278,7 @@ FileWrapper::SP ProtocolManager::processResponse(ResponseSP response_sp)
             << fileName << " version " << fileVersion << " size " << fileSize
             << " from " << m_remoteEndpoint << endl;
 
-        return FileWrapper::create(m_deviceImpl_p,
+        return FileWrapper::create(m_dataImporter_p,
             m_configuration_sp->getStoragePath(), filePath,
             fileVersion, fileName, fileSize);
     }
@@ -347,6 +349,8 @@ void ProtocolManager::setNewFileTransfered(FileWrapper::SP fileWrapper_sp)
 
     auxTransaction_sp->commit();
     mainTransaction_sp->commit();
+
+    m_dataImporter_p->incrementRegularCounter();
 }
 
 //==============================================================================
@@ -384,6 +388,9 @@ void ProtocolManager::setFailedFileTransfered(FileWrapper::SP fileWrapper_sp)
 
     auxTransaction_sp->commit();
     mainTransaction_sp->commit();
+
+    m_dataImporter_p->decrementFailedCounter();
+    m_dataImporter_p->incrementRegularCounter();
 }
 
 //==============================================================================
@@ -440,6 +447,8 @@ void ProtocolManager::setNewFileFailed()
 
     auxTransaction_sp->commit();
     mainTransaction_sp->commit();
+
+    m_dataImporter_p->incrementFailedCounter();
 }
 
 //==============================================================================
diff --git a/src/ProtocolManager.h b/src/ProtocolManager.h
index 47c59185d7a1e7249430f96584c306f4b68e15a4..47234de8fd638e75d2734cc5253e1195ae59c385 100644
--- a/src/ProtocolManager.h
+++ b/src/ProtocolManager.h
@@ -14,6 +14,8 @@
 namespace DataImporter_ns
 {
 
+class DataImporter;
+
 //Protocol buffer request class shared pointer
 typedef boost::shared_ptr<Request> RequestSP;
 
@@ -32,7 +34,7 @@ protected:
 //------------------------------------------------------------------------------
 //  [Protected] Constructor destructor deleter
 //------------------------------------------------------------------------------
-    ProtocolManager(Tango::DeviceImpl*, Configuration::SP, DBManager::SP);
+    ProtocolManager(DataImporter*, Configuration::SP, DBManager::SP);
 
     virtual ~ProtocolManager();
 
@@ -41,14 +43,14 @@ protected:
     class Deleter
     {
         public:
-            void operator()(ProtocolManager* d) { delete d; }
+            void operator()(ProtocolManager* p) { delete p; }
     };
 
 public:
 //------------------------------------------------------------------------------
 //	[Public] Class creation method
 //------------------------------------------------------------------------------
-    static ProtocolManager::SP create(Tango::DeviceImpl*, Configuration::SP,
+    static ProtocolManager::SP create(DataImporter*, Configuration::SP,
         DBManager::SP);
 
 //------------------------------------------------------------------------------
@@ -111,7 +113,7 @@ protected:
 //  [Protected] Class variables
 //------------------------------------------------------------------------------
     //Tango server class pointer
-    Tango::DeviceImpl* m_deviceImpl_p;
+    DataImporter* m_dataImporter_p;
 
     //Configuration parameters shared pointer
     Configuration::SP m_configuration_sp;
diff --git a/src/SSLClient.cpp b/src/SSLClient.cpp
index e3553e6fc0280c9202b7b8315e57cfa927cb3230..c520eb1a3429f45f62c5350c6770168d772ad830 100644
--- a/src/SSLClient.cpp
+++ b/src/SSLClient.cpp
@@ -1,4 +1,5 @@
 #include <SSLClient.h>
+#include <DataImporter.h>
 
 #include <boost/lexical_cast.hpp>
 #include <boost/bind.hpp>
@@ -10,8 +11,8 @@ namespace DataImporter_ns
 //==============================================================================
 //      SSLClient::SSLClient()
 //==============================================================================
-SSLClient::SSLClient(Tango::DeviceImpl* deviceImpl_p,
-    Configuration::SP configuration_sp) : Client(deviceImpl_p, configuration_sp),
+SSLClient::SSLClient(DataImporter* dataImporter_p,
+    Configuration::SP configuration_sp) : Client(dataImporter_p, configuration_sp),
     m_sSLContext(boost::asio::ssl::context::sslv23),
     m_sSLSocket(m_ioService, m_sSLContext)
 {
@@ -48,11 +49,11 @@ SSLClient::~SSLClient()
 //==============================================================================
 //      SSLClient::create()
 //==============================================================================
-Client::SP SSLClient::create(Tango::DeviceImpl* deviceImpl_p,
+Client::SP SSLClient::create(DataImporter* dataImporter_p,
     Configuration::SP configuration_sp)
 
 {
-    Client::SP c_sp(new SSLClient(deviceImpl_p, configuration_sp),
+    Client::SP c_sp(new SSLClient(dataImporter_p, configuration_sp),
         SSLClient::Deleter());
 
     return c_sp;
diff --git a/src/SSLClient.h b/src/SSLClient.h
index 9b7a360040e6857423a6fb1c1549672148f27cee..06f69eccc5783b0fb597ece462d8ea5df014925d 100644
--- a/src/SSLClient.h
+++ b/src/SSLClient.h
@@ -14,7 +14,7 @@ protected:
 //------------------------------------------------------------------------------
 //  [Protected] Constructor destructor
 //------------------------------------------------------------------------------
-    SSLClient(Tango::DeviceImpl*, Configuration::SP);
+    SSLClient(DataImporter*, Configuration::SP);
 
     virtual ~SSLClient();
 
@@ -30,7 +30,7 @@ public:
 //------------------------------------------------------------------------------
 //  [Public] Class creation method
 //------------------------------------------------------------------------------
-    static Client::SP create(Tango::DeviceImpl*, Configuration::SP);
+    static Client::SP create(DataImporter*, Configuration::SP);
 
 protected:
 //------------------------------------------------------------------------------