diff --git a/cfg/default_cfg.py b/cfg/dynattr_default_cfg.py
similarity index 93%
rename from cfg/default_cfg.py
rename to cfg/dynattr_default_cfg.py
index da7f16532f7c43bfc790726657a0c632552d66e6..0246376ca96b4aadd92d607d290a043af0796cba 100644
--- a/cfg/default_cfg.py
+++ b/cfg/dynattr_default_cfg.py
@@ -21,7 +21,7 @@ def createDynAttrsDict():
         
     # add further info specifically
     dyn_attrs["IntShortAttr"].default = 1 # default value
-    dyn_attrs["IntShortAttr"].memorized = True # memorized in DB
+    #dyn_attrs["IntShortAttr"].memorized = True # memorized in DB
     
     dyn_attrs["FloatAttr"].default = 3.66 # default value
     dyn_attrs["FloatAttr"].permission = PyTango.AttrWriteType.READ
diff --git a/src/dynamic-srv.py b/src/dynamic-srv.py
index 4af5955ceb6b3e675834b8a62c85af1b7318bf42..f057c23980eb5c813f2fe66bd0511df18f74a2f6 100755
--- a/src/dynamic-srv.py
+++ b/src/dynamic-srv.py
@@ -249,82 +249,88 @@ class Dynamic(PyTango.Device_4Impl):
                 self.cfg_module = importlib.import_module(self.cfg_module_name)
                 #print("imported cfg")
             except Exception as ex:
+                sys.stderr.write(str(ex)+"\n")
                 self.cfg_module = None
-                #self.warn_stream("Invalid cfg  script file\n")
-                print("Invalid cfg  script file\n",ex)
-                self.set_state(PyTango.DevState.OFF)
+                self.set_status("Configurator script file not found")
+                self.set_state(PyTango.DevState.ON)
                 return
 
         #creation of dynamic attributes from cfg script
-        dynattrs = self.cfg_module.createDynAttrsDict()
-              
-        for attr in dynattrs:
-            attr_obj = dynattrs[attr]
+        try:
+            dynattrs = self.cfg_module.createDynAttrsDict()
             
