Index: modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importCrossref.xml
===================================================================
--- modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importCrossref.xml	(revision 54150)
+++ modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importCrossref.xml	(nonexistent)
@@ -1,83 +0,0 @@
-<RESOURCE_PROFILE>
-	<HEADER>
-		<RESOURCE_IDENTIFIER value="e03f256e-1e4d-4b3d-9c07-91faf5d25208_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
-		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
-		<RESOURCE_KIND value="WorkflowDSResources"/>
-		<RESOURCE_URI value=""/>
-		<DATE_OF_CREATION value="2018-08-06T16:19:33+00:00"/>
-	</HEADER>
-	<BODY>
-		<WORKFLOW_NAME>Import CrossRef+ dump</WORKFLOW_NAME>
-		<WORKFLOW_TYPE>Import InfoSpace</WORKFLOW_TYPE>
-		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
-		<CONFIGURATION start="manual">
-			<NODE isStart="true" name="setInputPath" type="SetHdfsFile">
-				<DESCRIPTION>set the hdfs output path</DESCRIPTION>
-				<PARAMETERS>
-					<PARAM managedBy="user" name="hdfsPath" required="true" type="string">/usr/dnet/data/crossref</PARAM>
-					<PARAM managedBy="system" name="hdfsPathParam" required="true" type="string">inputPath</PARAM>
-				</PARAMETERS>
-				<ARCS>
-					<ARC to="prepareActionSets"/>
-				</ARCS>
-			</NODE>
-			<NODE name="prepareActionSets" type="PrepareActionSets">
-				<DESCRIPTION>prepare action sets</DESCRIPTION>
-				<PARAMETERS>
-					<PARAM managedBy="system" name="sets" required="true" type="string">
-						[
-						{
-						'set' : 'crossref-dump',
-						'jobProperty' : 'export_action_set_crossref_dump',
-						'enablingProperty' : 'active_crossref_dump',
-						'enabled' : 'true'
-						}
-						]
-					</PARAM>
-				</PARAMETERS>
-				<ARCS>
-					<ARC to="extractOutputPath"/>
-				</ARCS>
-			</NODE>
-			<NODE name="extractOutputPath" type="ExtractOutputPath">
-				<DESCRIPTION>extract the hdfs output path generated in the previous node</DESCRIPTION>
-				<PARAMETERS>
-					<PARAM managedBy="system" name="hdfsOutputPathParam" required="true" type="string">outputPath</PARAM>
-				</PARAMETERS>
-				<ARCS>
-					<ARC to="importActionSet"/>
-				</ARCS>
-			</NODE>
-			<NODE isJoin="true" name="importActionSet" type="SubmitHadoopJob">
-				<DESCRIPTION>IIS main</DESCRIPTION>
-				<PARAMETERS>
-					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">importCrossrefJob</PARAM>
-					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
-					<PARAM managedBy="system" name="envParams" required="true" type="string">
-						{
-						'mapred.input.dir':'inputPath',
-						'mapred.output.dir':'outputPath'
-						}
-					</PARAM>
-					<PARAM managedBy="user" name="simulation" required="true" type="boolean">false</PARAM>
-				</PARAMETERS>
-				<ARCS>
-					<ARC to="updateActionSets"/>
-				</ARCS>
-			</NODE>
-			<NODE name="updateActionSets" type="UpdateActionSets">
-				<DESCRIPTION>update action sets</DESCRIPTION>
-				<PARAMETERS/>
-				<ARCS>
-					<ARC to="success"/>
-				</ARCS>
-			</NODE>
-		</CONFIGURATION>
-		<STATUS>
-			<LAST_EXECUTION_ID>wf_20180807_092640_582</LAST_EXECUTION_ID>
-			<LAST_EXECUTION_DATE>2018-08-07T09:29:23+00:00</LAST_EXECUTION_DATE>
-			<LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
-			<LAST_EXECUTION_ERROR/>
-		</STATUS>
-	</BODY>
-</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/trunk/src/test/java/eu/dnetlib/utils/ontologies/OntologyLoaderTest.java
===================================================================
--- modules/dnet-openaireplus-workflows/trunk/src/test/java/eu/dnetlib/utils/ontologies/OntologyLoaderTest.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/trunk/src/test/java/eu/dnetlib/utils/ontologies/OntologyLoaderTest.java	(revision 54151)
@@ -0,0 +1,77 @@
+package eu.dnetlib.utils.ontologies;
+
+import org.apache.commons.lang3.StringUtils;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import static org.junit.Assert.*;
+
+/**
+ * Created by claudio on 12/12/2016.
+ */
+public class OntologyLoaderTest {
+
+    private String basePath = "/eu/dnetlib/test/profiles/OntologyDSResources/OntologyDSResourceType/";
+
+    @Test
+    public void testLoadOntologyFromCp() {
+
+        final InputStream i = getClass().getResourceAsStream(basePath + "result_result_relations.xml");
+
+        Ontology o = OntologyLoader.loadOntologyFromCp(i);
+        checkOntology(o);
+
+        String supplement = o.inverseOf("isSupplementedBy");
+        assertEquals(supplement, "isSupplementTo");
+
+        String part = o.inverseOf("isPartOf");
+        assertEquals(part, "hasPart");
+    }
+
+    @Test
+    public void testLoadOntologiesFromCp() throws IOException {
+
+        OntologyLoader.loadOntologiesFromCp().values().forEach(o -> checkOntology(o));
+    }
+
+    @Test
+    public void testLoadOntologiesSerialization() throws IOException {
+
+        final Ontologies o = OntologyLoader.loadOntologiesFromCp();
+        assertNotNull(o);
+
+        final String json = o.toJson(true);
+
+        assertFalse(StringUtils.isBlank(json));
+        assertFalse("{}".equals(json.trim()));
+
+        //System.out.println(json);
+
+        assertTrue(StringUtils.isNoneBlank(json));
+
+        final Ontologies o1 = OntologyLoader.loadOntologies(json);
+
+        assertNotNull(o1);
+
+        o1.entrySet().forEach(e -> checkOntology(e.getValue()));
+    }
+
+    private void checkOntology(Ontology o) {
+        Assert.assertNotNull(o);
+        Assert.assertTrue(StringUtils.isNotBlank(o.getCode()));
+        Assert.assertTrue(StringUtils.isNotBlank(o.getDescription()));
+        Assert.assertNotNull(o.getTerms().values());
+
+        o.getTerms().values().forEach(it -> {
+            Assert.assertTrue(StringUtils.isNotBlank(it.getCode()));
+            Assert.assertTrue(StringUtils.isNotBlank(it.getEncoding()));
+            Assert.assertTrue(StringUtils.isNotBlank(it.getEnglishName()));
+            Assert.assertTrue(StringUtils.isNotBlank(it.getNativeName()));
+            Assert.assertTrue(StringUtils.isNotBlank(it.getInverseCode()));
+            Assert.assertNotNull(o.getTerms().get(it.getInverseCode()));
+        });
+    }
+}
Index: modules/dnet-openaireplus-workflows/trunk/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FetchOntologiesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/trunk/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FetchOntologiesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/trunk/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FetchOntologiesJobNode.java	(revision 54151)
@@ -0,0 +1,36 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.utils.ontologies.Ontologies;
+import eu.dnetlib.utils.ontologies.OntologyLoader;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class FetchOntologiesJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(FetchOntologiesJobNode.class);
+
+    private String paramName;
+
+    @Override
+    protected String execute(NodeToken token) throws Exception {
+
+        final Ontologies ontologies = OntologyLoader.loadOntologiesFromIS();
+
+        log.info(String.format("loaded %s ontology profiles", ontologies.size()));
+
+        token.getEnv().setAttribute(getParamName(), ontologies.toJson());
+
+        return Arc.DEFAULT_ARC;
+    }
+
+    public String getParamName() {
+        return paramName;
+    }
+
+    public void setParamName(String paramName) {
+        this.paramName = paramName;
+    }
+}
Index: modules/dnet-openaireplus-workflows/trunk/src/main/java/eu/dnetlib/utils/ontologies/OntologyLoader.java
===================================================================
--- modules/dnet-openaireplus-workflows/trunk/src/main/java/eu/dnetlib/utils/ontologies/OntologyLoader.java	(revision 54150)
+++ modules/dnet-openaireplus-workflows/trunk/src/main/java/eu/dnetlib/utils/ontologies/OntologyLoader.java	(revision 54151)
@@ -1,13 +1,32 @@
 package eu.dnetlib.utils.ontologies;
 
