diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/initialize-master-data.py b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/initialize-master-data.py
index ead04e46d97b8ee25bba52a26b321f5b06f4f7c1..f5e98d86cee130cd9075b0874cbdc4c725772d47 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/initialize-master-data.py
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/initialize-master-data.py
@@ -20,10 +20,10 @@ import sys
 from ch.ethz.sis.openbis.generic.asapi.v3.dto.operation import SynchronousOperationExecutionOptions
 from ch.ethz.sis.openbis.generic.server.asapi.v3 import ApplicationServerApi
 from ch.systemsx.cisd.openbis.generic.server import CommonServiceProvider
-from file_handling import list_xls_files
-from openbis_logic import OpenbisLogicHandler
 from parsers import ExcelToPoiParser, PoiToDefinitionParser, DefinitionToCreationParser, DuplicatesHandler, CreationToOperationParser
+from processors import OpenbisDuplicatesHandler
 from search_engines import SearchEngine
+from utils.file_handling import list_xls_files
 
 api = CommonServiceProvider.getApplicationContext().getBean(ApplicationServerApi.INTERNAL_SERVICE_NAME)
 
@@ -38,11 +38,10 @@ for excel_file_path in list_xls_files():
         else:
             creations[creation_type].extend(partial_creation)
 distinct_creations = DuplicatesHandler.get_distinct_creations(creations)
-
 sessionToken = api.loginAsSystem()
 search_engine = SearchEngine(api, sessionToken)
 existing_elements = search_engine.find_all_existing_elements(distinct_creations)
-server_duplicates_handler = OpenbisLogicHandler(distinct_creations, existing_elements)
+server_duplicates_handler = OpenbisDuplicatesHandler(distinct_creations, existing_elements)
 creations = server_duplicates_handler.remove_existing_elements_from_creations()
 creations = server_duplicates_handler.rewrite_parentchild_creationid_to_permid()
 # creations = server_duplicates_handler.rewrite_vocabulary_labels()
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/life-sciences-types/types2.xls b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/life-sciences-types/types2.xls
deleted file mode 100644
index 52bd9cc8dd6c1020b5d9b9624b4a53c092557beb..0000000000000000000000000000000000000000
Binary files a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/life-sciences-types/types2.xls and /dev/null differ
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/parsers/definition_to_creation/creation_parsers.py b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/parsers/definition_to_creation/creation_parsers.py
index 86e26673774e25b68cb5b047c7b992c77a34a168..6b98d4de380e84e337642f2a9d41222483dcf777 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/parsers/definition_to_creation/creation_parsers.py
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/parsers/definition_to_creation/creation_parsers.py
@@ -14,8 +14,9 @@ from ch.ethz.sis.openbis.generic.asapi.v3.dto.space.create import SpaceCreation
 from ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.create import VocabularyCreation
 from ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.create import VocabularyTermCreation
 from ch.ethz.sis.openbis.generic.asapi.v3.dto.vocabulary.id import VocabularyPermId
-from file_handling import get_script, get_filename_from_path
 from java.lang import UnsupportedOperationException
+from utils.file_handling import get_script
+from utils.openbis_utils import is_internal_namespace, get_script_name_for
 
 
 def get_boolean_from_string(text):
@@ -27,113 +28,109 @@ class DefinitionToCreationParserFactory(object):
     @staticmethod
     def getParsers(definition):
         if definition.type == u'VOCABULARY_TYPE':
-            return [VocabularyDefinitionToCreationParser]
+            return [VocabularyDefinitionToCreationParser()]
         elif definition.type == u'SAMPLE_TYPE':
-            return [SampleTypeDefinitionToCreationParser, PropertyTypeDefinitionToCreationParser, ScriptDefinitionToCreationParser]
+            return [SampleTypeDefinitionToCreationParser(), PropertyTypeDefinitionToCreationParser(), ScriptDefinitionToCreationParser()]
         elif definition.type == u'EXPERIMENT_TYPE':
-            return [ExperimentTypeDefinitionToCreationParser, PropertyTypeDefinitionToCreationParser, ScriptDefinitionToCreationParser]
+            return [ExperimentTypeDefinitionToCreationParser(), PropertyTypeDefinitionToCreationParser(), ScriptDefinitionToCreationParser()]
         elif definition.type == u'DATASET_TYPE':
-            return [DatasetTypeDefinitionToCreationParser, PropertyTypeDefinitionToCreationParser, ScriptDefinitionToCreationParser]
+            return [DatasetTypeDefinitionToCreationParser(), PropertyTypeDefinitionToCreationParser(), ScriptDefinitionToCreationParser()]
         elif definition.type == u'SPACE':
-            return [SpaceDefinitionToCreationParser]
+            return [SpaceDefinitionToCreationParser()]
         elif definition.type == u'PROJECT':
-            return [ProjectDefinitionToCreationParser]
+            return [ProjectDefinitionToCreationParser()]
         elif definition.type == u'EXPERIMENT':
-            return [ExperimentDefinitionToCreationParser]
+            return [ExperimentDefinitionToCreationParser()]
         elif definition.type == u'SAMPLE':
-            return [SampleDefinitionToCreationParser]
+            return [SampleDefinitionToCreationParser()]
         elif definition.type == u'PROPERTY_TYPE':
-            return [PropertyTypeDefinitionToCreationParser]
+            return [PropertyTypeDefinitionToCreationParser()]
         else:
             raise UnsupportedOperationException("Definition of " + str(definition.type) + " is not supported (probably yet).")
 
 
-class PropertyTypeDefinitionToCreationParser(object):
+class DefinitionToCreationParser(object):
+    pass
+
+
+class PropertyTypeDefinitionToCreationParser(DefinitionToCreationParser):
 
     type = "PropertyTypeCreation"
 
-    @staticmethod
-    def parse(definition):
+    def parse(self, definition):
         property_creations = []
-        for property in definition.properties:
+
+        for prop in definition.properties:
             property_type_creation = PropertyTypeCreation()
-            property_type_creation.code = property[u'code']
-            if property[u'code'].startswith(u'$'):
-                property_type_creation.internalNameSpace = True
-            property_type_creation.label = property[u'property label']
-            property_type_creation.dataType = DataType.valueOf(property[u'property type'])
-            property_type_creation.vocabularyId = VocabularyPermId(property[u'vocabulary code']) if property[u'vocabulary code'] is not None else None
-            property_type_creation.description = property[u'description']
+            property_type_creation.code = prop[u'code']
+            property_type_creation.label = prop[u'property label']
+            property_type_creation.description = prop[u'description']
+            property_type_creation.dataType = DataType.valueOf(prop[u'property type'])
+            property_type_creation.internalNameSpace = is_internal_namespace(prop[u'code'])
+            property_type_creation.vocabularyId = VocabularyPermId(prop[u'vocabulary code']) if prop[u'vocabulary code'] is not None else None
             property_creations.append(property_type_creation)
 
         return property_creations
 
-    @staticmethod
-    def get_type():
+    def get_type(self):
         return PropertyTypeDefinitionToCreationParser.type
 
 
-class VocabularyDefinitionToCreationParser(object):
+class VocabularyDefinitionToCreationParser(DefinitionToCreationParser):
 
     type = "VocabularyCreation"
 
-    @staticmethod
-    def parse(definition):
+    def parse(self, definition):
         code = definition.attributes[u'code']
         vocabulary_creation = VocabularyCreation()
         vocabulary_creation.code = code
-        if code.startswith(u'$'):
-            vocabulary_creation.internalNameSpace = True
+        vocabulary_creation.internalNameSpace = is_internal_namespace(code)
         vocabulary_creation.description = definition.attributes[u'description']
 
         vocabulary_creations_terms = []
-        for property in definition.properties:
+        for prop in definition.properties:
             vocabulary_creation_term = VocabularyTermCreation()
-            vocabulary_creation_term.code = property[u'code']
-            vocabulary_creation_term.label = property[u'label']
-            vocabulary_creation_term.description = property[u'description']
+            vocabulary_creation_term.code = prop[u'code']
+            vocabulary_creation_term.label = prop[u'label']
+            vocabulary_creation_term.description = prop[u'description']
             vocabulary_creations_terms.append(vocabulary_creation_term)
 
         vocabulary_creation.terms = vocabulary_creations_terms
 
         return vocabulary_creation
 
-    @staticmethod
-    def get_type():
+    def get_type(self):
         return VocabularyDefinitionToCreationParser.type
 
 
-class PropertyAssignmentDefinitionToCreationParser(object):
+class PropertyAssignmentDefinitionToCreationParser(DefinitionToCreationParser):
 
     type = "PropertyAssignmentCreation"
 
-    @staticmethod
-    def parse(property):
-        code = property[u'code']
+    def parse(self, prop):
+        code = prop[u'code']
         property_assingment_creation = PropertyAssignmentCreation()
-        is_mandatory = get_boolean_from_string(property[u'mandatory'])
+        is_mandatory = get_boolean_from_string(prop[u'mandatory'])
         property_assingment_creation.mandatory = is_mandatory
-        should_show_in_edit_view = get_boolean_from_string(property[u'show in edit views'])
+        should_show_in_edit_view = get_boolean_from_string(prop[u'show in edit views'])
         property_assingment_creation.showInEditView = should_show_in_edit_view
-        property_assingment_creation.section = property[u'section']
+        property_assingment_creation.section = prop[u'section']
         property_assingment_creation.propertyTypeId = PropertyTypePermId(code)
-        if u'dynamic script' in property and property[u'dynamic script'] is not None:
-            dynamic_script_path = property[u'dynamic script']
-            property_assingment_creation.pluginId = PluginPermId(ScriptDefinitionToCreationParser.get_name_for(code, dynamic_script_path))
+        if u'dynamic script' in prop and prop[u'dynamic script'] is not None:
+            dynamic_script_path = prop[u'dynamic script']
+            property_assingment_creation.pluginId = PluginPermId(get_script_name_for(code, dynamic_script_path))
 
         return property_assingment_creation
 
-    @staticmethod
-    def get_type():
+    def get_type(self):
         return PropertyAssignmentDefinitionToCreationParser.type
 
 
-class SampleTypeDefinitionToCreationParser(object):
+class SampleTypeDefinitionToCreationParser(DefinitionToCreationParser):
 
     type = "SampleTypeCreation"
 
-    @staticmethod
-    def parse(definition):
+    def parse(self, definition):
         code = definition.attributes[u'code']
         sample_creation = SampleTypeCreation()
         sample_creation.code = code
@@ -141,71 +138,68 @@ class SampleTypeDefinitionToCreationParser(object):
         sample_creation.autoGeneratedCode = should_auto_generate_codes
         if u'validation script' in definition.attributes and definition.attributes[u'validation script'] is not None:
             validation_script_path = definition.attributes[u'validation script']
-            sample_creation.validationPluginId = PluginPermId(ScriptDefinitionToCreationParser.get_name_for(code, validation_script_path))
+            sample_creation.validationPluginId = PluginPermId(get_script_name_for(code, validation_script_path))
 
         property_assingment_creations = []
-        for property in definition.properties:
-            property_assingment_creation = PropertyAssignmentDefinitionToCreationParser.parse(property)
+        property_assignment_parser = PropertyAssignmentDefinitionToCreationParser()
+        for prop in definition.properties:
+            property_assingment_creation = property_assignment_parser.parse(prop)
             property_assingment_creations.append(property_assingment_creation)
 
         sample_creation.propertyAssignments = property_assingment_creations
         return sample_creation
 
-    @staticmethod
-    def get_type():
+    def get_type(self):
         return SampleTypeDefinitionToCreationParser.type
 
 
-class ExperimentTypeDefinitionToCreationParser(object):
+class ExperimentTypeDefinitionToCreationParser(DefinitionToCreationParser):
 
     type = "ExperimentTypeCreation"
 
-    @staticmethod
-    def parse(definition):
+    def parse(self, definition):
         experiment_type_creation = ExperimentTypeCreation()
         experiment_type_creation.code = definition.attributes[u'code']
 
         property_assingment_creations = []
-        for property in definition.properties:
-            property_assingment_creation = PropertyAssignmentDefinitionToCreationParser.parse(property)
+        property_assignment_parser = PropertyAssignmentDefinitionToCreationParser()
+        for prop in definition.properties:
+            property_assingment_creation = property_assignment_parser.parse(prop)
             property_assingment_creations.append(property_assingment_creation)
 
         experiment_type_creation.propertyAssignments = property_assingment_creations
         return experiment_type_creation
 
-    @staticmethod
-    def get_type():
+    def get_type(self):
         return ExperimentTypeDefinitionToCreationParser.type
 
 
-class DatasetTypeDefinitionToCreationParser(object):
+class DatasetTypeDefinitionToCreationParser(DefinitionToCreationParser):
 
     type = "DatasetTypeCreation"
 
-    @staticmethod
-    def parse(definition):
+    def parse(self, definition):
         dataset_type_creation = DataSetTypeCreation()
         dataset_type_creation.code = definition.attributes[u'code']
 
         property_assingment_creations = []
-        for property in definition.properties:
-            property_assingment_creation = PropertyAssignmentDefinitionToCreationParser.parse(property)
+        property_assignment_parser = PropertyAssignmentDefinitionToCreationParser()
+        for prop in definition.properties:
+            property_assingment_creation = property_assignment_parser.parse(prop)
             property_assingment_creations.append(property_assingment_creation)
 
         dataset_type_creation.propertyAssignments = property_assingment_creations
         return dataset_type_creation
 
-    @staticmethod
-    def get_type():
+    def get_type(self):
         return DatasetTypeDefinitionToCreationParser.type
 
 
-class SpaceDefinitionToCreationParser(object):
+class SpaceDefinitionToCreationParser(DefinitionToCreationParser):
 
     type = "SpaceCreation"
 
-    @staticmethod
-    def parse(definition):
+    def parse(self, definition):
         space_creation = SpaceCreation()
         space_creation.code = definition.attributes[u'code']
         space_creation.description = definition.attributes[u'description']
@@ -213,17 +207,15 @@ class SpaceDefinitionToCreationParser(object):
         space_creation.creationId = CreationId(creation_id)
         return space_creation
 
-    @staticmethod
-    def get_type():
+    def get_type(self):
         return SpaceDefinitionToCreationParser.type
 
 
-class ProjectDefinitionToCreationParser(object):
+class ProjectDefinitionToCreationParser(DefinitionToCreationParser):
 
     type = "ProjectCreation"
 
-    @staticmethod
-    def parse(definition):
+    def parse(self, definition):
         project_creation = ProjectCreation()
         project_creation.code = definition.attributes[u'code']
         project_creation.description = definition.attributes[u'description']
@@ -232,17 +224,15 @@ class ProjectDefinitionToCreationParser(object):
         project_creation.creationId = CreationId(creation_id)
         return project_creation
 
-    @staticmethod
-    def get_type():
+    def get_type(self):
         return ProjectDefinitionToCreationParser.type
 
 
-class ExperimentDefinitionToCreationParser(object):
+class ExperimentDefinitionToCreationParser(DefinitionToCreationParser):
 
     type = "ExperimentCreation"
 
-    @staticmethod
-    def parse(definition):
+    def parse(self, definition):
         experiments = []
         mandatory_attributes = [u'code', u'project']
         for experiment_properties in definition.properties:
@@ -252,23 +242,21 @@ class ExperimentDefinitionToCreationParser(object):
             experiment_creation.projectId = CreationId(experiment_properties[u'project'])
             creation_id = experiment_properties[u'code']
             experiment_creation.creationId = CreationId(creation_id)
-            for property, value in experiment_properties.items():
-                if property not in mandatory_attributes:
-                    experiment_creation.setProperty(property, value)
+            for prop, value in experiment_properties.items():
+                if prop not in mandatory_attributes:
+                    experiment_creation.setProperty(prop, value)
             experiments.append(experiment_creation)
         return experiments
 
-    @staticmethod
-    def get_type():
+    def get_type(self):
         return ExperimentDefinitionToCreationParser.type
 
 
-class SampleDefinitionToCreationParser(object):
+class SampleDefinitionToCreationParser(DefinitionToCreationParser):
 
     type = "SampleCreation"
 
-    @staticmethod
-    def parse(definition):
+    def parse(self, definition):
         samples = []
         mandatory_attributes = [u'$', u'code', u'space', u'project', u'experiment', u'auto generate code', u'parents', u'children']
         for sample_properties in definition.properties:
@@ -302,23 +290,21 @@ class SampleDefinitionToCreationParser(object):
                     child_creationids.append(CreationId(child))
                 sample_creation.childIds = child_creationids
 
-            for property, value in sample_properties.items():
-                if property not in mandatory_attributes:
-                    sample_creation.setProperty(property, value)
+            for prop, value in sample_properties.items():
+                if prop not in mandatory_attributes:
+                    sample_creation.setProperty(prop, value)
             samples.append(sample_creation)
         return samples
 
-    @staticmethod
-    def get_type():
+    def get_type(self):
         return SampleDefinitionToCreationParser.type
 
 
-class ScriptDefinitionToCreationParser(object):
+class ScriptDefinitionToCreationParser(DefinitionToCreationParser):
 
     type = "ScriptCreation"
 
-    @staticmethod
-    def parse(definition):
+    def parse(self, definition):
         scripts = []
         if u'validation script' in definition.attributes:
             validation_script_path = definition.attributes[u'validation script']
@@ -328,31 +314,26 @@ class ScriptDefinitionToCreationParser(object):
                 script_file = open(get_script(validation_script_path))
                 script = script_file.read()
                 script_file.close()
-                validation_script_creation.name = ScriptDefinitionToCreationParser.get_name_for(code, validation_script_path)
+                validation_script_creation.name = get_script_name_for(code, validation_script_path)
                 validation_script_creation.script = script
                 validation_script_creation.pluginType = PluginType.ENTITY_VALIDATION
                 scripts.append(validation_script_creation)
 
-        for property in definition.properties:
-            if u'dynamic script' in property:
-                dynamic_prop_script_path = property[u'dynamic script']
-                code = property[u'code']
+        for prop in definition.properties:
+            if u'dynamic script' in prop:
+                dynamic_prop_script_path = prop[u'dynamic script']
+                code = prop[u'code']
                 if dynamic_prop_script_path is not None:
                     validation_script_creation = PluginCreation()
                     script_file = open(get_script(dynamic_prop_script_path))
                     script = script_file.read()
                     script_file.close()
-                    validation_script_creation.name = ScriptDefinitionToCreationParser.get_name_for(code, dynamic_prop_script_path)
+                    validation_script_creation.name = get_script_name_for(code, dynamic_prop_script_path)
                     validation_script_creation.script = script
                     validation_script_creation.pluginType = PluginType.DYNAMIC_PROPERTY
                     scripts.append(validation_script_creation)
 
         return scripts
 
-    @staticmethod
-    def get_name_for(owner_code, script_path):
-        return owner_code + '.' + get_filename_from_path(script_path)
-
-    @staticmethod
-    def get_type():
+    def get_type(self):
         return ScriptDefinitionToCreationParser.type
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/parsers/poi_to_definition/definition_parsers.py b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/parsers/poi_to_definition/definition_parsers.py
index 2990cc1345df82b4fc01806a0bc4a67c197149d8..3162d6fa80888174fdb5da9fe8f8bb93cfbaad69 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/parsers/poi_to_definition/definition_parsers.py
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/parsers/poi_to_definition/definition_parsers.py
@@ -1,3 +1,4 @@
+from java.lang import UnsupportedOperationException
 from .definition import Definition
 from .poi_cleaner import PoiCleaner
 
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/processors/__init__.py b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/processors/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..870975eb874cee348b26c457931b32da2f06a970
--- /dev/null
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/processors/__init__.py
@@ -0,0 +1 @@
+from .openbis_duplicates_processor import OpenbisDuplicatesHandler
\ No newline at end of file
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/openbis_logic.py b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/processors/openbis_duplicates_processor.py
similarity index 97%
rename from openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/openbis_logic.py
rename to openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/processors/openbis_duplicates_processor.py
index 2e6c63b0bdd118e7bcb872c00ddf8a8756934101..8b0c3077a0cd6107d972e5428ddd31c6029c17ba 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/openbis_logic.py
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/processors/openbis_duplicates_processor.py
@@ -7,7 +7,7 @@ from parsers import VocabularyDefinitionToCreationParser, PropertyTypeDefinition
                     ProjectDefinitionToCreationParser, ExperimentDefinitionToCreationParser, ScriptDefinitionToCreationParser, SampleDefinitionToCreationParser
 
 
-class OpenbisLogicHandler(object):
+class OpenbisDuplicatesHandler(object):
 
     def __init__(self, creations, existing_elements):
         self.creations = creations
@@ -101,7 +101,6 @@ class OpenbisLogicHandler(object):
     def _create_sample_identifier_string(self, creation):
         spaceId = creation.spaceId.creationId if creation.spaceId is not None else None
         projectId = creation.projectId.creationId if creation.projectId is not None else None
-#         experimentId = creation.experimentId.creationId if creation.experimentId is not None else None
         code = creation.code
         sample_identifier = SampleIdentifier(spaceId, projectId, None, code)
         return sample_identifier.identifier
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/life-sciences-types/scripts/dynamic/dynamic.py b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/test_files/scripts/dynamic/dynamic.py
similarity index 100%
rename from openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/life-sciences-types/scripts/dynamic/dynamic.py
rename to openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/test_files/scripts/dynamic/dynamic.py
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/life-sciences-types/scripts/valid.py b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/test_files/scripts/valid.py
similarity index 100%
rename from openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/life-sciences-types/scripts/valid.py
rename to openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/test_files/scripts/valid.py
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/life-sciences-types/types.xls b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/test_files/types.xls
similarity index 95%
rename from openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/life-sciences-types/types.xls
rename to openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/test_files/types.xls
index 473cc33398b77fb5980ba414df0437cd2cc91825..c2d224eb2ae234f8e00d673d04f887f8cc7922ea 100644
Binary files a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/life-sciences-types/types.xls and b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/test_files/types.xls differ
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/utils/__init__.py b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/utils/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..2ca4ab4e79e7906b8ec602767cae0928adb74f46
--- /dev/null
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/utils/__init__.py
@@ -0,0 +1,2 @@
+import file_handling
+import openbis_utils
\ No newline at end of file
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/file_handling.py b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/utils/file_handling.py
similarity index 100%
rename from openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/file_handling.py
rename to openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/utils/file_handling.py
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/utils/openbis_utils.py b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/utils/openbis_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..994918600bda0c3678fd20b93c490cd5a9e55ed2
--- /dev/null
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims-life-sciences/1/as/utils/openbis_utils.py
@@ -0,0 +1,9 @@
+from utils.file_handling import get_filename_from_path
+
+
+def is_internal_namespace(property_value):
+    return property_value.startswith(u'$')
+
+
+def get_script_name_for(owner_code, script_path):
+        return owner_code + '.' + get_filename_from_path(script_path)