diff --git a/integration-tests/templates/datastore_server_yeastx/etc/service.properties b/integration-tests/templates/datastore_server_yeastx/etc/service.properties
index 770f8ddfde2c084fba4d3a8e158c2312a992bf53..cf8f5c7f0ae9718e756cb81493af616d4b9f9d29 100644
--- a/integration-tests/templates/datastore_server_yeastx/etc/service.properties
+++ b/integration-tests/templates/datastore_server_yeastx/etc/service.properties
@@ -187,11 +187,12 @@ eicml-uploader.incoming-dir.format =
 eicml-uploader.reprocess-faulty-datasets = false
 
 # The extractor class to use for code extraction
-eicml-uploader.data-set-info-extractor = ch.systemsx.cisd.yeastx.etl.DataSetInfoExtractorYeastX
-eicml-uploader.data-set-info-extractor.file-name-property-code = ${file-name-property-code}
-eicml-uploader.data-set-info-extractor.index-of-experiment-identifier = 0
-eicml-uploader.data-set-info-extractor.index-of-parent-data-set-codes = 1
-eicml-uploader.data-set-info-extractor.entity-separator = ${data-set-file-name-entity-separator}
+eicml-uploader.data-set-info-extractor = ch.systemsx.cisd.etlserver.DataSetInfoExtractorWithFileNameProperty
+eicml-uploader.data-set-info-extractor.extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor
+eicml-uploader.data-set-info-extractor.extractor.file-name-property-code = ${file-name-property-code}
+eicml-uploader.data-set-info-extractor.extractor.index-of-experiment-identifier = 0
+eicml-uploader.data-set-info-extractor.extractor.index-of-parent-data-set-codes = 1
+eicml-uploader.data-set-info-extractor.extractor.entity-separator = ${data-set-file-name-entity-separator}
 
 # The extractor class to use for type extraction
 eicml-uploader.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor
@@ -216,11 +217,12 @@ fiaml-uploader.incoming-dir.format =
 fiaml-uploader.reprocess-faulty-datasets = false
 
 # The extractor class to use for code extraction
-fiaml-uploader.data-set-info-extractor = ch.systemsx.cisd.yeastx.etl.DataSetInfoExtractorYeastX
-fiaml-uploader.data-set-info-extractor.file-name-property-code = ${file-name-property-code}
-fiaml-uploader.data-set-info-extractor.index-of-experiment-identifier = 0
-fiaml-uploader.data-set-info-extractor.index-of-parent-data-set-codes = 1
-fiaml-uploader.data-set-info-extractor.entity-separator = ${data-set-file-name-entity-separator}
+fiaml-uploader.data-set-info-extractor = ch.systemsx.cisd.etlserver.DataSetInfoExtractorWithFileNameProperty
+fiaml-uploader.data-set-info-extractor.extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor
+fiaml-uploader.data-set-info-extractor.extractor.file-name-property-code = ${file-name-property-code}
+fiaml-uploader.data-set-info-extractor.extractor.index-of-experiment-identifier = 0
+fiaml-uploader.data-set-info-extractor.extractor.index-of-parent-data-set-codes = 1
+fiaml-uploader.data-set-info-extractor.extractor.entity-separator = ${data-set-file-name-entity-separator}
 
 # The extractor class to use for type extraction
 fiaml-uploader.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor
diff --git a/rtd_yeastx/etc/service.properties b/rtd_yeastx/etc/service.properties
index 9a588d89133c92aed10582632025f648c3262bf7..663151caebc9c124086409f9784bda7e4989890c 100644
--- a/rtd_yeastx/etc/service.properties
+++ b/rtd_yeastx/etc/service.properties
@@ -222,11 +222,12 @@ fiaml-uploader.incoming-dir.format =
 fiaml-uploader.reprocess-faulty-datasets = false
 
 # The extractor class to use for code extraction