-import javax.annotation.PostConstruct;
-
+import com.google.common.collect.Maps;
+import com.google.gson.Gson;
 import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
 import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
 import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.Node;
+import org.dom4j.io.SAXReader;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.PostConstruct;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
 /**
  * Created by claudio on 12/12/2016.
  */
@@ -14,24 +33,115 @@
 @Component
 public class OntologyLoader {
 
-	private static UniqueServiceLocator staticServiceLocator;
+    private static final Log log = LogFactory.getLog(OntologyLoader.class);
 
-	@Autowired
-	private UniqueServiceLocator serviceLocator;
+    private static final String PATTERN = "classpath*:/eu/dnetlib/test/profiles/OntologyDSResources/OntologyDSResourceType/*.xml";
 
-	// <TERM code="merges" encoding="organizationOrganization_dedup_merges" english_name="merges" native_name="merges">
-	public static String fetchInverse(final String relType) throws ISLookUpException {
-		final String xquery = "let $x:= /RESOURCE_PROFILE["
-				+ " .//RESOURCE_TYPE/@value = 'OntologyDSResourceType' and "
-				+ " .//TERM/@encoding='" + relType + "']"
-				+ "let $y:= $x//TERM[./@encoding='" + relType + "']//RELATION[./@type='inverseOf']/@code/string() "
-				+ "return $x//TERM[./@code = $y]/@encoding/string()";
-		return staticServiceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(xquery);
-	}
+    private static UniqueServiceLocator staticServiceLocator;
 
-	@PostConstruct
-	public void init() {
-		OntologyLoader.staticServiceLocator = serviceLocator;
-	}
+    @Autowired
+    private UniqueServiceLocator serviceLocator;
 
+
+    // <TERM code="merges" encoding="organizationOrganization_dedup_merges" english_name="merges" native_name="merges">
+    public static String fetchInverse(final String relType) throws ISLookUpException {
+        final String xquery = "let $x:= /RESOURCE_PROFILE["
+                + " .//RESOURCE_TYPE/@value = 'OntologyDSResourceType' and "
+                + " .//TERM/@encoding='" + relType + "']"
+                + "let $y:= $x//TERM[./@encoding='" + relType + "']//RELATION[./@type='inverseOf']/@code/string() "
+                + "return $x//TERM[./@code = $y]/@encoding/string()";
+        return staticServiceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(xquery);
+    }
+
+    @PostConstruct
+    public void init() {
+        OntologyLoader.staticServiceLocator = serviceLocator;
+    }
+
+    public static Ontology loadOntologyFromCp(final InputStream profile) {
+        return loadOntologyProfilefromPath(profile);
+    }
+
+    public static Ontologies loadOntologiesFromCp() throws IOException {
+        final PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
+        final List<InputStream> files = Arrays.asList(resolver.getResources(PATTERN)).stream().map(r -> {
+            try {
+                return r.getInputStream();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        }).collect(Collectors.toList());
+
+        return createOntologies(files);
+    }
+
+    public static Ontologies createOntologies(List<InputStream> files) {
+        final Ontologies ontologies = new Ontologies();
+        files.stream().map(
+                s -> loadOntologyProfilefromPath(s))
+                .collect(Collectors.toMap(Ontology::getCode, Function.identity()))
+                .entrySet()
+                .forEach(it -> ontologies.put(it.getKey(), it.getValue()));
+        return ontologies;
+    }
+
+    public static Ontologies loadOntologiesFromIS() throws ISLookUpException {
+        final ISLookUpService lookUpService = staticServiceLocator.getService(ISLookUpService.class);
+        List<String> files = lookUpService.quickSearchProfile("for $x in collection('/db/DRIVER/OntologyDSResources/OntologyDSResourceType') return $x");
+        final Ontologies ontologies = new Ontologies();
+        files.stream().map
+                (OntologyLoader::getOntologyFromProfile)
+                .collect(Collectors.toMap(Ontology::getCode, Function.identity()))
+                .entrySet()
+                .forEach(it -> ontologies.put(it.getKey(), it.getValue()));
+        return ontologies;
+    }
+
+    private static Ontology loadOntologyProfilefromPath(final InputStream profile) {
+        final String profileXML;
+        try {
+            profileXML = IOUtils.toString(profile);
+        } catch (IOException e) {
+            log.error(e);
+            return null;
+        }
+        return getOntologyFromProfile(profileXML);
+    }
+
+    private static Ontology getOntologyFromProfile(final String profile) {
+        SAXReader saxReader = new SAXReader();
+        Document doc = null;
+        StringReader reader = new StringReader(profile);
+
+        try {
+            doc = saxReader.read(reader);
+        } catch (DocumentException e) {
+            e.printStackTrace();
+            throw new RuntimeException(e);
+        }
+        return new Ontology()
+                .setCode(doc.valueOf("//ONTOLOGY_NAME/@code"))
+                .setDescription(doc.valueOf("//ONTOLOGY_DESCRIPTION/text()"))
+                .setTerms(asTerms(doc.selectNodes("//TERMS/TERM")));
+    }
+
+    private static Map<String,OntologyTerm> asTerms(final List list) {
+        final Map<String, OntologyTerm> terms = Maps.newHashMap();
+        if (list != null) {
+            list.forEach(o -> {
+                final Element e = (Element) o;
+                final OntologyTerm ot = OntologyTerm.newInstance()
+                        .setCode(e.attributeValue("code"))
+                        .setEncoding(e.attributeValue("encoding"))
+                        .setEnglishName(e.attributeValue("english_name"))
+                        .setNativeName(e.attributeValue("native_name"))
+                        .setInverseCode(((Node) o).valueOf("./RELATIONS/RELATION[@type = 'inverseOf']/@code"));
+
+                terms.put(ot.getCode(), ot);
+            });
+        }
+        return terms;
+    }
+
+
 }
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importAffiliationsDOIBoost.xml
===================================================================
--- modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importAffiliationsDOIBoost.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importAffiliationsDOIBoost.xml	(revision 54151)
@@ -0,0 +1,94 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="970c4826-cf6d-4dfe-850c-41e508d341fa_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2018-11-15T11:24:05+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Import Organizations from DOIboost</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Import InfoSpace</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE isStart="true" name="setOrgsOnly" type="SetEnvParameter">
+				<DESCRIPTION>set the parameter to drive the import procedure behaviour so that it will import only organizations</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="parameterName" required="true" type="string">onlyOrganization</PARAM>
+					<PARAM managedBy="user" name="parameterValue" required="false" type="string">true</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="importActionSet"/>
+				</ARCS>
+			</NODE>
+			<NODE isStart="true" name="setInputPath" type="SetHdfsFile">
+				<DESCRIPTION>set the hdfs output path</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="hdfsPath" required="true" type="string">/usr/dnet/data/doiboost</PARAM>
+					<PARAM managedBy="system" name="hdfsPathParam" required="true" type="string">inputPath</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="prepareActionSets"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareActionSets" type="PrepareActionSets">
+				<DESCRIPTION>prepare action sets</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="sets" required="true" type="string">
+						[
+						{
+						'set' : 'doiboost-organizations',
+						'jobProperty' : 'export_action_set_doiboost-organizations',
+						'enablingProperty' : 'active_doiboost-organizations',
+						'enabled' : 'true'
+						}
+						]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="extractOutputPath"/>
+				</ARCS>
+			</NODE>
+			<NODE name="extractOutputPath" type="ExtractOutputPath">
+				<DESCRIPTION>extract the hdfs output path generated in the previous node</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="hdfsOutputPathParam" required="true" type="string">outputPath</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="importActionSet"/>
+				</ARCS>
+			</NODE>
+			<NODE isJoin="true" name="importActionSet" type="SubmitHadoopJob">
+				<DESCRIPTION>IIS main</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">importDOIBoostJob</PARAM>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="envParams" required="true" type="string">
+						{
+						'mapred.input.dir':'inputPath',
+						'mapred.output.dir':'outputPath',
+						'onlyOrganization' : 'onlyOrganization'
+						}
+					</PARAM>
+					<PARAM managedBy="user" name="simulation" required="true" type="boolean">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateActionSets"/>
+				</ARCS>
+			</NODE>
+			<NODE name="updateActionSets" type="UpdateActionSets">
+				<DESCRIPTION>update action sets</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS>
+			<LAST_EXECUTION_ID>wf_20181026_140552_878</LAST_EXECUTION_ID>
+			<LAST_EXECUTION_DATE>2018-10-26T14:21:47+00:00</LAST_EXECUTION_DATE>
+			<LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
+			<LAST_EXECUTION_ERROR/>
+		</STATUS>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importDOIBoost.xml
===================================================================
--- modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importDOIBoost.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importDOIBoost.xml	(revision 54151)
@@ -0,0 +1,83 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="e03f256e-1e4d-4b3d-9c07-91faf5d25208_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2018-10-26T14:04:42+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Import DOIboost</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Import InfoSpace</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE isStart="true" name="setInputPath" type="SetHdfsFile">
+				<DESCRIPTION>set the hdfs output path</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="hdfsPath" required="true" type="string">/usr/dnet/data/doiboost</PARAM>
+					<PARAM managedBy="system" name="hdfsPathParam" required="true" type="string">inputPath</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="prepareActionSets"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareActionSets" type="PrepareActionSets">
+				<DESCRIPTION>prepare action sets</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="sets" required="true" type="string">
+						[
+						{
+						'set' : 'doiboost',
+						'jobProperty' : 'export_action_set_doiboost',
+						'enablingProperty' : 'active_doiboost',
+						'enabled' : 'true'
+						}
+						]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="extractOutputPath"/>
+				</ARCS>
+			</NODE>
+			<NODE name="extractOutputPath" type="ExtractOutputPath">
+				<DESCRIPTION>extract the hdfs output path generated in the previous node</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="hdfsOutputPathParam" required="true" type="string">outputPath</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="importActionSet"/>
+				</ARCS>
+			</NODE>
+			<NODE isJoin="true" name="importActionSet" type="SubmitHadoopJob">
+				<DESCRIPTION>IIS main</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">importDOIBoostJob</PARAM>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="envParams" required="true" type="string">
+						{
+						'mapred.input.dir':'inputPath',
+						'mapred.output.dir':'outputPath'
+						}
+					</PARAM>
+					<PARAM managedBy="user" name="simulation" required="true" type="boolean">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateActionSets"/>
+				</ARCS>
+			</NODE>
+			<NODE name="updateActionSets" type="UpdateActionSets">
+				<DESCRIPTION>update action sets</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS>
+			<LAST_EXECUTION_ID>wf_20181114_161523_453</LAST_EXECUTION_ID>
+			<LAST_EXECUTION_DATE>2018-11-14T16:59:55+00:00</LAST_EXECUTION_DATE>
+			<LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
+			<LAST_EXECUTION_ERROR/>
+		</STATUS>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/fixRelations.xml
===================================================================
--- modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/fixRelations.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/fixRelations.xml	(revision 54151)
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="f3b803df-d9a9-4b78-a867-a106b74a8584_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Fix relationships</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+
+
+            <NODE name="fetchOntologies" type="FetchOntologies" isStart="true">
+                <DESCRIPTION/>
+                <PARAMETERS>
+                    <PARAM name="paramName" type="string" managedBy="system" required="true">ontologies</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConf"/>
+                </ARCS>
+            </NODE>
+            <NODE name="hadoopConfig" type="SetClusterAndTable" isStart="true">
+                <DESCRIPTION>Set table name</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+                    <PARAM required="true" type="string" name="tableParam" managedBy="system">tableName</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConf"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="waitConf" isJoin="true">
+                <DESCRIPTION/>
+                <PARAMETERS/>
+                <ARCS>
+                    <ARC to="setRelOrganizationsParam"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="setRelOrganizationsParam" type="SetEnvParameter">
+                <DESCRIPTION>set sub-entity type for organizations</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM name="parameterName" type="string" managedBy="system" required="true">subentitytype</PARAM>
+                    <PARAM name="parameterValue" type="string" managedBy="system" required="true">organization</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="fixRelOrganizations"/>
+                </ARCS>
+            </NODE>
+
+
+            <NODE name="fixRelOrganizations" type="SubmitHadoopJob">
+                <DESCRIPTION>fix the relationships among deduped and non-deduped objects</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupFixRelationsJob</PARAM>
+                    <PARAM required="true" type="string" name="envParams" managedBy="system">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'hbase.mapred.outputtable' : 'tableName',
+                        'hbase.mapreduce.outputtable' : 'tableName'
+                        'ontologies' : 'ontologies',
+                        'subentitytype' : 'subentitytype'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="setRelPublicationsParam"/>
+                </ARCS>
+            </NODE>
+
+
+            <NODE name="setRelPublicationsParam" type="SetEnvParameter">
+                <DESCRIPTION>set sub-entity type for organizations</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM name="parameterName" type="string" managedBy="system" required="true">subentitytype</PARAM>
+                    <PARAM name="parameterValue" type="string" managedBy="system" required="true">publication</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="fixRelPublications"/>
+                </ARCS>
+            </NODE>
+
+
+            <NODE name="fixRelPublications" type="SubmitHadoopJob">
+                <DESCRIPTION>fix the relationships among deduped and non-deduped objects</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupFixRelationsJob</PARAM>
+                    <PARAM required="true" type="string" name="envParams" managedBy="system">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'hbase.mapred.outputtable' : 'tableName',
+                        'hbase.mapreduce.outputtable' : 'tableName'
+                        'ontologies' : 'ontologies',
+                        'subentitytype' : 'subentitytype'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="setRelDatasetsParam"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="setRelDatasetsParam" type="SetEnvParameter">
+                <DESCRIPTION>set sub-entity type for organizations</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM name="parameterName" type="string" managedBy="system" required="true">subentitytype</PARAM>
+                    <PARAM name="parameterValue" type="string" managedBy="system" required="true">dataset</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="fixRelDatasets"/>
+                </ARCS>
+            </NODE>
+
+
+            <NODE name="fixRelDatasets" type="SubmitHadoopJob">
+                <DESCRIPTION>fix the relationships among deduped and non-deduped objects</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupFixRelationsJob</PARAM>
+                    <PARAM required="true" type="string" name="envParams" managedBy="system">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'hbase.mapred.outputtable' : 'tableName',
+                        'hbase.mapreduce.outputtable' : 'tableName'
+                        'ontologies' : 'ontologies',
+                        'subentitytype' : 'subentitytype'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="setRelSoftwaresParam"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="setRelSoftwaresParam" type="SetEnvParameter">
+                <DESCRIPTION>set sub-entity type for organizations</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM name="parameterName" type="string" managedBy="system" required="true">subentitytype</PARAM>
+                    <PARAM name="parameterValue" type="string" managedBy="system" required="true">software</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="fixRelSoftwares"/>
+                </ARCS>
+            </NODE>
+
+
+            <NODE name="fixRelSoftwares" type="SubmitHadoopJob">
+                <DESCRIPTION>fix the relationships among deduped and non-deduped objects</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupFixRelationsJob</PARAM>
+                    <PARAM required="true" type="string" name="envParams" managedBy="system">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'hbase.mapred.outputtable' : 'tableName',
+                        'hbase.mapreduce.outputtable' : 'tableName'
+                        'ontologies' : 'ontologies',
+                        'subentitytype' : 'subentitytype'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="setRelOthersParam"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="setRelOthersParam" type="SetEnvParameter">
+                <DESCRIPTION>set sub-entity type for organizations</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM name="parameterName" type="string" managedBy="system" required="true">subentitytype</PARAM>
+                    <PARAM name="parameterValue" type="string" managedBy="system" required="true">other</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="fixRelOthers"/>
+                </ARCS>
+            </NODE>
+
+
+            <NODE name="fixRelOthers" type="SubmitHadoopJob">
+                <DESCRIPTION>fix the relationships among deduped and non-deduped objects</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupFixRelationsJob</PARAM>
+                    <PARAM required="true" type="string" name="envParams" managedBy="system">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'hbase.mapred.outputtable' : 'tableName',
+                        'hbase.mapreduce.outputtable' : 'tableName'
+                        'ontologies' : 'ontologies',
+                        'subentitytype' : 'subentitytype'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+
+
+
+        </CONFIGURATION>
+        <STATUS/>
+    </BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/applicationContext-msro-openaire-nodes.xml
===================================================================
--- modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/applicationContext-msro-openaire-nodes.xml	(revision 54150)
+++ modules/dnet-openaireplus-workflows/trunk/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/applicationContext-msro-openaire-nodes.xml	(revision 54151)
@@ -4,308 +4,309 @@
        xmlns="http://www.springframework.org/schema/beans"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 
-	<bean id="wfNodeUpdateActionSets"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.UpdateSetsJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeUpdateActionSets"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.UpdateSetsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodePrepareActionSets"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.PrepareActionSetsJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodePrepareActionSets"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.PrepareActionSetsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeCleanActionSetsProfile"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.CleanActionSetsProfileJobNode"
-	      p:xupdate="${dnet.actionmanager.garbage.sets.xupdate}" scope="prototype"/>
+    <bean id="wfNodeCleanActionSetsProfile"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.CleanActionSetsProfileJobNode"
+          p:xupdate="${dnet.actionmanager.garbage.sets.xupdate}" scope="prototype"/>
 
-	<bean id="wfNodeGarbageSets"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.GarbageSetsJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeGarbageSets"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.GarbageSetsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeGarbageSetsHDFS"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.GarbageSetsHDFSJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeGarbageSetsHDFS"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.GarbageSetsHDFSJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodePromoteActionsHDFS"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.PromoteActionsHDFSJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodePromoteActionsHDFS"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.PromoteActionsHDFSJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodePromoteActions"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.PromoteActionsJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodePromoteActions"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.PromoteActionsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodePrepareCopyTable"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.hbase.PrepareCopyTableJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodePrepareCopyTable"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.hbase.PrepareCopyTableJobNode"
+          scope="prototype"/>
 
 
-	<bean id ="wfNodeIncrementalTransformation"
-		  class="eu.dnetlib.msro.openaireplus.workflows.nodes.IncrementalTransformationJobNode"
-		  scope="prototype"/>
-	<bean id ="wfNodeIncrementalOperation"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.IncrementalOperationJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeIncrementalTransformation"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.IncrementalTransformationJobNode"
+          scope="prototype"/>
+    <bean id="wfNodeIncrementalOperation"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.IncrementalOperationJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeDecapsuleClaims"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.claims.DecapsuleClaimsJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeDecapsuleClaims"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.claims.DecapsuleClaimsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeOpenaireMdBuilder"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.OpenaireMdBuilderJobNode"
-	      p:xsltMappedResultSetFactory-ref="xsltResultSetFactory"
-	      p:mdBuilderTemplateXslt-ref="openaireMdBuilderTemplateXslt" scope="prototype"/>
+    <bean id="wfNodeOpenaireMdBuilder"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.OpenaireMdBuilderJobNode"
+          p:xsltMappedResultSetFactory-ref="xsltResultSetFactory"
+          p:mdBuilderTemplateXslt-ref="openaireMdBuilderTemplateXslt" scope="prototype"/>
 
-	<bean id="openaireMdBuilderTemplateXslt"
-	      class="eu.dnetlib.springutils.stringtemplate.StringTemplateFactory"
-	      p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt/openaireMdBuilder.xslt.st"
-	      scope="prototype"/>
+    <bean id="openaireMdBuilderTemplateXslt"
+          class="eu.dnetlib.springutils.stringtemplate.StringTemplateFactory"
+          p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt/openaireMdBuilder.xslt.st"
+          scope="prototype"/>
 
-	<bean id="wfNodeUpdateOpenaireMetaWfStatus"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.repohi.UpdateOpenaireMetaWfStatusJobNode"
-		  scope="prototype"/>
+    <bean id="wfNodeUpdateOpenaireMetaWfStatus"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.repohi.UpdateOpenaireMetaWfStatusJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeDeleteOpenaireMetaWf"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.repobye.DeleteOpenaireMetaWfJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeDeleteOpenaireMetaWf"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.repobye.DeleteOpenaireMetaWfJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeUpdateRepositoryProfiles"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.UpdateRepositoryProfilesJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeUpdateRepositoryProfiles"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.UpdateRepositoryProfilesJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeUpdateOpenaireDb" class="eu.dnetlib.msro.workflows.nodes.db.UpdateDbJobNode"
-	      scope="prototype" p:processCountingResultSetFactory-ref="msroProcessCountingResultSetFactory"
-	      p:db="${dnet.openaire.db.name}"/>
+    <bean id="wfNodeUpdateOpenaireDb" class="eu.dnetlib.msro.workflows.nodes.db.UpdateDbJobNode"
+          scope="prototype" p:processCountingResultSetFactory-ref="msroProcessCountingResultSetFactory"
+          p:db="${dnet.openaire.db.name}"/>
 
-	<bean id="wfNodeUpdateVocabularyEntries"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.UpdateVocabularyEntriesJobNode"
-	      scope="prototype"
-	      p:xquery="classpath:/eu/dnetlib/msro/openaireplus/workflows/db/vocabulary_entries.xquery"/>
+    <bean id="wfNodeUpdateVocabularyEntries"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.UpdateVocabularyEntriesJobNode"
+          scope="prototype"
+          p:xquery="classpath:/eu/dnetlib/msro/openaireplus/workflows/db/vocabulary_entries.xquery"/>
 
-	<bean id="wfNodeFindVocabularyEntries"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.FindVocabularyEntriesJobNode"
-	      scope="prototype"
-	      p:xquery="classpath:/eu/dnetlib/msro/openaireplus/workflows/db/vocabulary_entries.xquery"/>
+    <bean id="wfNodeFindVocabularyEntries"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.FindVocabularyEntriesJobNode"
+          scope="prototype"
+          p:xquery="classpath:/eu/dnetlib/msro/openaireplus/workflows/db/vocabulary_entries.xquery"/>
 
-	<!-- 	<bean id="wfNodeGetHBaseTableDescription" -->
-	<!-- 		class="eu.dnetlib.msro.openaireplus.workflows.nodes.hbase.GetHBaseTableDescriptionJobNode" -->
-	<!-- 		scope="prototype" /> -->
+    <!-- 	<bean id="wfNodeGetHBaseTableDescription" -->
+    <!-- 		class="eu.dnetlib.msro.openaireplus.workflows.nodes.hbase.GetHBaseTableDescriptionJobNode" -->
+    <!-- 		scope="prototype" /> -->
 
-	<bean id="wfNodeImportFiles"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.objectStore.ImportFilesJobNode"
-	      scope="prototype" p:processCountingResultSetFactory-ref="msroProcessCountingResultSetFactory"
-	      p:iterableResultSetFactory-ref="iterableResultSetFactory"/>
+    <bean id="wfNodeImportFiles"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.objectStore.ImportFilesJobNode"
+          scope="prototype" p:processCountingResultSetFactory-ref="msroProcessCountingResultSetFactory"
+          p:iterableResultSetFactory-ref="iterableResultSetFactory"/>
 
-	<bean id="wfNodeRetreiveInterfaceInfo"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.repohi.RetrieveInterfaceInfoJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeRetreiveInterfaceInfo"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.repohi.RetrieveInterfaceInfoJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeObtainOpenaireDataSourceParams"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.ObtainOpenaireDataSourceParamsJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeObtainOpenaireDataSourceParams"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.ObtainOpenaireDataSourceParamsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeSetHdfsFile"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.SetHdfsFileJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeSetHdfsFile"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.SetHdfsFileJobNode"
+          scope="prototype"/>
 
-	<!-- <bean id="wfNodeMDStoreImportJob" -->
-	<!-- class="eu.dnetlib.msro.openaireplus.workflows.nodes.hbase.HBaseMapReduceJobNode" -->
-	<!-- scope="prototype" p:hadoopJob-ref="mdStoreHdfsImportJob" -->
-	<!-- p:targetTable="${hbase.mapred.datatable}" p:hFileOutput="${services.mapreduce.mdrecords.hdsf.hfile.output}" -->
-	<!-- p:xslt="classpath:/eu/dnetlib/data/transform/dmf_2_hbase.xsl" /> -->
+    <!-- <bean id="wfNodeMDStoreImportJob" -->
+    <!-- class="eu.dnetlib.msro.openaireplus.workflows.nodes.hbase.HBaseMapReduceJobNode" -->
+    <!-- scope="prototype" p:hadoopJob-ref="mdStoreHdfsImportJob" -->
+    <!-- p:targetTable="${hbase.mapred.datatable}" p:hFileOutput="${services.mapreduce.mdrecords.hdsf.hfile.output}" -->
+    <!-- p:xslt="classpath:/eu/dnetlib/data/transform/dmf_2_hbase.xsl" /> -->
 
-	<bean id="wfNodeFindSearchService"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.FindSearchServiceJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeFindSearchService"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.FindSearchServiceJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeFindSearchServices"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.FindSearchServicesJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeFindSearchServices"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.FindSearchServicesJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeLoadContextsJob"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.LoadContextsJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeLoadContextsJob"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.LoadContextsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeLoadEntityLinksJob"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.LoadEntityLinksJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeLoadEntityLinksJob"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.LoadEntityLinksJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodePrepareIndexJob"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.PrepareIndexDataJobNode"
-	      scope="prototype" p:hbaseTable="${hbase.mapred.datatable}"/>
+    <bean id="wfNodePrepareIndexJob"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.PrepareIndexDataJobNode"
+          scope="prototype" p:hbaseTable="${hbase.mapred.datatable}"/>
 
-	<bean id="wfNodePrepareStatsParams"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.PrepareStatsParamJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodePrepareStatsParams"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.PrepareStatsParamJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodePrepareLodParams"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.PrepareLodParamJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodePrepareLodParams"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.PrepareLodParamJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeFinalizeIndexFeeding"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.FinalizeIndexJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeFinalizeIndexFeeding"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.FinalizeIndexJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeSwitchIndexes"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.SwitchIndexesJobNode"
-	      scope="prototype"/>
-	<bean id="wfNodeSwitchSearchService"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.SwitchSearchServiceJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeSwitchIndexes"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.SwitchIndexesJobNode"
+          scope="prototype"/>
+    <bean id="wfNodeSwitchSearchService"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.SwitchSearchServiceJobNode"
+          scope="prototype"/>
 
-	<!-- DEDUP -->
+    <!-- DEDUP -->
 
-	<!-- 	<bean id="wfNodeConfigureOfflineDataLoad" -->
-	<!-- 		class="eu.dnetlib.msro.openaireplus.workflows.nodes.dedup.ConfigureOfflineDataLoadJobNode" -->
-	<!-- 		scope="prototype" />		 -->
+    <!-- 	<bean id="wfNodeConfigureOfflineDataLoad" -->
+    <!-- 		class="eu.dnetlib.msro.openaireplus.workflows.nodes.dedup.ConfigureOfflineDataLoadJobNode" -->
+    <!-- 		scope="prototype" />		 -->
 
-	<!-- 	<bean id="wfNodeDefineHBaseDedupSchema" -->
-	<!-- 		class="eu.dnetlib.msro.openaireplus.workflows.nodes.dedup.DefineHBaseDedupSchemaJobNode" -->
-	<!-- 		scope="prototype" /> -->
+    <!-- 	<bean id="wfNodeDefineHBaseDedupSchema" -->
+    <!-- 		class="eu.dnetlib.msro.openaireplus.workflows.nodes.dedup.DefineHBaseDedupSchemaJobNode" -->
+    <!-- 		scope="prototype" /> -->
 
-	<!-- / DEDUP -->
+    <!-- / DEDUP -->
 
 
-	<bean id="wfNodePrepareIisMainParamsV2"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.PrepareIISMainParamsV2JobNode"
-	      scope="prototype" p:xqueryMdStoreService="${dnet.openaire.iis.mdstore.endpoint.xquery}"
-	      p:xqueryDatasetStore="${dnet.openaire.iis.mdstore.dataset.xquery}"
-	      p:xqueryObjectStores="${dnet.openaire.iis.objecstores.xquery}"
-	      p:xqueryObjectStoreService="${dnet.openaire.iis.objecstore.endpoint.xquery}"
-	      p:xqueryIsLookupService="${dnet.openaire.iis.islookup.endpoint.xquery}"/>
+    <bean id="wfNodePrepareIisMainParamsV2"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.PrepareIISMainParamsV2JobNode"
+          scope="prototype" p:xqueryMdStoreService="${dnet.openaire.iis.mdstore.endpoint.xquery}"
+          p:xqueryDatasetStore="${dnet.openaire.iis.mdstore.dataset.xquery}"
+          p:xqueryObjectStores="${dnet.openaire.iis.objecstores.xquery}"
+          p:xqueryObjectStoreService="${dnet.openaire.iis.objecstore.endpoint.xquery}"
+          p:xqueryIsLookupService="${dnet.openaire.iis.islookup.endpoint.xquery}"/>
 
-	<bean id="wfNodePreparePreprocessParamsV2"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.PrepareIISPreprocessingParamsV2JobNode"
-	      scope="prototype" p:xqueryDatabaseService="${dnet.openaire.iis.dbservice.endpoint.xquery}"
-	      p:xqueryMdStoreService="${dnet.openaire.iis.mdstore.endpoint.xquery}"
-	      p:xqueryObjectStoreService="${dnet.openaire.iis.objecstore.endpoint.xquery}"
-	      p:xqueryDatasetStore="${dnet.openaire.iis.mdstore.dataset.xquery}"
-	      p:xqueryWosMDStore="${dnet.openaire.iis.mdstore.wos.xquery}"
-	      p:xqueryDataciteObjectStore="${dnet.openaire.iis.objecstores.dataset.xquery}"
-	      p:xqueryWosObjectStore="${dnet.openaire.iis.objecstores.wos.xquery}"
-	      p:xqueryIsLookupService="${dnet.openaire.iis.islookup.endpoint.xquery}"/>
+    <bean id="wfNodePreparePreprocessParamsV2"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.PrepareIISPreprocessingParamsV2JobNode"
+          scope="prototype" p:xqueryDatabaseService="${dnet.openaire.iis.dbservice.endpoint.xquery}"
+          p:xqueryMdStoreService="${dnet.openaire.iis.mdstore.endpoint.xquery}"
+          p:xqueryObjectStoreService="${dnet.openaire.iis.objecstore.endpoint.xquery}"
+          p:xqueryDatasetStore="${dnet.openaire.iis.mdstore.dataset.xquery}"
+          p:xqueryWosMDStore="${dnet.openaire.iis.mdstore.wos.xquery}"
+          p:xqueryDataciteObjectStore="${dnet.openaire.iis.objecstores.dataset.xquery}"
+          p:xqueryWosObjectStore="${dnet.openaire.iis.objecstores.wos.xquery}"
+          p:xqueryIsLookupService="${dnet.openaire.iis.islookup.endpoint.xquery}"/>
 
-	<bean id="wfNodeIISCacheBuilder"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.IISCacheBuilderJobNode"
-	      scope="prototype" p:xqueryObjectStoreService="${dnet.openaire.iis.objecstore.endpoint.xquery}"/>
+    <bean id="wfNodeIISCacheBuilder"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.IISCacheBuilderJobNode"
+          scope="prototype" p:xqueryObjectStoreService="${dnet.openaire.iis.objecstore.endpoint.xquery}"/>
 
-	<bean id="wfNodeDownloadFromMetadataOpenaire"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.objectStore.DownloadFromMetadataOpenaire"
-	      scope="prototype"/>
+    <bean id="wfNodeDownloadFromMetadataOpenaire"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.objectStore.DownloadFromMetadataOpenaire"
+          scope="prototype"/>
 
-	<bean id="wfNodePatchHostedBy"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby.PatchHostedByJobNode"
-	      scope="prototype" p:mappedResultSetFactory-ref="mappedResultSetFactory"
-	      p:resultSetClientFactory-ref="resultSetClientFactory"/>
+    <bean id="wfNodePatchHostedBy"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby.PatchHostedByJobNode"
+          scope="prototype" p:mappedResultSetFactory-ref="mappedResultSetFactory"
+          p:resultSetClientFactory-ref="resultSetClientFactory"/>
 
-	<bean id="wfNodeFindHostedBy"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby.FindHostedByJobNode"
-	      scope="prototype" p:mappedResultSetFactory-ref="mappedResultSetFactory"
-	      p:resultSetClientFactory-ref="resultSetClientFactory"/>
+    <bean id="wfNodeFindHostedBy"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby.FindHostedByJobNode"
+          scope="prototype" p:mappedResultSetFactory-ref="mappedResultSetFactory"
+          p:resultSetClientFactory-ref="resultSetClientFactory"/>
 
-	<bean id="wfNodeUpsertHostedByApis"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby.UpsertHostedByApisJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeUpsertHostedByApis"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby.UpsertHostedByApisJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeSplitDatasetRecord"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.datacite.SplitDatasetRecord"
-	      p:resultSetClientFactory-ref="resultSetClientFactory" scope="prototype"/>
+    <bean id="wfNodeSplitDatasetRecord"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.datacite.SplitDatasetRecord"
+          p:resultSetClientFactory-ref="resultSetClientFactory" scope="prototype"/>
 
-	<bean id="wfNodeCollectDatasetsByJournal"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.datacite.CollectDatasetsByJournalJobNode"
-	      p:resultSetClientFactory-ref="resultSetClientFactory" scope="prototype"/>
+    <bean id="wfNodeCollectDatasetsByJournal"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.datacite.CollectDatasetsByJournalJobNode"
+          p:resultSetClientFactory-ref="resultSetClientFactory" scope="prototype"/>
 
-	<!-- Stats -->
-	<bean id="wfNodeFindStatsService"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.FindStatsServiceJobNode"
-	      scope="prototype"/>
+    <!-- Stats -->
+    <bean id="wfNodeFindStatsService"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.FindStatsServiceJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodePromoteShadowStats"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.PromoteShadowStatsJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodePromoteShadowStats"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.PromoteShadowStatsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeRefreshShadowCache"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.RefreshShadowCacheJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeRefreshShadowCache"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.RefreshShadowCacheJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeValidateShadowStats"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.ValidateShadowStatsJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeValidateShadowStats"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.ValidateShadowStatsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeBackupStatsCache"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.BackupStatsCacheJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeBackupStatsCache"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.BackupStatsCacheJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeRestoreStatsCache"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.RestoreStatsCacheJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeRestoreStatsCache"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.RestoreStatsCacheJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodePromoteShadowCacheStats"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.PromoteShadowCacheStatsJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodePromoteShadowCacheStats"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.PromoteShadowCacheStatsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeMigrateStatsCache"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.MigrateStatsCacheJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeMigrateStatsCache"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.stats.MigrateStatsCacheJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeRunMDStorePlugin"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.RunMDStorePluginJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeRunMDStorePlugin"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.RunMDStorePluginJobNode"
+          scope="prototype"/>
 
-	<!-- Contexts -->
-	<bean id="wfNodeProcessContexts"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.contexts.ProcessContextsJobNode"
-	      scope="prototype"/>
+    <!-- Contexts -->
+    <bean id="wfNodeProcessContexts"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.contexts.ProcessContextsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodePrepareContextDbEntries"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.contexts.PrepareContextDbEntriesJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodePrepareContextDbEntries"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.contexts.PrepareContextDbEntriesJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeSaveContextProfile"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.contexts.SaveContextProfileJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeSaveContextProfile"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.contexts.SaveContextProfileJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeCheckHDFSCounts"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.CheckHDFSCountJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeCheckHDFSCounts"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.CheckHDFSCountJobNode"
+          scope="prototype"/>
 
-	<!-- Data Flow Monitoring -->
-	<bean id="wfNodeTriggerPrepublicMonitoringScenario"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.dataFlowMonitoring.TriggerPrepublicMonitoringScenarioJobNode"
-	      scope="prototype"/>
-	<bean id="wfNodeTriggerIndexMonitoringScenario"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.dataFlowMonitoring.TriggerIndexMonitoringScenarioJobNode"
-	      scope="prototype"/>
+    <!-- Data Flow Monitoring -->
+    <bean id="wfNodeTriggerPrepublicMonitoringScenario"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dataFlowMonitoring.TriggerPrepublicMonitoringScenarioJobNode"
+          scope="prototype"/>
+    <bean id="wfNodeTriggerIndexMonitoringScenario"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dataFlowMonitoring.TriggerIndexMonitoringScenarioJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeFeedMissingClaims" class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.FeedMissingClaimsJobNode"
-	      p:queue-ref="recentResultsQueue" p:oafToIndexRecordFactory-ref="apiOafToIndexRecordFactory"
-	      scope="prototype"/>
+    <bean id="wfNodeFeedMissingClaims"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.FeedMissingClaimsJobNode"
+          p:queue-ref="recentResultsQueue" p:oafToIndexRecordFactory-ref="apiOafToIndexRecordFactory"
+          scope="prototype"/>
 
 
-	<bean id="wfNodePrepareHostedbyUpdateSQL"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby.PrepareHostedbyUpdateSQL"
-	      scope="prototype"/>
+    <bean id="wfNodePrepareHostedbyUpdateSQL"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby.PrepareHostedbyUpdateSQL"
+          scope="prototype"/>
 
-	<bean id="wfNodeVREPost"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.vre.VREPostJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeVREPost"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.vre.VREPostJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeGenerateFETContext"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.contexts.GenerateFETH2020ContextJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeGenerateFETContext"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.contexts.GenerateFETH2020ContextJobNode"
+          scope="prototype"/>
 
-	<bean id="listActionManagerSetsValues" lazy-init="true"
-	      class="eu.dnetlib.functionality.modular.ui.workflows.values.ListActionManagerSetsValues"
-	      p:name="actionSets"/>
+    <bean id="listActionManagerSetsValues" lazy-init="true"
+          class="eu.dnetlib.functionality.modular.ui.workflows.values.ListActionManagerSetsValues"
+          p:name="actionSets"/>
 
-	<bean id="wfNodeApplyClaimRels"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.claims.ApplyClaimRelsJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeApplyClaimRels"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.claims.ApplyClaimRelsJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeApplyClaimUpdates"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.claims.ApplyClaimUpdatesJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeApplyClaimUpdates"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.claims.ApplyClaimUpdatesJobNode"
+          scope="prototype"/>
 
-	<bean id="wfNodeFilterManagedDatasources"
-	      class="eu.dnetlib.msro.openaireplus.workflows.nodes.FilterManagedDatasourcesJobNode"
-	      scope="prototype"/>
+    <bean id="wfNodeFilterManagedDatasources"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.FilterManagedDatasourcesJobNode"
+          scope="prototype"/>
 
 
     <bean id="wfNodeExtractOutputPath"
@@ -312,34 +313,38 @@
           class="eu.dnetlib.msro.openaireplus.workflows.nodes.actions.ExtractOutputPathJobNode"
           scope="prototype"/>
 
-	<bean id="wfNodeLoadBulkTaggingConfiguration"
-		  class="eu.dnetlib.msro.openaireplus.workflows.nodes.bulktag.LoadBulkTaggingConfigurationJobNode"
-		  p:xquery="${dnet.openaire.bulktag.xquery}"
-		  scope="prototype"/>
-		  
-	 <!-- Consistency nodes -->
-	 <bean id="wfNodeFixRepoMdstoreSizes"
+    <bean id="wfNodeLoadBulkTaggingConfiguration"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.bulktag.LoadBulkTaggingConfigurationJobNode"
+          p:xquery="${dnet.openaire.bulktag.xquery}"
+          scope="prototype"/>
+
+    <!-- Consistency nodes -->
+    <bean id="wfNodeFixRepoMdstoreSizes"
           class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.FixRepoMdstoreSizesJobNode"
           scope="prototype"/>
-          
-     <bean id="wfNodeVerifyMdStoreSizes"
+
+    <bean id="wfNodeVerifyMdStoreSizes"
           class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.VerifyMdStoreSizesJobNode"
           scope="prototype"/>
 
-     <bean id="wfNodeFindInvalidRepoProfiles"
+    <bean id="wfNodeFindInvalidRepoProfiles"
           class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.FindInvalidRepoProfilesJobNode"
           scope="prototype"/>
-          
-     <bean id="wfNodeFindInvalidMetaWorkflows"
+
+    <bean id="wfNodeFindInvalidMetaWorkflows"
           class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.FindInvalidMetaWorkflowsJobNode"
           scope="prototype"/>
 
-     <bean id="wfNodeFindInvalidWorkflows"
+    <bean id="wfNodeFindInvalidWorkflows"
           class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.FindInvalidWorkflowsJobNode"
           scope="prototype"/>
-          
-      <bean id="wfNodeFindInvalidStores"
+
+    <bean id="wfNodeFindInvalidStores"
           class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.FindInvalidStoresJobNode"
           scope="prototype"/>
 
+    <bean id="wfNodeFetchOntologiesJobNode"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.FetchOntologiesJobNode"
+          scope="prototype"/>
+
 </beans>