-            if not (attr_obj.handler.lower() == self.get_name().lower() or attr_obj.handler.lower() == 'self'): 
-                try:
-                    attr_proxy = PyTango.AttributeProxy(str(attr_obj.tango_name))
-                    attr_config = attr_proxy.get_config()
-                    attr = PyTango.Attr(str(attr_obj.name), attr_config.data_type, attr_config.writable)
-                    self.add_attribute(attr, self.read_proxy, self.write_proxy)
-                    self.myattrs[attr_obj.name] = attr_proxy
-                except PyTango.DevFailed as ex:
-                    self.warn_stream("%s" % str(ex))		 
-                continue
-            if attr_obj.name in self.myattrs:
-                PyTango.Except.throw_exception("Exist",
-                            "Attribute "+attr_obj.name+ " already defined",
-                            "NewAttribute")
-
-            # It's possible to define python methods for calculating the attribute value
-            self.read_functions[attr_obj.name] = attr_obj.read_function
-            self.write_functions[attr_obj.name] = attr_obj.write_function
-            if attr_obj.dimension == 1:                
-                attr = PyTango.Attr(str(attr_obj.name), attr_obj.datatype, attr_obj.permission)
-                if attr_obj.memorized == 1:
-                    attr.set_memorized()
-                self.add_attribute(attr, self.read_Scalar,self.write_Scalar)
-                if attr_obj.datatype == PyTango.ArgType.DevString:
-                    self.myattrs[attr_obj.name] = ""
-                else:
-                    self.myattrs[attr_obj.name] = 0
-                if attr_obj.default:
-                    self.myattrs[attr_obj.name] = attr_obj.default
-                if attr_obj.memorized == 1:
-                    dev_attr_props = self.db.get_device_attribute_property(self.get_name(),[attr_obj.name])
-                    attr_prop = dev_attr_props[attr_obj.name]
-                    for pr in attr_prop.keys():
-                        if (pr == '__value') and (attr_obj.datatype == PyTango.ArgType.DevString):
-                            self.myattrs[attr_obj.name] = attr_prop['__value'][0]
-                        elif (pr == '__value') and (attr_obj.datatype == PyTango.ArgType.DevFloat):
-                            self.myattrs[attr_obj.name] = float(attr_prop['__value'][0])
-                        elif (pr == '__value') and (attr_obj.datatype == PyTango.ArgType.DevDouble):
-                            self.myattrs[attr_obj.name] = float(attr_prop['__value'][0])
-                        elif (pr == '__value') and (attr_obj.datatype == PyTango.ArgType.DevBoolean):
-                            self.myattrs[attr_obj.name] = bool(attr_prop['__value'][0] == "True")
-                        elif (pr == '__value'):
-                            self.myattrs[attr_obj.name] = int(attr_prop['__value'][0])
-            elif isinstance(attr_obj.dimension, tuple):
-                sizx = attr_obj.dimension[0]
-                sizy = attr_obj.dimension[1]
-                attr = PyTango.ImageAttr(str(attr_obj.name), attr_obj.datatype, attr_obj.permission,sizx, sizy)
-                self.add_attribute(attr, self.read_Image, self.write_Image)
-                if attr_obj.default:
-                    self.myattrs[attr_obj.name] = eval(attr_obj.default)
-                elif attr_obj.datatype == PyTango.ArgType.DevString:
-                    self.myattrs[attr_obj.name] = [[],[]]
-                else:
-                    self.myattrs[attr_obj.name] = np.zeros((sizy,sizx),fromPyTango2NumpyType(attr_obj.datatype))
-            else :
-                self.debug_stream("Creation of attribute %s, dimension = %s" % (attr_obj.name, str(attr_obj.dimension)))
-                attr = PyTango.SpectrumAttr(str(attr_obj.name), attr_obj.datatype, attr_obj.permission,attr_obj.dimension)
-                self.add_attribute(attr, self.read_Spectrum, self.write_Spectrum)
-                if attr_obj.default:
-                    self.myattrs[attr_obj.name] = eval(attr_obj.default)
-                elif attr_obj.datatype == PyTango.ArgType.DevString:
-                    self.myattrs[attr_obj.name] = []
-                else:
-                    self.myattrs[attr_obj.name] = np.zeros(attr_obj.dimension, fromPyTango2NumpyType(attr_obj.datatype))
+            for attribute in dynattrs:
+                
+                attr_obj = dynattrs[attribute]
+                
+                if not (attr_obj.handler.lower() == self.get_name().lower() or attr_obj.handler.lower() == 'self'): 
+                    try:
+                        attr_proxy = PyTango.AttributeProxy(str(attr_obj.tango_name))
+                        attr_config = attr_proxy.get_config()
+                        attr = PyTango.Attr(str(attr_obj.name), attr_config.data_type, attr_config.writable)
+                        self.add_attribute(attr, self.read_proxy, self.write_proxy)
+                        self.myattrs[attr_obj.name] = attr_proxy
+                    except PyTango.DevFailed as ex:
+                        self.warn_stream("%s" % str(ex))		 
+                    continue
+                if attr_obj.name in self.myattrs:
+                    PyTango.Except.throw_exception("Exist",
+                                "Attribute "+attr_obj.name+ " already defined",
+                                "NewAttribute")
+    
+                # It's possible to define python methods for calculating the attribute value
+                self.read_functions[attr_obj.name] = attr_obj.read_function
+                self.write_functions[attr_obj.name] = attr_obj.write_function
+                if attr_obj.dimension == 1:                
+                    attr = PyTango.Attr(str(attr_obj.name), attr_obj.datatype, attr_obj.permission)
+                    if attr_obj.memorized == 1:
+                        attr.set_memorized()
+                    self.add_attribute(attr, self.read_Scalar,self.write_Scalar)
+                    if attr_obj.datatype == PyTango.ArgType.DevString:
+                        self.myattrs[attr_obj.name] = ""
+                    else:
+                        self.myattrs[attr_obj.name] = 0
+                    if attr_obj.default:
+                        self.myattrs[attr_obj.name] = attr_obj.default
+                    if attr_obj.memorized == 1:
+                        dev_attr_props = self.db.get_device_attribute_property(self.get_name(),[attr_obj.name])
+                        attr_prop = dev_attr_props[attr_obj.name]
+                        for pr in attr_prop.keys():
+                            if (pr == '__value') and (attr_obj.datatype == PyTango.ArgType.DevString):
+                                self.myattrs[attr_obj.name] = attr_prop['__value'][0]
+                            elif (pr == '__value') and (attr_obj.datatype == PyTango.ArgType.DevFloat):
+                                self.myattrs[attr_obj.name] = float(attr_prop['__value'][0])
+                            elif (pr == '__value') and (attr_obj.datatype == PyTango.ArgType.DevDouble):
+                                self.myattrs[attr_obj.name] = float(attr_prop['__value'][0])
+                            elif (pr == '__value') and (attr_obj.datatype == PyTango.ArgType.DevBoolean):
+                                self.myattrs[attr_obj.name] = bool(attr_prop['__value'][0] == "True")
+                            elif (pr == '__value'):
+                                self.myattrs[attr_obj.name] = int(attr_prop['__value'][0])
+                elif isinstance(attr_obj.dimension, tuple):
+                    sizx = attr_obj.dimension[0]
+                    sizy = attr_obj.dimension[1]
+                    attr = PyTango.ImageAttr(str(attr_obj.name), attr_obj.datatype, attr_obj.permission,sizx, sizy)
+                    self.add_attribute(attr, self.read_Image, self.write_Image)
+                    if attr_obj.default:
+                        self.myattrs[attr_obj.name] = eval(attr_obj.default)
+                    elif attr_obj.datatype == PyTango.ArgType.DevString:
+                        self.myattrs[attr_obj.name] = [[],[]]
+                    else:
+                        self.myattrs[attr_obj.name] = np.zeros((sizy,sizx),fromPyTango2NumpyType(attr_obj.datatype))
+                else :
+                    self.debug_stream("Creation of attribute %s, dimension = %s" % (attr_obj.name, str(attr_obj.dimension)))
+                    attr = PyTango.SpectrumAttr(str(attr_obj.name), attr_obj.datatype, attr_obj.permission,attr_obj.dimension)
+                    self.add_attribute(attr, self.read_Spectrum, self.write_Spectrum)
+                    if attr_obj.default:
+                        self.myattrs[attr_obj.name] = eval(attr_obj.default)
+                    elif attr_obj.datatype == PyTango.ArgType.DevString:
+                        self.myattrs[attr_obj.name] = []
+                    else:
+                        self.myattrs[attr_obj.name] = np.zeros(attr_obj.dimension, fromPyTango2NumpyType(attr_obj.datatype))
+                
+        except Exception as ex:
+            sys.stderr.write(str(ex)+"\n")
+            self.set_status("Invalid cfg script file skipped")
                     
         self.set_state(PyTango.DevState.ON)
                 
@@ -533,6 +539,22 @@ class Dynamic(PyTango.Device_4Impl):
             self.set_status('Unable to write file ' + self.ConfiguratorScript)
         finally:
             conf_file.close()
+            
+#------------------------------------------------------------------
+#  Load config from remote location
+#------------------------------------------------------------------     
+
+    def ResetCfgFile(self):
+        """ Restore default cfg file. Overwrite the existing cfg file.
+            :param argin: PyTango.DevVoid
+            :return:
+            :rtype: PyTango.DevVoid
+        """
+        default_fn = self.DefaultCfgScript
+        file_name = self.ConfiguratorScript
+        if os.path.isfile(default_fn):
+            # if default file exists
+            shutil.copyfile(default_fn, file_name)
 #==================================================================
 #
 #    DynamicClass class utilities
@@ -602,10 +624,10 @@ class DynamicClass(PyTango.DeviceClass):
             [PyTango.DevString,
             "Path to the python script that will be executed.",
             [] ],
-        'PythonExecutable':
+        'DefaultCfgScript':
             [PyTango.DevString,
-            "Path to the python executable.",
-            [ "python"] ],
+            "Path to the default config file",
+            [] ] ,
         }
 
 
@@ -626,6 +648,9 @@ class DynamicClass(PyTango.DeviceClass):
         'LoadCfgFile':
             [[PyTango.DevString,""],
              [PyTango.DevVoid,""]],
+        'ResetCfgFile':
+            [[PyTango.DevVoid,""],
+             [PyTango.DevVoid,""]],
         }