-fiaml-uploader.data-set-info-extractor = ch.systemsx.cisd.yeastx.etl.DataSetInfoExtractorYeastX
-fiaml-uploader.data-set-info-extractor.file-name-property-code = ${file-name-property-code}
-fiaml-uploader.data-set-info-extractor.index-of-experiment-identifier = 0
-fiaml-uploader.data-set-info-extractor.index-of-parent-data-set-codes = 1
-fiaml-uploader.data-set-info-extractor.entity-separator = ${data-set-file-name-entity-separator}
+fiaml-uploader.data-set-info-extractor = ch.systemsx.cisd.etlserver.DataSetInfoExtractorWithFileNameProperty
+fiaml-uploader.data-set-info-extractor.extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor
+fiaml-uploader.data-set-info-extractor.extractor.file-name-property-code = ${file-name-property-code}
+fiaml-uploader.data-set-info-extractor.extractor.index-of-experiment-identifier = 0
+fiaml-uploader.data-set-info-extractor.extractor.index-of-parent-data-set-codes = 1
+fiaml-uploader.data-set-info-extractor.extractor.entity-separator = ${data-set-file-name-entity-separator}
 
 # The extractor class to use for type extraction
 fiaml-uploader.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor
diff --git a/rtd_yeastx/resource/examples/service.properties b/rtd_yeastx/resource/examples/service.properties
index 6519866824e4dcc1bbde5ba8a4b7bdd4f2c125d2..18f0fd46bc7e3b5be12743b112c812393e364cb1 100644
--- a/rtd_yeastx/resource/examples/service.properties
+++ b/rtd_yeastx/resource/examples/service.properties
@@ -215,11 +215,12 @@ eicml-uploader.incoming-dir.format =
 eicml-uploader.reprocess-faulty-datasets = false
 
 # The extractor class to use for code extraction
-eicml-uploader.data-set-info-extractor = ch.systemsx.cisd.yeastx.etl.DataSetInfoExtractorYeastX
-eicml-uploader.data-set-info-extractor.file-name-property-code = ${file-name-property-code}
-eicml-uploader.data-set-info-extractor.index-of-experiment-identifier = 0
-eicml-uploader.data-set-info-extractor.index-of-parent-data-set-codes = 1
-eicml-uploader.data-set-info-extractor.entity-separator = ${data-set-file-name-entity-separator}
+eicml-uploader.data-set-info-extractor = ch.systemsx.cisd.etlserver.DataSetInfoExtractorWithFileNameProperty
+eicml-uploader.data-set-info-extractor.extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor
+eicml-uploader.data-set-info-extractor.extractor.file-name-property-code = ${file-name-property-code}
+eicml-uploader.data-set-info-extractor.extractor.index-of-experiment-identifier = 0
+eicml-uploader.data-set-info-extractor.extractor.index-of-parent-data-set-codes = 1
+eicml-uploader.data-set-info-extractor.extractor.entity-separator = ${data-set-file-name-entity-separator}
 
 # The extractor class to use for type extraction
 eicml-uploader.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor
@@ -246,11 +247,12 @@ fiaml-uploader.incoming-dir.format =
 fiaml-uploader.reprocess-faulty-datasets = false
 
 # The extractor class to use for code extraction
-fiaml-uploader.data-set-info-extractor = ch.systemsx.cisd.yeastx.etl.DataSetInfoExtractorYeastX
-fiaml-uploader.data-set-info-extractor.file-name-property-code = ${file-name-property-code}
-fiaml-uploader.data-set-info-extractor.index-of-experiment-identifier = 0
-fiaml-uploader.data-set-info-extractor.index-of-parent-data-set-codes = 1
-fiaml-uploader.data-set-info-extractor.entity-separator = ${data-set-file-name-entity-separator}
+fiaml-uploader.data-set-info-extractor = ch.systemsx.cisd.etlserver.DataSetInfoExtractorWithFileNameProperty
+fiaml-uploader.data-set-info-extractor.extractor = ch.systemsx.cisd.etlserver.DefaultDataSetInfoExtractor
+fiaml-uploader.data-set-info-extractor.extractor.file-name-property-code = ${file-name-property-code}
+fiaml-uploader.data-set-info-extractor.extractor.index-of-experiment-identifier = 0
+fiaml-uploader.data-set-info-extractor.extractor.index-of-parent-data-set-codes = 1
+fiaml-uploader.data-set-info-extractor.extractor.entity-separator = ${data-set-file-name-entity-separator}
 
 # The extractor class to use for type extraction
 fiaml-uploader.type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor