Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/pom.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/pom.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/pom.xml	(revision 60998)
@@ -0,0 +1,202 @@
+<?xml version="1.0" ?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<parent>
+		<groupId>eu.dnetlib</groupId>
+		<artifactId>dnet45-parent</artifactId>
+		<version>1.0.0</version>
+		<relativePath />
+	</parent>
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>eu.dnetlib</groupId>
+	<artifactId>dnet-openaireplus-workflows</artifactId>
+	<packaging>jar</packaging>
+	<version>7.1.12</version>
+
+	<scm>
+		<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12</developerConnection>
+	</scm>
+	<dependencies>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-data-flow-monitoring-core</artifactId>
+			<version>[3.0.0, 4.0.0)</version>
+			<exclusions>
+				<exclusion>
+					<artifactId>wstx-asl</artifactId>
+					<groupId>org.codehaus.woodstox</groupId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-enabling-database-api</artifactId>
+			<version>[2.0.0,3.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-enabling-database-service</artifactId>
+			<version>[3.0.0,4.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-msro-service</artifactId>
+			<version>[3.0.0,4.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-resultset-service</artifactId>
+			<version>[2.0.0,3.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-openaire-datasource-manager</artifactId>
+			<version>[1.0.0-SNAPSHOT,2.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-openaireplus-mapping-utils</artifactId>
+			<version>[6.3.24,7.0.0)</version>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-hadoop-service-rmi</artifactId>
+			<version>[1.0.0,2.0.0)</version>
+		</dependency>
+
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-collector-plugins</artifactId>
+			<version>[1.0.0,2.0.0)</version>
+		</dependency>
+
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-actionmanager-api</artifactId>
+			<version>[4.0.0,5.0.0)</version>
+		</dependency>
+
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-oai-common-workflows</artifactId>
+			<version>[5.0.0,6.0.0)</version>
+		</dependency>
+		
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-mongo-mdstore</artifactId>
+			<version>[6.0.0,7.0.0)</version>
+			<scope>provided</scope>
+		</dependency>
+		
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-modular-objectstore-service</artifactId>
+			<version>[4.2.1,5.0.0)</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-index-client</artifactId>
+			<version>[2.3.4,3.0.0)</version>
+		</dependency>
+
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-validator-workflows</artifactId>
+			<version>[1.0.0,2.0.0)</version>
+		</dependency>
+
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-deduplication</artifactId>
+			<version>[1.6.7,2.0.0)</version>
+		</dependency>
+
+		<!-- modular ui and servlet api are here because of the stats controller -->
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-directindex-api</artifactId>
+			<version>[2.1.13,3.0.0)</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.velocity</groupId>
+			<artifactId>velocity</artifactId>
+			<version>1.7</version>
+			<exclusions>
+				<exclusion>
+					<artifactId>antlr</artifactId>
+					<groupId>antlr</groupId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.velocity</groupId>
+			<artifactId>velocity-tools</artifactId>
+			<version>2.0</version>
+			<exclusions>
+				<exclusion>
+					<artifactId>antlr</artifactId>
+					<groupId>antlr</groupId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>javax.servlet-api</artifactId>
+			<version>${javax.servlet.version}</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>${junit.version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>dnet-openaireplus-profiles</artifactId>
+			<version>[1.0.0,2.0.0)</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-swagger2</artifactId>
+			<version>${springfox-version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-core</artifactId>
+			<version>1.9.5</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework</groupId>
+			<artifactId>spring-jdbc</artifactId>
+			<version>${spring.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>eu.dnetlib</groupId>
+			<artifactId>cnr-misc-utils</artifactId>
+			<version>[1.0.5, 2.0.0)</version>
+		</dependency>
+
+
+		<dependency>
+			<groupId>eu.dnetlib.dhp</groupId>
+			<artifactId>dhp-common</artifactId>
+			<version>1.2.4-branch_hadoop_aggregator</version>
+			<exclusions>
+				<exclusion>
+					<groupId>net.sf.saxon</groupId>
+					<artifactId>Saxon-HE</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+	</dependencies>
+
+	<properties>
+		<springfox-version>2.5.0</springfox-version>
+	</properties>
+</project>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_PubsRepository_Hadoop.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_PubsRepository_Hadoop.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_PubsRepository_Hadoop.xml	(revision 60998)
@@ -0,0 +1,93 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="513da605-e9b4-4150-9116-f82a34a8585f_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value="value3"/>
+        <DATE_OF_CREATION value="2019-04-03T16:44:41+02:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Aggregate Metadata DublinCore format [Hadoop]</WORKFLOW_NAME>
+        <WORKFLOW_INFO>
+            <FIELD name="Action">Aggregate Metadata</FIELD>
+            <FIELD name="Consequence IS">Ingestion</FIELD>
+            <FIELD name="Datasource class">PubsRepository</FIELD>
+            <FIELD name="Content">publications</FIELD>
+        </WORKFLOW_INFO>
+        <WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="VerifyDatasource" type="VerifyDatasource">
+                <DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="expectedInterfaceTypologyPrefixes" required="false" type="string"/>
+                    <PARAM managedBy="system" name="expectedCompliancePrefixes" required="false" type="string"/>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="createMetaWf"/>
+                    <ARC name="validateDs" to="validateDs"/>
+                </ARCS>
+            </NODE>
+            <NODE name="validateDs" type="ValidateDatasource">
+                <DESCRIPTION>Validate DS</DESCRIPTION>
+                <PARAMETERS/>
+                <ARCS>
+                    <ARC to="createMetaWf"/>
+                </ARCS>
+            </NODE>
+            <NODE name="createMetaWf" type="RegisterMetaWf">
+                <DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="wfName" required="true" type="string">Aggregate Metadata DublinCore format [Hadoop]
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="createDc"/>
+                    <ARC to="createOaf"/>
+                </ARCS>
+            </NODE>
+            <NODE name="createDc" type="CreateMDStoreHadoop">
+                <DESCRIPTION>Create oai_dc store</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="format" required="true" type="string">oai_dc</PARAM>
+                    <PARAM managedBy="system" name="interpretation" required="true" type="string">native</PARAM>
+                    <PARAM managedBy="system" name="layout" required="true" type="string">store</PARAM>
+                    <PARAM managedBy="system" name="outputPrefix" required="true" type="string">harv_</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="updateMetaWf"/>
+                </ARCS>
+            </NODE>
+            <NODE name="createOaf" type="CreateMDStoreHadoop">
+                <DESCRIPTION>Create OAF store</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="format" required="true" type="string">OAF</PARAM>
+                    <PARAM managedBy="system" name="interpretation" required="true" type="string">cleaned</PARAM>
+                    <PARAM managedBy="system" name="layout" required="true" type="string">store</PARAM>
+                    <PARAM managedBy="system" name="outputPrefix" required="true" type="string">tran_</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="updateMetaWf"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="updateMetaWf" type="UpdateMetaWf">
+                <DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="beanName" required="true" type="string">metaWfPubsRepositoryHadoop</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="updateMetaWfStatus"/>
+                </ARCS>
+            </NODE>
+            <NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+                <DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+                <PARAMETERS/>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+        </CONFIGURATION>
+
+        <STATUS/>
+    </BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Aggregator_datacite_Ingestion.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Aggregator_datacite_Ingestion.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Aggregator_datacite_Ingestion.xml	(revision 60998)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="d11c0790-b8a6-40da-99a3-605a83ecf798_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2019-03-26T16:51:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Aggregate metadata in datacite format from Aggregator [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">Aggregator,EntityRegistry::Products</FIELD>
+			<FIELD name="Content">results</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">aggregator,crissystem,pubscatalogue,infospace,entityregistry::products</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Aggregate metadata in datacite format from Aggregator [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDatacite"/>
+					<ARC to="createODF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDatacite" type="CreateMDStore">
+				<DESCRIPTION>Create oai_datacite native store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_datacite</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createODF" type="CreateMDStore">
+				<DESCRIPTION>Create ODF_datacite cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">ODF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfAggregatorDataRepository</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/update-info-date.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/update-info-date.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/update-info-date.xml	(revision 60998)
@@ -0,0 +1,208 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="b33d8107-35a2-463f-ae80-2ae68fb7dc9d_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2020-05-07T13:19:38+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Update info date</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Communication</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="SELECT_CLAIM_DATE" type="Selection" isStart="true">
+				<DESCRIPTION>Do we update the last claim load date?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="UpdateClaimLoadDate"/>
+					<ARC name="NO" to="SELECT_INFERENCE_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="UpdateClaimLoadDate" type="ExecuteSql">
+				<DESCRIPTION>update the last claim load date</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="boolean" name="sqlInClasspath" managedBy="system">false</PARAM>
+					<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+					<PARAM name="sql" type="string" managedBy="user" required="true">UPDATE info SET value='YYYY-mm-dd' WHERE key='claim_load_date';</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_INFERENCE_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_INFERENCE_DATE" type="Selection">
+			<DESCRIPTION>Do we update the last inference date?</DESCRIPTION>
+			<PARAMETERS>
+				<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+			</PARAMETERS>
+			<ARCS>
+				<ARC name="YES" to="UpdateLastIISDate"/>
+				<ARC name="NO" to="SELECT_OAF_LOAD_DATE"/>
+			</ARCS>
+		</NODE>
+			<NODE name="UpdateLastIISDate" type="ExecuteSql">
+				<DESCRIPTION>update the last inference date</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="boolean" name="sqlInClasspath" managedBy="system">false</PARAM>
+					<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+					<PARAM name="sql" type="string" managedBy="user" required="true">UPDATE info SET value='YYYY-mm-dd' WHERE key='inference_date';</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_OAF_LOAD_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_OAF_LOAD_DATE" type="Selection">
+				<DESCRIPTION>Do we update the last OAF load date?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="UpdateOAFLoadDate"/>
+					<ARC name="NO" to="SELECT_ODF_LOAD_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="UpdateOAFLoadDate" type="ExecuteSql">
+				<DESCRIPTION>update the last OAF load date</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="boolean" name="sqlInClasspath" managedBy="system">false</PARAM>
+					<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+					<PARAM name="sql" type="string" managedBy="user" required="true">UPDATE info SET value='YYYY-mm-dd' WHERE key='oaf_load_date';</PARAM>
+						</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_ODF_LOAD_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_ODF_LOAD_DATE" type="Selection">
+				<DESCRIPTION>Do we update the last ODF load date?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="UpdateODFLoadDate"/>
+					<ARC name="NO" to="SELECT_STATS_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="UpdateODFLoadDate" type="ExecuteSql">
+				<DESCRIPTION>update the last ODF load date</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="boolean" name="sqlInClasspath" managedBy="system">false</PARAM>
+					<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+					<PARAM name="sql" type="string" managedBy="user" required="true">UPDATE info SET value='YYYY-mm-dd' WHERE key='odf_load_date';</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_STATS_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_STATS_DATE" type="Selection">
+				<DESCRIPTION>Do we update the last stats update date?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="UpdateStatsDate"/>
+					<ARC name="NO" to="SELECT_CROSSREF_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="UpdateStatsDate" type="ExecuteSql">
+				<DESCRIPTION>update the last stats update date</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="boolean" name="sqlInClasspath" managedBy="system">false</PARAM>
+					<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+					<PARAM name="sql" type="string" managedBy="user" required="true">UPDATE info SET value='YYYY-mm-dd' WHERE key='stats_update_date';</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_CROSSREF_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_CROSSREF_DATE" type="Selection">
+				<DESCRIPTION>Do we update the last update date of Crossref?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="UpdateCrossrefDate"/>
+					<ARC name="NO" to="SELECT_ORCID_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="UpdateCrossrefDate" type="ExecuteSql">
+				<DESCRIPTION>update the last update date of Crossref</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="boolean" name="sqlInClasspath" managedBy="system">false</PARAM>
+					<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+					<PARAM name="sql" type="string" managedBy="user" required="true">UPDATE info SET value='YYYY-mm-dd' WHERE key='crossref_update_date';</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_ORCID_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_ORCID_DATE" type="Selection" isStart="true">
+				<DESCRIPTION>Do we update the last update date of ORCID?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="UpdateOrcidDate"/>
+					<ARC name="NO" to="SELECT_UNPAYWALL_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="UpdateOrcidDate" type="ExecuteSql">
+				<DESCRIPTION>update the last update date of ORCID</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="boolean" name="sqlInClasspath" managedBy="system">false</PARAM>
+					<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+					<PARAM name="sql" type="string" managedBy="user" required="true">UPDATE info SET value='YYYY-mm-dd' WHERE key='orcid_update_date';</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_UNPAYWALL_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_UNPAYWALL_DATE" type="Selection" isStart="true">
+				<DESCRIPTION>Do we update the last update date of Unpaywall?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="UpdateUnpaywallDate"/>
+					<ARC name="NO" to="SELECT_MAG_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="UpdateUnpaywallDate" type="ExecuteSql">
+				<DESCRIPTION>update the last update date of Unpaywall</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="boolean" name="sqlInClasspath" managedBy="system">false</PARAM>
+					<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+					<PARAM name="sql" type="string" managedBy="user" required="true">UPDATE info SET value='YYYY-mm-dd' WHERE key='unpaywall_update_date';</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_MAG_DATE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_MAG_DATE" type="Selection" isStart="true">
+				<DESCRIPTION>Do we update the last update date of Microsoft Academic Graph?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="UpdateMAGDate"/>
+					<ARC name="NO" to="success"/>
+				</ARCS>
+			</NODE>
+			<NODE name="UpdateMAGDate" type="ExecuteSql">
+				<DESCRIPTION>update the last update date of Microsoft Academic Graph</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="boolean" name="sqlInClasspath" managedBy="system">false</PARAM>
+					<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+					<PARAM name="sql" type="string" managedBy="user" required="true">UPDATE info SET value='YYYY-mm-dd' WHERE key='mag_update_date';</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_OAF_Intersection.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_OAF_Intersection.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_OAF_Intersection.xml	(revision 60998)
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="653aa5a0-5461-4fe0-8a46-e5aabaabc8bf_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-12-11T15:43:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Aggregate Metadata (OAF results) [Intersection]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Intersection</FIELD>
+			<FIELD name="Datasource class"></FIELD>
+			<FIELD name="Content">results</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string"></PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true"
+					       type="string">Aggregate Metadata (OAF results) [Intersection]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDc"/>
+					<ARC to="createOaf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDc" type="CreateMDStore">
+				<DESCRIPTION>Create oai_dc store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_dc</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createOaf" type="CreateMDStore">
+				<DESCRIPTION>Create OAF store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">OAF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">intersection</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfPubsRepository</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/content.publishing.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/content.publishing.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/content.publishing.meta.xml	(revision 60998)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="57bbdded-019e-4163-ae70-dd9f495f3f0b_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-16T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="OpenAIRE Provision">OpenAIRE Content Publishing</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="605d8dc9-8dc7-4adc-848d-625b5655e468_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="prepare public info space stats">
+				<WORKFLOW id="546f8ba1-2ca2-4e29-86ea-c9489ab9b857_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="publish content"/>
+			</WORKFLOW>
+			<WORKFLOW id="8794eb9a-7b05-4d3e-bec7-538d6ef1f855_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Post on VRE News feed"/>
+			<WORKFLOW id="b33d8107-35a2-463f-ae80-2ae68fb7dc9d_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Update info date"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/pubsRepository_claim_ingestion.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/pubsRepository_claim_ingestion.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/pubsRepository_claim_ingestion.xml	(revision 60998)
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="7e0f9cc0-368c-4bb9-93bf-cf72bb4ac355_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Collect and transform claimed metadata records</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">scholarcomminfra,researchgraph</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Collect and transform claimed metadata records</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createNative"/>
+					<ARC to="createCleaned"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createNative" type="CreateMDStore">
+				<DESCRIPTION>Create native store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">claim</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createCleaned" type="CreateMDStore">
+				<DESCRIPTION>Create cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">OAF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">claim</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfClaimedMdRecords</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_DataRepository_Inference.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_DataRepository_Inference.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_DataRepository_Inference.xml	(revision 60998)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="0cfc367d-dd4e-4c8f-bc95-c37499638985_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>[DEPRECATED] Aggregate Metadata (datasets) from DataRepository [Inference]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Inference</FIELD>
+			<FIELD name="Datasource class">DataRepository</FIELD>
+			<FIELD name="Content">datasets</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">datarepository</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">[DEPRECATED] Aggregate Metadata (datasets) from DataRepository [Inference]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDatacite"/>
+					<ARC to="createODF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDatacite" type="CreateMDStore">
+				<DESCRIPTION>Create oai_datacite native store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_datacite</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createODF" type="CreateMDStore">
+				<DESCRIPTION>Create ODF cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">ODF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned_noingestion</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfDataRepository</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/dm.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/dm.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/dm.meta.xml	(revision 60998)
@@ -0,0 +1,39 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="b6addffa-bae1-42db-811c-ae20a5c514a6_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2019-03-12T11:29:57+00:00"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="OpenAIRE Provision">OpenAIRE Provision</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION/>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL>alessia.bardi@isti.cnr.it,claudio.atzori@isti.cnr.it</ADMIN_EMAIL>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="ce304c65-5836-4cf0-9a48-53472b9f6f35_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="reset">
+				<WORKFLOW id="001ca627-1ae1-4053-9243-bca6ee149b22_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="claims2hbase">
+					<WORKFLOW id="c7d7d775-2db3-474d-85ab-5173a582d515_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="oaf2hbase"/>
+					<WORKFLOW id="939f1075-70ed-4fbd-9055-ea16e5984531_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="odf2hbase"/>
+				</WORKFLOW>
+				<WORKFLOW id="e92d2f81-ea98-4732-a306-07da87f35033_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="db2hbase"/>
+				<WORKFLOW id="3e225d27-696a-4d55-96d4-3498a61960d9_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="actions2hbase">
+					<WORKFLOW id="0cf7fd94-4cce-46dd-bbfc-86aa9996cc4c_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="close mesh v2">
+						<WORKFLOW id="e454271b-469a-4942-99d4-3623043897d9_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="apply blacklist">
+							<WORKFLOW id="96780261-022d-474c-b2cd-5369e5e73742_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="bulk tagging">
+								<WORKFLOW id="a4434d62-d4cd-4c73-a107-bc7c62e6f815_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="update provision">
+									<WORKFLOW id="8aabd31c-3be8-407a-8f53-6548f50ec728_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="prepare pre-public info space"/>
+								</WORKFLOW>
+							</WORKFLOW>
+						</WORKFLOW>
+					</WORKFLOW>
+				</WORKFLOW>
+			</WORKFLOW>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_PubsRepository_Ingestion.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_PubsRepository_Ingestion.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_PubsRepository_Ingestion.xml	(revision 60998)
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="86251144-0938-4b8d-b0f9-eb4f0021912b_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-12-15T15:43:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>[DEPRECATED] Aggregate and Validate Metadata (publications) from PubsRepository [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">PubsRepository</FIELD>
+			<FIELD name="Content">publications</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">pubsrepository</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true"
+					       type="string">[DEPRECATED] Aggregate and Validate Metadata (publications) from PubsRepository [Ingestion]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDc"/>
+					<ARC to="createOaf"/>
+					<!-- 					<ARC to="CreateNativeIndex" /> -->
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDc" type="CreateMDStore">
+				<DESCRIPTION>Create oai_dc store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_dc</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createOaf" type="CreateMDStore">
+				<DESCRIPTION>Create OAF store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">OAF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfPubsRepository</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/import.infospace.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/import.infospace.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/import.infospace.xml	(revision 60998)
@@ -0,0 +1,27 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="900d9ed5-ab8e-42b8-b712-c8f2122beac6_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2018-07-24T15:29:07+00:00"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="stats">Import Infospace</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION/>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL>alessia.bardi@isti.cnr.it,claudio.atzori@isti.cnr.it</ADMIN_EMAIL>
+		<CONFIGURATION status="EXECUTABLE">
+            <WORKFLOW id="e03f256e-1e4d-4b3d-9c07-91faf5d25207_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Import ScholExplorer">
+                <WORKFLOW id="e03f256e-1e4d-4b3d-9c07-91faf5d25208_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Import DOIboost"/>
+                <WORKFLOW id="970c4826-cf6d-4dfe-850c-41e508d341fa_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Import organizations from DOIboost"/>
+                <WORKFLOW id="ff25219c-e485-4440-8bc0-a8bbe42512ac_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Import Grid.AC"/>
+                <WORKFLOW id="7c8765af-1253-4bd7-8806-315b73bf7319_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Import Orcid"/>
+            </WORKFLOW>
+        </CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_AggregatorPubsRepository_Ingestion.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_AggregatorPubsRepository_Ingestion.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_AggregatorPubsRepository_Ingestion.xml	(revision 60998)
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="b5bdb58a-babb-4e5f-92df-d9fba8cb3457_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-12-15T15:43:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>[DEPRECATED] Aggregate and Validate Metadata (publications) from Aggregator::PubsRepository [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">Aggregator::PubsRepository</FIELD>
+			<FIELD name="Content">publications</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">aggregator::pubsrepository,pubscatalogue,infospace</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true"
+					       type="string">[DEPRECATED] Aggregate and Validate Metadata (publications) from Aggregator::PubsRepository [Ingestion]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDc"/>
+					<ARC to="createOaf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDc" type="CreateMDStore">
+				<DESCRIPTION>Create oai_dc store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_dc</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createOaf" type="CreateMDStore">
+				<DESCRIPTION>Create OAF store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">OAF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfAggregatorPubsRepositoryIngestion</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_PubsRepository_Inference.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_PubsRepository_Inference.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_PubsRepository_Inference.xml	(revision 60998)
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="79dc9f0d-e98d-4f4f-aaa9-b2ebf7fbdb92_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>[DEPRECATED] Aggregate Metadata (publications) from PubsRepository [Inference]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Inference</FIELD>
+			<FIELD name="Datasource class">PubsRepository</FIELD>
+			<FIELD name="Content">publications</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system"
+					       required="false" type="string">websource
+					</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system"
+					       required="false" type="string">native
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Aggregate
+						[DEPRECATED]Metadata (publications) from PubsRepository [Inference]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createGMF"/>
+					<ARC to="createOAF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createGMF" type="CreateMDStore">
+				<DESCRIPTION>Create store for native records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">GMF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true"
+					       type="string">native
+					</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true"
+					       type="string">harv_
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createOAF" type="CreateMDStore">
+				<DESCRIPTION>Create store for cleaned records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">OAF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true"
+					       type="string">cleaned_noingestion
+					</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true"
+					       type="string">tran_
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true"
+					       type="string">metaWfPubsRepository
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_DataRepositorybyProject.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_DataRepositorybyProject.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_DataRepositorybyProject.xml	(revision 60998)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="e6671162-bea5-449f-bf0a-2f8dcc106138_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Aggregate Metadata (datasets and publications by project) from PANGAEA [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">DataRepository</FIELD>
+			<FIELD name="Content">datasets and publications by project</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Retrieve datasets by projects id</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">datarepository::unknown</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Aggregate Metadata (datasets and publications by project) from PANGAEA [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDatacite"/>
+					<ARC to="createODF"/>
+					<ARC to="createOAF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDatacite" type="CreateMDStore">
+				<DESCRIPTION>Create dataset native store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">dataset</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createODF" type="CreateMDStore">
+				<DESCRIPTION>Create ODF_dataset cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">ODF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tranODF_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createOAF" type="CreateMDStore">
+				<DESCRIPTION>Create OAF_publication cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">OAF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tranOAF_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfDatasetbyProjectsOpenaireMdRecords</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_AggregatorDataRepository_Inference.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_AggregatorDataRepository_Inference.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_AggregatorDataRepository_Inference.xml	(revision 60998)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="3c924d16-83c1-44b0-81cd-681df42bcec4_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>[DEPRECATED] Aggregate Metadata (datasets) from Aggregator::DataRepository [Inference]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Inference</FIELD>
+			<FIELD name="Datasource class">aggregator::datarepository</FIELD>
+			<FIELD name="Content">datasets</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">aggregator::datarepository</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">[DEPRECATED] Aggregate Metadata (datasets) from Aggregator::DataRepository [Inference]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDatacite"/>
+					<ARC to="createODF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDatacite" type="CreateMDStore">
+				<DESCRIPTION>Create oai_datacite native store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_datacite</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createODF" type="CreateMDStore">
+				<DESCRIPTION>Create ODF_datacite cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">ODF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned_noingestion</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfAggregatorDataRepository</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_HostedbyMap_journal_intersection.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_HostedbyMap_journal_intersection.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_HostedbyMap_journal_intersection.xml	(revision 60998)
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="2ffee4a5-2f5a-40b3-9e49-e4caab7784f4_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Fill hostedBy-Map (ISSNs in DOAJ) from PANGAEA [Context]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Fill hostedBy-Map</FIELD>
+			<FIELD name="Consequence IS">Context</FIELD>
+			<FIELD name="Datasource class">PANGAEA</FIELD>
+			<FIELD name="Content">ISSNs</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">datarepository::unknown</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string">native</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Fill hostedBy-Map (ISSNs in DOAJ) from PANGAEA [Context]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfHostedByMapJournalIntersection</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Copy_files_from_PubsRepository_inference.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Copy_files_from_PubsRepository_inference.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Copy_files_from_PubsRepository_inference.xml	(revision 60998)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="126e90d7-c20b-4318-90ca-b66a5ccbabcb_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>[DEPRECATED] Copy Metadata as Files (publications) from PubsRepository [Inference]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Copy Metadata as Files</FIELD>
+			<FIELD name="Consequence IS">Inference</FIELD>
+			<FIELD name="Datasource class">PubsRepository</FIELD>
+			<FIELD name="Content">files</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string">files</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="RetreiveInterfaceInfo"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="RetreiveInterfaceInfo"/>
+				</ARCS>
+			</NODE>
+			<NODE name="RetreiveInterfaceInfo" type="RetreiveInterfaceInfo">
+				<DESCRIPTION>Retreive Interface Info</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">[DEPRECATED] Copy Metadata as Files (publications) from PubsRepository [Inference]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createObjectStore"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createObjectStore" type="CreateObjectStore">
+				<DESCRIPTION>Create Object store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="interpretation" managedBy="system" required="true"
+					       type="string">wos record
+					</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true"
+					       type="string">objs_
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true"
+					       type="string">metaWfCopyFiles
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_HostedbyMap_journal.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_HostedbyMap_journal.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_HostedbyMap_journal.xml	(revision 60998)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="3671f84d-177b-4732-b795-8d8ed8603964_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Fill hostedBy-Map (ISSNs) [Context]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Fill hostedBy-Map</FIELD>
+			<FIELD name="Consequence IS">Context</FIELD>
+			<FIELD name="Datasource class">EntityRegistry, Aggregator</FIELD>
+			<FIELD name="Content">ISSNs</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">entityregistry,aggregator::pubsrepository</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string">native</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Fill hostedBy-Map (ISSNs) [Context]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfHostedByMapJournal</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Extract_Contexts_from_EntityRegistry_Native.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Extract_Contexts_from_EntityRegistry_Native.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Extract_Contexts_from_EntityRegistry_Native.xml	(revision 60998)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="fa0b0a7b-383d-40d5-a3ef-5605b3e62f26_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2013-03-03T11:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>[DEPRECATED] Aggregate project contexts from EntityRegistry [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate contexts</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">EntityRegistry</FIELD>
+			<FIELD name="Content">project contexts</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">entityregistry::projects</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string">native</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Aggregate project contexts from EntityRegistry [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfContextsEntityReg</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Download_files_from_PubsRepository.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Download_files_from_PubsRepository.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Download_files_from_PubsRepository.xml	(revision 60998)
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="e08d993f-6349-4ca8-b7b6-e76914101712_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Download Files (files) from PubsRepository [Inference]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Download Files</FIELD>
+			<FIELD name="Consequence IS">Inference</FIELD>
+			<FIELD name="Datasource class">PubsRepository</FIELD>
+			<FIELD name="Content">files</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system"
+					       required="false" type="string">pubsrepository, aggregator::pubsrepository
+					</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system"
+					       required="false" type="string">files
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="RetreiveInterfaceInfo"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="RetreiveInterfaceInfo"/>
+				</ARCS>
+			</NODE>
+			<NODE name="RetreiveInterfaceInfo" type="RetreiveInterfaceInfo">
+				<DESCRIPTION>Retreive Interface Info</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Download Files (files) from PubsRepository [Inference]</PARAM>
+					<PARAM name="adminEmail" managedBy="system" required="false" type="string">openaire-fulltexts@openaire.eu</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createObjectStore"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createObjectStore" type="CreateObjectStore">
+				<DESCRIPTION>Create Object store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="interpretation" managedBy="system" required="true"
+					       type="string">pubrepository record
+					</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true"
+					       type="string">objs_
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true"
+					       type="string">metaWfPubRepositoryFiles
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/dedup.ocean.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/dedup.ocean.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/dedup.ocean.xml	(revision 60998)
@@ -0,0 +1,171 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="2483c5e4-dde8-4452-bd9c-38d436d8d941_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2020-03-24T11:15:39+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Offline Deduplication [OCEAN]</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Deduplication</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+
+            <NODE name="setGraphBasePath" type="SetEnvParameter" isStart="true">
+                <DESCRIPTION>Set the target directory to materialize the graph</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">graphBasePath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/var/lib/dnet/graph_BETA</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="REUSE_RAW_GRAPH"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="REUSE_RAW_GRAPH" type="Selection">
+                <DESCRIPTION>Is the raw graph already available?</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC name="YES" to="setRawGraphPath"/>
+                    <ARC name="NO" to="rawGraph"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="rawGraph" type="SubmitHadoopJob">
+                <DESCRIPTION>create the raw graph</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM required="true" type="string" name="hadoopJob" managedBy="system">executeOozieJob</PARAM>
+                    <PARAM required="true" type="string" name="cluster"   managedBy="system">IIS</PARAM>
+                    <PARAM required="true" type="string" name="envParams" managedBy="system">
+                        {
+                        'graphBasePath' : 'graphBasePath'
+                        }
+                    </PARAM>
+                    <PARAM required="true" type="string" name="params" managedBy="system">
+                        {
+                        'oozie.wf.application.path' : '/lib/dnet/migration/wfs/regular_all_steps/oozie_app',
+                        'mongoURL' : 'mongodb://beta.services.openaire.eu',
+                        'mongoDb' : 'mdstore',
+                        'postgresURL' : 'jdbc:postgresql://beta.services.openaire.eu:5432/dnet_openaireplus',
+                        'postgresUser' : 'dnet',
+                        'postgresPassword' : 'xxx',
+                        'workingPath' : '/tmp/dhp_migration_beta',
+                        'reuseContent' : 'true'
+                        }
+                    </PARAM>
+                    <PARAM required="true" type="boolean" name="simulation" managedBy="system">false</PARAM>
+                    <PARAM required="true" type="string" name="oozieReportActionsCsv" managedBy="system">build-report</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="setRawGraphPath"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="setRawGraphPath" type="SetEnvParameter">
+                <DESCRIPTION>Set the path containing the raw graph</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">rawGraphPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/var/lib/dnet/graph_BETA/graph_raw</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="setDedupWorkingPath"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="setDedupWorkingPath" type="SetEnvParameter">
+                <DESCRIPTION>Set the path used by dedup workflows to store intermediate data</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">dedupWorkingPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/tmp/beta_dedup</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="setDedupGraphPath"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="setDedupGraphPath" type="SetEnvParameter">
+                <DESCRIPTION>Set the target path to store the deduped graph</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">dedupGraphPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/var/lib/dnet/graph_BETA/graph_dedup</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="setDedupConfig"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="setDedupConfig" type="SetDedupConfiguration">
+                <DESCRIPTION>Set Dedup conf</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM function="obtainValues('dedupOrchestrations', {})" managedBy="user" name="dedupConfigSequence" required="true" type="string">dedup-similarity-organization</PARAM>
+                    <PARAM managedBy="system" name="dedupConfigSequenceParam" required="true" type="string">dedup.conf.queue</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="duplicateScan"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="duplicateScan" type="SubmitHadoopJob">
+                <DESCRIPTION>create the raw graph</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM required="true" type="string" name="hadoopJob" managedBy="system">executeOozieJob</PARAM>
+                    <PARAM required="true" type="string" name="cluster"   managedBy="system">IIS</PARAM>
+                    <PARAM required="true" type="string" name="envParams" managedBy="system">
+                        {
+                        'actionSetId' : 'setActionSetId',
+                        'graphBasePath' : 'rawGraphPath',
+                        'workingPath' 	: 'dedupWorkingPath',
+                        'dedupGraphPath': 'dedupGraphPath'
+                        }
+                    </PARAM>
+                    <PARAM required="true" type="string" name="params" managedBy="system">
+                        {
+                        'oozie.wf.application.path' : '/lib/dnet/dedup/scan/oozie_app'
+                        }
+                    </PARAM>
+                    <PARAM required="true" type="string" name="oozieReportActionsCsv" managedBy="system">build-report</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="dedupConsistency"/>
+                </ARCS>
+            </NODE>
+
+            <NODE name="dedupConsistency" type="SubmitHadoopJob">
+                <DESCRIPTION>mark duplicates as deleted and redistribute the relationships</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM required="true" type="string" name="hadoopJob" managedBy="system">executeOozieJob</PARAM>
+                    <PARAM required="true" type="string" name="cluster"   managedBy="system">IIS</PARAM>
+                    <PARAM required="true" type="string" name="envParams" managedBy="system">
+                        {
+                        'graphBasePath' : 'rawGraphPath',
+                        'dedupGraphPath': 'dedupGraphPath'
+                        'workingPath' 	: 'dedupWorkingPath',
+                        }
+                    </PARAM>
+                    <PARAM required="true" type="string" name="params" managedBy="system">
+                        {
+                        'oozie.wf.application.path' : '/lib/dnet/dedup/consistency/oozie_app'
+                        }
+                    </PARAM>
+                    <PARAM required="true" type="string" name="oozieReportActionsCsv" managedBy="system">build-report</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+
+
+        </CONFIGURATION>
+        <STATUS>
+            <LAST_EXECUTION_ID>wf_20200320_224915_420</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2020-03-20T23:07:47+00:00</LAST_EXECUTION_DATE>
+            <LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
+            <LAST_EXECUTION_ERROR/>
+            <LAST_EXECUTION_OUTPUT name="mainlog:storeSimilarities:count">0</LAST_EXECUTION_OUTPUT>
+            <LAST_EXECUTION_OUTPUT name="mainlog:storeDissimilarities:count">0</LAST_EXECUTION_OUTPUT>
+        </STATUS>
+    </BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_EntityRegistryProjects_Native.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_EntityRegistryProjects_Native.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_EntityRegistryProjects_Native.xml	(revision 60998)
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="a720c644-0c03-4c5d-b94d-503ea9f42b1b_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Aggregate Projects, Fundings and Contextes [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">EntityRegistry, Aggregator</FIELD>
+			<FIELD name="Content">project, organization, person, funding, context</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">entityregistry::projects</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string">native</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Aggregate Projects, Fundings and Contextes [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createGMF"/>
+					<ARC to="createDBMF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createGMF" type="CreateMDStore">
+				<DESCRIPTION>Create store for native records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">GMF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">orig_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createDBMF" type="CreateMDStore">
+				<DESCRIPTION>Create store for DB rows</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">DBMF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">row_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfEntityRegProjects</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/reset.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/reset.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/reset.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="f94b6b13-1556-4492-8d69-85b45fece652_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="reset_dedup">Reset dedup</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Deduplication</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="9bab3a88-b5ae-4636-a1c7-4175aa32eb0d_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Reset"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_EntityRegistry_Native.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_EntityRegistry_Native.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_EntityRegistry_Native.xml	(revision 60998)
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="e477ca5a-1c2b-419e-93f2-c843aa533581_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Aggregate Metadata (datasource and organization entities) [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">EntityRegistry, Aggregator</FIELD>
+			<FIELD name="Content">datasource and organization entities</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">entityregistry,entityregistry::repositories,aggregator::pubsrepository</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string">native</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Aggregate Metadata (datasource and organization entities) [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createGMF"/>
+					<ARC to="createDBMF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createGMF" type="CreateMDStore">
+				<DESCRIPTION>Create store for native records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">GMF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">orig_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createDBMF" type="CreateMDStore">
+				<DESCRIPTION>Create store for DB rows</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">DBMF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">row_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfEntityRegDatasource</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Copy_files_from_PubsRepository_ingestion.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Copy_files_from_PubsRepository_ingestion.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Copy_files_from_PubsRepository_ingestion.xml	(revision 60998)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="43bb9cab-9fdd-48cb-9fe7-6712b4986ee7_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Copy Metadata as Files (publications) from PubsRepository [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Copy Metadata as Files</FIELD>
+			<FIELD name="Consequence IS">Inference</FIELD>
+			<FIELD name="Datasource class">PubsRepository</FIELD>
+			<FIELD name="Content">files</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string">files</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="RetreiveInterfaceInfo"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="RetreiveInterfaceInfo"/>
+				</ARCS>
+			</NODE>
+			<NODE name="RetreiveInterfaceInfo" type="RetreiveInterfaceInfo">
+				<DESCRIPTION>Retreive Interface Info</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Copy Metadata as Files (publications) from PubsRepository [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createObjectStore"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createObjectStore" type="CreateObjectStore">
+				<DESCRIPTION>Create Object store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="interpretation" managedBy="system" required="true"
+					       type="string">pubrepository record
+					</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true"
+					       type="string">objs_
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true"
+					       type="string">metaWfCopyFiles
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_PubsRepository_Support.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_PubsRepository_Support.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_PubsRepository_Support.xml	(revision 60998)
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="0debc293-f22c-401a-8e9e-872f9cba3e42_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2015-12-11T15:36:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Aggregate Metadata (publications) from PubsRepository [Support]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Support</FIELD>
+			<FIELD name="Datasource class">PubsRepository</FIELD>
+			<FIELD name="Content">publications</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">pubsrepository</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true"
+					       type="string">Aggregate Metadata (publications) from PubsRepository [Support]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDc"/>
+					<ARC to="createOaf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDc" type="CreateMDStore">
+				<DESCRIPTION>Create oai_dc store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_dc</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">nativesupport</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createOaf" type="CreateMDStore">
+				<DESCRIPTION>Create OAF store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">OAF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleanedsupport</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfPubsRepository</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/online.dedup.results.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/online.dedup.results.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/online.dedup.results.xml	(revision 60998)
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="4cf9ec5f-4f0d-4806-a93e-4905c5a1da74_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>Dedup results (Online)</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Deduplication</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="fetchRelClasses" type="FetchRelClasses" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="relClassesProperty" type="string" managedBy="system" required="true">dnet.openaire.model.relclasses.xquery</PARAM>
+					<PARAM name="relClassesName" type="string" managedBy="system" required="true">relClasses</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="dedupPhase"/>
+				</ARCS>
+			</NODE>
+			<NODE name="configure" type="LoadDedupConfiguration" isStart="true">
+				<DESCRIPTION>Load Dedup conf</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="entityType" managedBy="system">result</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="dedupPhase"/>
+				</ARCS>
+			</NODE>
+			<NODE name="dedupPhase" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>Dedup M/R job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupCandidateScanJob</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapred.outputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.outputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'dedup.pace.conf' : 'dedup.pace.conf',
+						'dedup.wf.conf' : 'dedup.wf.conf'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'entityTypeId' : '50',
+						'entityType' : 'result'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="dedupGrouper"/>
+				</ARCS>
+			</NODE>
+			<NODE name="dedupGrouper" type="DedupGrouperJob">
+				<DESCRIPTION>dedup grouper</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupGrouperJob</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapred.outputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.outputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'dedup.pace.conf' : 'dedup.pace.conf',
+						'dedup.wf.conf' : 'dedup.wf.conf'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'entityTypeId' : '50'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="dedupGrouper"/>
+					<ARC name="done" to="findRoots"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="findRoots" type="SubmitHadoopJob">
+				<DESCRIPTION>find roots</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupFindRootsJob</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapred.outputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.outputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'dedup.pace.conf' : 'dedup.pace.conf',
+						'dedup.wf.conf' : 'dedup.wf.conf'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'entityTypeId' : '50',
+						'entityType' : 'result'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="buildRoots"/>
+				</ARCS>
+			</NODE>
+			<NODE name="buildRoots" type="SubmitHadoopJob">
+				<DESCRIPTION>redirect rels</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupBuildRootsJob</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapred.outputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.outputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'dedup.pace.conf' : 'dedup.pace.conf',
+						'dedup.wf.conf' : 'dedup.wf.conf',
+						'relClasses' : 'relClasses'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'entityTypeId' : '50'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/provision.ocean.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/provision.ocean.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/provision.ocean.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="d511a255-6356-4116-a862-5c1cc4ebd63c_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+        <RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+        <RESOURCE_KIND value="MetaWorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2020-02-18T15:01:54+00:00"/>
+    </HEADER>
+    <BODY>
+        <METAWORKFLOW_NAME family="OpenAIRE Provision [OCEAN]">OpenAIRE Provision [OCEAN]</METAWORKFLOW_NAME>
+        <METAWORKFLOW_DESCRIPTION/>
+        <METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+        <ADMIN_EMAIL>alessia.bardi@isti.cnr.it,claudio.atzori@isti.cnr.it</ADMIN_EMAIL>
+        <CONFIGURATION status="EXECUTABLE">
+            <WORKFLOW id="74d90d54-bea4-4a79-82d9-adddcc89e660_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="provision">
+            </WORKFLOW>
+        </CONFIGURATION>
+        <SCHEDULING enabled="false">
+            <CRON>29 5 22 ? * *</CRON>
+            <MININTERVAL>10080</MININTERVAL>
+        </SCHEDULING>
+    </BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/online.dedup.persons.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/online.dedup.persons.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/online.dedup.persons.xml	(revision 60998)
@@ -0,0 +1,102 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="cc6cf74c-5fef-4cdf-9f93-bd02b70709d2_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-08-29T14:48:32+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Dedup persons (Online)</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Deduplication</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE isStart="true" name="fetchRelClasses" type="FetchRelClasses">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="relClassesProperty" required="true" type="string">dnet.openaire.model.relclasses.xquery</PARAM>
+					<PARAM managedBy="system" name="relClassesName" required="true" type="string">relClasses</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="waitConf"/>
+				</ARCS>
+			</NODE>
+			<NODE isStart="true" name="hadoopConfig" type="SetClusterAndTable">
+				<DESCRIPTION>Set table name</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="tableParam" required="true" type="string">tableName</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="waitConf"/>
+				</ARCS>
+			</NODE>
+			<NODE isStart="true" name="setDedupConfigs" type="SetDedupConfiguration">
+				<DESCRIPTION>Set Dedup conf</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="dedupConfigSequence" required="true" type="string">dedup-similarity-person</PARAM>
+					<PARAM managedBy="system" name="dedupConfigSequenceParam" required="true" type="string">dedup.conf.queue</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="waitConf"/>
+				</ARCS>
+			</NODE>
+			<NODE isJoin="true" name="waitConf">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="dedupPhase"/>
+				</ARCS>
+			</NODE>
+			<NODE name="dedupPhase" type="DedupConfigurationAwareJob">
+				<DESCRIPTION>Dedup M/R job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">dedupPersonJob</PARAM>
+					<PARAM managedBy="system" name="dedupConfigSequenceParam" required="true" type="string">dedup.conf.queue</PARAM>
+					<PARAM managedBy="system" name="envParams" required="true" type="string">
+						{
+						'entityTypeId' : 'entityTypeId',
+						'entityType' : 'entityType',
+						'cluster' : 'cluster',
+						'hbase.mapred.inputtable' : 'tableName',
+						'hbase.mapred.outputtable' : 'tableName',
+						'hbase.mapreduce.inputtable' : 'tableName',
+						'hbase.mapreduce.outputtable' : 'tableName'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="buildRoots"/>
+				</ARCS>
+			</NODE>
+			<NODE name="buildRoots" type="SubmitHadoopJob">
+				<DESCRIPTION>redirect rels</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">dedupBuildRootsJob</PARAM>
+					<PARAM managedBy="system" name="envParams" required="true" type="string">
+						{
+						'dedup.conf' : 'dedup.conf',
+						'relClasses' : 'relClasses',
+						'entityTypeId' : 'entityTypeId',
+						'entityType' : 'entityType',
+						'cluster' : 'cluster',
+						'hbase.mapred.inputtable' : 'tableName',
+						'hbase.mapreduce.inputtable' : 'tableName',
+						'hbase.mapred.outputtable' : 'tableName',
+						'hbase.mapreduce.outputtable' : 'tableName'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS>
+			<LAST_EXECUTION_ID>wf_20151020_211958_695</LAST_EXECUTION_ID>
+			<LAST_EXECUTION_DATE>2015-10-20T22:32:39+00:00</LAST_EXECUTION_DATE>
+			<LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
+			<LAST_EXECUTION_ERROR/>
+		</STATUS>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/test-post.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/test-post.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/test-post.xml	(revision 60998)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="88a4d668-2de2-453b-b656-e4e1e63cd619_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2016-03-24T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Test POST VRE</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Testing</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VREPost" type="VREPost" isStart="true">
+				<DESCRIPTION>Post news on the VRE</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="scheme" type="string" managedBy="user" required="true">http</PARAM>
+					<PARAM name="host" type="string" managedBy="user" required="true">XXX</PARAM>
+					<PARAM name="postPath" type="string" managedBy="user" required="true">XXX</PARAM>
+					<PARAM name="appToken" type="string" managedBy="user" required="true">XXX</PARAM>
+					<PARAM name="previewTitle" type="string" managedBy="user" required="false">Preview title</PARAM>
+					<PARAM name="previewDescription" type="string" managedBy="user" required="false">Preview description</PARAM>
+					<PARAM name="text" type="string" managedBy="user" required="true">Post text</PARAM>
+					<PARAM name="httpImageUrl" type="string" managedBy="user" required="false">http image URL</PARAM>
+					<PARAM name="enableNotification" type="boolean" managedBy="user" required="true">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/provision.retry.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/provision.retry.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/provision.retry.meta.xml	(revision 60998)
@@ -0,0 +1,25 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="e800e206-9292-4b62-9f6d-76ae6eff1b00_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2017-10-23T08:15:05+00:00"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="OpenAIRE Provision Retry">OpenAIRE Provision Retry</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION/>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL>alessia.bardi@isti.cnr.it,claudio.atzori@isti.cnr.it,gkatsari@di.uoa.gr</ADMIN_EMAIL>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="50432758-8f8e-4331-a9c6-404daf307114_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="claimRels2hbase"/>
+			<WORKFLOW id="c956f4fc-3c63-42da-bddf-c8af9f678f69_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="claim2hbase"/>
+			<WORKFLOW id="41b23ee2-9c94-4f87-a5d2-1860f6bd14f6_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="apply blacklist"/>
+			<WORKFLOW id="cd91cb0f-cbdc-4a5d-b23c-9d59f505a6a0_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Promote stats on test portal"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.promote.test.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.promote.test.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.promote.test.xml	(revision 60998)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="cd91cb0f-cbdc-4a5d-b23c-9d59f505a6a0_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2017-10-23T12:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Promote stats on test portal</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="findStatsService" type="FindStatsService" isStart="true">
+				<DESCRIPTION>find stats service</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xquery" type="string" managedBy="user" required="false">/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='StatsManagerServiceResourceType' and .//RESOURCE_KIND/@value='ServiceResources']/HEADER/RESOURCE_IDENTIFIER/@value/string()</PARAM>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="setPortal"/>
+				</ARCS>
+			</NODE>
+			<NODE name="setPortal" type="SetEnvParameter">
+				<DESCRIPTION>set the target portal instance for pre-public preview</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="parameterName" type="string" managedBy="system" required="true">portal</PARAM>
+					<PARAM function="validValues(['test'])" managedBy="user" name="parameterValue" required="false" type="string">test</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="promoteCache"/>
+				</ARCS>
+			</NODE>
+			<NODE name="promoteCache" type="PromoteShadowCacheStats">
+				<DESCRIPTION>Promote the shadow cache.</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+					<PARAM managedBy="system" name="portalParam" required="true" type="string">portal</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.restore.cache.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.restore.cache.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.restore.cache.xml	(revision 60998)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="b2ebf44e-1eb0-4409-8afb-a5aa1cd90c09_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-12T12:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Stats Cache Restore</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="findStatsService" type="FindStatsService" isStart="true">
+				<DESCRIPTION>find stats service</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xquery" type="string" managedBy="user" required="false">/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='StatsManagerServiceResourceType' and .//RESOURCE_KIND/@value='ServiceResources']/HEADER/RESOURCE_IDENTIFIER/@value/string()</PARAM>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="restoreCache"/>
+				</ARCS>
+			</NODE>
+			<NODE name="restoreCache" type="RestoreStatsCache">
+				<DESCRIPTION>Backup the current stats cache. If the new generated shadow cache is not good we can rollback with the restore wf.</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+					<PARAM function="validValues(['test', 'beta', 'production'])" managedBy="user" name="portal" required="true" type="string">test</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/post-vre-newsfeed.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/post-vre-newsfeed.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/post-vre-newsfeed.xml	(revision 60998)
@@ -0,0 +1,34 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="8794eb9a-7b05-4d3e-bec7-538d6ef1f855_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2019-04-03T13:19:38+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Post on VRE News feed</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Communication</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE isStart="true" name="VREPost" type="VREPost">
+				<DESCRIPTION>Post news on the VRE</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="scheme" required="true" type="string">https</PARAM>
+					<PARAM managedBy="user" name="host" required="true" type="string">socialnetworking1.d4science.org</PARAM>
+					<PARAM managedBy="user" name="postPath" required="true" type="string">social-networking-library-ws/rest/2/posts/write-post-app</PARAM>
+					<PARAM managedBy="user" name="appToken" required="true" type="string"></PARAM>
+					<PARAM managedBy="user" name="previewTitle" required="false" type="string"/>
+					<PARAM managedBy="user" name="previewDescription" required="false" type="string"/>
+					<PARAM managedBy="user" name="text" required="true" type="string">Updated content and statistics are available on OpenAIRE #Beta and in your Research Community Dashboard (#RCD)! Check them out and if you have questions click on the Activity Tracker tab and open a new issue. The OpenAIRE team wishes you a good day</PARAM>
+					<PARAM managedBy="user" name="httpImageUrl" required="false" type="string"/>
+					<PARAM managedBy="user" name="enableNotification" required="true" type="boolean">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/dataFlowMonitoring-prepublic-trigger.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/dataFlowMonitoring-prepublic-trigger.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/dataFlowMonitoring-prepublic-trigger.meta.xml	(revision 60998)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="854a9882-949b-47a5-84eb-76349bc955a2_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-16T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="stats">Data Flow Monitoring</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Monitoring</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="94809ffb-0c48-4927-8fbd-1c8930b356ea_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Trigger Prepublic Monitoring Scenario"/>
+			<WORKFLOW id="e36596b5-ebf2-4de5-885e-925f0369c9b3_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Trigger Index Monitoring Scenario"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_CordaH2020Projects_Native.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_CordaH2020Projects_Native.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_CordaH2020Projects_Native.xml	(revision 60998)
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="5c2abfcc-4f0c-4229-aa42-75ac8bac3b68_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2017-02-28T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>EC H2020 Aggregate Projects, Fundings and Contexts [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">EntityRegistry</FIELD>
+			<FIELD name="Content">project, organization, person, funding, context</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">entityregistry::projects</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string">native</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">EC H2020 Aggregate Projects, Fundings and Contexts [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createGMF"/>
+					<ARC to="createDBMF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createGMF" type="CreateMDStore">
+				<DESCRIPTION>Create store for native records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">GMF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">orig_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createDBMF" type="CreateMDStore">
+				<DESCRIPTION>Create store for DB rows</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">DBMF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">row_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfH2020Projects</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/export.native.softwares.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/export.native.softwares.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/export.native.softwares.xml	(revision 60998)
@@ -0,0 +1,74 @@
+<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="66fbd899-a981-4fd7-b27b-e546f8823ac7_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2018-10-31T11:02:13+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Softwares Exporter</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Export Infospace</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="setOutputPath" type="SetEnvParameter">
+                <DESCRIPTION>Set the output file path on HDFS</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">outputPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/tmp/organizations.2018.10.31</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupOutput"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="hadoopConfig" type="SetClusterAndTable">
+                <DESCRIPTION>Set table name</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+                    <PARAM managedBy="system" name="tableParam" required="true" type="string">tableName</PARAM>
+                    <PARAM managedBy="user" name="table" required="true" type="string">db_openaireplus_services_beta</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupOutput"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="cleanupOutput" type="DeleteHdfsPathJob">
+                <DESCRIPTION>CSV files cleanup</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'path' : 'outputPath',
+                        'cluster' : 'cluster'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="export"/>
+                </ARCS>
+            </NODE>
+            <NODE name="export" type="SubmitHadoopJob">
+                <DESCRIPTION>export the information space as sequence file</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="hadoopJob" required="true" type="string">informationSpaceSoftwareExportJob</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'mapred.output.dir' : 'outputPath'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+        </CONFIGURATION>
+        <STATUS>
+            <LAST_EXECUTION_ID>wf_20181031_114608_13</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2018-10-31T11:49:33+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_Generic_HostedbyMap.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_Generic_HostedbyMap.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_Generic_HostedbyMap.xml	(revision 60998)
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="df8cbcec-634f-4474-a8a7-02b84aaca58c_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Fill Generic hostedBy-Map [Context]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Fill hostedBy-Map</FIELD>
+			<FIELD name="Consequence IS">Context</FIELD>
+			<FIELD name="Datasource class">EntityRegistry, Aggregator</FIELD>
+			<FIELD name="Content">ISSNs</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">entityregistry,aggregator::pubsrepository</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string">native</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Fill hostedBy-Map (ISSNs) [Context]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createGMF"/>
+					<ARC to="createDBMF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createGMF" type="CreateMDStore">
+				<DESCRIPTION>Create store for native records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">GMF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">orig_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createDBMF" type="CreateMDStore">
+				<DESCRIPTION>Create store for DB rows</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">DBMF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">row_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfGenericHostedByMap</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.switch.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.switch.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.switch.meta.xml	(revision 60998)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="56d4bfa3-bb96-4f7b-9fb6-2fb93a46336f_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="index_hbase">Index switch</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="e3098652-9b4a-4459-a9e5-620513896964_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Index Switch"/>
+			<WORKFLOW id="639c13f5-9922-4e60-a55a-25534f357b20_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Multiple Index Switch"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/reset.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/reset.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/reset.xml	(revision 60998)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="9bab3a88-b5ae-4636-a1c7-4175aa32eb0d_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>Reset Dedup</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Deduplication</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="auto">
+			<NODE name="reset" type="SubmitHadoopJob" isStart="true">
+				<DESCRIPTION>Run dedup reset Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">resetDedupJob</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapred.outputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.outputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/dataFlowMonitoring-prepublic-trigger.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/dataFlowMonitoring-prepublic-trigger.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/dataFlowMonitoring-prepublic-trigger.xml	(revision 60998)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="94809ffb-0c48-4927-8fbd-1c8930b356ea_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-12T12:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Trigger Prepublic Monitoring Scenario</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="triggerPrepublicScenario" type="TriggerPrepublicMonitoringScenario" isStart="true">
+				<DESCRIPTION>Trigger</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="mdFormat" type="string" managedBy="user" required="true" function="validValues(['TMF', 'DMF'])"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/similarity2hbase.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/similarity2hbase.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/similarity2hbase.xml	(revision 60998)
@@ -0,0 +1,64 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="9332318e-e96f-4144-845d-306d764aeae5_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>Similarity to HBase</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Deduplication</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="start" isStart="true">
+				<DESCRIPTION>start</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="querySimilarities"/>
+				</ARCS>
+			</NODE>
+			<NODE name="querySimilarities" type="QueryDb">
+				<DESCRIPTION>query similarity</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+					<PARAM name="sql" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/dedup/querySimilarities.sql</PARAM>
+					<PARAM name="outputEprParam" type="string" managedBy="system" required="true">similaritiesEpr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="buildSimilarityMesh"/>
+				</ARCS>
+			</NODE>
+			<NODE name="buildSimilarityMesh" type="BuildSimilarityMeshJob">
+				<DESCRIPTION>build mesh</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="inputEprParam" type="string" managedBy="system" required="true">similaritiesEpr</PARAM>
+					<PARAM name="outputEprParam" type="string" managedBy="system" required="true">meshEpr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeSimilarities"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeSimilarities" type="StoreHBase">
+				<DESCRIPTION>store mesh</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="inputEprParam" type="string" managedBy="system" required="true">meshEpr</PARAM>
+					<PARAM name="hbaseTableProperty" type="string" managedBy="system" required="true">hbase.mapred.datatable</PARAM>
+					<PARAM name="cluster" type="string" managedBy="system" required="true">DM</PARAM>
+					<PARAM name="xslt" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/hbase/similarity_2_hbase.xsl</PARAM>
+					<PARAM name="simulation" type="boolean" managedBy="user" required="false">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS>
+			<LAST_EXECUTION_ID>wf_20140509_125739_830</LAST_EXECUTION_ID>
+			<LAST_EXECUTION_DATE>2014-05-09T13:03:16+02:00</LAST_EXECUTION_DATE>
+			<LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
+			<LAST_EXECUTION_ERROR/>
+			<LAST_EXECUTION_OUTPUT name=""></LAST_EXECUTION_OUTPUT>
+		</STATUS>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.update.shadow.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.update.shadow.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.update.shadow.xml	(revision 60998)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="5efd62d9-b7eb-4d62-962c-be15bd1e9ded_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-12T12:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Update Shadow Stats</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="fetchEntityLinks" type="LoadEntityLinksJob" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="updateStats"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareParams" type="PrepareStatsParams" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="updateStats"/>
+				</ARCS>
+			</NODE>
+			<NODE name="updateStats" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>Update stats DB</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">StatsExportJob</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'Stats_Hbase_Source_Table' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'nameNode' : 'nameNode',
+						'jobTracker' : 'jobTracker',
+						'isLookupEndpoint' : 'isLookupEndpoint',
+						'Stats_indexConf' : 'index.entity.links'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/fixRelations.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/fixRelations.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/fixRelations.xml	(revision 60998)
@@ -0,0 +1,115 @@
+<?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">type</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',
+                        'type' : 'type'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="setRelResultParam"/>
+                </ARCS>
+            </NODE>
+
+
+            <NODE name="setRelResultParam" type="SetEnvParameter">
+                <DESCRIPTION>set sub-entity type for organizations</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM name="parameterName" type="string" managedBy="system" required="true">type</PARAM>
+                    <PARAM name="parameterValue" type="string" managedBy="system" required="true">result</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="fixRelResult"/>
+                </ARCS>
+            </NODE>
+
+
+            <NODE name="fixRelResult" 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',
+                        'type' : 'type'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+
+        </CONFIGURATION>
+        <STATUS/>
+    </BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.switch.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.switch.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.switch.xml	(revision 60998)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="e3098652-9b4a-4459-a9e5-620513896964_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Index switch</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="findIndex" type="FindIndex" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="mdFormat" type="string" managedBy="user" required="true">DMF</PARAM>
+					<PARAM name="layout" type="string" managedBy="system" required="true">index</PARAM>
+					<PARAM name="interpretation" type="string" managedBy="system" required="true">openaire</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="findSearchService"/>
+					<ARC name="notFound" to="success"/>
+				</ARCS>
+			</NODE>
+			<NODE name="findSearchService" type="FindSearchService">
+				<DESCRIPTION>find search service</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xquery" type="string" managedBy="user" required="false">/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='SearchServiceResourceType' and .//RESOURCE_KIND/@value='ServiceResources']/HEADER/RESOURCE_IDENTIFIER/@value/string()</PARAM>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForSearchService</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="switch"/>
+					<ARC name="notFound" to="success"/>
+				</ARCS>
+			</NODE>
+			<NODE name="switch" type="SwitchIndex">
+				<DESCRIPTION>switch index</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForSearchService</PARAM>
+					<PARAM name="inputIndexIdParam" type="string" managedBy="system" required="true">index_id</PARAM>
+					<PARAM name="outputIndexIdParam" type="string" managedBy="system" required="true">IndexId</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.switch.multiple.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.switch.multiple.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.switch.multiple.xml	(revision 60998)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="639c13f5-9922-4e60-a55a-25534f357b20_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2016-06-20T12:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Multiple Index switch</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="findIndex" type="FindIndex" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="mdFormat" type="string" managedBy="user" required="true">DMF</PARAM>
+					<PARAM name="layout" type="string" managedBy="system" required="true">index</PARAM>
+					<PARAM name="interpretation" type="string" managedBy="system" required="true">openaire</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="findSearchServices"/>
+					<ARC name="notFound" to="success"/>
+				</ARCS>
+			</NODE>
+			<NODE name="findSearchServices" type="FindSearchServices">
+				<DESCRIPTION>find search services</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xquery" type="string" managedBy="user" required="false">/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='SearchServiceResourceType' and .//RESOURCE_KIND/@value='ServiceResources']/HEADER/RESOURCE_IDENTIFIER/@value/string()</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="switches"/>
+					<ARC name="notFound" to="success"/>
+				</ARCS>
+			</NODE>
+			<NODE name="switches" type="SwitchIndexes">
+				<DESCRIPTION>switch index</DESCRIPTION>
+				<PARAMETERS></PARAMETERS>
+				<ARCS>
+					<ARC name="switch" to="switch"/>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="switch" type="SwitchSearchService">
+				<DESCRIPTION>switch index</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="inputIndexIdParam" type="string" managedBy="system" required="true">index_id</PARAM>
+					<PARAM name="outputIndexIdParam" type="string" managedBy="system" required="true">IndexId</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="switches"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/oai.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/oai.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/oai.xml	(revision 60998)
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="96c45851-28ed-4cd3-8942-bbb350e4dfec_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>OAI Store feed</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="setHdfs" type="SetHdfsFile" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="hdfsPath" type="string" managedBy="user" required="true">/tmp/indexrecords_db_openaireplus_node6_t_DMF.seq</PARAM>
+					<PARAM name="hdfsPathParam" type="string" managedBy="system" required="true">inputRecordsPath</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="prepareOAI"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareOAI" type="PrepareOaiJob" isJoin="true">
+				<DESCRIPTION>Prepare oai feeding</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="oaiDbName" type="string" managedBy="user" required="true">oaistore</PARAM>
+					<PARAM name="oaiFormat" type="string" managedBy="user" required="true">oaf</PARAM>
+					<PARAM name="oaiLayout" type="string" managedBy="user" required="true">index</PARAM>
+					<PARAM name="oaiInterpretation" type="string" managedBy="user" required="true">openaire</PARAM>
+					<PARAM name="oaiSource" type="string" managedBy="user" required="false"></PARAM>
+					<PARAM name="skipDuplicates" type="boolean" managedBy="user" required="true">true</PARAM>
+					<PARAM name="duplicateXPath" type="string" managedBy="user" required="true">//*[local-name()='entity']//*[local-name()='datainfo']/*[local-name()='deletedbyinference'][./text() = 'true']</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="OAIDropStore"/>
+				</ARCS>
+			</NODE>
+			<NODE name="OAIDropStore" type="OAIDropStore">
+				<DESCRIPTION>Drop the store: upserts are too expensive!</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="OAICreateStore"/>
+				</ARCS>
+			</NODE>
+			<NODE name="OAICreateStore" type="OAICreateStore">
+				<DESCRIPTION>Create the OAI store</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="feedOAI"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="feedOAI" type="SubmitHadoopJob">
+				<DESCRIPTION>M/O oai feeding</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">oaiFeedJob</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'mapred.input.dir' : 'inputRecordsPath',
+						'services.publisher.oai.collection' : 'oai_collection',
+						'oaiConfiguration' : 'oai_configuration',
+						'oai.feed.date' : 'oai_actionDate',
+						'services.publisher.oai.db' : 'oai_dbName',
+						'services.publisher.oai.skipDuplicates':'oai_skipDuplicates',
+						'services.publisher.oai.duplicateXPath':'oai_duplicateXPath'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'services.publisher.oai.host' : 'services.publisher.oai.host',
+						'services.publisher.oai.port' : 'services.publisher.oai.port'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hdfs.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hdfs.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hdfs.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="7c582595-4f0e-4523-99fd-fb8729815f46_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="index_hbase">Index (from HDFS)</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="0ef16778-4667-44b9-b453-3386f445beb1_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="IndexHDFS"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.restore.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.restore.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.restore.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="6b80b802-1b03-4540-9550-18dbcdd1f16a_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-12T12:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="stats">Stats Cache Restore</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="b2ebf44e-1eb0-4409-8afb-a5aa1cd90c09_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Restore Stats Cache"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hdfs.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hdfs.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hdfs.xml	(revision 60998)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="0ef16778-4667-44b9-b453-3386f445beb1_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Index from HDFS</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="setHdfsFile" type="SetHdfsFile" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="hdfsPath" type="string" managedBy="user" required="true">/tmp/indexrecords_db_openaireplus_node6_t_DMF.seq</PARAM>
+					<PARAM name="hdfsPathParam" type="string" managedBy="system" required="true">inputRecordsPath</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="prepare"/>
+				</ARCS>
+			</NODE>
+			<NODE name="findIndex" type="FindIndex" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="mdFormat" type="string" managedBy="user" required="true">DMF</PARAM>
+					<PARAM name="layout" type="string" managedBy="system" required="true">index</PARAM>
+					<PARAM name="interpretation" type="string" managedBy="system" required="true">openaire</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="waitIndex"/>
+					<ARC name="notFound" to="createIndex"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createIndex" type="CreateIndex">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="waitIndex"/>
+				</ARCS>
+			</NODE>
+			<NODE name="waitIndex">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="prepare"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepare" type="PrepareIndexJob" isJoin="true">
+				<DESCRIPTION>Prepare indexing</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="rottenRecordsPathParam" type="string" managedBy="system" required="true">rottenRecordsPath</PARAM>
+					<PARAM name="layoutToRecordStylesheet" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/index/openaireLayoutToRecordStylesheet.xsl</PARAM>
+					<PARAM name="oafSchemaLocationProperty" type="string" managedBy="system" required="true">oaf.schema.location</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupRotten"/>
+				</ARCS>
+			</NODE>
+			<NODE name="cleanupRotten" type="DeleteHdfsPathJob">
+				<DESCRIPTION>hdfs cleanup (rotten)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'rottenRecordsPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateIndex"/>
+				</ARCS>
+			</NODE>
+			<NODE name="updateIndex" type="SubmitHadoopJob">
+				<DESCRIPTION>M/O index records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">indexFeedJob</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'mapred.input.dir' : 'inputRecordsPath',
+						'mapred.output.dir' : 'rottenRecordsPath',
+						'index.xslt' : 'index.xslt',
+						'index.solr.url' : 'index.solr.url',
+						'index.solr.collection' : 'index.solr.collection',
+						'index.buffer.flush.threshold' : 'index.buffer.flush.threshold',
+						'index.shutdown.wait.time' : 'index.shutdown.wait.time',
+						'index.solr.sim.mode' : 'index.solr.sim.mode',
+						'index.feed.timestamp' : 'index.feed.timestamp'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="finalize"/>
+				</ARCS>
+			</NODE>
+			<NODE name="finalize" type="FinalizeIndexFeeding">
+				<DESCRIPTION>commit changes</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hbase.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hbase.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hbase.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="e795c92a-c0ef-40bc-9af8-91afd515d6a7_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="index_hbase">Index (from HBASE)</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="35044412-9bee-479b-a8d5-e15ba2fcad3a_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Update Index"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/lod.update.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/lod.update.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/lod.update.xml	(revision 60998)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="42c42eeb-8cf4-4410-bdf5-a20db879d23b_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-12T12:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Update LOD</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="fetchEntityLinks" type="LoadEntityLinksJob" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="updateLod"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareOozieParams" type="PrepareStatsParams" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="updateLod"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareLodParams" type="PrepareLodParams" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="updateLod"/>
+				</ARCS>
+			</NODE>
+			<NODE name="updateLod" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>Update stats DB</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">lodExportJob</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'lod_hbase_table' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'nameNode' : 'nameNode',
+						'jobTracker' : 'jobTracker',
+						'isLookupEndpoint' : 'isLookupEndpoint',
+						'lod_indexConf' : 'index.entity.links',
+						'lod_jsonRels' : 'lod_jsonRels',
+						'lod_lastExecutionDate' : 'lod_lastExecutionDate'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/content.publishing.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/content.publishing.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/content.publishing.xml	(revision 60998)
@@ -0,0 +1,182 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="546f8ba1-2ca2-4e29-86ea-c9489ab9b857_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2017-07-23T16:39:03+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Publish Information Space</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Content Publishing</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE isStart="true" name="START_SWITCH">
+				<DESCRIPTION>Start content Publishing</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="SELECT_PROMOTE_STATS"/>
+					<ARC to="SELECT_SWITCH_INDEX"/>
+					<ARC to="SELECT_SWITCH_OAI"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_PROMOTE_STATS" type="Selection">
+				<DESCRIPTION>Do we promote the shadow stats to public today?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="findStatsService"/>
+					<ARC name="NO" to="waitForStats"/>
+				</ARCS>
+			</NODE>
+			<NODE name="findStatsService" type="FindStatsService">
+				<DESCRIPTION>find stats service</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="xquery" required="false" type="string">/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='StatsManagerServiceResourceType' and .//RESOURCE_KIND/@value='ServiceResources']/HEADER/RESOURCE_IDENTIFIER/@value/string()</PARAM>
+					<PARAM managedBy="system" name="xqueryForServiceIdParam" required="true" type="string">xqueryForStatsManagerService</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="PROMOTE_STATS"/>
+					<ARC name="notFound" to="waitForStats"/>
+				</ARCS>
+			</NODE>
+			<NODE name="PROMOTE_STATS" type="PromoteShadowStats">
+				<DESCRIPTION>Copy shadow Joomla cache and stats db to public schema</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="xqueryForServiceIdParam" required="true" type="string">xqueryForStatsManagerService</PARAM>
+					<PARAM function="validValues(['test', 'beta', 'production'])" managedBy="user" name="portal" required="true" type="string">beta</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="waitForStats"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_SWITCH_INDEX" type="Selection">
+				<DESCRIPTION>Do we switch the index read by the public Search Service today?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="findIndex"/>
+					<ARC name="NO" to="waitForSearch"/>
+				</ARCS>
+			</NODE>
+			<NODE name="findIndex" type="FindIndex">
+				<DESCRIPTION>Select index mdformat</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="mdFormat" required="true" type="string">TMF</PARAM>
+					<PARAM managedBy="system" name="layout" required="true" type="string">index</PARAM>
+					<PARAM managedBy="system" name="interpretation" required="true" type="string">openaire</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="findSearchServices"/>
+					<ARC name="notFound" to="waitForSearch"/>
+				</ARCS>
+			</NODE>
+			<NODE name="findSearchServices" type="FindSearchServices">
+				<DESCRIPTION>find search services</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="xquery" required="false" type="string">/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='SearchServiceResourceType'
+						and .//RESOURCE_KIND/@value='ServiceResources' and
+						.//PROPERTY[@key="infrastructure"]/@value="public"]/HEADER/RESOURCE_IDENTIFIER/@value/string()
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="switches"/>
+					<ARC name="notFound" to="waitForSearch"/>
+				</ARCS>
+			</NODE>
+			<NODE name="switches" type="SwitchIndexes">
+				<DESCRIPTION>switch index</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC name="switch" to="switch"/>
+					<ARC to="waitForSearch"/>
+				</ARCS>
+			</NODE>
+			<NODE name="switch" type="SwitchSearchService">
+				<DESCRIPTION>switch index</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="inputIndexIdParam" required="true" type="string">index_id</PARAM>
+					<PARAM managedBy="system" name="outputIndexIdParam" required="true" type="string">IndexId</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="switches"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_SWITCH_OAI" type="Selection">
+				<DESCRIPTION>Do we switch the store used by the OAI Publisher today?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">NO</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="setOAIDB"/>
+					<ARC name="NO" to="waitForOAI"/>
+				</ARCS>
+			</NODE>
+			<NODE name="setOAIDB" type="SetCurrentOAIDB">
+				<DESCRIPTION>Update the currentdb in the OAI configuration profile</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="oaiDbName" required="true" type="string">oaistore2</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="waitForOAI"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="waitForSearch">
+				<DESCRIPTION>Wait for the search branch to fail or to success</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="waitAll"/>
+				</ARCS>
+			</NODE>
+			<NODE name="waitForStats">
+				<DESCRIPTION>Wait for the stats branch to fail or success</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="waitAll"/>
+				</ARCS>
+			</NODE>
+			<NODE name="waitForOAI">
+				<DESCRIPTION>Wait for the OAI branch to fail or to success</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="waitAll"/>
+				</ARCS>
+			</NODE>
+			<!-- WAIT FOR ALL THE WF BRANCHES TO COMPLETE -->
+			<NODE isJoin="true" name="waitAll">
+				<DESCRIPTION>wait for all the branches to complete</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="SELECT_FEED_CLAIMS"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_FEED_CLAIMS" type="Selection">
+				<DESCRIPTION>Do we feed the the most recent claims today?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="feedClaims"/>
+					<ARC name="NO" to="success"/>
+				</ARCS>
+			</NODE>
+			<NODE name="feedClaims" type="FeedMissingClaims">
+				<DESCRIPTION>Feed the most recent claims</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS>
+			<LAST_EXECUTION_ID>wf_20170723_163915_443</LAST_EXECUTION_ID>
+			<LAST_EXECUTION_DATE>2017-07-23T16:39:26+00:00</LAST_EXECUTION_DATE>
+			<LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
+			<LAST_EXECUTION_ERROR/>
+			<LAST_EXECUTION_OUTPUT name="mainlog:selection">YES</LAST_EXECUTION_OUTPUT>
+		</STATUS>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationResult2community.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationResult2community.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationResult2community.xml	(revision 60998)
@@ -0,0 +1,86 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="36ab117d-bafd-46a0-9c7e-38736d1caaaf_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2019-06-28T12:09:03+02:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Propagation result 2 community</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="setOutputFile" type="SetEnvParameter">
+                <DESCRIPTION>Set the CSV file path on HDFS</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">csvPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/tmp/db_openaireplus_services_beta.communityPropagation</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupCsv"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="hadoopConfig" type="SetClusterAndTable">
+                <DESCRIPTION>Set table name</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+                    <PARAM managedBy="system" name="tableParam" required="true" type="string">tableName</PARAM>
+                    <PARAM managedBy="user" name="table" required="true" type="string">dev_openaire</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupCsv"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="cleanupCsv" type="DeleteHdfsPathJob">
+                <DESCRIPTION>CSV files cleanup</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'path' : 'csvPath',
+                        'cluster' : 'cluster'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="fetchCommunityIdListr"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="fetchCommunityIdListr" type="LoadCommunityIdsList">
+                <DESCRIPTION>Fetch the list of the community ids</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="communityIdParam" required="true">community.ids</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="propagateCommunity"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="propagate" type="SubmitHadoopJob">
+                <DESCRIPTION>Propagatio of result to community through semantic relation</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM function="validValues(['propagationResultToCommunityThroughSemanticRelation','propagationResultToCommunityThroughSemanticRelationSaveToFile'])" managedBy="user" name="hadoopJob" required="true" type="string">propagationResultToCommunityThroughSemanticRelationSaveToFile</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapred.outputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'hbase.mapreduce.outputtable' : 'tableName',
+                        'community.ids' : 'community.ids',
+                        'mapred.output.dir' : 'csvPath'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+        </CONFIGURATION>
+        <STATUS>
+            <LAST_EXECUTION_ID>wf_20180807_172327_510</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2019-06-28T17:24:53+02:00</LAST_EXECUTION_DATE>
+            <LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
+            <LAST_EXECUTION_ERROR/>
+        </STATUS>
+    </BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationOrcidThroughSemanticRelation.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationOrcidThroughSemanticRelation.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationOrcidThroughSemanticRelation.xml	(revision 60998)
@@ -0,0 +1,101 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="077a041d-7f9a-47ba-a53c-e3d6acf68f31_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2019-06-28T12:09:03+02:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Propagation ORCID 2 result through semantic relation</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="setOutputFile" type="SetEnvParameter">
+                <DESCRIPTION>Set the CSV file path on HDFS</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">csvPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/tmp/db_openaireplus_services_beta.ORCIDPropagationResult</PARAM>
+
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupCsv"/>
+                </ARCS>
+            </NODE>
+<!--            <NODE isStart="true" name="setOrganizationCommunityMap" type="SetEnvParameter">-->
+<!--                <PARAMETERS>-->
+<!--                    &lt;!&ndash; temporary here waiting to have the new implementation of the back-end for the community profiles&ndash;&gt;-->
+<!--                    <PARAM managedBy="system" name="parameterName" required="true" type="string">organizationCommunityMap</PARAM>-->
+<!--                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">{"corda__h2020::3fb05a9524c3f790391261347852f638":["mes"]}</PARAM>-->
+<!--                </PARAMETERS>-->
+<!--                <ARCS>-->
+<!--                    <ARC to="cleanupCsv"/>-->
+<!--                </ARCS>-->
+<!--            </NODE>-->
+            <NODE isStart="true" name="hadoopConfig" type="SetClusterAndTable">
+                <DESCRIPTION>Set table name</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+                    <PARAM managedBy="system" name="tableParam" required="true" type="string">tableName</PARAM>
+                    <PARAM managedBy="user" name="table" required="true" type="string">dev_openaire</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupCsv"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="cleanupCsv" type="DeleteHdfsPathJob">
+                <DESCRIPTION>CSV files cleanup</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'path' : 'csvPath',
+                        'cluster' : 'cluster'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <!--
+                    <ARC to="fetchOrganizationCommunityMap"/>
+                    -->
+                    <ARC to="propagate"/>
+                </ARCS>
+            </NODE>
+            <!--
+            <NODE isStart="true" name="fetchOrganizationCommunityMap" type="LoadOrganizationCommunityMap">
+                <DESCRIPTION>Fetch the list of the community ids</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="organizationMap" required="true">organizationtoresult.community.map</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="propagate"/>
+                </ARCS>
+            </NODE>
+            -->
+            <NODE isJoin="true" name="propagate" type="SubmitHadoopJob">
+                <DESCRIPTION>Propagatio of result to community through the affiliation to organizations</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM function="validValues(['propagationOrcidToResult','propagationOrcidToResultSaveToFile'])" managedBy="user" name="hadoopJob" required="true" type="string">propagationOrcidToResultSaveToFile</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapred.outputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'hbase.mapreduce.outputtable' : 'tableName',
+                        'mapred.output.dir' : 'csvPath'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+        </CONFIGURATION>
+        <STATUS>
+            <LAST_EXECUTION_ID>wf_20180807_172327_510</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2019-06-28T17:24:53+02:00</LAST_EXECUTION_DATE>
+            <LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
+            <LAST_EXECUTION_ERROR/>
+        </STATUS>
+    </BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.backup.cache.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.backup.cache.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.backup.cache.xml	(revision 60998)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="a6d0804a-7a05-46e6-81e4-275181b78512_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-16T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Stats Cache Backup</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="findStatsService" type="FindStatsService" isStart="true">
+				<DESCRIPTION>find stats service</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xquery" type="string" managedBy="user" required="false">/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='StatsManagerServiceResourceType' and .//RESOURCE_KIND/@value='ServiceResources']/HEADER/RESOURCE_IDENTIFIER/@value/string()</PARAM>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="backupCache"/>
+				</ARCS>
+			</NODE>
+			<NODE name="backupCache" type="BackupStatsCache">
+				<DESCRIPTION>Backup the current stats cache. If the new generated shadow cache is not good we can rollback with the restore wf.</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+					<PARAM function="validValues(['test', 'beta', 'production'])" managedBy="user" name="portal" required="true" type="string">test</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/hbase.infospace.counts.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/hbase.infospace.counts.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/hbase.infospace.counts.xml	(revision 60998)
@@ -0,0 +1,69 @@
+<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="29b448c9-863b-45a2-b4a3-b694d2254f8a_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2018-11-01T10:13:43+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Data Provision Counts</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>35</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual"><!-- PREPARE NODES -->
+            <NODE isStart="true" name="fetchRelClasses" type="FetchRelClasses">
+                <DESCRIPTION/>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="relClassesProperty" required="true" type="string">dnet.openaire.model.relclasses.xquery</PARAM>
+                    <PARAM managedBy="system" name="relClassesName" required="true" type="string">relClasses</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="countInfospace"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="fetchContexts" type="LoadContextsJob">
+                <DESCRIPTION/>
+                <PARAMETERS/>
+                <ARCS>
+                    <ARC to="countInfospace"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="fetchEntityLinks" type="LoadEntityLinksJob">
+                <DESCRIPTION/>
+                <PARAMETERS/>
+                <ARCS>
+                    <ARC to="countInfospace"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="countInfospace" type="SubmitHadoopJob">
+                <DESCRIPTION>M/R count entities and relationships</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+                    <PARAM managedBy="system" name="hadoopJob" required="true" type="string">countInfospaceJob</PARAM>
+                    <PARAM managedBy="system" name="sysParams" required="true" type="string">
+                        {
+                        'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+                        'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'index.entity.links' : 'index.entity.links',
+                        'contextmap' : 'contextmap',
+                        'relClasses' : 'relClasses'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+        </CONFIGURATION>
+        <STATUS>
+            <LAST_EXECUTION_ID>wf_20181107_103348_265</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2018-11-08T08:48:56+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.generate.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.generate.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.generate.meta.xml	(revision 60998)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="518d8edd-4879-43a0-a2fb-87b1a5c9a40c_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-16T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="stats">Generate Stats</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="5efd62d9-b7eb-4d62-962c-be15bd1e9ded_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Update Shadow Stats">
+				<WORKFLOW id="d014a931-9fc1-441d-b0f2-ab54d1a05cb3_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Shadow StatsDB Validation"/>
+			</WORKFLOW>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/xmlRecords.counts.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/xmlRecords.counts.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/xmlRecords.counts.xml	(revision 60998)
@@ -0,0 +1,48 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="b030513b-69af-4a9f-90c7-90b96bd5eb5c_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2018-11-06T11:27:07+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>XML records counts</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual"><!-- PREPARE NODES -->
+            <NODE isStart="true" name="setInputFilesPath" type="SetEnvParameter">
+                <DESCRIPTION>set the input path on hdfs to read xml records</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">inputHdfsPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="false" type="string">/tmp/indexrecords_db_openaireplus_services_TMF.seq</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="countXML"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="countXML" type="SubmitHadoopJob">
+                <DESCRIPTION>Run M/R count Job</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+                    <PARAM managedBy="system" name="hadoopJob" required="true" type="string">xmlRecordCounterJob</PARAM>
+                    <PARAM managedBy="user" name="simulation" required="true" type="boolean">false</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'mapred.input.dir' : 'inputHdfsPath'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+        </CONFIGURATION>
+        <STATUS>
+            <LAST_EXECUTION_ID>wf_20181022_103455_527</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2018-10-22T12:44:29+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationResultToCommunityThroughOrganization.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationResultToCommunityThroughOrganization.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationResultToCommunityThroughOrganization.xml	(revision 60998)
@@ -0,0 +1,102 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="3af9aa92-0673-410f-96f5-e1c92c0d578c_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2019-06-28T12:09:03+02:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Propagation result 2 community through organization</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="setOutputFile" type="SetEnvParameter">
+                <DESCRIPTION>Set the CSV file path on HDFS</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">csvPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/tmp/db_openaireplus_services_beta.communityPropagationOrganization</PARAM>
+
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupCsv"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setOrganizationCommunityMap" type="SetEnvParameter">
+                <PARAMETERS>
+                    <!-- temporary here waiting to have the new implementation of the back-end for the community profiles-->
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">organizationCommunityMap</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">{"corda__h2020::3fb05a9524c3f790391261347852f638":["mes"]}</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupCsv"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="hadoopConfig" type="SetClusterAndTable">
+                <DESCRIPTION>Set table name</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+                    <PARAM managedBy="system" name="tableParam" required="true" type="string">tableName</PARAM>
+                    <PARAM managedBy="user" name="table" required="true" type="string">dev_openaire</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupCsv"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="cleanupCsv" type="DeleteHdfsPathJob">
+                <DESCRIPTION>CSV files cleanup</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'path' : 'csvPath',
+                        'cluster' : 'cluster'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <!--
+                    <ARC to="fetchOrganizationCommunityMap"/>
+                    -->
+                    <ARC to="propagate"/>
+                </ARCS>
+            </NODE>
+            <!--
+            <NODE isStart="true" name="fetchOrganizationCommunityMap" type="LoadOrganizationCommunityMap">
+                <DESCRIPTION>Fetch the list of the community ids</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="organizationMap" required="true">organizationtoresult.community.map</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="propagate"/>
+                </ARCS>
+            </NODE>
+            -->
+            <NODE isJoin="true" name="propagate" type="SubmitHadoopJob">
+                <DESCRIPTION>Propagation of ORCIT to result through semantic relation</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM function="validValues(['propagationResultToCommunityThroughOrganization','propagationResultToCommunityThroughOrganizationSaveToFile'])" managedBy="user" name="hadoopJob" required="true" type="string">propagationResultToCommunityThroughOrganizationSaveToFile</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapred.outputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'hbase.mapreduce.outputtable' : 'tableName',
+                        'organization.community.map' : 'organizationCommunityMap',
+                        'mapred.output.dir' : 'csvPath'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+        </CONFIGURATION>
+        <STATUS>
+            <LAST_EXECUTION_ID>wf_20180807_172327_510</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2019-06-28T17:24:53+02:00</LAST_EXECUTION_DATE>
+            <LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
+            <LAST_EXECUTION_ERROR/>
+        </STATUS>
+    </BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/claims2hbase.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/claims2hbase.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/claims2hbase.xml	(revision 60998)
@@ -0,0 +1,183 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="001ca627-1ae1-4053-9243-bca6ee149b22_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2019-11-11T17:57:19+01:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Claim to HBase</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Load</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE isStart="true" name="setTable" type="SetHBaseTable">
+				<DESCRIPTION>set hbase table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="table" required="true" type="string">dev_openaire</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="mapreduceOAFClaim"/>
+					<ARC to="mapreduceODFClaim"/>
+				</ARCS>
+			</NODE>
+			<NODE isStart="true" name="prepareImportOAFClaims" type="PrepareMDStoreImport">
+				<DESCRIPTION>Configure export to HDFS for OAF claims</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="hdfsPathParam" required="true" type="string">hdfsPath</PARAM>
+					<PARAM managedBy="user" name="hdfsPath" required="true" type="string">/tmp/mdstores_oaf-store-claim_dev.seq</PARAM>
+					<PARAM managedBy="system" name="mappingParam" required="true" type="string">xslt</PARAM>
+					<PARAM function="obtainValues('oaf2hbaseMappings', {})" managedBy="user" name="mapping" required="true" type="string">43108eba-4b67-4d7a-8928-55ca09f1c8ff_VHJhbnNmb3JtYXRpb25SdWxlRFNSZXNvdXJjZXMvVHJhbnNmb3JtYXRpb25SdWxlRFNSZXNvdXJjZVR5cGU=</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="exportOAFClaimRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="exportOAFClaimRecords" type="MDStoreBatchExporter">
+				<DESCRIPTION>Fetch OAF claim records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="format" required="true" type="string">OAF</PARAM>
+					<PARAM managedBy="user" name="layout" required="true" type="string">store</PARAM>
+					<PARAM managedBy="user" name="interpretation" required="true" type="string">claim</PARAM>
+					<PARAM managedBy="system" name="outputEprParam" required="true" type="string">records_epr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeOAFClaimRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeOAFClaimRecords" type="StoreHdfsRecords">
+				<DESCRIPTION>Store OAF claims to HDFS</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="inputEprParam" required="true" type="string">records_epr</PARAM>
+					<PARAM managedBy="system" name="hdfsPathParam" required="true" type="string">hdfsPath</PARAM>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="doneExportOAFClaim"/>
+				</ARCS>
+			</NODE>
+			<NODE name="doneExportOAFClaim">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="mapreduceOAFClaim"/>
+				</ARCS>
+			</NODE>
+			<NODE isJoin="true" name="mapreduceOAFClaim" type="SubmitHadoopJob">
+				<DESCRIPTION>Run M/R import Job for OAF claims</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">mdStoreHdfsImportJob</PARAM>
+					<PARAM managedBy="user" name="simulation" required="true" type="boolean">false</PARAM>
+					<PARAM managedBy="system" name="envParams" required="true" type="string">
+						{
+						'mapred.input.dir' : 'hdfsPath',
+						'hbase.import.xslt' : 'xslt',
+						'hbase.mapred.outputtable' : 'hbaseTable'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="goWithRelsAndUpdates"/>
+				</ARCS>
+			</NODE>
+			<NODE isStart="true" name="prepareImportODFClaims" type="PrepareMDStoreImport">
+				<DESCRIPTION>Configure export to HDFS for ODF claims</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="hdfsPathParam" required="true" type="string">hdfsPath</PARAM>
+					<PARAM managedBy="user" name="hdfsPath" required="true" type="string">/tmp/mdstores_odf-store-cleaned_dev.seq</PARAM>
+					<PARAM managedBy="system" name="mappingParam" required="true" type="string">xslt</PARAM>
+					<PARAM function="obtainValues('odf2hbaseMappings', {})" managedBy="user" name="mapping" required="true" type="string">a8258f53-3cc0-4353-879f-699883fd1d0c_VHJhbnNmb3JtYXRpb25SdWxlRFNSZXNvdXJjZXMvVHJhbnNmb3JtYXRpb25SdWxlRFNSZXNvdXJjZVR5cGU=</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="exportODFClaimRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="exportODFClaimRecords" type="MDStoreBatchExporter">
+				<DESCRIPTION>Fetch ODF claim records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="format" required="true" type="string">ODF</PARAM>
+					<PARAM managedBy="user" name="layout" required="true" type="string">store</PARAM>
+					<PARAM managedBy="user" name="interpretation" required="true" type="string">claim</PARAM>
+					<PARAM managedBy="system" name="outputEprParam" required="true" type="string">records_epr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeODFClaimRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeODFClaimRecords" type="StoreHdfsRecords">
+				<DESCRIPTION>Store records to HDFS</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="inputEprParam" required="true" type="string">records_epr</PARAM>
+					<PARAM managedBy="system" name="hdfsPathParam" required="true" type="string">hdfsPath</PARAM>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="doneExportODFClaim"/>
+				</ARCS>
+			</NODE>
+			<NODE name="doneExportODFClaim">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="mapreduceODFClaim"/>
+				</ARCS>
+			</NODE>
+			<NODE isJoin="true" name="mapreduceODFClaim" type="SubmitHadoopJob">
+				<DESCRIPTION>Run M/R import Job for ODF claims</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">mdStoreHdfsImportJob</PARAM>
+					<PARAM managedBy="user" name="simulation" required="true" type="boolean">false</PARAM>
+					<PARAM managedBy="system" name="envParams" required="true" type="string">
+						{
+						'mapred.input.dir' : 'hdfsPath',
+						'hbase.import.xslt' : 'xslt',
+						'hbase.mapred.outputtable' : 'hbaseTable'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="goWithRelsAndUpdates"/>
+				</ARCS>
+			</NODE>
+			<NODE isJoin="true" name="goWithRelsAndUpdates">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="applyClaimRels"/>
+				</ARCS>
+			</NODE>
+			<NODE name="applyClaimRels" type="ApplyClaimRels">
+				<DESCRIPTION>Apply Claim Rels</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="clusterName" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="user" name="tableName" required="true" type="string">dev_openaire</PARAM>
+					<PARAM managedBy="user" name="sql" required="true" type="string">SELECT source_type, source_id, target_type, target_id, semantics FROM claim WHERE approved=TRUE AND source_type !='context'</PARAM>
+					<PARAM managedBy="user" name="countQuery" required="true" type="string">SELECT count(*) FROM claim WHERE approved=TRUE AND source_type !='context'</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="applyClaimUpdates"/>
+				</ARCS>
+			</NODE>
+			<NODE name="applyClaimUpdates" type="ApplyClaimUpdates">
+				<DESCRIPTION>Apply Claim Updates</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="clusterName" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="user" name="tableName" required="true" type="string">dev_openaire</PARAM>
+					<PARAM managedBy="user" name="sql" required="true" type="string">SELECT source_type, source_id, target_type, target_id, semantics FROM claim WHERE approved=TRUE AND source_type ='context'</PARAM>
+					<PARAM managedBy="user" name="countQuery" required="true" type="string">SELECT count(*) FROM claim WHERE approved=TRUE AND source_type ='context'</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS>
+			<LAST_EXECUTION_ID>wf_20191111_170912_747</LAST_EXECUTION_ID>
+			<LAST_EXECUTION_DATE>2019-11-11T17:36:30+01: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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationProjectResult.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationProjectResult.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationProjectResult.xml	(revision 60998)
@@ -0,0 +1,76 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="6f19d058-326a-417d-b9ee-44eed3c32a35_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2019-02-20T15:46:09+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Propagation of Project Results</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="auto">
+            <NODE isStart="true" name="setOutputFile" type="SetEnvParameter">
+                <DESCRIPTION>Set the CSV file path on HDFS</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">csvPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/tmp/db_openaireplus_services_beta.projectPropagation</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupCsv"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="hadoopConfig" type="SetClusterAndTable">
+                <DESCRIPTION>Set table name</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+                    <PARAM managedBy="system" name="tableParam" required="true" type="string">tableName</PARAM>
+                    <PARAM managedBy="user" name="table" required="true" type="string">db_openaireplus_services_beta</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupCsv"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="cleanupCsv" type="DeleteHdfsPathJob">
+                <DESCRIPTION>CSV files cleanup</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'path' : 'csvPath',
+                        'cluster' : 'cluster'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="propagateProject"/>
+                </ARCS>
+            </NODE>
+            <NODE name="propagateProject" type="SubmitHadoopJob">
+                <DESCRIPTION>propagation of project link between research result linked by semantic relations</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM function="validValues(['propagationProjectToResult','propagationProjectToResultSaveToFile'])" managedBy="user" name="hadoopJob" required="true" type="string">propagationProjectToResult</PARAM><!-- <PARAM managedBy="system" name="hadoopJob" required="true" type="string">projectToResultJob</PARAM>-->
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapred.outputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'hbase.mapreduce.outputtable' : 'tableName',
+                        'mapred.output.dir' : 'csvPath'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+        </CONFIGURATION>
+        <STATUS>
+            <LAST_EXECUTION_ID>wf_20190613_074630_96</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2019-06-13T08:08:06+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/db2hbase.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/db2hbase.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/db2hbase.xml	(revision 60998)
@@ -0,0 +1,201 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="e92d2f81-ea98-4732-a306-07da87f35033_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>DB to HBase</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Load</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE isStart="true" name="start">
+				<DESCRIPTION>start</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="queryDatasources"/>
+				</ARCS>
+			</NODE>
+			<NODE name="queryDatasources" type="QueryDb">
+				<DESCRIPTION>query Datasources</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="dbProperty" required="true" type="string">dnet.openaire.db.name</PARAM>
+					<PARAM managedBy="system" name="sql" required="true" type="string">/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasources.sql
+					</PARAM>
+					<PARAM managedBy="system" name="sqlForSize" required="true" type="string">
+						/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasourcesForSize.sql
+					</PARAM>
+					<PARAM managedBy="system" name="outputEprParam" required="true" type="string">dsEpr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeDatasources"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeDatasources" type="StoreHBase">
+				<DESCRIPTION>Store Datasources to HBase</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="inputEprParam" required="true" type="string">dsEpr</PARAM>
+					<PARAM managedBy="system" name="hbaseTableProperty" required="true" type="string">hbase.mapred.datatable</PARAM>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="user" name="mapping" required="true" type="string" function="obtainValues('dbmf2hbaseMappings', {})"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="queryDatasourceOrganization"/>
+				</ARCS>
+			</NODE>
+			<NODE name="queryDatasourceOrganization" type="QueryDb">
+				<DESCRIPTION>query relation Datasource_Organization</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="dbProperty" required="true" type="string">dnet.openaire.db.name</PARAM>
+					<PARAM managedBy="system" name="sql" required="true" type="string">
+						/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasourceOrganization.sql
+					</PARAM>
+					<PARAM managedBy="system" name="outputEprParam" required="true" type="string">dsOrgEpr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeDatasourceOrganization"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeDatasourceOrganization" type="StoreHBase">
+				<DESCRIPTION>Store relation Datasource_Organization</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="inputEprParam" required="true" type="string">dsOrgEpr</PARAM>
+					<PARAM managedBy="system" name="hbaseTableProperty" required="true" type="string">hbase.mapred.datatable</PARAM>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="user" name="mapping" required="true" type="string" function="obtainValues('dbmf2hbaseMappings', {})"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="queryOrganizations"/>
+				</ARCS>
+			</NODE>
+			<NODE name="queryOrganizations" type="QueryDb">
+				<DESCRIPTION>query Organizations</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="dbProperty" required="true" type="string">dnet.openaire.db.name</PARAM>
+					<PARAM managedBy="system" name="sql" required="true" type="string">/eu/dnetlib/msro/openaireplus/workflows/hbase/queryOrganizations.sql
+					</PARAM>
+					<PARAM managedBy="system" name="outputEprParam" required="true" type="string">orgEpr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeOrganizations"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeOrganizations" type="StoreHBase">
+				<DESCRIPTION>Store Organizations to HBase</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="inputEprParam" required="true" type="string">orgEpr</PARAM>
+					<PARAM managedBy="system" name="hbaseTableProperty" required="true" type="string">hbase.mapred.datatable</PARAM>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="user" name="mapping" required="true" type="string" function="obtainValues('dbmf2hbaseMappings', {})"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="queryOrganizationsFromOpenOrgsDB"/>
+				</ARCS>
+			</NODE>
+			<NODE name="queryOrganizationsFromOpenOrgsDB" type="QueryDb">
+				<DESCRIPTION>query Open Organizations</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="dbProperty" required="true" type="string">dnet.openorgs.db.name</PARAM>
+					<PARAM managedBy="system" name="sql" required="true" type="string">/eu/dnetlib/msro/openaireplus/workflows/hbase/queryOrganizationsFromOpenOrgsDB.sql
+					</PARAM>
+					<PARAM managedBy="system" name="outputEprParam" required="true" type="string">openOrgsEpr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeOrganizationsFromOpenOrgsDB"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeOrganizationsFromOpenOrgsDB" type="StoreHBase">
+				<DESCRIPTION>Store Open Organizations to HBase</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="inputEprParam" required="true" type="string">openOrgsEpr</PARAM>
+					<PARAM managedBy="system" name="hbaseTableProperty" required="true" type="string">hbase.mapred.datatable</PARAM>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="user" name="mapping" required="true" type="string" function="obtainValues('dbmf2hbaseMappings', {})"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="querySimilaritiesFromOpenOrgsDB"/>
+				</ARCS>
+			</NODE>
+			<NODE name="querySimilaritiesFromOpenOrgsDB" type="QueryDb">
+                <DESCRIPTION>query similarities (openorgs)</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="dbProperty" required="true" type="string">dnet.openorgs.db.name</PARAM>
+                    <PARAM managedBy="system" name="sql" required="true" type="string">/eu/dnetlib/msro/openaireplus/workflows/hbase/querySimilarityFromOpenOrgsDB.sql</PARAM>
+                    <PARAM managedBy="system" name="outputEprParam" required="true" type="string">openSimRelsEpr</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="storeSimilaritiesFromOpenOrgsDB"/>
+                </ARCS>
+            </NODE>
+            <NODE name="storeSimilaritiesFromOpenOrgsDB" type="StoreHBase">
+                <DESCRIPTION>Store similarities to HBase (openorgs)</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="inputEprParam" required="true" type="string">openSimRelsEpr</PARAM>
+                    <PARAM managedBy="system" name="hbaseTableProperty" required="true" type="string">hbase.mapred.datatable</PARAM>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+                    <PARAM function="obtainValues('dbmf2hbaseMappings', {})" managedBy="user" name="mapping" required="true" type="string"></PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="queryProjects"/>
+                </ARCS>
+            </NODE>
+			<NODE name="queryProjects" type="QueryDb">
+				<DESCRIPTION>query Projects</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="dbProperty" required="true" type="string">dnet.openaire.db.name</PARAM>
+					<PARAM managedBy="system" name="sql" required="true" type="string">/eu/dnetlib/msro/openaireplus/workflows/hbase/queryProjects.sql</PARAM>
+					<PARAM managedBy="system" name="outputEprParam" required="true" type="string">projEpr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeProjects"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeProjects" type="StoreHBase">
+				<DESCRIPTION>Store Projects to HBase</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="inputEprParam" required="true" type="string">projEpr</PARAM>
+					<PARAM managedBy="system" name="hbaseTableProperty" required="true" type="string">hbase.mapred.datatable</PARAM>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="user" name="mapping" required="true" type="string" function="obtainValues('dbmf2hbaseMappings', {})"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="queryProjectOrganization"/>
+				</ARCS>
+			</NODE>
+			<NODE name="queryProjectOrganization" type="QueryDb">
+				<DESCRIPTION>query relation Project_Organization</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="dbProperty" required="true" type="string">dnet.openaire.db.name</PARAM>
+					<PARAM managedBy="system" name="sql" required="true" type="string">
+						/eu/dnetlib/msro/openaireplus/workflows/hbase/queryProjectOrganization.sql
+					</PARAM>
+					<PARAM managedBy="system" name="outputEprParam" required="true" type="string">projOrgEpr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeProjectOrganization"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeProjectOrganization" type="StoreHBase">
+				<DESCRIPTION>Store relation Project_Organizations</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="inputEprParam" required="true" type="string">projOrgEpr</PARAM>
+					<PARAM managedBy="system" name="hbaseTableProperty" required="true" type="string">hbase.mapred.datatable</PARAM>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="user" name="mapping" required="true" type="string" function="obtainValues('dbmf2hbaseMappings', {})"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS>
+			<LAST_EXECUTION_ID>wf_20140509_125739_830</LAST_EXECUTION_ID>
+			<LAST_EXECUTION_DATE>2014-05-09T13:03:16+02:00</LAST_EXECUTION_DATE>
+			<LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
+			<LAST_EXECUTION_ERROR/>
+			<LAST_EXECUTION_OUTPUT name=""></LAST_EXECUTION_OUTPUT>
+		</STATUS>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importOrcid.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importOrcid.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importOrcid.xml	(revision 60998)
@@ -0,0 +1,78 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="7c8765af-1253-4bd7-8806-315b73bf7319_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2019-05-29T10:54:33+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Import Orcid</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/orcid</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' : 'orcidworks-no-doi',
+						'jobProperty' : 'export_action_set_orcidworks_no_doi',
+						'enablingProperty' : 'active_orcidworks_no_doi',
+						'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">importOrcidJob</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/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importAffiliationsDOIBoost.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importAffiliationsDOIBoost.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importAffiliationsDOIBoost.xml	(revision 60998)
@@ -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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importGridAC.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importGridAC.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importGridAC.xml	(revision 60998)
@@ -0,0 +1,83 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="ff25219c-e485-4440-8bc0-a8bbe42512ac_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 GridAC</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/gridac</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' : 'gridac-dump',
+						'jobProperty' : 'export_action_set_gridac_dump',
+						'enablingProperty' : 'active_gridac_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">importGridAcJob</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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/oaf2hbase.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/oaf2hbase.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/oaf2hbase.xml	(revision 60998)
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="c7d7d775-2db3-474d-85ab-5173a582d515_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>OAF to HBase</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Load</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE isStart="true" name="setTable" type="SetHBaseTable">
+				<DESCRIPTION>set hbase table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="table" required="true" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="mapreduce"/>
+				</ARCS>
+			</NODE>
+			<NODE isStart="true" name="prepareImport" type="PrepareMDStoreImport">
+				<DESCRIPTION>Configure export to HDFS</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="hdfsPathParam" required="true" type="string">hdfsPath</PARAM>
+					<PARAM managedBy="user"   name="hdfsPath"      required="true" type="string"></PARAM>
+					<PARAM managedBy="system" name="mappingParam"  required="true" type="string">xslt</PARAM>
+					<PARAM managedBy="user"   name="mapping"       required="true" type="string" function="obtainValues('oaf2hbaseMappings', {})"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="reuseHdfsRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="reuseHdfsRecords" type="ReuseHdfsRecords">
+				<DESCRIPTION>reuse mdstore records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="reuseMdRecords" required="true" type="boolean"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="true" to="doneExport"/>
+					<ARC name="false" to="exportRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="exportRecords" type="MDStoreBatchExporter">
+				<DESCRIPTION>Fetch mdstore records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user"   name="format"           required="true" type="string">OAF</PARAM>
+					<PARAM managedBy="user"   name="layout"           required="true" type="string">store</PARAM>
+					<PARAM managedBy="user"   name="interpretation"   required="true" type="string">cleaned</PARAM>
+					<PARAM managedBy="system" name="outputEprParam"   required="true" type="string">records_epr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeHdfsRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeHdfsRecords" type="StoreHdfsRecords">
+				<DESCRIPTION>Store records to HDFS</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="inputEprParam" required="true" type="string">records_epr</PARAM>
+					<PARAM managedBy="system" name="hdfsPathParam" required="true" type="string">hdfsPath</PARAM>
+					<PARAM managedBy="system" name="cluster"       required="true" type="string">DM</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="doneExport"/>
+				</ARCS>
+			</NODE>
+			<NODE name="doneExport">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="mapreduce"/>
+				</ARCS>
+			</NODE>
+			<NODE isJoin="true" name="mapreduce" type="SubmitHadoopJob">
+				<DESCRIPTION>Run M/R import Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster"    required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="hadoopJob"  required="true" type="string">mdStoreHdfsImportJob</PARAM>
+					<PARAM managedBy="user"   name="simulation" required="true" type="boolean">false</PARAM>
+					<PARAM managedBy="system" name="envParams"  required="true" type="string">
+						{
+						'mapred.input.dir' : 'hdfsPath',
+						'hbase.import.xslt' : 'xslt',
+						'hbase.mapred.outputtable' : 'hbaseTable'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importActionsFromHDFS.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importActionsFromHDFS.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importActionsFromHDFS.xml	(revision 60998)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="cbfb388a-c184-4a88-be66-0f1d3bb61fe5_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>Actions from HDFS</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Load</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<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>
+					<PARAM required="true" type="string" name="table" managedBy="user"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="importMapreduce"/>
+				</ARCS>
+			</NODE>
+			<NODE name="setActionsPath" type="SetEnvParameter" isStart="true">
+				<DESCRIPTION>Set the sequence file path on HDFS holding the exported Actions</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="parameterName" required="true" type="string">actionsPath</PARAM>
+					<PARAM managedBy="user" name="parameterValue" required="true" type="string">/tmp/2016-03-25_iis_preprocessing/document_referencedDatasets/rawset_76cfeefd-1139-4a30-a394-f01bf67220bf_1458652954774</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="importMapreduce"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="importMapreduce" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>Run M/R import Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">actionsImportJob</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'cluster' : 'cluster',
+						'mapred.input.dir' : 'actionsPath',
+						'hbase.mapred.outputtable' : 'tableName'
+						}
+					</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importScholexplorer.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importScholexplorer.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importScholexplorer.xml	(revision 60998)
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="e03f256e-1e4d-4b3d-9c07-91faf5d25210_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>Import ScholExplorer Links and entities</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Import InfoSpace</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+            <NODE name="setInputPath" isStart="true" type="SetHdfsFile">
+                <DESCRIPTION>set the hdfs output path</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="user" name="hdfsPath" required="true" type="string">/usr/dnet/dli/export/scolixDumpExport</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 required="true" type="string" name="sets" managedBy="system">
+						[
+						{
+						'set' : 'scholexplorer-dump',
+						'jobProperty' : 'export_action_set_scholexplorer_dump',
+						'enablingProperty' : 'active_scholexplorer_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 name="importActionSet" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>IIS main</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">importScholexplorerJob</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'cluster' : 'cluster',
+						'mapred.input.dir':'inputPath',
+                        'mapred.output.dir':'outputPath'
+						}
+					</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">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/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/oaf2hbase_intersection.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/oaf2hbase_intersection.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/oaf2hbase_intersection.xml	(revision 60998)
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="26673677-4d28-4c87-ad36-1c9276b9ab0e_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>OAF to HBase [intersection]</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Load</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE isStart="true" name="setTable" type="SetHBaseTable">
+				<DESCRIPTION>set hbase table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="table" required="true" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="mapreduce"/>
+				</ARCS>
+			</NODE>
+			<NODE isStart="true" name="prepareImport" type="PrepareMDStoreImport">
+				<DESCRIPTION>Configure export to HDFS</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="hdfsPathParam" required="true" type="string">hdfsPath</PARAM>
+					<PARAM managedBy="user"   name="hdfsPath"      required="true" type="string"></PARAM>
+					<PARAM managedBy="system" name="mappingParam"  required="true" type="string">xslt</PARAM>
+					<PARAM managedBy="user"   name="mapping"       required="true" type="string" function="obtainValues('oaf2hbaseMappings', {})"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="reuseHdfsRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="reuseHdfsRecords" type="ReuseHdfsRecords">
+				<DESCRIPTION>reuse mdstore records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="reuseMdRecords" required="true" type="boolean"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="true" to="doneExport"/>
+					<ARC name="false" to="exportRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="exportRecords" type="MDStoreBatchExporter">
+				<DESCRIPTION>Fetch mdstore records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user"   name="format"           required="true" type="string">OAF</PARAM>
+					<PARAM managedBy="user"   name="layout"           required="true" type="string">store</PARAM>
+					<PARAM managedBy="user"   name="interpretation"   required="true" type="string">intersection</PARAM>
+					<PARAM managedBy="system" name="outputEprParam"   required="true" type="string">records_epr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeHdfsRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeHdfsRecords" type="StoreHdfsRecords">
+				<DESCRIPTION>Store records to HDFS</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="inputEprParam" required="true" type="string">records_epr</PARAM>
+					<PARAM managedBy="system" name="hdfsPathParam" required="true" type="string">hdfsPath</PARAM>
+					<PARAM managedBy="system" name="cluster"       required="true" type="string">DM</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="doneExport"/>
+				</ARCS>
+			</NODE>
+			<NODE name="doneExport">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="mapreduce"/>
+				</ARCS>
+			</NODE>
+			<NODE isJoin="true" name="mapreduce" type="SubmitHadoopJob">
+				<DESCRIPTION>Run M/R import Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster"    required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="hadoopJob"  required="true" type="string">mdStoreHdfsImportJob</PARAM>
+					<PARAM managedBy="user"   name="simulation" required="true" type="boolean">false</PARAM>
+					<PARAM managedBy="system" name="envParams"  required="true" type="string">
+						{
+						'mapred.input.dir' : 'hdfsPath',
+						'hbase.import.xslt' : 'xslt',
+						'hbase.mapred.outputtable' : 'hbaseTable'
+						}
+					</PARAM>
+					<PARAM managedBy="system" name="sysParams"  required="true" type="string">
+						{
+						'hbase.import.invisible' : 'true'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/actions2hbase.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/actions2hbase.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/actions2hbase.xml	(revision 60998)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="4b8dabb8-cef7-4910-a0ad-fd8e70d53b9e_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>Actions to HBase</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Load</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="auto">
+			<NODE name="promoteActions" type="PromoteActions" isStart="true">
+				<DESCRIPTION>Promote actions</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="obtainValues('actionSets', {})" required="false" type="string" name="set" managedBy="user">ALL SETS</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/openorgs/export.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/openorgs/export.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/openorgs/export.meta.xml	(revision 60998)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="18480f2a-2b20-48cc-a121-09b121da2553_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="OpenOrgs">Export to OpenOrgs DB</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Deduplication</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="ea558dcc-a5f3-4841-9a5e-c82d6384380c_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="new orgs">
+				<WORKFLOW id="b864a2f8-27fd-4d16-8f64-3f097dbf801a_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="new simrels"/>
+			</WORKFLOW>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/openorgs/openorgs_new_orgs.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/openorgs/openorgs_new_orgs.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/openorgs/openorgs_new_orgs.xml	(revision 60998)
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="ea558dcc-a5f3-4841-9a5e-c82d6384380c_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>Export organizations to OpenOrgs DB</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>OpenOrgs</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+		
+			<NODE name="setHdfsFile" type="SetHdfsFile" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="hdfsPath" type="string" managedBy="user" required="true">/tmp/openOrgs.orgs.tmp.seq</PARAM>
+					<PARAM name="hdfsPathParam" type="string" managedBy="system" required="true">openOrgsExportPath</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupHDFS"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="cleanupHDFS" type="DeleteHdfsPathJob">
+				<DESCRIPTION>hdfs cleanup (xml)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'openOrgsExportPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="exportOrgs"/>
+				</ARCS>
+			</NODE>
+		
+			<NODE name="exportOrgs" type="SubmitHadoopJob">
+				<DESCRIPTION>ExportSimrRels M/R job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">exportOpenOrgsOrganizations</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapred.outputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.outputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'mapred.output.dir' : 'openOrgsExportPath'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/resetHbase.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/resetHbase.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/resetHbase.xml	(revision 60998)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="ce304c65-5836-4cf0-9a48-53472b9f6f35_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>Reset HBase</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Load</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="auto">
+			<NODE name="checkTable" type="CheckHBaseTable" isStart="true">
+				<DESCRIPTION>check hbase table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="hbaseTableProperty" type="string" managedBy="system" required="true">hbase.mapred.datatable</PARAM>
+					<PARAM name="cluster" type="string" managedBy="system" required="true">DM</PARAM>
+					<PARAM name="tableColumnsParamName" type="string" managedBy="system" required="true">hTableColumns</PARAM>
+					<PARAM name="existOutNode" type="string" managedBy="system" required="true">drop</PARAM>
+					<PARAM name="dontExistOutNode" type="string" required="true" managedBy="system">define</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="drop" name="drop"/>
+					<ARC to="define" name="define"/>
+				</ARCS>
+			</NODE>
+			<NODE name="drop" type="DropHBaseTable">
+				<DESCRIPTION>drop hbase table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="hbaseTableProperty" type="string" managedBy="system" required="true">hbase.mapred.datatable</PARAM>
+					<PARAM name="cluster" type="string" managedBy="system" required="true">DM</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="define"/>
+				</ARCS>
+			</NODE>
+			<NODE name="define" type="DefineHBaseOpenaireSchema">
+				<DESCRIPTION>define OpenAIRE hbase table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="tableColumnsParamName" type="string" managedBy="system" required="true">hTableColumns</PARAM>
+					<PARAM name="hbaseTableProperty" type="string" managedBy="system" required="true">hbase.mapred.datatable</PARAM>
+					<PARAM name="cluster" type="string" managedBy="system" required="true">DM</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="create"/>
+				</ARCS>
+			</NODE>
+			<NODE name="create" type="CreateHBaseTable">
+				<DESCRIPTION>create hbase table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="hbaseTableProperty" type="string" managedBy="system" required="true">hbase.mapred.datatable</PARAM>
+					<PARAM name="cluster" type="string" managedBy="system" required="true">DM</PARAM>
+					<PARAM name="tableColumnsParamName" type="string" managedBy="system" required="true">hTableColumns</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/bulktag/bulkTagging.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/bulktag/bulkTagging.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/bulktag/bulkTagging.xml	(revision 60998)
@@ -0,0 +1,66 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="96780261-022d-474c-b2cd-5369e5e73742_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2018-08-07T12:09:03+02:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Bulk tagging</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="hadoopConfig" type="SetClusterAndTable">
+                <DESCRIPTION>Set table name</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+                    <PARAM managedBy="system" name="tableParam" required="true" type="string">tableName</PARAM>
+                    <PARAM managedBy="user" name="table" required="true" type="string">dev_openaire</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="bulkTag"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="fetchTaggingConf" type="LoadBulkTaggingConfiguration">
+                <DESCRIPTION>Fetch the bulk tagging configuration profile</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="bulkTaggingConfParam" required="true">tagging.conf</PARAM>
+                    <PARAM managedBy="system" name="enabledConfParam" required="true">tagging.enabled</PARAM>
+                    <PARAM managedBy="system" name="mappingProtoParam" required="true">proto.mapping</PARAM>
+                    <PARAM managedBy="user" name="enabled" required="true" type="boolean">false</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="bulkTag"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="bulkTag" type="SubmitHadoopJob">
+                <DESCRIPTION>Bulk tag</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="hadoopJob" required="true" type="string">bulkTaggingJob</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapred.outputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'hbase.mapreduce.outputtable' : 'tableName',
+                        'tagging.conf' : 'tagging.conf',
+                        'tagging.enabled' : 'tagging.enabled',
+                        'proto.mapping' : 'proto.mapping'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+        </CONFIGURATION>
+        <STATUS>
+            <LAST_EXECUTION_ID>wf_20180807_172327_510</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2018-08-07T17:24:53+02:00</LAST_EXECUTION_DATE>
+            <LAST_EXECUTION_STATUS>SUCCESS</LAST_EXECUTION_STATUS>
+            <LAST_EXECUTION_ERROR/>
+        </STATUS>
+    </BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentSoftwareLinksEvents.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentSoftwareLinksEvents.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentSoftwareLinksEvents.xml	(revision 60998)
@@ -0,0 +1,75 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="120a074a-8b1b-485e-9d1c-1d0466b056ac_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-10-12T14:10:32+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Calculate enrichment Software links events</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Notification Broker</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+
+			<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>
+					<PARAM required="true" type="string" name="table" managedBy="user"/>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupHDFS"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="setDedupConfigs" type="SetDedupConfiguration" isStart="true">
+				<DESCRIPTION>Set Dedup conf</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="obtainValues('dedupOrchestrations', {})" required="true" type="string" name="dedupConfigSequence" managedBy="user"></PARAM>
+					<PARAM required="true" type="string" name="dedupConfigSequenceParam" managedBy="system">dedup.conf.queue</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupHDFS"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="cleanupHDFS" type="DeleteHdfsPathJob" isJoin="true">
+				<DESCRIPTION>hdfs cleanup (xml)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'brokerEventsPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="enrichment"/>
+				</ARCS>
+			</NODE>
+
+
+			<NODE name="enrichment" type="DedupConfigurationAwareJob">
+				<DESCRIPTION>Run M/R Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">brokerEnrichmentSoftwareLinksJob</PARAM>
+					<PARAM required="true" type="string" name="dedupConfigSequenceParam" managedBy="system">dedup.conf.queue</PARAM>
+					<PARAM managedBy="system" name="envParams" required="false" type="string">
+						{
+						'hbase.mapred.inputtable' : 'tableName',
+						'hbase.mapreduce.inputtable' : 'tableName'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/dm.provision.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/dm.provision.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/dm.provision.xml	(revision 60998)
@@ -0,0 +1,314 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="a4434d62-d4cd-4c73-a107-bc7c62e6f815_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Data Provision</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+
+			<!-- PREPARE NODES -->
+			<NODE name="setInfo" type="SetFormatInfo" isStart="true">
+				<DESCRIPTION>set mdformat, layout, interpretation</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" type="string" managedBy="user" required="true">DMF</PARAM>
+					<PARAM name="layout" type="string" managedBy="user" required="true">index</PARAM>
+					<PARAM name="interpretation" type="string" managedBy="user" required="true">openaire</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="findIndex"/>
+				</ARCS>
+			</NODE>
+			<NODE name="fetchRelClasses" type="FetchRelClasses" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="relClassesProperty" type="string" managedBy="system" required="true">dnet.openaire.model.relclasses.xquery</PARAM>
+					<PARAM name="relClassesName" type="string" managedBy="system" required="true">relClasses</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="groupEntities"/>
+				</ARCS>
+			</NODE>
+			<NODE name="fetchContexts" type="LoadContextsJob" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="groupEntities"/>
+				</ARCS>
+			</NODE>
+			<NODE name="fetchEntityLinks" type="LoadEntityLinksJob" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="groupEntities"/>
+				</ARCS>
+			</NODE>
+
+			<!-- UPDATE INDEX -->
+			<NODE name="findIndex" type="FindIndex">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC name="found" to="prepareIndexing"/>
+					<ARC name="notFound" to="createIndex"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createIndex" type="CreateIndex">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="prepareIndexing"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareIndexing" type="PrepareIndexJob">
+				<DESCRIPTION>Prepare indexing</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="outputRecordsPathParam" type="string" managedBy="system" required="true">hdfsRecordsPath</PARAM>
+					<PARAM name="rottenRecordsPathParam" type="string" managedBy="system" required="true">rottenRecordsPath</PARAM>
+					<PARAM name="layoutToRecordStylesheet" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/index/openaireLayoutToRecordStylesheet.xsl</PARAM>
+					<PARAM name="oafSchemaLocationProperty" type="string" managedBy="system" required="true">oaf.schema.location</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupXml"/>
+					<ARC to="cleanupRotten"/>
+				</ARCS>
+			</NODE>
+			<NODE name="cleanupXml" type="DeleteHdfsPathJob">
+				<DESCRIPTION>hdfs cleanup (xml)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'hdfsRecordsPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="groupEntities"/>
+				</ARCS>
+			</NODE>
+			<NODE name="cleanupRotten" type="DeleteHdfsPathJob">
+				<DESCRIPTION>hdfs cleanup (rotten)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'rottenRecordsPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="groupEntities"/>
+				</ARCS>
+			</NODE>
+			<NODE name="groupEntities" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>M/R group entities</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">prepareIndexDataJob</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'mapred.output.dir' : 'hdfsRecordsPath',
+						'index.entity.links' : 'index.entity.links',
+						'oaf.schema.location' : 'oaf.schema.location',
+						'contextmap' : 'contextmap',
+						'relClasses' : 'relClasses'
+						}
+					</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateIndex"/>
+					<ARC to="prepareOAI"/>
+					<ARC to="prepareStats"/>
+				</ARCS>
+			</NODE>
+			<NODE name="updateIndex" type="SubmitHadoopJob">
+				<DESCRIPTION>M/O index records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">indexFeedJob</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'mapred.input.dir' : 'hdfsRecordsPath',
+						'mapred.output.dir' : 'rottenRecordsPath',
+						'index.xslt' : 'index.xslt',
+						'index.solr.url' : 'index.solr.url',
+						'index.solr.collection' : 'index.solr.collection',
+						'index.buffer.flush.threshold' : 'index.buffer.flush.threshold',
+						'index.shutdown.wait.time' : 'index.shutdown.wait.time',
+						'index.solr.sim.mode' : 'index.solr.sim.mode',
+						'index.feed.timestamp' : 'index.feed.timestamp'
+						}
+					</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="finalize"/>
+				</ARCS>
+			</NODE>
+			<NODE name="finalize" type="FinalizeIndexFeeding">
+				<DESCRIPTION>commit changes</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="updateDs"/>
+				</ARCS>
+			</NODE>
+			<NODE name="updateDs" type="IndexDsUpdateJob">
+				<DESCRIPTION>update DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="waitAll"/>
+				</ARCS>
+			</NODE>
+
+			<!--  UPDATE STATS -->
+			<NODE name="prepareStats" type="PrepareStatsParams">
+				<DESCRIPTION>set params for stats</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="updateStats"/>
+				</ARCS>
+			</NODE>
+			<NODE name="updateStats" type="SubmitHadoopJob">
+				<DESCRIPTION>Update stats DB</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">StatsExportJob</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'Stats_Hbase_Source_Table' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'nameNode' : 'nameNode',
+						'jobTracker' : 'jobTracker',
+						'isLookupEndpoint' : 'isLookupEndpoint',
+						'Stats_indexConf' : 'index.entity.links'
+						}
+					</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="waitAll"/>
+				</ARCS>
+			</NODE>
+
+
+			<!-- OAI STORE UPDATE -->
+			<NODE name="prepareOAI" type="PrepareOaiJob">
+				<DESCRIPTION>Prepare target OAI store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="oaiDbName" type="string" managedBy="user" required="true">oaistore</PARAM>
+					<PARAM name="oaiFormat" type="string" managedBy="user" required="true">oaf</PARAM>
+					<PARAM name="oaiLayout" type="string" managedBy="user" required="true">index</PARAM>
+					<PARAM name="oaiInterpretation" type="string" managedBy="user" required="true">openaire</PARAM>
+					<PARAM name="oaiSource" type="string" managedBy="user" required="false"></PARAM>
+					<PARAM name="skipDuplicates" type="boolean" managedBy="user" required="true">true</PARAM>
+					<PARAM name="duplicateXPath" type="string" managedBy="user" required="true">//*[local-name()='entity']//*[local-name()='datainfo']/*[local-name()='deletedbyinference'][./text() = 'true']</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="OAIDropStore" />
+				</ARCS>
+			</NODE>
+			<NODE name="OAIDropStore" type="OAIDropStore">
+				<DESCRIPTION>Drop the store: upserts are too expensive!</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="OAICreateStore"/>
+				</ARCS>
+			</NODE>
+			<NODE name="OAICreateStore" type="OAICreateStore">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="feedOAI"/>
+				</ARCS>
+			</NODE>
+			<NODE name="feedOAI" type="SubmitHadoopJob">
+				<DESCRIPTION>M/O oai feeding</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">oaiFeedJob</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'mapred.input.dir' : 'hdfsRecordsPath',
+						'services.publisher.oai.collection' : 'oai_collection',
+						'oaiConfiguration' : 'oai_configuration',
+						'oai.feed.date' : 'oai_actionDate',
+						'services.publisher.oai.db' : 'oai_dbName',
+						'services.publisher.oai.skipDuplicates':'oai_skipDuplicates',
+						'services.publisher.oai.duplicateXPath':'oai_duplicateXPath'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'services.publisher.oai.host' : 'services.publisher.oai.host',
+						'services.publisher.oai.port' : 'services.publisher.oai.port'
+						}
+					</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="CompoundIndexes"/>
+				</ARCS>
+			</NODE>
+			<NODE name="CompoundIndexes" type="OAICreateIndex">
+				<DESCRIPTION>Create composite indexes for the OAI store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="fieldNames" managedBy="user">set,resulttypeid;set,datestamp;license,oaftype;set,oaftype;oaftype,funder;resulttypeid,oaftype;oaftype,funding;resulttypeid,funder;resulttypeid,funding</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="ConfigIndexes"/>
+				</ARCS>
+			</NODE>
+			<NODE name="ConfigIndexes" type="OAIEnsureIndexes">
+				<DESCRIPTION>Ensure an index exists on fields as specified in the configuration profile</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="SetsCount"/>
+					<ARC to="ConfigSets"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SetsCount" type="OAISetsCountUpdate">
+				<DESCRIPTION>Count records in each OAI set, for each exported metadata format</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="configuredOnly" type="boolean" managedBy="user" required="true">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="waitAll"/>
+				</ARCS>
+			</NODE>
+			<NODE name="ConfigSets" type="OAIRefreshConfiguration">
+				<DESCRIPTION>Reads the current OAI configuration and upsert OAI sets accordingly (counts are updated as well)</DESCRIPTION>
+				<PARAMETERS>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="waitAll"/>
+				</ARCS>
+			</NODE>
+			<!-- WAIT FOR ALL THE WF BRANCHES TO COMPLETE -->
+			<NODE name="waitAll" isJoin="true">
+				<DESCRIPTION>wait for all the branches to complete</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS>
+		</STATUS>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentProjectEvents.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentProjectEvents.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentProjectEvents.xml	(revision 60998)
@@ -0,0 +1,75 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="6472af0e-f2ed-4ee5-835f-de698d89a7a7_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-10-12T14:10:32+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Calculate enrichment Project events</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Notification Broker</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+
+			<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>
+					<PARAM required="true" type="string" name="table" managedBy="user"/>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupHDFS"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="setDedupConfigs" type="SetDedupConfiguration" isStart="true">
+				<DESCRIPTION>Set Dedup conf</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="obtainValues('dedupOrchestrations', {})" required="true" type="string" name="dedupConfigSequence" managedBy="user"></PARAM>
+					<PARAM required="true" type="string" name="dedupConfigSequenceParam" managedBy="system">dedup.conf.queue</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupHDFS"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="cleanupHDFS" type="DeleteHdfsPathJob" isJoin="true">
+				<DESCRIPTION>hdfs cleanup (xml)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'brokerEventsPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="enrichment"/>
+				</ARCS>
+			</NODE>
+
+
+			<NODE name="enrichment" type="DedupConfigurationAwareJob">
+				<DESCRIPTION>Run M/R Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">brokerEnrichmentProjectsJob</PARAM>
+					<PARAM required="true" type="string" name="dedupConfigSequenceParam" managedBy="system">dedup.conf.queue</PARAM>
+					<PARAM managedBy="system" name="envParams" required="false" type="string">
+						{
+						'hbase.mapred.inputtable' : 'tableName',
+						'hbase.mapreduce.inputtable' : 'tableName'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculatePersonDistribution.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculatePersonDistribution.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculatePersonDistribution.xml	(revision 60998)
@@ -0,0 +1,81 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="a6901d21-c09d-43dc-8fc9-236c32069293_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-10-12T14:10:32+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Calculate person distribution</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Notification Broker</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="setHdfsFile" type="SetHdfsFile" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="hdfsPath" type="string" managedBy="user" required="true">/tmp/brokerPersonDistribution.tmp.seq</PARAM>
+					<PARAM name="hdfsPathParam" type="string" managedBy="system" required="true">brokerPersonDistributionPath</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupHDFS"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="cleanupHDFS" type="DeleteHdfsPathJob">
+				<DESCRIPTION>hdfs cleanup (xml)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'brokerPersonDistributionPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="step1_MR"/>
+				</ARCS>
+			</NODE>
+
+
+			<NODE name="step1_MR" type="SubmitHadoopJob">
+				<DESCRIPTION>Run M/R Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">calculatePersonDistributionStep1Job</PARAM>
+					<PARAM managedBy="system" name="envParams" required="false" type="string">
+						{
+						'mapred.output.dir' : 'brokerPersonDistributionPath'
+						}
+					</PARAM>
+					<PARAM managedBy="system" name="sysParams" required="false" type="string">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="step2_MR"/>
+				</ARCS>
+			</NODE>
+			<NODE name="step2_MR" type="SubmitHadoopJob">
+				<DESCRIPTION>Run M/R Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">calculatePersonDistributionStep2Job</PARAM>
+					<PARAM managedBy="system" name="envParams" required="false" type="string">
+						{
+						'mapred.input.dir' : 'brokerPersonDistributionPath'
+						}
+					</PARAM>
+					<PARAM managedBy="system" name="sysParams" required="false" type="string"/>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateAdditionEvents.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateAdditionEvents.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateAdditionEvents.xml	(revision 60998)
@@ -0,0 +1,75 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="2e39f424-18c7-4ad9-8d29-93807d389130_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-10-12T14:10:32+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Calculate addition events</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Notification Broker</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+
+			<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>
+					<PARAM required="true" type="string" name="table" managedBy="user"/>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="enrichment"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="setHdfsFile" type="SetHdfsFile" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="hdfsPath" type="string" managedBy="user" required="true">/tmp/brokerEvents.tmp.seq</PARAM>
+					<PARAM name="hdfsPathParam" type="string" managedBy="system" required="true">brokerEventsPath</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupHDFS"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="cleanupHDFS" type="DeleteHdfsPathJob">
+				<DESCRIPTION>hdfs cleanup (xml)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'brokerEventsPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="enrichment"/>
+				</ARCS>
+			</NODE>
+
+
+			<NODE name="enrichment" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>Run M/R Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">brokerAdditionJob</PARAM>
+					<PARAM managedBy="system" name="envParams" required="false" type="string">
+						{
+						'mapred.output.dir' : 'brokerEventsPath',
+						'hbase.mapred.inputtable' : 'tableName',
+						'hbase.mapreduce.inputtable' : 'tableName'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/stats.prepare.public.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/stats.prepare.public.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/stats.prepare.public.xml	(revision 60998)
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="605d8dc9-8dc7-4adc-848d-625b5655e468_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-16T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Prepare Public Information Space Stats</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Content Publishing</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+
+			<NODE name="findStatsService" type="FindStatsService" isStart="true">
+				<DESCRIPTION>find stats service</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xquery" type="string" managedBy="user" required="false">/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='StatsManagerServiceResourceType' and .//RESOURCE_KIND/@value='ServiceResources']/HEADER/RESOURCE_IDENTIFIER/@value/string()</PARAM>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="setPortal"/>
+				</ARCS>
+			</NODE>
+			<NODE name="setPortal" type="SetEnvParameter">
+				<DESCRIPTION>Set the target portal instance</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="parameterName" type="string" managedBy="system" required="true">portal</PARAM>
+					<PARAM function="validValues(['test', 'beta', 'production'])" managedBy="user" name="parameterValue" required="true" type="string"/>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_BACKUP_CACHE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_BACKUP_CACHE" type="Selection">
+				<DESCRIPTION>A backup of the stats cache first, shall we?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="backupCache"/>
+					<ARC name="NO" to="SELECT_MIGRATION"/>
+				</ARCS>
+			</NODE>
+			<NODE name="backupCache" type="BackupStatsCache">
+				<DESCRIPTION>Backup the current stats cache. If the new generated shadow cache is not good we can rollback with the restore wf.</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+					<PARAM managedBy="system" name="portalParam" required="true" type="string">portal</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_MIGRATION"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_MIGRATION" type="Selection">
+				<DESCRIPTION>Shall we migrate the cache from another portal?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="migrateCache"/>
+					<ARC name="NO" to="refreshShadowCache"/>
+				</ARCS>
+			</NODE>
+			<NODE name="migrateCache" type="MigrateStatsCache">
+				<DESCRIPTION>Select the cache from another portal</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+					<PARAM managedBy="system" name="portalParam" required="true" type="string">portal</PARAM>
+					<PARAM function="validValues(['test', 'beta', 'production'])" managedBy="user" name="sourcePortal" required="true" type="string"/>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+			<NODE name="refreshShadowCache" type="RefreshShadowCache">
+				<DESCRIPTION>Updates the shadow cache according to the shadow stats db.</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+					<PARAM managedBy="system" name="portalParam" required="true" type="string">portal</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentEvents.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentEvents.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentEvents.xml	(revision 60998)
@@ -0,0 +1,60 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="b9b6cd8a-8ee2-4a74-9344-f087eeac29ed_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-10-12T14:10:32+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Calculate enrichment events</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Notification Broker</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+
+			<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>
+					<PARAM required="true" type="string" name="table" managedBy="user"/>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="enrichment"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="setDedupConfigs" type="SetDedupConfiguration" isStart="true">
+				<DESCRIPTION>Set Dedup conf</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="obtainValues('dedupOrchestrations', {})" required="true" type="string" name="dedupConfigSequence" managedBy="user"></PARAM>
+					<PARAM required="true" type="string" name="dedupConfigSequenceParam" managedBy="system">dedup.conf.queue</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="enrichment"/>
+				</ARCS>
+			</NODE>
+
+
+			<NODE name="enrichment" type="DedupConfigurationAwareJob" isJoin="true">
+				<DESCRIPTION>Run M/R Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">brokerEnrichmentJob</PARAM>
+					<PARAM required="true" type="string" name="dedupConfigSequenceParam" managedBy="system">dedup.conf.queue</PARAM>
+					<PARAM managedBy="system" name="envParams" required="false" type="string">
+						{
+						'hbase.mapred.inputtable' : 'tableName',
+						'hbase.mapreduce.inputtable' : 'tableName'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/dm.prepare.preview.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/dm.prepare.preview.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/dm.prepare.preview.xml	(revision 60998)
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="8aabd31c-3be8-407a-8f53-6548f50ec728_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-16T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Prepare Pre-public Information Space</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>InfoSpace preview</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="findIndex" type="FindIndex" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="mdFormat" type="string" managedBy="user" required="true">DMF</PARAM>
+					<PARAM name="layout" type="string" managedBy="system" required="true">index</PARAM>
+					<PARAM name="interpretation" type="string" managedBy="system" required="true">openaire</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="findShadowSearchService"/>
+					<ARC name="notFound" to="waitForSearch"/>
+				</ARCS>
+			</NODE>
+			<NODE name="findShadowSearchService" type="FindSearchServices">
+				<DESCRIPTION>find shadow search service</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xquery" type="string" managedBy="user" required="false">/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='SearchServiceResourceType'
+						and .//RESOURCE_KIND/@value='ServiceResources' and
+						.//PROPERTY[@key="infrastructure"]/@value="shadow"]/HEADER/RESOURCE_IDENTIFIER/@value/string()
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="switches"/>
+					<ARC name="notFound" to="waitForSearch"/>
+				</ARCS>
+			</NODE>
+			<NODE name="switches" type="SwitchIndexes">
+				<DESCRIPTION>switch index</DESCRIPTION>
+				<PARAMETERS></PARAMETERS>
+				<ARCS>
+					<ARC name="switch" to="switch"/>
+					<ARC to="waitForSearch"/>
+				</ARCS>
+			</NODE>
+			<NODE name="switch" type="SwitchSearchService">
+				<DESCRIPTION>switch index</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="inputIndexIdParam" type="string" managedBy="system" required="true">index_id</PARAM>
+					<PARAM name="outputIndexIdParam" type="string" managedBy="system" required="true">IndexId</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="switches"/>
+				</ARCS>
+			</NODE>
+			<NODE name="waitForSearch">
+				<DESCRIPTION>Wait for the search branch to fail or to success</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="SELECT_FEED_CLAIMS"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="SELECT_FEED_CLAIMS" type="Selection">
+				<DESCRIPTION>Do we feed the the most recent claims today?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">NO</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="feedClaims"/>
+					<ARC name="NO" to="findStatsService"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="feedClaims" type="FeedMissingClaims">
+				<DESCRIPTION>Feed the most recent claims</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="findStatsService"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="findStatsService" type="FindStatsService">
+				<DESCRIPTION>find stats service</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xquery" type="string" managedBy="user" required="false">
+						/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='StatsManagerServiceResourceType' and
+						.//RESOURCE_KIND/@value='ServiceResources']/HEADER/RESOURCE_IDENTIFIER/@value/string()
+					</PARAM>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="SELECT_PREPARE_STATS"/>
+					<ARC name="notFound" to="failure"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_PREPARE_STATS" type="Selection">
+				<DESCRIPTION>Do we prepare the shadow stats for preview today?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">YES</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="setPortal"/>
+					<ARC name="NO" to="success"/>
+				</ARCS>
+			</NODE>
+			<NODE name="setPortal" type="SetEnvParameter">
+				<DESCRIPTION>set the target portal instance for pre-public preview</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="parameterName" type="string" managedBy="system" required="true">portal</PARAM>
+					<PARAM function="validValues(['test'])" managedBy="user" name="parameterValue" required="false" type="string">test</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="refreshShadowCache"/>
+				</ARCS>
+			</NODE>
+			<NODE name="refreshShadowCache" type="RefreshShadowCache">
+				<DESCRIPTION>Updates the shadow cache according to the shadow stats db.</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+					<PARAM managedBy="system" name="portalParam" required="true" type="string">portal</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="promoteCache"/>
+				</ARCS>
+			</NODE>
+			<NODE name="promoteCache" type="PromoteShadowCacheStats">
+				<DESCRIPTION>Promote the shadow cache.</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+					<PARAM managedBy="system" name="portalParam" required="true" type="string">portal</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/refreshMdstoreSizes.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/refreshMdstoreSizes.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/refreshMdstoreSizes.xml	(revision 60998)
@@ -0,0 +1,24 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="3a5aea4a-cbeb-445e-b39a-52f40f42fa50_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-10-12T14:10:32+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Refresh Mdstore Sizes</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Consistency</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="refreshSizes" type="VerifyMdStoreSizes" isStart="true">
+				<DESCRIPTION>Refresh Mdstore Sizes</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/findInvalidRepoProfiles.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/findInvalidRepoProfiles.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/findInvalidRepoProfiles.xml	(revision 60998)
@@ -0,0 +1,57 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="e5bb911b-3fe2-403a-a757-6c1f89ff27e8_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-10-12T14:10:32+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Find Invalid Profiles</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Consistency</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="findRepos" type="FindInvalidRepoProfiles" isStart="true">
+				<DESCRIPTION>Find Invalid Repo Profiles</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="deleteInvalidProfiles"  managedBy="user" required="true" type="boolean">false</PARAM>
+					<PARAM name="registerMissingProfiles"  managedBy="user" required="true" type="boolean">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="findMetaWfs"/>
+				</ARCS>
+			</NODE>
+			
+			<NODE name="findMetaWfs" type="FindInvalidMetaWorkflows">
+				<DESCRIPTION>Find Invalid Meta Wf Profiles</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="deleteInvalidProfiles"  managedBy="user" required="true" type="boolean">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="findWfs"/>
+				</ARCS>
+			</NODE>
+			
+			<NODE name="findWfs" type="FindInvalidWorkflows">
+				<DESCRIPTION>Find Invalid Wf Profiles</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="deleteInvalidProfiles"  managedBy="user" required="true" type="boolean">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="findStores"/>
+				</ARCS>
+			</NODE>
+			
+			<NODE name="findStores" type="FindInvalidStores">
+				<DESCRIPTION>Find Invalid [Md/Obj]Stores</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="deleteInvalidStores"  managedBy="user" required="true" type="boolean">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-mainV2.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-mainV2.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-mainV2.xml	(revision 60998)
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="dc19a8d1-93a8-4ffb-9fed-950f4156eedc_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>IIS main workflow V2</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>IIS</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="start" isStart="true">
+				<DESCRIPTION>start</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="prepareActionSets"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareActionSets" type="PrepareActionSets">
+				<DESCRIPTION>prepare action sets</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="sets" managedBy="system">
+						[
+						{
+						'set' : 'iis-document-affiliation',
+						'jobProperty' : 'export_action_set_id_matched_doc_organizations',
+						'enablingProperty' : 'active_document_affiliation',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-referenced-projects-main',
+						'jobProperty' : 'export_action_set_id_document_referencedProjects',
+						'enablingProperty' : 'active_referenceextraction_project',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-referenced-datasets-main',
+						'jobProperty' : 'export_action_set_id_document_referencedDatasets',
+						'enablingProperty' : 'active_referenceextraction_dataset',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-dataset-entities-main',
+						'jobProperty' : 'export_action_set_id_entity_dataset',
+						'enablingProperty' : 'active_referenceextraction_dataset',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-researchinitiative',
+						'jobProperty' : 'export_action_set_id_document_research_initiative',
+						'enablingProperty' :
+						'active_referenceextraction_researchinitiative',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-document-similarities',
+						'jobProperty' : 'export_action_set_id_document_similarities_standard',
+						'enablingProperty' : 'active_documentssimilarity',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-document-classes',
+						'jobProperty' : 'export_action_set_id_document_classes',
+						'enablingProperty' : 'active_documentsclassification',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-document-citations',
+						'jobProperty' : 'export_action_set_id_document_referencedDocuments',
+						'enablingProperty' : 'active_citationmatching',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-referenceextraction-pdb',
+						'jobProperty' : 'export_action_set_id_document_pdb',
+						'enablingProperty' : 'active_referenceextraction_pdb',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-referenceextraction-software',
+						'jobProperty' : 'export_action_set_id_document_software_url',
+						'enablingProperty' : 'active_referenceextraction_software_url',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-entities-software',
+						'jobProperty' : 'export_action_set_id_entity_software',
+						'enablingProperty' : 'active_referenceextraction_software_url',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-communities',
+						'jobProperty' : 'export_action_set_id_document_community',
+						'enablingProperty' : 'active_referenceextraction_community',
+						'enabled' : 'true'
+						}
+						]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="prepareParameters"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareParameters" type="PrepareIisMainParamsV2">
+				<DESCRIPTION>prepare parameters</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="islookupLocationParam" managedBy="system">import_islookup_service_location</PARAM>
+					<PARAM required="true" type="string" name="objectStoreParam" managedBy="system">import_content_objectstores_csv</PARAM>
+					<PARAM required="true" type="string" name="objectStoreLocationParam" managedBy="system">import_content_object_store_location</PARAM>
+					<PARAM required="true" type="string" name="mdStoreStoreLocationParam" managedBy="system">import_mdstore_service_location</PARAM>
+					<PARAM required="true" type="string" name="mdStoreDatasetParam" managedBy="system">import_dataset_mdstore_ids_csv</PARAM>
+					<PARAM required="true" type="string" name="oozieWfAppPathParam" managedBy="system">oozie.wf.application.path</PARAM>
+					<PARAM required="true" type="string" name="oozieWfAppPath" managedBy="user">/tmp/integration/apps/main</PARAM>
+					<PARAM required="true" type="string" name="clusterName" managedBy="user" function="validValues(['IIS','DM'])">IIS</PARAM>
+					<PARAM required="true" type="string" name="importHbaseDumpLocation" managedBy="user"></PARAM>
+					<PARAM required="true" type="string" name="importHbaseDumpLocationParam" managedBy="system">import_hbase_dump_location</PARAM>
+					<PARAM required="false" type="string" name="objectStoreBlacklistCSV" managedBy="user"></PARAM>
+					<PARAM required="true" type="string" name="importProjectConceptsContextCSVParam" managedBy="system">import_project_concepts_context_ids_csv</PARAM>
+					<PARAM required="true" type="string" name="importProjectConceptsContextCSV" managedBy="user">fet-fp7,fet-h2020</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="main"/>
+				</ARCS>
+			</NODE>
+			<NODE name="main" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>IIS main</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">iisMainJobV2</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'cluster' : 'cluster',
+						'oozie.wf.application.path' : 'oozie.wf.application.path',
+
+						'active_document_affiliation' : 'active_document_affiliation',
+						'active_referenceextraction_project' : 'active_referenceextraction_project',
+						'active_referenceextraction_dataset' : 'active_referenceextraction_dataset',
+						'active_referenceextraction_researchinitiative' : 'active_referenceextraction_researchinitiative',
+						'active_documentsclassification' : 'active_documentsclassification',
+						'active_documentssimilarity' : 'active_documentssimilarity',
+						'active_citationmatching' : 'active_citationmatching',
+						'active_referenceextraction_pdb' : 'active_referenceextraction_pdb',
+						'active_referenceextraction_software_url' : 'active_referenceextraction_software_url',
+						'active_referenceextraction_community' : 'active_referenceextraction_community',
+
+						'import_content_objectstores_csv' : 'import_content_objectstores_csv',
+						'import_content_object_store_location' : 'import_content_object_store_location',
+						'import_mdstore_service_location' : 'import_mdstore_service_location',
+						'import_islookup_service_location' : 'import_islookup_service_location',
+						'import_project_concepts_context_ids_csv' : 'import_project_concepts_context_ids_csv',
+						'import_dataset_mdstore_ids_csv' : 'import_dataset_mdstore_ids_csv',
+						'import_hbase_dump_location' : 'import_hbase_dump_location',
+
+						'export_action_set_id_matched_doc_organizations' : 'export_action_set_id_matched_doc_organizations',
+						'export_action_set_id_document_referencedDatasets' : 'export_action_set_id_document_referencedDatasets',
+						'export_action_set_id_document_referencedProjects' : 'export_action_set_id_document_referencedProjects',
+						'export_action_set_id_document_research_initiative' : 'export_action_set_id_document_research_initiative',
+						'export_action_set_id_document_similarities_standard' : 'export_action_set_id_document_similarities_standard',
+
+						'export_action_set_id_document_classes' : 'export_action_set_id_document_classes',
+						'export_action_set_id_document_referencedDocuments' : 'export_action_set_id_document_referencedDocuments',
+						'export_action_set_id_entity_dataset' : 'export_action_set_id_entity_dataset',
+						'export_action_set_id_document_pdb' : 'export_action_set_id_document_pdb',
+						'export_action_set_id_document_software_url' : 'export_action_set_id_document_software_url',
+						'export_action_set_id_entity_software' : 'export_action_set_id_entity_software',
+						'export_action_set_id_document_community' :  'export_action_set_id_document_community'
+						}
+					</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">false</PARAM>
+					<PARAM required="true" type="string" name="oozieReportActionsCsv" managedBy="system">build-report</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/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/test-post-meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/test-post-meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/test-post-meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="b60c31f5-e3b1-4759-b7db-076ad63f0665_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2016-03-24T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="OpenAIRE Provision">Testing POST VRE</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="88a4d668-2de2-453b-b656-e4e1e63cd619_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Test POST VRE"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/reposStoresConsistency.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/reposStoresConsistency.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/reposStoresConsistency.xml	(revision 60998)
@@ -0,0 +1,26 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="671e4507-3b0e-4318-8065-ddb856182e9f_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-10-12T14:10:32+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Repos-Stores consistency</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Consistency</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="fixReposAndStores" type="FixRepoMdstoreSizes" isStart="true">
+				<DESCRIPTION>Fix repos-stores sizes</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="alwaysUpdate"  managedBy="user" required="true" type="boolean">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/hbase-to-hdfs.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/hbase-to-hdfs.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/hbase-to-hdfs.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="0619993d-2ed6-499b-bcb0-06c8cc03fc56_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="OpenAIRE Provision">HBase to HDFS</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="f8d1f8f1-2cf4-4f84-af70-ceb11ec120de_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="HBase to HDFS"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/hbase2hdfs.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/hbase2hdfs.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/hbase2hdfs.xml	(revision 60998)
@@ -0,0 +1,140 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="f8d1f8f1-2cf4-4f84-af70-ceb11ec120de_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-11-12T17:19:38+00:00"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>HBase to HDFS</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+
+			<!-- PREPARE NODES -->
+			<NODE isStart="true" name="setInfo" type="SetFormatInfo">
+				<DESCRIPTION>set mdformat, layout, interpretation</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="user" name="format" required="true" type="string">TMF</PARAM>
+					<PARAM managedBy="user" name="layout" required="true" type="string">index</PARAM>
+					<PARAM managedBy="user" name="interpretation" required="true" type="string">openaire</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="findIndex"/>
+				</ARCS>
+			</NODE>
+			<NODE isStart="true" name="fetchRelClasses" type="FetchRelClasses">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="relClassesProperty" required="true" type="string">dnet.openaire.model.relclasses.xquery</PARAM>
+					<PARAM managedBy="system" name="relClassesName" required="true" type="string">relClasses</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="groupEntities"/>
+				</ARCS>
+			</NODE>
+			<NODE isStart="true" name="fetchContexts" type="LoadContextsJob">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="groupEntities"/>
+				</ARCS>
+			</NODE>
+			<NODE isStart="true" name="fetchEntityLinks" type="LoadEntityLinksJob">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="groupEntities"/>
+				</ARCS>
+			</NODE>
+
+			<!-- UPDATE INDEX -->
+			<NODE name="findIndex" type="FindIndex">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC name="found" to="prepareIndexing"/>
+					<ARC name="notFound" to="createIndex"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createIndex" type="CreateIndex">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="prepareIndexing"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareIndexing" type="PrepareIndexJob">
+				<DESCRIPTION>Prepare indexing</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="outputRecordsPathParam" required="true" type="string">hdfsRecordsPath</PARAM>
+					<PARAM managedBy="system" name="rottenRecordsPathParam" required="true" type="string">rottenRecordsPath</PARAM>
+					<PARAM managedBy="system" name="layoutToRecordStylesheet" required="true"
+					       type="string">/eu/dnetlib/msro/openaireplus/workflows/index/openaireLayoutToRecordStylesheet.xsl
+					</PARAM>
+					<PARAM managedBy="system" name="oafSchemaLocationProperty" required="true" type="string">oaf.schema.location</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupXml"/>
+					<ARC to="cleanupRotten"/>
+				</ARCS>
+			</NODE>
+			<NODE name="cleanupXml" type="DeleteHdfsPathJob">
+				<DESCRIPTION>hdfs cleanup (xml)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="envParams" required="true" type="string">
+						{
+						'path' : 'hdfsRecordsPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="groupEntities"/>
+				</ARCS>
+			</NODE>
+			<NODE name="cleanupRotten" type="DeleteHdfsPathJob">
+				<DESCRIPTION>hdfs cleanup (rotten)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="envParams" required="true" type="string">
+						{
+						'path' : 'rottenRecordsPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="groupEntities"/>
+				</ARCS>
+			</NODE>
+			<NODE isJoin="true" name="groupEntities" type="SubmitHadoopJob">
+				<DESCRIPTION>M/R group entities</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="system" name="hadoopJob" required="true" type="string">prepareIndexDataJob</PARAM>
+					<PARAM managedBy="system" name="sysParams" required="true" type="string">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM managedBy="system" name="envParams" required="true" type="string">
+						{
+						'mapred.output.dir' : 'hdfsRecordsPath',
+						'index.entity.links' : 'index.entity.links',
+						'oaf.schema.location' : 'oaf.schema.location',
+						'contextmap' : 'contextmap',
+						'relClasses' : 'relClasses'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS>
+		</STATUS>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/copyHbaseTable.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/copyHbaseTable.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/copyHbaseTable.xml	(revision 60998)
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="07d88cf9-87ee-4585-b226-eb8917a60bb6_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>Copy HBase Table</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>IIS</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="setInfo" type="PrepareCopyTable" isStart="true">
+				<DESCRIPTION>Set copy parameters</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="sourceCluster" managedBy="user" function="obtainValues('hadoopClusters', {})">DM</PARAM>
+					<PARAM required="true" type="string" name="sourceTable" managedBy="user"></PARAM>
+					<PARAM required="true" type="string" name="targetCluster" managedBy="user" function="obtainValues('hadoopClusters', {})">IIS</PARAM>
+					<PARAM required="true" type="string" name="targetTable" managedBy="user"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="checkSource"/>
+				</ARCS>
+			</NODE>
+			<NODE name="checkSource" type="CheckHBaseTable">
+				<DESCRIPTION>check hbase source table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="tableColumnsParamName" managedBy="system">hTableColumns</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'hbaseTable' : 'sourceTable',
+						'cluster' : 'sourceCluster'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="existOutNode" managedBy="system">yes</PARAM>
+					<PARAM required="true" type="string" name="dontExistOutNode" managedBy="system">no</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="sourceDesc" name="yes"/>
+					<ARC to="failure" name="no"/>
+				</ARCS>
+			</NODE>
+			<NODE name="sourceDesc" type="GetHBaseTableDescription">
+				<DESCRIPTION>get source table description</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="tableColumnsParamName" managedBy="system">hTableColumns</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'hbaseTable' : 'sourceTable',
+						'cluster' : 'sourceCluster'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="checkTarget"/>
+				</ARCS>
+			</NODE>
+			<NODE name="checkTarget" type="CheckHBaseTable">
+				<DESCRIPTION>check hbase target table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="tableColumnsParamName" managedBy="system">hTableColumns</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'hbaseTable' : 'targetTable',
+						'cluster' : 'targetCluster'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="existOutNode" managedBy="system">yes</PARAM>
+					<PARAM required="true" type="string" name="dontExistOutNode" managedBy="system">no</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="setMode" name="yes"/>
+					<ARC to="create" name="no"/>
+				</ARCS>
+			</NODE>
+			<NODE name="setMode" type="Selection">
+				<DESCRIPTION>select copy mode</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">REFRESH</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="drop" name="REFRESH"/>
+					<ARC to="copyTable" name="INCREMENTAL"/>
+				</ARCS>
+			</NODE>
+			<NODE name="drop" type="DropHBaseTable">
+				<DESCRIPTION>drop hbase target table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'hbaseTable' : 'targetTable',
+						'cluster' : 'targetCluster'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="create"/>
+				</ARCS>
+			</NODE>
+			<NODE name="create" type="CreateHBaseTable">
+				<DESCRIPTION>create hbase table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="tableColumnsParamName" type="string" managedBy="system" required="true">hTableColumns</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'hbaseTable' : 'targetTable',
+						'cluster' : 'targetCluster'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="copyTable"/>
+				</ARCS>
+			</NODE>
+			<NODE name="copyTable" type="SubmitHadoopJob">
+				<DESCRIPTION>Copy table Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">copytable</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'cluster' : 'sourceCluster',
+						'targetCluster' : 'targetCluster',
+						'new.name' : 'targetTable',
+						'hbase.mapreduce.inputtable' : 'sourceTable',
+						'peer.adr' : 'peer.adr'
+						}
+					</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/exportHBaseTable.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/exportHBaseTable.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/exportHBaseTable.meta.xml	(revision 60998)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="253809c3-a61b-4c06-b17b-89684f942864_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="inference">Export InfoSpace</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION>Export infospace as json over HDFS</METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Inference</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="452dc13e-0544-478b-8b23-bc3f90cc7531_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="export infospace"/>
+			<WORKFLOW id="cf476a33-ba1f-413a-80e0-c7d194faf793_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="import infospace"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-preprocessing.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-preprocessing.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-preprocessing.xml	(revision 60998)
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="4801c33c-66ca-4ab6-af64-aa812194ec66_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>IIS preprocessing</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>IIS</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="start" isStart="true">
+				<DESCRIPTION>start</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="prepareActionSets"/>
+					<ARC to="prepareParameters"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareActionSets" type="PrepareActionSets">
+				<DESCRIPTION>prepare action sets</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="sets" managedBy="system">
+						[
+						{
+						'set' : 'iis-referenced-projects-preprocessing',
+						'jobProperty' : 'export_action_set_id_document_referencedProjects',
+						'enablingProperty' : 'active_referencedProjects_export',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-referenced-datasets-preprocessing',
+						'jobProperty' : 'export_action_set_id_document_referencedDatasets',
+						'enablingProperty' : 'active_referencedDatasets_export',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-wos-entities',
+						'jobProperty' : 'export_action_set_id_entity_wos',
+						'enablingProperty' : 'active_entity_wos_export',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-dataset-entities-preprocessing',
+						'jobProperty' : 'export_action_set_id_entity_dataset',
+						'enablingProperty' : 'active_entity_dataset_export',
+						'enabled' : 'true'
+						}
+						]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="preprocessing"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareParameters" type="PreparePreprocessParams">
+				<DESCRIPTION>prepare parameters</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="islookupLocationParam" managedBy="system">import_islookup_service_location</PARAM>
+					<PARAM required="true" type="string" name="objectStoreLocationParam" managedBy="system">import_content_object_store_location</PARAM>
+					<PARAM required="true" type="string" name="mdStoreStoreLocationParam" managedBy="system">import_mdstore_service_location</PARAM>
+					<PARAM required="true" type="string" name="mdStoreDatasetParam" managedBy="system">import_dataset_mdstore_ids_csv</PARAM>
+					<PARAM required="true" type="string" name="mdStoreWosParam" managedBy="system">import_wos_mdstore_id</PARAM>
+					<PARAM required="true" type="string" name="databaseServiceLocationParam" managedBy="system">import_database_service_location</PARAM>
+					<PARAM required="true" type="string" name="dataciteObjectStoreParam" managedBy="system">import_content_datacite_objectstores_csv</PARAM>
+					<PARAM required="true" type="string" name="wosObjectStorePlaintextParam" managedBy="system">import_content_wos_plaintext_objectstores_csv</PARAM>
+					<PARAM required="true" type="string" name="zkQuorumParam" managedBy="system">export_action_hbase_remote_zookeeper_quorum</PARAM>
+					<PARAM required="true" type="string" name="zkPortParam" managedBy="system">export_action_hbase_remote_zookeeper_clientport</PARAM>
+					<PARAM required="true" type="string" name="oozieWfAppPathParam" managedBy="system">oozie.wf.application.path</PARAM>
+					<PARAM required="true" type="string" name="oozieWfAppPath" managedBy="user">/tmp/integration/apps/preprocessing</PARAM>
+					<PARAM required="true" type="string" name="clusterName" managedBy="user" function="validValues(['IIS','DM'])">DM</PARAM>
+					<PARAM required="false" type="string" name="objectStoreBlacklistCSV" managedBy="user"></PARAM>
+					<PARAM required="true" type="string" name="importProjectConceptsContextIdParam" managedBy="system">import_project_concepts_context_id</PARAM>
+					<PARAM required="true" type="string" name="importProjectConceptsContextId" managedBy="user">fet-fp7</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="preprocessing"/>
+				</ARCS>
+			</NODE>
+			<NODE name="preprocessing" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>IIS preprocessing</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">iisPreprocessingJob</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'cluster' : 'cluster',
+						'nameNode' : 'nameNode',
+						'jobTracker' : 'jobTracker',
+						'oozie.wf.application.path' : 'oozie.wf.application.path',
+						'import_content_object_store_location' : 'import_content_object_store_location',
+						'import_mdstore_service_location' : 'import_mdstore_service_location',
+						'import_islookup_service_location' : 'import_islookup_service_location',
+						'import_project_concepts_context_id' : 'import_project_concepts_context_id',
+						'import_dataset_mdstore_ids_csv' : 'import_dataset_mdstore_ids_csv',
+						'import_wos_mdstore_id' : 'import_wos_mdstore_id',
+						'import_database_service_location' : 'import_database_service_location',
+						'import_content_datacite_objectstores_csv' : 'import_content_datacite_objectstores_csv',
+						'import_content_wos_plaintext_objectstores_csv' : 'import_content_wos_plaintext_objectstores_csv',
+						'export_action_hbase_remote_zookeeper_quorum' : 'export_action_hbase_remote_zookeeper_quorum',
+						'export_action_hbase_remote_zookeeper_clientport' : 'export_action_hbase_remote_zookeeper_clientport',
+						'export_action_set_id_document_referencedProjects' : 'export_action_set_id_document_referencedProjects',
+						'export_action_set_id_document_referencedDatasets' : 'export_action_set_id_document_referencedDatasets',
+						'export_action_set_id_entity_wos' : 'export_action_set_id_entity_wos',
+						'export_action_set_id_entity_dataset' : 'export_action_set_id_entity_dataset',
+						'output_remote_location' : 'actionManagerBasePath'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'export_action_hbase_table_name' : 'hbase.actions.table',
+						'import_database_dbname' : 'dnet.openaire.db.name'
+						}
+					</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">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/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-main.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-main.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-main.xml	(revision 60998)
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="dc19a8d1-93a8-4ffb-9fed-950f4156eedb_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>IIS main workflow</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>IIS</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="start" isStart="true">
+				<DESCRIPTION>start</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="prepareActionSets"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareActionSets" type="PrepareActionSets">
+				<DESCRIPTION>prepare action sets</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="sets" managedBy="system">
+						[
+						{
+						'set' : 'iis-extracted-metadata',
+						'jobProperty' : 'export_action_set_id_document_extractedMetadata',
+						'enablingProperty' : 'active_metadataextraction_export',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-referenced-projects-main',
+						'jobProperty' : 'export_action_set_id_document_referencedProjects',
+						'enablingProperty' : 'active_referenceextraction_project',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-referenced-datasets-main',
+						'jobProperty' : 'export_action_set_id_document_referencedDatasets',
+						'enablingProperty' : 'active_referenceextraction_dataset',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-dataset-entities-main',
+						'jobProperty' : 'export_action_set_id_entity_dataset',
+						'enablingProperty' : 'active_referenceextraction_dataset',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-researchinitiative',
+						'jobProperty' : 'export_action_set_id_document_research_initiative',
+						'enablingProperty' :
+						'active_referenceextraction_researchinitiative',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-document-similarities',
+						'jobProperty' : 'export_action_set_id_document_similarities_standard',
+						'enablingProperty' : 'active_documentssimilarity',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-document-statistics',
+						'jobProperty' : 'export_action_set_id_document_statistics',
+						'enablingProperty' : 'active_statistics',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-document-classes',
+						'jobProperty' : 'export_action_set_id_document_classes',
+						'enablingProperty' : 'active_documentsclassification',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-document-citations',
+						'jobProperty' : 'export_action_set_id_document_referencedDocuments',
+						'enablingProperty' : 'active_citationmatching',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-referenceextraction-pdb',
+						'jobProperty' : 'export_action_set_id_document_pdb',
+						'enablingProperty' : 'active_referenceextraction_pdb',
+						'enabled' : 'false'
+						}
+						]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="prepareParameters"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareParameters" type="PrepareIisMainParams">
+				<DESCRIPTION>prepare parameters</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="islookupLocationParam" managedBy="system">import_islookup_service_location</PARAM>
+					<PARAM required="true" type="string" name="objectStoreParam" managedBy="system">import_content_objectstores_csv</PARAM>
+					<PARAM required="true" type="string" name="objectStoreLocationParam" managedBy="system">import_content_object_store_location</PARAM>
+					<PARAM required="true" type="string" name="mdStoreStoreLocationParam" managedBy="system">import_mdstore_service_location</PARAM>
+					<PARAM required="true" type="string" name="mdStoreDatasetParam" managedBy="system">import_dataset_mdstore_ids_csv</PARAM>
+					<PARAM required="true" type="string" name="zkQuorumParam" managedBy="system">export_action_hbase_remote_zookeeper_quorum</PARAM>
+					<PARAM required="true" type="string" name="zkPortParam" managedBy="system">export_action_hbase_remote_zookeeper_clientport</PARAM>
+					<PARAM required="true" type="string" name="oozieWfAppPathParam" managedBy="system">oozie.wf.application.path</PARAM>
+
+					<PARAM required="true" type="string" name="oozieWfAppPath" managedBy="user">/tmp/integration/apps/main</PARAM>
+					<PARAM required="true" type="string" name="clusterName" managedBy="user" function="validValues(['IIS','DM'])">IIS</PARAM>
+
+					<PARAM required="false" type="string" name="objectStoreBlacklistCSV" managedBy="user"></PARAM>
+
+					<PARAM required="true" type="string" name="importProjectConceptsContextIdParam" managedBy="system">import_project_concepts_context_id</PARAM>
+					<PARAM required="true" type="string" name="importProjectConceptsContextId" managedBy="user">fet-fp7</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="main"/>
+				</ARCS>
+			</NODE>
+			<NODE name="main" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>IIS main</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">iisMainJob</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'cluster' : 'cluster',
+						'nameNode' : 'nameNode',
+						'jobTracker' : 'jobTracker',
+						'oozie.wf.application.path' : 'oozie.wf.application.path',
+						'active_metadataextraction_export' : 'active_metadataextraction_export',
+						'active_referenceextraction_project' : 'active_referenceextraction_project',
+						'active_referenceextraction_dataset' : 'active_referenceextraction_dataset',
+						'active_referenceextraction_researchinitiative' : 'active_referenceextraction_researchinitiative',
+						'active_documentsclassification' : 'active_documentsclassification',
+						'active_documentssimilarity' : 'active_documentssimilarity',
+						'active_citationmatching' : 'active_citationmatching',
+						'active_statistics' : 'active_statistics',
+						'active_referenceextraction_pdb' : 'active_referenceextraction_pdb',
+						'import_content_objectstores_csv' : 'import_content_objectstores_csv',
+						'import_content_object_store_location' : 'import_content_object_store_location',
+						'import_mdstore_service_location' : 'import_mdstore_service_location',
+						'import_islookup_service_location' : 'import_islookup_service_location',
+						'import_project_concepts_context_id' : 'import_project_concepts_context_id',
+						'import_dataset_mdstore_ids_csv' : 'import_dataset_mdstore_ids_csv',
+						'export_action_hbase_remote_zookeeper_quorum' : 'export_action_hbase_remote_zookeeper_quorum',
+						'export_action_hbase_remote_zookeeper_clientport' : 'export_action_hbase_remote_zookeeper_clientport',
+						'export_action_set_id_document_extractedMetadata' : 'export_action_set_id_document_extractedMetadata',
+						'export_action_set_id_document_referencedDatasets' : 'export_action_set_id_document_referencedDatasets',
+						'export_action_set_id_document_referencedProjects' : 'export_action_set_id_document_referencedProjects',
+						'export_action_set_id_document_research_initiative' : 'export_action_set_id_document_research_initiative',
+						'export_action_set_id_document_similarities_standard' : 'export_action_set_id_document_similarities_standard',
+						'export_action_set_id_document_statistics' : 'export_action_set_id_document_statistics',
+						'export_action_set_id_document_classes' : 'export_action_set_id_document_classes',
+						'export_action_set_id_document_referencedDocuments' : 'export_action_set_id_document_referencedDocuments',
+						'export_action_set_id_entity_dataset' : 'export_action_set_id_entity_dataset',
+						'export_action_set_id_document_pdb' : 'export_action_set_id_document_pdb',
+						'output_remote_location' : 'actionManagerBasePath'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'export_action_hbase_table_name' : 'hbase.actions.table'
+						}
+					</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">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/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/copyTable.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/copyTable.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/copyTable.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="10623b8a-5f81-4b2e-9226-5a78fb57933e_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="inference">Copy InfoSpace</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Inference</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="07d88cf9-87ee-4585-b226-eb8917a60bb6_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="copy infospace"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/is/update-repositories.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/is/update-repositories.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/is/update-repositories.xml	(revision 60998)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="83bbb3a4-b0a3-4f60-bf39-c518f6698eda_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>Update datasource profiles</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>UpdateIS</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="auto">
+			<NODE name="updateRepoProfiles" type="UpdateRepositoryProfiles" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/is/update-profiles.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/is/update-profiles.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/is/update-profiles.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="abf36bda-c60e-4163-99ef-d700e6a0ca76_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="update_profiles">Update profiles</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Consistency</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="83bbb3a4-b0a3-4f60-bf39-c518f6698eda_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Update Repo Profiles"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="true">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis.meta.xml	(revision 60998)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="2099370e-2bb7-4a18-a0e4-f2ee69ff00a8_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="inference">Inference</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Inference</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="4801c33c-66ca-4ab6-af64-aa812194ec66_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="IIS Preprocessing">
+				<WORKFLOW id="4801c33c-66ca-4ab6-af64-aa812194ec67_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="IIS Preprocessing V2"/>
+				<WORKFLOW id="dc19a8d1-93a8-4ffb-9fed-950f4156eedb_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="IIS Main"/>
+				<WORKFLOW id="dc19a8d1-93a8-4ffb-9fed-950f4156eedc_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="IIS Main V2"/>
+			</WORKFLOW>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/apply-blacklist.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/apply-blacklist.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dm/apply-blacklist.xml	(revision 60998)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="e454271b-469a-4942-99d4-3623043897d9_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-16T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Apply relationship blacklist</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="resolveBlacklist" type="ResolveBlacklistJob" isStart="true">
+				<DESCRIPTION>Resolve the identifiers in the blacklist</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="blacklistParamName" type="string" managedBy="system" required="true">blacklist</PARAM>
+					<PARAM name="clusterName" type="string" managedBy="system" required="true">DM</PARAM>
+					<PARAM name="tableName" type="string" managedBy="user" required="true">db_openaireplus_services</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="done" to="success"/>
+					<ARC to="applyBlacklist"/>
+				</ARCS>
+			</NODE>
+			<NODE name="applyBlacklist" type="ApplyBlacklistJob">
+				<DESCRIPTION>Generates and apply the HBASE DELETE statements.</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="blacklistParamName" type="string" managedBy="system" required="true">blacklist</PARAM>
+					<PARAM managedBy="system" name="clusterName" required="true" type="string">DM</PARAM>
+					<PARAM managedBy="user" name="tableName" required="true" type="string">db_openaireplus_test</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-scholexplorer.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-scholexplorer.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-scholexplorer.xml	(revision 60998)
@@ -0,0 +1,83 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="e03f256e-1e4d-4b3d-9c07-91faf5d25207_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2019-09-26T16:09:43+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Import ScholExplorer Links and entities</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/scholixDumpExport_2019_09_26</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' : 'scholexplorer-dump',
+                        'jobProperty' : 'export_action_set_scholexplorer_dump',
+                        'enablingProperty' : 'active_scholexplorer_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">importScholexplorerJob</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_20191022_141741_170</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2019-10-22T14:32:03+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/garbageActionSets.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/garbageActionSets.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/garbageActionSets.xml	(revision 60998)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="1c22f1f3-f860-4304-8161-5f31d5d26c81_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>Garbase Action Sets</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>GARBAGE_ACTION_SETS</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="garbageSets" type="GarbageSets" isStart="true">
+				<DESCRIPTION>Garbage actions</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="cleanProfiles"/>
+				</ARCS>
+			</NODE>
+			<NODE name="cleanProfiles" type="CleanActionSetsProfile">
+				<DESCRIPTION>Clean Set profiles</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-doiboost-beta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-doiboost-beta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-doiboost-beta.xml	(revision 60998)
@@ -0,0 +1,188 @@
+<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="2021-04-19T13:28:18+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="setMAGDumpPath" type="SetEnvParameter">
+                <DESCRIPTION>set the input path for MAG</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">MAGDumpPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/doiboost/mag-2020-11-09</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setInputPathMAG" type="SetEnvParameter">
+                <DESCRIPTION>set the input path for MAG</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">inputPathMAG</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/doiboost/input/mag</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setInputPathCrossref" type="SetEnvParameter">
+                <DESCRIPTION>set the input path for Crossref</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">inputPathCrossref</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/doiboost/input/crossref</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setCrossrefTimestamp" type="SetEnvParameter">
+                <DESCRIPTION>set the timestamp for the Crossref incremental harvesting</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">crossrefTimestamp</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="false" type="string">1607614921429</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setInputPathUnpayWall" type="SetEnvParameter">
+                <DESCRIPTION>set the input path for UnpayWall</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">inputPathUnpayWall</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/doiboost/input/unpayWall</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setInputPathOrcid" type="SetEnvParameter">
+                <DESCRIPTION>set the input path for ORCID</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">inputPathOrcid</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/orcid_activities_2020/last_orcid_dataset</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setWorkingPathOrcid" type="SetEnvParameter">
+                <DESCRIPTION>set the working path for ORCID</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">workingPathOrcid</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/doiboost/input/orcid</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setHostedByMapPath" type="SetEnvParameter">
+                <DESCRIPTION>set the hostedBy map path</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">hostedByMapPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/doiboost/input/hostedBy/hbMap.gz</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setResumeFrom" type="SetEnvParameter">
+                <DESCRIPTION>set the oozie workflow name from which the execution will be resumed</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">resumeFrom</PARAM>
+                    <PARAM function="validValues(['ConvertCrossrefToOAF','ResetMagWorkingPath', 'PreprocessMag', 'PreprocessUW', 'PreprocessORCID', 'CreateDOIBoost', 'GenerateActionSet'])" managedBy="user" name="parameterValue" required="false" type="string">PreprocessORCID</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="waitConfig">
+                <DESCRIPTION>wait configurations</DESCRIPTION>
+                <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="updateDOIBoost"/>
+                </ARCS>
+            </NODE>
+            <NODE name="updateDOIBoost" type="SubmitHadoopJob">
+                <DESCRIPTION>prepare a new version of DOIBoost</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="hadoopJob" required="true" type="string">executeOozieJob</PARAM>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">IIS</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'crossrefTimestamp' : 'crossrefTimestamp',
+                        'hostedByMapPath' : 'hostedByMapPath',
+                        'MAGDumpPath' :'MAGDumpPath',
+                        'inputPathMAG' : 'inputPathMAG',
+                        'inputPathCrossref' : 'inputPathCrossref',
+                        'inputPathUnpayWall' : 'inputPathUnpayWall',
+                        'inputPathOrcid' : 'inputPathOrcid',
+                        'outputPath' : 'outputPath',
+                        'workingPathOrcid':'workingPathOrcid',
+                        'resumeFrom' : 'resumeFrom'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="params" required="true" type="string">
+                        {
+                        'oozie.wf.application.path' : ' /lib/dnet/STABLE_IDS/actionmanager/doiboost/oozie_app',
+                        'workingPath' : '/data/doiboost/process',
+                        'sparkExecutorIntersectionMemory' : '9G',
+                        'sparkExecutorMemory' : '6G',
+                        'esServer' : 'ip-90-147-167-25.ct1.garrservices.it',
+                        'esIndex' : 'crossref'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="oozieReportActionsCsv" required="true" type="string">build-report</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_20210416_122501_878</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2021-04-16T13:58:50+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/db/update-class-scheme.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/db/update-class-scheme.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/db/update-class-scheme.xml	(revision 60998)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="b1fbc8d0-071e-423b-9dec-d0bf396d8614_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>Update class and scheme tables</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>UpdateDB</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="auto">
+			<NODE name="updateVocabularyEntries" type="UpdateVocabularyEntries" isStart="true">
+				<DESCRIPTION>Update vocabulary entries</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="xsltClasspath" managedBy="system">/eu/dnetlib/msro/openaireplus/workflows/db/vocEntry_2_db.xsl</PARAM>
+					<PARAM required="true" type="string" name="db" managedBy="user" category="LOCAL_DATABASE">dnet_openaireplus</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-ror-beta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-ror-beta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-ror-beta.xml	(revision 60998)
@@ -0,0 +1,89 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="7cf3cfed-fbfb-46ca-b4da-aa43beb58f19_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2021-05-06T09:48:33+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Update ROR actionset</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Import Infospace</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="setInputPath" type="SetEnvParameter">
+                <DESCRIPTION>Set the base path containing the no_doi_dataset folder</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">inputPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/ror/ror-data-2021-04-06.json</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' : 'ror',
+                        'jobProperty' : 'export_action_set_ror',
+                        'enablingProperty' : 'active_ror',
+                        '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="rorUpdate"/>
+                </ARCS>
+            </NODE>
+            <NODE name="rorUpdate" type="SubmitHadoopJob">
+                <DESCRIPTION>update the ROR actionset</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="hadoopJob" required="true" type="string">executeOozieJob</PARAM>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">IIS</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'rorJsonInputPath' : 'inputPath',
+                        'rorActionSetPath': 'outputPath'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="params" required="true" type="string">
+                        {
+                        'oozie.wf.application.path' : '/lib/dnet/STABLE_IDS/actionmanager/ror/oozie_app',
+                        'workingDir': '/tmp/import_ror_actionset'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="oozieReportActionsCsv" required="true" type="string">build-report</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_20210506_135405_174</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2021-05-06T13:55:05+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/clean.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/clean.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/clean.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="9dfcb903-524b-44fa-916a-8fd3e925bbee_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="clean">Clean Profiles</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>Garbage Collection</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="2162470b-b30f-42e7-a76b-a5ec9382eebc_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Clean profiles"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="true">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-unidentifiedProjects.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-unidentifiedProjects.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-unidentifiedProjects.sql	(revision 60998)
@@ -0,0 +1,5 @@
+INSERT INTO projects (id, code, title, collectedfrom, provenanceactionclass) VALUES ('wt__________::unidentified', 'unidentified', 'unidentified', 'openaire____::wellcometrust', 'sysimport:crosswalk:entityregistry');
+INSERT INTO project_fundingpath (funding, project) VALUES ('wt__________::WT', 'wt__________::unidentified');
+
+INSERT INTO projects (id, code, title, collectedfrom, provenanceactionclass) VALUES ('miur________::unidentified', 'unidentified', 'unidentified', 'openaire____::miur', 'sysimport:crosswalk:entityregistry');
+INSERT INTO project_fundingpath (funding, project) VALUES ('miur________::MIUR', 'miur________::unidentified');
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-h2020-classification-beta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-h2020-classification-beta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-h2020-classification-beta.xml	(revision 60998)
@@ -0,0 +1,84 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="4bb067d5-a2f2-42b9-844c-4e1d8d71b80f_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2020-12-01T14:33:42+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Import H2020classification</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Import H2020classification</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="prepareActionSets" type="PrepareActionSets">
+                <DESCRIPTION>prepare action sets</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="sets" required="true" type="string">
+                        [
+                        {
+                        'set' : 'h2020classification',
+                        'jobProperty' : 'export_action_set_h2020classification',
+                        'enablingProperty' : 'active_h2020classification',
+                        '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="h2020ClassificationUpdate"/>
+                </ARCS>
+            </NODE>
+            <NODE name="h2020ClassificationUpdate" type="SubmitHadoopJob">
+                <DESCRIPTION>prepare updates for the H2020 Classification</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="hadoopJob" required="true" type="string">executeOozieJob</PARAM>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">IIS</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'outputPath': 'outputPath'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="params" required="true" type="string">
+                        {
+                        'oozie.wf.application.path' : ' /lib/dnet/BETA/actionmanager/project/oozie_app',
+                        'workingDir' : '/tmp/beta_provision/working_dir/h2020classification',
+                        'projectFileURL' : 'https://cordis.europa.eu/data/cordis-h2020projects.csv',
+                        'programmeFileURL' : 'http://cordis.europa.eu/data/reference/cordisref-H2020programmes.csv',
+                        'topicFileURL':'http://cordis.europa.eu/data/reference/cordisref-H2020topics.xlsx',
+                        'postgresURL':'jdbc:postgresql://beta.services.openaire.eu:5432/dnet_openaireplus',
+                        'postgresUser':'dnet',
+                        'postgresPassword':'dnetPwd'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="oozieReportActionsCsv" required="true" type="string">build-report</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_20201005_124642_515</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2020-10-05T12:57:35+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-orcid-nodoi-beta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-orcid-nodoi-beta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-orcid-nodoi-beta.xml	(revision 60998)
@@ -0,0 +1,90 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="7cf3cfed-fbfb-46ca-b4da-aa43beb58f18_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2021-04-22T09:03:40+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Update ORCID (no DOI) actionset</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Import Infospace</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="setInputPath" type="SetEnvParameter">
+                <DESCRIPTION>Set the base path containing the no_doi_dataset folder</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">inputPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/orcid_activities_2020</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' : 'orcidworks-no-doi',
+                        'jobProperty' : 'export_action_set_orcidworks_no_doi',
+                        'enablingProperty' : 'active_orcidworks_no_doi',
+                        '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="orcidNoDoiUpdate"/>
+                </ARCS>
+            </NODE>
+            <NODE name="orcidNoDoiUpdate" type="SubmitHadoopJob">
+                <DESCRIPTION>prepare updates for the Orcid No Doi</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="hadoopJob" required="true" type="string">executeOozieJob</PARAM>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">IIS</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'workingPath' : 'inputPath',
+                        'outputPath': 'outputPath'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="params" required="true" type="string">
+                        {
+                        'oozie.wf.application.path' : '/lib/dnet/STABLE_IDS/actionmanager/orcidnodoi_actionset/oozie_app',
+                        'spark2GenNoDoiDatasetMaxExecutors' : '200',
+                        'spark2GenNoDoiDatasetExecutorMemory' : '2G'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="oozieReportActionsCsv" required="true" type="string">build-report</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_20210505_073553_347</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2021-05-05T07:43:23+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_canadian_funder.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_canadian_funder.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_canadian_funder.sql	(revision 60998)
@@ -0,0 +1,55 @@
+INSERT INTO dsm_datasources (id, officialname, namespaceprefix, typology)
+VALUES
+    ('openaire____::nserc', 'Natural Sciences and Engineering Research Council of Canada', 'nserc_______', 'entityregistry::projects'),
+    ('openaire____::sshrc', 'Social Sciences and Humanities Research Council', 'sshrc_______', 'entityregistry::projects'),
+    ('openaire____::cihr', 'Canadian Institutes of Health Research', 'cihr________','entityregistry::projects');
+
+INSERT INTO dsm_organizations (id, legalshortname,legalname)
+VALUES
+    ('nserc_______::NSERC','NSERC','Natural Sciences and Engineering Research Council of Canada'),
+    ('sshrc_______::SSHRC','SSHRC','Social Sciences and Humanities Research Council'),
+    ('cihr________::CIHR','CIHR','Canadian Institutes of Health Research');
+
+INSERT INTO fundingpaths (id,path,funder,jurisdiction)
+VALUES
+    ('nserc_______::NSERC','<fundingtree>
+                    <funder>
+                        <id>nserc_______::NSERC</id>
+                        <shortname>NSERC</shortname>
+                        <name>Natural Sciences and Engineering Research Council of Canada</name>
+                        <originalname>Natural Sciences and Engineering Research Council of Canada</originalname>
+                        <jurisdiction>CA</jurisdiction>
+                    </funder>
+                </fundingtree>', 'nserc_______::NSERC','CA'),
+    ('sshrc_______::SSHRC','<fundingtree>
+                    <funder>
+                        <id>sshrc_______::SSHRC</id>
+                        <shortname>SSHRC</shortname>
+                        <name>Social Sciences and Humanities Research Council</name>
+                        <originalname>Social Sciences and Humanities Research Council</originalname>
+                        <jurisdiction>CA</jurisdiction>
+                    </funder>
+                </fundingtree>', 'sshrc_______::SSHRC','CA'),
+    ('cihr________::CIHR','<fundingtree>
+                    <funder>
+                        <id>cihr________::CIHR</id>
+                        <shortname>CIHR</shortname>
+                        <name>Canadian Institutes of Health Research</name>
+                        <originalname>Canadian Institutes of Health Research</originalname>
+                        <jurisdiction>CA</jurisdiction>
+                    </funder>
+                </fundingtree>', 'cihr________::CIHR','CA');
+
+INSERT INTO projects (id, code, title, collectedfrom, provenanceactionclass)
+VALUES
+    ('nserc_______::unidentified', 'unidentified', 'unidentified', 'openaire__::nserc', 'sysimport:crosswalk:entityregistry'),
+    ('sshrc_______::unidentified', 'unidentified', 'unidentified', 'openaire__::sshrc', 'sysimport:crosswalk:entityregistry'),
+    ('cihr________::unidentified', 'unidentified', 'unidentified', 'openaire__::cihr', 'sysimport:crosswalk:entityregistry');
+
+INSERT INTO project_fundingpath (funding, project)
+VALUES
+    ('nserc_______::NSERC', 'nserc_______::unidentified'),
+    ('sshrc_______::SSHRC', 'sshrc_______::unidentified'),
+    ('cihr________::CIHR', 'cihr________::unidentified');
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-doiboost-prod.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-doiboost-prod.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-doiboost-prod.xml	(revision 60998)
@@ -0,0 +1,153 @@
+<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="2021-05-07T13:09:35+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="setInputPathMAG" type="SetEnvParameter">
+                <DESCRIPTION>set the input path for MAG</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">inputPathMAG</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/doiboost/input/mag</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setInputPathCrossref" type="SetEnvParameter">
+                <DESCRIPTION>set the input path for Crossref</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">inputPathCrossref</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/doiboost/input/crossref</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setInputPathUnpayWall" type="SetEnvParameter">
+                <DESCRIPTION>set the input path for UnpayWall</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">inputPathUnpayWall</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/doiboost/input/unpayWall</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setWorkingPathOrcid" type="SetEnvParameter">
+                <DESCRIPTION>set the working path for ORCID</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">workingPathOrcid</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/doiboost/input/orcid</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setHostedByMapPath" type="SetEnvParameter">
+                <DESCRIPTION>set the hostedBy map path</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">hostedByMapPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/doiboost/input/hostedBy/hbMap.gz</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setResumeFrom" type="SetEnvParameter">
+                <DESCRIPTION>set the oozie workflow name from which the execution will be resumed</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">resumeFrom</PARAM>
+                    <PARAM function="validValues(['ConvertCrossrefToOAF','PreprocessMag','PreprocessUW', 'ProcessORCID', 'CreateDOIBoost', 'GenerateActionSet'])" managedBy="user" name="parameterValue" required="false" type="string">ConvertCrossrefToOAF</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="waitConfig"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="waitConfig">
+                <DESCRIPTION>wait configurations</DESCRIPTION>
+                <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="updateDOIBoost"/>
+                </ARCS>
+            </NODE>
+            <NODE name="updateDOIBoost" type="SubmitHadoopJob">
+                <DESCRIPTION>prepare a new version of DOIBoost</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="hadoopJob" required="true" type="string">executeOozieJob</PARAM>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">IIS</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'hostedByMapPath' : 'hostedByMapPath',
+                        'inputPathMAG' : 'inputPathMAG',
+                        'inputPathCrossref' : 'inputPathCrossref',
+                        'inputPathUnpayWall' : 'inputPathUnpayWall',
+                        'outputPath' : 'outputPath',
+                        'workingPathOrcid':'workingPathOrcid',
+                        'resumeFrom' : 'resumeFrom'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="params" required="true" type="string">
+                        {
+                        'oozie.wf.application.path' : ' /lib/dnet/PROD/doiboost/process/oozie_app',
+                        'workingPath' : '/data/doiboost/process_p',
+                        'sparkExecutorIntersectionMemory' : '9G',
+                        'sparkExecutorMemory' : '6G'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="oozieReportActionsCsv" required="true" type="string">build-report</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_20210512_082537_192</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2021-05-12T10:19:27+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-fundingpaths.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-fundingpaths.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-fundingpaths.sql	(revision 60998)
@@ -0,0 +1,85 @@
+CREATE TABLE IF NOT EXISTS fundingpaths (
+	_dnet_resource_identifier_ CHARACTER VARYING(2048) DEFAULT 'temp_' || md5(clock_timestamp() :: TEXT) || '_' || md5(random() :: TEXT),
+	id                         CHARACTER VARYING(512) PRIMARY KEY,
+	path                       TEXT NOT NULL,
+	funder                     CHARACTER VARYING(512) REFERENCES organizations (id),
+	jurisdiction               CHARACTER VARYING(16),
+	description                CHARACTER VARYING(512),
+	optional1                  CHARACTER VARYING(255),
+	optional2                  CHARACTER VARYING(255)
+);
+
+CREATE TABLE IF NOT EXISTS project_fundingpath (
+	_dnet_resource_identifier_ CHARACTER VARYING(2048) DEFAULT 'temp_' || md5(clock_timestamp() :: TEXT) || '_' || md5(random() :: TEXT),
+	funding                    CHARACTER VARYING(255) NOT NULL REFERENCES fundingpaths (id),
+	project                    CHARACTER VARYING(255) NOT NULL REFERENCES projects (id),
+	startdate                  DATE,
+	enddate                    DATE,
+	semanticclass              CHARACTER VARYING(255) REFERENCES class (code),
+	semanticscheme             CHARACTER VARYING(255) REFERENCES scheme (code),
+	optional1                  CHARACTER VARYING(255),
+	optional2                  CHARACTER VARYING(255),
+	PRIMARY KEY (funding, project)
+);
+
+UPDATE datasources
+SET namespaceprefix = 'wt__________'
+WHERE id = 'openaire____::wellcometrust';
+
+-- European Commission FP7
+
+delete from project_fundingpath where funding ='ec__________::EC::FP7::UNKNOWN::UNKNOWN';
+delete from fundingpaths where id = 'ec__________::EC::FP7::UNKNOWN::UNKNOWN';
+
+-- FCT
+-- copy the good ones from the other db
+\copy  (select * from project_fundingpath where project like 'fct\_\_\_\_\_\_\_\_\_%') TO '/tmp/fct_project_fundingpath-prod.sql' CSV;
+-- do the following on the bad ones
+delete from project_fundingpath where project like 'fct\_\_\_\_\_\_\_\_\_%';
+
+CREATE TEMP TABLE fct (
+_dnet_resource_identifier_ VARCHAR(2048),
+funding varchar(255),
+project varchar(255),
+startdate date,
+enddate date,
+semanticclass varchar(255),
+semanticscheme varchar(255),
+optional1 varchar(255),
+optional2 varchar(255)
+);
+
+ \copy fct from '/tmp/fct_project_fundingpath-prod.sql' CSV;
+ INSERT INTO project_fundingpath select * from fct;
+ -- fct is a temp table and will be dropped when you log out
+
+-- SFI
+delete from project_fundingpath where funding = 'sfi_________::SFI::SFI US Ireland R&amp;D Partnership - Planning Grant';
+delete from project_fundingpath where funding ='sfi_________::SFI::SFI Stokes Professorship &amp; Lectureship Programme';
+delete from project_fundingpath where funding ='sfi_________::SFI::SFI US Ireland R&amp;D Partnership';
+delete from project_fundingpath where funding = 'sfi_________::SFI::China / Ireland Science &amp; Technology Collaboration Research Fund�';
+delete from fundingpaths  where id = 'sfi_________::SFI::China / Ireland Science &amp; Technology Collaboration Research Fund�';
+delete from fundingpaths  where id ='sfi_________::SFI::SFI US Ireland R&amp;D Partnership';
+delete from fundingpaths  where id = 'sfi_________::SFI::SFI Stokes Professorship &amp; Lectureship Programme';
+delete from fundingpaths  where id = 'sfi_________::SFI::SFI US Ireland R&amp;D Partnership - Planning Grant';
+select count(distinct project) from project_fundingpath where project like 'sfi%';
+select count(distinct id) from projects where id like 'sfi%';
+
+-- WT
+delete from project_fundingpath where project like 'wt%';
+delete from fundingpaths where id like 'wt%';
+
+-- SNSF
+delete from project_fundingpath where project like 'snsf%';
+delete from fundingpaths where id like 'snsf%';
+
+-- ARC
+delete from project_fundingpath where project like 'arc%';
+delete from fundingpaths where id like 'arc%';
+
+-- RCUK
+delete from project_fundingpath where project like 'rcuk%';
+delete from fundingpaths where id like 'rcuk%';
+
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-datacite-beta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-datacite-beta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/import/import-datacite-beta.xml	(revision 60998)
@@ -0,0 +1,89 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="50593ba8-bb4b-413a-b852-b2c7e4a56093_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2021-04-21T09:11:15+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Import Datacite ActionSet</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Import InfoSpace</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="setDatacitePath" type="SetEnvParameter">
+                <DESCRIPTION>set the input path for Datacite content</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">datacitePath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/data/datacite/datacite_oaf</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' : 'datacite',
+                        'jobProperty' : 'export_action_set_datacite',
+                        'enablingProperty' : 'active_datacite',
+                        '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="generateDataciteActionSet"/>
+                </ARCS>
+            </NODE>
+            <NODE name="generateDataciteActionSet" type="SubmitHadoopJob">
+                <DESCRIPTION>prepare a new version of Datacite ActionSet</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="hadoopJob" required="true" type="string">executeOozieJob</PARAM>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">IIS</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'sourcePath' : 'datacitePath',
+                        'outputPath' : 'outputPath'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="params" required="true" type="string">
+                        {
+                        'oozie.wf.application.path' : '/lib/dnet/STABLE_IDS/actionmanager/datacite_actionset/oozie_app',
+                        'sparkExecutorMemory' : '7G'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="system" name="oozieReportActionsCsv" required="true" type="string">build-report</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_20210421_091120_270</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2021-04-21T09:17:25+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_arc_and_ands.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_arc_and_ands.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_arc_and_ands.sql	(revision 60998)
@@ -0,0 +1,25 @@
+INSERT INTO datasources (_dnet_resource_identifier_, id, officialname, englishname, websiteurl, logourl, contactemail, latitude, longitude, timezone, namespaceprefix, collectedfrom, datasourceclass)
+VALUES ('openaire____::ands', 'openaire____::ands', 'Australian National Data Service (ANDS) - Grants Registry',
+                              'Australian National Data Service (ANDS) - Grants Registry', 'http://www.ands.org.au/index.html',
+                              'http://www.ands.org.au/assets/images/ands-full-b.png', 'contact@ands.org.au', -34.2333, 140.5667, 10.50, 'ands________',
+        'infrastruct_::openaire', 'entityregistry');
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass)
+VALUES ('api_________::ands::0', 'api_________::ands::0', 'filesystem', 'openaire____::ands', 'entityregistry', 'native');
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', 'file:///var/lib/dnet/ands', 'api_________::ands::0');
+INSERT INTO apicollections (param, original, api) VALUES ('extensions', 'xml', 'api_________::ands::0');
+INSERT INTO apicollections (param, original, api, accessparam) VALUES ('metadata_identifier_path', '/project/id', 'api_________::ands::0', FALSE);
+
+INSERT INTO datasources (_dnet_resource_identifier_, id, officialname, englishname, websiteurl, logourl, contactemail, latitude, longitude, timezone, namespaceprefix, collectedfrom, datasourceclass)
+VALUES ('openaire____::arc', 'openaire____::arc', 'Australian Research Council (ARC) - Grants Registry', 'Australian Research Council (ARC) - Grants Registry',
+                             'http://www.arc.gov.au/', 'http://www.arc.gov.au/images/screen_logo.gif', 'info@arc.gov.au', -33.9, 151.1833, 11.0, 'arc_________',
+        'infrastruct_::openaire', 'entityregistry');
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass)
+VALUES ('api_________::arc::0', 'api_________::arc::0', 'filesystem', 'openaire____::arc', 'entityregistry', 'native');
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', 'file:///var/lib/dnet/arc', 'api_________::arc::0');
+INSERT INTO apicollections (param, original, api) VALUES ('extensions', 'xml', 'api_________::arc::0');
+INSERT INTO apicollections (param, original, api, accessparam) VALUES ('metadata_identifier_path', '/project/id', 'api_________::arc::0', FALSE);
+
+UPDATE apicollections
+SET _dnet_resource_identifier_ = api || '@@' || param;
+
+insert into dsm_organizations(id, legalname, legalshortname, country, dateofcollection, _dnet_resource_identifier_, lastupdate, trust) VALUES ('arc_________::ARC', 'Australian Research Council (ARC)', 'ARC', 'AU',  '2018-06-08', 'arc_________::ARC', '2020-07-18', 0.9);
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/clean-profiles.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/clean-profiles.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/clean-profiles.xml	(revision 60998)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="2162470b-b30f-42e7-a76b-a5ec9382eebc_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>Clean profiles</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>CLEAN</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="auto">
+			<NODE name="TODO" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_DataRepository_Hadoop.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_DataRepository_Hadoop.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_DataRepository_Hadoop.xml	(revision 60998)
@@ -0,0 +1,93 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="513da605-e9b4-4150-9116-f82a34a8585g_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value="value3"/>
+        <DATE_OF_CREATION value="2019-04-03T16:44:41+02:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Aggregate Metadata Datacite format [Hadoop]</WORKFLOW_NAME>
+        <WORKFLOW_INFO>
+            <FIELD name="Action">Aggregate Metadata</FIELD>
+            <FIELD name="Consequence IS">Ingestion</FIELD>
+            <FIELD name="Datasource class">PubsRepository</FIELD>
+            <FIELD name="Content">publications</FIELD>
+        </WORKFLOW_INFO>
+        <WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="VerifyDatasource" type="VerifyDatasource">
+                <DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="expectedInterfaceTypologyPrefixes" required="false" type="string"/>
+                    <PARAM managedBy="system" name="expectedCompliancePrefixes" required="false" type="string"/>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="createMetaWf"/>
+                    <ARC name="validateDs" to="validateDs"/>
+                </ARCS>
+            </NODE>
+            <NODE name="validateDs" type="ValidateDatasource">
+                <DESCRIPTION>Validate DS</DESCRIPTION>
+                <PARAMETERS/>
+                <ARCS>
+                    <ARC to="createMetaWf"/>
+                </ARCS>
+            </NODE>
+            <NODE name="createMetaWf" type="RegisterMetaWf">
+                <DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="wfName" required="true" type="string">Aggregate Metadata Datacite format [Hadoop]
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="createDc"/>
+                    <ARC to="createOaf"/>
+                </ARCS>
+            </NODE>
+            <NODE name="createDc" type="CreateMDStoreHadoop">
+                <DESCRIPTION>Create oai_dc store</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="format" required="true" type="string">oai_datacite</PARAM>
+                    <PARAM managedBy="system" name="interpretation" required="true" type="string">native</PARAM>
+                    <PARAM managedBy="system" name="layout" required="true" type="string">store</PARAM>
+                    <PARAM managedBy="system" name="outputPrefix" required="true" type="string">harv_</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="updateMetaWf"/>
+                </ARCS>
+            </NODE>
+            <NODE name="createOaf" type="CreateMDStoreHadoop">
+                <DESCRIPTION>Create OAF store</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="format" required="true" type="string">ODF</PARAM>
+                    <PARAM managedBy="system" name="interpretation" required="true" type="string">cleaned</PARAM>
+                    <PARAM managedBy="system" name="layout" required="true" type="string">store</PARAM>
+                    <PARAM managedBy="system" name="outputPrefix" required="true" type="string">tran_</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="updateMetaWf"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="updateMetaWf" type="UpdateMetaWf">
+                <DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="beanName" required="true" type="string">metaWfPubsRepositoryHadoop</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="updateMetaWfStatus"/>
+                </ARCS>
+            </NODE>
+            <NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+                <DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+                <PARAMETERS/>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+        </CONFIGURATION>
+
+        <STATUS/>
+    </BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/garbage.actions.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/garbage.actions.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/garbage.actions.meta.xml	(revision 60998)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="397d1ab7-2db7-4255-be18-f796f783c303_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="clean_sets">Garbage Action Sets</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>Garbage Collection</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="1c22f1f3-f860-4304-8161-5f31d5d26c81_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Garbase Action Sets"/>
+			<WORKFLOW id="199ce504-6c1f-4ccd-aac2-cc47ca93fce8_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Garbase Action Sets (HDFS)"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/beta_projects_drop.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/beta_projects_drop.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/beta_projects_drop.sql	(revision 60998)
@@ -0,0 +1,28 @@
+-- disable the triggers
+ALTER TABLE projectpids DISABLE TRIGGER ALL;
+ALTER TABLE project_subject DISABLE TRIGGER ALL;
+ALTER TABLE fundingpaths DISABLE TRIGGER ALL;
+ALTER TABLE project_fundingpath DISABLE TRIGGER ALL;
+ALTER TABLE project_organization DISABLE TRIGGER ALL;
+ALTER TABLE dsm_organizations DISABLE TRIGGER ALL;
+ALTER TABLE projects DISABLE TRIGGER ALL;
+
+-- then for each funder, changing the PREFIX
+DELETE FROM projectpids where project like 'PREFIX%';
+DELETE FROM project_subject where project like 'PREFIX%';
+DELETE FROM subjects where id like 'PREFIX%';
+DELETE FROM project_fundingpath where project like 'PREFIX%';
+DELETE FROM fundingpaths where id like 'PREFIX%';
+DELETE FROM project_organization where project like 'PREFIX%';
+DELETE FROM dsm_organizations where id like 'PREFIX%';
+DELETE FROM projects where id like 'PREFIX%';
+
+-- enable the triggers
+ALTER TABLE projectpids ENABLE TRIGGER ALL;
+ALTER TABLE project_subject ENABLE TRIGGER ALL;
+ALTER TABLE subjects ENABLE TRIGGER ALL;
+ALTER TABLE fundingpaths ENABLE TRIGGER ALL;
+ALTER TABLE project_fundingpath ENABLE TRIGGER ALL;
+ALTER TABLE project_organization ENABLE TRIGGER ALL;
+ALTER TABLE dsm_organizations ENABLE TRIGGER ALL;
+ALTER TABLE projects ENABLE TRIGGER ALL;
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Repository_datacite.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Repository_datacite.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Repository_datacite.xml	(revision 60998)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="eee582d0-3f58-461e-9310-f0d2b84c886f_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2019-03-25T15:43:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Aggregate and Validate Metadata in Datacite format from Repository [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">Repository</FIELD>
+			<FIELD name="Content">results</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">pubsrepository,datarepository,softwarerepository,orprepository,entityregistry::products</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true"
+					       type="string">Aggregate and Validate Metadata in Datacite format from Repository [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDatacite"/>
+					<ARC to="createODF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDatacite" type="CreateMDStore">
+				<DESCRIPTION>Create oai_datacite native store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_datacite</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createODF" type="CreateMDStore">
+				<DESCRIPTION>Create ODF cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">ODF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfDataRepository</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/migrate-projects.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/migrate-projects.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/migrate-projects.sql	(revision 60998)
@@ -0,0 +1,144 @@
+ -- COPY PROJECTS
+ \copy (select * from projects where id like 'xxx%') TO '/home/alessia.bardi/migrate-projects/xxx/xxx_projects-beta.sql' CSV;
+ -- COPY funding paths
+ \copy (select * from fundingpaths where id like 'xxx%') TO '/home/alessia.bardi/migrate-projects/xxx/xxx_fundingpaths-beta.sql' CSV;
+ -- COPY project_fundingpath
+\copy (select * from project_fundingpath where project like 'xxx%') TO '/home/alessia.bardi/migrate-projects/xxx/xxx_project_fundingpath-beta.sql' CSV;
+-- COPY organizations
+\copy (select * from dsm_organizations where id like 'xxx%') TO '/home/alessia.bardi/migrate-projects/xxx/xxx_orgs-beta.sql' CSV;
+-- COPY participants links (project_organization)
+\copy (select * from project_organization where project like 'xxx%') TO '/home/alessia.bardi/migrate-projects/xxx/xxx_project_orgs-beta.sql' CSV;
+
+CREATE TEMP TABLE xxx_projects (
+ id varchar(255),
+ code varchar(255),
+ websiteurl varchar(255),
+ acronym varchar(255),
+ title text,
+ startdate date,
+ enddate date,
+ call_identifier varchar(255),
+ keywords text,
+ duration integer,
+ ec_sc39 boolean,
+ collectedfrom varchar(255),
+ contracttypeclass varchar(255),
+ contracttypescheme varchar(255),
+ inferred boolean,
+ deletedbyinference boolean,
+ trust double precision,
+ inferenceprovenance varchar(255),
+ optional1 varchar(255),
+ optional2 varchar(255),
+ dateofcollection date,
+ provenanceactionclass varchar(255),
+ provenanceactionscheme varchar(255),
+ _dnet_resource_identifier_ varchar(2048),
+ oa_mandate_for_publications boolean,
+ ec_article29_3 boolean,
+ jsonextrainfo text,
+ contactfullname text,
+ contactfax text,
+ contactphone text,
+ contactemail text,
+ lastupdate date,
+ summary text,
+ currency text,
+ totalcost numeric,
+ fundedamount numeric,
+ contracttypename varchar(255)
+);
+
+-- fill it
+ \copy xxx_projects from '/home/alessia.bardi/migrate-projects/xxx/xxx_projects-beta.sql' CSV;
+
+ -- use it to insert into projects
+
+ INSERT INTO projects select * from xxx_projects;
+
+CREATE TEMP TABLE xxx_fundingpaths (
+_dnet_resource_identifier_ varchar(2048),
+id varchar(512),
+ path text,
+ funder varchar(512),
+ jurisdiction varchar(16),
+ description varchar(512),
+ optional1 varchar(255),
+ optional2 varchar(255),
+ funderid varchar(255)
+);
+
+-- fill it
+ \copy xxx_fundingpaths from '/home/alessia.bardi/migrate-projects/xxx/xxx_fundingpaths-beta.sql' CSV;
+
+ -- use it to insert
+ INSERT INTO fundingpaths select * from xxx_fundingpaths;
+
+
+ CREATE TEMP TABLE xxx_project_fundingpath (
+ _dnet_resource_identifier_ varchar(2048),
+ funding varchar(255),
+ project varchar(255),
+ startdate date,
+ enddate date,
+ semanticclass varchar(255),
+ semanticscheme varchar(255),
+ optional1 varchar(255),
+ optional2 varchar(255)
+ );
+
+ -- fill it
+ \copy xxx_project_fundingpath from '/home/alessia.bardi/migrate-projects/xxx/xxx_project_fundingpath-beta.sql' CSV;
+
+ -- use it to insert
+ INSERT INTO project_fundingpath select * from xxx_project_fundingpath;
+
+ CREATE TEMP TABLE xxx_orgs (
+ id varchar(255),
+ legalshortname varchar(255),
+ legalname varchar(255),
+ websiteurl text,
+ logourl varchar(255),
+ ec_legalbody boolean,
+ ec_legalperson boolean,
+ ec_nonprofit boolean,
+ ec_researchorganization boolean,
+ ec_highereducation boolean,
+ ec_internationalorganizationeurinterests boolean,
+ ec_internationalorganization boolean,
+ ec_enterprise boolean,
+ ec_smevalidated boolean,
+ ec_nutscode boolean,
+ country varchar(255),
+ collectedfrom varchar(255),
+ optional1 varchar(255),
+ optional2 varchar(255),
+ dateofcollection date,
+ provenanceaction varchar(255),
+ _dnet_resource_identifier_ varchar(2048),
+ lastupdate date,
+ trust double precision
+ );
+
+ -- fill it
+ \copy xxx_orgs from '/home/alessia.bardi/migrate-projects/xxx/xxx_orgs-beta.sql' CSV;
+
+ -- use it to insert
+ INSERT INTO dsm_organizations select * from xxx_orgs;
+
+ CREATE TEMP TABLE xxx_project_orgs (
+ participantnumber int,
+ project varchar(255),
+ resporganization varchar(255),
+ semanticclass varchar(255),
+ trust double precision,
+ _dnet_resource_identifier_ varchar(2048),
+ contribution numeric,
+ currency text
+ );
+
+-- fill it
+ \copy xxx_project_orgs from '/home/alessia.bardi/migrate-projects/xxx/xxx_project_orgs-beta.sql' CSV;
+
+ -- use it to insert
+ INSERT INTO project_organization select * from xxx_project_orgs;
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/dataRepository_claim_ingestion.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/dataRepository_claim_ingestion.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/dataRepository_claim_ingestion.xml	(revision 60998)
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="25ba4f4c-3763-40b2-a52f-c955dcca8d8d_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2016-06-13T13:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Collect and transform claimed dataset metadata records</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">scholarcomminfra,researchgraph</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Collect and transform claimed dataset metadata records</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createNative"/>
+					<ARC to="createCleaned"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createNative" type="CreateMDStore">
+				<DESCRIPTION>Create native store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">claim</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createCleaned" type="CreateMDStore">
+				<DESCRIPTION>Create cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">ODF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">claim</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfClaimedMdRecords</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-projects-summary-amount.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-projects-summary-amount.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-projects-summary-amount.sql	(revision 60998)
@@ -0,0 +1,11 @@
+alter table projects add column summary text default null ;
+
+alter table projects add column currency text default null ;
+
+alter table projects add column totalcost numeric default null ;
+
+alter table projects add column fundedamount numeric default null ;
+
+alter table project_organization add column contribution numeric default null ;
+
+alter table project_organization add column currency text default null ;
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_org_countries.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_org_countries.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_org_countries.sql	(revision 60998)
@@ -0,0 +1,26 @@
+update dsm_organizations set country='TW' where country='Taiwan';
+
+update dsm_organizations set country='NL' where country='Netherlands';
+
+update dsm_organizations set country='NA' where country='NAM';
+
+update dsm_organizations set country='KZ' where country='KAZ';
+
+update dsm_organizations set country='IL' where country='Israel';
+
+update dsm_organizations set country='US' where country='United States';
+
+update dsm_organizations set country='DE' where country='Germany';
+
+update dsm_organizations set country='CA' where country='Canada';
+
+update dsm_organizations set country='LK' where country='LKA';
+
+update dsm_organizations set country='CD' where country ='Congo, the Democratic Republic of the';
+update dsm_organizations set country='CD' where country like 'Congo Democratic%';
+update dsm_organizations set country='CD' where country = 'Zaire';
+
+update dsm_organizations set country='FI' where country = 'Finland';
+
+update dsm_organizations set country='MX' where country = 'Mexico';
+update dsm_organizations set country='GB' where country = 'United Kingdom';
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Aggregator_dc_Ingestion.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Aggregator_dc_Ingestion.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Aggregator_dc_Ingestion.xml	(revision 60998)
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="c1209703-4c5d-419b-bfb1-7d30b59c5060_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2019-03-26T15:43:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Aggregate and Validate Metadata in Dublin Core from Aggregator [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">Aggregator</FIELD>
+			<FIELD name="Content">results</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">aggregator,pubscatalogue,infospace</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true"
+					       type="string">Aggregate and Validate Metadata in Dublin Core from Aggregator [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDc"/>
+					<ARC to="createOaf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDc" type="CreateMDStore">
+				<DESCRIPTION>Create oai_dc store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_dc</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createOaf" type="CreateMDStore">
+				<DESCRIPTION>Create OAF store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">OAF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfAggregatorPubsRepositoryIngestion</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_DataRepository_Ingestion.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_DataRepository_Ingestion.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_DataRepository_Ingestion.xml	(revision 60998)
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="6afbcdfe-1ac4-4249-ac91-9605949f022b_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-12-15T15:43:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>[DEPRECATED] Aggregate and Validate Metadata (datasets) from DataRepository [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">DataRepository</FIELD>
+			<FIELD name="Content">datasets</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">datarepository</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true"
+					       type="string">[DEPRECATED] Aggregate and Validate Metadata (datasets) from DataRepository [Ingestion]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDatacite"/>
+					<ARC to="createODF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDatacite" type="CreateMDStore">
+				<DESCRIPTION>Create oai_datacite native store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_datacite</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createODF" type="CreateMDStore">
+				<DESCRIPTION>Create ODF cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">ODF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfDataRepository</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_AggregatorDataRepository_Ingestion.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_AggregatorDataRepository_Ingestion.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/DEPRECATED_Aggregate_Metadata_from_AggregatorDataRepository_Ingestion.xml	(revision 60998)
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="d25648cb-f8e7-4b93-a0fd-073c4f05bb82_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<!-- ID on production: 3c924d16-83c1-44b0-81cd-681df42bcec4 -->
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2018-08-02T16:51:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>[DEPRECATED] Aggregate Metadata (datasets) from Aggregator::DataRepository [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">aggregator::datarepository,crissystem</FIELD>
+			<FIELD name="Content">datasets</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">aggregator::datarepository,crissystem</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">[DEPRECATED] Aggregate Metadata (datasets) from Aggregator::DataRepository [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDatacite"/>
+					<ARC to="createODF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDatacite" type="CreateMDStore">
+				<DESCRIPTION>Create oai_datacite native store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_datacite</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createODF" type="CreateMDStore">
+				<DESCRIPTION>Create ODF_datacite cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">ODF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfAggregatorDataRepository</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch.sql	(revision 60998)
@@ -0,0 +1,343 @@
+ALTER TABLE datasources
+	ADD COLUMN issn CHARACTER VARYING(20);
+ALTER TABLE datasources
+	ADD COLUMN eissn CHARACTER VARYING(20);
+ALTER TABLE datasources
+	ADD COLUMN lissn CHARACTER VARYING(20);
+ALTER TABLE datasources
+	ALTER COLUMN databaseaccesstype TYPE VARCHAR(32);
+ALTER TABLE datasources
+	ALTER COLUMN datauploadtype TYPE VARCHAR(32);
+ALTER TABLE datasources
+	ALTER COLUMN databaseaccessrestriction TYPE VARCHAR(32);
+ALTER TABLE datasources
+	ALTER COLUMN datauploadrestriction TYPE VARCHAR(32);
+ALTER TABLE datasources
+	ALTER COLUMN qualitymanagementkind TYPE VARCHAR(32);
+
+ALTER TABLE datasources
+	ADD COLUMN registeredby CHARACTER VARYING(255);
+
+DELETE FROM apicollections
+WHERE api NOT LIKE 'api_________::%';
+DELETE FROM api
+WHERE id NOT LIKE 'api_________::%';
+
+ALTER TABLE apicollections
+	DROP COLUMN name;
+ALTER TABLE apicollections
+	RENAME COLUMN accessparam TO param;
+ALTER TABLE apicollections
+	RENAME COLUMN accessvalue TO original;
+ALTER TABLE apicollections
+	ADD COLUMN edited VARCHAR(255) DEFAULT NULL;
+ALTER TABLE apicollections
+	ADD COLUMN accessparam BOOLEAN DEFAULT TRUE;
+ALTER TABLE apicollections
+	DROP CONSTRAINT apicollection_pkey;
+ALTER TABLE apicollections
+	ALTER COLUMN original SET DEFAULT '';
+
+UPDATE apicollections
+SET param = 'set'
+WHERE param = 'SET';
+UPDATE apicollections
+SET param = 'format'
+WHERE param = 'FORMAT';
+UPDATE apicollections
+SET param = 'baseUrl'
+WHERE param = 'BASEURL';
+
+-- FIX A PROBLEM WITH MULTIPLE SET
+DELETE FROM apicollections
+WHERE api = 'api_________::opendoar____::1560::1' AND param = 'set';
+INSERT INTO apicollections (param, original, api) VALUES
+	('set', 'hdl_10251_3829, hdl_10251_321, hdl_10251_11256, hdl_10251_11206, hdl_10251_8702, hdl_10251_3026, hdl_10251_11076',
+	 'api_________::opendoar____::1560::1');
+DELETE FROM apicollections
+WHERE api = 'api_________::driver______::d0b68287-678d-4efc-b354-c47cbacaed3c::0' AND param = 'set';
+INSERT INTO apicollections (param, original, api) VALUES
+	('set', 'pub-type:article, pub-type:conf-proceeding, pub-type:lecture, pub-type:paper, pub-type:report',
+	 'api_________::driver______::d0b68287-678d-4efc-b354-c47cbacaed3c::0');
+DELETE FROM apicollections
+WHERE api = 'api_________::driver______::79476713-c428-4f23-bf97-8f27500f754a::0' AND param = 'set';
+INSERT INTO apicollections (param, original, api)
+VALUES ('set', 'dad:SIQG, jhs,sal:CNF+PA', 'api_________::driver______::79476713-c428-4f23-bf97-8f27500f754a::0');
+DELETE FROM apicollections
+WHERE api = 'api_________::opendoar____::202::0' AND param = 'set';
+INSERT INTO apicollections (param, original, api) VALUES ('set', 'hdl_1887_4540, hdl_1887_4951', 'api_________::opendoar____::202::0');
+DELETE FROM apicollections
+WHERE api = 'api_________::driver______::c75b9f23-25a8-4e45-aadd-ba449211e2a8::0' AND param = 'set';
+INSERT INTO apicollections (param, original, api) VALUES ('set', 'ijdc:ART, ijdc:PAP', 'api_________::driver______::c75b9f23-25a8-4e45-aadd-ba449211e2a8::0');
+-- AND FIX
+
+ALTER TABLE apicollections
+	ADD CONSTRAINT apicollection_pkey PRIMARY KEY (api, param);
+
+INSERT INTO apicollections (param, original, edited, api) SELECT
+	                                                          'baseUrl',
+	                                                          COALESCE(original, ''),
+	                                                          COALESCE(edited, ''),
+	                                                          id
+                                                          FROM api
+                                                          WHERE originalprotocolclass = editedprotocolclass;
+INSERT INTO apicollections (param, original, api) SELECT
+	                                                  'baseUrl',
+	                                                  COALESCE(original, ''),
+	                                                  id
+                                                  FROM api
+                                                  WHERE originalprotocolclass != editedprotocolclass OR editedprotocolclass IS NULL;
+UPDATE apicollections
+SET edited = NULL
+WHERE edited = '';
+
+UPDATE datasources
+SET datasourceclass = 'websource'
+WHERE id = 'openaire____::webcrawl';
+
+INSERT INTO apicollections (param, original, api) VALUES ('splitOnElement', 'repository', 'api_________::opendoar::0');
+INSERT INTO apicollections (param, original, api) VALUES ('splitOnElement', 'ROW', 'api_________::re3data::0');
+INSERT INTO apicollections (param, original, api) VALUES ('splitOnElement', 'Record', 'api_________::wellcometrust::0');
+INSERT INTO apicollections (param, original, api) VALUES ('splitOnElement', 'ROW', 'api_________::corda::0');
+
+UPDATE apicollections
+SET _dnet_resource_identifier_ = api || '@@' || param;
+
+INSERT INTO scheme (_dnet_resource_identifier_, code, name)
+VALUES ('dnet:content_description_typologies', 'dnet:content_description_typologies', 'D-Net Content Description Typologies');
+
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('UNKNOWN', 'UNKNOWN', 'UNKNOWN');
+
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('native', 'native', 'native');
+INSERT INTO class_scheme (_dnet_resource_identifier_, class, scheme) VALUES ('native@@dnet:compatibilityLevel', 'native', 'dnet:compatibilityLevel');
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('files', 'files', 'files');
+INSERT INTO class_scheme (_dnet_resource_identifier_, class, scheme) VALUES ('files@@dnet:compatibilityLevel', 'files', 'dnet:compatibilityLevel');
+
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('metadata', 'metadata', 'metadata');
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('file::WoS', 'file::WoS', 'file::WoS');
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('file::PDF', 'file::PDF', 'file::PDF');
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('file::EuropePMC', 'file::EuropePMC', 'file::EuropePMC');
+
+INSERT INTO class_scheme (_dnet_resource_identifier_, class, scheme)
+VALUES ('metadata@@dnet:content_description_typologies', 'metadata', 'dnet:content_description_typologies');
+INSERT INTO class_scheme (_dnet_resource_identifier_, class, scheme)
+VALUES ('file::WoS@@dnet:content_description_typologies', 'file::WoS', 'dnet:content_description_typologies');
+INSERT INTO class_scheme (_dnet_resource_identifier_, class, scheme)
+VALUES ('file::PDF@@dnet:content_description_typologies', 'file::PDF', 'dnet:content_description_typologies');
+INSERT INTO class_scheme (_dnet_resource_identifier_, class, scheme)
+VALUES ('file::EuropePMC@@dnet:content_description_typologies', 'file::EuropePMC', 'dnet:content_description_typologies');
+
+ALTER TABLE api
+	ADD COLUMN contentdescriptionclass VARCHAR(255) DEFAULT 'metadata';
+ALTER TABLE api
+	ADD COLUMN contentdescriptionscheme VARCHAR(255) DEFAULT 'dnet:content_description_typologies';
+ALTER TABLE api
+	DROP COLUMN editedprotocolclass;
+ALTER TABLE api
+	DROP COLUMN editedprotocolscheme;
+ALTER TABLE api
+	DROP COLUMN original;
+ALTER TABLE api
+	DROP COLUMN edited;
+ALTER TABLE api
+	DROP COLUMN useedited;
+ALTER TABLE api
+	RENAME COLUMN originalprotocolclass TO protocolclass;
+ALTER TABLE api
+	RENAME COLUMN originalprotocolscheme TO protocolscheme;
+ALTER TABLE api
+	ADD COLUMN active BOOLEAN DEFAULT FALSE;
+ALTER TABLE api
+	ADD COLUMN removable BOOLEAN DEFAULT FALSE;
+ALTER TABLE api
+	ADD COLUMN typologyclass VARCHAR(255) DEFAULT 'UNKNOWN';
+ALTER TABLE api
+	ADD COLUMN typologyscheme VARCHAR(255) DEFAULT 'dnet:datasource_typologies';
+ALTER TABLE api
+	ADD CONSTRAINT api_typologyclass_fkey FOREIGN KEY (typologyclass) REFERENCES class (code);
+ALTER TABLE api
+	ADD CONSTRAINT api_typologyscheme_fkey FOREIGN KEY (typologyscheme) REFERENCES scheme (code);
+ALTER TABLE api
+	ADD COLUMN compatibilityclass VARCHAR(255) DEFAULT 'UNKNOWN';
+ALTER TABLE api
+	ADD COLUMN compatibilityscheme VARCHAR(255) DEFAULT 'dnet:compatibilityLevel';
+ALTER TABLE api
+	ADD CONSTRAINT api_compatibilityclass_fkey FOREIGN KEY (compatibilityclass) REFERENCES class (code);
+ALTER TABLE api
+	ADD CONSTRAINT api_compatibilityscheme_fkey FOREIGN KEY (compatibilityscheme) REFERENCES scheme (code);
+
+ALTER TABLE api
+	ADD CONSTRAINT api_contentdescriptionclass_fkey FOREIGN KEY (contentdescriptionclass) REFERENCES class (code);
+ALTER TABLE api
+	ADD CONSTRAINT api_contentdescriptionscheme_fkey FOREIGN KEY (contentdescriptionscheme) REFERENCES scheme (code);
+
+UPDATE api
+SET typologyclass = d.datasourceclass FROM datasources d
+WHERE datasource = d.id;
+--UPDATE api SET compatibilityclass = 'driver' where typology = 'driver';
+--UPDATE api SET compatibilityclass = 'openaire2.0' FROM apicollections ac WHERE typology = 'openaire' AND id = ac.api AND ac.param = 'set' AND ac.original like '%ec_fundedresources%';
+--UPDATE api SET compatibilityclass = 'openaire3.0' FROM apicollections ac WHERE typology = 'openaire' AND id = ac.api AND ac.param = 'set' AND ac.original like '%openaire%';
+
+-- Jochen version
+UPDATE api
+SET compatibilityclass = ds.openairecompatibilityclass FROM datasources ds
+WHERE ds.id = api.datasource;
+UPDATE api
+SET compatibilityclass = 'driver'
+WHERE compatibilityclass = 'driver-openaire2.0' AND typology = 'driver';
+UPDATE api
+SET compatibilityclass = 'openaire2.0'
+WHERE compatibilityclass = 'driver-openaire2.0' AND typology = 'openaire';
+UPDATE api
+SET compatibilityclass = 'UNKNOWN'
+WHERE compatibilityclass = 'openaire2.0-openaire3.0'
+-- END Jochen
+
+UPDATE api
+SET (typologyclass, compatibilityclass) = ('entityregistry', 'native')
+WHERE id = 'api_________::opendoar::0';
+UPDATE api
+SET (typologyclass, compatibilityclass) = ('entityregistry', 'native')
+WHERE id = 'api_________::re3data::0';
+UPDATE api
+SET (typologyclass, compatibilityclass) = ('entityregistry', 'native')
+WHERE id = 'api_________::wellcometrust::0';
+UPDATE api
+SET (typologyclass, compatibilityclass) = ('entityregistry', 'native')
+WHERE id = 'api_________::corda::0';
+
+ALTER TABLE api
+	DROP COLUMN typology;
+ALTER TABLE datasources
+	DROP COLUMN openairecompatibilityclass;
+ALTER TABLE datasources
+	DROP COLUMN openairecompatibilityscheme;
+
+DELETE FROM class_scheme
+WHERE scheme = 'dnet:compatibilityLevel' AND class = 'driver-openaire2.0';
+DELETE FROM class_scheme
+WHERE scheme = 'dnet:compatibilityLevel' AND class = 'driver-openaire2.0-openaire3.0';
+DELETE FROM class_scheme
+WHERE scheme = 'dnet:compatibilityLevel' AND class = 'driver-openaire3.0';
+DELETE FROM class_scheme
+WHERE scheme = 'dnet:compatibilityLevel' AND class = 'openaire2.0-openaire3.0';
+DELETE FROM class
+WHERE code = 'driver-openaire2.0';
+DELETE FROM class
+WHERE code = 'driver-openaire2.0-openaire3.0';
+DELETE FROM class
+WHERE code = 'driver-openaire3.0';
+DELETE FROM class
+WHERE code = 'openaire2.0-openaire3.0';
+
+DELETE FROM apicollections
+WHERE api = 'api_________::openaire____::webcrawl::0';
+DELETE FROM api
+WHERE id = 'api_________::openaire____::webcrawl::0';
+
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('fileCSV', 'fileCSV', 'fileCSV');
+INSERT INTO class_scheme (_dnet_resource_identifier_, class, scheme) VALUES ('fileCSV@@dnet:protocols', 'fileCSV', 'dnet:protocols');
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('files_from_mdstore', 'files_from_mdstore', 'files_from_mdstore');
+INSERT INTO class_scheme (_dnet_resource_identifier_, class, scheme) VALUES ('files_from_mdstore@@dnet:protocols', 'files_from_mdstore', 'dnet:protocols');
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('files_from_metadata', 'files_from_metadata', 'files_from_metadata');
+INSERT INTO class_scheme (_dnet_resource_identifier_, class, scheme) VALUES ('files_from_metadata@@dnet:protocols', 'files_from_metadata', 'dnet:protocols');
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('files_by_rpc', 'files_by_rpc', 'files_by_rpc');
+INSERT INTO class_scheme (_dnet_resource_identifier_, class, scheme) VALUES ('files_by_rpc@@dnet:protocols', 'files_by_rpc', 'dnet:protocols');
+INSERT INTO class (_dnet_resource_identifier_, code, name) VALUES ('filesystem', 'filesystem', 'filesystem');
+INSERT INTO class_scheme (_dnet_resource_identifier_, class, scheme) VALUES ('filesystem@@dnet:protocols', 'filesystem', 'dnet:protocols');
+
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass)
+VALUES ('api_________::openaire____::webcrawl::csv', 'api_________::openaire____::webcrawl::csv', 'fileCSV', 'openaire____::webcrawl', 'websource', 'native');
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass, contentdescriptionclass) VALUES
+	('api_________::openaire____::webcrawl::files', 'api_________::openaire____::webcrawl::files', 'files_from_mdstore', 'openaire____::webcrawl', 'websource',
+	 'files', 'file::WoS');
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass, contentdescriptionclass) VALUES
+	('api_________::opendoar____::18::files', 'api_________::opendoar____::18::files', 'files_from_metadata', 'opendoar____::18', 'pubsrepository::unknown',
+	 'files', 'file::PDF');
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass, contentdescriptionclass) VALUES
+	('api_________::opendoar____::908::files', 'api_________::opendoar____::908::files', 'files_from_metadata', 'opendoar____::908', 'pubsrepository::unknown',
+	 'files', 'file::PDF');
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass, contentdescriptionclass) VALUES
+	('api_________::opendoar____::2367::files', 'api_________::opendoar____::2367::files', 'files_from_metadata', 'opendoar____::2367', 'pubsrepository::unknown',
+	 'files', 'file::PDF');
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass, contentdescriptionclass) VALUES
+	('api_________::opendoar____::165::files', 'api_________::opendoar____::165::files', 'files_from_metadata', 'opendoar____::165', 'pubsrepository::unknown',
+	 'files', 'file::PDF');
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass, contentdescriptionclass) VALUES
+	('api_________::infrastruct_::openaire::jdbc', 'api_________::infrastruct_::openaire::jdbc', 'jdbc', 'infrastruct_::openaire', 'scholarcomminfra',
+	 'openaire2.0', 'metadata');
+
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', 'jdbc:postgresql://localhost:5432', 'api_________::infrastruct_::openaire::jdbc');
+INSERT INTO apicollections (param, original, api) VALUES ('dbName', 'dnet_openaireplus', 'api_________::infrastruct_::openaire::jdbc');
+INSERT INTO apicollections (param, original, api) VALUES
+	('sql', 'SELECT regexp_replace(xml, ''&(?!amp;)'', ''&amp;'', ''g'') as xml FROM claims WHERE type = ''dmf2actions'' and set = ''userclaim_dmf''',
+	 'api_________::infrastruct_::openaire::jdbc');
+INSERT INTO apicollections (param, original, api) VALUES ('format', 'OAF', 'api_________::infrastruct_::openaire::jdbc');
+
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', 'file:///var/lib/dnet/wos/metadata.tsv', 'api_________::openaire____::webcrawl::csv');
+INSERT INTO apicollections (param, original, api) VALUES ('separator', E'\\t', 'api_________::openaire____::webcrawl::csv');
+INSERT INTO apicollections (param, original, api) VALUES ('identifier', '56', 'api_________::openaire____::webcrawl::csv');
+INSERT INTO apicollections (param, original, api) VALUES ('header', 'true', 'api_________::openaire____::webcrawl::csv');
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', '', 'api_________::openaire____::webcrawl::files');
+INSERT INTO apicollections (param, original, api) VALUES ('mdstoreId', '', 'api_________::openaire____::webcrawl::files');
+INSERT INTO apicollections (param, original, api) VALUES ('xpath', '//column[./@isID=''true'']', 'api_________::openaire____::webcrawl::files');
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', '', 'api_________::opendoar____::18::files');
+INSERT INTO apicollections (param, original, api) VALUES ('mdstoreId', '', 'api_________::opendoar____::18::files');
+INSERT INTO apicollections (param, original, api) VALUES ('xpath', '//dc:identifier', 'api_________::opendoar____::18::files');
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', '', 'api_________::opendoar____::908::files');
+INSERT INTO apicollections (param, original, api) VALUES ('mdstoreId', '', 'api_________::opendoar____::908::files');
+INSERT INTO apicollections (param, original, api) VALUES ('xpath', '//dc:identifier', 'api_________::opendoar____::908::files');
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', '', 'api_________::opendoar____::2367::files');
+INSERT INTO apicollections (param, original, api) VALUES ('mdstoreId', '', 'api_________::opendoar____::2367::files');
+INSERT INTO apicollections (param, original, api) VALUES ('xpath', '//dc:identifier', 'api_________::opendoar____::2367::files');
+
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', '', 'api_________::opendoar____::165::files');
+INSERT INTO apicollections (param, original, api) VALUES ('mdstoreId', '', 'api_________::opendoar____::165::files');
+INSERT INTO apicollections (param, original, api) VALUES ('xpath', '//dc:identifier', 'api_________::opendoar____::165::files');
+
+INSERT INTO apicollections (param, original, api, accessparam) VALUES ('metadata_identifier_path', '//repository/@rID', 'api_________::opendoar::0', FALSE);
+INSERT INTO apicollections (param, original, api, accessparam)
+VALUES ('metadata_identifier_path', '//*[local-name()=''repository'']/*[local-name()=''identifier'']', 'api_________::re3data::0', FALSE);
+INSERT INTO apicollections (param, original, api, accessparam) VALUES ('metadata_identifier_path', '//Position', 'api_________::wellcometrust::0', FALSE);
+INSERT INTO apicollections (param, original, api, accessparam) VALUES ('metadata_identifier_path', '//ProjectId', 'api_________::corda::0', FALSE);
+
+DELETE FROM apicollections
+WHERE param = 'splitOnElement' AND api = 'api_________::corda::0';
+INSERT INTO apicollections (param, original, api) VALUES ('filter', '*.xml', 'api_________::corda::0');
+INSERT INTO apicollections (param, original, api) VALUES ('username', '***', 'api_________::corda::0');
+INSERT INTO apicollections (param, original, api) VALUES ('password', '***', 'api_________::corda::0');
+INSERT INTO apicollections (param, original, api) VALUES ('recursive', 'false', 'api_________::corda::0');
+
+UPDATE apicollections
+SET original = 'ftp://fts.ec.europa.eu'
+WHERE api = 'api_________::corda::0' AND param = 'baseUrl';
+UPDATE api
+SET protocolclass = 'ftp'
+WHERE id = 'api_________::corda::0';
+UPDATE api
+SET protocolclass = 'filesystem'
+WHERE id = 'api_________::re3data::0';
+UPDATE apicollections
+SET original = '/var/lib/dnet/re3data'
+WHERE api = 'api_________::re3data::0' AND param = 'baseUrl';
+UPDATE api
+SET compatibilityclass = 'native'
+WHERE id = 'api_________::datacite::0';
+
+-- metadata_identifier_path for Datacite and WoS
+INSERT INTO apicollections (param, original, api, accessparam)
+VALUES ('metadata_identifier_path', '//*[local-name()=''header'']/*[local-name()=''identifier'']', 'api_________::datacite::0', FALSE);
+INSERT INTO apicollections (param, original, api, accessparam)
+VALUES ('metadata_identifier_path', '//*[local-name()=''column'' and @isID=''true'']', 'api_________::openaire____::webcrawl::csv', FALSE);
+
+UPDATE apicollections
+SET _dnet_resource_identifier_ = api || '@@' || param;
+
+-- get the orgs whose legalshortname is in upper case (probably good sort name, i.e. acronym)
+select id, legalshortname from dsm_organizations where id like 're3data%' and legalshortname ~ '^[^a-z]*$';
+-- removed legalshortnames of re3data orgs when the legalshortname is not all uppercase
+update dsm_organizations set legalshortname = '' where id like 're3data%' and legalshortname !~ '^[^a-z]*$';
+
+
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Repository_dc.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Repository_dc.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_Repository_dc.xml	(revision 60998)
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="b3a51c57-3352-4d5e-9a0f-80cee96432ce_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2019-03-25T15:43:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Aggregate and Validate Metadata in Dublin Core format from Repository [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">Repository</FIELD>
+			<FIELD name="Content">results</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">pubsrepository,datarepository,softwarerepository,orprepository </PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Aggregate and Validate Metadata in Dublin Core format from Repository [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDc"/>
+					<ARC to="createOaf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDc" type="CreateMDStore">
+				<DESCRIPTION>Create oai_dc store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_dc</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createOaf" type="CreateMDStore">
+				<DESCRIPTION>Create OAF store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">OAF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfPubsRepository</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/incrementalTransformation_migration.xqueries
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/incrementalTransformation_migration.xqueries	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/incrementalTransformation_migration.xqueries	(revision 60998)
@@ -0,0 +1,37 @@
+#0. READ EVERYTHING BEFORE RUNNING ANY XUPDATE
+#1. Take all transformation workflows and change the arc to select the currently non existing node "selectIncrementalTransformation"
+
+for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType')
+let $arc := $x[.//WORKFLOW_NAME='transform']/RESOURCE_PROFILE/BODY/CONFIGURATION/NODE[./@type='SetProviderInfo' and ./@isStart='true']/ARCS/ARC[./@to ='fetchOriginals']
+return update value $arc/@to with 'selectIncrementalTransformation'
+
+#2. Now we add the missing node just after the start node
+
+for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType')
+let $startnode := $x[.//WORKFLOW_NAME='transform']/RESOURCE_PROFILE/BODY/CONFIGURATION/NODE[./@type='SetProviderInfo' and ./@isStart='true']
+return update insert
+<NODE name="selectIncrementalTransformation" type="IncrementalTransformation">
+	<DESCRIPTION>Decide REFRESH/INCREMENTAL transformation</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="operationType" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">INCREMENTAL</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+	</ARCS>
+</NODE>
+following $startnode
+
+In case there are nodes with the wrong parameter name (transformationType instead of operationType), do not worry.
+It is a left over from previous migration and you can fix it running this xquery:
+
+for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType')
+let $transNode := $x[.//WORKFLOW_NAME='transform']/RESOURCE_PROFILE/BODY/CONFIGURATION/NODE[./@type='IncrementalTransformation']
+let $param := $transNode/PARAMETERS/PARAM[@name='transformationType']
+return update value $param/@name with 'operationType'
+
+NOTE: if there are already incremental workflows, the xupdate in #2. will screw them up
+creating a duplicate IncrementalTransformation node that must be deleted.
+You can look for this workflows with the following xquery:
+
+for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType')
+where (count($x[.//NODE/@name='selectIncrementalTransformation']) > 1) return $x
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_DataRepositorybyJournal.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_DataRepositorybyJournal.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_DataRepositorybyJournal.xml	(revision 60998)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="a538b9e2-0728-4490-a4fc-5f1f37a1d551_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Aggregate Metadata (datasets and publications by journal) from DataRepository [Ingestion]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Ingestion</FIELD>
+			<FIELD name="Datasource class">DataRepository</FIELD>
+			<FIELD name="Content">datasets and publications by journal</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Retrieve datasets by projects id</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">datarepository::unknown</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Aggregate Metadata (datasets and publications by journal) from DataRepository [Ingestion]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDatacite"/>
+					<ARC to="createODF"/>
+					<ARC to="createOAF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDatacite" type="CreateMDStore">
+				<DESCRIPTION>Create dataset native store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">dataset</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createODF" type="CreateMDStore">
+				<DESCRIPTION>Create ODF_dataset cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">ODF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tranODF_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createOAF" type="CreateMDStore">
+				<DESCRIPTION>Create OAF_publication cleaned store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">OAF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tranOAF_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfDatasetbyJournalsOpenaireMdRecords</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-constraints.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-constraints.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-constraints.sql	(revision 60998)
@@ -0,0 +1,54 @@
+-- THE AIM OF THIS FILE IS TO COLLECT SQL COMMANDS TO ADD "ON DELETE CASCADE" CONSTRAINTS
+-- SOME OF THE STATEMENTS MAY NOT MAKE SENSE IN THIS BRANCH, AS WE ARE SUPPOSED NOT TO USE THE funding_funding TABLE ANYMORE
+
+-- when we delete a funding we want to the delete all the related stuff: subfundings, projects, organisations
+ALTER TABLE funding_funding
+	DROP CONSTRAINT funding_funding_funding1_fkey;
+ALTER TABLE funding_funding
+	ADD CONSTRAINT funding_funding_funding1_fkey FOREIGN KEY (funding1) REFERENCES fundings (id) ON DELETE CASCADE;
+ALTER TABLE funding_funding
+	DROP CONSTRAINT funding_funding_funding2_fkey;
+ALTER TABLE funding_funding
+	ADD CONSTRAINT funding_funding_funding2_fkey FOREIGN KEY (funding2) REFERENCES fundings (id) ON DELETE CASCADE;
+
+ALTER TABLE project_funding
+	DROP CONSTRAINT project_funding_funding_fkey;
+ALTER TABLE project_funding
+	ADD CONSTRAINT project_funding_funding_fkey FOREIGN KEY (funding) REFERENCES fundings (id) ON DELETE CASCADE;
+ALTER TABLE project_funding
+	DROP CONSTRAINT project_funding_project_fkey;
+ALTER TABLE project_funding
+	ADD CONSTRAINT project_funding_project_fkey FOREIGN KEY (project) REFERENCES projects (id) ON DELETE CASCADE;
+
+ALTER TABLE organization_funding
+	DROP CONSTRAINT organization_funding_funding_fkey;
+ALTER TABLE organization_funding
+	ADD CONSTRAINT organization_funding_funding_fkey FOREIGN KEY (funding) REFERENCES fundings (id) ON DELETE CASCADE;
+
+-- when we delete an organisation we want to delete all the related stuff
+ALTER TABLE datasource_organization
+	DROP CONSTRAINT datasource_organization_organization_fkey;
+ALTER TABLE datasource_organization
+	ADD CONSTRAINT datasource_organization_organization_fkey FOREIGN KEY (organization) REFERENCES organizations (id) ON DELETE CASCADE;
+ALTER TABLE project_organization
+	DROP CONSTRAINT project_organization_resporganization_fkey;
+ALTER TABLE project_organization
+	ADD CONSTRAINT project_organization_resporganization_fkey FOREIGN KEY (resporganization) REFERENCES organizations (id) ON DELETE CASCADE;
+
+-- when we delete a project, also its link to organisations must be deleted
+ALTER TABLE project_organization
+	DROP CONSTRAINT project_organization_project_fkey;
+ALTER TABLE project_organization
+	ADD CONSTRAINT project_organization_project_fkey FOREIGN KEY (project) REFERENCES projects (id) ON DELETE CASCADE;
+
+-- when we delete a fundingpath, also the corresponding entries in the many-to-many tabel to projects must be deleted
+ALTER TABLE project_fundingpath
+	DROP CONSTRAINT project_fundingpath_funding_fkey;
+ALTER TABLE project_fundingpath
+	ADD CONSTRAINT project_fundingpath_funding_fkey FOREIGN KEY (funding) REFERENCES fundingpaths (id) ON DELETE CASCADE;
+
+-- when we delete a project, also its links to fundingpaths must be deleted
+ALTER TABLE project_fundingpath
+	DROP CONSTRAINT project_fundingpath_project_fkey;
+ALTER TABLE project_fundingpath
+	ADD CONSTRAINT project_fundingpath_project_fkey FOREIGN KEY (project) REFERENCES projects (id) ON DELETE CASCADE;
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_HostedbyMap_oaisets.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_HostedbyMap_oaisets.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Fill_HostedbyMap_oaisets.xml	(revision 60998)
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="24e64dae-9990-45a3-a209-61bccfb3ef1e_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value="value3"/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Fill hostedBy-Map (OAI-PMH sets in DataRepositories) from DataCite [Context]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Fill hostedBy-Map</FIELD>
+			<FIELD name="Consequence IS">Context</FIELD>
+			<FIELD name="Datasource class">DataCite</FIELD>
+			<FIELD name="Content">OAI-PMH sets in DataRepositories</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">aggregator::datarepository</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string">native</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true" type="string">Fill hostedBy-Map (OAI-PMH sets in DataRepositories) from DataCite [Context]</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createGMF"/>
+					<ARC to="createDBMF"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createGMF" type="CreateMDStore">
+				<DESCRIPTION>Create store for native records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">GMF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">native</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">orig_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createDBMF" type="CreateMDStore">
+				<DESCRIPTION>Create store for DB rows</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">DBMF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleaned</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">row_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfAggrDatarepoOaiSets</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-identities.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-identities.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-identities.sql	(revision 60998)
@@ -0,0 +1,99 @@
+ALTER TABLE identities
+	DROP COLUMN IF EXISTS issuertypescheme;
+ALTER TABLE identities
+	DROP CONSTRAINT IF EXISTS identities_issuertypeclass_fkey;
+
+-- piwik ids from https://docs.google.com/spreadsheets/d/1_tanv8pCiupPxenxqhhKip6D_676-tOTi0RjkAYmUeY/edit#gid=0
+
+BEGIN;
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:13', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::307', 'piwik:13');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:14', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1255', 'piwik:14');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:15', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1619', 'piwik:15');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:16', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1271', 'piwik:16');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:19', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1714', 'piwik:19');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:20', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::7', 'piwik:20');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:21', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1689', 'piwik:21');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:22', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1445', 'piwik:22');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:23', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1621', 'piwik:23');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:24', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1564', 'piwik:24');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:25', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1501', 'piwik:25');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:26', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::2346', 'piwik:26');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:27', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::2016', 'piwik:27');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:28', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1716', 'piwik:28');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:30', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::2017', 'piwik:30');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:31', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1620', 'piwik:31');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:32', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1502', 'piwik:32');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:33', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1503', 'piwik:33');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:34', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::2340', 'piwik:34');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:35', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1715', 'piwik:35');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:36', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::2018', 'piwik:36');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:37', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::2019', 'piwik:37');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:38', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1504', 'piwik:38');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:39', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::2187', 'piwik:39');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:40', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::1505', 'piwik:40');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:42', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::2020', 'piwik:42');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:43', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::2594', 'piwik:43');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:44', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::2595', 'piwik:44');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:45', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::3162', 'piwik:45');
+
+INSERT INTO identities (pid, issuertypeclass) VALUES ('piwik:48', 'piwik');
+INSERT INTO datasourcepids (datasource, pid) VALUES ('opendoar____::2584', 'piwik:48');
+
+END;
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_AggregatorPubsRepository_Support.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_AggregatorPubsRepository_Support.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/repo-hi/Aggregate_Metadata_from_AggregatorPubsRepository_Support.xml	(revision 60998)
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="1d5cb1ba-ec09-445c-9f9e-1db35b14700f_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-12-11T15:43:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Aggregate Metadata (publications) from Aggregator::PubsRepository [Support]</WORKFLOW_NAME>
+		<WORKFLOW_INFO>
+			<FIELD name="Action">Aggregate Metadata</FIELD>
+			<FIELD name="Consequence IS">Support</FIELD>
+			<FIELD name="Datasource class">Aggregator::PubsRepository</FIELD>
+			<FIELD name="Content">publications</FIELD>
+		</WORKFLOW_INFO>
+		<WORKFLOW_TYPE>REPO_HI</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>20</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="VerifyDatasource" type="VerifyDatasource" isStart="true">
+				<DESCRIPTION>Verify if DS is pending</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="expectedInterfaceTypologyPrefixes" managedBy="system" required="false" type="string">aggregator::pubsrepository,pubscatalogue
+					</PARAM>
+					<PARAM name="expectedCompliancePrefixes" managedBy="system" required="false" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+					<ARC to="validateDs" name="validateDs"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="validateDs" type="ValidateDatasource">
+				<DESCRIPTION>Validate DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="createMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createMetaWf" type="RegisterMetaWf">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="wfName" managedBy="system" required="true"
+					       type="string">Aggregate Metadata (publications) from Aggregator::PubsRepository [Support]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="createDc"/>
+					<ARC to="createOaf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="createDc" type="CreateMDStore">
+				<DESCRIPTION>Create oai_dc store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">oai_dc</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">nativesupport</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">harv_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createOaf" type="CreateMDStore">
+				<DESCRIPTION>Create OAF store</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="format" managedBy="system" required="true" type="string">OAF</PARAM>
+					<PARAM name="interpretation" managedBy="system" required="true" type="string">cleanedsupport</PARAM>
+					<PARAM name="layout" managedBy="system" required="true" type="string">store</PARAM>
+					<PARAM name="outputPrefix" managedBy="system" required="true" type="string">tran_</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWf"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWf" type="UpdateMetaWf" isJoin="true">
+				<DESCRIPTION>Create MetaWorkflow</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="beanName" managedBy="system" required="true" type="string">metaWfAggregatorPubsRepositoryIngestion</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateMetaWfStatus"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="updateMetaWfStatus" type="UpdateOpenaireMetaWfStatus">
+				<DESCRIPTION>Update MetaWorkflow Status</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/triggers.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/triggers.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/triggers.sql	(revision 60998)
@@ -0,0 +1,23 @@
+-- disable the triggers
+ALTER TABLE dsm_datasources DISABLE TRIGGER ALL;
+ALTER TABLE projectpids DISABLE TRIGGER ALL;
+ALTER TABLE project_subject DISABLE TRIGGER ALL;
+ALTER TABLE fundingpaths DISABLE TRIGGER ALL;
+ALTER TABLE project_fundingpath DISABLE TRIGGER ALL;
+ALTER TABLE project_organization DISABLE TRIGGER ALL;
+ALTER TABLE dsm_organizations DISABLE TRIGGER ALL;
+ALTER TABLE dsm_organizationpids DISABLE TRIGGER ALL;
+ALTER TABLE dsm_datasource_organization DISABLE TRIGGER ALL;
+ALTER TABLE projects DISABLE TRIGGER ALL;
+
+-- enable the triggers
+ALTER TABLE dsm_datasources ENABLE TRIGGER ALL;
+ALTER TABLE projectpids ENABLE TRIGGER ALL;
+ALTER TABLE project_subject ENABLE TRIGGER ALL;
+ALTER TABLE fundingpaths ENABLE TRIGGER ALL;
+ALTER TABLE project_fundingpath ENABLE TRIGGER ALL;
+ALTER TABLE project_organization ENABLE TRIGGER ALL;
+ALTER TABLE dsm_organizations ENABLE TRIGGER ALL;
+ALTER TABLE dsm_organizationpids ENABLE TRIGGER ALL;
+ALTER TABLE dsm_datasource_organization ENABLE TRIGGER ALL;
+ALTER TABLE projects ENABLE TRIGGER ALL;
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_hostedbymap.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_hostedbymap.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_hostedbymap.sql	(revision 60998)
@@ -0,0 +1 @@
+INSERT INTO hostedby_map(oa_source_id , entry, datasourceid) VALUES ('openaire____::datacite', 'BL.MENDELEY', 're3data_____::r3d100011868');
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/fct_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/fct_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/fct_contexts.xsl	(revision 60998)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet version="1.0"
+				xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+				exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('fct_________')"/>
+	<xsl:variable name="funderID" select="concat($namespacePrefix, '::FCT')"/>
+
+	<xsl:template match="/">
+		<xsl:variable name="p1" select="normalize-space(.//*[local-name() = 'Identifier'][@type = 'https://w3id.org/cerif/vocab/IdentifierTypes#FundingProgram'])"/>
+
+		<fundingtree>
+			<funder>
+				<id>
+					<xsl:value-of select="$funderID"/>
+				</id>
+				<shortname>FCT</shortname>
+				<name>Fundação para a Ciência e a Tecnologia, I.P.</name>
+				<jurisdiction>PT</jurisdiction>
+			</funder>
+			<xsl:if test="string-length($p1) &gt; 0">
+
+				<xsl:variable name="level0" select="concat($funderID, '::', $p1)"/>
+				<funding_level_0>
+					<id>
+						<xsl:value-of select="$level0"/>
+					</id>
+					<description>
+						<xsl:value-of select="$p1"/>
+					</description>
+					<name>
+						<xsl:value-of select="$p1"/>
+					</name>
+					<parent/>
+					<class>fct:program</class>
+				</funding_level_0>
+			</xsl:if>
+		</fundingtree>
+	</xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-fct.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-fct.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-fct.sql	(revision 60998)
@@ -0,0 +1,30 @@
+-- REMEMBER TO UPDATE THE CLEANING RULE AND THE FOLLOWING VOCABULARIES:
+--   aecdb60c-e1ed-40bd-a6c1-edc9993f07cb_Vm9jYWJ1bGFyeURTUmVzb3VyY2VzL1ZvY2FidWxhcnlEU1Jlc291cmNlVHlwZQ==
+--   ecdd1e73-cf16-4a8b-8842-d0a7c780ab6e_Vm9jYWJ1bGFyeURTUmVzb3VyY2VzL1ZvY2FidWxhcnlEU1Jlc291cmNlVHlwZQ==
+-- AND TO REGISTER:
+--   3470afb2-d15f-4046-988e-7a7a2f7c993b_Vm9jYWJ1bGFyeURTUmVzb3VyY2VzL1ZvY2FidWxhcnlEU1Jlc291cmNlVHlwZQ==
+--   5d11b639-51c3-4dc3-a2aa-da0ad168e768_Vm9jYWJ1bGFyeURTUmVzb3VyY2VzL1ZvY2FidWxhcnlEU1Jlc291cmNlVHlwZQ==
+--	 ec216410-9ebc-4547-bb4a-190acb0985ef_Vm9jYWJ1bGFyeURTUmVzb3VyY2VzL1ZvY2FidWxhcnlEU1Jlc291cmNlVHlwZQ==
+
+-- THEN RUN THE CLASS/SCHEME UPDATE FROM THE IS TO THE DB
+
+--FCT ENTITY REGISTRY
+INSERT INTO organizations (_dnet_resource_identifier_, id, legalshortname, legalname, websiteurl, logourl, countryclass, provenanceactionclass) VALUES
+	('fct_________::FCT', 'fct_________::FCT', 'FCT', 'Fundação para a Ciência e a Tecnologia, I.P.', 'http://www.fct.pt',
+	 'http://www.fct.pt/images/FCT_H_color_v2011_b.png', 'PT', 'sysimport:crosswalk:entityregistry');
+INSERT INTO datasources (_dnet_resource_identifier_, id, officialname, englishname, websiteurl, logourl, contactemail, latitude, longitude, timezone, namespaceprefix, collectedfrom, datasourceclass)
+VALUES
+	('openaire____::fct', 'openaire____::fct', 'FCT - Fundação para a Ciência e a Tecnologia', 'FCT - Foundation for Science and Technology', 'http://www.fct.pt',
+	                      'http://www.fct.pt/images/FCT_H_color_v2011_b.png', 'projectos@fct.pt', 38.71, -9.14, 0.0, 'fct_________', 'infrastruct_::openaire',
+	 'entityregistry');
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass)
+VALUES ('api_________::fct::0', 'api_________::fct::0', 'filesystem', 'openaire____::fct', 'entityregistry', 'native');
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', 'file:///var/lib/dnet/fct', 'api_________::fct::0');
+INSERT INTO apicollections (param, original, api) VALUES ('extensions', '*.xml', 'api_________::fct::0');
+INSERT INTO apicollections (param, original, api, accessparam) VALUES ('metadata_identifier_path', '/project/id', 'api_________::fct::0', FALSE);
+UPDATE apicollections
+SET _dnet_resource_identifier_ = api || '@@' || param;
+INSERT INTO datasource_organization (_dnet_resource_identifier_, datasource, organization)
+VALUES ('fct_________::fct@@fct_________::FCT', 'openaire____::fct', 'fct_________::FCT');
+
+ 
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/dedup.ocean.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/dedup.ocean.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/dedup.ocean.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="6ebfea46-0329-4d25-97eb-f06133b992bb_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+        <RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+        <RESOURCE_KIND value="MetaWorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2020-02-18T15:01:54+00:00"/>
+    </HEADER>
+    <BODY>
+        <METAWORKFLOW_NAME family="Deduplication [OCEAN]">Deduplication [OCEAN]</METAWORKFLOW_NAME>
+        <METAWORKFLOW_DESCRIPTION/>
+        <METAWORKFLOW_SECTION>InfoSpace Deduplication</METAWORKFLOW_SECTION>
+        <ADMIN_EMAIL>alessia.bardi@isti.cnr.it,claudio.atzori@isti.cnr.it,michele.debonis@isti.cnr.it</ADMIN_EMAIL>
+        <CONFIGURATION status="EXECUTABLE">
+            <WORKFLOW id="2483c5e4-dde8-4452-bd9c-38d436d8d941_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Duplicate scan">
+            </WORKFLOW>
+        </CONFIGURATION>
+        <SCHEDULING enabled="false">
+            <CRON>29 5 22 ? * *</CRON>
+            <MININTERVAL>10080</MININTERVAL>
+        </SCHEDULING>
+    </BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/online.dedup.organizations.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/online.dedup.organizations.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/dedup/online.dedup.organizations.xml	(revision 60998)
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="f6a4c2e5-a663-4700-844f-1b753484efee_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>Dedup organizations (Online)</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Deduplication</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="fetchRelClasses" type="FetchRelClasses" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="relClassesProperty" type="string" managedBy="system" required="true">dnet.openaire.model.relclasses.xquery</PARAM>
+					<PARAM name="relClassesName" type="string" managedBy="system" required="true">relClasses</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_MODE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="configure" type="LoadDedupConfiguration" isStart="true">
+				<DESCRIPTION>Load Dedup conf</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="entityType" managedBy="system">organization</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="SELECT_MODE"/>
+				</ARCS>
+			</NODE>
+			<NODE name="SELECT_MODE" type="Selection" isJoin="true">
+				<DESCRIPTION>Do we start from GROUND TRUTH?</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">NO</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="YES" to="findRoots"/>
+					<ARC name="NO" to="deduplicateScan"/>
+				</ARCS>
+			</NODE>
+			<NODE name="deduplicateScan" type="SubmitHadoopJob">
+				<DESCRIPTION>Dup Scan</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupCandidateScanJob</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapred.outputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.outputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'dedup.pace.conf' : 'dedup.pace.conf',
+						'dedup.wf.conf' : 'dedup.wf.conf'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'entityTypeId' : '20',
+						'entityType' : 'organization'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="dedupGrouper"/>
+				</ARCS>
+			</NODE>
+			<NODE name="dedupGrouper" type="DedupGrouperJob">
+				<DESCRIPTION>dedup grouper</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupGrouperJob</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapred.outputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.outputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'dedup.pace.conf' : 'dedup.pace.conf',
+						'dedup.wf.conf' : 'dedup.wf.conf'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'entityTypeId' : '20'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="dedupGrouper"/>
+					<ARC name="done" to="findRoots"/>
+				</ARCS>
+			</NODE>
+			<NODE name="findRoots" type="SubmitHadoopJob">
+				<DESCRIPTION>find roots</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupFindRootsJob</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapred.outputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.outputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'dedup.pace.conf' : 'dedup.pace.conf',
+						'dedup.wf.conf' : 'dedup.wf.conf'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'entityTypeId' : '20',
+						'entityType' : 'organization'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="buildRoots"/>
+				</ARCS>
+			</NODE>
+			<NODE name="buildRoots" type="SubmitHadoopJob">
+				<DESCRIPTION>redirect rels</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">dedupBuildRootsJob</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapred.outputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.outputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'dedup.pace.conf' : 'dedup.pace.conf',
+						'dedup.wf.conf' : 'dedup.wf.conf',
+						'relClasses' : 'relClasses'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'entityTypeId' : '20'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/provision.ocean.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/provision.ocean.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/provision.ocean.xml	(revision 60998)
@@ -0,0 +1,167 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="74d90d54-bea4-4a79-82d9-adddcc89e660_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Data Provision [OCEAN]</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+
+			<!-- PREPARE NODES -->
+			<NODE name="setGraphBasePath" type="SetEnvParameter" isStart="true">
+				<DESCRIPTION>Set the target directory to materialize the graph</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="parameterName" required="true" type="string">graphBasePath</PARAM>
+					<PARAM managedBy="user" name="parameterValue" required="true" type="string">/var/lib/dnet/graph_BETA</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="rawGraph"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="rawGraph" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>create the raw graph</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">executeOozieJob</PARAM>
+					<PARAM required="true" type="string" name="cluster"   managedBy="system">IIS</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'graphBasePath' : 'graphBasePath'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'oozie.wf.application.path' : '/lib/dnet/migration/wfs/regular_all_steps/oozie_app',
+						'mongoURL' : 'mongodb://beta.services.openaire.eu',
+						'mongoDb' : 'mdstore',
+						'postgresURL' : 'jdbc:postgresql://beta.services.openaire.eu:5432/dnet_openaireplus',
+						'postgresUser' : 'dnet',
+						'postgresPassword' : 'dnetPwd',
+						'workingPath' : '/tmp/dhp_migration_beta',
+						'reuseContent' : 'true'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="oozieReportActionsCsv" managedBy="system">build-report</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="setRawGraphPath"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="setRawGraphPath" type="SetEnvParameter">
+				<DESCRIPTION>Set the path containing the raw graph</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="parameterName" required="true" type="string">rawGraphPath</PARAM>
+					<PARAM managedBy="user" name="parameterValue" required="true" type="string">/var/lib/dnet/graph_BETA/graph_raw</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="setDedupWorkingPath"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="setDedupWorkingPath" type="SetEnvParameter">
+				<DESCRIPTION>Set the path used by dedup workflows to store intermediate data</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="parameterName" required="true" type="string">dedupWorkingPath</PARAM>
+					<PARAM managedBy="user" name="parameterValue" required="true" type="string">/tmp/beta_dedup</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="setDedupGraphPath"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="setDedupGraphPath" type="SetEnvParameter">
+				<DESCRIPTION>Set the target path to store the deduped graph</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="parameterName" required="true" type="string">dedupGraphPath</PARAM>
+					<PARAM managedBy="user" name="parameterValue" required="true" type="string">/var/lib/dnet/graph_BETA/graph_dedup</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="dedupOrganization"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="dedupOrganization" type="SubmitHadoopJob">
+				<DESCRIPTION>deduplicate organizations</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">executeOozieJob</PARAM>
+					<PARAM required="true" type="string" name="cluster"   managedBy="system">IIS</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'graphBasePath' : 'rawGraphPath',
+						'workingPath' 	: 'dedupWorkingPath',
+						'dedupGraphPath': 'dedupGraphPath'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'oozie.wf.application.path' : '/lib/dnet/dedup/scan/oozie_app',
+						'actionSetId' 				: 'dedup-similarity-organization'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="oozieReportActionsCsv" managedBy="system">build-report</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="dedupResult"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="dedupResult" type="SubmitHadoopJob">
+				<DESCRIPTION>deduplicate results</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">executeOozieJob</PARAM>
+					<PARAM required="true" type="string" name="cluster"   managedBy="system">IIS</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'graphBasePath' : 'rawGraphPath',
+						'workingPath' 	: 'dedupWorkingPath',
+						'dedupGraphPath': 'dedupGraphPath'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'oozie.wf.application.path' : '/lib/dnet/dedup/scan/oozie_app',
+						'actionSetId' 				: 'dedup-similarity-result'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="oozieReportActionsCsv" managedBy="system">build-report</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="dedupConsistency"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="dedupConsistency" type="SubmitHadoopJob">
+				<DESCRIPTION>mark duplicates as deleted and redistribute the relationships</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">executeOozieJob</PARAM>
+					<PARAM required="true" type="string" name="cluster"   managedBy="system">IIS</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'graphBasePath' : 'rawGraphPath',
+						'workingPath' 	: 'dedupWorkingPath',
+						'dedupGraphPath': 'dedupGraphPath'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{
+						'oozie.wf.application.path' : '/lib/dnet/dedup/consistency/oozie_app'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="oozieReportActionsCsv" managedBy="system">build-report</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+
+		</CONFIGURATION>
+		<STATUS>
+		</STATUS>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/sfi_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/sfi_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/sfi_contexts.xsl	(revision 60998)
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet version="1.0"
+				xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+				exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('sfi_________')"/>
+	<xsl:variable name="funderId" select="concat($namespacePrefix, '::SFI')"/>
+
+	<xsl:template match="/">
+		<fundingtree>
+			<funder>
+				<id>
+					<xsl:value-of select="$funderId"/>
+				</id>
+				<shortname>SFI</shortname>
+				<name>
+					<xsl:value-of select=".//column[@name='Funder Name']"/>
+				</name>
+				<jurisdiction>IE</jurisdiction>
+			</funder>
+			<xsl:variable name="funding" select="normalize-space(.//column[@name='Programme Name'])"/>
+			<xsl:variable name="sub_funding" select="normalize-space(.//column[@name='Sub-programme Name'])"/>
+			<xsl:if test="$funding">
+				<xsl:choose>
+					<xsl:when test="$sub_funding">
+						<funding_level_1>
+							<id>
+								<xsl:value-of select="concat($funderId, '::' , $funding , '::' ,$sub_funding)"/>
+							</id>
+							<description>
+								<xsl:value-of select="$sub_funding"/>
+							</description>
+							<name>
+								<xsl:value-of select="$sub_funding"/>
+							</name>
+							<class>sfi:fundingStream</class>
+							<parent>
+								<funding_level_0>
+									<id>
+										<xsl:value-of select="concat($funderId, '::' , $funding)"/>
+									</id>
+									<description>
+										<xsl:value-of select="$funding"/>
+									</description>
+									<name>
+										<xsl:value-of select="$funding"/>
+									</name>
+									<parent/>
+									<class>sfi:fundingStream</class>
+								</funding_level_0>
+							</parent>
+						</funding_level_1>
+					</xsl:when>
+					<xsl:otherwise>
+						<funding_level_0>
+							<id>
+								<xsl:value-of select="concat($funderId, '::', $funding)"/>
+							</id>
+							<description>
+								<xsl:value-of select="$funding"/>
+							</description>
+							<name>
+								<xsl:value-of select="$funding"/>
+							</name>
+							<parent></parent>
+							<class>sfi:fundingStream</class>
+						</funding_level_0>
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:if>
+		</fundingtree>
+	</xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hbase.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hbase.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/index.hbase.xml	(revision 60998)
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="35044412-9bee-479b-a8d5-e15ba2fcad3a_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Index from HBASE</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="fetchRelClasses" type="FetchRelClasses" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="relClassesProperty" type="string" managedBy="system" required="true">dnet.openaire.model.relclasses.xquery</PARAM>
+					<PARAM name="relClassesName" type="string" managedBy="system" required="true">relClasses</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="group"/>
+				</ARCS>
+			</NODE>
+			<NODE name="fetchContexts" type="LoadContextsJob" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="group"/>
+				</ARCS>
+			</NODE>
+			<NODE name="fetchEntityLinks" type="LoadEntityLinksJob" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="group"/>
+				</ARCS>
+			</NODE>
+			<NODE name="findIndex" type="FindIndex" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="mdFormat" type="string" managedBy="user" required="true">DMF</PARAM>
+					<PARAM name="layout" type="string" managedBy="system" required="true">index</PARAM>
+					<PARAM name="interpretation" type="string" managedBy="system" required="true">openaire</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="prepare"/>
+					<ARC name="notFound" to="createIndex"/>
+				</ARCS>
+			</NODE>
+			<NODE name="createIndex" type="CreateIndex">
+				<DESCRIPTION/>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="prepare"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepare" type="PrepareIndexJob">
+				<DESCRIPTION>Prepare indexing</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="outputRecordsPathParam" type="string" managedBy="system" required="true">outputRecordsPath</PARAM>
+					<PARAM name="rottenRecordsPathParam" type="string" managedBy="system" required="true">rottenRecordsPath</PARAM>
+					<PARAM name="layoutToRecordStylesheet" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/index/openaireLayoutToRecordStylesheet.xsl</PARAM>
+					<PARAM name="oafSchemaLocationProperty" type="string" managedBy="system" required="true">oaf.schema.location</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupXml"/>
+					<ARC to="cleanupRotten"/>
+				</ARCS>
+			</NODE>
+			<NODE name="cleanupXml" type="DeleteHdfsPathJob">
+				<DESCRIPTION>hdfs cleanup (xml)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'outputRecordsPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="group"/>
+				</ARCS>
+			</NODE>
+			<NODE name="cleanupRotten" type="DeleteHdfsPathJob">
+				<DESCRIPTION>hdfs cleanup (rotten)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'rottenRecordsPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="group"/>
+				</ARCS>
+			</NODE>
+			<NODE name="group" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>M/R group entities</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">prepareIndexDataJob</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'mapred.output.dir' : 'outputRecordsPath',
+						'index.entity.links' : 'index.entity.links',
+						'oaf.schema.location' : 'oaf.schema.location',
+						'contextmap' : 'contextmap',
+						'relClasses' : 'relClasses'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="updateIndex"/>
+				</ARCS>
+			</NODE>
+			<NODE name="updateIndex" type="SubmitHadoopJob">
+				<DESCRIPTION>M/O index records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">indexFeedJob</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'mapred.input.dir' : 'outputRecordsPath',
+						'mapred.output.dir' : 'rottenRecordsPath',
+						'index.xslt' : 'index.xslt',
+						'index.solr.url' : 'index.solr.url',
+						'index.solr.collection' : 'index.solr.collection',
+						'index.buffer.flush.threshold' : 'index.buffer.flush.threshold',
+						'index.shutdown.wait.time' : 'index.shutdown.wait.time',
+						'index.solr.sim.mode' : 'index.solr.sim.mode',
+						'index.feed.timestamp' : 'index.feed.timestamp'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="finalize"/>
+				</ARCS>
+			</NODE>
+			<NODE name="finalize" type="FinalizeIndexFeeding">
+				<DESCRIPTION>commit changes</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="updateDs"/>
+				</ARCS>
+			</NODE>
+			<NODE name="updateDs" type="IndexDsUpdateJob">
+				<DESCRIPTION>update DS</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.backup.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.backup.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.backup.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="8c0084b0-1979-4d60-9c93-8d92dc1c7ded_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-16T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="stats">Stats Cache Backup</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="a6d0804a-7a05-46e6-81e4-275181b78512_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Backup Stats Cache"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_countries_yugoslavia.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_countries_yugoslavia.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_countries_yugoslavia.sql	(revision 60998)
@@ -0,0 +1,16 @@
+update dsm_organizations set country = 'RS' where id = 'nsf_________::University_of_Novi_Sad';
+update dsm_organizations set country = 'RS' where id = 'nsf_________::University_of_Novi_Sad_Inst_for_Petrochem_Gas_Oil_&_Chem_Engrng';
+update dsm_organizations set country = 'SI' where id = 'nsf_________::University_of_Ljubljana';
+update dsm_organizations set country = 'HR' where id = 'nsf_________::Institute_of_Oceanography_and_Fisheries';
+update dsm_organizations set country = 'MK' where id = 'nsf_________::University_of_Skopje';
+update dsm_organizations set country = 'HR' where id = 'nsf_________::Zagreb_University';
+update dsm_organizations set country = 'RS' where id = 'nsf_________::University_of_Kragujevac';
+update dsm_organizations set country = 'YU' where id = 'nsf_________::U_S-Yugoslav_Jt_Brd_on_Scient_&_Technl_Coop';
+update dsm_organizations set country = 'RS' where id = 'nsf_________::University_of_Belgrade';
+update dsm_organizations set country = 'BA' where id = 'nsf_________::University_of_Sarajevo';
+update dsm_organizations set country = 'SI' where id = 'nsf_________::University_of_Maribor';
+update dsm_organizations set country = 'YU' where id = 'nsf_________::Institute_of_Physics';
+update dsm_organizations set country = 'BA' where id = 'nsf_________::University_of_Banja_Luka';
+update dsm_organizations set country = 'ME' where id = 'nsf_________::University_of_Titograd';
+update dsm_organizations set country = 'SI' where id = 'nsf_________::University_of_E_Kardelj';
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/increase_size_re3data_fields.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/increase_size_re3data_fields.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/increase_size_re3data_fields.sql	(revision 60998)
@@ -0,0 +1,9 @@
+ALTER TABLE dsm_datasources ALTER COLUMN databaseaccesstype TYPE varchar(64);
+ALTER TABLE dsm_datasources ALTER COLUMN datauploadtype TYPE varchar(64);
+ALTER TABLE dsm_datasources ALTER COLUMN databaseaccessrestriction TYPE varchar(64);
+ALTER TABLE dsm_datasources ALTER COLUMN datauploadrestriction TYPE varchar(64);
+ALTER TABLE dsm_datasources ALTER COLUMN qualitymanagementkind TYPE varchar(64);
+
+ALTER TABLE dsm_datasources ALTER COLUMN missionstatementurl TYPE text;
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/oai.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/oai.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/oai.meta.xml	(revision 60998)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="1820d163-065b-4e5d-90ba-3885e8baec1f_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="provision">OAI feeding from HDFS</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="96c45851-28ed-4cd3-8942-bbb350e4dfec_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="OAI Store feed">
+				<WORKFLOW id="440e5de7-7106-469c-8c8d-89c261a1e09d_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="OAI Post feed"/>
+			</WORKFLOW>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/lod.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/lod.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/lod.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="c7007039-cdb6-4feb-a27c-7c1cbff1c667_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-08-01T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="provision">LOD update</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Provision</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="42c42eeb-8cf4-4410-bdf5-a20db879d23b_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="LOD update"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/migrate_dsm.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/migrate_dsm.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/migrate_dsm.sql	(revision 60998)
@@ -0,0 +1,206 @@
+-- noinspection SqlNoDataSourceInspectionForFile
+
+-- cleanup the unnecessary functions: the following SQL produces the deletion statement list
+SELECT 'DROP FUNCTION ' || ns.nspname || '.' || proname || '(' || oidvectortypes(proargtypes) || ') CASCADE;'
+FROM pg_proc
+	INNER JOIN pg_namespace ns ON (pg_proc.pronamespace = ns.oid)
+WHERE ns.nspname = 'public'
+ORDER BY proname;
+
+-- cleanup the unnecessary triggers: the following SQL produces the deletion statement list
+SELECT 'DROP TRIGGER ' || trg.tgname || ' ON ' || tbl.relname || ';'
+FROM pg_trigger trg
+ JOIN pg_class tbl on trg.tgrelid = tbl.oid
+ JOIN pg_namespace ns ON ns.oid = tbl.relnamespace
+WHERE trg.tgname like 'notify_%';
+
+-- export the new dnet_dsm schema using
+--    pg_dump --schema-only -h localhost -U dnet dnet_dsm | gzip -c > /tmp/dnet_dsm.sql.gz
+-- rename tables and index names in order to include prefix "dsm_"
+-- import the dsm table schema to the existing openaire database:
+--    psql -h localhost -U dnet dnet_openaireplus -f dnet_dsm.sql
+
+ALTER TABLE dsm_datasources ALTER COLUMN officialname TYPE VARCHAR(512);
+ALTER TABLE dsm_datasources ALTER COLUMN englishname TYPE VARCHAR(512);
+ALTER TABLE dsm_datasources ALTER COLUMN missionstatementurl TYPE VARCHAR(512);
+ALTER TABLE dsm_datasources ALTER COLUMN citationguidelineurl TYPE VARCHAR(512);
+ALTER TABLE dsm_datasources ALTER COLUMN languages TYPE text;
+ALTER TABLE dsm_datasources ALTER COLUMN od_contenttypes TYPE text;
+ALTER TABLE dsm_datasources ALTER COLUMN subjects TYPE text;
+ALTER TABLE dsm_datasources ALTER COLUMN description TYPE text;
+ALTER TABLE dsm_datasources ALTER COLUMN certificates TYPE text;
+ALTER TABLE dsm_datasources ALTER COLUMN pidsystems TYPE text;
+
+-- insert into the new dsm_* tables picking the information from the old tables
+insert into dsm_datasources (id, officialname, englishname, websiteurl, logourl, contactemail, latitude, longitude, timezone, namespaceprefix, languages, od_contenttypes, collectedfrom, dateofvalidation,
+                             typology, provenanceaction, dateofcollection, platform, activationid, description,releasestartdate, releaseenddate, missionstatementurl, dataprovider, serviceprovider,
+                             databaseaccesstype, datauploadtype,databaseaccessrestriction, datauploadrestriction, versioning, citationguidelineurl, qualitymanagementkind,pidsystems, certificates,
+                             aggregator, issn, eissn, lissn, registeredby, subjects)
+select d.id, 
+	d.officialname, 
+	d.englishname, 
+	d.websiteurl, 
+	d.logourl, 
+	d.contactemail, 
+	d.latitude, 
+	d.longitude, 
+	d.timezone, 
+	d.namespaceprefix as namespaceprefix,
+	d.od_languages as languages,
+	d.od_contenttypes,
+	d.collectedfrom,
+	d.dateofvalidation,
+	d.datasourceclass as typology,
+	d.provenanceactionclass as provenanceaction,
+	d.dateofcollection,	
+	d.typology as platform,
+	d.activationid,
+	d.description,
+	d.releasestartdate,
+	d.releaseenddate,
+	d.missionstatementurl,
+	d.dataprovider as dataprovider,
+	d.serviceprovider as serviceprovider,
+	d.databaseaccesstype,
+	d.datauploadtype,
+	d.databaseaccessrestriction,
+	d.datauploadrestriction,
+	d.versioning,
+	d.citationguidelineurl,
+	d.qualitymanagementkind,
+	d.pidsystems,
+	d.certificates,
+	d.aggregator,
+	d.issn,
+	d.eissn,
+	d.lissn,
+	d.registeredby,
+	ARRAY_AGG(s.name) as subjects
+from datasources d
+	left outer join datasource_subject sd on (d.id = sd.datasource)
+	left outer join subjects s on (sd.subject = s.id)
+group by
+	d.id;
+
+insert into dsm_api (id, protocol, datasource, contentdescription, active, removable, typology, compatibility)
+select a.id,
+	a.protocolclass as protocol,
+	a.datasource,
+	a.contentdescriptionclass as contentdescription,
+	a.active,
+	a.removable,
+	a.typologyclass as typology,
+	a.compatibilityclass as compatibility
+from api a;
+
+update dsm_api da set metadata_identifier_path = ac.original from apicollections ac where da.id = ac.api and ac.param = 'metadata_identifier_path' ;
+update dsm_api da set last_collection_total = ac.original::integer from apicollections ac where da.id = ac.api and ac.param = 'last_collection_total' ;
+update dsm_api da set last_collection_date = ac.original::date from apicollections ac where da.id = ac.api and ac.param = 'last_collection_date' ;
+update dsm_api da set last_collection_mdid = ac.original from apicollections ac where da.id = ac.api and ac.param = 'last_collection_mdId' ;
+update dsm_api da set last_aggregation_total = ac.original::integer from apicollections ac where da.id = ac.api and ac.param = 'last_aggregation_total' ;
+update dsm_api da set last_aggregation_date = ac.original::date from apicollections ac where da.id = ac.api and ac.param = 'last_aggregation_date' ;
+update dsm_api da set last_aggregation_mdid = ac.original from apicollections ac where da.id = ac.api and ac.param = 'last_aggregation_mdId' ;
+update dsm_api da set last_download_total = ac.original::integer from apicollections ac where da.id = ac.api and ac.param = 'last_download_total' ;
+update dsm_api da set last_download_date = ac.original::date from apicollections ac where da.id = ac.api and ac.param = 'last_download_date' ;
+update dsm_api da set last_download_objid = ac.original from apicollections ac where da.id = ac.api and ac.param = 'last_download_objId' ;
+update dsm_api da set last_validation_job = ac.original from apicollections ac where da.id = ac.api and ac.param = 'last_validation_job' ;
+update dsm_api da set baseurl = CASE WHEN (ac.edited is not null and ac.edited != '') THEN ac.edited ELSE ac.original END from apicollections ac where da.id = ac.api and ac.param = 'baseUrl' ;
+
+insert into dsm_apiparams (param,value, api)
+select
+	a.param,
+	CASE
+		WHEN (a.edited is not null and a.edited != '') THEN a.edited ELSE a.original
+	END AS value,
+	a.api
+from apicollections a
+where	param != 'baseUrl' AND accessparam is true;
+
+
+INSERT INTO dsm_organizations (id, legalshortname,legalname,websiteurl, logourl,ec_legalbody, ec_legalperson, ec_nonprofit, ec_researchorganization, ec_highereducation, ec_internationalorganizationeurinterests,
+                               ec_internationalorganization, ec_enterprise, ec_smevalidated, ec_nutscode, country, collectedfrom, dateofcollection, provenanceaction)
+	SELECT
+		o.id,
+		o.legalshortname,
+		o.legalname,
+		o.websiteurl,
+		o.logourl,
+		o.ec_legalbody,
+		o.ec_legalperson,
+		o.ec_nonprofit,
+		o.ec_researchorganization,
+		o.ec_highereducation,
+		o.ec_internationalorganizationeurinterests,
+		o.ec_internationalorganization,
+		o.ec_enterprise,
+		o.ec_smevalidated,
+		o.ec_nutscode,
+		o.countryclass          AS country,
+		o.collectedfrom,
+		o.dateofcollection,
+		o.provenanceactionclass AS provenanceaction
+	FROM organizations o;
+
+INSERT INTO dsm_datasource_organization (datasource, organization)
+	SELECT
+		dorg.datasource,
+		dorg.organization
+	FROM datasource_organization dorg;
+
+
+INSERT INTO dsm_identities (pid, issuertype)
+	SELECT
+		i.pid,
+		i.issuertypeclass AS issuertype
+	FROM identities i;
+
+INSERT INTO dsm_datasourcepids (datasource, pid)
+	SELECT
+		dp.datasource,
+		dp.pid
+	FROM datasourcepids dp;
+
+-- is this table needed? --
+INSERT INTO dsm_organizationpids (organization, pid)
+	SELECT
+		op.organization,
+		op.pid
+	FROM organizationpids op;
+
+
+-- Migrate the managed status
+update dsm_datasources d set managed = true where d.id in (
+	SELECT d.id
+	FROM dsm_datasources d
+	LEFT OUTER JOIN dsm_api a ON (d.id = a.datasource)
+	LEFT OUTER JOIN apicollections ap ON (ap.api = a.id)
+	WHERE a.active = TRUE
+	  OR a.removable = TRUE
+	  OR ap.edited IS NOT NULL
+	GROUP BY d.id );
+
+
+-- !!!!! data insert complete !!!!!
+
+
+delete from organizations where id like 'opendoar%' ;
+delete from organizations where id like 're3data%' ;
+delete from organizations where collectedfrom is null ;
+
+delete from dsm_organizations where collectedfrom = 'openaire____::corda'  ;
+delete from dsm_organizations where collectedfrom = 'openaire____::snsf'  ;
+delete from dsm_organizations where collectedfrom = 'openaire____::conicytf'  ;
+delete from dsm_organizations where collectedfrom = 'openaire____::irb_hr' ;
+delete from dsm_organizations where collectedfrom = 'openaire____::fwf'  ;
+delete from dsm_organizations where collectedfrom = 'openaire____::sfi'  ;
+delete from dsm_organizations where collectedfrom = 'openaire____::wellcometrust'  ;
+delete from dsm_organizations where collectedfrom = 'openaire____::nsf'  ;
+delete from dsm_organizations where collectedfrom = 'openaire____::corda_h2020'  ;
+
+
+
+
+
+
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.validate.shadow.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.validate.shadow.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/stats.validate.shadow.xml	(revision 60998)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="d014a931-9fc1-441d-b0f2-ab54d1a05cb3_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2014-12-12T12:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Shadow StatsDB Validation</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="findStatsService" type="FindStatsService" isStart="true">
+				<DESCRIPTION>find stats service</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xquery" type="string" managedBy="user" required="false">/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='StatsManagerServiceResourceType' and .//RESOURCE_KIND/@value='ServiceResources']/HEADER/RESOURCE_IDENTIFIER/@value/string()</PARAM>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="found" to="validateShadowStats"/>
+				</ARCS>
+			</NODE>
+			<NODE name="validateShadowStats" type="ValidateShadowStats">
+				<DESCRIPTION>generates validation report stats/index</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="xqueryForServiceIdParam" type="string" managedBy="system" required="true">xqueryForStatsManagerService</PARAM>
+					<PARAM function="validValues(['test', 'beta', 'production'])" managedBy="user" name="portal" required="true" type="string">test</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/european_environment_agency_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/european_environment_agency_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/european_environment_agency_context.xsl	(revision 60998)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+    <xsl:output indent="yes"/>
+
+    <xsl:template match="/">
+        <fundings>
+            <fundingtree>
+                <funder>
+                    <id>euenvagency_::EEA</id>
+                    <shortname>EEA</shortname>
+                    <name>European Environment Agency</name>
+                    <originalname>European Environment Agency</originalname>
+                    <jurisdiction>EU</jurisdiction>
+                </funder>
+            </fundingtree>
+        </fundings>
+    </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/dataFlowMonitoring-index-trigger.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/dataFlowMonitoring-index-trigger.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/provision/dataFlowMonitoring-index-trigger.xml	(revision 60998)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="e36596b5-ebf2-4de5-885e-925f0369c9b3_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+		<RESOURCE_TYPE value="WorkflowDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2016-04-28T12:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<WORKFLOW_NAME>Trigger Index Monitoring Scenario</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="triggerIndexScenario" type="TriggerIndexMonitoringScenario" isStart="true">
+				<DESCRIPTION>Trigger</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="mdFormat" type="string" managedBy="user" required="true" function="validValues(['TMF', 'DMF'])"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/gsrt_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/gsrt_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/gsrt_contexts.xsl	(revision 60998)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0"
+                exclude-result-prefixes="fn">
+<!--
+    <xsl:variable name="namespacePrefix" select="string('gsrt________')"/>
+    <xsl:variable name="funderID" select="concat($namespacePrefix, '::GSRT')"/>-->
+
+    <xsl:template match="/">
+        <fundingtree>
+            <funder>
+                <id>gsrt________::GSRT</id>
+                   <!-- <xsl:value-of select="$funderID"/>-->
+
+                <!--</id>-->
+                <shortname>GSRT</shortname>
+                <name>General Secretariat of Research and Technology (GSRT)</name>
+                <originalname>General Secretariat of Research and Technology</originalname>
+                <jurisdiction>GR</jurisdiction>
+            </funder>
+
+        </fundingtree>
+
+    </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/dfg_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/dfg_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/dfg_context.xsl	(revision 60998)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" version="1.0"
+                exclude-result-prefixes="fn" xmlns:utils="eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions">
+
+    <xsl:variable name="namespacePrefix" select="string('dfgf________')"/>
+    <xsl:variable name="funderID" select="concat($namespacePrefix, '::DFG')"/>
+
+    <xsl:template match="/">
+        <fundings>
+            <fundingtree>
+                <funder>
+                    <id>
+                        <xsl:value-of select="$funderID"/>
+                    </id>
+                    <shortname>DFG</shortname>
+                    <name>Deutsche Forschungsgemeinschaft</name>
+                    <jurisdiction>DE</jurisdiction>
+                </funder>
+                <xsl:variable name="stream" select ="normalize-space(.//column[@name='Funding Programme'])" />
+                <xsl:variable name="stream_id" select="utils:md5($stream)"/>
+                <xsl:if test="string-length($stream_id) > 0">
+                    <funding_level_0>
+                        <id>
+                            <xsl:value-of select="concat($funderID, '::', $stream_id)"/>
+                        </id>
+
+                        <description>
+                            <xsl:value-of select="$stream"/>
+                        </description>
+                        <name>
+                            <xsl:value-of select="$stream"/>
+                        </name>
+                        <parent></parent>
+                        <class>dfg:fundingStream</class>
+                    </funding_level_0>
+                </xsl:if>
+            </fundingtree>
+        </fundings>
+    </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_erc_pubsrepository.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_erc_pubsrepository.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_erc_pubsrepository.sql	(revision 60998)
@@ -0,0 +1,12 @@
+INSERT INTO datasources (_dnet_resource_identifier_, id, officialname, englishname, websiteurl, logourl, contactemail, latitude, longitude, timezone, namespaceprefix, collectedfrom, datasourceclass)
+VALUES ('openaire____::erc', 'openaire____::erc', 'European Research Council (ERC)', 'European Research Council (ERC)', 'http://erc.europa.eu',
+                             'http://erc.europa.eu/sites/default/files/content/LOGO-ERC.jpg', 'Alexis-Michel.MUGABUSHAKA@ec.europa.eu', 50.85, 4.35, 1,
+                             'erc_________', 'infrastruct_::openaire', 'pubsrepository::unknown');
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass)
+VALUES ('api_________::erc::0', 'api_________::erc::0', 'file', 'openaire____::erc', 'pubsrepository::unknown', 'openaire3.0');
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', 'file:///var/lib/dnet/erc/PUB_REPORTED.xml', 'api_________::erc::0');
+INSERT INTO apicollections (param, original, api) VALUES ('splitOnElement', 'RECORD', 'api_________::erc::0');
+INSERT INTO apicollections (param, original, api, accessparam) VALUES ('metadata_identifier_path', '//PUB_ID', 'api_________::erc::0', FALSE);
+
+UPDATE apicollections
+SET _dnet_resource_identifier_ = api || '@@' || param;
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationCountryToDatasource.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationCountryToDatasource.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/propagation/propagationCountryToDatasource.xml	(revision 60998)
@@ -0,0 +1,76 @@
+<RESOURCE_PROFILE>
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="9986e1e0-ce6b-41aa-a49e-46a651c10d6b_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2018-12-03T10:47:41+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>Propagate Country from Institutional Repos</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Data Provision</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+            <NODE isStart="true" name="setOutputFile" type="SetEnvParameter">
+                <DESCRIPTION>Set the CSV file path on HDFS</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">csvPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/tmp/db_openaireplus_services_beta.countryPropagation</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupCsv"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="hadoopConfig" type="SetClusterAndTable">
+                <DESCRIPTION>Set table name</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">DM</PARAM>
+                    <PARAM managedBy="system" name="tableParam" required="true" type="string">tableName</PARAM>
+                    <PARAM managedBy="user" name="table" required="true" type="string">db_openaireplus_services_beta</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="cleanupCsv"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="cleanupCsv" type="DeleteHdfsPathJob">
+                <DESCRIPTION>CSV files cleanup</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'path' : 'csvPath',
+                        'cluster' : 'cluster'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="propagateCountry"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="false" name="propagateCountry" type="SubmitHadoopJob">
+                <DESCRIPTION>Propagation of country from institutional repos</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM function="validValues(['propagationCountryFromInstitutionalRepositoriesSaveToFile', 'propagationCountryFromInstitutionalRepositories'])" managedBy="user" name="hadoopJob" required="true" type="string">propagationCountryFromInstitutionalRepositories</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'cluster' : 'cluster',
+                        'hbase.mapred.inputtable' : 'tableName',
+                        'hbase.mapred.outputtable' : 'tableName',
+                        'hbase.mapreduce.inputtable' : 'tableName',
+                        'hbase.mapreduce.outputtable' : 'tableName',
+                        'mapred.output.dir' : 'csvPath'
+                        }
+                    </PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+        </CONFIGURATION>
+        <STATUS>
+            <LAST_EXECUTION_ID>wf_20190613_071747_187</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2019-06-13T07:46:27+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/distcp.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/distcp.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/distcp.xml	(revision 60998)
@@ -0,0 +1,62 @@
+<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <HEADER>
+        <RESOURCE_IDENTIFIER value="37a026fd-8707-4390-9d8c-b1566d2a1e3f_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl"/>
+        <RESOURCE_TYPE value="WorkflowDSResourceType"/>
+        <RESOURCE_KIND value="WorkflowDSResources"/>
+        <RESOURCE_URI value=""/>
+        <DATE_OF_CREATION value="2019-10-17T08:44:46+00:00"/>
+    </HEADER>
+    <BODY>
+        <WORKFLOW_NAME>distcp</WORKFLOW_NAME>
+        <WORKFLOW_TYPE>Export InfoSpace</WORKFLOW_TYPE>
+        <WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+        <CONFIGURATION start="manual">
+
+            <NODE isStart="true" name="setSourcePath" type="SetEnvParameter">
+                <DESCRIPTION>Set the source path on HDFS (DM)</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">sourcePath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/tmp/db_openaireplus_services_beta.export.2019.08.17</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="distcp"/>
+                </ARCS>
+            </NODE>
+            <NODE isStart="true" name="setTargetPath" type="SetEnvParameter">
+                <DESCRIPTION>Set the target path on HDFS (IIS)</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="parameterName" required="true" type="string">targetPath</PARAM>
+                    <PARAM managedBy="user" name="parameterValue" required="true" type="string">/tmp</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="distcp"/>
+                </ARCS>
+            </NODE>
+            <NODE isJoin="true" name="distcp" type="SubmitHadoopJob">
+                <DESCRIPTION>distcp</DESCRIPTION>
+                <PARAMETERS>
+                    <PARAM managedBy="system" name="hadoopJob" required="true" type="string">distcpJob</PARAM>
+                    <PARAM managedBy="system" name="cluster" required="true" type="string">IIS</PARAM>
+                    <PARAM managedBy="system" name="envParams" required="true" type="string">
+                        {
+                        'sourcePath' : 'sourcePath',
+                        'targetPath' : 'targetPath'
+                        }
+                    </PARAM>
+                    <PARAM managedBy="user" name="simulation" required="true" type="boolean">false</PARAM>
+                    <PARAM managedBy="system" name="oozieReportActionsCsv" required="true" type="string">build-report</PARAM>
+                </PARAMETERS>
+                <ARCS>
+                    <ARC to="success"/>
+                </ARCS>
+            </NODE>
+
+        </CONFIGURATION>
+        <STATUS>
+            <LAST_EXECUTION_ID>wf_20190805_085505_893</LAST_EXECUTION_ID>
+            <LAST_EXECUTION_DATE>2019-08-07T05:19:02+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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_h2020.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_h2020.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_h2020.sql	(revision 60998)
@@ -0,0 +1,146 @@
+-- REMEMBER TO TO REGISTER THE FOLLOWING VOCABULARY (the TOAS):
+-- f9b99dfb-ddd3-4fe1-8ee5-5c7acc5fc901_Vm9jYWJ1bGFyeURTUmVzb3VyY2VzL1ZvY2FidWxhcnlEU1Jlc291cmNlVHlwZQ==
+--  and then launch the consistency workflow to update class/scheme into the database
+
+INSERT INTO datasources (
+	id,
+	officialname,
+	englishname,
+	websiteurl,
+	logourl,
+	contactemail,
+	namespaceprefix,
+	collectedfrom,
+	datasourceclass,
+	_dnet_resource_identifier_
+) VALUES (
+	'openaire____::corda_h2020',
+	'CORDA - COmmon Research DAta Warehouse - Horizon 2020',
+	'CORDA - COmmon Research DAta Warehouse - Horizon 2020',
+	'http://ec.europa.eu/programmes/horizon2020/',
+	'http://ec.europa.eu/programmes/horizon2020/sites/horizon2020/themes/h2020/images/bannerEmptyH2020.jpg',
+	'ec-fp7-it-helpdesk@ec.europa.eu',
+	'corda__h2020',
+	'infrastruct_::openaire',
+	'entityregistry',
+	'openaire____::corda_h2020'
+);
+
+INSERT INTO api (
+	id,
+	protocolclass,
+	datasource,
+	_dnet_resource_identifier_,
+	typologyclass,
+	compatibilityclass
+) VALUES (
+	'openaire____::corda_h2020::0',
+	'filesystem',
+	'openaire____::corda_h2020',
+	'openaire____::corda_h2020::0',
+	'entityregistry',
+	'native'
+);
+
+INSERT INTO apicollections (
+	param,
+	original,
+	api,
+	_dnet_resource_identifier_
+) VALUES (
+	'extensions',
+	'xml',
+	'openaire____::corda_h2020::0',
+	'openaire____::corda_h2020::0@@extensions'
+);
+
+INSERT INTO apicollections (
+	param,
+	original,
+	api,
+	_dnet_resource_identifier_
+) VALUES (
+	'baseUrl',
+	'file:///var/lib/dnet/corda_h2020',
+	'openaire____::corda_h2020::0',
+	'openaire____::corda_h2020::0@@baseUrl'
+);
+
+INSERT INTO apicollections (
+	param,
+	original,
+	api,
+	_dnet_resource_identifier_,
+	accessparam
+) VALUES (
+	'metadata_identifier_path',
+	'//project/@id',
+	'openaire____::corda_h2020::0',
+	'openaire____::corda_h2020::0@@metadata_identifier_path',
+	FALSE
+);
+
+--
+INSERT INTO datasources (
+	id,
+	officialname,
+	englishname,
+	websiteurl,
+	logourl,
+	contactemail,
+	namespaceprefix,
+	collectedfrom,
+	datasourceclass,
+	_dnet_resource_identifier_
+) VALUES (
+	'openaire____::corda_h2020_fundings',
+	'CORDA - COmmon Research DAta Warehouse - Horizon 2020 - Fundings',
+	'CORDA - COmmon Research DAta Warehouse - Horizon 2020 - Fundings',
+	'http://ec.europa.eu/programmes/horizon2020/',
+	'http://ec.europa.eu/programmes/horizon2020/sites/horizon2020/themes/h2020/images/bannerEmptyH2020.jpg',
+	'ec-fp7-it-helpdesk@ec.europa.eu',
+	'ec__________',
+	'infrastruct_::openaire',
+	'entityregistry',
+	'openaire____::corda_h2020'
+);
+
+INSERT INTO api (
+	id,
+	protocolclass,
+	datasource,
+	_dnet_resource_identifier_,
+	typologyclass,
+	compatibilityclass
+) VALUES (
+	'openaire____::corda_h2020_fundings::0',
+	'filesystem',
+	'openaire____::corda_h2020_fundings',
+	'openaire____::corda_h2020_fundings::0',
+	'entityregistry',
+	'native'
+);
+
+INSERT INTO apicollections (
+	param,
+	original,
+	api,
+	_dnet_resource_identifier_
+) VALUES (
+	'extensions',
+	'xml',
+	'openaire____::corda_h2020_fundings::0',
+	'openaire____::corda_h2020_fundings::0@@extensions'
+);
+
+INSERT INTO apicollections (
+	param,
+	original,
+	api,
+	_dnet_resource_identifier_
+) VALUES (
+	'baseUrl',
+	'file:///var/lib/dnet/corda_h2020_fundings',
+	'openaire____::corda_h2020_fundings::0',
+	'openaire____::corda_h2020_fundings::0@@baseUrl'
+);
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importDOIBoost.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importDOIBoost.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/importDOIBoost.xml	(revision 60998)
@@ -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/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nsf_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nsf_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nsf_contexts.xsl	(revision 60998)
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+                exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('nsf_________')"/>
+	<xsl:variable name="funderID" select="concat($namespacePrefix, '::NSF')"/>
+
+	<xsl:template match="/">
+		<fundings>
+			<fundingtree>
+				<funder>
+					<id>
+						<xsl:value-of select="$funderID"/>
+					</id>
+					<shortname>NSF</shortname>
+					<name>National Science Foundation</name>
+					<jurisdiction>US</jurisdiction>
+				</funder>
+			</fundingtree>
+			<xsl:for-each select=".//funding">
+				<xsl:variable name="p1" select="normalize-space(./orgDirectorateAbbr)"/>
+				<xsl:variable name="p2" select="normalize-space(./orgDivisionAbbr)"/>
+
+				<fundingtree>
+					<funder>
+						<id>
+							<xsl:value-of select="$funderID"/>
+						</id>
+						<shortname>NSF</shortname>
+						<name>National Science Foundation</name>
+						<jurisdiction>US</jurisdiction>
+					</funder>
+					<xsl:if test="string-length($p1) &gt; 0">
+						<xsl:choose>
+							<xsl:when test="string-length($p2) &gt; 0">
+								<xsl:variable name="level0" select="concat($funderID, '::', $p1)"/>
+								<xsl:variable name="level1" select="concat($funderID, '::', $p1, '::', $p2)"/>
+								<funding_level_1>
+									<id>
+										<xsl:value-of select="$level1"/>
+									</id>
+									<description>
+										<xsl:value-of select="./orgDivisionName"/>
+									</description>
+									<name>
+										<xsl:value-of select="./orgDivisionName"/>
+									</name>
+									<parent>
+										<funding_level_0>
+											<id>
+												<xsl:value-of select="$level0"/>
+											</id>
+											<description>
+												<xsl:value-of select="./orgDirectorateName"/>
+											</description>
+											<name>
+												<xsl:value-of select="./orgDirectorateName"/>
+											</name>
+											<parent/>
+											<class>nsf:fundingStream</class>
+										</funding_level_0>
+									</parent>
+								</funding_level_1>
+							</xsl:when>
+							<xsl:otherwise>
+								<xsl:variable name="level0" select="concat($funderID, '::', $p1)"/>
+								<funding_level_0>
+									<id>
+										<xsl:value-of select="$level0"/>
+									</id>
+									<description>
+										<xsl:value-of select="./orgDirectorateName"/>
+									</description>
+									<name>
+										<xsl:value-of select="./orgDirectorateName"/>
+									</name>
+									<parent/>
+									<class>nsf:fundingStream</class>
+								</funding_level_0>
+							</xsl:otherwise>
+						</xsl:choose>
+					</xsl:if>
+				</fundingtree>
+			</xsl:for-each>
+		</fundings>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/odf2hbase.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/odf2hbase.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/hbase/odf2hbase.xml	(revision 60998)
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER
+				value="939f1075-70ed-4fbd-9055-ea16e5984531_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>ODF to HBase</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>Data Load</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="setTable" type="SetHBaseTable" isStart="true">
+				<DESCRIPTION>set hbase table</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM name="table" type="string" managedBy="user" required="true"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="mapreduce"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="prepareImport" type="PrepareMDStoreImport" isStart="true">
+				<DESCRIPTION>Configure export to HDFS</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hdfsPathParam" managedBy="system">hdfsPath</PARAM>
+					<PARAM required="true" type="string" name="hdfsPath" managedBy="user">/tmp/mdstores_odf-store-cleaned.seq</PARAM>
+					<PARAM required="true" type="string" name="mappingParam" managedBy="system">xslt</PARAM>
+					<PARAM required="true" type="string" name="mapping" managedBy="user" function="obtainValues('odf2hbaseMappings', {})"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="reuseHdfsRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="reuseHdfsRecords" type="ReuseHdfsRecords">
+				<DESCRIPTION>reuse mdstore records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="boolean" name="reuseMdRecords" managedBy="user">false</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC name="true" to="doneExport"/>
+					<ARC name="false" to="exportRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="exportRecords" type="MDStoreBatchExporter">
+				<DESCRIPTION>Fetch mdstore records</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="format" managedBy="system">ODF</PARAM>
+					<PARAM required="true" type="string" name="layout" managedBy="system">store</PARAM>
+					<PARAM required="true" type="string" name="interpretation" managedBy="system">cleaned</PARAM>
+					<PARAM required="true" type="string" name="outputEprParam" managedBy="system">records_epr</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="storeHdfsRecords"/>
+				</ARCS>
+			</NODE>
+			<NODE name="storeHdfsRecords" type="StoreHdfsRecords">
+				<DESCRIPTION>Store records to HDFS</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="inputEprParam" managedBy="system">records_epr</PARAM>
+					<PARAM required="true" type="string" name="hdfsPathParam" managedBy="system">hdfsPath</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="doneExport"/>
+				</ARCS>
+			</NODE>
+			<NODE name="doneExport">
+				<DESCRIPTION></DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="mapreduce"/>
+				</ARCS>
+			</NODE>
+			<NODE name="mapreduce" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>Run M/R import Job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">mdStoreHdfsImportJob</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">false</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'mapred.input.dir' : 'hdfsPath',
+						'hbase.import.xslt' : 'xslt',
+						'hbase.mapred.outputtable' : 'hbaseTable'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nwo_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nwo_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nwo_contexts.xsl	(revision 60998)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+                exclude-result-prefixes="fn">
+
+	<xsl:output indent="yes"/>
+
+	<xsl:template match="/">
+		<fundings>
+			<fundingtree>
+				<funder>
+					<id>nwo_________::NWO</id>
+					<shortname>NWO</shortname>
+					<name>Netherlands Organisation for Scientific Research (NWO)</name>
+					<jurisdiction>NL</jurisdiction>
+				</funder>
+			</fundingtree>
+		</fundings>
+	</xsl:template>
+</xsl:stylesheet>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/openorgs/openorgs_new_similarities.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/openorgs/openorgs_new_similarities.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/openorgs/openorgs_new_similarities.xml	(revision 60998)
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="b864a2f8-27fd-4d16-8f64-3f097dbf801a_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>Export simrels to OpenOrgs DB</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>OpenOrgs</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+		
+			<NODE name="setHdfsFile" type="SetHdfsFile" isStart="true">
+				<DESCRIPTION/>
+				<PARAMETERS>
+					<PARAM name="hdfsPath" type="string" managedBy="user" required="true">/tmp/openOrgs.simrels.tmp.seq</PARAM>
+					<PARAM name="hdfsPathParam" type="string" managedBy="system" required="true">openOrgsExportPath</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupHDFS"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="cleanupHDFS" type="DeleteHdfsPathJob">
+				<DESCRIPTION>hdfs cleanup (xml)</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'openOrgsExportPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="exportSimrels"/>
+				</ARCS>
+			</NODE>
+		
+			<NODE name="exportSimrels" type="SubmitHadoopJob">
+				<DESCRIPTION>ExportSimrRels M/R job</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">exportOpenOrgsSimilarities</PARAM>
+					<PARAM required="true" type="string" name="cluster" managedBy="system">DM</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'hbase.mapred.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapred.outputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.inputtable' : 'hbase.mapred.datatable',
+						'hbase.mapreduce.outputtable' : 'hbase.mapred.datatable'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'mapred.output.dir' : 'openOrgsExportPath'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="params" managedBy="system">
+						{}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nih_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nih_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nih_contexts.xsl	(revision 60998)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+                exclude-result-prefixes="fn">
+
+	<xsl:output indent="yes"/>
+
+	<xsl:template match="/">
+		<fundings>
+			<fundingtree>
+				<funder>
+					<id>nih_________::NIH</id>
+					<shortname>NIH</shortname>
+					<name>National Institutes of Health</name>
+					<jurisdiction>US</jurisdiction>
+				</funder>
+			</fundingtree>
+			<xsl:for-each select="//IC_NAME[./text() != '']">
+				<fundingtree>
+					<funder>
+						<id>nih_________::NIH</id>
+						<shortname>NIH</shortname>
+						<name>National Institutes of Health</name>
+						<jurisdiction>US</jurisdiction>
+					</funder>
+					<xsl:variable name="fundingName" select="fn:upper-case(normalize-space(.))"/>
+					<funding_level_0>
+						<id>
+							<xsl:value-of select="concat('nih_________::NIH::', $fundingName)"/>
+						</id>
+						<name>
+							<xsl:value-of select="$fundingName"/>
+						</name>
+						<description>
+							<xsl:value-of select="$fundingName"/>
+						</description>
+						<parent></parent>
+						<class>nih:fundingStream</class>
+					</funding_level_0>
+				</fundingtree>
+			</xsl:for-each>
+		</fundings>
+	</xsl:template>
+</xsl:stylesheet>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentEvents.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentEvents.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculateEnrichmentEvents.meta.xml	(revision 60998)
@@ -0,0 +1,26 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="e22a46b3-a808-4957-8d5a-138d30b9cc1b_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-06-15T10:02:39+02:00"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="notificationBroker">Calculate person distribution</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION/>
+		<METAWORKFLOW_SECTION>Notification Broker</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL>michele.artini@isti.cnr.it</ADMIN_EMAIL>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="a6901d21-c09d-43dc-8fc9-236c32069293_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Calculate person distribution">
+				<WORKFLOW id="b9b6cd8a-8ee2-4a74-9344-f087eeac29ed_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Calculate enrichment events"/>
+				<WORKFLOW id="6472af0e-f2ed-4ee5-835f-de698d89a7a7_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Calculate enrichment Project events"/>
+				<WORKFLOW id="120a074a-8b1b-485e-9d1c-1d0466b056ac_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Calculate enrichment Software links events"/>
+			</WORKFLOW>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/transform.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/transform.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/transform.wf.st	(revision 60998)
@@ -0,0 +1,76 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="PREPARE_ENV_TRANSFORMATION"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_ENV_TRANSFORMATION" type="PrepareEnvTransformHadoopJobNode">
+    <DESCRIPTION>Retrieve all the parameters needed to run the transformation workflow</DESCRIPTION>
+    <PARAMETERS>
+        <PARAM category="TRANSFORMATION_RULE_ID" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')" managedBy="user" name="ruleId" required="true" type="string"></PARAM>
+        <PARAM required="true" type="string" name="mdstoreInput" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+        <PARAM required="true" type="string" name="mdstoreOutput" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+    </PARAMETERS>
+    <ARCS>
+        <ARC to="TRANSFORM_HADOOP"/>
+    </ARCS>
+</NODE>
+
+<NODE name="TRANSFORM_HADOOP" type="SubmitDnetHadoopJobNode">
+    <DESCRIPTION>Start the Hadoop Job</DESCRIPTION>
+    <PARAMETERS>
+        <PARAM managedBy="system" name="hadoopJob" required="true" type="string">executeOozieJob</PARAM>
+        <PARAM managedBy="user" name="cluster" required="true" type="string">DHP</PARAM>
+        <PARAM managedBy="system" name="envParams" required="true" type="string">
+            {
+                "mdStoreInputId":"mdstoreInput",
+                "mdStoreOutputId":"mdstoreOutput",
+                "transformationRuleId":"transformationRule",
+                "dateOfTransformation":"timestamp",
+                "workflowId":"workflowId",
+                "oozie.wf.application.path":"oozieWfPath"
+            }
+        </PARAM>
+        <PARAM managedBy="system" name="params" required="true" type="string">
+            {
+                 'transformationPlugin':'XSLT_TRANSFORM'
+            }
+        </PARAM>
+        <PARAM managedBy="system" name="oozieReportActionsCsv" required="true" type="string">CommitVersion</PARAM>
+    </PARAMETERS>
+    <ARCS>
+        <ARC to="UPDATE_INFO"/>
+    </ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraFieldHadoop">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculatePersonDistribution.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculatePersonDistribution.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/broker/calculatePersonDistribution.meta.xml	(revision 60998)
@@ -0,0 +1,22 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="b57d4eed-1eb6-406d-adb6-4896208c15dc_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-06-15T10:02:39+02:00"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="notificationBroker">Calculate person distribution</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION/>
+		<METAWORKFLOW_SECTION>Notification Broker</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL>michele.artini@isti.cnr.it</ADMIN_EMAIL>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="a6901d21-c09d-43dc-8fc9-236c32069293_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Calculate person distribution"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/reposStoresConsistency.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/reposStoresConsistency.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/consistency/reposStoresConsistency.meta.xml	(revision 60998)
@@ -0,0 +1,26 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="eaf2e7e2-304b-4d22-8312-f634399be9da_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2015-06-15T10:02:39+02:00"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="consistency">Datasources and stores</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION/>
+		<METAWORKFLOW_SECTION>InfoSpace Consistency</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL>michele.artini@isti.cnr.it</ADMIN_EMAIL>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="e5bb911b-3fe2-403a-a757-6c1f89ff27e8_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Find Invalid Profiles">
+				<WORKFLOW id="3a5aea4a-cbeb-445e-b39a-52f40f42fa50_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Refresh Mdstore Sizes">
+					<WORKFLOW id="671e4507-3b0e-4318-8065-ddb856182e9f_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="Repos-Stores consistency"/>
+				</WORKFLOW>
+			</WORKFLOW>
+		</CONFIGURATION>
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/corda_h2020_substreams_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/corda_h2020_substreams_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/corda_h2020_substreams_contexts.xsl	(revision 60998)
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('ec__________')"/>
+	<xsl:variable name="funderID" select="concat($namespacePrefix, '::EC')"/>
+
+	<xsl:template match="/">
+		<fundingtree>
+			<funder>
+				<id>
+					<xsl:value-of select="$funderID"/>
+				</id>
+				<shortname>EC</shortname>
+				<name>European Commission</name>
+				<jurisdiction>EU</jurisdiction>
+			</funder>
+			<xsl:variable name="toaCode" select=".//ProjectTOACode"/>
+			<xsl:choose>
+				<xsl:when test="$toaCode and starts-with($toaCode, 'ERC-')">
+					<xsl:call-template name="ERC">
+						<xsl:with-param name="toaCode" select="$toaCode"/>
+					</xsl:call-template>
+				</xsl:when>
+				<xsl:when test="$toaCode and not(starts-with($toaCode, 'ERC-'))">
+					<xsl:call-template name="other">
+						<xsl:with-param name="toaCode" select="$toaCode"/>
+					</xsl:call-template>
+				</xsl:when>
+				<xsl:otherwise>
+					<xsl:call-template name="h2020"/>
+				</xsl:otherwise>
+			</xsl:choose>
+		</fundingtree>
+	</xsl:template>
+
+	<xsl:template name="h2020">
+		<funding_level_0>
+			<id>
+				<xsl:value-of select="concat($funderID, '::H2020')"/>
+			</id>
+			<name>H2020</name>
+			<description>Horizon 2020 Framework Programme</description>
+			<parent/>
+			<class>ec:h2020fundings</class>
+		</funding_level_0>
+	</xsl:template>
+
+	<xsl:template name="ERC">
+		<xsl:param name="toaCode"/>
+		<xsl:variable name="toaId" select="concat($funderID, '::H2020::ERC::', $toaCode)"/>
+		<funding_level_2>
+			<id>
+				<xsl:value-of select="$toaId"/>
+			</id>
+			<description>
+				<xsl:value-of select=".//ProjectTOADescr"/>
+			</description>
+			<name>
+				<xsl:value-of select="$toaCode"/>
+			</name>
+			<class>ec:h2020toas</class>
+			<parent>
+				<funding_level_1>
+					<id>
+						<xsl:value-of select="concat($funderID, '::H2020::ERC')"/>
+					</id>
+					<description>
+						<xsl:value-of select="string('European Research Council')"/>
+					</description>
+					<name>
+						<xsl:value-of select="string('ERC')"/>
+					</name>
+					<class>ec:h2020fundings</class>
+					<parent>
+						<funding_level_0>
+							<id>
+								<xsl:value-of select="concat($funderID, '::H2020')"/>
+							</id>
+							<name>H2020</name>
+							<description>Horizon 2020 Framework Programme</description>
+							<parent/>
+							<class>ec:h2020fundings</class>
+						</funding_level_0>
+					</parent>
+				</funding_level_1>
+			</parent>
+		</funding_level_2>
+	</xsl:template>
+
+	<xsl:template name="other">
+		<xsl:param name="toaCode"/>
+		<xsl:variable name="toaId" select="concat($funderID, '::H2020::', $toaCode)"/>
+		<funding_level_1>
+			<id>
+				<xsl:value-of select="$toaId"/>
+			</id>
+			<description>
+				<xsl:value-of select=".//ProjectTOADescr"/>
+			</description>
+			<name>
+				<xsl:value-of select="$toaCode"/>
+			</name>
+			<class>ec:h2020toas</class>
+			<parent>
+				<funding_level_0>
+					<id>
+						<xsl:value-of select="concat($funderID, '::H2020')"/>
+					</id>
+					<name>H2020</name>
+					<description>Horizon 2020 Framework Programme</description>
+					<parent/>
+					<class>ec:h2020fundings</class>
+				</funding_level_0>
+			</parent>
+		</funding_level_1>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,53 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDC"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDC" type="DeleteMDStoreHadoop">
+	<DESCRIPTION>Delete the oai_dc mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreOAF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreOAF" type="DeleteMDStoreHadoop">
+	<DESCRIPTION>Delete the OAF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-preprocessingV2.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-preprocessingV2.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/iis-preprocessingV2.xml	(revision 60998)
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="4801c33c-66ca-4ab6-af64-aa812194ec67_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>IIS preprocessing V2</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>IIS</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="start" isStart="true">
+				<DESCRIPTION>start</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="prepareActionSets"/>
+					<ARC to="prepareParameters"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareActionSets" type="PrepareActionSets">
+				<DESCRIPTION>prepare action sets</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="sets" managedBy="system">
+						[
+						{
+						'set' : 'iis-referenced-projects-preprocessing',
+						'jobProperty' : 'export_action_set_id_document_referencedProjects',
+						'enablingProperty' : 'active_referencedProjects_export',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-referenced-datasets-preprocessing',
+						'jobProperty' : 'export_action_set_id_document_referencedDatasets',
+						'enablingProperty' : 'active_referencedDatasets_export',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-wos-entities',
+						'jobProperty' : 'export_action_set_id_entity_wos',
+						'enablingProperty' : 'active_entity_wos_export',
+						'enabled' : 'true'
+						},
+						{
+						'set' : 'iis-dataset-entities-preprocessing',
+						'jobProperty' : 'export_action_set_id_entity_dataset',
+						'enablingProperty' : 'active_entity_dataset_export',
+						'enabled' : 'true'
+						}
+						]
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="preprocessing"/>
+				</ARCS>
+			</NODE>
+			<NODE name="prepareParameters" type="PreparePreprocessParamsV2">
+				<DESCRIPTION>prepare parameters</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="islookupLocationParam" managedBy="system">import_islookup_service_location</PARAM>
+					<PARAM required="true" type="string" name="objectStoreLocationParam" managedBy="system">import_content_object_store_location</PARAM>
+					<PARAM required="true" type="string" name="mdStoreStoreLocationParam" managedBy="system">import_mdstore_service_location</PARAM>
+					<PARAM required="true" type="string" name="mdStoreDatasetParam" managedBy="system">import_dataset_mdstore_ids_csv</PARAM>
+					<PARAM required="true" type="string" name="mdStoreWosParam" managedBy="system">import_wos_mdstore_id</PARAM>
+					<PARAM required="true" type="string" name="databaseServiceLocationParam" managedBy="system">import_database_service_location</PARAM>
+					<PARAM required="true" type="string" name="dataciteObjectStoreParam" managedBy="system">import_content_datacite_objectstores_csv</PARAM>
+					<PARAM required="true" type="string" name="wosObjectStorePlaintextParam" managedBy="system">import_content_wos_plaintext_objectstores_csv</PARAM>
+					<PARAM required="true" type="string" name="oozieWfAppPathParam" managedBy="system">oozie.wf.application.path</PARAM>
+					<PARAM required="true" type="string" name="oozieWfAppPath" managedBy="user">/tmp/integration/apps/preprocessing</PARAM>
+					<PARAM required="true" type="string" name="clusterName" managedBy="user" function="validValues(['IIS','DM'])">DM</PARAM>
+					<PARAM required="false" type="string" name="objectStoreBlacklistCSV" managedBy="user"></PARAM>
+					<PARAM required="true" type="string" name="importProjectConceptsContextCSVParam" managedBy="system">import_project_concepts_context_ids_csv</PARAM>
+					<PARAM required="true" type="string" name="importProjectConceptsContextCSV" managedBy="user">fet-fp7,fet-h2020</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="preprocessing"/>
+				</ARCS>
+			</NODE>
+			<NODE name="preprocessing" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>IIS preprocessing</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">iisPreprocessingJobV2</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'cluster' : 'cluster',
+						'oozie.wf.application.path' : 'oozie.wf.application.path',
+						'import_content_object_store_location' : 'import_content_object_store_location',
+						'import_mdstore_service_location' : 'import_mdstore_service_location',
+						'import_islookup_service_location' : 'import_islookup_service_location',
+						'import_project_concepts_context_ids_csv' : 'import_project_concepts_context_ids_csv',
+						'import_dataset_mdstore_ids_csv' : 'import_dataset_mdstore_ids_csv',
+						'import_wos_mdstore_id' : 'import_wos_mdstore_id',
+						'import_database_service_location' : 'import_database_service_location',
+						'import_content_datacite_objectstores_csv' : 'import_content_datacite_objectstores_csv',
+						'import_content_wos_plaintext_objectstores_csv' : 'import_content_wos_plaintext_objectstores_csv',
+						'export_action_set_id_document_referencedProjects' : 'export_action_set_id_document_referencedProjects',
+						'export_action_set_id_document_referencedDatasets' : 'export_action_set_id_document_referencedDatasets',
+						'export_action_set_id_entity_wos' : 'export_action_set_id_entity_wos',
+						'export_action_set_id_entity_dataset' : 'export_action_set_id_entity_dataset'
+						}
+					</PARAM>
+					<PARAM required="true" type="string" name="sysParams" managedBy="system">
+						{
+						'import_database_dbname' : 'dnet.openaire.db.name'
+						}
+					</PARAM>
+					<PARAM required="true" type="boolean" name="simulation" managedBy="user">false</PARAM>
+					<PARAM required="true" type="string" name="oozieReportActionsCsv" managedBy="system">build-report</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/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedBy/hostedby_manual_entries.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedBy/hostedby_manual_entries.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedBy/hostedby_manual_entries.sql	(revision 60998)
@@ -0,0 +1 @@
+INSERT INTO hostedby_map (_dnet_resource_identifier_, oa_source_id, entry, datasourceid) VALUES ('RICE.KINDER@@openaire____::datacite', 'openaire____::datacite', 'RICE.KINDER', 're3data_____::r3d100012884');
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/importHBaseTable.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/importHBaseTable.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/importHBaseTable.xml	(revision 60998)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="cf476a33-ba1f-413a-80e0-c7d194faf793_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>Import HBase Table</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>IIS</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="setCsvPath" type="SetEnvParameter" isStart="true">
+				<DESCRIPTION>Set the CSV file path on HDFS</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="parameterName" required="true" type="string">csvPath</PARAM>
+					<PARAM managedBy="user" name="parameterValue" required="true" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="import"/>
+				</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>
+					<PARAM required="true" type="string" name="table" managedBy="user"/>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="import"/>
+				</ARCS>
+			</NODE>
+
+
+			<NODE name="import" type="SubmitHadoopJob" isJoin="true">
+				<DESCRIPTION>export the information space as sequence file</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">informationSpaceImportJob</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'cluster' : 'cluster',
+						'hbase.mapred.outputtable' : 'tableName',
+						'hbase.mapreduce.outputtable' : 'tableName',
+						'mapred.input.dir' : 'csvPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
+
+
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/exportHBaseTable.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/exportHBaseTable.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/iis/exportHBaseTable.xml	(revision 60998)
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="452dc13e-0544-478b-8b23-bc3f90cc7531_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>Export HBase Table</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>IIS</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="setCsvPath" type="SetEnvParameter" isStart="true">
+				<DESCRIPTION>Set the CSV file path on HDFS</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM managedBy="system" name="parameterName" required="true" type="string">csvPath</PARAM>
+					<PARAM managedBy="user" name="parameterValue" required="true" type="string"></PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupCsv"/>
+				</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>
+					<PARAM required="true" type="string" name="table" managedBy="user"/>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="cleanupCsv"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="cleanupCsv" type="DeleteHdfsPathJob" isJoin="true">
+				<DESCRIPTION>CSV files cleanup</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'path' : 'csvPath',
+						'cluster' : 'cluster'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="export"/>
+				</ARCS>
+			</NODE>
+
+			<NODE name="export" type="SubmitHadoopJob">
+				<DESCRIPTION>export the information space as sequence file</DESCRIPTION>
+				<PARAMETERS>
+					<PARAM required="true" type="string" name="hadoopJob" managedBy="system">informationSpaceExportJob</PARAM>
+					<PARAM required="true" type="string" name="envParams" managedBy="system">
+						{
+						'cluster' : 'cluster',
+						'hbase.mapred.inputtable' : 'tableName',
+						'hbase.mapreduce.inputtable' : 'tableName',
+						'mapred.output.dir' : 'csvPath'
+						}
+					</PARAM>
+				</PARAMETERS>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
+
+
+
+
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/feedObjectStore.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/feedObjectStore.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/feedObjectStore.st	(revision 60998)
@@ -0,0 +1,83 @@
+ <NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="SELECT_MODE"/>
+	</ARCS>
+</NODE>
+
+<NODE name="SELECT_MODE" type="Selection">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">INCREMENTAL</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DropContentObjectStore" name="REFRESH" />
+		<ARC to="fetchOriginals" name="INCREMENTAL" />
+	</ARCS>
+</NODE>
+
+<NODE name="DropContentObjectStore" type="DropContentObjectStore">
+	<DESCRIPTION>Refresh content on the object Store</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="objectstoreId" managedBy="system" category="OBJECTSTORE_ID">$params.("objs_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="user"></PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">OAF</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STOREOBJECT"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STOREOBJECT" type="DownloadIntoObjectStore">
+	<DESCRIPTION>Store files into objectStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="idXpath" managedBy="user">//*[local-name()='objIdentifier']</PARAM>		
+		<PARAM required="true" type="string" name="objectStoreId" managedBy="system" category="OBJECTSTORE_ID">$params.("objs_id")$</PARAM>		
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="false" type="string" name="objectIsInsideEpr" managedBy="system">true</PARAM>
+		<PARAM required="true" type="string" name="mimeType" managedBy="user" function="validValues(['pdf', 'application/pdf', 'xml', 'file::WoS', 'text', 'text/plain','text/html'])"></PARAM>
+		<PARAM required="true" type="string" name="storageType" managedBy="user" function="validValues(['incremental', 'refresh'])">incremental</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="updateSizeObjectStore"/>
+	</ARCS>
+</NODE>
+<NODE name="updateSizeObjectStore" type="UpdateObjectStoreSize">
+	<DESCRIPTION>Download records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="objectStoreIdParam" managedBy="system" category="OBJECTSTORE_ID">$params.("objs_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="ObjectStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="objId" managedBy="system">$params.("objs_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_download_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_download_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForObjId" managedBy="system">last_download_objId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/gsri_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/gsri_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/gsri_context.xsl	(revision 60998)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" version="1.0"
+                exclude-result-prefixes="fn">
+
+    <xsl:variable name="namespacePrefix" select="string('gsri________')"/>
+    <xsl:variable name="funderID" select="concat($namespacePrefix, '::GSRI')"/>
+
+    <xsl:template match="/">
+        <fundingtree>
+            <funder>
+                <id>
+                    <xsl:value-of select="$funderID"/>
+                </id>
+                <shortname>GSRI</shortname>
+                <name>General Secretariat of Research and Innovation (GSRI)</name>
+                <originalname>General Secretariat of Research and Innovation</originalname>
+                <jurisdiction>GR</jurisdiction>
+            </funder>
+
+        </fundingtree>
+
+    </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/ukri_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/ukri_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/ukri_context.xsl	(revision 60998)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+                exclude-result-prefixes="fn">
+
+    <xsl:variable name="namespacePrefix" select="string('ukri________')"/>
+    <xsl:variable name="funderID" select="concat($namespacePrefix, '::UKRI')"/>
+
+    <xsl:template match="/">
+        <xsl:variable name="funding" select="//funder/name"/>
+        <fundingtree>
+            <funder>
+                <id>
+                    <xsl:value-of select="$funderID"/>
+                </id>
+                <shortname>UKRI</shortname>
+                <name>UK Research and Innovation</name>
+                <jurisdiction>GB</jurisdiction>
+            </funder>
+            <xsl:if test="string-length($funding) > 0">
+                <funding_level_0>
+                    <id>
+                        <xsl:value-of select="concat($funderID, '::', $funding)"/>
+                    </id>
+                    <description>
+                        <xsl:value-of select="$funding"/>
+                    </description>
+                    <name>
+                        <xsl:value-of select="$funding"/>
+                    </name>
+                    <parent></parent>
+                    <class>ukri:fundingStream</class>
+                </funding_level_0>
+            </xsl:if>
+        </fundingtree>
+    </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/anr_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/anr_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/anr_context.xsl	(revision 60998)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+    <xsl:output indent="yes"/>
+
+    <xsl:template match="/">
+        <fundings>
+            <fundingtree>
+                <funder>
+                    <id>anr_________::ANR</id>
+                    <shortname>ANR</shortname>
+                    <name>French National Research Agency (ANR)</name>
+                    <originalname>Agence Nationale de la Recherche</originalname>
+                    <jurisdiction>FR</jurisdiction>
+                </funder>
+            </fundingtree>
+        </fundings>
+    </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/corda_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/corda_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/corda_contexts.xsl	(revision 60998)
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+                exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('ec__________')"/>
+	<xsl:variable name="funderID" select="concat($namespacePrefix, '::EC')"/>
+
+	<xsl:template match="/">
+		<xsl:variable name="specificProgramName">
+			<xsl:value-of select="normalize-space(.//ProjectSpecificProgram)"/>
+		</xsl:variable>
+		<xsl:variable name="programName">
+			<xsl:value-of select="normalize-space(.//ProjectProgram)"/>
+		</xsl:variable>
+		<xsl:variable name="specificProgramDesc" select=".//ProjectSpecificProgramDescr"/>
+		<xsl:variable name="specificProgramId"
+		              select="normalize-space(concat($funderID, '::FP7::', $specificProgramName))"/>
+		<xsl:variable name="programDesc" select=".//ProjectProgramDescr"/>
+		<xsl:variable name="programId"
+		              select="concat($funderID, '::FP7::', $specificProgramName, '::', $programName)"/>
+
+		<fundingtree>
+			<funder>
+				<id>
+					<xsl:value-of select="$funderID"/>
+				</id>
+				<shortname>EC</shortname>
+				<name>European Commission</name>
+				<jurisdiction>EU</jurisdiction>
+			</funder>
+			<xsl:choose>
+				<xsl:when test="string-length($programName) > 0 and string-length($specificProgramName) > 0">
+				<funding_level_2>
+				<id>
+					<xsl:value-of select="$programId"/>
+				</id>
+				<description>
+					<xsl:value-of select="$programDesc"/>
+				</description>
+				<name>
+					<xsl:value-of select="$programName"/>
+				</name>
+				<class>ec:program</class>
+				<parent>
+					<funding_level_1>
+						<id>
+							<xsl:value-of select="$specificProgramId"/>
+						</id>
+						<description>
+							<xsl:value-of select="$specificProgramDesc"/>
+						</description>
+						<name>
+							<xsl:value-of select="$specificProgramName"/>
+						</name>
+						<class>ec:specificprogram</class>
+						<parent>
+							<funding_level_0>
+								<id>
+									<xsl:value-of select="concat($funderID, '::FP7')"/>
+								</id>
+								<description>SEVENTH FRAMEWORK PROGRAMME</description>
+								<name>FP7</name>
+								<parent/>
+								<class>ec:frameworkprogram</class>
+							</funding_level_0>
+						</parent>
+					</funding_level_1>
+				</parent>
+				</funding_level_2>
+				</xsl:when>
+				<xsl:otherwise>
+					<xsl:choose>
+						<xsl:when test="string-length($specificProgramName) > 0">
+							<funding_level_1>
+								<id>
+									<xsl:value-of select="$specificProgramId"/>
+								</id>
+								<description>
+									<xsl:value-of select="$specificProgramDesc"/>
+								</description>
+								<name>
+									<xsl:value-of select="$specificProgramName"/>
+								</name>
+								<class>ec:specificprogram</class>
+								<parent>
+									<funding_level_0>
+										<id>
+											<xsl:value-of select="concat($funderID, '::FP7')"/>
+										</id>
+										<description>SEVENTH FRAMEWORK PROGRAMME</description>
+										<name>FP7</name>
+										<parent/>
+										<class>ec:frameworkprogram</class>
+									</funding_level_0>
+								</parent>
+							</funding_level_1>
+						</xsl:when>
+						<xsl:otherwise>
+							<funding_level_0>
+								<id>
+									<xsl:value-of select="concat($funderID, '::FP7')"/>
+								</id>
+								<description>SEVENTH FRAMEWORK PROGRAMME</description>
+								<name>FP7</name>
+								<parent/>
+								<class>ec:frameworkprogram</class>
+							</funding_level_0>
+						</xsl:otherwise>
+					</xsl:choose>
+				</xsl:otherwise>
+			</xsl:choose>
+		</fundingtree>
+	</xsl:template>
+
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/innoviris_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/innoviris_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/innoviris_context.xsl	(revision 60998)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0"
+                exclude-result-prefixes="fn">
+
+    <xsl:variable name="namespacePrefix" select="string('innoviris___')"/>
+    <xsl:variable name="funderID" select="concat($namespacePrefix, '::INNOVIRIS')"/>
+
+    <xsl:template match="/">
+        <fundings>
+            <fundingtree>
+                <funder>
+                    <id>
+                        <xsl:value-of select="$funderID"/>
+                    </id>
+                    <shortname>INNOVIRIS</shortname>
+                    <name>INNOVIRIS</name>
+                    <jurisdiction>BE</jurisdiction>
+                </funder>
+                <xsl:variable name="stream">
+                    <xsl:value-of select="translate(.//column[@name = 'FUNDING_STREAM'],' ','')"/>
+                </xsl:variable>
+                <funding_level_0>
+                    <id>
+                        <xsl:value-of select="concat($funderID, '::',$stream)"/>
+                    </id>
+                    <name><xsl:value-of select=".//column[@name='FUNDING_STREAM']"/></name>
+                    <description><xsl:value-of select=".//column[@name='FUNDING_STREAM']"/></description>
+                    <parent/>
+                    <class>
+                        <xsl:value-of select="concat('innoviris:',fn:lower-case($stream),'fundings')"/>
+                    </class>
+                </funding_level_0>
+            </fundingtree>
+        </fundings>
+    </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/db/updateDB.meta.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/db/updateDB.meta.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/db/updateDB.meta.xml	(revision 60998)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="60a2c39e-e691-49ec-9689-0d460d277f51_TWV0YVdvcmtmbG93RFNSZXNvdXJjZXMvTWV0YVdvcmtmbG93RFNSZXNvdXJjZVR5cGU="/>
+		<RESOURCE_TYPE value="MetaWorkflowDSResourceType"/>
+		<RESOURCE_KIND value="MetaWorkflowDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2006-05-04T18:13:51.0Z"/>
+	</HEADER>
+	<BODY>
+		<METAWORKFLOW_NAME family="fix_db">Update DB</METAWORKFLOW_NAME>
+		<METAWORKFLOW_DESCRIPTION></METAWORKFLOW_DESCRIPTION>
+		<METAWORKFLOW_SECTION>InfoSpace Consistency</METAWORKFLOW_SECTION>
+		<ADMIN_EMAIL/>
+		<CONFIGURATION status="EXECUTABLE">
+			<WORKFLOW id="b1fbc8d0-071e-423b-9dec-d0bf396d8614_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl" name="class/scheme"/>
+		</CONFIGURATION>
+		<SCHEDULING enabled="true">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/garbageActionSetsHDFS.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/garbageActionSetsHDFS.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/test/profiles/openaireplus/workflows/garbage/garbageActionSetsHDFS.xml	(revision 60998)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="199ce504-6c1f-4ccd-aac2-cc47ca93fce8_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>Garbase Action Sets (HDFS)</WORKFLOW_NAME>
+		<WORKFLOW_TYPE>GARBAGE_ACTION_SETS</WORKFLOW_TYPE>
+		<WORKFLOW_PRIORITY>30</WORKFLOW_PRIORITY>
+		<CONFIGURATION start="manual">
+			<NODE name="garbageSets" type="GarbageSetsHDFS" isStart="true">
+				<DESCRIPTION>Garbage actions</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="cleanProfiles"/>
+				</ARCS>
+			</NODE>
+			<NODE name="cleanProfiles" type="CleanActionSetsProfile">
+				<DESCRIPTION>Clean Set profiles</DESCRIPTION>
+				<PARAMETERS/>
+				<ARCS>
+					<ARC to="success"/>
+				</ARCS>
+			</NODE>
+		</CONFIGURATION>
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/collection.wf.st	(revision 60998)
@@ -0,0 +1,150 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="SELECT_MODE"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="SELECT_MODE" type="Selection">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">REFRESH</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_REFRESH" name="REFRESH" />
+		<ARC to="PREPARE_INCREMENTAL" name="INCREMENTAL" />
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_REFRESH" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="user">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">sysimport:crosswalk</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">sysimport:crosswalk</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_INCREMENTAL" type="FindDateRangeForIncrementalHarvesting">
+	<DESCRIPTION>Find Date Range For Incremental Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_INCREMENTAL" type="DateRangeCollectRecords">
+	<DESCRIPTION>Start incremental harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+		<PARAM required="false" type="string" name="overrideFrom" managedBy="user"></PARAM>
+        <PARAM required="false" type="string" name="overrideUntil" managedBy="user"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_INCREMENTAL" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="system">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">sysimport:crosswalk</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">sysimport:crosswalk</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_INCREMENTAL" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records incrementally</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">INCREMENTAL</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/aka_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/aka_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/aka_context.xsl	(revision 60998)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+    <xsl:output indent="yes"/>
+
+    <xsl:template match="/">
+        <fundings>
+            <fundingtree>
+                <funder>
+                    <id>aka_________::AKA</id>
+                    <shortname>AKA</shortname>
+                    <name>Academy of Finland</name>
+                    <originalname>Academy of Finland</originalname>
+                    <jurisdiction>FI</jurisdiction>
+                </funder>
+            </fundingtree>
+        </fundings>
+    </xsl:template>
+</xsl:stylesheet>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/fix_org_ids.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/fix_org_ids.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/fix_org_ids.sql	(revision 60998)
@@ -0,0 +1,46 @@
+-- for OpenDOAR
+-- COPY existing rows
+COPY (SELECT * FROM dsm_datasource_organization WHERE datasource like 'opendoar%') TO '/tmp/opendoar_datasource_orgs.csv' WITH DELIMITER ';' CSV HEADER;
+COPY (SELECT * FROM dsm_organizations WHERE id like 'opendoar%') TO '/tmp/opendoar_orgs.csv' WITH DELIMITER ';' CSV HEADER;
+COPY (SELECT * FROM dsm_organizationpids  WHERE organization like 'opendoar%') TO '/tmp/opendoar_orgs_pids.csv' WITH DELIMITER ';' CSV HEADER;
+
+-- delete existing rows
+ALTER TABLE dsm_datasources DISABLE TRIGGER ALL;
+ALTER TABLE dsm_organizations DISABLE TRIGGER ALL;
+ALTER TABLE dsm_organizationpids DISABLE TRIGGER ALL;
+ALTER TABLE dsm_datasource_organization DISABLE TRIGGER ALL;
+
+DELETE from dsm_datasource_organization where datasource like 'opendoar%';
+DELETE from dsm_organizations where id like 'opendoar%';
+DELETE from dsm_organizationpids where organization like 'opendoar%';
+
+ALTER TABLE dsm_datasources ENABLE TRIGGER ALL;
+ALTER TABLE dsm_organizations ENABLE TRIGGER ALL;
+ALTER TABLE dsm_organizationpids ENABLE TRIGGER ALL;
+ALTER TABLE dsm_datasource_organization ENABLE TRIGGER ALL;
+
+-- run the patch workflow
+
+-- now for re3data
+-- COPY existing rows
+COPY (SELECT * FROM dsm_datasource_organization WHERE datasource like 're3data%') TO '/tmp/re3data_datasource_orgs.csv' WITH DELIMITER ';' CSV HEADER;
+COPY (SELECT * FROM dsm_organizations WHERE id like 're3data%') TO '/tmp/re3data_orgs.csv' WITH DELIMITER ';' CSV HEADER;
+COPY (SELECT * FROM dsm_organizationpids  WHERE organization like 're3data%') TO '/tmp/re3data_orgs_pids.csv' WITH DELIMITER ';' CSV HEADER;
+
+-- delete existing rows
+ALTER TABLE dsm_datasources DISABLE TRIGGER ALL;
+ALTER TABLE dsm_organizations DISABLE TRIGGER ALL;
+ALTER TABLE dsm_organizationpids DISABLE TRIGGER ALL;
+ALTER TABLE dsm_datasource_organization DISABLE TRIGGER ALL;
+
+DELETE from dsm_datasource_organization where datasource like 're3data%';
+DELETE from dsm_organizations where id like 're3data%';
+DELETE from dsm_organizationpids where organization like 're3data%';
+
+ALTER TABLE dsm_datasources ENABLE TRIGGER ALL;
+ALTER TABLE dsm_organizations ENABLE TRIGGER ALL;
+ALTER TABLE dsm_organizationpids ENABLE TRIGGER ALL;
+ALTER TABLE dsm_datasource_organization ENABLE TRIGGER ALL;
+
+-- run the patch workflow
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/tubitak_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/tubitak_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/tubitak_contexts.xsl	(revision 60998)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+				xmlns:fn="http://www.w3.org/2005/xpath-functions" version="1.0"
+				exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('tubitakf____')"/>
+	<xsl:variable name="funderID" select="concat($namespacePrefix, '::tubitak')"/>
+
+	<xsl:template match="/">
+		<fundings>
+			<fundingtree>
+				<funder>
+					<id>
+						<xsl:value-of select="$funderID"/>
+					</id>
+					<shortname>TUBITAK</shortname>
+					<name>Türkiye Bilimsel ve Teknolojik Araştırma Kurumu</name>
+					<jurisdiction>TR</jurisdiction>
+				</funder>
+				<xsl:variable name="stream" select="normalize-space(.//column[@name='FUNDING STREAM(S)'])"/>
+				<xsl:if test="string-length($stream) > 0">
+					<funding_level_0>
+						<id>
+							<xsl:value-of select="concat($funderID, '::', $stream)"/>
+						</id>
+
+						<description>
+							<xsl:value-of select="$stream"/>
+						</description>
+						<name>
+							<xsl:value-of select="$stream"/>
+						</name>
+						<parent></parent>
+						<class>tubitak:fundingStream</class>
+					</funding_level_0>
+				</xsl:if>
+			</fundingtree>
+		</fundings>
+	</xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/transform.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/transform.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/transform.wf.st	(revision 60998)
@@ -0,0 +1,83 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="selectIncrementalTransformation"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="selectIncrementalTransformation" type="IncrementalTransformation">
+	<DESCRIPTION>Decide REFRESH/INCREMENTAL transformation</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="operationType" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transform" type="Transform" isJoin="true">
+	<DESCRIPTION>Transform original records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" category="TRANSFORMATION_RULE_ID" managedBy="user" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">dmf_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storeRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">dmf_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/croatian_mses_projects_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/croatian_mses_projects_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/croatian_mses_projects_contexts.xsl	(revision 60998)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('irb_hr______')"/>
+
+	<xsl:template match="/">
+		<xsl:choose>
+			<xsl:when test="//csvRecord/column[@name = 'FUNDER_NAME']/text() = 'MZOS'">
+				<fundingtree>
+					<funder>
+						<id>
+							<xsl:value-of select="concat($namespacePrefix, '::MZOS')"/>
+						</id>
+						<shortname>MZOS</shortname>
+						<name>Ministry of Science, Education and Sports of the Republic of Croatia (MSES)</name>
+						<originalname>Ministarstvo znanosti, obrazovanja i športa</originalname>
+						<jurisdiction>HR</jurisdiction>
+					</funder>
+				</fundingtree>
+			</xsl:when>
+			<xsl:otherwise>
+				<fundingtree/>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+</xsl:stylesheet>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,53 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDC"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDC" type="DeleteMDStore">
+	<DESCRIPTION>Delete the oai_dc mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDMF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDMF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the DMF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/snsf_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/snsf_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/snsf_contexts.xsl	(revision 60998)
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+                exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('snsf________')"/>
+	<xsl:variable name="funderID" select="concat($namespacePrefix, '::SNSF')"/>
+
+	<xsl:template match="/">
+		<fundings>
+			<xsl:variable name="p0" select="normalize-space(.//column[@name='Funding Instrument Hierarchy'])"/>
+			<xsl:variable name="p1" select="normalize-space(.//column[@name='Funding Instrument'])"/>
+
+			<fundingtree>
+				<funder>
+					<id>
+						<xsl:value-of select="$funderID"/>
+					</id>
+					<shortname>SNSF</shortname>
+					<name>Swiss National Science Foundation</name>
+					<jurisdiction>CH</jurisdiction>
+				</funder>
+				<xsl:if test="string-length($p1) &gt; 0">
+					<xsl:choose>
+						<xsl:when test="(string-length($p0) &gt; 0) and (string-length($p1) &gt; 0)">
+							<xsl:variable name="level0" select="concat($funderID, '::', $p0)"/>
+							<xsl:variable name="level1" select="concat($funderID, '::', $p0, '::', $p1)"/>
+							<funding_level_1>
+								<id>
+									<xsl:value-of select="$level1"/>
+								</id>
+								<description>
+									<xsl:value-of select="$p1"/>
+								</description>
+								<name>
+									<xsl:value-of select="$p1"/>
+								</name>
+								<parent>
+									<funding_level_0>
+										<id>
+											<xsl:value-of select="$level0"/>
+										</id>
+										<description>
+											<xsl:value-of select="$p0"/>
+										</description>
+										<name>
+											<xsl:value-of select="$p0"/>
+										</name>
+										<parent/>
+										<class>snsf:fundingStream</class>
+									</funding_level_0>
+								</parent>
+							</funding_level_1>
+						</xsl:when>
+						<xsl:when test="string-length($p0) &gt; 0">
+							<xsl:variable name="level0" select="concat($funderID, '::', $p0)"/>
+							<funding_level_0>
+								<id>
+									<xsl:value-of select="$level0"/>
+								</id>
+								<description>
+									<xsl:value-of select="$p0"/>
+								</description>
+								<name>
+									<xsl:value-of select="$p0"/>
+								</name>
+								<parent/>
+								<class>snsf:fundingStream</class>
+							</funding_level_0>
+						</xsl:when>
+						<xsl:when test="string-length($p1) &gt; 0">
+							<xsl:variable name="level0" select="concat($funderID, '::', $p1)"/>
+							<funding_level_0>
+								<id>
+									<xsl:value-of select="$level0"/>
+								</id>
+								<description>
+									<xsl:value-of select="$p1"/>
+								</description>
+								<name>
+									<xsl:value-of select="$p1"/>
+								</name>
+								<parent/>
+								<class>snsf:fundingStream</class>
+							</funding_level_0>
+						</xsl:when>
+						<xsl:otherwise><!-- Funding columns are empty --></xsl:otherwise>
+					</xsl:choose>
+				</xsl:if>
+			</fundingtree>
+		</fundings>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/collection.wf.st	(revision 60998)
@@ -0,0 +1,150 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="SELECT_MODE"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="SELECT_MODE" type="Selection">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">REFRESH</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_REFRESH" name="REFRESH" />
+		<ARC to="PREPARE_INCREMENTAL" name="INCREMENTAL" />
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_REFRESH" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="user">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">sysimport:crosswalk</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">sysimport:crosswalk</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_INCREMENTAL" type="FindDateRangeForIncrementalHarvesting">
+	<DESCRIPTION>Find Date Range For Incremental Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_INCREMENTAL" type="DateRangeCollectRecords">
+	<DESCRIPTION>Start incremental harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+		<PARAM required="false" type="string" name="overrideFrom" managedBy="user"></PARAM>
+        <PARAM required="false" type="string" name="overrideUntil" managedBy="user"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_INCREMENTAL" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="system">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">sysimport:crosswalk</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">sysimport:crosswalk</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_INCREMENTAL" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records incrementally</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">INCREMENTAL</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/croatian_csf_projects_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/croatian_csf_projects_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/croatian_csf_projects_contexts.xsl	(revision 60998)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('irb_hr______')"/>
+
+	<xsl:template match="/">
+		<xsl:choose>
+			<xsl:when test="//csvRecord/column[@name = 'FUNDER_NAME']/text() = 'HRZZ'">
+				<fundingtree>
+					<funder>
+						<id>
+							<xsl:value-of select="concat($namespacePrefix, '::HRZZ')"/>
+						</id>
+						<shortname>HRZZ</shortname>
+						<name>Croatian Science Foundation (CSF)</name>
+						<originalname>Hrvatska zaklada za znanost</originalname>
+						<jurisdiction>HR</jurisdiction>
+					</funder>
+				</fundingtree>
+			</xsl:when>
+			<xsl:otherwise>
+				<fundingtree/>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+
+
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/generateFETContext.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/generateFETContext.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/generateFETContext.wf.st	(revision 60998)
@@ -0,0 +1,20 @@
+<NODE name="FETCH_RECORDS" type="FetchMDStoreRecords" isStart="true">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("row_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">rs_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="GENERATE_FET_CONTEXT"/>
+	</ARCS>
+</NODE>
+<NODE name="GENERATE_FET_CONTEXT" type="GenerateFETContext">
+	<DESCRIPTION>Generate FET hierarchy</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">rs_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/materialised_views.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/materialised_views.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/materialised_views.sql	(revision 60998)
@@ -0,0 +1,197 @@
+-- query performed by IIS to bulk load project details
+DROP TABLE project_details;
+CREATE TABLE project_details AS (
+	SELECT
+		p.id               AS projectid,
+		p.acronym          AS acronym,
+		p.code             AS code,
+		p.jsonextrainfo    AS jsonextrainfo,
+		array_agg(fp.path) AS fundingpath
+	FROM projects p
+		LEFT OUTER JOIN project_fundingpath pf ON (pf.project = p.id)
+		LEFT OUTER JOIN fundingpaths fp ON (fp.id = pf.funding)
+	WHERE p.collectedfrom <> 'openaire____::dfgf'
+	AND p.collectedfrom <> 'openaire____::innoviris'
+	AND p.collectedfrom <> 'openaire____::sgov'
+	AND p.collectedfrom <> 'openaire____::conicytf'
+	AND p.collectedfrom <> 'openaire____::anr'
+	AND p.collectedfrom <> 'openaire____::gsrt'
+	AND p.collectedfrom <> 'openaire____::rif'
+	AND p.collectedfrom <> 'openaire____::rsf'
+	AND p.collectedfrom <> 'openaire____::miur'
+	GROUP BY p.id
+);
+
+GRANT SELECT ON project_details TO dnetapi;
+
+
+-- used to serve queries from api tsv exporter
+DROP TABLE projects_tsv;
+CREATE TABLE projects_tsv AS (
+  SELECT
+     nextval('projects_tsv_ids') AS rowid,
+    p.code,
+    p.acronym,
+    p.title,
+    p.call_identifier,
+    p.startdate,
+    p.enddate,
+    p.ec_sc39,
+    p.oa_mandate_for_publications,
+    p.ec_article29_3 AS oa_mandate_for_datasets,
+    p.contactfullname AS contactfullname,
+    p.contactemail AS contactemail,
+    org.legalname AS legalname,
+    org.country AS country,
+    (array_agg(f.id))[1] AS fundingpathid,
+    (array_agg(f.description))[1] AS description,
+    (array_agg(CASE WHEN po.participantnumber = 1
+      THEN 'coordinator'
+    ELSE '' END))[1] AS role
+
+  FROM projects p
+    LEFT OUTER JOIN project_organization po ON (p.id = po.project)
+    LEFT OUTER JOIN dsm_organizations org ON (po.resporganization = org.id)
+    LEFT OUTER JOIN project_fundingpath pf ON (p.id = pf.project)
+    LEFT OUTER JOIN fundingpaths f ON (pf.funding = f.id)
+  GROUP BY
+  	p.code,
+  	p.acronym,
+    p.title,
+    p.call_identifier,
+    p.startdate,
+    p.enddate,
+    p.ec_sc39,
+    p.oa_mandate_for_publications,
+    p.ec_article29_3,
+    p.contactfullname,
+    p.contactemail,
+    org.legalname,
+    org.country
+  ORDER BY p.acronym
+);
+
+CREATE INDEX projects_tsv_fundingpathid_idx ON projects_tsv (fundingpathid);
+CREATE INDEX projects_tsv_oa_mandate_for_datasets_idx ON projects_tsv (oa_mandate_for_datasets);
+GRANT SELECT ON projects_tsv TO dnetapi;
+
+-- used to serve queries from dspace and eprints exporter
+DROP TABLE projects_api;
+CREATE TABLE projects_api AS (
+	SELECT
+		p.id,
+		p.acronym          AS acronym,
+		p.title            AS title,
+		p.code             AS code,
+		p.startdate        AS startdate,
+		p.enddate          AS enddate,
+		(array_agg(org.legalshortname))[1] AS funder,
+		(array_agg(fp.jurisdiction))[1]    AS jurisdiction,
+		(array_agg(fp.id))[1]              AS fundingpathid
+	FROM projects p
+		LEFT OUTER JOIN project_fundingpath pfp ON (p.id = pfp.project)
+		LEFT OUTER JOIN fundingpaths fp ON (pfp.funding = fp.id)
+		LEFT OUTER JOIN dsm_organizations org ON (org.id = fp.funder)
+	GROUP BY p.id);
+
+CREATE INDEX projects_api_fundingpathid_idx ON projects_api (fundingpathid);
+CREATE INDEX projects_api_startdate_idx ON projects_api (startdate);
+CREATE INDEX projects_api_enddate_idx ON projects_api (enddate);
+GRANT SELECT ON projects_api TO dnetapi;
+
+
+DROP MATERIALIZED VIEW projects_mv;
+CREATE MATERIALIZED VIEW projects_mv AS (
+	SELECT
+		p.id                                                                                                       AS projectid,
+		p.code                                                                                                     AS code,
+		p.websiteurl                                                                                               AS websiteurl,
+		p.acronym                                                                                                  AS acronym,
+		p.title                                                                                                    AS title,
+		p.startdate                                                                                                AS startdate,
+		p.enddate                                                                                                  AS enddate,
+		p.call_identifier                                                                                          AS callidentifier,
+		p.keywords                                                                                                 AS keywords,
+		p.duration                                                                                                 AS duration,
+		p.ec_sc39                                                                                                  AS ecsc39,
+		p.oa_mandate_for_publications                                                                              AS oamandatepublications,
+		p.ec_article29_3                                                                                           AS ecarticle29_3,
+		p.dateofcollection                                                                                         AS dateofcollection,
+		p.lastupdate                                                                                               AS dateoftransformation,
+		p.inferred                                                                                                 AS inferred,
+		p.deletedbyinference                                                                                       AS deletedbyinference,
+		p.trust                                                                                                    AS trust,
+		p.inferenceprovenance                                                                                      AS inferenceprovenance,
+		p.optional1                                                                                                AS optional1,
+		p.optional2                                                                                                AS optional2,
+		p.jsonextrainfo                                                                                            AS jsonextrainfo,
+		p.contactfullname                                                                                          AS contactfullname,
+		p.contactfax                                                                                               AS contactfax,
+		p.contactphone                                                                                             AS contactphone,
+		p.contactemail                                                                                             AS contactemail,
+		p.summary                                                                                                  AS summary,
+		p.currency                                                                                                 AS currency,
+		p.totalcost                                                                                                AS totalcost,
+        p.fundedamount                                                                                             AS fundedamount,
+		dc.id                                                                                                      AS collectedfromid,
+		dc.officialname                                                                                            AS collectedfromname,
+		p.contracttype || '@@@' || p.contracttypename || '@@@' || p.contracttypescheme || '@@@' || p.contracttypescheme     AS contracttype,
+		pac.code || '@@@' || pac.name || '@@@' || pas.code || '@@@' || pas.name                                    AS provenanceaction,
+		array_agg(DISTINCT i.pid || '###' || i.issuertype)                                                         AS pid,
+		array_agg(DISTINCT s.name || '###' || sc.code || '@@@' || sc.name || '@@@' || ss.code || '@@@' || ss.name) AS subjects,
+		array_agg(DISTINCT fp.path)                                                                                AS fundingtree
+	FROM projects p
+		LEFT OUTER JOIN class pac ON (pac.code = p.provenanceactionclass)
+		LEFT OUTER JOIN scheme pas ON (pas.code = p.provenanceactionscheme)
+
+		LEFT OUTER JOIN projectpids pp ON (pp.project = p.id)
+		LEFT OUTER JOIN dsm_identities i ON (i.pid = pp.pid)
+
+		LEFT OUTER JOIN dsm_datasources dc ON (dc.id = p.collectedfrom)
+
+		LEFT OUTER JOIN project_fundingpath pf ON (pf.project = p.id)
+		LEFT OUTER JOIN fundingpaths fp ON (fp.id = pf.funding)
+
+		LEFT OUTER JOIN project_subject ps ON (ps.project = p.id)
+		LEFT OUTER JOIN subjects s ON (s.id = ps.subject)
+
+		LEFT OUTER JOIN class sc ON (sc.code = s.semanticclass)
+		LEFT OUTER JOIN scheme ss ON (ss.code = s.semanticscheme)
+
+	GROUP BY
+		p.id,
+		p.code,
+		p.websiteurl,
+		p.acronym,
+		p.title,
+		p.startdate,
+		p.enddate,
+		p.call_identifier,
+		p.keywords,
+		p.duration,
+		p.ec_sc39,
+		p.oa_mandate_for_publications,
+		p.ec_article29_3,
+		p.dateofcollection,
+		p.inferred,
+		p.deletedbyinference,
+		p.trust,
+		p.inferenceprovenance,
+		p.contactfullname,
+		p.contactfax,
+		p.contactphone,
+		p.contactemail,
+		p.contracttype,
+		p.summary,
+		p.currency,
+		p.totalcost,
+		p.fundedamount,
+		dc.id,
+		dc.officialname,
+		pac.code, pac.name, pas.code, pas.name
+);
+CREATE INDEX projects_mv_id_idx	ON projects_mv (projectid);
+
+GRANT SELECT ON fundingpaths TO dnetapi;
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_funder_countries.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_funder_countries.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_funder_countries.sql	(revision 60998)
@@ -0,0 +1 @@
+update dsm_organizations dor set country = f.jurisdiction from fundingpaths f where f.funder = dor.id ;
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/rif_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/rif_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/rif_context.xsl	(revision 60998)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+    <xsl:output indent="yes"/>
+    <xsl:variable name="namespacePrefix" select="string('rif_________')"/>
+    <xsl:variable name="funderID" select="concat($namespacePrefix, '::RIF')"/>
+    <xsl:template match="/">
+        <fundings>
+            <fundingtree>
+                <funder>
+                    <id> <xsl:value-of select="$funderID"/></id>
+                    <shortname>RIF</shortname>
+                    <name>Research and Innovation Foundation</name>
+                    <originalname>Research and Innovation Foundation</originalname>
+                    <jurisdiction>CY</jurisdiction>
+                </funder>
+                <xsl:variable name="stream">
+                    <xsl:value-of select="translate(.//column[@name = 'FUNDING STREAM'],' ','')"/>
+                </xsl:variable>
+                <funding_level_0>
+                    <id>
+                        <xsl:value-of select="concat($funderID, '::',$stream)"/>
+                    </id>
+                    <name><xsl:value-of select=".//column[@name='FUNDING STREAM']"/></name>
+                    <description><xsl:value-of select=".//column[@name='FUNDING STREAM']"/></description>
+                    <parent/>
+                    <class>
+                        <xsl:value-of select="concat('rif:',lower-case($stream),'fundings')"/>
+                    </class>
+                </funding_level_0>
+            </fundingtree>
+        </fundings>
+    </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_dsTypes.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_dsTypes.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_dsTypes.sql	(revision 60998)
@@ -0,0 +1,13 @@
+update dsm_api set typology = 'aggregator::pubsrepository::unknown' where id = 'api_________::openaire____::unpaywall::0';
+update dsm_api set typology = 'researchgraph' where id ='api_________::openaire____::microsoft::0';
+update dsm_api set typology = 'entityregistry::organizations' where id ='api_________::openaire____::grid::mock';
+update dsm_api set typology = 'entityregistry::researchers' where id ='api_________::openaire____::orcid::0';
+update dsm_api set typology = 'entityregistry::products' where id like 'api_________::openaire____::datacite%';
+update dsm_api set typology = 'entityregistry::products' where id like 'api_________::openaire____::crossref:%';
+
+update dsm_datasources set typology = 'aggregator::pubsrepository::unknown' where id = 'openaire____::unpaywall';
+update dsm_datasources set typology = 'researchgraph' where id ='openaire____::microsoft';
+update dsm_datasources set typology = 'entityregistry::organizations' where id ='openaire____::grid';
+update dsm_datasources set typology = 'entityregistry::researchers' where id ='openaire____::orcid';
+update dsm_datasources set typology = 'entityregistry::products' where id = 'openaire____::datacite';
+update dsm_datasources set typology = 'entityregistry::products' where id = 'openaire____::crossref';
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql/find_journal_intersection.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql/find_journal_intersection.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql/find_journal_intersection.sql	(revision 60998)
@@ -0,0 +1,9 @@
+SELECT
+	h.entry        AS id,
+	h.datasourceid AS datasource,
+	d.officialname AS name
+
+FROM hostedby_map h, datasources d
+WHERE
+	h.oa_source_id = 're3data_____::r3d100010134' AND
+	h.datasourceid = d.id
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_pangaea_doaj.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_pangaea_doaj.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch_pangaea_doaj.sql	(revision 60998)
@@ -0,0 +1,85 @@
+CREATE TABLE IF NOT EXISTS hostedby_map (
+	_dnet_resource_identifier_ CHARACTER VARYING(2048) DEFAULT 'temp_' || md5(clock_timestamp() :: TEXT) || '_' || md5(random() :: TEXT) UNIQUE,
+	oa_source_id               CHARACTER VARYING(255) REFERENCES dsm_datasources (id),
+	entry                      CHARACTER VARYING(255) NOT NULL,
+	datasourceid               CHARACTER VARYING(255) REFERENCES dsm_datasources (id),
+	PRIMARY KEY (oa_source_id, entry)
+);
+
+--DATACITE API
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass)
+VALUES ('api_________::datacite::oaisets', 'api_________::datacite::oaisets', 'oai_sets', 'openaire____::datacite', 'aggregator::datarepository', 'native');
+INSERT INTO apicollections (param, original, api) VALUES ('baseUrl', 'http://oai.datacite.org/oai', 'api_________::datacite::oaisets');
+INSERT INTO apicollections (param, original, api, accessparam)
+VALUES ('metadata_identifier_path', '//*[local-name() = ''setSpec'']', 'api_________::datacite::oaisets', FALSE);
+
+--PANGAEA BY PROJECT
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass) VALUES
+	('api_________::re3data_____::r3d100010134::pangaeabyproject', 'api_________::re3data_____::r3d100010134::pangaeabyproject', 'datasetsbyproject',
+	 're3data_____::r3d100010134', 'datarepository::unknown', 'native');
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('metadata_identifier_path', '//*[local-name()=''header'']/*[local-name()=''identifier'']', 'api_________::re3data_____::r3d100010134::pangaeabyproject',
+	 'api_________::re3data_____::r3d100010134::pangaeabyproject@@metadata_identifier_path', FALSE);
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('baseUrl', 'file:///var/lib/dnet/pangaea_projects.csv', 'api_________::re3data_____::r3d100010134::pangaeabyproject',
+	 'api_________::re3data_____::r3d100010134::pangaeabyproject@@baseUrl', TRUE);
+
+--PANGAEA BY JOURNAL
+
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass) VALUES
+	('api_________::re3data_____::r3d100010134::pangaeabyjournal', 'api_________::re3data_____::r3d100010134::pangaeabyjournal', 'datasetsbyjournal',
+	 're3data_____::r3d100010134', 'datarepository::unknown', 'native');
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('metadata_identifier_path', '//*[local-name()=''header'']/*[local-name()=''identifier'']', 'api_________::re3data_____::r3d100010134::pangaeabyjournal',
+	 'api_________::re3data_____::r3d100010134::pangaeabyjournal@@metadata_identifier_path', FALSE);
+
+INSERT INTO api (_dnet_resource_identifier_, id, protocolclass, datasource, typologyclass, compatibilityclass) VALUES
+	('api_________::re3data_____::r3d100010134::pangaeabyjournalCSV', 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV', 'fileCSV',
+	 're3data_____::r3d100010134', 'datarepository::unknown', 'native');
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('metadata_identifier_path', '//*[local-name()=''column'' and @isID=''true'']', 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV',
+	 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV@@metadata_identifier_path', FALSE);
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('baseUrl', 'file:///var/lib/dnet/pangaea_journals.csv', 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV',
+	 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV@@baseUrl', TRUE);
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('quote', '"', 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV', 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV@@quote', TRUE);
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('header', 'true', 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV', 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV@@header',
+	 TRUE);
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('identifier', '4', 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV',
+	 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV@@identifier', TRUE);
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('separator', '@', 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV',
+	 'api_________::re3data_____::r3d100010134::pangaeabyjournalCSV@@separator', TRUE);
+
+--DOAJ
+
+INSERT INTO api (id, _dnet_resource_identifier_, protocolclass, datasource, contentdescriptionclass, typologyclass, compatibilityclass) VALUES
+	('api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV', 'api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV',
+	 'httpCSV', 'driver______::1790119e-d281-4b7a-aedf-866d1d853a07', 'metadata', 'entityregistry', 'native');
+
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('baseUrl', 'http://doaj.org/csv', 'api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV',
+	 'api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV@@baseUrl', TRUE);
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('separator', ',', 'api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV',
+	 'api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV@@separator', TRUE);
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('quote', '"', 'api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV',
+	 'api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV@@quote', TRUE);
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('identifier', 'ISSN', 'api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV',
+	 'api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV@@identifier', TRUE);
+INSERT INTO apicollections (param, original, api, _dnet_resource_identifier_, accessparam) VALUES
+	('metadata_identifier_path', '//column[./@isID=''true'']', 'api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV',
+	 'api_________::driver______::1790119e-d281-4b7a-aedf-866d1d853a07::httpCSV@@metadata_identifier_path', FALSE);
+
+
+CREATE TABLE IF NOT EXISTS hostedby_props (
+	_dnet_resource_identifier_ CHARACTER VARYING(2048) NOT NULL REFERENCES hostedby_map (_dnet_resource_identifier_),
+	key                        CHARACTER VARYING(255)  NOT NULL,
+	value                      CHARACTER VARYING(255)  NOT NULL,
+	PRIMARY KEY (_dnet_resource_identifier_, key, value)
+);
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/collection.wf.st	(revision 60998)
@@ -0,0 +1,86 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="FETCH_JOURNAL_INTERSECTION"/>
+	</ARCS>
+</NODE> 
+
+<NODE name="FETCH_JOURNAL_INTERSECTION" type="QueryDb">
+	<DESCRIPTION>Fetch records by Query</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+		<PARAM name="sql" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql/find_journal_intersection.sql</PARAM>
+		<PARAM name="outputEprParam" type="string" managedBy="system" required="true">sql_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_DATASETS" />
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_DATASETS" type="CollectDatasetsByJournal">
+	<DESCRIPTION>Start Harvesting Datasets</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>		
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">sql_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="ApplyXslt">
+	<DESCRIPTION>Transform original records in DB rows</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">INCREMENTAL</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/rcuk_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/rcuk_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/rcuk_contexts.xsl	(revision 60998)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+                exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('rcuk________')"/>
+	<xsl:variable name="funderID" select="concat($namespacePrefix, '::RCUK')"/>
+
+	<xsl:template match="/">
+		<xsl:variable name="funding" select="//funder/name"/>
+		<fundingtree>
+			<funder>
+				<id>
+					<xsl:value-of select="$funderID"/>
+				</id>
+				<shortname>RCUK</shortname>
+				<name>Research Council UK</name>
+				<jurisdiction>GB</jurisdiction>
+			</funder>
+			<xsl:if test="string-length($funding) > 0">
+			<funding_level_0>
+				<id>
+					<xsl:value-of select="concat($funderID, '::', $funding)"/>
+				</id>
+				<description>
+					<xsl:value-of select="$funding"/>
+				</description>
+				<name>
+					<xsl:value-of select="$funding"/>
+				</name>
+				<parent></parent>
+				<class>rcuk:fundingStream</class>
+			</funding_level_0>
+			</xsl:if>
+		</fundingtree>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-jsonextrainfo.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-jsonextrainfo.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/patch-db/patch-jsonextrainfo.sql	(revision 60998)
@@ -0,0 +1,2 @@
+ALTER TABLE projects
+	ADD COLUMN jsonextrainfo TEXT DEFAULT '{}';
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,63 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDatacite"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDatacite" type="DeleteMDStore">
+	<DESCRIPTION>Delete the oai_datacite mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreODF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreODF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the IMEF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tranODF_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreOAF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreOAF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the IMEF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tranOAF_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/collection.wf.st	(revision 60998)
@@ -0,0 +1,91 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Obtain data source params</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="PREPARE_ENV_COLLECTION"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_ENV_COLLECTION" type="PrepareEnvCollectHadoopJobNode">
+    <DESCRIPTION>Set in the environment all the variable needed to the collection oozie job</DESCRIPTION>
+    <PARAMETERS>
+        <PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+        <PARAM required="true" type="string" name="collectionMode" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])"></PARAM>
+        <PARAM required="true" type="string" name="metadataEncoding" managedBy="user">XML</PARAM>
+        <PARAM managedBy="user" name="fromDateOverride" required="false" type="string"/>
+        <PARAM managedBy="user" name="untilDateOverride" required="false" type="string"/>
+        <PARAM managedBy="user" name="maxNumberOfRetry" required="false" type="int">5</PARAM>
+        <PARAM managedBy="user" name="requestDelay" required="false" type="int">0</PARAM>
+        <PARAM managedBy="user" name="retryDelay" required="false" type="int">60</PARAM>
+        <PARAM managedBy="user" name="connectTimeOut" required="false" type="int">30</PARAM>
+        <PARAM managedBy="user" name="readTimeOut" required="false" type="int">60</PARAM>
+    </PARAMETERS>
+    <ARCS>
+        <ARC to="COLLECT_HADOOP"/>
+    </ARCS>
+</NODE>
+
+<NODE name="COLLECT_HADOOP" type="SubmitDnetHadoopJobNode">
+    <DESCRIPTION>Start the Hadoop Job</DESCRIPTION>
+    <PARAMETERS>
+        <PARAM managedBy="system" name="hadoopJob" required="true" type="string">executeOozieJob</PARAM>
+        <PARAM managedBy="user" name="cluster" required="true" type="string">DHP</PARAM>
+        <PARAM managedBy="system" name="envParams" required="true" type="string">
+            {
+                "apiDescription":"apiDescription",
+                "dataSourceInfo":"dataSourceInfo",
+                "identifierPath":"identifierPath",
+                "metadataEncoding":"metadataEncoding",
+                "timestamp":"timestamp",
+                "workflowId":"workflowId",
+                "mdStoreID":"mdId",
+                "collectionMode":"collectionMode",
+                "maxNumberOfRetry":"maxNumberOfRetry",
+                "requestDelay":"requestDelay",
+                "retryDelay":"retryDelay",
+                "connectTimeOut":"connectTimeOut",
+                "readTimeOut":"readTimeOut",
+                "dnetMessageManagerURL":"dnetMessageManagerURL",
+                "oozie.wf.application.path":"oozieWfPath"
+            }
+        </PARAM>
+        <PARAM managedBy="system" name="params" required="true" type="string">
+            {
+                "collection_java_xmx" : "-Xmx300m"
+            }
+        </PARAM>
+        <PARAM managedBy="system" name="oozieReportActionsCsv" required="true" type="string">BeginRead,StartTransaction,CollectionWorker</PARAM>
+    </PARAMETERS>
+    <ARCS>
+        <ARC to="UPDATE_INFO"/>
+    </ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraFieldHadoop">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/conicyt_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/conicyt_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/conicyt_context.xsl	(revision 60998)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result-prefixes="fn">
+
+    <xsl:variable  name="namespacePrefix" select="string('conicytf____')"/>
+    <xsl:variable name="funderID" select="concat($namespacePrefix, '::CONICYT')"/>
+
+    <xsl:template match="/">
+        <fundingtree>
+            <funder>
+                <id>
+                    <xsl:value-of select="$funderID"/>
+                </id>
+                <shortname>CONICYT</shortname>
+                <name>Comisión Nacional de Investigación Científica y Tecnológica</name>
+                <jurisdiction>CL</jurisdiction>
+            </funder>
+            <funding_level_1>
+                <id>
+                    <xsl:value-of select="concat($funderID, '::', .//column[@name='FUNDER STREAM LEVEL I'],'::',.//column[@name='FUNDER STREAM LEVEL II'])"/>
+                </id>
+                <description>
+                    <xsl:value-of select="concat(string('Fondecyt stream, '), .//column[@name='FUNDER STREAM LEVEL II'])"/>
+                </description>
+                <name>
+                    <xsl:value-of select="concat(string('Fondecyt stream, '), .//column[@name='FUNDER STREAM LEVEL II'])"/>
+                </name>
+                <class>conicyt:fondecytfundings</class>
+                <parent>
+                    <funding_level_0>
+                        <id>
+                            <xsl:value-of select="concat($funderID, '::',.//column[@name='FUNDER STREAM LEVEL I'])"/>
+                        </id>
+                        <name>FONDECYT</name>
+                        <description>Fondecyt fundings</description>
+                        <parent/>
+                        <class>conicyt:fondecytfundings</class>
+                    </funding_level_0>
+                </parent>
+            </funding_level_1>
+
+        </fundingtree>
+    </xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/chistera_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/chistera_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/chistera_context.xsl	(revision 60998)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+    <xsl:output indent="yes"/>
+
+    <xsl:template match="/">
+        <fundings>
+            <fundingtree>
+                <funder>
+                    <id>chistera____::CHISTERA</id>
+                    <shortname>CHIST-ERA</shortname>
+                    <name>CHIST-ERA</name>
+                    <originalname>CHIST-ERA</originalname>
+                    <jurisdiction>EU</jurisdiction>
+                </funder>
+            </fundingtree>
+        </fundings>
+    </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/wt_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/wt_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/wt_contexts.xsl	(revision 60998)
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" version="1.0"
+                exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('wt__________')"/>
+	<xsl:variable name="funderID" select="concat($namespacePrefix, '::WT')"/>
+
+	<xsl:template match="/">
+		<fundings>
+			<fundingtree>
+				<funder>
+					<id>
+						<xsl:value-of select="$funderID"/>
+					</id>
+					<shortname>WT</shortname>
+					<name>Wellcome Trust</name>
+					<jurisdiction></jurisdiction>
+				</funder>
+				<xsl:variable name="stream" select="normalize-space(.//Grant/Stream)"/>
+				<xsl:if test="string-length($stream) > 0">
+					<funding_level_0>
+						<id>
+							<xsl:value-of select="concat($funderID, '::', $stream)"/>
+						</id>
+						<description>
+							<xsl:value-of select="$stream"/>
+						</description>
+						<name>
+							<xsl:value-of select="$stream"/>
+						</name>
+						<parent></parent>
+						<class>wt:fundingStream</class>
+					</funding_level_0>
+				</xsl:if>
+			</fundingtree>
+		</fundings>
+	</xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/collection.wf.st	(revision 60998)
@@ -0,0 +1,81 @@
+ <NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT"/>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Obtain parameters for current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER" isJoin="true" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="system">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">sysimport:crosswalk</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">sysimport:crosswalk</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="user">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt/dc_2_oaf.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt/dc_2_oaf.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt/dc_2_oaf.xsl	(revision 60998)
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+	<xsl:template match="/">
+		<record xmlns="http://www.openarchives.org/OAI/2.0/"
+		        xmlns:dr="http://www.driver-repository.eu/namespace/dr"
+		        xmlns:oaf="http://namespace.openaire.eu/oaf">
+			<xsl:copy-of select=".//*[local-name()='header']"/>
+			<metadata>
+				<xsl:for-each select=".//*[local-name()='metadata']/*/*">
+					<xsl:choose>
+						<xsl:when test="local-name()='type'">
+							<dr:CobjCategory>0001</dr:CobjCategory>
+						</xsl:when>
+						<xsl:when test="local-name()='identifier'">
+							<dr:CobjIdentifier>
+								<xsl:value-of select="normalize-space(.)"/>
+							</dr:CobjIdentifier>
+							<xsl:if test="starts-with(., 'doi')">
+								<oaf:identifier identifierType="doi">
+									<xsl:value-of select="normalize-space(.)"/>
+								</oaf:identifier>
+							</xsl:if>
+						</xsl:when>
+						<xsl:when test="local-name()='relation'">
+							<xsl:if test="contains(., 'grantAgreement/EC/FP7')">
+								<oaf:projectid>
+									<xsl:value-of select="concat('corda_______::', substring-after(normalize-space(.), 'FP7/'))"/>
+								</oaf:projectid>
+							</xsl:if>
+						</xsl:when>
+						<xsl:when test="local-name()='rights'">
+							<oaf:accessrights>
+								<xsl:choose>
+									<xsl:when test="contains(., 'closed')">CLOSED</xsl:when>
+									<xsl:when test="contains(., 'restricted')">RESTRICTED</xsl:when>
+									<xsl:when test="contains(., 'embargo')">EMBARGO</xsl:when>
+									<xsl:when test="contains(., 'open')">OPEN</xsl:when>
+									<xsl:otherwise>UNKNOWN</xsl:otherwise>
+								</xsl:choose>
+							</oaf:accessrights>
+						</xsl:when>
+						<xsl:otherwise>
+							<xsl:copy-of select="."/>
+						</xsl:otherwise>
+					</xsl:choose>
+				</xsl:for-each>
+				<oaf:hostedBy name="DATASOURCE NAME" id="datasource id (database)"/>
+				<oaf:collectedFrom name="DATASOURCE NAME" id="datasource id (database)"/>
+				<oaf:collectedDatasourceid>datasource id taken from the database, es: opendoar____::2659</oaf:collectedDatasourceid>
+			</metadata>
+		</record>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/transform.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/transform.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/transform.wf.st	(revision 60998)
@@ -0,0 +1,73 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transform" type="Transform" isJoin="true">
+	<DESCRIPTION>Transform original records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" category="TRANSFORMATION_RULE_ID" managedBy="user" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">dmf_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storeRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">dmf_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nhmrc_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nhmrc_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/nhmrc_contexts.xsl	(revision 60998)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+                xmlns:ands="http://ands.org.au/standards/rif-cs/registryObjects"
+                exclude-result-prefixes="fn">
+
+	<xsl:output indent="yes"/>
+
+	<xsl:template match="/">
+		<fundings>
+			<fundingtree>
+				<funder>
+					<id>nhmrc_______::NHMRC</id>
+					<shortname>NHMRC</shortname>
+					<name>National Health and Medical Research Council (NHMRC)</name>
+					<jurisdiction>AU</jurisdiction>
+				</funder>
+			</fundingtree>
+			<xsl:for-each select="//ands:description[@type='fundingScheme']">
+				<fundingtree>
+					<funder>
+						<id>nhmrc_______::NHMRC</id>
+						<shortname>NHMRC</shortname>
+						<name>National Health and Medical Research Council (NHMRC)</name>
+						<jurisdiction>AU</jurisdiction>
+					</funder>
+					<funding_level_0>
+						<id>
+							<xsl:value-of
+									select="concat('nhmrc_______::NHMRC::', normalize-space(.))"/>
+						</id>
+						<name>
+							<xsl:value-of select="normalize-space(.)"/>
+						</name>
+						<description>
+							<xsl:value-of select="normalize-space(.)"/>
+						</description>
+						<parent></parent>
+						<class>nhmrc:fundingStream</class>
+					</funding_level_0>
+				</fundingtree>
+			</xsl:for-each>
+		</fundings>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/transform.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/transform.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/transform.wf.st	(revision 60998)
@@ -0,0 +1,94 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+    	<ARC to="obtainParams" />
+    </ARCS>
+    </NODE>
+ <NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+    	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+    	<PARAMETERS>
+    		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+    	</PARAMETERS>
+    	<ARCS>
+    		<ARC to="fetchOriginals"/>
+    	</ARCS>
+    </NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("orig_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="generateRows"/>
+	</ARCS>
+</NODE>
+
+<NODE name="generateRows" type="ApplyXslt">
+	<DESCRIPTION>Transform original records in DB rows</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">packed_row_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="cleanRows"/>
+	</ARCS>
+</NODE>
+
+<NODE name="cleanRows" type="Clean">
+	<DESCRIPTION>Clean DB rows values according to defined vocabularies</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="CLEANER_RULE_ID" function="listProfiles('CleanerDSResourceType', '//CLEANER_NAME')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">packed_row_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">cleaned_row_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="filterManaged"/>
+	</ARCS>
+</NODE>
+
+<NODE name="filterManaged" type="FilterManagedDatasources">
+    <DESCRIPTION>Filter DB rows according to the managed flag state</DESCRIPTION>
+    <PARAMETERS>
+        <PARAM managedBy="system" name="inputEprParam" required="true" type="string">cleaned_row_epr</PARAM>
+        <PARAM managedBy="system" name="outputEprParam" required="true" type="string">filtered_row_epr</PARAM>
+    </PARAMETERS>
+    <ARCS>
+        <ARC to="storeRowRecords"/>
+    </ARCS>
+</NODE>
+
+<NODE name="storeRowRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">filtered_row_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/collection.wf.st	(revision 60998)
@@ -0,0 +1,148 @@
+ <NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Obtain data source params</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="SELECT_MODE"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="SELECT_MODE" type="Selection">
+	<DESCRIPTION>Choose collection mode</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">REFRESH</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_REFRESH" name="REFRESH" />
+		<ARC to="PREPARE_INCREMENTAL" name="INCREMENTAL" />
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_REFRESH" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="user">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">sysimport:crosswalk</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">sysimport:crosswalk</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_INCREMENTAL" type="FindDateRangeForIncrementalHarvesting">
+	<DESCRIPTION>Find Date Range For Incremental Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_INCREMENTAL" type="DateRangeCollectRecords">
+	<DESCRIPTION>Start incremental harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+		<PARAM required="false" type="string" name="overrideFrom" managedBy="user"></PARAM>
+        <PARAM required="false" type="string" name="overrideUntil" managedBy="user"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_INCREMENTAL" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="system">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">sysimport:crosswalk</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">sysimport:crosswalk</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_INCREMENTAL" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records incrementally</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">INCREMENTAL</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/ukri_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/ukri_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/ukri_contexts.xsl	(revision 60998)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+                exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('ukri________')"/>
+	<xsl:variable name="funderID" select="concat($namespacePrefix, '::ukri')"/>
+
+	<xsl:template match="/">
+		<xsl:variable name="funding" select="//funder/name"/>
+		<fundingtree>
+			<funder>
+				<id>
+					<xsl:value-of select="$funderID"/>
+				</id>
+				<shortname>UKRI</shortname>
+				<name>UK Research and Innovation</name>
+				<jurisdiction>GB</jurisdiction>
+			</funder>
+			<xsl:if test="string-length($funding) > 0">
+			<funding_level_0>
+				<id>
+					<xsl:value-of select="concat($funderID, '::', $funding)"/>
+				</id>
+				<description>
+					<xsl:value-of select="$funding"/>
+				</description>
+				<name>
+					<xsl:value-of select="$funding"/>
+				</name>
+				<parent></parent>
+				<class>ukri:fundingStream</class>
+			</funding_level_0>
+			</xsl:if>
+		</fundingtree>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/mestd_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/mestd_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/mestd_contexts.xsl	(revision 60998)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" version="1.0"
+                exclude-result-prefixes="fn">
+
+	<xsl:output indent="yes"/>
+
+	<xsl:template match="/">
+		<fundings>
+			<fundingtree>
+				<funder>
+					<id>mestd_______::MESTD</id>
+					<shortname>MESTD</shortname>
+					<name>Ministry of Education, Science and Technological Development of Republic of Serbia</name>
+					<originalname>Ministarstvo Prosvete, Nauke i Tehnološkog Razvoja</originalname>
+					<jurisdiction>RS</jurisdiction>
+				</funder>
+			</fundingtree>
+			<fundingtree>
+				<funder>
+					<id>mestd_______::MESTD</id>
+					<shortname>MESTD</shortname>
+					<name>Ministry of Education, Science and Technological Development of Republic of Serbia</name>
+					<originalname>Ministarstvo Prosvete, Nauke i Tehnološkog Razvoja</originalname>
+					<jurisdiction>RS</jurisdiction>
+				</funder>
+				<funding_level_0>
+					<id>
+						<xsl:value-of select="concat('mestd_______::MESTD::', normalize-space(//column[./@name='FUNDING STREAM(S)']))"/>
+					</id>
+					<name>
+						<xsl:value-of select="normalize-space(//column[./@name='FUNDING STREAM(S)'])"/>
+					</name>
+					<description>
+						<xsl:value-of select="normalize-space(//column[./@name='FUNDING STREAM(S)'])"/>
+					</description>
+					<parent></parent>
+					<class>mestd:fundingStream</class>
+				</funding_level_0>
+			</fundingtree>
+
+		</fundings>
+	</xsl:template>
+</xsl:stylesheet>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_prepareTables.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_prepareTables.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_prepareTables.sql	(revision 60998)
@@ -0,0 +1,23 @@
+DROP TABLE IF EXISTS datacite_temp_sets;
+CREATE TABLE IF NOT EXISTS datacite_temp_sets (
+	_dnet_resource_identifier_ CHARACTER VARYING(2048) DEFAULT 'temp_' || md5(clock_timestamp() :: TEXT) || '_' || md5(random() :: TEXT),
+	id                         CHARACTER VARYING(255) PRIMARY KEY,
+	setname                    CHARACTER VARYING(255),
+	setname_cleaned            CHARACTER VARYING(255),
+	setspec                    CHARACTER VARYING(255),
+	oa_source_id               CHARACTER VARYING(255) REFERENCES dsm_datasources (id)
+);
+
+DROP TABLE IF EXISTS datacite_temp_datarepos;
+
+CREATE TABLE IF NOT EXISTS datacite_temp_datarepos (
+	_dnet_resource_identifier_ CHARACTER VARYING(2048) DEFAULT 'temp_' || md5(clock_timestamp() :: TEXT) || '_' || md5(random() :: TEXT),
+	id                         CHARACTER VARYING(255) PRIMARY KEY,
+	name                       CHARACTER VARYING(512) NOT NULL,
+	name_cleaned               CHARACTER VARYING(512) NOT NULL,
+	class                      CHARACTER VARYING(255)
+);
+
+--CREATE INDEX datacite_sets__dnet_resource_identifier__idx ON datacite_sets (_dnet_resource_identifier_);
+CREATE INDEX datacite_temp_datarepos__dnet_resource_identifier__idx
+	ON datacite_temp_datarepos (_dnet_resource_identifier_);
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/rsf_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/rsf_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/rsf_context.xsl	(revision 60998)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+    <xsl:output indent="yes"/>
+
+    <xsl:template match="/">
+        <fundings>
+            <fundingtree>
+                <funder>
+                    <id>rsf_________::RSF</id>
+                    <shortname>RSF</shortname>
+                    <name>Russian Science Foundation</name>
+                    <originalname>Russian Science Foundation</originalname>
+                    <jurisdiction>RU</jurisdiction>
+                </funder>
+            </fundingtree>
+        </fundings>
+    </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/transform.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/transform.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/transform.wf.st	(revision 60998)
@@ -0,0 +1,110 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="selectIncrementalTransformation"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="selectIncrementalTransformation" type="IncrementalTransformation">
+	<DESCRIPTION>Decide REFRESH/INCREMENTAL transformation</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="operationType" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transform" type="Transform" isJoin="true">
+	<DESCRIPTION>Transform original records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="TRANSFORMATION_RULE_ID" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">tran_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="patchHostedBy"/>
+	</ARCS>
+</NODE>
+
+<NODE name="patchHostedBy" type="PatchHostedBy">
+	<DESCRIPTION>Patch oaf:hostedBy fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">tran_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">patched_epr</PARAM>		 
+		<!-- <PARAM required="true" type="string" name="dbName" managedBy="user">dnet_openaireplus</PARAM> -->
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>
+		<PARAM required="true" type="string" name="hostedbyMapTable" managedBy="user">hostedby_map</PARAM>
+		<PARAM required="true" type="string" name="xpathEntry" managedBy="user">//*[local-name()='journal']/@issn</PARAM>
+		<PARAM required="false" type="string" name="overrideDataSourceId" managedBy="user"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storeRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">patched_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="validateHostedByRepos"/>
+	</ARCS>
+</NODE>
+
+<NODE name="validateHostedByRepos" type="UpsertHostedByApis">
+	<DESCRIPTION>Validate hostedBy Repos</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xml/contextProfile.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xml/contextProfile.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xml/contextProfile.xml	(revision 60998)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value=""/>
+		<RESOURCE_TYPE value="ContextDSResourceType"/>
+		<RESOURCE_KIND value="ContextDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value=""/>
+	</HEADER>
+	<BODY>
+		<CONFIGURATION/>
+		<STATUS/>
+		<SECURITY_PARAMETERS/>
+	</BODY>
+</RESOURCE_PROFILE>
+	
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl/DatasetsFromPangaeaIngestion.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl/DatasetsFromPangaeaIngestion.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl/DatasetsFromPangaeaIngestion.xsl	(revision 60998)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/"
+                xmlns:oai="http://www.openarchives.org/OAI/2.0/"
+                xmlns:datetime="http://exslt.org/dates-and-times"
+                xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+                xmlns:oaa="http://namespace.openaire.eu/oaa" xmlns:oaf="http://namespace.openaire.eu/oaf"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:dnet="eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions"
+                xmlns:stringUtils="org.apache.commons.lang.StringUtils"
+                version="1.0"
+                exclude-result-prefixes="xsl dc dnet oaa fn stringUtils datetime">
+
+	<xsl:param name="namespacePrefix"/>
+	<xsl:param name="dataSourceId"/>
+	<xsl:param name="dataprovider_id"/>
+
+	<xsl:template match="/">
+		<xsl:variable name="identifier">
+			<xsl:value-of
+					select="stringUtils:substringAfter(/*[local-name()='datasetsRecord']/*[local-name()='metadata']/*[local-name()='MetaData']/*[local-name()='citation']/*[local-name()='URI'],'doi:')"
+			/>
+		</xsl:variable>
+		<oai:record>
+			<oai:header>
+				<dri:objIdentifier>
+					<xsl:value-of select="concat($namespacePrefix,'::', dnet:md5($identifier))"/>
+				</dri:objIdentifier>
+				<dri:recordIdentifier>
+					<xsl:value-of select="$identifier"/>
+				</dri:recordIdentifier>
+				<dri:dateOfCollection>
+					<xsl:value-of select="datetime:dateTime()"/>
+				</dri:dateOfCollection>
+				<dri:repositoryId>
+					<xsl:value-of select="$dataSourceId"/>
+				</dri:repositoryId>
+				<oaf:datasourceprefix>
+					<xsl:value-of select="$namespacePrefix"/>
+				</oaf:datasourceprefix>
+				<dri:repositoryId>
+					<xsl:value-of select="$dataprovider_id"/>
+				</dri:repositoryId>
+			</oai:header>
+			<oai:metadata>
+				<xsl:copy-of select="."/>
+			</oai:metadata>
+		</oai:record>
+
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/miur_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/miur_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/miur_context.xsl	(revision 60998)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0"
+                exclude-result-prefixes="fn">
+
+    <xsl:variable name="namespacePrefix" select="string('miur________')"/>
+    <xsl:variable name="funderID" select="concat($namespacePrefix, '::MIUR')"/>
+
+    <xsl:template match="/">
+        <fundings>
+            <fundingtree>
+                <funder>
+                    <id>
+                        <xsl:value-of select="$funderID"/>
+                    </id>
+                    <shortname>MIUR</shortname>
+                    <name>Ministero dell'Istruzione dell'Università e della Ricerca</name>
+                    <jurisdiction>IT</jurisdiction>
+                </funder>
+                <xsl:variable name="stream">
+                    <xsl:value-of select="translate(.//column[@name = 'FUNDING_STREAM'],' ','')"/>
+                </xsl:variable>
+                <funding_level_0>
+                    <id>
+                        <xsl:value-of select="concat($funderID, '::',$stream)"/>
+                    </id>
+                    <name><xsl:value-of select=".//column[@name='FUNDING_STREAM']"/></name>
+                    <description><xsl:value-of select=".//column[@name='FUNDING_STREAM']"/></description>
+                    <parent/>
+                    <class>
+                        <xsl:value-of select="concat('miur:',fn:lower-case($stream),'fundings')"/>
+                    </class>
+                </funding_level_0>
+            </fundingtree>
+        </fundings>
+    </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/sgov_context.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/sgov_context.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/sgov_context.xsl	(revision 60998)
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0"
+                exclude-result-prefixes="fn">
+
+    <xsl:variable name="namespacePrefix" select="string('sgov________')"/>
+    <xsl:variable name="funderID" select="concat($namespacePrefix, '::SGOV')"/>
+
+    <xsl:template name="FirstLetterAndNumber">
+        <xsl:param name="string" select="normalize-space(translate(., ', ', ' '))"/>
+
+        <xsl:for-each select="tokenize($string, ' ')">
+            <xsl:if test="string-length(.) != 0">
+                <xsl:variable name="char" select="substring(., 1, 1)"/>
+                <xsl:if test="fn:upper-case($char)=$char">
+                    <xsl:value-of select="$char"/>
+                </xsl:if>
+
+            </xsl:if>
+        </xsl:for-each>
+    </xsl:template>
+
+    <xsl:template match="/">
+        <fundings>
+            <fundingtree>
+                <funder>
+                    <id>
+                        <xsl:value-of select="$funderID"/>
+                    </id>
+                    <shortname>SGOV</shortname>
+                    <name>Gobierno de España</name>
+                    <jurisdiction>ES</jurisdiction>
+                </funder>
+                <xsl:variable name="stream">
+                    <xsl:call-template name="FirstLetterAndNumber">
+                        <xsl:with-param name="string" select=".//column[@name = 'Entidad Convocante']"/>
+                    </xsl:call-template>
+
+                </xsl:variable>
+                <xsl:variable name="streaml1">
+                    <xsl:call-template name="FirstLetterAndNumber">
+                        <xsl:with-param name="string" select=".//column[@name = 'Unidad Directiva']"/>
+                    </xsl:call-template>
+                </xsl:variable>
+                <funding_level_1>
+                    <id>
+                        <xsl:value-of select="concat($funderID, '::', $stream,'::',$streaml1)"/>
+                    </id>
+                    <description>
+                        <xsl:value-of select=".//column[@name='Unidad Directiva']"/>
+                    </description>
+                    <name>
+                        <xsl:value-of select=".//column[@name='Unidad Directiva']"/>
+                    </name>
+                    <class>
+                        <xsl:value-of select="concat('sgov:',fn:lower-case($streaml1),'fundings')"/></class>
+                    <parent>
+                        <funding_level_0>
+                            <id>
+                                <xsl:value-of select="concat($funderID, '::',$stream)"/>
+                            </id>
+                            <name><xsl:value-of select=".//column[@name='Entidad Convocante']"/></name>
+                            <description><xsl:value-of select=".//column[@name='Entidad Convocante']"/></description>
+                            <parent/>
+                            <class>
+                                <xsl:value-of select="concat('sgov:',fn:lower-case($stream),'fundings')"/>
+                            </class>
+                        </funding_level_0>
+                    </parent>
+                </funding_level_1>
+            </fundingtree>
+        </fundings>
+    </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/tara_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/tara_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/tara_contexts.xsl	(revision 60998)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+	<xsl:output indent="yes"/>
+
+	<xsl:template match="/">
+		<fundings>
+			<fundingtree>
+				<funder>
+					<id>taraexp_____::tara</id>
+					<shortname>TARA</shortname>
+					<name>Tara Expeditions Foundation</name>
+					<originalname>Fondation Tara Expéditions</originalname>
+					<jurisdiction>FR</jurisdiction>
+				</funder>
+			</fundingtree>
+		</fundings>
+	</xsl:template>
+</xsl:stylesheet>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/transformDatasets.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/transformDatasets.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/transformDatasets.wf.st	(revision 60998)
@@ -0,0 +1,85 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_dataset_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transformDatasets"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transformDatasets"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transformDatasets" type="ApplyXslt" isJoin="true">
+	<DESCRIPTION>Transform original records to Datasets</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_dataset_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">datasets_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="cleanDataset"/>
+	</ARCS>
+</NODE>
+
+<NODE name="cleanDataset" type="Transform">
+	<DESCRIPTION>Clean dataset records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="TRANSFORMATION_RULE_ID" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">datasets_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">cleaned_datasets_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeDatasetsRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storeDatasetsRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tranODF_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">cleaned_datasets_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tranODF_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,53 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDatacite"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDatacite" type="DeleteMDStore">
+	<DESCRIPTION>Delete the native mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>		
+		<ARC to="DeleteMDStoreODF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreODF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the cleaned mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields" isJoin="true">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/applicationContext-repohi.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/applicationContext-repohi.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/applicationContext-repohi.xml	(revision 60998)
@@ -0,0 +1,426 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:p="http://www.springframework.org/schema/p" 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="metaWfAggregatorDataRepository" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/collection.wf.st">
+                <property name="children">
+                    <list>
+                         <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                          p:name="validate"
+                          p:template="classpath:eu/dnetlib/msro/openaireplus/workflows/repo-hi/validate-nostore-openaire.wf.st">
+                            <property name="children">
+                                <list>
+                                    <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                        p:name="transform"
+                                        p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/transform.wf.st">
+                                    </bean>
+                                </list>
+                            </property>
+                         </bean>
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+    <!-- Aggregate Metadata (publications) from Aggregator::PubsRepository [Ingestion] -->
+    <bean id="metaWfAggregatorPubsRepositoryIngestion" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="validate"
+                              p:template="classpath:eu/dnetlib/msro/openaireplus/workflows/repo-hi/validate-nostore-openaire.wf.st">
+                            <property name="children">
+                                <list>
+                                    <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                          p:name="transform"
+                                          p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/transform.wf.st">
+                                    </bean>
+                                </list>
+                            </property>
+                        </bean>
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+
+    <bean id="metaWfDataRepository" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="validate"
+                              p:template="classpath:eu/dnetlib/msro/openaireplus/workflows/repo-hi/validate-nostore-openaire.wf.st">
+                            <property name="children">
+                                <list>
+                                    <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                          p:name="transform"
+                                          p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/transform.wf.st">
+                                    </bean>
+                                </list>
+                            </property>
+                        </bean>
+
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+    <bean id="metaWfH2020Projects" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="Create Contexts"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/findContextsFromMDStore.wf.st">
+                            <property name="children">
+                                <list>
+                                    <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                          p:name="transform"
+                                          p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/transformWithTDS.wf.st">
+                                        <property name="children">
+                                            <list>
+                                                <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                                      p:name="Create FET Context"
+                                                      p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/generateFETContext.wf.st">
+                                                </bean>
+                                                <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                                      p:name="updateDb"
+                                                      p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/updateDb.wf.st"/>
+                                            </list>
+                                        </property>
+                                    </bean>
+                                </list>
+                            </property>
+                        </bean>
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+    <bean id="metaWfEntityRegProjects" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="Create Contexts"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/findContextsFromMDStore.wf.st">
+                            <property name="children">
+                                <list>
+                                    <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                          p:name="transform"
+                                          p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/transformWithTDS.wf.st">
+                                        <property name="children">
+                                            <list>
+                                                <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                                      p:name="updateDb"
+                                                      p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/updateDb.wf.st"/>
+                                            </list>
+                                        </property>
+                                    </bean>
+                                </list>
+                            </property>
+                        </bean>
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+    <bean id="metaWfEntityRegDatasource" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="transform"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/transformWithTDS.wf.st">
+                            <property name="children">
+                                <list>
+                                    <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                          p:name="updateDb"
+                                          p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/updateDb.wf.st"/>
+                                </list>
+                            </property>
+                        </bean>
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+    <!-- DEPRECATED -->
+    <!--
+    <bean id="metaWfContextsEntityReg" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="Create Contexts"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/findContextsFromMDStore.wf.st"/>
+        </property>
+    </bean>
+    -->
+
+    <bean id="metaWfHostedByMapJournal" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="Update HostedBy Map"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/update.db.patch.wf.st">
+            </bean>
+        </property>
+    </bean>
+
+    <!-- Fill hostedBy-Map (ISSNs in DOAJ) from PANGAEA [Context] -->
+    <bean id="metaWfHostedByMapJournalIntersection" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="Update HostedBy Map"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/update.db.patch.wf.st">
+            </bean>
+        </property>
+    </bean>
+
+    <bean id="metaWfPubsRepository" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="validate"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/validate-nostore-openaire.wf.st">
+                            <property name="children">
+                                <list>
+                                    <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                          p:name="transform"
+                                          p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/transform.wf.st">
+                                    </bean>
+                                </list>
+                            </property>
+                        </bean>
+
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+    <bean id="metaWfClaimedMdRecords" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="transform"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/transform.wf.st">
+                        </bean>
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+    <!-- Aggregate Metadata (datasets and publications by project) from PANGAEA [Ingestion] -->
+
+    <bean id="metaWfDatasetbyProjectsOpenaireMdRecords" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="transformPublications"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/transformPublications.wf.st">
+                        </bean>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="transformDatasets"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/transformDatasets.wf.st">
+                        </bean>
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+
+    <!-- Aggregate Metadata (datasets and publications by journal) from DataRepository [Ingestion] Example :  pangaea, dryad -->
+
+    <bean id="metaWfDatasetbyJournalsOpenaireMdRecords" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="transformPublications"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/transformPublications.wf.st">
+                        </bean>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="transformDatasets"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/transformDatasets.wf.st">
+                        </bean>
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+
+    <!--Copy Metadata as Files (publications) from PubsRepository [Inference]  -->
+    <bean id="metaWfCopyFiles" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/repoBye_files.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="feedObjectStore"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/feedObjectStore.st">
+            </bean>
+        </property>
+    </bean>
+
+    <!-- Download Files (files) from PubsRepository [Inference] -->
+    <bean id="metaWfPubRepositoryFiles" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/downloadFilesFromPubsRepository/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="downloadFiles"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/downloadFilesFromPubsRepository/download.st">
+            </bean>
+        </property>
+    </bean>
+
+    <!-- Fill hostedBy-Map (OAI-PMH sets in DataRepositories) from DataCite [Context] -->
+    <bean id="metaWfAggrDatarepoOaiSets" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="transform"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/transform.wf.st">
+                            <property name="children">
+                                <list>
+                                    <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                          p:name="updateDb"
+                                          p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/updateDb.wf.st"/>
+                                </list>
+                            </property>
+                        </bean>
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+
+    <!-- Fill Generic hostedBy-Map -->
+    <bean id="metaWfGenericHostedByMap" class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="transform"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/transform.wf.st">
+                            <property name="children">
+                                <list>
+                                    <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                                          p:name="updateDb"
+                                          p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/updateDb.wf.st"/>
+                                </list>
+                            </property>
+                        </bean>
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+
+
+    <!-- Aggregate Metadata (publications) from PubsRepository [Hadoop] -->
+    <bean id="metaWfPubsRepositoryHadoop"
+          class="eu.dnetlib.msro.workflows.metawf.DatasourceMetaWorkflow"
+          p:destroyWorkflowTemplate="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/repoBye.wf.st"
+          scope="prototype">
+        <property name="tree">
+            <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                  p:name="collection"
+                  p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/collection.wf.st">
+                <property name="children">
+                    <list>
+                        <bean class="eu.dnetlib.msro.workflows.metawf.WorkflowTree"
+                              p:name="transform"
+                              p:template="classpath:/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepositoryHadoop/transform.wf.st" />
+                    </list>
+                </property>
+            </bean>
+        </property>
+    </bean>
+
+</beans>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/repoBye_files.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/repoBye_files.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/repoBye_files.wf.st	(revision 60998)
@@ -0,0 +1,21 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql/pangaea_journal_findmatches.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql/pangaea_journal_findmatches.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql/pangaea_journal_findmatches.sql	(revision 60998)
@@ -0,0 +1,15 @@
+INSERT INTO hostedby_map (_dnet_resource_identifier_, oa_source_id, entry, datasourceid)
+	SELECT
+		p.issn || '__' || p.id || '@@' || p.oa_source_id,
+		p.oa_source_id,
+		p.issn || '__' || p.id,
+		d.id
+	FROM datasources d, pangaea_temp_journals p
+	WHERE
+		d.collectedfrom = 'driver______::1790119e-d281-4b7a-aedf-866d1d853a07' AND d.issn IS NOT NULL AND d.id LIKE 'doajarticles::%' AND p.issn = d.issn
+		AND
+		(p.oa_source_id, p.issn || '__' || p.id) NOT IN
+		(SELECT
+			 oa_source_id,
+			 entry
+		 FROM hostedby_map)
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/collection.wf.st	(revision 60998)
@@ -0,0 +1,86 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="FETCH_JOURNAL_INTERSECTION"/>
+	</ARCS>
+</NODE> 
+
+<NODE name="FETCH_JOURNAL_INTERSECTION" type="QueryDb">
+	<DESCRIPTION>Fetch records by Query</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+		<PARAM name="sql" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql/find_journal_intersection.sql</PARAM>
+		<PARAM name="outputEprParam" type="string" managedBy="system" required="true">sql_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_DATASETS" />
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_DATASETS" type="CollectDatasetsByJournal">
+	<DESCRIPTION>Start Harvesting Datasets</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>		
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">sql_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="ApplyXslt">
+	<DESCRIPTION>Transform original records in DB rows</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">INCREMENTAL</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/collection.wf.st	(revision 60998)
@@ -0,0 +1,63 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT"/>
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER" type="MdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("orig_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/update.db.patch.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/update.db.patch.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/update.db.patch.wf.st	(revision 60998)
@@ -0,0 +1,78 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="PREPARE_DB"/>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Obtain parameters for current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="generateRow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_DB" type="ExecuteSql">
+	<DESCRIPTION>Create necessary tables</DESCRIPTION>
+    <PARAMETERS>
+    	<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+        <PARAM name="sql" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql/pangaea_preparetable.sql</PARAM>
+	</PARAMETERS>
+    <ARCS>
+		<ARC to="COLLECT"/>		
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="generateRow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="generateRow" type="ApplyXslt" isJoin="true">
+	<DESCRIPTION>Transform original records to Publication</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/xsl','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">row_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_JORUNAL_DB"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_JORUNAL_DB" type="UpdateOpenaireDb">
+	<DESCRIPTION>Update Db</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">row_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="FIND_MATCHES"/>
+	</ARCS>
+</NODE>
+
+<NODE name="FIND_MATCHES" type="ExecuteSql">
+	<DESCRIPTION>Add new journal to patch entry tables</DESCRIPTION>
+    <PARAMETERS>
+    	<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+        <PARAM name="sql" type="string" managedBy="user" required="true" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql','sql')"></PARAM>
+	</PARAMETERS>
+    <ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,53 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDatacite"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDatacite" type="DeleteMDStore">
+	<DESCRIPTION>Delete the native mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>		
+		<ARC to="DeleteMDStoreODF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreODF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the cleaned mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields" isJoin="true">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/transformDatasets.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/transformDatasets.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/transformDatasets.wf.st	(revision 60998)
@@ -0,0 +1,85 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_dataset_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transformDatasets"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transformDatasets"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transformDatasets" type="ApplyXslt" isJoin="true">
+	<DESCRIPTION>Transform original records to Datasets</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_dataset_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">datasets_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="cleanDataset"/>
+	</ARCS>
+</NODE>
+
+<NODE name="cleanDataset" type="Transform">
+	<DESCRIPTION>Clean dataset records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="TRANSFORMATION_RULE_ID" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">datasets_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">cleaned_datasets_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeDatasetsRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storeDatasetsRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tranODF_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">cleaned_datasets_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tranODF_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorPubsRepository/collection.wf.st	(revision 60998)
@@ -0,0 +1,148 @@
+ <NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="SELECT_MODE"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="SELECT_MODE" type="Selection">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">REFRESH</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_REFRESH" name="REFRESH" />
+		<ARC to="PREPARE_INCREMENTAL" name="INCREMENTAL" />
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_REFRESH" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="user">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">sysimport:crosswalk</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">sysimport:crosswalk</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_INCREMENTAL" type="FindDateRangeForIncrementalHarvesting">
+	<DESCRIPTION>Find Date Range For Incremental Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_INCREMENTAL" type="DateRangeCollectRecords">
+	<DESCRIPTION>Start incremental harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+		<PARAM required="false" type="string" name="overrideFrom" managedBy="user"></PARAM>
+        <PARAM required="false" type="string" name="overrideUntil" managedBy="user"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_INCREMENTAL" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="system">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">sysimport:crosswalk</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">sysimport:crosswalk</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_INCREMENTAL" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records incrementally</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">INCREMENTAL</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt/row_2_mdstore.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt/row_2_mdstore.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt/row_2_mdstore.xsl	(revision 60998)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xmlns:datetime="http://exslt.org/dates-and-times" xmlns:exslt="http://exslt.org/common"
+                exclude-result-prefixes="xsl datetime exslt xsi" xmlns:dri="http://www.driver-repository.eu/namespace/dri">
+
+	<xsl:param name="datasourceId"/>
+
+	<xsl:template match="/">
+		<record xmlns:dri="http://www.driver-repository.eu/namespace/dri">
+			<header>
+				<dri:objIdentifier>
+					<xsl:value-of select="concat($datasourceId, '::', normalize-space(//FIELD[@name='_dnet_resource_identifier_']))"/>
+				</dri:objIdentifier>
+				<dri:dateOfCollection>
+					<xsl:value-of select="datetime:dateTime()"/>
+				</dri:dateOfCollection>
+				<dri:repositoryId>
+					<xsl:value-of select="$datasourceId"/>
+				</dri:repositoryId>
+			</header>
+			<metadata>
+				<xsl:copy-of select="."/>
+			</metadata>
+		</record>
+	</xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite/datacite_datarepos_2_db.xslt
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite/datacite_datarepos_2_db.xslt	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite/datacite_datarepos_2_db.xslt	(revision 60998)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:clean="eu.dnetlib.msro.openaireplus.utils.CleaningXsltFunctions"
+                version="1.0">
+
+	<xsl:template match="/">
+		<ROWS>
+			<xsl:variable name="id" select="//FIELD[@name='id']"/>
+			<xsl:variable name="name" select="//FIELD[@name='name']"/>
+			<xsl:variable name="class" select="//FIELD[@name='class']"/>
+			<xsl:variable name="cleanedName">
+				<xsl:choose>
+					<xsl:when test="string-length(clean:clean($name)) &gt;0 ">
+						<xsl:value-of select="clean:clean($name)"/>
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:value-of select="clean:clean(//FIELD[@name='englishname'])"/>
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:variable>
+
+			<xsl:if test="string-length($cleanedName) &gt; 0">
+				<ROW table="datacite_temp_datarepos">
+					<FIELD name="_dnet_resource_identifier_">
+						<xsl:value-of select="$id"/>
+					</FIELD>
+					<FIELD name="id">
+						<xsl:value-of select="$id"/>
+					</FIELD>
+					<FIELD name="name">
+						<xsl:value-of select="$name"/>
+					</FIELD>
+					<FIELD name="name_cleaned">
+						<xsl:value-of select="$cleanedName"/>
+					</FIELD>
+					<FIELD name="class">
+						<xsl:value-of select="$class"/>
+					</FIELD>
+				</ROW>
+			</xsl:if>
+
+		</ROWS>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/transformWithTDS.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/transformWithTDS.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/transformWithTDS.wf.st	(revision 60998)
@@ -0,0 +1,105 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="selectIncrementalTransformation"/>
+    </ARCS>
+</NODE>
+
+<NODE name="selectIncrementalTransformation" type="IncrementalTransformation">
+    <DESCRIPTION>Decide REFRESH/INCREMENTAL transformation</DESCRIPTION>
+    <PARAMETERS>
+        <PARAM required="true" type="string" name="operationType" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])"></PARAM>
+    </PARAMETERS>
+    <ARCS>
+        <ARC to="obtainParams"/>
+    </ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+    <DESCRIPTION>Obtain params on datasource</DESCRIPTION>
+    <PARAMETERS>
+        <PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+    </PARAMETERS>
+    <ARCS>
+        <ARC to="fetchOriginals"/>
+    </ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("orig_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transform" type="Transform">
+	<DESCRIPTION>Transform original records in DB rows</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="TRANSFORMATION_RULE_ID" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">packed_row_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="cleanRows"/>
+	</ARCS>
+</NODE>
+
+<NODE name="cleanRows" type="Clean">
+	<DESCRIPTION>Clean DB rows values according to defined vocabularies</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="CLEANER_RULE_ID" function="listProfiles('CleanerDSResourceType', '//CLEANER_NAME')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">packed_row_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">cleaned_row_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="filterManaged"/>
+	</ARCS>
+</NODE>
+
+<NODE name="filterManaged" type="FilterManagedDatasources">
+    <DESCRIPTION>Filter DB rows according to the managed flag state</DESCRIPTION>
+    <PARAMETERS>
+        <PARAM managedBy="system" name="inputEprParam" required="true" type="string">cleaned_row_epr</PARAM>
+        <PARAM managedBy="system" name="outputEprParam" required="true" type="string">filtered_row_epr</PARAM>
+    </PARAMETERS>
+    <ARCS>
+        <ARC to="storeRowRecords"/>
+    </ARCS>
+</NODE>
+
+<NODE name="storeRowRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">filtered_row_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/transform.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/transform.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/transform.wf.st	(revision 60998)
@@ -0,0 +1,110 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="selectIncrementalTransformation"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="selectIncrementalTransformation" type="IncrementalTransformation">
+	<DESCRIPTION>Decide REFRESH/INCREMENTAL transformation</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="operationType" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transform" type="Transform" isJoin="true">
+	<DESCRIPTION>Transform original records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="TRANSFORMATION_RULE_ID" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">tran_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="patchHostedBy"/>
+	</ARCS>
+</NODE>
+
+<NODE name="patchHostedBy" type="PatchHostedBy">
+	<DESCRIPTION>Patch oaf:hostedBy fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">tran_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">patched_epr</PARAM>		 
+		<!-- <PARAM required="true" type="string" name="dbName" managedBy="user">dnet_openaireplus</PARAM> -->
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>
+		<PARAM required="true" type="string" name="hostedbyMapTable" managedBy="user">hostedby_map</PARAM>
+		<PARAM required="true" type="string" name="xpathEntry" managedBy="user">//*[local-name()='header']/*[local-name()='setSpec']</PARAM>
+		<PARAM required="false" type="string" name="overrideDataSourceId" managedBy="user"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storeRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">patched_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="validateHostedByRepos"/>
+	</ARCS>
+</NODE>
+
+<NODE name="validateHostedByRepos" type="UpsertHostedByApis">
+	<DESCRIPTION>Validate hostedBy Repos</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_findDataRepos.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_findDataRepos.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_findDataRepos.sql	(revision 60998)
@@ -0,0 +1,9 @@
+SELECT
+	id              AS id,
+	officialname    AS name,
+	englishname     AS englishname,
+	typology AS class
+FROM
+	dsm_datasources
+WHERE
+	typology LIKE '%datarepository%'
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/sql/doajJournals_findMatches.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/sql/doajJournals_findMatches.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/sql/doajJournals_findMatches.sql	(revision 60998)
@@ -0,0 +1,15 @@
+INSERT INTO hostedby_map (_dnet_resource_identifier_, oa_source_id, entry, datasourceid)
+	SELECT
+		d.issn || '@@' || d.collectedfrom,
+		d.collectedfrom,
+		d.issn,
+		d.id
+	FROM dsm_datasources d
+	WHERE
+		d.collectedfrom = 'driver______::1790119e-d281-4b7a-aedf-866d1d853a07' AND d.issn IS NOT NULL AND d.id LIKE 'doajarticles::%'
+		AND
+		(d.collectedfrom, d.issn) NOT IN
+		(SELECT
+			 oa_source_id,
+			 entry
+		 FROM hostedby_map)
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/arc_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/arc_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/arc_contexts.xsl	(revision 60998)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions"
+                xmlns:ands="http://ands.org.au/standards/rif-cs/registryObjects"
+                exclude-result-prefixes="fn">
+
+	<xsl:output indent="yes"/>
+
+	<xsl:template match="/">
+		<fundings>
+			<fundingtree>
+				<funder>
+					<id>arc_________::ARC</id>
+					<shortname>ARC</shortname>
+					<name>Australian Research Council (ARC)</name>
+					<jurisdiction>AU</jurisdiction>
+				</funder>
+			</fundingtree>
+			<xsl:for-each select="//ands:description[@type='fundingScheme']">
+				<fundingtree>
+					<funder>
+						<id>arc_________::ARC</id>
+						<shortname>ARC</shortname>
+						<name>Australian Research Council (ARC)</name>
+						<jurisdiction>AU</jurisdiction>
+					</funder>
+					<funding_level_0>
+						<id>
+							<xsl:value-of select="concat('arc_________::ARC::', normalize-space(.))"/>
+						</id>
+						<name>
+							<xsl:value-of select="normalize-space(.)"/>
+						</name>
+						<description>
+							<xsl:value-of select="normalize-space(.)"/>
+						</description>
+						<parent></parent>
+						<class>arc:fundingStream</class>
+					</funding_level_0>
+				</fundingtree>
+			</xsl:for-each>
+		</fundings>
+	</xsl:template>
+</xsl:stylesheet>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql/pangaea_preparetable.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql/pangaea_preparetable.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/sql/pangaea_preparetable.sql	(revision 60998)
@@ -0,0 +1,7 @@
+DROP TABLE IF EXISTS pangaea_temp_journals;
+CREATE TABLE IF NOT EXISTS pangaea_temp_journals (
+	_dnet_resource_identifier_ CHARACTER VARYING(2048) DEFAULT 'temp_' || md5(clock_timestamp() :: TEXT) || '_' || md5(random() :: TEXT),
+	id                         CHARACTER VARYING(255) PRIMARY KEY,
+	issn                       CHARACTER VARYING(255),
+	oa_source_id               CHARACTER VARYING(255) REFERENCES datasources (id)
+);
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/fwf_contexts.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/fwf_contexts.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl/fwf_contexts.xsl	(revision 60998)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" version="1.0"
+                exclude-result-prefixes="fn">
+
+	<xsl:variable name="namespacePrefix" select="string('fwf_________')"/>
+	<xsl:variable name="funderID" select="concat($namespacePrefix, '::FWF')"/>
+
+	<xsl:template match="/">
+		<xsl:variable name="fundingName" select="normalize-space(.//column[@name='promotion category'])"/>
+		<xsl:variable name="fundingCode" select="normalize-space(substring-before(.//column[@name='project number'],' –'))"/>
+		<fundingtree>
+			<funder>
+				<id>
+					<xsl:value-of select="$funderID"/>
+				</id>
+				<shortname>FWF</shortname>
+				<name>Austrian Science Fund (FWF)</name>
+				<originalname>Fonds zur Förderung der Wissenschaftlichen Forschung</originalname>
+				<jurisdiction>AT</jurisdiction>
+			</funder>
+			<xsl:if test="string-length($fundingCode) &gt; 0">
+				<funding_level_0>
+					<id>
+						<xsl:value-of select="concat($funderID, '::', $fundingCode)"/>
+					</id>
+					<description>
+						<xsl:value-of select="$fundingName"/>
+					</description>
+					<name>
+						<xsl:value-of select="$fundingName"/>
+					</name>
+					<parent></parent>
+					<class>fwf:programmes</class>
+				</funding_level_0>
+			</xsl:if>
+		</fundingtree>
+
+	</xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/findContextsFromMDStore.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/findContextsFromMDStore.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/findContextsFromMDStore.wf.st	(revision 60998)
@@ -0,0 +1,70 @@
+<NODE name="COLLECT" isStart="true" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("orig_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="FIND_CONTEXTS"/>
+	</ARCS>
+</NODE>
+
+<NODE name="FIND_CONTEXTS" type="ApplyXslt">
+	<DESCRIPTION>Find project contexts</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xsl','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">contexts_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="PROCESS_CONTEXTS"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PROCESS_CONTEXTS" type="ProcessContexts">
+	<DESCRIPTION>Process project contexts</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">contexts_epr</PARAM>
+		<PARAM required="true" type="string" name="contextObj" managedBy="system">contexts</PARAM>
+		<PARAM required="true" type="string" name="contextId" managedBy="user"></PARAM>
+		<PARAM required="true" type="string" name="contextLabel" managedBy="user"></PARAM>
+		<PARAM required="true" type="string" name="contextType" managedBy="user">funding</PARAM>
+		<PARAM function="validValues(['all', 'manager', 'hidden'])" managedBy="user" name="dashboardVisibility" required="true" type="string">all</PARAM>
+		<PARAM required="false" type="string" name="params" managedBy="user">{openaire-guidelines3.0:XXX, FundRef:YYYY, prefix:PPPP}</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="PREPARE_DB_ENTRIES"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_DB_ENTRIES" type="PrepareContextDbEntries">
+	<DESCRIPTION>Prepare the DB entries</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">db_epr</PARAM>
+		<PARAM required="true" type="string" name="contextObj" managedBy="system">contexts</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_DB"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_DB" type="UpdateOpenaireDb">
+	<DESCRIPTION>Update Db</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">db_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="SAVE_PROFILE"/>
+	</ARCS>
+</NODE>
+
+<NODE name="SAVE_PROFILE" type="SaveContextProfile">
+	<DESCRIPTION>Save the Context Profile</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="contextObj" managedBy="system">contexts</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/sql/find_journal_intersection.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/sql/find_journal_intersection.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/sql/find_journal_intersection.sql	(revision 60998)
@@ -0,0 +1,9 @@
+SELECT
+	h.entry        AS id,
+	h.datasourceid AS datasource,
+	d.officialname AS name
+
+FROM hostedby_map h, dsm_datasources d
+WHERE
+	h.oa_source_id = 're3data_____::r3d100010134' AND
+	h.datasourceid = d.id
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/transformPublications.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/transformPublications.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/transformPublications.wf.st	(revision 60998)
@@ -0,0 +1,93 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginalsForPublication"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginalsForPublication"/>
+	</ARCS>
+</NODE>
+
+
+<NODE name="fetchOriginalsForPublication" type="FetchMDStoreRecords" isJoin="true">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_publication_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transformPublication"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transformPublication" type="ApplyXslt">
+	<DESCRIPTION>Transform original records to Publication</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_publication_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">packed_publication_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="splitRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="splitRecords" type="SplitDatasetRecord">
+	<DESCRIPTION>Split Records into datasets and publication</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParm" managedBy="system">packed_publication_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParm" managedBy="system">publication_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>		
+		<ARC to="findHostedBy"/>
+	</ARCS>
+</NODE>
+
+<NODE name="findHostedBy" type="FindHostedBy">
+	<DESCRIPTION>Patch oaf:hostedBy fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">publication_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">patched_epr</PARAM>
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>	
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storePublicationRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storePublicationRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tranOAF_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">patched_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="validateHostedByRepos"/>
+	</ARCS>
+</NODE>
+
+<NODE name="validateHostedByRepos" type="UpsertHostedByApis">
+	<DESCRIPTION>Validate hostedBy Repos</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tranOAF_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedBy/fillHostedBy.sql.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedBy/fillHostedBy.sql.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedBy/fillHostedBy.sql.st	(revision 60998)
@@ -0,0 +1,25 @@
+INSERT INTO hostedby_map(_dnet_resource_identifier_, oa_source_id, entry, datasourceid)
+SELECT   d.issn||'@@'||d.collectedfrom, d.collectedfrom, d.issn, d.id 
+  FROM  dsm_datasources d  where
+	d.collectedfrom ='$datasourceId$' and d.issn is not null and d.id like '$datasourceNamespacePrefix$%'
+	AND 
+	(d.collectedfrom, d.issn) NOT IN
+		(SELECT oa_source_id, entry from hostedby_map);
+
+
+INSERT INTO hostedby_map(_dnet_resource_identifier_, oa_source_id, entry, datasourceid)
+SELECT   d.eissn||'@@'||d.collectedfrom, d.collectedfrom, d.eissn, d.id
+  FROM  dsm_datasources d  where
+	d.collectedfrom ='$datasourceId$' and d.eissn is not null and d.id like '$datasourceNamespacePrefix$%'
+	AND
+	(d.collectedfrom, d.eissn) NOT IN
+		(SELECT oa_source_id, entry from hostedby_map);
+
+
+INSERT INTO hostedby_map(_dnet_resource_identifier_, oa_source_id, entry, datasourceid)
+SELECT   d.lissn||'@@'||d.collectedfrom, d.collectedfrom, d.lissn, d.id
+  FROM  dsm_datasources d  where
+	d.collectedfrom ='$datasourceId$' and d.lissn is not null and d.id like '$datasourceNamespacePrefix$%'
+	AND
+	(d.collectedfrom, d.lissn) NOT IN
+		(SELECT oa_source_id, entry from hostedby_map);
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/wos/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,53 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreGMF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreGMF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the GMF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreOAF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreOAF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the OAF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/collection.wf.st	(revision 60998)
@@ -0,0 +1,74 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_REFRESH"/>
+	</ARCS>
+</NODE> 
+
+<NODE name="COLLECT_REFRESH" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="ApplyXslt">
+	<DESCRIPTION>Transform original records in DB rows</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">INCREMENTAL</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/repoByeGeneric.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/repoByeGeneric.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/repoByeGeneric.wf.st	(revision 60998)
@@ -0,0 +1,53 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreGMF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreGMF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the GMF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDBMF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDBMF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the DBMF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("row_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt/openaireMdBuilder.xslt.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt/openaireMdBuilder.xslt.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt/openaireMdBuilder.xslt.st	(revision 60998)
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:datetime="http://exslt.org/dates-and-times" xmlns:exslt="http://exslt.org/common"
+    xmlns:oai="http://www.openarchives.org/OAI/2.0/"
+    xmlns:dnet="eu.dnetlib.miscutils.functional.xml.DnetXsltFunctions"
+    xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+    xmlns:oaf="http://namespace.openaire.eu/oaf"
+    exclude-result-prefixes="xsl datetime exslt dnet">
+    
+    <xsl:variable name="status" select="/*[local-name() = 'record']/*[local-name() = 'header']/@status" />
+    <xsl:variable name="datestamp" select="datetime:dateTime()" />
+
+    <xsl:template match="/">
+        <xsl:choose>
+            <xsl:when test=".//oaf:entity">
+                <xsl:call-template name="identity"/>
+            </xsl:when>
+            <xsl:otherwise>
+                <xsl:call-template name="default"/>
+            </xsl:otherwise>
+        </xsl:choose>
+    </xsl:template>
+
+    <xsl:template name="identity">
+        <oai:record xmlns="http://namespace.openaire.eu/"
+            xmlns:dc="http://purl.org/dc/elements/1.1/"
+            xmlns:dr="http://www.driver-repository.eu/namespace/dr"
+            xmlns:prov="http://www.openarchives.org/OAI/2.0/provenance"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+            <oai:header>
+                <dri:dateOfCollection><xsl:value-of select="\$datestamp"/></dri:dateOfCollection>
+                 <xsl:if test="not(.//oaf:datasourceprefix)">
+                     <oaf:datasourceprefix>$namespacePrefix$</oaf:datasourceprefix>
+                 </xsl:if>
+                <xsl:for-each select="//*[local-name() = 'header']/*[local-name() != 'dateOfCollection']">
+                    <xsl:copy-of select="."/>
+                </xsl:for-each>
+            </oai:header>
+            <oai:metadata>
+                <xsl:copy-of select=".//oaf:entity"/>
+            </oai:metadata>
+            <xsl:call-template name="about"/>
+        </oai:record>
+    </xsl:template>
+
+    <xsl:template name="default">
+
+        <oai:record xmlns="http://namespace.openaire.eu/"
+            xmlns:dc="http://purl.org/dc/elements/1.1/"
+            xmlns:prov="http://www.openarchives.org/OAI/2.0/provenance"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+            <xsl:variable name="evaluatedMetadataId" select="normalize-space($xpath$)" />
+            <oai:header>
+                <xsl:if test="\$status">
+                    <xsl:attribute name="status" >
+                        <xsl:value-of select="\$status"/>
+                    </xsl:attribute>
+                </xsl:if>
+                <xsl:if test="not(.//dri:objIdentifier) and not(.//*[local-name() = 'header']/*[local-name()='objIdentifier'])">
+                    <xsl:if test="\$evaluatedMetadataId != ''">
+                        <dri:objIdentifier><xsl:value-of select="concat('$namespacePrefix$::', dnet:md5(\$evaluatedMetadataId))"/></dri:objIdentifier>
+                    </xsl:if>
+                </xsl:if>
+                <xsl:if test="not(.//dri:recordIdentifier)">
+                    <dri:recordIdentifier><xsl:value-of select="\$evaluatedMetadataId"/></dri:recordIdentifier>
+                </xsl:if>
+                <xsl:if test="not(string(.//dri:dateOfCollection))">
+                    <dri:dateOfCollection><xsl:value-of select="\$datestamp"/></dri:dateOfCollection>
+                </xsl:if>
+                <xsl:if test="not(.//oaf:datasourceprefix)">
+                    <oaf:datasourceprefix>$namespacePrefix$</oaf:datasourceprefix>
+                </xsl:if>
+
+                <xsl:for-each select="/*[local-name() = 'record']/*[local-name() = 'header']/*">
+                    <xsl:copy-of select="."/>
+                </xsl:for-each>
+            </oai:header>
+            <xsl:choose>
+                <xsl:when test="count(/*[local-name() = 'record']/*[local-name() = 'metadata']) &gt; 0">
+                    <xsl:copy-of select="/*[local-name() = 'record']/*[local-name() = 'metadata']"/>
+                </xsl:when>
+                <xsl:when test="\$status = 'deleted'" />
+                <xsl:otherwise>
+                    <oai:metadata>
+                        <xsl:copy-of select="."/>
+                    </oai:metadata>
+                </xsl:otherwise>
+            </xsl:choose>
+            <xsl:if test="not(\$status) or \$status != 'deleted'">
+                <xsl:call-template name="about"/>
+            </xsl:if>
+        </oai:record>
+    </xsl:template>
+
+    <xsl:template name="about">
+        <about>
+            <provenance xmlns="http://www.openarchives.org/OAI/2.0/provenance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance http://www.openarchives.org/OAI/2.0/provenance.xsd">
+                <originDescription harvestDate="{\$datestamp}" altered="true">
+                    <baseURL>$baseurl$</baseURL>
+                    <identifier><xsl:value-of select="//*[local-name()='header']/*[local-name()='identifier']"/></identifier>
+                    <datestamp><xsl:value-of select="//*[local-name()='header']/*[local-name()='datestamp']"/></datestamp>
+                    <metadataNamespace>$metadatanamespace$</metadataNamespace>
+                    <xsl:copy-of select="//*[local-name()='provenance']/*[local-name() = 'originDescription']"/>
+                </originDescription>
+            </provenance>
+            <oaf:datainfo>
+                <oaf:inferred>$inferred$</oaf:inferred>
+                <oaf:deletedbyinference>$deletedbyinference$</oaf:deletedbyinference>
+                <oaf:trust>$trust$</oaf:trust>
+                <oaf:inferenceprovenance>$inferenceprovenance$</oaf:inferenceprovenance>
+                <oaf:provenanceaction schemename="dnet:provenanceActions" schemeid="dnet:provenanceActions" classname="$provenanceactionclassname$" classid="$provenanceactionclassid$"/>
+            </oaf:datainfo>
+        </about>
+    </xsl:template>
+    
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/update.db.patch.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/update.db.patch.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/update.db.patch.wf.st	(revision 60998)
@@ -0,0 +1,78 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="PREPARE_DB"/>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Obtain parameters for current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="generateRow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_DB" type="ExecuteSql">
+	<DESCRIPTION>Create necessary tables</DESCRIPTION>
+    <PARAMETERS>
+    	<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+        <PARAM name="sql" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/sql/pangaea_preparetable.sql</PARAM>
+	</PARAMETERS>
+    <ARCS>
+		<ARC to="COLLECT"/>		
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="generateRow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="generateRow" type="ApplyXslt" isJoin="true">
+	<DESCRIPTION>Transform original records to Publication</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/xsl','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">row_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_JORUNAL_DB"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_JORUNAL_DB" type="UpdateOpenaireDb">
+	<DESCRIPTION>Update Db</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">row_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="FIND_MATCHES"/>
+	</ARCS>
+</NODE>
+
+<NODE name="FIND_MATCHES" type="ExecuteSql">
+	<DESCRIPTION>Add new journal to patch entry tables</DESCRIPTION>
+    <PARAMETERS>
+    	<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+        <PARAM name="sql" type="string" managedBy="user" required="true" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/sql','sql')"></PARAM>
+	</PARAMETERS>
+    <ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/transform.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/transform.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepository/transform.wf.st	(revision 60998)
@@ -0,0 +1,85 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="selectIncrementalTransformation"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="selectIncrementalTransformation" type="IncrementalTransformation">
+	<DESCRIPTION>Decide REFRESH/INCREMENTAL transformation</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="operationType" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transform" type="Transform" isJoin="true">
+	<DESCRIPTION>Transform original records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="TRANSFORMATION_RULE_ID" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">tran_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storeRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">tran_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl/DatasetfromPangaeaTransform.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl/DatasetfromPangaeaTransform.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl/DatasetfromPangaeaTransform.xsl	(revision 60998)
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:oai="http://www.openarchives.org/OAI/2.0/" xmlns:datetime="http://exslt.org/dates-and-times"
+                xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+                xmlns:md="http://www.pangaea.de/MetaData"
+                xmlns:oaa="http://namespace.openaire.eu/oaa" xmlns:oaf="http://namespace.openaire.eu/oaf"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:dnet="eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions"
+                xmlns:stringUtils="org.apache.commons.lang.StringUtils"
+                version="1.0"
+                exclude-result-prefixes="xsl dnet oaa fn stringUtils datetime">
+	<xsl:param name="namespacePrefix"/>
+	<xsl:param name="dataSourceId"/>
+	<xsl:param name="parentDatasourceId"/>
+	<xsl:param name="dataprovider_name"/>
+	<xsl:param name="dataprovider_id"/>
+	<xsl:template match="/">
+
+		<xsl:variable name="identifier_datacite">
+			<xsl:value-of select="oai:record/oai:header/dri:objIdentifier"/>
+		</xsl:variable>
+
+		<xsl:variable name="dataset_identifier">
+			<xsl:value-of
+					select="stringUtils:substringAfter(//md:citation/md:URI,'doi:')"/>
+		</xsl:variable>
+		<xsl:variable name="openaire_dataset_identifier">
+			<xsl:value-of
+					select="concat($namespacePrefix,'::', dnet:md5($dataset_identifier))"/>
+		</xsl:variable>
+
+		<xsl:variable name="parentURI">
+			<xsl:value-of select="//md:citation/md:parentURI"/>
+		</xsl:variable>
+
+		<xsl:call-template name="CreateRecord">
+			<xsl:with-param name="openaire_dataset_identifier" select="$openaire_dataset_identifier"/>
+			<xsl:with-param name="dataset_identifier" select="$dataset_identifier"/>
+			<xsl:with-param name="parent_uri" select="$parentURI"/>
+		</xsl:call-template>
+
+
+	</xsl:template>
+	<xsl:template name="CreateRecord">
+		<xsl:param name="openaire_dataset_identifier"/>
+		<xsl:param name="dataset_identifier"/>
+		<xsl:param name="parent_uri"/>
+		<xsl:variable name="parentUri">
+			<xsl:value-of select="//md:citation/md:parentURI"/>
+		</xsl:variable>
+		<oai:record>
+			<oai:header>
+				<xsl:choose>
+					<xsl:when test="string-length($parentUri) = 0">
+						<xsl:choose>
+							<xsl:when test="//md:citation/md:supplementTo">
+								<dri:objIdentifier>
+									<xsl:value-of select="$openaire_dataset_identifier"/>
+								</dri:objIdentifier>
+							</xsl:when>
+						</xsl:choose>
+					</xsl:when>
+					<xsl:otherwise>
+						<dri:objIdentifier>
+							<xsl:value-of select="$openaire_dataset_identifier"/>
+						</dri:objIdentifier>
+					</xsl:otherwise>
+				</xsl:choose>
+				<dri:recordIdentifier>
+					<xsl:value-of select="$dataset_identifier"/>
+				</dri:recordIdentifier>
+				<dri:dateOfCollection>
+					<xsl:value-of select="datetime:dateTime()"/>
+				</dri:dateOfCollection>
+				<dri:repositoryId>
+					<xsl:value-of select="$dataprovider_id"/>
+				</dri:repositoryId>
+				<oaf:datasourceprefix>
+					<xsl:value-of select="$namespacePrefix"/>
+				</oaf:datasourceprefix>
+			</oai:header>
+			<oai:metadata>
+				<resource
+						xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+						xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd"
+						xmlns="http://datacite.org/schema/kernel-3">
+					<identifier identifierType="DOI">
+						<xsl:value-of
+								select="$dataset_identifier"/>
+					</identifier>
+					<creators>
+						<xsl:for-each select="//md:citation/md:author">
+							<creator>
+								<creatorName>
+									<xsl:value-of select="concat(./md:firstName, ' ', ./md:lastName)"/>
+								</creatorName>
+								<nameIdentifier schemeURI="http://www.pangaea.de"
+								                nameIdentifierScheme="PANGAEA">
+									<xsl:value-of select="./@id"/>
+								</nameIdentifier>
+
+							</creator>
+						</xsl:for-each>
+					</creators>
+					<titles>
+						<xsl:for-each select="//md:citation/md:title">
+							<title xml:lang="en-us">
+								<xsl:value-of select="."/>
+							</title>
+						</xsl:for-each>
+					</titles>
+					<publisher>PANGAEA</publisher>
+					<publicationYear>
+						<xsl:value-of select="//md:citation/md:year"/>
+					</publicationYear>
+					<resourceType resourceTypeGeneral="Dataset"/>
+					<xsl:variable name="description">
+						<xsl:value-of select="//md:citation/md:abstract"/>
+					</xsl:variable>
+					<xsl:if test="$description">
+						<descriptions>
+							<description descriptionType="Abstract">
+								<xsl:value-of select="$description"/>
+							</description>
+						</descriptions>
+					</xsl:if>
+					<rights>info:eu-repo/semantics/openAccess</rights>
+					<contributors>
+						<contributor contributorType="Funder">
+							<contributorName>European Commission</contributorName>
+							<nameIdentifier nameIdentifierScheme="info">
+								<xsl:value-of
+										select="//oaf:projectid"/>
+							</nameIdentifier>
+						</contributor>
+					</contributors>
+				</resource>
+				<xsl:variable name="journalName">
+					<xsl:value-of select="//*[local-name() ='journal']/@name"/>
+				</xsl:variable>
+				<xsl:variable name="journalISSN">
+					<xsl:value-of select="//*[local-name() ='journal']/@issn"/>
+				</xsl:variable>
+				<xsl:variable name="journalDSId">
+					<xsl:value-of select="//*[local-name() ='journal']/@datasourceid"/>
+				</xsl:variable>
+
+				<xsl:choose>
+					<xsl:when test="string-length($journalISSN) &gt; 0">
+						<oaf:journal issn="{$journalISSN}" eissn="">
+							<xsl:value-of select="$journalName"/>
+						</oaf:journal>
+						<oaf:hostedBy>
+							<xsl:attribute name="id">
+								<xsl:value-of select="$journalDSId"/>
+							</xsl:attribute>
+							<xsl:attribute name="name">
+								<xsl:value-of select="$journalName"/>
+							</xsl:attribute>
+						</oaf:hostedBy>
+					</xsl:when>
+					<xsl:otherwise>
+						<oaf:hostedBy
+								id="openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18"
+								name="Unknown Repository"/>
+					</xsl:otherwise>
+				</xsl:choose>
+				<xsl:for-each select="//md:citation/md:supplementTo/@id">
+					<xsl:variable name="publicationID">
+						<xsl:value-of select="."/>
+					</xsl:variable>
+					<xsl:choose>
+						<xsl:when test="string-length($publicationID) &gt; 0">
+							<oaf:relatedPublication>
+								<xsl:attribute name="id">
+									<xsl:value-of
+											select="concat($namespacePrefix,'::', dnet:md5($publicationID))"/>
+								</xsl:attribute>
+							</oaf:relatedPublication>
+						</xsl:when>
+					</xsl:choose>
+				</xsl:for-each>
+
+				<xsl:choose>
+					<xsl:when test="string-length($parent_uri) &gt; 0">
+						<xsl:variable name="dataset_relate_ID">
+							<xsl:value-of select="stringUtils:substringAfter($parent_uri,'doi:')"/>
+						</xsl:variable>
+						<xsl:choose>
+							<xsl:when test="string-length($dataset_relate_ID) &gt; 0">
+								<oaf:relatedDataSet>
+									<xsl:attribute name="id">
+										<xsl:value-of
+												select="concat($namespacePrefix,'::', dnet:md5($dataset_relate_ID))"/>
+									</xsl:attribute>
+								</oaf:relatedDataSet>
+							</xsl:when>
+						</xsl:choose>
+
+					</xsl:when>
+				</xsl:choose>
+
+				<oaf:about>
+					<oaf:datainfo>
+						<oaf:inferred>false</oaf:inferred>
+						<oaf:deletedbyinference>false</oaf:deletedbyinference>
+						<oaf:trust>0.9</oaf:trust>
+						<oaf:inferenceprovenance/>
+						<oaf:provenanceaction classid="sysimport:crosswalk:datasetarchive"
+						                      classname="sysimport:crosswalk:datasetarchive"
+						                      schemeid="dnet:provenanceActions"
+						                      schemename="dnet:provenanceActions"/>
+					</oaf:datainfo>
+				</oaf:about>
+			</oai:metadata>
+		</oai:record>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/pubsRepository/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,53 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDC"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDC" type="DeleteMDStore">
+	<DESCRIPTION>Delete the oai_dc mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDMF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDMF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the DMF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql/find_journal_intersection.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql/find_journal_intersection.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql/find_journal_intersection.sql	(revision 60998)
@@ -0,0 +1,10 @@
+SELECT
+	h.entry        AS id,
+	h.datasourceid AS datasource,
+	d.officialname AS name,
+	p.value        AS issn
+
+FROM hostedby_map h, dsm_datasources d, hostedby_props p
+WHERE
+	h.oa_source_id = 're3data_____::r3d100010134' AND
+	h.datasourceid = d.id AND p._dnet_resource_identifier_ = h._dnet_resource_identifier_ AND p.key = 'issn'
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggregatorDataRepository/collection.wf.st	(revision 60998)
@@ -0,0 +1,150 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="SELECT_MODE"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="SELECT_MODE" type="Selection">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">REFRESH</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_REFRESH" name="REFRESH" />
+		<ARC to="PREPARE_INCREMENTAL" name="INCREMENTAL" />
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_REFRESH" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="user">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">sysimport:crosswalk</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">sysimport:crosswalk</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_INCREMENTAL" type="FindDateRangeForIncrementalHarvesting">
+	<DESCRIPTION>Find Date Range For Incremental Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_INCREMENTAL" type="DateRangeCollectRecords">
+	<DESCRIPTION>Start incremental harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+		<PARAM required="false" type="string" name="overrideFrom" managedBy="user"></PARAM>
+        <PARAM required="false" type="string" name="overrideUntil" managedBy="user"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_INCREMENTAL" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="system">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">sysimport:crosswalk</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">sysimport:crosswalk</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_INCREMENTAL" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records incrementally</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">INCREMENTAL</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl/DatasetsFromPangaeaIngestion.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl/DatasetsFromPangaeaIngestion.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl/DatasetsFromPangaeaIngestion.xsl	(revision 60998)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dc="http://purl.org/dc/elements/1.1/"
+                xmlns:oai="http://www.openarchives.org/OAI/2.0/"
+                xmlns:datetime="http://exslt.org/dates-and-times"
+                xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+                xmlns:oaa="http://namespace.openaire.eu/oaa"
+                xmlns:oaf="http://namespace.openaire.eu/oaf"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:dnet="eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions"
+                xmlns:stringUtils="org.apache.commons.lang.StringUtils"
+                version="1.0"
+                exclude-result-prefixes="xsl dc dnet oaa fn stringUtils datetime">
+
+	<xsl:param name="namespacePrefix"/>
+	<xsl:param name="dataSourceId"/>
+	<xsl:param name="dataprovider_id"/>
+
+	<xsl:template match="/">
+		<xsl:variable name="identifier">
+			<xsl:value-of
+					select="/*[local-name()='datasetsRecord']/*[local-name()='metadata']/*[local-name()='MetaData']/*[local-name()='citation']/*[local-name()='URI']"
+			/>
+		</xsl:variable>
+		<oai:record>
+			<oai:header>
+				<dri:objIdentifier>
+					<xsl:value-of select="concat($namespacePrefix,'::', dnet:md5($identifier))"/>
+				</dri:objIdentifier>
+				<dri:recordIdentifier>
+					<xsl:value-of select="$identifier"/>
+				</dri:recordIdentifier>
+				<dri:dateOfCollection>
+					<xsl:value-of select="datetime:dateTime()"/>
+				</dri:dateOfCollection>
+				<dri:repositoryId>
+					<xsl:value-of select="$dataSourceId"/>
+				</dri:repositoryId>
+				<oaf:datasourceprefix>
+					<xsl:value-of select="$namespacePrefix"/>
+				</oaf:datasourceprefix>
+				<dri:repositoryId>
+					<xsl:value-of select="$dataprovider_id"/>
+				</dri:repositoryId>
+			</oai:header>
+			<oai:metadata>
+				<xsl:copy-of select="."/>
+			</oai:metadata>
+		</oai:record>
+
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/collection.wf.st	(revision 60998)
@@ -0,0 +1,126 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="SELECT_MODE"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="SELECT_MODE" type="Selection">
+	<DESCRIPTION>Choose collection mode</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">REFRESH</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_REFRESH" name="REFRESH" />
+		<ARC to="PREPARE_INCREMENTAL" name="INCREMENTAL" />
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_REFRESH" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="MdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+		 <PARAM managedBy="system" name="storingType" required="true" type="string">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_INCREMENTAL" type="FindDateRangeForIncrementalHarvesting">
+	<DESCRIPTION>Find Date Range For Incremental Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_INCREMENTAL" type="DateRangeCollectRecords">
+	<DESCRIPTION>Start incremental harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+		<PARAM required="false" type="string" name="overrideFrom" managedBy="user"></PARAM>
+        <PARAM required="false" type="string" name="overrideUntil" managedBy="user"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_INCREMENTAL" type="MdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_INCREMENTAL" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records incrementally</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">INCREMENTAL</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("orig_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,53 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreGMF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreGMF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the GMF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDBMF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDBMF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the DBMF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("row_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/collection.wf.st	(revision 60998)
@@ -0,0 +1,74 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_REFRESH"/>
+	</ARCS>
+</NODE> 
+
+<NODE name="COLLECT_REFRESH" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="ApplyXslt">
+	<DESCRIPTION>Transform original records in DB rows</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">INCREMENTAL</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/transformPublications.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/transformPublications.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/transformPublications.wf.st	(revision 60998)
@@ -0,0 +1,93 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginalsForPublication"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginalsForPublication"/>
+	</ARCS>
+</NODE>
+
+
+<NODE name="fetchOriginalsForPublication" type="FetchMDStoreRecords" isJoin="true">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_publication_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transformPublication"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transformPublication" type="ApplyXslt">
+	<DESCRIPTION>Transform original records to Publication</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_publication_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">packed_publication_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="splitRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="splitRecords" type="SplitDatasetRecord">
+	<DESCRIPTION>Split Records into datasets and publication</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParm" managedBy="system">packed_publication_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParm" managedBy="system">publication_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>		
+		<ARC to="findHostedBy"/>
+	</ARCS>
+</NODE>
+
+<NODE name="findHostedBy" type="FindHostedBy">
+	<DESCRIPTION>Patch oaf:hostedBy fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">publication_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">patched_epr</PARAM>
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>	
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storePublicationRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storePublicationRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tranOAF_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">patched_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="validateHostedByRepos"/>
+	</ARCS>
+</NODE>
+
+<NODE name="validateHostedByRepos" type="UpsertHostedByApis">
+	<DESCRIPTION>Validate hostedBy Repos</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tranOAF_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl/PublicationFromPangaeatransform.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl/PublicationFromPangaeatransform.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl/PublicationFromPangaeatransform.xsl	(revision 60998)
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dr="http://www.driver-repository.eu/namespace/dr"
+                xmlns:oai="http://www.openarchives.org/OAI/2.0/" xmlns:datetime="http://exslt.org/dates-and-times"
+                xmlns:dri="http://www.driver-repository.eu/namespace/dri" xmlns:md="http://www.pangaea.de/MetaData"
+                xmlns:oaa="http://namespace.openaire.eu/oaa" xmlns:oaf="http://namespace.openaire.eu/oaf"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:dnet="eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions"
+                xmlns:stringUtils="org.apache.commons.lang.StringUtils"
+                version="1.0"
+                exclude-result-prefixes="xsl dnet oaa fn stringUtils datetime">
+
+	<xsl:param name="namespacePrefix"/>
+	<xsl:param name="dataprovider_id"/>
+	<xsl:param name="parentDatasourceId"/>
+	<xsl:param name="dataprovider_name"/>
+
+	<xsl:template match="/">
+		<xsl:variable name="identifier">
+			<xsl:value-of
+					select="stringUtils:substringAfter(//md:citation/md:URI,'doi:')"/>
+		</xsl:variable>
+		<xsl:variable name="identifier_datacite">
+			<xsl:value-of select="oai:record/oai:header/dri:objIdentifier"/>
+		</xsl:variable>
+		<publications>
+			<xsl:for-each select="//md:citation/md:supplementTo">
+				<xsl:variable name="pub_identifier">
+					<xsl:value-of select="./@id"/>
+				</xsl:variable>
+				<xsl:choose>
+					<xsl:when test="string-length($pub_identifier)">
+						<xsl:call-template name="GeneratePublication">
+							<xsl:with-param name="pub_identifier" select="$pub_identifier"/>
+						</xsl:call-template>
+					</xsl:when>
+				</xsl:choose>
+			</xsl:for-each>
+		</publications>
+	</xsl:template>
+	<xsl:template name="GeneratePublication">
+		<xsl:param name="pub_identifier"/>
+		<publication>
+			<oai:record>
+				<oai:header>
+					<dri:objIdentifier>
+						<xsl:value-of
+								select="concat($namespacePrefix,'::', dnet:md5($pub_identifier))"/>
+					</dri:objIdentifier>
+					<dri:recordIdentifier>
+						<xsl:value-of select="$pub_identifier"/>
+					</dri:recordIdentifier>
+					<dri:dateOfCollection>
+						<xsl:value-of select="datetime:dateTime()"/>
+					</dri:dateOfCollection>
+					<dri:repositoryId>
+						<xsl:value-of select="$dataprovider_id"/>
+					</dri:repositoryId>
+					<oaf:datasourceprefix>
+						<xsl:value-of select="$namespacePrefix"/>
+					</oaf:datasourceprefix>
+				</oai:header>
+				<oai:metadata>
+					<dc:identifier>
+						<xsl:value-of select="$pub_identifier"/>
+					</dc:identifier>
+					<xsl:variable name="publicationDOI">
+						<xsl:value-of select="./md:URI"/>
+					</xsl:variable>
+					<xsl:choose>
+						<xsl:when test="string-length($publicationDOI) &gt; 0">
+							<dc:identifier>
+								<xsl:value-of select="$publicationDOI"/>
+							</dc:identifier>
+						</xsl:when>
+					</xsl:choose>
+
+					<dc:title>
+						<xsl:value-of select=".//md:title"/>
+					</dc:title>
+					<xsl:for-each select=".//md:author">
+						<dc:creator>
+							<xsl:value-of select="concat(./md:lastName,' ', md:firstName)"/>
+						</dc:creator>
+					</xsl:for-each>
+					<dc:source>
+						<xsl:value-of select="./md:source"/>
+					</dc:source>
+					<dr:CobjCategory>0000</dr:CobjCategory>
+					<dc:language>und</dc:language>
+					<oaf:journal>
+						<xsl:value-of select="./md:source"/>
+					</oaf:journal>
+					<oaf:accessrights>UNKNOWN</oaf:accessrights>
+					<xsl:variable name="projectId">
+						<xsl:value-of select="normalize-space(//*[local-name() ='projectid'])"/>
+					</xsl:variable>
+					<xsl:choose>
+						<xsl:when test="string-length(substring-after($projectId, 'info:eu-repo/grantAgreement/EC/FP7/')) > 0">
+							<oaf:projectid>
+								<xsl:value-of
+										select="concat('corda_______::', substring-after($projectId, 'info:eu-repo/grantAgreement/EC/FP7/'))"/>
+							</oaf:projectid>
+						</xsl:when>
+						<xsl:when test="string-length(substring-after($projectId, 'info:eu-repo/grantAgreement/EC/H2020/')) > 0">
+							<oaf:projectid>
+								<xsl:value-of
+										select="concat('corda_______::', substring-after($projectId, 'info:eu-repo/grantAgreement/EC/H2020/'))"/>
+							</oaf:projectid>
+						</xsl:when>
+						<xsl:otherwise>
+							<oaf:projectid><xsl:value-of select="$projectId"/></oaf:projectid>
+						</xsl:otherwise>
+					</xsl:choose>
+					<xsl:variable name="journalName">
+						<xsl:value-of select="//*[local-name() ='journal']/@name"/>
+					</xsl:variable>
+					<xsl:variable name="journalISSN">
+						<xsl:value-of select="//*[local-name() ='journal']/@issn"/>
+					</xsl:variable>
+					<xsl:variable name="journalDSId">
+						<xsl:value-of select="//*[local-name() ='journal']/@datasourceid"/>
+					</xsl:variable>
+
+					<xsl:choose>
+						<xsl:when test="string-length($journalISSN) &gt; 0">
+							<oaf:journal issn="{$journalISSN}" eissn="">
+								<xsl:value-of select="$journalName"/>
+							</oaf:journal>
+							<oaf:hostedBy>
+								<xsl:attribute name="id">
+									<xsl:value-of
+											select="$journalDSId"/>
+								</xsl:attribute>
+								<xsl:attribute name="name">
+									<xsl:value-of
+											select="$journalName"/>
+								</xsl:attribute>
+							</oaf:hostedBy>
+						</xsl:when>
+						<xsl:otherwise>
+							<oaf:hostedBy
+									id="openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18" name="Unknown Repository"/>
+						</xsl:otherwise>
+					</xsl:choose>
+
+
+					<oaf:collectedFrom>
+						<xsl:attribute name="id">
+							<xsl:value-of select="$parentDatasourceId"/>
+						</xsl:attribute>
+						<xsl:attribute name="name">
+							<xsl:value-of select="$dataprovider_name"/>
+						</xsl:attribute>
+					</oaf:collectedFrom>
+					<oaf:about>
+						<oaf:datainfo>
+							<oaf:inferred>false</oaf:inferred>
+							<oaf:deletedbyinference>false</oaf:deletedbyinference>
+							<oaf:trust>0.9</oaf:trust>
+							<oaf:inferenceprovenance/>
+							<oaf:provenanceaction classid="sysimport:crosswalk:datasetarchive"
+							                      classname="sysimport:crosswalk:datasetarchive" schemeid="dnet:provenanceActions"
+							                      schemename="dnet:provenanceActions"/>
+						</oaf:datainfo>
+					</oaf:about>
+				</oai:metadata>
+			</oai:record>
+		</publication>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/downloadFilesFromPubsRepository/download.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/downloadFilesFromPubsRepository/download.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/downloadFilesFromPubsRepository/download.st	(revision 60998)
@@ -0,0 +1,147 @@
+ <NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="SELECT_DOWNLOAD"/>
+	</ARCS>
+</NODE>
+
+<NODE name="SELECT_DOWNLOAD" type="Selection">
+	<DESCRIPTION>Should download?</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['YES', 'NO'])">YES</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC name="NO" to="SELECT_UPDATECACHE"/>
+		<ARC name="YES" to="SELECT_MODE"/>
+	</ARCS>
+</NODE>
+
+<NODE name="SELECT_MODE" type="Selection">
+	<DESCRIPTION>Set download mode</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">INCREMENTAL</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DropContentObjectStore" name="REFRESH" />
+		<ARC to="findMdStore" name="INCREMENTAL" />
+	</ARCS>
+</NODE>
+
+<NODE name="DropContentObjectStore" type="DropContentObjectStore">
+	<DESCRIPTION>Drop content on the object Store</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="objectstoreId" managedBy="system" category="OBJECTSTORE_ID">$params.("objs_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="findMdStore"/>
+	</ARCS>
+</NODE>
+
+<NODE name="findMdStore" type="RetrieveMdStoreId">
+	<DESCRIPTION>Find MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>		
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchTransformed"/>
+	</ARCS>
+</NODE>
+
+<NODE name="fetchTransformed" type="FetchMultipleMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>		
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">clean_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="retrieveURL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="retrieveURL" type="RetrieveURLS">
+	<DESCRIPTION>Retrieve URL To Download from MDStore</DESCRIPTION>
+	<PARAMETERS>		
+		<PARAM required="true" type="string" name="xpath" managedBy="user">//*[local-name()='metadata']//*[local-name()='fulltext']/text()</PARAM>
+		<PARAM required="true" type="string" name="xpathOpenAccess" managedBy="user">//*[local-name()='metadata']//*[local-name()='accessrights']/text()</PARAM>
+		<PARAM required="true" type="string" name="xpathEmbargoDate" managedBy="user">//*[local-name()='metadata']//*[local-name()='embargoenddate']/text()</PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">clean_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">item_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="downloadRecords"/>
+	</ARCS>
+</NODE>
+
+
+<NODE name="downloadRecords" type="DownloadFromMetadataOpenaire">
+	<DESCRIPTION>Download records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputeprParam" managedBy="system">item_epr</PARAM>
+		<PARAM required="true" type="string" name="objectStoreID" managedBy="system" category="OBJECTSTORE_ID">$params.("objs_id")$</PARAM>
+		<PARAM required="true" type="string" name="plugin" managedBy="user" function="obtainValues('listDownloadPlugins', {});"></PARAM>
+		<PARAM required="false" type="string" name="basepath" managedBy="user"></PARAM>
+		<PARAM required="true" type="string" name="protocol" managedBy="user" function="validValues(['HTTP', 'HTTPS', 'FTP', 'File_System', 'FTPS'])"></PARAM>
+		<PARAM required="true" type="string" name="mimeType" managedBy="user" function="validValues(['pdf', 'application/pdf', 'xml', 'file::WoS', 'text', 'text/plain','text/html'])"></PARAM>
+		<PARAM required="false" type="string" name="regularExpression" managedBy="user"></PARAM>
+		<PARAM required="false" type="int" name="numberOfThreads" managedBy="user">1</PARAM>
+		<PARAM required="false" type="int" name="connectTimeoutMs" managedBy="user">10000</PARAM>
+		<PARAM required="false" type="int" name="readTimeoutMs" managedBy="user">10000</PARAM>
+		<PARAM required="false" type="int" name="sleepTimeMs" managedBy="user">0</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="updateSizeObjectStore"/>
+	</ARCS>
+</NODE>
+
+<NODE name="updateSizeObjectStore" type="UpdateObjectStoreSize">
+	<DESCRIPTION>Download records</DESCRIPTION>
+	<PARAMETERS>		
+		<PARAM required="true" type="string" name="objectStoreIdParam" managedBy="system" category="OBJECTSTORE_ID">$params.("objs_id")$</PARAM>				
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="ObjectStoreToApiExtraField">
+	<DESCRIPTION>Update datasource API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="objId" managedBy="system">$params.("objs_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_download_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_download_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForObjId" managedBy="system">last_download_objId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="SELECT_UPDATECACHE"/>
+	</ARCS>
+</NODE>
+
+<NODE name="SELECT_UPDATECACHE" type="Selection">
+	<DESCRIPTION>Should update IIS cache?</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['YES', 'NO'])">NO</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC name="NO" to="success"/>
+		<ARC name="YES" to="UPDATE_CACHE"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_CACHE" type="IISCacheBuilder">
+	<DESCRIPTION>Update IIS cache with latest objectStore content</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="hadoopJob" managedBy="system">iisCacheBuilderJob</PARAM>
+        <PARAM required="true" type="string" name="objectStoreId" managedBy="system">$params.("objs_id")$</PARAM>
+        <PARAM required="true" type="string" name="cluster" managedBy="system">IIS</PARAM>
+		<PARAM required="true" type="boolean" name="simulation"	managedBy="system">false</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success" />
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/transform.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/transform.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/transform.wf.st	(revision 60998)
@@ -0,0 +1,113 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="selectIncrementalTransformation"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="selectIncrementalTransformation" type="IncrementalTransformation">
+	<DESCRIPTION>Decide REFRESH/INCREMENTAL transformation</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="operationType" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transform" type="Transform" isJoin="true">
+	<DESCRIPTION>Transform original records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="TRANSFORMATION_RULE_ID" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">tran_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="patchHostedBy"/>
+	</ARCS>
+</NODE>
+
+<NODE name="patchHostedBy" type="PatchHostedBy">
+	<DESCRIPTION>Patch oaf:hostedBy fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">tran_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">patched_epr</PARAM>		 
+		<!-- <PARAM required="true" type="string" name="dbName" managedBy="user">dnet_openaireplus</PARAM> -->
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>
+		<PARAM required="true" type="string" name="hostedbyMapTable" managedBy="user">hostedby_map</PARAM>
+		<PARAM required="true" type="string" name="xpathEntry" managedBy="user">//*[local-name()='header']/*[local-name()='setSpec']</PARAM>
+	    <PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storeRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">patched_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="validateHostedByRepos"/>
+	</ARCS>
+</NODE>
+
+<NODE name="validateHostedByRepos" type="UpsertHostedByApis">
+	<DESCRIPTION>Validate hostedBy Repos</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldsForTotal" managedBy="system">datacite::last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">datacite::last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">datacite::last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/xsl/jorunal2db.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/xsl/jorunal2db.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_journal/xsl/jorunal2db.xsl	(revision 60998)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+>
+
+
+	<xsl:param name="parentDatasourceId"/>
+	<xsl:template match="/">
+
+		<ROWS>
+			<xsl:variable name="issn" select="//column[./@name='ISSN']"/>
+			<xsl:variable name="id" select="//column[./@name='ID']"/>
+
+			<ROW table="pangaea_temp_journals">
+				<FIELD name="_dnet_resource_identifier_">
+					<xsl:value-of select="concat('journal',$id)"/>
+				</FIELD>
+				<FIELD name="id">
+					<xsl:value-of select="concat('journal',$id)"/>
+				</FIELD>
+				<FIELD name="issn">
+					<xsl:value-of select="$issn"/>
+				</FIELD>
+				<FIELD name="oa_source_id">
+					<xsl:value-of select="$parentDatasourceId"/>
+				</FIELD>
+			</ROW>
+		</ROWS>
+	</xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql/pangaea_journal_findmatches.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql/pangaea_journal_findmatches.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql/pangaea_journal_findmatches.sql	(revision 60998)
@@ -0,0 +1,15 @@
+INSERT INTO hostedby_map (_dnet_resource_identifier_, oa_source_id, entry, datasourceid)
+	SELECT
+		p.issn || '__' || p.id || '@@' || p.oa_source_id,
+		p.oa_source_id,
+		p.issn || '__' || p.id,
+		d.id
+	FROM dsm_datasources d, pangaea_temp_journals p
+	WHERE
+		d.collectedfrom = 'driver______::1790119e-d281-4b7a-aedf-866d1d853a07' AND d.issn IS NOT NULL AND d.id LIKE 'doajarticles::%' AND p.issn = d.issn
+		AND
+		(p.oa_source_id, p.issn || '__' || p.id) NOT IN
+		(SELECT
+			 oa_source_id,
+			 entry
+		 FROM hostedby_map)
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,63 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDatacite"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDatacite" type="DeleteMDStore">
+	<DESCRIPTION>Delete the oai_datacite mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreODF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreODF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the IMEF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tranODF_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreOAF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreOAF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the IMEF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tranOAF_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/transformPublications.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/transformPublications.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/dataset_project/transformPublications.wf.st	(revision 60998)
@@ -0,0 +1,69 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginalsForPublication"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginalsForPublication"/>
+	</ARCS>
+</NODE>
+
+
+<NODE name="fetchOriginalsForPublication" type="FetchMDStoreRecords" isJoin="true">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_publication_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transformPublication"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transformPublication" type="ApplyXslt">
+	<DESCRIPTION>Transform original records to Publication</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_publication_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">packed_publication_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="splitRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="splitRecords" type="SplitDatasetRecord">
+	<DESCRIPTION>Split Records into datasets and publication</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParm" managedBy="system">packed_publication_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParm" managedBy="system">publication_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>		
+		<ARC to="storePublicationRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storePublicationRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tranOAF_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">publication_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/datacite/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,64 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreNative"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreNative" type="DeleteMDStore">
+	<DESCRIPTION>Delete the native mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDatacite"/>
+		<ARC to="DeleteMDStorePublication"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDatacite" type="DeleteMDStore">
+	<DESCRIPTION>Delete the IMEF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tranODF_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStorePublication" type="DeleteMDStore">
+	<DESCRIPTION>Delete the IMEF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tranOAF_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields" isJoin="true">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/updateDb.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/updateDb.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/updateDb.wf.st	(revision 60998)
@@ -0,0 +1,90 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="PREPARE_DB"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_DB" type="ExecuteSql">
+	<DESCRIPTION>Create necessary tables</DESCRIPTION>
+    <PARAMETERS>
+    	<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+        <PARAM name="sql" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_prepareTables.sql</PARAM>
+	</PARAMETERS>
+    <ARCS>
+		<ARC to="FETCH_SETS_FROM_MDSTORE"/>
+		<ARC to="FETCH_DATAREPOS"/>
+	</ARCS>
+</NODE>
+
+<NODE name="FETCH_SETS_FROM_MDSTORE" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("row_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">rs_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_SETS_DB"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_SETS_DB" type="UpdateOpenaireDb">
+	<DESCRIPTION>Update Db</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">rs_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="FIND_MATCHES"/>
+	</ARCS>
+</NODE>
+
+<NODE name="FETCH_DATAREPOS" type="QueryDb">
+	<DESCRIPTION>Fetch records by Query</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+		<PARAM name="sql" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_findDataRepos.sql</PARAM>
+		<PARAM name="outputEprParam" type="string" managedBy="system" required="true">sql_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="CLEAN_DATAREPOS" />
+	</ARCS>
+</NODE>
+
+<NODE name="CLEAN_DATAREPOS" type="ApplyXslt">
+	<DESCRIPTION>Transform original records in DB rows</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="system">/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite/datacite_datarepos_2_db.xslt</PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">sql_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">clean_sql_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_DATAREPOS_DB"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_DATAREPOS_DB" type="UpdateOpenaireDb">
+	<DESCRIPTION>Update Db with cleaned datarepos</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">clean_sql_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="FIND_MATCHES"/>
+	</ARCS>
+</NODE>
+
+<NODE name="FIND_MATCHES" type="ExecuteSql" isJoin="true">
+	<DESCRIPTION>Create necessary tables</DESCRIPTION>
+    <PARAMETERS>
+    	<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+        <PARAM name="sql" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_findMatches.sql</PARAM>
+	</PARAMETERS>
+    <ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/listTransformationMdStores.xquery.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/listTransformationMdStores.xquery.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/listTransformationMdStores.xquery.st	(revision 60998)
@@ -0,0 +1,9 @@
+for \$mdId in 
+	distinct-values(
+		for \$x in collection('/db/DRIVER/MetaWorkflowDSResources/MetaWorkflowDSResourceType')[.//DATAPROVIDER/@id='$dsId$' and .//DATAPROVIDER/@interface='$apiId$']//WORKFLOW
+		let \$f := concat('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType/', substring-before(\$x/@id/string(), '_'))
+		return doc(\$f)[.//PARAM[@name="extraFieldForTotal" and text() = 'last_aggregation_total']]//NODE[@type='StoreMDStoreRecords']//PARAM[@category="MDSTORE_ID"]/text()
+	)
+	let \$fmd := concat('/db/DRIVER/MDStoreDSResources/MDStoreDSResourceType/', substring-before(\$mdId, '_'))
+	return doc(\$fmd)
+	
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/validate-nostore-openaire.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/validate-nostore-openaire.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/validate-nostore-openaire.wf.st	(revision 60998)
@@ -0,0 +1,48 @@
+<NODE name="SET_INFO_VALIDATION" isStart="true" type="SetInfoForValidation">
+	<DESCRIPTION>Retrieve information about current Content Provider</DESCRIPTION>
+	<PARAMETERS>
+        <PARAM required="true" type="string" name="profileId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+        <PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+        <PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+    </PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Get more datasource info</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="selectValidate"/>
+	</ARCS>
+</NODE>
+<NODE name="selectValidate" type="Selection">
+	<DESCRIPTION>Do we validate the records?</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM function="validValues(['YES', 'NO'])" managedBy="user" name="selection" required="true" type="string">NO</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC name="YES" to="validate" />
+		<ARC name="NO" to="success" />
+	</ARCS>
+</NODE>
+<NODE name="validate" type="ValidationAsStep">
+	<DESCRIPTION>Validate from mdStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="boolean" name="shouldOutputRecords" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="outputEprName" managedBy="system">validatorEpr</PARAM>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="xQueryForValidatorServiceId" managedBy="user">/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='ValidatorServiceResourceType' and .//RESOURCE_KIND/@value='ServiceResources']/HEADER/RESOURCE_IDENTIFIER/@value/string()</PARAM>	
+	    <PARAM required="false" type="string" name="recordsSampleSize" managedBy="user">ALL</PARAM>
+	    <PARAM required="true" type="string" name="guidelines" managedBy="user" function="validValues(['openaire-cris_1.1', 'openaire-pub_4.0', 'openaire3.0', 'openaire2.0', 'openaire2.0_data', 'driver'])">$params.("dataprovider:interface:compliance")$</PARAM>
+	    <PARAM required="true" type="boolean" name="shouldUpdateBlacklist" managedBy="user">true</PARAM>
+		<PARAM required="false" type="string" name="blacklistRuleName" managedBy="user">blacklist_rules</PARAM>
+		<PARAM required="false" type="int" name="jobStatusUpdateInterval" managedBy="system"/>
+	    <PARAM required="false" type="string" name="extraParams" managedBy="user"/>  
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/applicationContext-dnet-openaire-claims.properties
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/applicationContext-dnet-openaire-claims.properties	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/applicationContext-dnet-openaire-claims.properties	(revision 60998)
@@ -0,0 +1,4 @@
+dnet.openaire.claims.db.baseurl=jdbc:postgresql://localhost:5432
+dnet.openaire.claims.db.name=dnet_openaireplus
+dnet.openaire.claims.db.username=dnet
+dnet.openaire.claims.db.password=dnetPwd
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/updateDb.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/updateDb.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg/updateDb.wf.st	(revision 60998)
@@ -0,0 +1,44 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="selectIncremental"/>
+	</ARCS>
+</NODE>
+
+<NODE name="selectIncremental" type="IncrementalOperation">
+    	<DESCRIPTION>Decide REFRESH/INCREMENTAL Update</DESCRIPTION>
+    	<PARAMETERS>
+    		<PARAM required="true" type="string" name="operationType" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])"></PARAM>
+    	</PARAMETERS>
+    	<ARCS>
+    		<ARC to="FETCH_RECORDS"/>
+    	</ARCS>
+    </NODE>
+
+<NODE name="FETCH_RECORDS" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("row_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">rs_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_DB"/>
+	</ARCS>
+</NODE>
+
+
+<NODE name="UPDATE_DB" type="UpdateOpenaireDb">
+	<DESCRIPTION>Update Db</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">rs_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasourcesForSize.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasourcesForSize.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasourcesForSize.sql	(revision 60998)
@@ -0,0 +1,11 @@
+SELECT count(*)
+FROM dsm_datasources d
+WHERE d.id <> 'openaire____::dfgf'
+AND d.id <> 'openaire____::innoviris'
+AND d.id <> 'openaire____::sgov'
+AND d.id <> 'openaire____::conicytf'
+AND d.id <> 'openaire____::anr'
+AND d.id <> 'openaire____::gsrt'
+AND d.id <> 'openaire____::rif'
+AND d.id <> 'openaire____::rsf'
+AND d.id <> 'openaire____::miur'
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,53 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreGMF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreGMF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the GMF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDBMF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDBMF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the DBMF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("row_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_findMatches.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_findMatches.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/sql-datacite/dataciteSets_findMatches.sql	(revision 60998)
@@ -0,0 +1,15 @@
+INSERT INTO hostedby_map (_dnet_resource_identifier_, oa_source_id, entry, datasourceid)
+	SELECT
+		s.setspec || '@@' || s.oa_source_id,
+		s.oa_source_id,
+		s.setspec,
+		MIN(d.id) AS id
+	FROM
+		datacite_temp_sets s
+		JOIN datacite_temp_datarepos d ON (s.setname_cleaned = d.name_cleaned)
+	WHERE (s.oa_source_id, s.setspec) NOT IN
+	      (SELECT
+		       oa_source_id,
+		       entry
+	       FROM hostedby_map)
+	GROUP BY s.oa_source_id, s.setspec
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/doaj_journals/update.db.patch.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/doaj_journals/update.db.patch.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/doaj_journals/update.db.patch.wf.st	(revision 60998)
@@ -0,0 +1,22 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="FIND_MATCHES"/>
+	</ARCS>
+</NODE>
+
+<NODE name="FIND_MATCHES" type="ExecuteSql">
+	<DESCRIPTION>Add new journal to patch entry tables</DESCRIPTION>
+    <PARAMETERS>
+    	<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+        <PARAM name="sql" type="string" managedBy="user" required="true" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/doaj_journals/sql','sql')"></PARAM>
+	</PARAMETERS>
+    <ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/doaj_journals/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/doaj_journals/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/doaj_journals/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,21 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/querySimilarityFromOpenOrgsDB.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/querySimilarityFromOpenOrgsDB.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/querySimilarityFromOpenOrgsDB.sql	(revision 60998)
@@ -0,0 +1,17 @@
+SELECT local_id AS id1, oa_original_id AS id2 FROM openaire_simrels WHERE reltype = 'is_similar'
+
+UNION ALL
+
+SELECT
+	o.id                                                     AS id1,
+	'openorgsmesh'||substring(o.id, 13)||'-'||md5(a.acronym) AS id2
+FROM acronyms a
+	LEFT OUTER JOIN organizations o ON (a.id = o.id)
+
+UNION ALL
+		
+SELECT
+	o.id                                                     AS id1,
+	'openorgsmesh'||substring(o.id, 13)||'-'||md5(n.name)    AS id2
+FROM other_names n
+	LEFT OUTER JOIN organizations o ON (n.id = o.id)
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/sql/tubitak_journal.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/sql/tubitak_journal.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/sql/tubitak_journal.sql	(revision 60998)
@@ -0,0 +1,15 @@
+INSERT INTO hostedby_map (_dnet_resource_identifier_, oa_source_id, entry, datasourceid)
+	SELECT
+		d.issn || '@@' || d.collectedfrom,
+		d.collectedfrom,
+		d.issn,
+		d.id
+	FROM dsm_datasources d
+	WHERE
+		d.collectedfrom = 'openaire____::tubitak' AND d.issn IS NOT NULL AND d.id LIKE 'tubitak::%'
+		AND
+		(d.collectedfrom, d.issn) NOT IN
+		(SELECT
+			 oa_source_id,
+			 entry
+		 FROM hostedby_map)
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/sql/pangaea_journal_findmatches.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/sql/pangaea_journal_findmatches.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/sql/pangaea_journal_findmatches.sql	(revision 60998)
@@ -0,0 +1,32 @@
+INSERT INTO hostedby_map (_dnet_resource_identifier_, oa_source_id, entry, datasourceid)
+	SELECT
+		p.id || '@@' || p.oa_source_id,
+		p.oa_source_id,
+		p.id,
+		d.id
+	FROM dsm_datasources d, pangaea_temp_journals p
+	WHERE
+		d.collectedfrom = 'driver______::1790119e-d281-4b7a-aedf-866d1d853a07' AND d.issn IS NOT NULL AND d.id LIKE 'doajarticles::%' AND p.issn = d.issn
+		AND
+		(p.oa_source_id, p.id) NOT IN
+		(SELECT
+			 oa_source_id,
+			 entry
+		 FROM hostedby_map);
+
+
+INSERT INTO hostedby_props (_dnet_resource_identifier_, key, value)
+	SELECT
+		p.id || '@@' || p.oa_source_id,
+		'issn',
+		p.issn
+	FROM dsm_datasources d, pangaea_temp_journals p
+	WHERE
+		d.collectedfrom = 'driver______::1790119e-d281-4b7a-aedf-866d1d853a07' AND d.issn IS NOT NULL AND d.id LIKE 'doajarticles::%' AND p.issn = d.issn
+		AND
+		(p.id || '@@' || p.oa_source_id, 'issn', p.issn) NOT IN
+		(SELECT
+			 _dnet_resource_identifier_,
+			 key,
+			 value
+		 FROM hostedby_props);
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/applicationContext-msro-openaire-nodes.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/applicationContext-msro-openaire-nodes.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/applicationContext-msro-openaire-nodes.xml	(revision 60998)
@@ -0,0 +1,427 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:p="http://www.springframework.org/schema/p"
+       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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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"/>
+
+    <!-- DEDUP -->
+
+    <!-- <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" /> -->
+
+    <!-- / 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="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="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="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="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"/>
+
+    <!-- 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="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="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="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="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"/>
+
+    <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="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"/>
+
+    <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="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="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="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="wfNodeExtractOutputPath"
+          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}"
+          p:mapping="${dnet.openaire.bulktag.mapping}"
+          scope="prototype"/>
+
+    <bean id="wfNodeLoadCommunityIdsList"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.propagation.communitytoresult.LoadCommunityIdsListJobNode"
+          p:xquery="${dnet.openaire.propagation.xquery}"
+          scope="prototype"/>
+
+    <!-- Consistency nodes -->
+    <bean id="wfNodeFixRepoMdstoreSizes"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.FixRepoMdstoreSizesJobNode"
+          scope="prototype"/>
+
+    <bean id="wfNodeVerifyMdStoreSizes"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.VerifyMdStoreSizesJobNode"
+          scope="prototype"/>
+
+    <bean id="wfNodeFindInvalidRepoProfiles"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.FindInvalidRepoProfilesJobNode"
+          scope="prototype"/>
+
+    <bean id="wfNodeFindInvalidMetaWorkflows"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.FindInvalidMetaWorkflowsJobNode"
+          scope="prototype"/>
+
+    <bean id="wfNodeFindInvalidWorkflows"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.FindInvalidWorkflowsJobNode"
+          scope="prototype"/>
+
+    <bean id="wfNodeFindInvalidStores"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.consistency.FindInvalidStoresJobNode"
+          scope="prototype"/>
+
+    <bean id="wfNodeFetchOntologies"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.FetchOntologiesJobNode"
+          scope="prototype"/>
+
+    <!-- Aggreagation with Hadoop -->
+
+    <bean id="wfNodeCreateMDStoreHadoop"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.CreateMDStoreHadoopJobNode"
+          p:mdStoreManagerUrl="${dhp.mdstore.manager.url}" scope="prototype"/>
+
+    <bean id="wfNodeAbortMDStoreVersion"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.AbortMDStoreVersionJobNode"
+          p:mdStoreManagerUrl="${dhp.mdstore.manager.url}" scope="prototype"/>
+
+    <bean id="wfNodePrepareMDStoreVersion"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.PrepareMDStoreVersionJobNode"
+          p:mdStoreManagerUrl="${dhp.mdstore.manager.url}" scope="prototype"/>
+
+    <bean id="wfNodePrepareEnvCollectHadoopJobNode"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.PrepareEnvCollectHadoopJobNode"
+          scope="prototype"/>
+
+    <bean id="wfNodeCommitMDStoreVersion"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.CommitMDStoreVersionJobNode"
+          p:mdStoreManagerUrl="${dhp.mdstore.manager.url}" scope="prototype"/>
+
+
+    <bean id="wfNodeSubmitDnetHadoopJobNode"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.SubmitDnetHadoopJobNode"
+          scope="prototype"/>
+
+    <bean id="wfNodeDeleteMDStoreHadoop"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.DeleteMDStoreHadoopJobNode"
+          p:mdStoreManagerUrl="${dhp.mdstore.manager.url}" scope="prototype"/>
+
+    <bean id="wfNodeMDStoreToApiExtraFieldHadoop"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.MDStoreToApiExtraFieldHadoopJobNode"
+          p:mdStoreManagerUrl="${dhp.mdstore.manager.url}" scope="prototype" />
+
+    <bean id="wfNodeStartReadingMDStore"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.StartReadingMDStoreJobNode"
+          p:mdStoreManagerUrl="${dhp.mdstore.manager.url}" scope="prototype" />
+
+    <bean id="wfNodeEndReadingMDStore"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.EndReadingMDStoreJobNode"
+          p:mdStoreManagerUrl="${dhp.mdstore.manager.url}" scope="prototype" />
+
+    <bean id="wfNodePrepareEnvTransformHadoopJobNode"
+          class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.PrepareEnvTransformHadoopJobNode"
+          scope="prototype" />
+
+
+
+
+    <!-- Aggreagation with Hadoop
+
+    <bean id="wfNodePrepareEnvTransformHadoopJobNode"
+        class="eu.dnetlib.msro.openaireplus.workflows.nodes.hadoop.PrepareEnvTransformHadoopJobNode"
+        scope="prototype" />
+
+    -->
+</beans>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/sql/ekt_journal.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/sql/ekt_journal.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/sql/ekt_journal.sql	(revision 60998)
@@ -0,0 +1,15 @@
+INSERT INTO hostedby_map (_dnet_resource_identifier_, oa_source_id, entry, datasourceid)
+	SELECT
+		d.issn || '@@' || d.collectedfrom,
+		d.collectedfrom,
+		d.issn,
+		d.id
+	FROM dsm_datasources d
+	WHERE
+		d.collectedfrom = 'openaire____::ekt_journals' AND d.issn IS NOT NULL AND d.id LIKE 'ekt_journals::%'
+		AND
+		(d.collectedfrom, d.issn) NOT IN
+		(SELECT
+			 oa_source_id,
+			 entry
+		 FROM hostedby_map)
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/xsl/irdb2hostedByMap.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/xsl/irdb2hostedByMap.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/xsl/irdb2hostedByMap.xsl	(revision 60998)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version="1.0">
+
+	<xsl:param name="parentDatasourceId"/>
+	<xsl:param name="namespacePrefix"/>
+
+	<xsl:template match="/">
+		<xsl:variable name="oName" select="normalize-space(//column[./@name='1'])"/>
+
+		<xsl:choose>
+			<xsl:when test="string-length($oName) &gt; 0">
+				<record>
+					<xsl:copy-of select=".//*[local-name()='header']"/>
+					<metadata>
+						<xsl:variable name="rid" select="normalize-space(//column[./@name='journalid'])"/>
+						<xsl:variable name="datasourceId" select="concat($namespacePrefix, '::', $rid)"/>
+						<xsl:variable name="namespacePrefix" select='format-number($rid, "00000")'/>
+
+						<ROWS>
+							<ROW table="hostedby_map">
+								<FIELD name="_dnet_resource_identifier_">
+									<xsl:value-of select="concat('irdb_',$rid,'@@', $parentDatasourceId)"/>
+								</FIELD>
+								<FIELD name="oa_source_id">
+									<xsl:value-of select="$parentDatasourceId"/>
+								</FIELD>
+								<FIELD name="entry">
+									<xsl:value-of select="concat('irdb_',$rid)"/>
+								</FIELD>
+								<FIELD name="datasourceid">
+									<xsl:value-of select="concat('irdb________::',$rid)"/>
+								</FIELD>
+								<FIELD name="key_type">irdb journal id</FIELD>
+							</ROW>
+						</ROWS>
+					</metadata>
+				</record>
+			</xsl:when>
+			<xsl:otherwise>
+				<JUNK/>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql/pangaea_preparetable.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql/pangaea_preparetable.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql/pangaea_preparetable.sql	(revision 60998)
@@ -0,0 +1,7 @@
+DROP TABLE IF EXISTS pangaea_temp_journals;
+CREATE TABLE IF NOT EXISTS pangaea_temp_journals (
+	_dnet_resource_identifier_ CHARACTER VARYING(2048) DEFAULT 'temp_' || md5(clock_timestamp() :: TEXT) || '_' || md5(random() :: TEXT),
+	id                         CHARACTER VARYING(255) PRIMARY KEY,
+	issn                       CHARACTER VARYING(255),
+	oa_source_id               CHARACTER VARYING(255) REFERENCES dsm_datasources (id)
+);
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/queryACM.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/queryACM.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/queryACM.sql	(revision 60998)
@@ -0,0 +1,5 @@
+SELECT
+	regexp_replace(xml, '&(?!amp;)', '&amp;', 'g') AS xml,
+	provenance
+FROM claims
+WHERE type = 'dmf2actions' AND set = 'acm-referenced-projects'
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/update.db.patch.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/update.db.patch.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/update.db.patch.wf.st	(revision 60998)
@@ -0,0 +1,78 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="PREPARE_DB"/>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Obtain parameters for current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="generateRow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_DB" type="ExecuteSql">
+	<DESCRIPTION>Create necessary tables</DESCRIPTION>
+    <PARAMETERS>
+    	<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+        <PARAM name="sql" type="string" managedBy="system" required="true">/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql/pangaea_preparetable.sql</PARAM>
+	</PARAMETERS>
+    <ARCS>
+		<ARC to="COLLECT"/>		
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="generateRow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="generateRow" type="ApplyXslt" isJoin="true">
+	<DESCRIPTION>Transform original records to Publication</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/xsl','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">row_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_JORUNAL_DB"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_JORUNAL_DB" type="UpdateOpenaireDb">
+	<DESCRIPTION>Update Db</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">row_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="FIND_MATCHES"/>
+	</ARCS>
+</NODE>
+
+<NODE name="FIND_MATCHES" type="ExecuteSql">
+	<DESCRIPTION>Add new journal to patch entry tables</DESCRIPTION>
+    <PARAMETERS>
+    	<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+        <PARAM name="sql" type="string" managedBy="user" required="true" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByJournal/sql','sql')"></PARAM>
+	</PARAMETERS>
+    <ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/transform.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/transform.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/aggrDatarepoOaiSets/transform.wf.st	(revision 60998)
@@ -0,0 +1,83 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="selectIncrementalTransformation"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="selectIncrementalTransformation" type="IncrementalTransformation">
+	<DESCRIPTION>Decide REFRESH/INCREMENTAL transformation</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="operationType" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])"></PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("orig_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="generateRows"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="generateRows"/>
+	</ARCS>
+</NODE>
+
+<NODE name="generateRows" type="Transform" isJoin="true">
+	<DESCRIPTION>Transform original records in DB rows</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="TRANSFORMATION_RULE_ID" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">tran_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeRowRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storeRowRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">tran_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/applicationContext-msro-openaireplus.properties
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/applicationContext-msro-openaireplus.properties	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/applicationContext-msro-openaireplus.properties	(revision 60998)
@@ -0,0 +1,101 @@
+dnet.openaire.db.name=dnet_openaireplus
+hbase.mapred.datatable=db_openaireplus_test
+#services.data.hadoop.hdfs.mdrecords.tmp.directory = hdfs://nmis-hadoop-cluster/tmp
+dnet.openaire.entitygruper.xquery=/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value = 'EntityGrouperConfigurationDSResourceType']//CONFIGURATION/GROUP/text()
+dnet.openaire.context.xquery=for $x in //RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='ContextDSResourceType']//*[name()='context' or name()='category' or name()='concept'] return <entry id="{$x/@id}" label="{$x/@label|$x/@name}" name="{$x/name()}" type="{$x/@type}"/>
+dnet.openaire.context.profiles.xquery=for $x in //RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='ContextDSResourceType' and .//RESOURCE_KIND/@value='ContextDSResources'] return $x
+dnet.actionmanager.garbage.sets.xupdate=for $x in /RESOURCE_PROFILE[.//RESOURCE_TYPE/@value = 'ActionManagerSetDSResourceType'] let $latest:=$x//LATEST return update replace $x//RAW_SETS with <RAW_SETS>{$latest}</RAW_SETS>
+dnet.openaire.iis.objecstores.xquery=for $x in /RESOURCE_PROFILE[./HEADER/RESOURCE_TYPE/@value = 'ObjectStoreDSResourceType'] return string($x/HEADER/RESOURCE_IDENTIFIER/@value)
+dnet.openaire.iis.objecstore.endpoint.xquery=/RESOURCE_PROFILE[./HEADER/RESOURCE_TYPE/@value = 'ObjectStoreServiceResourceType']/HEADER/PROTOCOLS/PROTOCOL[./@name = "SOAP"]/@address/string()
+dnet.openaire.iis.islookup.endpoint.xquery=/RESOURCE_PROFILE[./HEADER/RESOURCE_TYPE/@value = 'IS_LookUpServiceResourceType']/HEADER/PROTOCOLS/PROTOCOL[./@name = "SOAP"]/@address/string()
+dnet.openaire.iis.mdstore.endpoint.xquery=/RESOURCE_PROFILE[./HEADER/RESOURCE_TYPE/@value = 'MDStoreServiceResourceType']/HEADER/PROTOCOLS/PROTOCOL[./@name = "SOAP"]/@address/string()
+dnet.openaire.iis.dbservice.endpoint.xquery=/RESOURCE_PROFILE[./HEADER/RESOURCE_TYPE/@value = 'DatabaseServiceResourceType']/HEADER/PROTOCOLS/PROTOCOL[./@name = "SOAP"]/@address/string()
+dnet.openaire.iis.mdstore.wos.xquery=for $x in /RESOURCE_PROFILE[./HEADER/RESOURCE_TYPE/@value = 'MDStoreDSResourceType' and .//METADATA_FORMAT = 'OAF' and .//METADATA_FORMAT_LAYOUT = 'store' and .//METADATA_FORMAT_INTERPRETATION = 'cleaned_noingestion'] return string($x/HEADER/RESOURCE_IDENTIFIER/@value)
+dnet.openaire.iis.mdstore.dataset.xquery=for $x in /RESOURCE_PROFILE[./HEADER/RESOURCE_TYPE/@value = 'MDStoreDSResourceType' and .//METADATA_FORMAT = 'ODF' and .//METADATA_FORMAT_LAYOUT = 'store' and (.//METADATA_FORMAT_INTERPRETATION = 'cleaned_noingestion' or .//METADATA_FORMAT_INTERPRETATION = 'cleaned')] return string($x/HEADER/RESOURCE_IDENTIFIER/@value)
+dnet.openaire.iis.objecstores.dataset.xquery=for $x in /RESOURCE_PROFILE[./HEADER/RESOURCE_TYPE/@value = 'ObjectStoreDSResourceType' and .//OBJECTSTORE_INTERPRETATION='pubrepository record'] return string($x/HEADER/RESOURCE_IDENTIFIER/@value)
+dnet.openaire.iis.objecstores.wos.xquery=for $x in /RESOURCE_PROFILE[./HEADER/RESOURCE_TYPE/@value = 'ObjectStoreDSResourceType' and .//OBJECTSTORE_INTERPRETATION='wos record'] return string($x/HEADER/RESOURCE_IDENTIFIER/@value)
+dnet.openaire.model.relclasses.xquery=distinct-values(for $x in /RESOURCE_PROFILE[./HEADER/RESOURCE_TYPE/@value='OntologyDSResourceType']//TERM return concat($x/@code/string(), ":", $x//RELATION[./@type = 'inverseOf']/@code/string()))
+dnet.openaire.service.search.lookup.xquery=/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='SearchServiceResourceType' and .//RESOURCE_KIND/@value='ServiceResources' and .//SERVICE_PROPERTIES/PROPERTY[./@key="infrastructure"]/@value="public"]/HEADER/RESOURCE_IDENTIFIER/@value/string()
+dnet.openaire.service.stats.lookup.xquery=/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='StatsManagerServiceResourceType' and .//RESOURCE_KIND/@value='ServiceResources']/HEADER/RESOURCE_IDENTIFIER/@value/string()
+dnet.openaire.similaritygroups.index.format=DEDUP
+dnet.openaire.similaritygroups.indexrecord2html.xsl=classpath:/eu/dnetlib/functionality/modular/ui/xslt/indexRecordsToHtml.xsl
+dnet.openaire.similaritygroups.indexrecord2htmldetails.xsl=classpath:/eu/dnetlib/functionality/modular/ui/xslt/indexRecordsToHtmlDetails.xsl
+oaf.schema.location=http://www.openaire.eu/schema/0.2/oaf-0.2.xsd
+dnet.openaire.lod.jsonrels={ "result": [{ "0": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "1": "http://purl.org/dc/terms/openAireId", "2": "http://lod.openaire.eu/vocab/dateOfTransformation", "3": "http://lod.openaire.eu/vocab/dateOfCollection", "4": "http://purl.org/dc/terms/openAireId", "5": "http://www.eurocris.org/ontologies/cerif/1.3#name", "6": "http://purl.org/dc/terms/dateAccepted", "7": "http://purl.org/dc/terms/publisher", "8": "http://purl.org/dc/terms/openAireId", "9": "http://purl.org/dc/terms/language", "10": "http://purl.org/dc/terms/date", "11": "http://lod.openaire.eu/vocab/resultSubject", "12": "http://lod.openaire.eu/vocab/externalReference", "13": "http://purl.org/dc/terms/source", "14": "http://purl.org/dc/terms/format", "15": "http://lod.openaire.eu/vocab/context", "16": "http://dbpedia.org/ontology/country", "17": "http://purl.org/dc/terms/accessRights", "18": "http://purl.org/dc/terms/description", "19": "http://lsdis.cs.uga.edu/projects/semdis/opus#journal_name", "20": "http://lod.openaire.eu/vocab/dataSourceType", "21": "http://lod.openaire.eu/vocab/device", "22": "http://lod.openaire.eu/vocab/size", "23": "http://lod.openaire.eu/vocab/version", "24": "http://lod.openaire.eu/vocab/lastMetadataUpdate", "25": "http://lod.openaire.eu/vocab/metadataVersion", "26": "http://lod.openaire.eu/vocab/year", "27": "http://lod.openaire.eu/vocab/resultType", "28": "http://lod.openaire.eu/vocab/trust", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type": "http://www.eurocris.org/ontologies/cerif/1.3#ResultEntity" }], "person": [{ "0": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "1": "http://purl.org/dc/terms/openAireId", "2": "http://lod.openaire.eu/vocab/dateOfTransformation", "3": "http://lod.openaire.eu/vocab/dateOfCollection", "4": "http://purl.org/dc/terms/openAireId", "5": "http://xmlns.com/foaf/0.1/firstName", "6": "http://xmlns.com/foaf/spec/lastName", "7": "http://xmlns.com/foaf/0.1/name", "8": "http://schema.org/faxNumber", "9": "http://xmlns.com/foaf/0.1/mbox", "10": "http://xmlns.com/foaf/0.1/phone", "11": "http://schema.org/nationality", "12": "http://purl.org/dc/terms/openAireId", "13": "http://lod.openaire.eu/vocab/trust", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type": "http: //xmlns.com/foaf/0.1/Person" }], "datasource": [{ "0": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "1": "http://purl.org/dc/terms/openAireId", "2": "http://lod.openaire.eu/vocab/dateOfTransformation", "3": "http://lod.openaire.eu/vocab/dateOfCollection", "4": "http://purl.org/dc/terms/openAireId", "5": "http://lod.openaire.eu/vocab/datasourceType", "6": "http://lod.openaire.eu/vocab/openAIRECompatibility", "7": "http://dbpedia.org/ontology/officialName", "8": "http://lod.openaire.eu/vocab/englishName", "9": "http://schema.org/url", "10": "http://xmlns.com/foaf/0.1/logo", "11": "http://xmlns.com/foaf/0.1/mbox", "12": "http://purl.org/vocab/vann/preferredNamespacePrefix", "13": "http://www.w3.org/2003/01/geo/wgs84_pos#lat", "14": "http://www.w3.org/2003/01/geo/wgs84_pos#long", "15": "http://lod.openaire.eu/vocab/dateOfValidity", "16": "http://purl.org/dc/terms/description", "17": "http://lod.openaire.eu/vocab/subjectList", "18": "http://lod.openaire.eu/numberOfItems", "19": "http://purl.org/dc/terms/date", "20": "http://lod.openaire.eu/vocab/policies", "21": "http://lod.openaire.eu/vocab/languages", "22": "http://lod.openaire.eu/vocab/contentType", "23": "http://lod.openaire.eu/vocab/accessInfoPackage", "24": "http://lod.openaire.eu/vocab/releaseStartDate", "25": "http://lod.openaire.eu/vocab/releaseEndDate", "26": "http://lod.openaire.eu/vocab/missionStatementUrl", "27": "http://www.europeana.eu/schemas/edm/dataProvider", "28": "http://lod.openaire.eu/vocab/serviceProvider", "29": "http://lod.openaire.eu/vocab/databaseAccessType", "30": "http://lod.openaire.eu/vocab/dataUploadType", "31": "http://lod.openaire.eu/vocab/dataUploadRestrictions", "32": "http://lod.openaire.eu/vocab/versioning", "33": "http://lod.openaire.eu/vocab/citationGuidelineUrl", "34": "http://lod.openaire.eu/vocab/qualityManagementKind", "35": "http://lod.openaire.eu/vocab/pidSystems", "36": "http://lod.openaire.eu/vocab/certificates", "37": "http://purl.org/dc/terms/accessRights", "38": "http://lod.openaire.eu/vocab/trust", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type": "http: //www.w3.org/ns/prov#Entity" }], "organization": [{ "0": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "1": "http://purl.org/dc/terms/openAireId", "2": "http://lod.openaire.eu/vocab/dateOfTransformation", "3": "http://lod.openaire.eu/vocab/dateOfCollection", "4": "http://purl.org/dc/terms/openAireId", "5": "http://www.w3.org/2004/02/skos/core#altLabel", "6": "http://www.w3.org/2004/02/skos/core#prefLabel", "7": "http://lod.openaire.eu/vocab/webSiteUrl", "8": "http://xmlns.com/foaf/0.1/logo", "9": "http://dbpedia.org/ontology/country", "10": "http://lod.openaire.eu/vocab/entityType", "11": "http://lod.openaire.eu/vocab/trust", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type": "http: //xmlns.com/foaf/0.1/Organization" }], "project": [{ "0": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type", "1": "http://purl.org/dc/terms/openAireId", "2": "http://lod.openaire.eu/vocab/dateOfTransformation", "3": "http://lod.openaire.eu/vocab/dateOfCollection", "4": "http://purl.org/dc/terms/openAireId", "5": "http://lod.openaire.eu/vocab/projectCode", "6": "http://schema.org/url", "7": "http://www.eurocris.org/ontologies/cerif/1.3#acronym", "8": "http://www.eurocris.org/ontologies/cerif/1.3#name", "9": "http://www.eurocris.org/ontologies/cerif/1.3#startDate", "10": "http://www.eurocris.org/ontologies/cerif/1.3#endDate", "11": "http://purl.org/cerif/frapo/hasCallIdentifier", "12": "http://www.eurocris.org/ontologies/cerif/1.3#keyword", "13": "http://www.w3.org/2006/time#hasDurationDescription", "14": "http://lod.openaire.eu/vocab/ec_SC39", "15": "http://lod.openaire.eu/vocab/contractType", "16": "http://lod.openaire.eu/vocab/oaMandatePublications", "17": "http://lod.openaire.eu/vocab/projectSubjects", "18": "http://od.openaire.eu/vocab/ec_article29-3", "19": "http://lod.openaire.eu/vocab/funder", "20": "http://lod.openaire.eu/vocab/fundingLevel0", "21": "http://lod.openaire.eu/vocab/fundingLevel1", "22": "http://lod.openaire.eu/vocab/fundingLevel2", "23": "http://lod.openaire.eu/vocab/fundingLevel3", "24": "http://lod.openaire.eu/vocab/trust", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type": "http://www.eurocris.org/ontologies/cerif/1.3#Project" }] }
+dnet.openaire.lod.wfId=42c42eeb-8cf4-4410-bdf5-a20db879d23b_V29ya2Zsb3dEU1Jlc291cmNlcy9Xb3JrZmxvd0RTUmVzb3VyY2VUeXBl
+dnet.openaire.lod.default.date=01/01/1970
+dnet.openaire.bulktag.xquery = for $x in collection('/db/DRIVER/ContextDSResources/ContextDSResourceType') \
+  let $subj := $x//CONFIGURATION/context/param[./@name='subject']/text() \
+  let $datasources := $x//CONFIGURATION/context/category[./@id=concat($x//CONFIGURATION/context/@id,'::contentproviders')]/concept \
+  let $organizations := $x//CONFIGURATION/context/category[./@id=concat($x//CONFIGURATION/context/@id,'::resultorganizations')]/concept \
+  let $communities := $x//CONFIGURATION/context/category[./@id=concat($x//CONFIGURATION/context/@id,'::zenodocommunities')]/concept \
+  where $x//CONFIGURATION/context[./@type='community' or ./@type='ri'] \
+  return \
+  <community> \
+  { $x//CONFIGURATION/context/@id} \
+  <subjects> \
+  {for $y in tokenize($subj,',') \
+  return \
+  <subject>{$y}</subject>} \
+  </subjects> \
+  <datasources> \
+  {for $d in $datasources \
+  where $d/param[./@name='enabled']/text()='true' \
+  return \
+  <datasource> \
+  <openaireId> \
+  {$d//param[./@name='openaireId']/text()} \
+  </openaireId> \
+  <selcriteria> \
+  {$d/param[./@name='selcriteria']/text()} \
+  </selcriteria> \
+  </datasource> }\
+  </datasources> \
+  <zenodocommunities> \
+  {for $zc in $communities \
+  return \
+  <zenodocommunity> \
+  <zenodoid> \
+  {$zc/param[./@name='zenodoid']/text()}\
+  </zenodoid>\
+  <selcriteria>\
+  {$zc/param[./@name='selcriteria']/text()}\
+  </selcriteria>\
+  </zenodocommunity>}\
+  </zenodocommunities> \
+  <organizations>\
+    {for $org in $organizations \
+    return\
+    <organization> \
+    <organizationId>\
+    {$org/param[./@name='organizationId']/text()}\
+    </organizationId>\
+    <selcriteria>\
+    {$org/param[./@name='selcriteria']/text()}\
+    </selcriteria>\
+    </organization>}\
+    </organizations>\
+  </community>
+
+dnet.openaire.index.api.cacheEvictUrl = http://localhost:8980/provision/api/admin/evictCache
+
+dhp.mdstore.manager.url=http://localhost:8080/mdstores
+
+dnet.openaire.bulktag.mapping = { "author" : "$['entity']['result']['metadata']['author'][*]['fullname']",\
+  "title" : "$['entity']['result']['metadata']['title'][*]['value']",\
+  "orcid" : "$['entity']['result']['metadata']['author'][*]['pid'][*][?(@['key']=='ORCID')]['value']",\
+  "contributor" : "$['entity']['result']['metadata']['contributor'][*]['value']",\
+  "description" : "$['entity']['result']['metadata']['description'][*]['value']"}
+
+dnet.openaire.propagation.xquery = for $x in collection('/db/DRIVER/ContextDSResources/ContextDSResourceType')\
+  where $x//CONFIGURATION/context[./@type='community' or ./@type='ri']\
+  and  $x//CONFIGURATION/context/param[./@name='status']/text() != 'hidden'\
+  return $x//CONFIGURATION/context/@id/string()
+  
+dnet.openorgs.db.name=dev_orgs
+
+dnet.openaire.dhp.collection.app.path = /user/dnet.dev/lib/collection/oozie_app
+dnet.openaire.dhp.transformation.app.path = /user/dnet.dev/lib/transformation/oozie_app
+
+dnet.openaire.dhp.dnetMessageManagerURL = https://${container.hostname}:${container.port}/${container.context}/mvc/dhp/message
+  
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/doaj_journals/sql/doajJournals_findMatches.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/doaj_journals/sql/doajJournals_findMatches.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/doaj_journals/sql/doajJournals_findMatches.sql	(revision 60998)
@@ -0,0 +1,15 @@
+INSERT INTO hostedby_map (_dnet_resource_identifier_, oa_source_id, entry, datasourceid)
+	SELECT
+		d.issn || '@@' || d.collectedfrom,
+		d.collectedfrom,
+		d.issn,
+		d.id
+	FROM dsm_datasources d
+	WHERE
+		d.collectedfrom = 'driver______::1790119e-d281-4b7a-aedf-866d1d853a07' AND d.issn IS NOT NULL AND d.id LIKE 'doajarticles::%'
+		AND
+		(d.collectedfrom, d.issn) NOT IN
+		(SELECT
+			 oa_source_id,
+			 entry
+		 FROM hostedby_map)
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/transform.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/transform.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/transform.wf.st	(revision 60998)
@@ -0,0 +1,72 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("orig_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="generateRows"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="generateRows"/>
+	</ARCS>
+</NODE>
+
+<NODE name="generateRows" type="ApplyXslt" isJoin="true">
+	<DESCRIPTION>Transform original records in DB rows</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/xsl','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">cleaned_row_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeRowRecords"/>
+	</ARCS>
+</NODE>
+<NODE name="storeRowRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">cleaned_row_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl/PublicationFromPangaeatransform.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl/PublicationFromPangaeatransform.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl/PublicationFromPangaeatransform.xsl	(revision 60998)
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dr="http://www.driver-repository.eu/namespace/dr"
+                xmlns:oai="http://www.openarchives.org/OAI/2.0/" xmlns:datetime="http://exslt.org/dates-and-times"
+                xmlns:dri="http://www.driver-repository.eu/namespace/dri" xmlns:md="http://www.pangaea.de/MetaData"
+                xmlns:oaa="http://namespace.openaire.eu/oaa" xmlns:oaf="http://namespace.openaire.eu/oaf"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:dnet="eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions"
+                xmlns:stringUtils="org.apache.commons.lang.StringUtils"
+                version="1.0"
+                exclude-result-prefixes="xsl dnet oaa fn stringUtils datetime">
+
+	<xsl:param name="namespacePrefix"/>
+	<xsl:param name="dataprovider_id"/>
+	<xsl:param name="parentDatasourceId"/>
+	<xsl:param name="dataprovider_name"/>
+
+	<xsl:template match="/">
+		<xsl:variable name="identifier">
+			<xsl:value-of
+					select="//md:citation/md:URI"/>
+		</xsl:variable>
+		<xsl:variable name="identifier_datacite">
+			<xsl:value-of select="oai:record/oai:header/dri:objIdentifier"/>
+		</xsl:variable>
+		<publications>
+			<xsl:for-each select="//md:citation/md:supplementTo">
+				<xsl:variable name="pub_identifier">
+					<xsl:value-of select="./@id"/>
+				</xsl:variable>
+				<xsl:choose>
+					<xsl:when test="string-length($pub_identifier)">
+						<xsl:call-template name="GeneratePublication">
+							<xsl:with-param name="pub_identifier" select="$pub_identifier"/>
+						</xsl:call-template>
+					</xsl:when>
+				</xsl:choose>
+			</xsl:for-each>
+		</publications>
+	</xsl:template>
+	<xsl:template name="GeneratePublication">
+		<xsl:param name="pub_identifier"/>
+		<publication>
+			<oai:record>
+				<oai:header>
+					<dri:objIdentifier>
+						<xsl:value-of
+								select="concat($namespacePrefix,'::', dnet:md5($pub_identifier))"/>
+					</dri:objIdentifier>
+					<dri:recordIdentifier>
+						<xsl:value-of select="$pub_identifier"/>
+					</dri:recordIdentifier>
+					<dri:dateOfCollection>
+						<xsl:value-of select="datetime:dateTime()"/>
+					</dri:dateOfCollection>
+					<dri:repositoryId>
+						<xsl:value-of select="$dataprovider_id"/>
+					</dri:repositoryId>
+					<oaf:datasourceprefix>
+						<xsl:value-of select="$namespacePrefix"/>
+					</oaf:datasourceprefix>
+				</oai:header>
+				<oai:metadata>
+					<dc:identifier>
+						<xsl:value-of select="$pub_identifier"/>
+					</dc:identifier>
+					<xsl:variable name="publicationDOI">
+						<xsl:value-of select="./md:URI"/>
+					</xsl:variable>
+					<xsl:choose>
+						<xsl:when test="string-length($publicationDOI) &gt; 0">
+							<dc:identifier>
+								<xsl:value-of select="$publicationDOI"/>
+							</dc:identifier>
+						</xsl:when>
+					</xsl:choose>
+
+					<dc:title>
+						<xsl:value-of select=".//md:title"/>
+					</dc:title>
+					<xsl:for-each select=".//md:author">
+						<dc:creator>
+							<xsl:value-of select="concat(./md:lastName,' ', md:firstName)"/>
+						</dc:creator>
+					</xsl:for-each>
+					<dc:source>
+						<xsl:value-of select="./md:source"/>
+					</dc:source>
+					<dr:CobjCategory>0000</dr:CobjCategory>
+					<dc:language>und</dc:language>
+					<oaf:journal>
+						<xsl:value-of select="./md:source"/>
+					</oaf:journal>
+					<oaf:accessrights>UNKNOWN</oaf:accessrights>
+					<xsl:variable name="projectId">
+						<xsl:value-of select="normalize-space(//*[local-name() ='projectid'])"/>
+					</xsl:variable>
+					<xsl:choose>
+						<xsl:when test="string-length($projectId) &gt; 0">
+							<oaf:projectid>
+								<xsl:value-of
+										select="concat('corda_______::', stringUtils:substringAfterLast($projectId, '/'))"/>
+							</oaf:projectid>
+						</xsl:when>
+					</xsl:choose>
+					<xsl:variable name="journalName">
+						<xsl:value-of select="//*[local-name() ='journal']/@name"/>
+					</xsl:variable>
+					<xsl:variable name="journalISSN">
+						<xsl:value-of select="//*[local-name() ='journal']/@issn"/>
+					</xsl:variable>
+					<xsl:variable name="journalDSId">
+						<xsl:value-of select="//*[local-name() ='journal']/@datasourceid"/>
+					</xsl:variable>
+
+					<xsl:choose>
+						<xsl:when test="string-length($journalISSN) &gt; 0">
+							<oaf:journal issn="{$journalISSN}" eissn="">
+								<xsl:value-of select="$journalName"/>
+							</oaf:journal>
+							<oaf:hostedBy>
+								<xsl:attribute name="id">
+									<xsl:value-of
+											select="$journalDSId"/>
+								</xsl:attribute>
+								<xsl:attribute name="name">
+									<xsl:value-of
+											select="$journalName"/>
+								</xsl:attribute>
+							</oaf:hostedBy>
+						</xsl:when>
+						<xsl:otherwise>
+							<oaf:hostedBy
+									id="openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18" name="Unknown Repository"/>
+						</xsl:otherwise>
+					</xsl:choose>
+
+
+					<oaf:collectedFrom>
+						<xsl:attribute name="id">
+							<xsl:value-of select="$parentDatasourceId"/>
+						</xsl:attribute>
+						<xsl:attribute name="name">
+							<xsl:value-of select="$dataprovider_name"/>
+						</xsl:attribute>
+					</oaf:collectedFrom>
+					<oaf:about>
+						<oaf:datainfo>
+							<oaf:inferred>false</oaf:inferred>
+							<oaf:deletedbyinference>false</oaf:deletedbyinference>
+							<oaf:trust>0.9</oaf:trust>
+							<oaf:inferenceprovenance/>
+							<oaf:provenanceaction classid="sysimport:crosswalk:datasetarchive"
+							                      classname="sysimport:crosswalk:datasetarchive" schemeid="dnet:provenanceActions"
+							                      schemename="dnet:provenanceActions"/>
+						</oaf:datainfo>
+					</oaf:about>
+				</oai:metadata>
+			</oai:record>
+		</publication>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,63 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreDatacite"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreDatacite" type="DeleteMDStore">
+	<DESCRIPTION>Delete the oai_datacite mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreODF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreODF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the IMEF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tranODF_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreOAF"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreOAF" type="DeleteMDStore">
+	<DESCRIPTION>Delete the IMEF mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tranOAF_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,53 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreNative"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreNative" type="DeleteMDStore">
+	<DESCRIPTION>Delete the native mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMDStoreCleaned"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMDStoreCleaned" type="DeleteMDStore">
+	<DESCRIPTION>Delete the cleaned mdstore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdstoreId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_collection_total, last_collection_date, last_collection_mdId, last_aggregation_total, last_aggregation_date, last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/PrepareEnvCollectHadoopJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/PrepareEnvCollectHadoopJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/PrepareEnvCollectHadoopJobNode.java	(revision 60998)
@@ -0,0 +1,331 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import eu.dnetlib.common.logging.DnetLogger;
+import eu.dnetlib.dhp.collection.ApiDescriptor;
+import eu.dnetlib.dhp.model.mdstore.Provenance;
+import eu.dnetlib.enabling.datasources.common.Datasource;
+import eu.dnetlib.enabling.datasources.common.DsmNotFoundException;
+import eu.dnetlib.msro.rmi.MSROException;
+import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.google.gson.Gson;
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.enabling.datasources.common.ApiParam;
+import eu.dnetlib.enabling.datasources.common.LocalDatasourceManager;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+import org.springframework.beans.factory.annotation.Value;
+
+import javax.annotation.Resource;
+
+import static eu.dnetlib.dhp.common.Constants.*;
+
+public class PrepareEnvCollectHadoopJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(PrepareEnvCollectHadoopJobNode.class);
+
+    public static final String METADATA_IDENTIFIER_PATH = "metadata_identifier_path";
+    public static final String DATE_FORMAT = "yyyy-MM-dd";
+
+    private long ONE_DAY = 1000 * 60 * 60 * 24;
+
+    @Resource(name = "msroWorkflowLogger")
+    private DnetLogger dnetLogger;
+
+    @Autowired
+    private LocalDatasourceManager<?, ?> dsManager;
+
+    /**
+     * MDStore identifier
+     */
+    private String mdId;
+
+    /**
+     * REFRESH | INCREMENTAL
+     */
+    private String collectionMode;
+
+    /**
+     * used in INCREMENTAL mode
+     */
+    private String fromDateOverride;
+
+    /**
+     * used in to set the untilDate
+     */
+    private String untilDateOverride;
+
+    /**
+     * XML | JSON, default = XML
+     */
+    private String metadataEncoding = "XML";
+
+    /**
+     * Maximum number of allowed retires before failing
+     */
+    private int maxNumberOfRetry = 5;
+
+    /**
+     * Delay between request (Milliseconds)
+     */
+    private int requestDelay = 0;
+
+    /**
+     * Time to wait after a failure before retrying (Seconds)
+     */
+    private int retryDelay = 60;
+
+    /**
+     * Connect timeout (Seconds)
+     */
+    private int connectTimeOut = 30;
+
+    /**
+     * Read timeout (Seconds)
+     */
+    private int readTimeOut = 60;
+
+    @Value("${dnet.openaire.dhp.collection.app.path}")
+    private String oozieWfPath;
+
+    @Value("${dnet.openaire.dhp.dnetMessageManagerURL}")
+    private String dnetMessageManagerURL;
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+
+        final String dsId = token.getEnv().getAttribute("parentDatasourceId");
+        log.info("dsId: " + dsId);
+        final String apiId = token.getEnv().getAttribute(WorkflowsConstants.DATAPROVIDER_INTERFACE);
+        log.info("apiId: " + apiId);
+
+        final Optional<ApiDescriptor> opt = dsManager.getApis(dsId)
+                .stream()
+                .filter(a -> a.getId().equals(apiId))
+                .map(a -> {
+                    final ApiDescriptor res = new ApiDescriptor();
+                    res.setBaseUrl(a.getBaseurl());
+                    res.setId(a.getId());
+                    res.setProtocol(a.getProtocol());
+                    res.getParams().put(METADATA_IDENTIFIER_PATH, a.getMetadataIdentifierPath());
+                    res.getParams().putAll(a.getApiParams()
+                            .stream()
+                            .map(o -> (ApiParam) o)
+                            .collect(Collectors.toMap(ApiParam::getParam, ApiParam::getValue)));
+                    return res;
+                })
+                .findFirst();
+
+        if (opt.isPresent()) {
+            token.getEnv().setAttribute("mdId", getMdId());
+            token.getEnv().setAttribute(COLLECTION_MODE, getCollectionMode());
+            token.getEnv().setAttribute(METADATA_ENCODING, getMetadataEncoding());
+            token.getEnv().setAttribute(OOZIE_WF_PATH, getOozieWfPath());
+            token.getEnv().setAttribute(DNET_MESSAGE_MGR_URL, getDnetMessageManagerURL());
+
+            token.getEnv().setAttribute(MAX_NUMBER_OF_RETRY, getMaxNumberOfRetry());
+            token.getEnv().setAttribute(REQUEST_DELAY, getRequestDelay());
+            token.getEnv().setAttribute(RETRY_DELAY, getRetryDelay());
+            token.getEnv().setAttribute(CONNECT_TIMEOUT, getConnectTimeOut());
+            token.getEnv().setAttribute(READ_TIMEOUT, getReadTimeOut());
+
+            final ApiDescriptor api = opt.get();
+            if ("INCREMENTAL".equals(getCollectionMode())) {
+                final String fromDate = calculateFromDate(token);
+
+                log.info("Incremental Harvesting from: " + fromDate);
+
+                if (StringUtils.isNotBlank(fromDate)) {
+                   api.getParams().put("fromDate", fromDate);
+                }
+            }
+
+            if (StringUtils.isNotBlank(getUntilDateOverride())) {
+                api.getParams().put("untilDate", getUntilDateOverride());
+            }
+
+            token.getEnv().setAttribute("apiDescription", new Gson().toJson(api));
+
+            final Provenance provenance = new Provenance();
+            provenance.setDatasourceId(dsId);
+            final Datasource<?, ?> ds = dsManager.getDs(dsId);
+            provenance.setDatasourceName(ds.getOfficialname());
+            provenance.setNsPrefix(ds.getNamespaceprefix());
+            final String dsProvenance = new Gson().toJson(provenance);
+            log.info("datasource provenance: " + dsProvenance);
+
+            token.getEnv().setAttribute("dataSourceInfo", dsProvenance);
+            token.getEnv().setAttribute("timestamp", ""+System.currentTimeMillis());
+            token.getEnv().setAttribute("identifierPath",api.getParams().get(METADATA_IDENTIFIER_PATH));
+            token.getEnv().setAttribute("workflowId",token.getProcess().getEnv().getAttribute("system:processId"));
+
+            token.getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_INTERFACE_BASEURL, api.getBaseUrl());
+            token.getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_PREFIX + "protocol", api.getProtocol());
+            final Map<String, String> params = api.getParams();
+            if (params != null) {
+                for(Map.Entry<String, String> e : params.entrySet()) {
+                    token.getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_PREFIX + e.getKey(), e.getValue());
+                }
+            }
+
+            return Arc.DEFAULT_ARC;
+        } else {
+            throw new DsmNotFoundException("cannot find ds interface: " + apiId);
+        }
+    }
+
+    private String findCurrentWfProfileId(NodeToken token) throws MSROException {
+        final String p1 = token.getEnv().getAttribute(WorkflowsConstants.SYSTEM_WF_PROFILE_ID);
+        if (p1 != null && !p1.isEmpty()) {
+            return p1;
+        }
+        final String p2 = token.getFullEnv().getAttribute(WorkflowsConstants.SYSTEM_WF_PROFILE_ID);
+        if (p2 != null && !p2.isEmpty()) {
+            return p2;
+        }
+        final String p3 = token.getProcess().getEnv().getAttribute(WorkflowsConstants.SYSTEM_WF_PROFILE_ID);
+        if (p3 != null && !p3.isEmpty()) {
+            return p3;
+        }
+        throw new MSROException("Missing property in env: " + WorkflowsConstants.SYSTEM_WF_PROFILE_ID);
+    }
+
+    private String calculateFromDate(final NodeToken token) throws MSROException {
+
+        if (StringUtils.isNotBlank(getFromDateOverride())) {
+            log.info("using override FROM_DATE for incremental harvesting: " + getFromDateOverride());
+            return getFromDateOverride();
+        }
+        final String profId = findCurrentWfProfileId(token);
+
+        final long d = findLastSuccessStartDate(profId);
+        return (d > 0) ? (new SimpleDateFormat(DATE_FORMAT)).format(new Date(d - ONE_DAY)) : null;
+    }
+
+    private long findLastSuccessStartDate(String profId) {
+        long res = -1;
+
+        final Iterator<Map<String, String>> iter = dnetLogger.find(WorkflowsConstants.SYSTEM_WF_PROFILE_ID, profId);
+        while (iter.hasNext()) {
+            final Map<String, String> map = iter.next();
+            if ("true".equalsIgnoreCase(map.get(WorkflowsConstants.SYSTEM_COMPLETED_SUCCESSFULLY))) {
+                final long curr = NumberUtils.toLong(map.get(WorkflowsConstants.SYSTEM_START_DATE), -1);
+                if (curr > res) {
+                    res = curr;
+                }
+            }
+        }
+        return res;
+    }
+
+
+    public String getMdId() {
+        return mdId;
+    }
+
+    public void setMdId(String mdId) {
+        this.mdId = mdId;
+    }
+
+    public String getCollectionMode() {
+        return collectionMode;
+    }
+
+    public void setCollectionMode(String collectionMode) {
+        this.collectionMode = collectionMode;
+    }
+
+    public String getOozieWfPath() {
+        return oozieWfPath;
+    }
+
+    public void setOozieWfPath(String oozieWfPath) {
+        this.oozieWfPath = oozieWfPath;
+    }
+
+    public String getMetadataEncoding() {
+        return metadataEncoding;
+    }
+
+    public void setMetadataEncoding(String metadataEncoding) {
+        this.metadataEncoding = metadataEncoding;
+    }
+
+    public String getFromDateOverride() {
+        return fromDateOverride;
+    }
+
+    public void setFromDateOverride(String fromDateOverride) {
+        this.fromDateOverride = fromDateOverride;
+    }
+
+    public String getUntilDateOverride() {
+        return untilDateOverride;
+    }
+
+    public void setUntilDateOverride(String untilDateOverride) {
+        this.untilDateOverride = untilDateOverride;
+    }
+
+    public int getMaxNumberOfRetry() {
+        return maxNumberOfRetry;
+    }
+
+    public void setMaxNumberOfRetry(int maxNumberOfRetry) {
+        this.maxNumberOfRetry = maxNumberOfRetry;
+    }
+
+    public int getRequestDelay() {
+        return requestDelay;
+    }
+
+    public void setRequestDelay(int requestDelay) {
+        this.requestDelay = requestDelay;
+    }
+
+    public int getRetryDelay() {
+        return retryDelay;
+    }
+
+    public void setRetryDelay(int retryDelay) {
+        this.retryDelay = retryDelay;
+    }
+
+    public int getConnectTimeOut() {
+        return connectTimeOut;
+    }
+
+    public void setConnectTimeOut(int connectTimeOut) {
+        this.connectTimeOut = connectTimeOut;
+    }
+
+    public int getReadTimeOut() {
+        return readTimeOut;
+    }
+
+    public void setReadTimeOut(int readTimeOut) {
+        this.readTimeOut = readTimeOut;
+    }
+
+    public String getDnetMessageManagerURL() {
+        return dnetMessageManagerURL;
+    }
+
+    public void setDnetMessageManagerURL(String dnetMessageManagerURL) {
+        this.dnetMessageManagerURL = dnetMessageManagerURL;
+    }
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/applicationContext-msro-openaire-message.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/applicationContext-msro-openaire-message.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/applicationContext-msro-openaire-message.xml	(revision 60998)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:p="http://www.springframework.org/schema/p"
+       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="dnetMessageManager" 
+    	class="eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.message.DnetMessageManager" 
+    	p:maxNumberOfMessages="${dnet.openaire.messageManager.maxNumberOfMessages}" />
+
+</beans>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/PrepareEnvTransformHadoopJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/PrepareEnvTransformHadoopJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/PrepareEnvTransformHadoopJobNode.java	(revision 60998)
@@ -0,0 +1,67 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Value;
+
+public class PrepareEnvTransformHadoopJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(PrepareEnvTransformHadoopJobNode.class);
+
+    private String ruleId;
+
+    private String mdstoreInput;
+
+    private String mdstoreOutput;
+
+    @Value("${dnet.openaire.dhp.transformation.app.path}")
+    private String oozieWfPath;
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+
+        token.getEnv().setAttribute("oozieWfPath", getOozieWfPath());
+        token.getEnv().setAttribute("timestamp", "" + System.currentTimeMillis());
+        token.getEnv().setAttribute("workflowId", token.getProcess().getEnv().getAttribute("system:processId"));
+        token.getEnv().setAttribute("mdstoreInput", getMdstoreInput());
+        token.getEnv().setAttribute("mdstoreOutput", getMdstoreOutput());
+        token.getEnv().setAttribute("transformationRule", getRuleId());
+        return Arc.DEFAULT_ARC;
+
+    }
+
+    public String getRuleId() {
+        return ruleId;
+    }
+
+    public void setRuleId(String ruleId) {
+        this.ruleId = ruleId;
+    }
+
+    public String getMdstoreInput() {
+        return mdstoreInput;
+    }
+
+    public void setMdstoreInput(String mdstoreInput) {
+        this.mdstoreInput = mdstoreInput;
+    }
+
+    public String getMdstoreOutput() {
+        return mdstoreOutput;
+    }
+
+    public void setMdstoreOutput(String mdstoreOutput) {
+        this.mdstoreOutput = mdstoreOutput;
+    }
+
+    public String getOozieWfPath() {
+        return oozieWfPath;
+    }
+
+    public void setOozieWfPath(String oozieWfPath) {
+        this.oozieWfPath = oozieWfPath;
+    }
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite/datacite-filter.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite/datacite-filter.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/xslt-datacite/datacite-filter.xml	(revision 60998)
@@ -0,0 +1,937 @@
+<filter>
+	<record relatedId="oai:arXiv.org:1204.5479" dataciteId="10.4121/uuid:8bf81177-2f2b-49c2-aaf5-d36739873dd9" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3237" dataciteId="10.4121/uuid:8bf81177-2f2b-49c2-aaf5-d36739873dd9" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0687" dataciteId="10.4121/uuid:8bf81177-2f2b-49c2-aaf5-d36739873dd9" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0799" dataciteId="10.4121/uuid:8bf81177-2f2b-49c2-aaf5-d36739873dd9" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2248" dataciteId="10.5063/AA/CONNOLLY.126.2" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6226" dataciteId="10.6073/PASTA/C7AB9DD02AFAFC581B376C74F733B3EC" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1478" dataciteId="10.5063/AA/NCEAS.177.3" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2189" dataciteId="10.3334/CDIAC/CLI.NDP026B" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3524" dataciteId="10.7265/N5/NSIDC-WGI-2012-02" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1571" dataciteId="10.4231/D33F4KN2K" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6199" dataciteId="10.4122/1.1000001001" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6654" dataciteId="10.5060/D2DN4300" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5065" dataciteId="10.5060/D2DN4300" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1227" dataciteId="10.6084/M9.FIGSHARE.23401" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5923" dataciteId="10.6084/M9.FIGSHARE.23401" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4361" dataciteId="10.6084/M9.FIGSHARE.64921" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0684" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1220" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2255" dataciteId="10.6084/M9.FIGSHARE.16980" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6537" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0151" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1580" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1989" dataciteId="10.6084/M9.FIGSHARE.24460" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2081" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2320" dataciteId="10.6084/M9.FIGSHARE.55761" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2851" dataciteId="10.6084/M9.FIGSHARE.53842" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.3347" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.3983" dataciteId="10.6084/M9.FIGSHARE.24460" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6312" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6790" dataciteId="10.6084/M9.FIGSHARE.4394" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.7060" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0333" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0338" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1194" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2333" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2372" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3627" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5819" dataciteId="10.6084/M9.FIGSHARE.26373" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.6627" dataciteId="10.6084/M9.FIGSHARE.26086" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1244" dataciteId="10.6084/M9.FIGSHARE.4394" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1962" dataciteId="10.6084/M9.FIGSHARE.26373" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2440" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3438" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3538" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5371" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5887" dataciteId="10.6084/M9.FIGSHARE.638007" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5947" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1065" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1604" dataciteId="10.6084/M9.FIGSHARE.71079" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3524" dataciteId="10.6084/M9.FIGSHARE.16980" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3700" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4043" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5104" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3253" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4405" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4596" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4643" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6393" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6513" dataciteId="10.6084/M9.FIGSHARE.2592" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0345" dataciteId="10.6084/M9.FIGSHARE.26086" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1556" dataciteId="10.6084/M9.FIGSHARE.638007" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2215" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3701" dataciteId="10.6084/M9.FIGSHARE.7046" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4187" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5338" dataciteId="10.6084/M9.FIGSHARE.1210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6571" dataciteId="10.6084/M9.FIGSHARE.638007" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0086" dataciteId="10.6100/IR613593" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0208" dataciteId="10.5169/seals-48930" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0214" dataciteId="10.5169/seals-42391" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0214" dataciteId="10.5169/seals-48216" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0222" dataciteId="10.6100/IR714676" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0287" dataciteId="10.5169/seals-54594" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0299" dataciteId="10.5169/seals-53851" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0311" dataciteId="10.5169/seals-59503" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0338" dataciteId="10.5169/seals-52990" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0469" dataciteId="10.4230/LIPIcs.STACS.2011.615" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0501" dataciteId="10.5169/seals-109901" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0501" dataciteId="10.5169/seals-44589" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0501" dataciteId="10.5169/seals-45400" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0597" dataciteId="10.5169/seals-48218" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0879" dataciteId="10.5169/seals-43259" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0890" dataciteId="10.5169/seals-53015" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.0897" dataciteId="10.6100/IR500043" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1260" dataciteId="10.5169/seals-2226" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1308" dataciteId="10.5169/seals-44596" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1417" dataciteId="10.4230/LIPIcs.FSTTCS.2011.217" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1417" dataciteId="10.4230/LIPIcs.STACS.2011.189" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1568" dataciteId="10.4230/LIPIcs.RTA.2010.259" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1568" dataciteId="10.4230/LIPIcs.RTA.2010.33" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1568" dataciteId="10.4230/LIPIcs.RTA.2011.155" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1568" dataciteId="10.4230/LIPIcs.RTA.2011.41" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1607" dataciteId="10.5169/seals-99026" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1695" dataciteId="10.5169/seals-48939" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1741" dataciteId="10.5169/seals-48937" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.1848" dataciteId="10.4230/LIPIcs.FSTTCS.2009.2307" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2025" dataciteId="10.5169/seals-99127" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2216" dataciteId="10.3204/DESY-PROC-2012-03/58" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2344" dataciteId="10.5169/seals-30631" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2418" dataciteId="10.5169/seals-45412" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2430" dataciteId="10.5169/seals-33768" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2430" dataciteId="10.5169/seals-59500" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2484" dataciteId="10.5169/seals-64794" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2532" dataciteId="10.5169/seals-57408" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2787" dataciteId="10.5169/seals-109901" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2818" dataciteId="10.5169/seals-51777" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2840" dataciteId="10.5169/seals-57404" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.2840" dataciteId="10.5169/seals-64795" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3076" dataciteId="10.6100/IR348359" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3100" dataciteId="10.2313/NET-2011-07-1_09" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3158" dataciteId="10.6100/IR499858" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3227" dataciteId="10.5169/seals-47355" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3248" dataciteId="10.5169/seals-99037" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3290" dataciteId="10.5169/seals-46331" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3298" dataciteId="10.5169/seals-66079" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3359" dataciteId="10.5169/seals-46331" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3441" dataciteId="10.5169/seals-99025" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3455" dataciteId="10.5169/seals-20693" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3482" dataciteId="10.5169/seals-109915" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3541" dataciteId="10.5169/seals-115764" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3573" dataciteId="10.2312/SGP/SGP04/011-022" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3573" dataciteId="10.2312/SGP/SGP06/061-070" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3739" dataciteId="10.5169/seals-130658" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.3862" dataciteId="10.5169/seals-49712" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4057" dataciteId="10.5169/seals-283486" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4125" dataciteId="10.5169/seals-116214" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4230" dataciteId="10.4230/LIPIcs.STACS.2011.189" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4368" dataciteId="10.4230/LIPIcs.STACS.2011.165" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4379" dataciteId="10.5169/seals-113606" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4470" dataciteId="10.3205/09ptcog071" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4509" dataciteId="10.4230/LIPIcs.STACS.2008.1359" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4526" dataciteId="10.4230/LIPIcs.STACS.2012.601" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4538" dataciteId="10.5169/seals-283443" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4545" dataciteId="10.5169/seals-39431" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4549" dataciteId="10.5169/seals-45410" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4549" dataciteId="10.5169/seals-47355" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4590" dataciteId="10.5169/seals-39433" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4639" dataciteId="10.4230/LIPIcs.FSTTCS.2008.1743" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4672" dataciteId="10.4230/LIPIcs.CSL.2012.426" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4736" dataciteId="10.4230/LIPIcs.ICLP.2010.162" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4747" dataciteId="10.5169/seals-50390" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4779" dataciteId="10.4230/LIPIcs.FSTTCS.2008.1769" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4944" dataciteId="10.5169/seals-44599" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4955" dataciteId="10.5169/seals-43204" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4968" dataciteId="10.5169/seals-43892" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4968" dataciteId="10.5169/seals-52249" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4968" dataciteId="10.5169/seals-59500" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5113" dataciteId="10.4230/LIPIcs.FSTTCS.2011.217" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5113" dataciteId="10.4230/LIPIcs.STACS.2012.182" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5145" dataciteId="10.5169/seals-1173" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5167" dataciteId="10.5169/seals-59500" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5192" dataciteId="10.4230/LIPIcs.STACS.2011.189" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5192" dataciteId="10.4230/LIPIcs.STACS.2012.278" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5220" dataciteId="10.2312/SGP/SGP07/033-037" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5229" dataciteId="10.4230/LIPIcs.FSTTCS.2011.433" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5233" dataciteId="10.5169/seals-28608" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5308" dataciteId="10.5169/seals-283520" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5338" dataciteId="10.4230/OASIcs.CCA.2009.2261" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5372" dataciteId="10.5169/seals-63908" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5376" dataciteId="10.5169/seals-40756" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5545" dataciteId="10.4230/LIPIcs.RTA.2010.33" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5610" dataciteId="10.5169/seals-114478" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5613" dataciteId="10.4230/LIPIcs.STACS.2012.374" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5631" dataciteId="10.4230/LIPIcs.CSL.2011.233" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5672" dataciteId="10.5169/seals-57940" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5714" dataciteId="10.4230/LIPIcs.STACS.2010.2466" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5925" dataciteId="10.3204/DESY-PROC-2011-04/demirkoz_bilge" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6008" dataciteId="10.5169/seals-37994" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6065" dataciteId="10.5169/seals-51096" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6132" dataciteId="10.2312/VG/VG07/009-016" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6291" dataciteId="10.4230/LIPIcs.STACS.2012.66" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6375" dataciteId="10.5169/seals-47339" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6379" dataciteId="10.6100/IR144733" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6445" dataciteId="10.4230/LIPIcs.STACS.2009.1821" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6445" dataciteId="10.4230/LIPIcs.STACS.2010.2482" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6445" dataciteId="10.4230/LIPIcs.STACS.2011.249" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6552" dataciteId="10.4230/LIPIcs.STACS.2009.1839" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6567" dataciteId="10.5169/seals-9298" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6697" dataciteId="10.5169/seals-37166" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6697" dataciteId="10.5169/seals-44614" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6719" dataciteId="10.5169/seals-43857" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0126" dataciteId="10.4230/LIPIcs.STACS.2008.1352" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0144" dataciteId="10.4230/LIPIcs.FSTTCS.2010.424" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0179" dataciteId="10.5169/seals-113996" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0188" dataciteId="10.5169/seals-98889" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0202" dataciteId="10.5169/seals-28050" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0202" dataciteId="10.5169/seals-283520" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0202" dataciteId="10.5169/seals-33768" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0202" dataciteId="10.5169/seals-37996" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0202" dataciteId="10.5169/seals-53857" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0202" dataciteId="10.5169/seals-55784" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0202" dataciteId="10.5169/seals-66079" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0215" dataciteId="10.5169/seals-66079" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0240" dataciteId="10.5169/seals-52988" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0282" dataciteId="10.2312/EGPGV/EGPGV06/059-066" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0306" dataciteId="10.5169/seals-283505" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0323" dataciteId="10.5169/seals-43240" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0339" dataciteId="10.5169/seals-54577" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0357" dataciteId="10.4230/LIPIcs.RTA.2011.139" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0441" dataciteId="10.5169/seals-43240" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0484" dataciteId="10.5169/seals-46319" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0512" dataciteId="10.5169/seals-116314" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0513" dataciteId="10.5169/seals-52990" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0607" dataciteId="10.5169/seals-66687" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0642" dataciteId="10.4230/LIPIcs.STACS.2011.567" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0642" dataciteId="10.4230/LIPIcs.STACS.2012.453" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0705" dataciteId="10.5169/seals-29888" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0714" dataciteId="10.5169/seals-130676" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0974" dataciteId="10.4230/LIPIcs.FSTTCS.2009.2339" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0975" dataciteId="10.3204/DESY-PROC-2012-03/13" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1070" dataciteId="10.5169/seals-43259" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1127" dataciteId="10.5169/seals-61112" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1184" dataciteId="10.5169/seals-40739" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1203" dataciteId="10.2313/NET-2011-07-1_08" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1269" dataciteId="10.5169/seals-46331" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1326" dataciteId="10.5169/seals-46323" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1373" dataciteId="10.4230/LIPIcs.FSTTCS.2008.1767" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1375" dataciteId="10.5169/seals-99127" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1413" dataciteId="10.6100/IR674892" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1454" dataciteId="10.5169/seals-51093" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1473" dataciteId="10.4230/LIPIcs.FSTTCS.2010.108" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1473" dataciteId="10.4230/LIPIcs.STACS.2009.1837" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1473" dataciteId="10.4230/LIPIcs.STACS.2010.2472" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1474" dataciteId="10.5169/seals-43257" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1560" dataciteId="10.5169/seals-60445" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1601" dataciteId="10.5169/seals-1158" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1670" dataciteId="10.4230/LIPIcs.FSTTCS.2011.241" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1730" dataciteId="10.5169/seals-50409" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1743" dataciteId="10.6100/IR712621" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2037" dataciteId="10.3204/DESY-PROC-2012-03/58" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2043" dataciteId="10.5169/seals-283486" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2050" dataciteId="10.5169/seals-50391" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2203" dataciteId="10.5169/seals-58751" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2342" dataciteId="10.5169/seals-56592" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2519" dataciteId="10.4230/LIPIcs.RTA.2011.203" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2519" dataciteId="10.4230/LIPIcs.RTA.2012.176" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2934" dataciteId="10.4230/LIPIcs.STACS.2009.1821" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2940" dataciteId="10.5169/seals-54583" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.3375" dataciteId="10.5169/seals-40771" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.3375" dataciteId="10.5169/seals-41598" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.3451" dataciteId="10.5169/seals-99052" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.3647" dataciteId="10.6100/IR399251" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.3647" dataciteId="10.6100/IR711052" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.3649" dataciteId="10.5169/seals-51780" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.3878" dataciteId="10.6100/IR162111" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.3913" dataciteId="10.5169/seals-43240" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4356" dataciteId="10.5169/seals-109545" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4363" dataciteId="10.6100/IR580449" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4365" dataciteId="10.5169/seals-34677" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4365" dataciteId="10.5169/seals-42368" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4455" dataciteId="10.5169/seals-46925" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4458" dataciteId="10.4230/LIPIcs.FSTTCS.2010.192" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4458" dataciteId="10.4230/LIPIcs.FSTTCS.2011.152" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4515" dataciteId="10.5169/seals-54594" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4650" dataciteId="10.5169/seals-48218" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4691" dataciteId="10.4230/LIPIcs.CSL.2011.97" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4802" dataciteId="10.4230/LIPIcs.CSL.2012.426" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.4898" dataciteId="10.5169/seals-2229" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5169" dataciteId="10.5169/seals-110267" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5197" dataciteId="10.5169/seals-52277" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5236" dataciteId="10.5169/seals-60464" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5239" dataciteId="10.5169/seals-53861" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5249" dataciteId="10.5169/seals-63276" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5290" dataciteId="10.5169/seals-130675" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5376" dataciteId="10.5169/seals-58783" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5416" dataciteId="10.5169/seals-56629" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5426" dataciteId="10.5169/seals-283515" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5427" dataciteId="10.5169/seals-54590" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5441" dataciteId="10.3204/DESY-THESIS-2003-045" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5466" dataciteId="10.5169/seals-1173" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5513" dataciteId="10.5169/seals-116309" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5582" dataciteId="10.5169/seals-2638" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5628" dataciteId="10.5169/seals-1176" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5734" dataciteId="10.5169/seals-46939" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5781" dataciteId="10.5169/seals-110095" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5862" dataciteId="10.5169/seals-46331" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5862" dataciteId="10.5169/seals-99040" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5993" dataciteId="10.5169/seals-48930" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6002" dataciteId="10.5169/seals-110104" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6008" dataciteId="10.5169/seals-38805" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6066" dataciteId="10.5169/seals-58783" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6112" dataciteId="10.5169/seals-116512" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6112" dataciteId="10.5169/seals-116947" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6112" dataciteId="10.5169/seals-116965" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6112" dataciteId="10.5169/seals-116966" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6127" dataciteId="10.2312/SGP/SGP07/033-037" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6175" dataciteId="10.5169/seals-56629" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6192" dataciteId="10.4230/LIPIcs.FSTTCS.2012.435" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6250" dataciteId="10.5169/seals-32138" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6294" dataciteId="10.5169/seals-55102" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6298" dataciteId="10.5169/seals-41557" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6298" dataciteId="10.5169/seals-46331" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6314" dataciteId="10.4230/LIPIcs.STACS.2010.2443" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6346" dataciteId="10.4230/LIPIcs.FSTTCS.2009.2330" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6714" dataciteId="10.4230/LIPIcs.STACS.2011.296" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6787" dataciteId="10.4230/LIPIcs.STACS.2012.501" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6928" dataciteId="10.4230/LIPIcs.FSTTCS.2010.216" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6928" dataciteId="10.4230/LIPIcs.FSTTCS.2010.228" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.6982" dataciteId="10.5169/seals-46331" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.7057" dataciteId="10.5169/seals-45406" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0038" dataciteId="10.6100/IR573294" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0225" dataciteId="10.5169/seals-51777" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0263" dataciteId="10.5169/seals-35520" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0367" dataciteId="10.6100/IR41103" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0454" dataciteId="10.5169/seals-49720" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0499" dataciteId="10.5169/seals-99037" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0517" dataciteId="10.5169/seals-53842" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0669" dataciteId="10.5169/seals-33768" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0669" dataciteId="10.5169/seals-51758" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0669" dataciteId="10.5169/seals-59500" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0819" dataciteId="10.3204/DESY-PROC-2011-04/isern_jordi" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0834" dataciteId="10.2312/SPBG/SPBG04/157-166" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0887" dataciteId="10.5169/seals-283484" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1038" dataciteId="10.5169/seals-47339" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1126" dataciteId="10.5169/seals-44586" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1148" dataciteId="10.2312/VisSym/EuroVis05/303-310" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1148" dataciteId="10.4230/DFU.Vol2.SciViz.2011.346" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1214" dataciteId="10.5169/seals-66687" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1218" dataciteId="10.5169/seals-99125" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1274" dataciteId="10.5169/seals-98879" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1278" dataciteId="10.5169/seals-40018" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1342" dataciteId="10.5169/seals-41601" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1352" dataciteId="10.5169/seals-56592" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1365" dataciteId="10.2312/SPBG/SPBG07/091-100" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1424" dataciteId="10.5169/seals-43228" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1428" dataciteId="10.2312/VCBM/VCBM08/177-184" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1428" dataciteId="10.2312/VCBM/VCBM10/033-040" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1428" dataciteId="10.2312/VCBM/VCBM10/057-064" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1480" dataciteId="10.5169/seals-283448" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1564" dataciteId="10.5169/seals-130661" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1578" dataciteId="10.5169/seals-98879" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1829" dataciteId="10.5169/seals-48216" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1829" dataciteId="10.5169/seals-87877" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1925" dataciteId="10.5169/seals-99111" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1941" dataciteId="10.5169/seals-115278" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2020" dataciteId="10.5169/seals-49709" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2216" dataciteId="10.5062/F47H1GGW" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2254" dataciteId="10.4230/LIPIcs.STACS.2009.1835" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2475" dataciteId="10.5169/seals-58772" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2486" dataciteId="10.5169/seals-54590" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2497" dataciteId="10.4230/LIPIcs.STACS.2012.30" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2541" dataciteId="10.5169/seals-57930" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2604" dataciteId="10.6100/IR348359" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2676" dataciteId="10.5169/seals-57411" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.2724" dataciteId="10.5169/seals-1164" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3082" dataciteId="10.5169/seals-28608" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3087" dataciteId="10.5169/seals-28613" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3090" dataciteId="10.5169/seals-57947" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3161" dataciteId="10.5169/seals-63276" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3431" dataciteId="10.4230/OASIcs.CCA.2009.2261" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3464" dataciteId="10.5169/seals-59510" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3512" dataciteId="10.5169/seals-25344" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3512" dataciteId="10.5169/seals-35520" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3613" dataciteId="10.5169/seals-109911" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3620" dataciteId="10.5169/seals-21899" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3677" dataciteId="10.5169/seals-114387" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3685" dataciteId="10.5169/seals-28608" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3692" dataciteId="10.5169/seals-66687" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3707" dataciteId="10.5169/seals-1152" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3773" dataciteId="10.5169/seals-55111" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3782" dataciteId="10.5169/seals-117009" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3783" dataciteId="10.5169/seals-99128" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3882" dataciteId="10.5169/seals-49709" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3902" dataciteId="10.4230/LIPIcs.STACS.2009.1807" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3902" dataciteId="10.5169/seals-52237" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3966" dataciteId="10.5169/seals-3597" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3971" dataciteId="10.5169/seals-57403" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3975" dataciteId="10.2312/VCBM/VCBM08/125-133" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3975" dataciteId="10.2312/VCBM/VCBM10/125-132" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3975" dataciteId="10.2312/VG/VG10/101-108" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3975" dataciteId="10.2312/VisSym/EuroVis07/275-282" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4250" dataciteId="10.5169/seals-110167" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4504" dataciteId="10.6100/IR416309" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4576" dataciteId="10.5169/seals-110095" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4581" dataciteId="10.2312/SPBG/SPBG04/157-166" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4707" dataciteId="10.5169/seals-87901" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4748" dataciteId="10.5169/seals-109911" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4809" dataciteId="10.4230/OASIcs.CCA.2009.2261" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4809" dataciteId="10.4230/OASIcs.CCA.2009.2263" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4891" dataciteId="10.6100/IR641256" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4912" dataciteId="10.4230/LIPIcs.STACS.2011.165" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4952" dataciteId="10.4230/LIPIcs.STACS.2009.1809" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4965" dataciteId="10.5169/seals-41573" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4965" dataciteId="10.5169/seals-51081" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4966" dataciteId="10.5169/seals-115039" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5104" dataciteId="10.4230/OASIcs.SLATE.2012.185" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5184" dataciteId="10.4230/LIPIcs.FSTTCS.2009.2320" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5184" dataciteId="10.4230/LIPIcs.STACS.2009.1812" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5234" dataciteId="10.5169/seals-58770" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5370" dataciteId="10.5169/seals-99108" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5491" dataciteId="10.5169/seals-43247" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5498" dataciteId="10.5169/seals-14307" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5615" dataciteId="10.6100/IR41103" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5683" dataciteId="10.3204/DESY-THESIS-2007-005" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5694" dataciteId="10.4230/LIPIcs.RTA.2010.119" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5694" dataciteId="10.4230/LIPIcs.RTA.2011.267" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5694" dataciteId="10.4230/LIPIcs.RTA.2012.193" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5728" dataciteId="10.5169/seals-55782" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5941" dataciteId="10.4230/LIPIcs.STACS.2011.165" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.5989" dataciteId="10.5169/seals-35514" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.6088" dataciteId="10.5169/seals-116947" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.6157" dataciteId="10.5169/seals-16340" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.6193" dataciteId="10.4230/LIPIcs.STACS.2008.1359" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.6232" dataciteId="10.5169/seals-99112" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.6596" dataciteId="10.6100/IR732986" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.6747" dataciteId="10.5169/seals-47330" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.6748" dataciteId="10.5169/seals-25335" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.6783" dataciteId="10.5169/seals-16340" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.6982" dataciteId="10.4230/LIPIcs.STACS.2009.1814" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.7007" dataciteId="10.3204/DESY-THESIS-2009-039" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.7056" dataciteId="10.3204/DESY-THESIS-2008-043" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0139" dataciteId="10.4230/LIPIcs.STACS.2010.2453" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0271" dataciteId="10.4230/LIPIcs.STACS.2010.2454" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0291" dataciteId="10.5169/seals-65441" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0325" dataciteId="10.5169/seals-51787" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0325" dataciteId="10.5169/seals-65441" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0352" dataciteId="10.5169/seals-99044" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0390" dataciteId="10.5169/seals-66687" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0480" dataciteId="10.3204/DESY-PROC-2012-03/30" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0552" dataciteId="10.4230/LIPIcs.STACS.2010.2487" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0638" dataciteId="10.5169/seals-16340" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0640" dataciteId="10.5169/seals-64794" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0773" dataciteId="10.4230/LIPIcs.STACS.2012.441" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0835" dataciteId="10.4230/LIPIcs.STACS.2008.1361" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0835" dataciteId="10.4230/LIPIcs.STACS.2011.189" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0838" dataciteId="10.5169/seals-51758" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0838" dataciteId="10.5169/seals-59500" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0838" dataciteId="10.5169/seals-99133" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0873" dataciteId="10.6100/IR582613" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0889" dataciteId="10.5169/seals-22612" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1042" dataciteId="10.5169/seals-53856" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1046" dataciteId="10.5169/seals-60467" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1048" dataciteId="10.5169/seals-48919" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1187" dataciteId="10.4230/OASIcs.WCET.2010.1" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1254" dataciteId="10.5065/D6PN93H2" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1326" dataciteId="10.5169/seals-54604" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1730" dataciteId="10.5169/seals-5606" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1775" dataciteId="10.5169/seals-109911" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1784" dataciteId="10.5169/seals-116486" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1788" dataciteId="10.4230/LIPIcs.STACS.2008.1312" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1788" dataciteId="10.4230/LIPIcs.STACS.2010.2476" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1911" dataciteId="10.5169/seals-114478" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1953" dataciteId="10.5169/seals-115776" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1955" dataciteId="10.5169/seals-65441" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.1980" dataciteId="10.5169/seals-56364" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2132" dataciteId="10.5169/seals-283459" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2180" dataciteId="10.5169/seals-58783" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2228" dataciteId="10.5169/seals-1153" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2228" dataciteId="10.5169/seals-130657" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2228" dataciteId="10.5169/seals-51760" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2240" dataciteId="10.2313/NET-2012-08-2_07" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2317" dataciteId="10.4230/LIPIcs.STACS.2008.1340" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2344" dataciteId="10.5169/seals-47355" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2344" dataciteId="10.5169/seals-99113" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2347" dataciteId="10.5169/seals-46310" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2354" dataciteId="10.4230/LIPIcs.STACS.2009.1821" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2354" dataciteId="10.4230/LIPIcs.STACS.2011.261" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2363" dataciteId="10.5169/seals-48955" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2389" dataciteId="10.3204/DESY-PROC-2012-03/30" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2413" dataciteId="10.5169/seals-33768" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2732" dataciteId="10.4230/LIPIcs.STACS.2009.1855" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2774" dataciteId="10.3204/DESY-THESIS-2008-043" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2774" dataciteId="10.3204/DESY-THESIS-2009-016" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2822" dataciteId="10.5169/seals-16340" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2831" dataciteId="10.5169/seals-52243" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2875" dataciteId="10.5169/seals-114478" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.2949" dataciteId="10.5169/seals-3593" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3069" dataciteId="10.5169/seals-283445" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3072" dataciteId="10.5169/seals-59510" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3151" dataciteId="10.5169/seals-57411" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3275" dataciteId="10.3204/DESY-PROC-2011-04/betz_michael" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3448" dataciteId="10.5169/seals-99048" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3494" dataciteId="10.5169/seals-55096" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3521" dataciteId="10.5169/seals-98889" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3526" dataciteId="10.5169/seals-110104" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3586" dataciteId="10.4230/LIPIcs.STACS.2012.338" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3768" dataciteId="10.5169/seals-34661" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.3874" dataciteId="10.4230/LIPIcs.FSTTCS.2010.133" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4089" dataciteId="10.6100/IR617003" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4268" dataciteId="10.4230/DROPS.MEMICS.2009.2345" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4268" dataciteId="10.4230/LIPIcs.FSTTCS.2011.103" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4336" dataciteId="10.5169/seals-109543" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4577" dataciteId="10.4230/LIPIcs.FSTTCS.2010.108" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4577" dataciteId="10.4230/LIPIcs.FSTTCS.2010.65" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4577" dataciteId="10.4230/LIPIcs.STACS.2008.1339" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4607" dataciteId="10.4230/LIPIcs.STACS.2012.624" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4720" dataciteId="10.5169/seals-98879" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4771" dataciteId="10.5169/seals-58763" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4832" dataciteId="10.5169/seals-87877" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.4900" dataciteId="10.4230/LIPIcs.STACS.2011.165" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5114" dataciteId="10.5169/seals-87898" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5161" dataciteId="10.5169/seals-116732" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5183" dataciteId="10.5169/seals-117010" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5211" dataciteId="10.4230/LIPIcs.FSTTCS.2012.148" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5285" dataciteId="10.5169/seals-39433" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5433" dataciteId="10.5169/seals-37130" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5433" dataciteId="10.5169/seals-42394" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5569" dataciteId="10.5169/seals-64794" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5634" dataciteId="10.5169/seals-51087" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5639" dataciteId="10.5065/D64B2Z73" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5667" dataciteId="10.5169/seals-283459" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5668" dataciteId="10.5169/seals-43259" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5722" dataciteId="10.4230/LIPIcs.FSTTCS.2009.2339" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5722" dataciteId="10.4230/LIPIcs.STACS.2012.30" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5852" dataciteId="10.5065/D62R3PMM" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5862" dataciteId="10.5169/seals-99119" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5917" dataciteId="10.4230/LIPIcs.STACS.2011.296" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5944" dataciteId="10.6100/IR732986" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6157" dataciteId="10.5169/seals-54594" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6538" dataciteId="10.3204/DESY-THESIS-2010-033" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6541" dataciteId="10.6084/M9.FIGSHARE.91424" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6541" dataciteId="10.6084/M9.FIGSHARE.91427" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6549" dataciteId="10.4230/LIPIcs.STACS.2012.453" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6604" dataciteId="10.5169/seals-1173" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6683" dataciteId="10.4230/LIPIcs.FSTTCS.2009.2339" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6692" dataciteId="10.4230/LIPIcs.STACS.2010.2493" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6747" dataciteId="10.5169/seals-283445" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6898" dataciteId="10.5169/seals-114499" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.7175" dataciteId="10.5169/seals-110104" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.7254" dataciteId="10.5169/seals-99108" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.0126" dataciteId="10.5065/D64B2Z73" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.0312" dataciteId="10.4230/LIPIcs.FSTTCS.2010.169" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.0312" dataciteId="10.4230/LIPIcs.STACS.2011.380" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.0354" dataciteId="10.2312/SGP/SGP07/033-037" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.0385" dataciteId="10.2312/SGP/SGP03/156-165" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.0393" dataciteId="10.6100/IR162111" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.0511" dataciteId="10.5169/seals-3632" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.0889" dataciteId="10.5169/seals-41575" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.0895" dataciteId="10.5169/seals-40815" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.0922" dataciteId="10.5169/seals-58783" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.0931" dataciteId="10.5169/seals-38824" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1008" dataciteId="10.5169/seals-49742" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1053" dataciteId="10.5169/seals-130676" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1074" dataciteId="10.5169/seals-130667" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1077" dataciteId="10.5169/seals-130667" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1322" dataciteId="10.5169/seals-1176" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1416" dataciteId="10.3204/DESY-THESIS-2007-023" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1428" dataciteId="10.5169/seals-112426" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1470" dataciteId="10.5169/seals-46331" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1526" dataciteId="10.5169/seals-130667" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1609" dataciteId="10.4230/LIPIcs.FSTTCS.2008.1762" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1639" dataciteId="10.4230/LIPIcs.FSTTCS.2010.108" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1639" dataciteId="10.4230/LIPIcs.STACS.2009.1837" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1783" dataciteId="10.4230/LIPIcs.STACS.2010.2493" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1783" dataciteId="10.4230/LIPIcs.STACS.2012.302" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1895" dataciteId="10.5169/seals-46292" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1895" dataciteId="10.5169/seals-56608" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1973" dataciteId="10.5169/seals-99111" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2087" dataciteId="10.5169/seals-35520" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2087" dataciteId="10.5169/seals-65441" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2138" dataciteId="10.5169/seals-99026" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2155" dataciteId="10.5169/seals-51777" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2213" dataciteId="10.5169/seals-87901" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2245" dataciteId="10.4230/OASIcs.CCA.2009.2267" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2268" dataciteId="10.5169/seals-87901" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2427" dataciteId="10.5169/seals-21276" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2561" dataciteId="10.4230/LIPIcs.STACS.2012.78" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2569" dataciteId="10.5169/seals-39431" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2608" dataciteId="10.5169/seals-39431" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2649" dataciteId="10.6084/M9.FIGSHARE.94265" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2653" dataciteId="10.5169/seals-53831" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2678" dataciteId="10.5065/D6PN93H2" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2721" dataciteId="10.4230/LIPIcs.CSL.2011.381" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2755" dataciteId="10.5169/seals-52237" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2756" dataciteId="10.4230/LIPIcs.STACS.2008.1334" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2763" dataciteId="10.4230/LIPIcs.STACS.2011.296" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2846" dataciteId="10.4230/LIPIcs.STACS.2012.290" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2869" dataciteId="10.5169/seals-87888" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3040" dataciteId="10.5169/seals-53842" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3216" dataciteId="10.5169/seals-37166" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3310" dataciteId="10.5169/seals-1173" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3355" dataciteId="10.3204/DESY-PROC-2012-03/13" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3363" dataciteId="10.5065/D6DJ5CK7" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3384" dataciteId="10.4230/LIPIcs.STACS.2011.649" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3476" dataciteId="10.5169/seals-46292" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3596" dataciteId="10.4230/LIPIcs.CSL.2011.512" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3662" dataciteId="10.5169/seals-110267" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3683" dataciteId="10.5169/seals-44591" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3683" dataciteId="10.5169/seals-45406" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3816" dataciteId="10.5169/seals-23919" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3884" dataciteId="10.5169/seals-49742" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3940" dataciteId="10.6100/IR581728" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.3998" dataciteId="10.6100/IR693618" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4004" dataciteId="10.5169/seals-99026" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4011" dataciteId="10.5169/seals-46292" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4074" dataciteId="10.5169/seals-46292" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4233" dataciteId="10.5169/seals-46312" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4279" dataciteId="10.5169/seals-48919" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4350" dataciteId="10.5169/seals-283450" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4449" dataciteId="10.4230/LIPIcs.STACS.2010.2470" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4519" dataciteId="10.5169/seals-58783" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4587" dataciteId="10.5169/seals-65440" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4643" dataciteId="10.5169/seals-45406" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4677" dataciteId="10.5169/seals-115039" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4769" dataciteId="10.5169/seals-46292" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4802" dataciteId="10.5169/seals-60432" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4830" dataciteId="10.5065/D608638S" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4876" dataciteId="10.5169/seals-87882" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.4881" dataciteId="10.5169/seals-23919" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5016" dataciteId="10.2312/SGP/SGP07/225-233" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5038" dataciteId="10.5169/seals-112124" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5171" dataciteId="10.5169/seals-87898" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5220" dataciteId="10.5169/seals-37166" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5274" dataciteId="10.5169/seals-21272" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5510" dataciteId="10.5169/seals-283527" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5612" dataciteId="10.5169/seals-51098" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5730" dataciteId="10.5169/seals-46321" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5730" dataciteId="10.5169/seals-46322" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5826" dataciteId="10.5169/seals-53856" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5840" dataciteId="10.5169/seals-113570" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5857" dataciteId="10.5169/seals-55792" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5857" dataciteId="10.5169/seals-98884" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5899" dataciteId="10.6100/IR475423" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5899" dataciteId="10.6100/IR731153" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5909" dataciteId="10.4230/LIPIcs.STACS.2008.1318" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5909" dataciteId="10.4230/LIPIcs.STACS.2008.1339" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5980" dataciteId="10.4230/LIPIcs.STACS.2011.93" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5988" dataciteId="10.5169/seals-283486" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.5994" dataciteId="10.5169/seals-48919" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.6092" dataciteId="10.5169/seals-52237" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.6125" dataciteId="10.4230/LIPIcs.STACS.2010.2446" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.6359" dataciteId="10.5169/seals-57410" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.6397" dataciteId="10.5169/seals-11882" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.6483" dataciteId="10.4230/LIPIcs.FSTTCS.2010.338" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.6577" dataciteId="10.3204/DESY-THESIS-2005-045" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0034" dataciteId="10.5169/seals-99034" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0202" dataciteId="10.5169/seals-34661" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0227" dataciteId="10.5169/seals-115214" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0370" dataciteId="10.5169/seals-59529" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0568" dataciteId="10.5169/seals-25344" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0571" dataciteId="10.4230/LIPIcs.FSTTCS.2012.374" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0710" dataciteId="10.5169/seals-37166" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0746" dataciteId="10.5169/seals-59514" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0895" dataciteId="10.5169/seals-283486" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0910" dataciteId="10.2312/SBM/SBM08/001-008" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0937" dataciteId="10.5169/seals-45400" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0937" dataciteId="10.5169/seals-56592" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0999" dataciteId="10.2312/PE/VMV/VMV10/307-314" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.0999" dataciteId="10.2312/VCBM/VCBM10/025-032" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1042" dataciteId="10.5169/seals-98896" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1121" dataciteId="10.2312/SGP/SGP04/011-022" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1165" dataciteId="10.5169/seals-87888" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1189" dataciteId="10.6100/IR714676" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1237" dataciteId="10.5169/seals-53856" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1308" dataciteId="10.5169/seals-57379" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1325" dataciteId="10.5169/seals-98901" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1401" dataciteId="10.5169/seals-114402" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1521" dataciteId="10.5169/seals-64794" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1564" dataciteId="10.5169/seals-48219" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1592" dataciteId="10.5169/seals-33768" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1592" dataciteId="10.5169/seals-35514" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1592" dataciteId="10.5169/seals-46935" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1677" dataciteId="10.5169/seals-1173" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1738" dataciteId="10.4230/LIPIcs.STACS.2008.1352" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1916" dataciteId="10.4230/LIPIcs.FSTTCS.2010.216" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2021" dataciteId="10.5169/seals-38784" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2047" dataciteId="10.5169/seals-99054" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2081" dataciteId="10.5169/seals-1173" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2100" dataciteId="10.5169/seals-44596" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2195" dataciteId="10.5169/seals-283516" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2333" dataciteId="10.4230/LIPIcs.FSTTCS.2009.2333" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2408" dataciteId="10.4230/LIPIcs.FSTTCS.2009.2304" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2408" dataciteId="10.4230/LIPIcs.FSTTCS.2009.2333" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2644" dataciteId="10.5169/seals-42380" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2665" dataciteId="10.5169/seals-117098" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2777" dataciteId="10.5169/seals-54602" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2777" dataciteId="10.5169/seals-60431" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2786" dataciteId="10.5169/seals-114891" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2848" dataciteId="10.4230/LIPIcs.STACS.2011.1" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2882" dataciteId="10.5169/seals-54602" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2890" dataciteId="10.4230/LIPIcs.CSL.2011.97" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2932" dataciteId="10.6100/IR558867" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3045" dataciteId="10.5169/seals-60466" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3078" dataciteId="10.5169/seals-51777" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3240" dataciteId="10.3204/DESY-THESIS-2005-035" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3251" dataciteId="10.5169/seals-65441" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3345" dataciteId="10.5169/seals-51093" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3468" dataciteId="10.5169/seals-111066" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3510" dataciteId="10.5169/seals-9298" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3527" dataciteId="10.5169/seals-46292" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3571" dataciteId="10.5169/seals-48919" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3597" dataciteId="10.5169/seals-1158" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3597" dataciteId="10.5169/seals-66687" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3704" dataciteId="10.5169/seals-283485" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3709" dataciteId="10.5169/seals-54594" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3709" dataciteId="10.5169/seals-57933" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3752" dataciteId="10.5169/seals-87884" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3759" dataciteId="10.4230/LIPIcs.STACS.2012.42" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3783" dataciteId="10.5169/seals-41557" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3793" dataciteId="10.4230/LIPIcs.RTA.2010.259" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3793" dataciteId="10.4230/LIPIcs.RTA.2010.33" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3793" dataciteId="10.4230/LIPIcs.RTA.2010.385" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3817" dataciteId="10.5169/seals-41573" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3817" dataciteId="10.5169/seals-51081" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3868" dataciteId="10.4230/LIPIcs.STACS.2011.1" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3919" dataciteId="10.5169/seals-57926" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3960" dataciteId="10.5169/seals-1173" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4075" dataciteId="10.5169/seals-57939" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4131" dataciteId="10.5169/seals-26635" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4155" dataciteId="10.5169/seals-46292" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4571" dataciteId="10.5169/seals-283472" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4697" dataciteId="10.5169/seals-99127" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4756" dataciteId="10.5169/seals-99046" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4791" dataciteId="10.5169/seals-57395" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4909" dataciteId="10.5169/seals-7597" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4927" dataciteId="10.4230/LIPIcs.FSTTCS.2008.1755" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4970" dataciteId="10.6100/IR558867" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4979" dataciteId="10.5169/seals-57404" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5055" dataciteId="10.5169/seals-49738" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5091" dataciteId="10.5169/seals-16340" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5124" dataciteId="10.5169/seals-55089" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5229" dataciteId="10.5169/seals-87877" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5372" dataciteId="10.5169/seals-1157" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5419" dataciteId="10.5169/seals-53845" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5421" dataciteId="10.2312/EGGH/EGGH07/097-106" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5520" dataciteId="10.2312/EGGH/EGGH07/097-106" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5556" dataciteId="10.5169/seals-51763" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5591" dataciteId="10.5169/seals-48919" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5591" dataciteId="10.5169/seals-57927" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5600" dataciteId="10.5169/seals-283513" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5745" dataciteId="10.5169/seals-110267" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5783" dataciteId="10.5169/seals-54594" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5886" dataciteId="10.5169/seals-59510" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5889" dataciteId="10.5169/seals-39447" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5889" dataciteId="10.5169/seals-98901" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5893" dataciteId="10.5169/seals-39447" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5946" dataciteId="10.5169/seals-50418" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5946" dataciteId="10.5169/seals-98879" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5993" dataciteId="10.5169/seals-52237" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6049" dataciteId="10.5169/seals-48919" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6158" dataciteId="10.4230/LIPIcs.STACS.2011.57" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6162" dataciteId="10.5169/seals-1160" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6162" dataciteId="10.5169/seals-283486" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6281" dataciteId="10.4230/LIPIcs.FSTTCS.2010.42" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6351" dataciteId="10.5169/seals-48919" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6363" dataciteId="10.5169/seals-13560" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6421" dataciteId="10.5169/seals-66074" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6449" dataciteId="10.4230/LIPIcs.FSTTCS.2011.423" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6477" dataciteId="10.5169/seals-37994" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6614" dataciteId="10.6084/M9.FIGSHARE.23826" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0026" dataciteId="10.2312/SGP/SGP07/033-037" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0257" dataciteId="10.4230/LIPIcs.STACS.2010.2459" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0257" dataciteId="10.4230/LIPIcs.STACS.2011.189" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0406" dataciteId="10.5169/seals-59510" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0408" dataciteId="10.6100/IR240580" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0507" dataciteId="10.5169/seals-115764" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0569" dataciteId="10.5169/seals-117020" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0588" dataciteId="10.5169/seals-283459" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0667" dataciteId="10.5169/seals-114428" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0697" dataciteId="10.4230/OASIcs.CCA.2009.2261" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0697" dataciteId="10.4230/OASIcs.CCA.2009.2277" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0813" dataciteId="10.5169/seals-57382" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0822" dataciteId="10.2312/SGP/SGP05/207-216" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0866" dataciteId="10.2312/SGP/SGP04/127-138" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0866" dataciteId="10.2312/SPBG/SPBG04/181-191" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0880" dataciteId="10.2312/SGP/SGP07/033-037" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0880" dataciteId="10.2312/SGP/SGP07/225-233" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0885" dataciteId="10.5169/seals-48962" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.0996" dataciteId="10.5169/seals-58783" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1036" dataciteId="10.5169/seals-50391" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1044" dataciteId="10.5169/seals-45412" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1057" dataciteId="10.5169/seals-58769" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1063" dataciteId="10.6084/M9.FIGSHARE.23826" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1102" dataciteId="10.5169/seals-40012" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1115" dataciteId="10.3204/DESY-THESIS-2004-004" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1193" dataciteId="10.4230/LIPIcs.STACS.2011.57" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1193" dataciteId="10.4230/LIPIcs.STACS.2012.314" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1199" dataciteId="10.4230/LIPIcs.STACS.2011.661" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1326" dataciteId="10.2313/NET-2012-04-1_07" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1373" dataciteId="10.5169/seals-57403" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1379" dataciteId="10.5169/seals-116966" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1502" dataciteId="10.5169/seals-1173" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1561" dataciteId="10.5169/seals-117020" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1697" dataciteId="10.5169/seals-55117" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1731" dataciteId="10.5169/seals-113273" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1774" dataciteId="10.5169/seals-43240" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1854" dataciteId="10.5169/seals-37166" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2000" dataciteId="10.5169/seals-1152" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2026" dataciteId="10.5169/seals-59503" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2039" dataciteId="10.4230/LIPIcs.CSL.2011.174" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2097" dataciteId="10.2312/SCA/SCA06/043-051" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2101" dataciteId="10.5169/seals-87896" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2260" dataciteId="10.4230/LIPIcs.STACS.2010.2493" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2353" dataciteId="10.5169/seals-114381" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2353" dataciteId="10.5169/seals-114661" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2392" dataciteId="10.5169/seals-110267" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2457" dataciteId="10.4230/LIPIcs.FSTTCS.2008.1756" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2460" dataciteId="10.4230/LIPIcs.STACS.2012.54" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2463" dataciteId="10.4230/LIPIcs.STACS.2012.1" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2479" dataciteId="10.4230/LIPIcs.STACS.2008.1339" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2479" dataciteId="10.4230/LIPIcs.STACS.2010.2488" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2481" dataciteId="10.4230/LIPIcs.STACS.2008.1356" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2484" dataciteId="10.5169/seals-28613" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2533" dataciteId="10.5169/seals-54583" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2616" dataciteId="10.6100/IR566741" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2807" dataciteId="10.5169/seals-51777" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2931" dataciteId="10.5169/seals-87877" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2983" dataciteId="10.5169/seals-44578" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.2987" dataciteId="10.4230/LIPIcs.STACS.2010.2493" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3092" dataciteId="10.2312/SGP/SGP04/127-138" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3114" dataciteId="10.4230/LIPIcs.CSL.2012.31" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3141" dataciteId="10.4230/LIPIcs.FSTTCS.2010.505" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3141" dataciteId="10.4230/LIPIcs.STACS.2009.1837" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3174" dataciteId="10.5169/seals-56624" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3196" dataciteId="10.3204/DESY-PROC-2011-04/irastorza_igor" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3344" dataciteId="10.4230/LIPIcs.STACS.2012.302" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3425" dataciteId="10.5169/seals-87877" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3536" dataciteId="10.5169/seals-110100" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3539" dataciteId="10.4230/LIPIcs.FSTTCS.2010.505" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3548" dataciteId="10.4230/LIPIcs.FSTTCS.2009.2330" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3548" dataciteId="10.4230/LIPIcs.FSTTCS.2012.124" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3579" dataciteId="10.5169/seals-59512" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3671" dataciteId="10.5169/seals-65441" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3681" dataciteId="10.5169/seals-66687" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3772" dataciteId="10.5169/seals-55774" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3774" dataciteId="10.5169/seals-55774" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3879" dataciteId="10.5169/seals-116034" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.3957" dataciteId="10.5169/seals-42398" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4001" dataciteId="10.5169/seals-99111" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4030" dataciteId="10.5169/seals-52990" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4034" dataciteId="10.5169/seals-99111" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4203" dataciteId="10.5169/seals-3597" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4289" dataciteId="10.4230/LIPIcs.FSTTCS.2011.152" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4352" dataciteId="10.4230/LIPIcs.STACS.2010.2487" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4352" dataciteId="10.4230/LIPIcs.STACS.2011.591" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4444" dataciteId="10.5169/seals-115881" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4481" dataciteId="10.2312/EGWR/EGSR05/201-210" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4481" dataciteId="10.2312/EGWR/EGSR07/309-320" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4525" dataciteId="10.5169/seals-45408" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4577" dataciteId="10.5169/seals-130673" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4664" dataciteId="10.5169/seals-99046" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4668" dataciteId="10.5169/seals-28613" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4692" dataciteId="10.5169/seals-52238" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4806" dataciteId="10.5169/seals-56608" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.4816" dataciteId="10.5169/seals-59510" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5081" dataciteId="10.3204/DESY-PROC-2011-04/isern_jordi" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5081" dataciteId="10.3204/DESY-PROC-2011-04/schwarz_matthias" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5081" dataciteId="10.3204/DESY-PROC-2011-04/sikivie_pierre" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5086" dataciteId="10.5169/seals-5606" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5249" dataciteId="10.5169/seals-45410" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5249" dataciteId="10.5169/seals-60464" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5545" dataciteId="10.5169/seals-116569" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5545" dataciteId="10.5169/seals-117100" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5604" dataciteId="10.5169/seals-1158" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5604" dataciteId="10.5169/seals-87888" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5604" dataciteId="10.5169/seals-98904" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5659" dataciteId="10.4230/DROPS.MEMICS.2009.2345" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5659" dataciteId="10.4230/LIPIcs.FSTTCS.2008.1745" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5689" dataciteId="10.5169/seals-99040" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5800" dataciteId="10.5169/seals-87877" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5812" dataciteId="10.5169/seals-283454" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5812" dataciteId="10.5169/seals-48962" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5897" dataciteId="10.5169/seals-283447" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5955" dataciteId="10.4230/LIPIcs.STACS.2012.100" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5993" dataciteId="10.5169/seals-1173" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6183" dataciteId="10.5169/seals-52990" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6270" dataciteId="10.5169/seals-57403" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6284" dataciteId="10.4230/LIPIcs.FSTTCS.2009.2338" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6299" dataciteId="10.5169/seals-99026" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6459" dataciteId="10.6100/IR162111" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6509" dataciteId="10.5169/seals-3597" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6537" dataciteId="10.5169/seals-63276" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6670" dataciteId="10.5169/seals-130661" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6699" dataciteId="10.5169/seals-98903" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6741" dataciteId="10.5169/seals-109909" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6741" dataciteId="10.5169/seals-60437" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7080" dataciteId="10.3204/DESY-PROC-2011-04/sikivie_pierre" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7126" dataciteId="10.4230/LIPIcs.STACS.2011.637" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7136" dataciteId="10.4230/LIPIcs.FSTTCS.2008.1762" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7136" dataciteId="10.4230/LIPIcs.RTA.2010.243" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7136" dataciteId="10.4230/LIPIcs.RTA.2010.357" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7300" dataciteId="10.5169/seals-98879" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7403" dataciteId="10.2312/SPBG/SPBG06/009-015" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7437" dataciteId="10.5169/seals-25343" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7437" dataciteId="10.5169/seals-34677" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7459" dataciteId="10.5169/seals-49707" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7540" dataciteId="10.5169/seals-116932" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7684" dataciteId="10.4230/LIPIcs.STACS.2009.1827" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7684" dataciteId="10.4230/LIPIcs.STACS.2010.2442" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7711" dataciteId="10.6100/IR348359" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7727" dataciteId="10.5169/seals-40021" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7908" dataciteId="10.5169/seals-87871" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7909" dataciteId="10.5169/seals-46332" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7913" dataciteId="10.2312/SGP/SGP04/127-138" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7913" dataciteId="10.2312/SPBG/SPBG04/157-166" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7923" dataciteId="10.5169/seals-26619" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7947" dataciteId="10.5169/seals-60463" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.7970" dataciteId="10.4230/LIPIcs.STACS.2009.1839" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.8076" dataciteId="10.5169/seals-283486" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.8099" dataciteId="10.5169/seals-52237" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.8122" dataciteId="10.5169/seals-43232" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.8323" dataciteId="10.5169/seals-116515" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.8448" dataciteId="10.5169/seals-283486" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5529" dataciteId="10.4231/D3ZS2KC5W" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.5068" dataciteId="10.4231/D3NG4GR6X" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.3428" dataciteId="10.4231/D31C1TF49" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.1073" dataciteId="10.4231/D31V5BC8W" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4346" dataciteId="10.3204/DESY-THESIS-2009-047" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.7084" dataciteId="10.6092/issn.1972-5787/1558" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4781" dataciteId="10.4230/LIPIcs.STACS.2013.446" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.6615" dataciteId="10.6092/issn.1972-5787/1980" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2448" dataciteId="10.3204/DESY-PROC-2012-02/109" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.5953" dataciteId="10.5169/seals-39428" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4571" dataciteId="10.5169/seals-39428" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.5875" dataciteId="10.5169/seals-39428" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.0141" dataciteId="10.6092/issn.1972-5787/1980" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4869" dataciteId="10.5169/seals-39428" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.5653" dataciteId="10.4230/LIPIcs.STACS.2013.586" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.1100" dataciteId="10.6092/issn.1972-5787/1347" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6092" dataciteId="10.3204/DESY-PROC-2012-02/59" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.2713" dataciteId="10.4230/LIPIcs.STACS.2013.446" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4556" dataciteId="10.6092/issn.1972-5787/1978" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.4556" dataciteId="10.6092/issn.1972-5787/2066" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.0170" dataciteId="10.6092/issn.1972-5787/1980" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.6685" dataciteId="10.6092/issn.1972-5787/1710" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.0282" dataciteId="10.6092/issn.1973-2201/711" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6092" dataciteId="10.3204/DESY-PROC-2012-02/215" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.2920" dataciteId="10.4230/LIPIcs.STACS.2013.424" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.4177" dataciteId="10.6092/issn.1973-2201/711" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.1546" dataciteId="10.3204/DESY-PROC-2012-02/155" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1205.2812" dataciteId="10.5169/seals-39428" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.6963" dataciteId="10.4230/LIPIcs.STACS.2013.377" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1207.5211" dataciteId="10.4230/LIPIcs.STACS.2013.424" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1210.8099" dataciteId="10.4230/LIPIcs.STACS.2013.377" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1206.1278" dataciteId="10.5169/seals-39428" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1468" dataciteId="10.3204/DESY-PROC-2012-02/222" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.3789" dataciteId="10.5169/seals-39428" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1209.6092" dataciteId="10.3204/DESY-PROC-2012-02/54" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1204.4803" dataciteId="10.3204/DESY-PROC-2012-02/148" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1468" dataciteId="10.3204/DESY-PROC-2012-02/305" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1468" dataciteId="10.3204/DESY-PROC-2012-02/89" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1468" dataciteId="10.3204/DESY-PROC-2012-02/200" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1468" dataciteId="10.3204/DESY-PROC-2012-02/228" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1468" dataciteId="10.3204/DESY-PROC-2012-02/227" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1468" dataciteId="10.3204/DESY-PROC-2012-02/279" namespacePrefix="od________18"/>
+	<record relatedId="oai:arXiv.org:1208.1468" dataciteId="10.3204/DESY-PROC-2012-02/179" namespacePrefix="od________18"/>
+</filter>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/update.db.patch.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/update.db.patch.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/update.db.patch.wf.st	(revision 60998)
@@ -0,0 +1,42 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Get more datasource info</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="PrepareUpdateSQL"/>
+	</ARCS>
+</NODE>
+<NODE name="PrepareUpdateSQL" type="PrepareHostedbyUpdateSQL">
+	<DESCRIPTION>Generates the update command</DESCRIPTION>
+    <PARAMETERS>
+    	<PARAM name="theQueryParamName" type="string" managedBy="system" required="true">hostedByUpdateSQL</PARAM>
+        <PARAM name="updateSqlTemplatePath" type="string" managedBy="user" required="true"
+        function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedBy','st')">/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedBy/fillHostedBy.sql.st</PARAM>
+	</PARAMETERS>
+    <ARCS>
+		<ARC to="EXECUTE"/>
+	</ARCS>
+</NODE>
+
+<NODE name="EXECUTE" type="ExecuteSqlFromEnv">
+	<DESCRIPTION>Add new journal to patch entry tables</DESCRIPTION>
+    <PARAMETERS>
+    	<PARAM name="dbProperty" type="string" managedBy="system" required="true">dnet.openaire.db.name</PARAM>
+        <PARAM name="sqlParamName" type="string" managedBy="system" required="true">hostedByUpdateSQL</PARAM>
+   	</PARAMETERS>
+    <ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/sql/pangaea_preparetable.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/sql/pangaea_preparetable.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/sql/pangaea_preparetable.sql	(revision 60998)
@@ -0,0 +1,7 @@
+DROP TABLE IF EXISTS pangaea_temp_journals;
+CREATE TABLE IF NOT EXISTS pangaea_temp_journals (
+	_dnet_resource_identifier_ CHARACTER VARYING(2048) DEFAULT 'temp_' || md5(clock_timestamp() :: TEXT) || '_' || md5(random() :: TEXT),
+	id                         CHARACTER VARYING(255) PRIMARY KEY,
+	issn                       CHARACTER VARYING(255),
+	oa_source_id               CHARACTER VARYING(255) REFERENCES dsm_datasources (id)
+);
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/applicationContext-claims.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/applicationContext-claims.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/applicationContext-claims.xml	(revision 60998)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="claimsJdbcTemplateFactory"
+	      class="eu.dnetlib.enabling.database.utils.JdbcTemplateFactory"
+	      p:dataSourceFactory-ref="claimsDataSourceFactory"/>
+
+	<bean id="claimsDataSourceFactory"
+	      class="eu.dnetlib.enabling.database.DataSourceFactoryImpl"
+	      p:driverClassName="org.postgresql.Driver"
+	      p:baseUrl="${dnet.openaire.claims.db.baseurl}"
+	      p:username="${dnet.openaire.claims.db.username}"
+	      p:password="${dnet.openaire.claims.db.password}"/>
+
+	<bean id="claimDatabaseUtils" class="eu.dnetlib.msro.openaireplus.workflows.nodes.claims.ClaimDatabaseUtils"/>
+
+</beans>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/fillhostedByDoaj/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,21 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/xsl/jorunal2db.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/xsl/jorunal2db.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/xsl/jorunal2db.xsl	(revision 60998)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+>
+
+
+	<xsl:param name="parentDatasourceId"/>
+	<xsl:template match="/">
+
+		<ROWS>
+			<xsl:variable name="issn" select="//column[./@name='ISSN']"/>
+			<xsl:variable name="id" select="//column[./@name='ID']"/>
+
+			<ROW table="pangaea_temp_journals">
+				<FIELD name="_dnet_resource_identifier_">
+					<xsl:value-of select="concat('journal',$id)"/>
+				</FIELD>
+				<FIELD name="id">
+					<xsl:value-of select="concat('journal',$id)"/>
+				</FIELD>
+				<FIELD name="issn">
+					<xsl:value-of select="$issn"/>
+				</FIELD>
+				<FIELD name="oa_source_id">
+					<xsl:value-of select="$parentDatasourceId"/>
+				</FIELD>
+			</ROW>
+		</ROWS>
+	</xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/collection.wf.st	(revision 60998)
@@ -0,0 +1,124 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="SELECT_MODE"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="SELECT_MODE" type="Selection">
+	<DESCRIPTION>Choose collection mode</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="selection" managedBy="user" function="validValues(['REFRESH','INCREMENTAL'])">REFRESH</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_REFRESH" name="REFRESH" />
+		<ARC to="PREPARE_INCREMENTAL" name="INCREMENTAL" />
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_REFRESH" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="MdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+		 <PARAM managedBy="system" name="storingType" required="true" type="string">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="PREPARE_INCREMENTAL" type="FindDateRangeForIncrementalHarvesting">
+	<DESCRIPTION>Find Date Range For Incremental Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_INCREMENTAL" type="DateRangeCollectRecords">
+	<DESCRIPTION>Start incremental harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="fromDateParam" managedBy="system">FROM_DATE</PARAM>
+		<PARAM required="true" type="string" name="untilDateParam" managedBy="system">UNTIL_DATE</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_INCREMENTAL" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_INCREMENTAL"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_INCREMENTAL" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records incrementally</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("orig_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">INCREMENTAL</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("orig_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl/DatasetfromPangaeaTransform.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl/DatasetfromPangaeaTransform.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl/DatasetfromPangaeaTransform.xsl	(revision 60998)
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:oai="http://www.openarchives.org/OAI/2.0/"
+                xmlns:datetime="http://exslt.org/dates-and-times"
+                xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+                xmlns:md="http://www.pangaea.de/MetaData"
+                xmlns:oaa="http://namespace.openaire.eu/oaa" xmlns:oaf="http://namespace.openaire.eu/oaf"
+                xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:dnet="eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions"
+                xmlns:stringUtils="org.apache.commons.lang.StringUtils"
+                version="2.0"
+                exclude-result-prefixes="xsl dnet oaa fn stringUtils datetime">
+	<xsl:param name="namespacePrefix"/>
+	<xsl:param name="dataSourceId"/>
+	<xsl:param name="parentDatasourceId"/>
+	<xsl:param name="dataprovider_name"/>
+	<xsl:param name="dataprovider_id"/>
+
+	<xsl:template match="/">
+
+
+		<xsl:variable name="identifier_datacite">
+			<xsl:value-of select="oai:record/oai:header/dri:objIdentifier"/>
+		</xsl:variable>
+
+		<xsl:variable name="dataset_identifier">
+			<xsl:value-of
+					select="//md:citation/md:URI"/>
+		</xsl:variable>
+		<xsl:variable name="openaire_dataset_identifier">
+			<xsl:value-of
+					select="concat($namespacePrefix,'::', dnet:md5($dataset_identifier))"/>
+		</xsl:variable>
+
+		<xsl:variable name="parentURI">
+			<xsl:value-of select="//md:citation/md:parentURI"/>
+		</xsl:variable>
+
+		<xsl:call-template name="CreateRecord">
+			<xsl:with-param name="openaire_dataset_identifier" select="$openaire_dataset_identifier"/>
+			<xsl:with-param name="dataset_identifier" select="$dataset_identifier"/>
+			<xsl:with-param name="parent_uri" select="$parentURI"/>
+		</xsl:call-template>
+
+
+	</xsl:template>
+	<xsl:template name="CreateRecord">
+		<xsl:param name="openaire_dataset_identifier"/>
+		<xsl:param name="dataset_identifier"/>
+		<xsl:param name="parent_uri"/>
+		<xsl:variable name="doi">
+			<xsl:value-of
+					select="replace(replace($dataset_identifier, 'https://doi.org/', ''), 'https://doi.pangaea.de/', '')"/>
+		</xsl:variable>
+		<oai:record>
+			<oai:header>
+				<dri:objIdentifier>
+					<xsl:value-of select="$openaire_dataset_identifier"/>
+				</dri:objIdentifier>
+				<dri:recordIdentifier>
+					<xsl:value-of select="$dataset_identifier"/>
+				</dri:recordIdentifier>
+				<dri:dateOfCollection>
+					<xsl:value-of select="datetime:dateTime()"/>
+				</dri:dateOfCollection>
+				<dri:repositoryId>
+					<xsl:value-of select="$dataprovider_id"/>
+				</dri:repositoryId>
+				<oaf:datasourceprefix>
+					<xsl:value-of select="$namespacePrefix"/>
+				</oaf:datasourceprefix>
+			</oai:header>
+			<oai:metadata>
+				<resource
+						xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+						xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd"
+						xmlns="http://datacite.org/schema/kernel-3">
+					<identifier identifierType="DOI">
+						<xsl:value-of select="$doi"/>
+					</identifier>
+					<creators>
+						<xsl:for-each select="//md:citation/md:author">
+							<creator>
+								<creatorName>
+									<xsl:value-of select="concat(./md:firstName, ' ', ./md:lastName)"/>
+								</creatorName>
+								<nameIdentifier schemeURI="http://www.pangaea.de"
+								                nameIdentifierScheme="PANGAEA">
+									<xsl:value-of select="./@id"/>
+								</nameIdentifier>
+
+							</creator>
+						</xsl:for-each>
+					</creators>
+					<titles>
+						<xsl:for-each select="//md:citation/md:title">
+							<title xml:lang="en-us">
+								<xsl:value-of select="."/>
+							</title>
+						</xsl:for-each>
+					</titles>
+					<publisher>PANGAEA</publisher>
+					<publicationYear>
+						<xsl:value-of select="//md:citation/md:year"/>
+					</publicationYear>
+					<resourceType resourceTypeGeneral="Dataset"/>
+					<xsl:variable name="description">
+						<xsl:value-of select="//md:citation/md:abstract"/>
+					</xsl:variable>
+					<xsl:if test="$description">
+						<descriptions>
+							<description descriptionType="Abstract">
+								<xsl:value-of select="$description"/>
+							</description>
+						</descriptions>
+					</xsl:if>
+					<rights>info:eu-repo/semantics/openAccess</rights>
+					<contributors>
+						<contributor contributorType="Funder">
+							<contributorName>European Commission</contributorName>
+							<nameIdentifier nameIdentifierScheme="info">
+								<xsl:value-of
+										select="//oaf:projectid"/>
+							</nameIdentifier>
+						</contributor>
+					</contributors>
+				</resource>
+				<xsl:variable name="journalName">
+					<xsl:value-of select="//*[local-name() ='journal']/@name"/>
+				</xsl:variable>
+				<xsl:variable name="journalISSN">
+					<xsl:value-of select="//*[local-name() ='journal']/@issn"/>
+				</xsl:variable>
+				<xsl:variable name="journalDSId">
+					<xsl:value-of select="//*[local-name() ='journal']/@datasourceid"/>
+				</xsl:variable>
+
+				<xsl:choose>
+					<xsl:when test="string-length($journalISSN) &gt; 0">
+						<oaf:journal issn="{$journalISSN}" eissn="">
+							<xsl:value-of select="$journalName"/>
+						</oaf:journal>
+						<oaf:hostedBy>
+							<xsl:attribute name="id">
+								<xsl:value-of select="$journalDSId"/>
+							</xsl:attribute>
+							<xsl:attribute name="name">
+								<xsl:value-of select="$journalName"/>
+							</xsl:attribute>
+						</oaf:hostedBy>
+					</xsl:when>
+					<xsl:otherwise>
+						<oaf:hostedBy
+								id="openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18"
+								name="Unknown Repository"/>
+					</xsl:otherwise>
+				</xsl:choose>
+				<xsl:for-each select="//md:citation/md:supplementTo/@id">
+					<xsl:variable name="publicationID">
+						<xsl:value-of select="."/>
+					</xsl:variable>
+					<xsl:choose>
+						<xsl:when test="string-length($publicationID) &gt; 0">
+							<oaf:relatedPublication>
+								<xsl:attribute name="id">
+									<xsl:value-of
+											select="concat($namespacePrefix,'::', dnet:md5($publicationID))"/>
+								</xsl:attribute>
+							</oaf:relatedPublication>
+						</xsl:when>
+					</xsl:choose>
+				</xsl:for-each>
+
+				<xsl:choose>
+					<xsl:when test="string-length($parent_uri) &gt; 0">
+						<xsl:variable name="dataset_relate_ID">
+							<xsl:value-of select="stringUtils:substringAfter($parent_uri,'doi:')"/>
+						</xsl:variable>
+						<xsl:choose>
+							<xsl:when test="string-length($dataset_relate_ID) &gt; 0">
+								<oaf:relatedDataSet>
+									<xsl:attribute name="id">
+										<xsl:value-of
+												select="concat($namespacePrefix,'::', dnet:md5($dataset_relate_ID))"/>
+									</xsl:attribute>
+								</oaf:relatedDataSet>
+							</xsl:when>
+						</xsl:choose>
+
+					</xsl:when>
+				</xsl:choose>
+
+				<oaf:about>
+					<oaf:datainfo>
+						<oaf:inferred>false</oaf:inferred>
+						<oaf:deletedbyinference>false</oaf:deletedbyinference>
+						<oaf:trust>0.9</oaf:trust>
+						<oaf:inferenceprovenance/>
+						<oaf:provenanceaction classid="sysimport:crosswalk:datasetarchive"
+						                      classname="sysimport:crosswalk:datasetarchive"
+						                      schemeid="dnet:provenanceActions"
+						                      schemename="dnet:provenanceActions"/>
+					</oaf:datainfo>
+				</oaf:about>
+			</oai:metadata>
+		</oai:record>
+	</xsl:template>
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/transformDatasets.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/transformDatasets.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/transformDatasets.wf.st	(revision 60998)
@@ -0,0 +1,85 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_dataset_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transformDatasets"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transformDatasets"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transformDatasets" type="ApplyXslt" isJoin="true">
+	<DESCRIPTION>Transform original records to Datasets</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_dataset_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">datasets_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="cleanDataset"/>
+	</ARCS>
+</NODE>
+
+<NODE name="cleanDataset" type="Transform">
+	<DESCRIPTION>Clean dataset records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="TRANSFORMATION_RULE_ID" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">datasets_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">cleaned_datasets_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeDatasetsRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storeDatasetsRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdtore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tranODF_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">cleaned_datasets_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tranODF_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/AbortMDStoreVersionJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/AbortMDStoreVersionJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/AbortMDStoreVersionJobNode.java	(revision 60998)
@@ -0,0 +1,52 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+public class AbortMDStoreVersionJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(AbortMDStoreVersionJobNode.class);
+
+    /* Spring managed params */
+    private String mdStoreManagerUrl;
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+        final String url = getMdStoreManagerUrl() + "/version/{versionId}?force=true";
+
+        final Map<String, Object> params = new HashMap<>();
+        params.put("versionId", token.getEnv().getAttribute("versionId"));
+
+        final URI uri = UriComponentsBuilder.fromUriString(url)
+                .buildAndExpand(params)
+                .toUri();
+
+        final RestTemplate restTemplate = new RestTemplate();
+        restTemplate.delete(uri);
+
+        log.info("mdstore version deleted ");
+        return Arc.DEFAULT_ARC;
+    }
+
+    public String getMdStoreManagerUrl() {
+        return mdStoreManagerUrl;
+    }
+
+    @Required
+    public void setMdStoreManagerUrl(final String mdStoreManagerUrl) {
+        this.mdStoreManagerUrl = mdStoreManagerUrl;
+    }
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/updateDb.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/updateDb.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/updateDb.wf.st	(revision 60998)
@@ -0,0 +1,34 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="FETCH_RECORDS"/>
+	</ARCS>
+</NODE>
+
+<NODE name="FETCH_RECORDS" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("row_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("row_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">rs_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_DB"/>
+	</ARCS>
+</NODE>
+
+
+<NODE name="UPDATE_DB" type="UpdateOpenaireDb">
+	<DESCRIPTION>Update Db</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">rs_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/hostedbyMapJournalIntersection/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,21 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/transformPublications.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/transformPublications.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/transformPublications.wf.st	(revision 60998)
@@ -0,0 +1,93 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginalsForPublication"/>
+		<ARC to="obtainParams" />
+	</ARCS>
+</NODE>
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginalsForPublication"/>
+	</ARCS>
+</NODE>
+
+
+<NODE name="fetchOriginalsForPublication" type="FetchMDStoreRecords" isJoin="true">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_publication_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transformPublication"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transformPublication" type="ApplyXslt">
+	<DESCRIPTION>Transform original records to Publication</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="xsltClasspath" managedBy="user" function="listFiles('/eu/dnetlib/msro/openaireplus/workflows/repo-hi/dataRepositoryByProject/xsl','xsl')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_publication_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">packed_publication_epr</PARAM>		 
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="splitRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="splitRecords" type="SplitDatasetRecord">
+	<DESCRIPTION>Split Records into datasets and publication</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParm" managedBy="system">packed_publication_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParm" managedBy="system">publication_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>		
+			<ARC to="findHostedBy"/>
+	</ARCS>
+</NODE>
+
+<NODE name="findHostedBy" type="FindHostedBy">
+	<DESCRIPTION>Patch oaf:hostedBy fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">publication_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">patched_epr</PARAM>
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>	
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storePublicationRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storePublicationRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tranOAF_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">patched_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="validateHostedByRepos"/>
+	</ARCS>
+</NODE>
+
+<NODE name="validateHostedByRepos" type="UpsertHostedByApis">
+	<DESCRIPTION>Validate hostedBy Repos</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="countersParam" managedBy="system">hostedByCounters</PARAM>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tranOAF_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/collection.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/collection.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/collection.wf.st	(revision 60998)
@@ -0,0 +1,81 @@
+ <NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Obtain data source params</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="COLLECT_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="COLLECT_REFRESH" type="CollectRecords">
+	<DESCRIPTION>Start Harvesting</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">collected_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="MD_BUILDER_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="MD_BUILDER_REFRESH" type="OpenaireMdBuilder">
+	<DESCRIPTION>Prepare mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">collected_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">store_epr</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="false" type="boolean" name="inferred" managedBy="system">false</PARAM>
+		<PARAM required="false" type="boolean" name="deletedbyinference" managedBy="system">false</PARAM>
+		<PARAM required="false" type="string" name="inferenceprovenance" managedBy="system"></PARAM>
+		<PARAM required="false" type="string" name="trust" managedBy="user">0.9</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassname" managedBy="system">user:claim</PARAM>
+		<PARAM required="false" type="string" name="provenanceactionclassid" managedBy="system">user:claim</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="STORE_REFRESH"/>
+	</ARCS>
+</NODE>
+
+<NODE name="STORE_REFRESH" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">store_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+<NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_collection_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_collection_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_collection_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
+
+ 
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/transform.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/transform.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/claim/transform.wf.st	(revision 60998)
@@ -0,0 +1,72 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="fetchOriginals" />
+	</ARCS>
+</NODE>
+
+<NODE name="fetchOriginals" type="FetchMDStoreRecords">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("harv_id")$</PARAM>
+		<PARAM required="true" type="string" name="mdFormat" managedBy="system">$params.("harv_format")$</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">orig_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="obtainParams"/>
+	</ARCS>
+</NODE>
+
+<NODE name="obtainParams" type="ObtainOpenaireDataSourceParams">
+	<DESCRIPTION>Fetch records from MDStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="transform"/>
+	</ARCS>
+</NODE>
+
+<NODE name="transform" type="Transform">
+	<DESCRIPTION>Transform original records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="ruleId" managedBy="user" category="TRANSFORMATION_RULE_ID" function="listProfiles('TransformationRuleDSResourceType', '//TITLE')"></PARAM>
+		<PARAM required="true" type="string" name="inputEprParam" managedBy="system">orig_epr</PARAM>
+		<PARAM required="true" type="string" name="outputEprParam" managedBy="system">trans_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="storeRecords"/>
+	</ARCS>
+</NODE>
+
+<NODE name="storeRecords" type="StoreMDStoreRecords">
+	<DESCRIPTION>Store mdstore records</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system" category="MDSTORE_ID">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="storingType" managedBy="system">REFRESH</PARAM>
+		<PARAM required="true" type="string" name="eprParam" managedBy="system">trans_epr</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="UPDATE_INFO"/>
+	</ARCS>
+</NODE>
+
+ <NODE name="UPDATE_INFO" type="MDStoreToApiExtraField">
+	<DESCRIPTION>Update datasouce API extra fields</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="mdId" managedBy="system">$params.("tran_id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForTotal" managedBy="system">last_aggregation_total</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForDate" managedBy="system">last_aggregation_date</PARAM>
+		<PARAM required="true" type="string" name="extraFieldForMdId" managedBy="system">last_aggregation_mdId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/applicationContext-msro-openaire-message.properties
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/applicationContext-msro-openaire-message.properties	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/applicationContext-msro-openaire-message.properties	(revision 60998)
@@ -0,0 +1 @@
+dnet.openaire.messageManager.maxNumberOfMessages = 100
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/listDownloadObjectStores.xquery.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/listDownloadObjectStores.xquery.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/listDownloadObjectStores.xquery.st	(revision 60998)
@@ -0,0 +1,9 @@
+for \$mdId in 
+	distinct-values(
+		for \$x in collection('/db/DRIVER/MetaWorkflowDSResources/MetaWorkflowDSResourceType')[.//DATAPROVIDER/@id='$dsId$' and .//DATAPROVIDER/@interface='$apiId$']//WORKFLOW
+		let \$f := concat('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType/', substring-before(\$x/@id/string(), '_'))
+		return doc(\$f)[.//PARAM[@name="extraFieldForTotal" and text() = 'last_download_total']]//NODE[@type='DownloadFromMetadataOpenaire' or @type='UpdateObjectStoreSize']//PARAM[@category="OBJECTSTORE_ID"]/text()
+	)
+	let \$fmd := concat('/db/DRIVER/ObjectStoreDSResources/ObjectStoreDSResourceType/', substring-before(\$mdId, '_'))
+	return doc(\$fmd)
+	
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/downloadFilesFromPubsRepository/repoBye.wf.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/downloadFilesFromPubsRepository/repoBye.wf.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/repo-hi/downloadFilesFromPubsRepository/repoBye.wf.st	(revision 60998)
@@ -0,0 +1,43 @@
+<NODE name="SET_INFO" isStart="true" type="SetProviderInfo">
+	<DESCRIPTION>Set information about current provider</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="providerId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="providerName" managedBy="system">$params.("dataprovider:name")$</PARAM>
+		<PARAM required="true" type="string" name="api" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteObjectStore"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteObjectStore" type="DeleteObjectStore">
+	<DESCRIPTION>Delete the associated ObjectStore</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="objectstoreId" managedBy="system" category="OBJECTSTORE_ID">$params.("objs_id")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="DeleteMetaWorkflow"/>
+	</ARCS>
+</NODE>
+
+<NODE name="DeleteMetaWorkflow" type="DeleteOpenaireMetaWf">
+	<DESCRIPTION>Delete the MetaWorkflow</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="metaWfId" managedBy="system">$params.("META_WORKFLOW_ID")$</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="RemoveApiExtraFields"/>
+	</ARCS>
+</NODE>
+
+<NODE name="RemoveApiExtraFields" type="RemoveApiExtraFields">
+	<DESCRIPTION>Reset the extrafields of the api</DESCRIPTION>
+	<PARAMETERS>
+		<PARAM required="true" type="string" name="datasourceId" managedBy="system">$params.("dataprovider:id")$</PARAM>
+		<PARAM required="true" type="string" name="datasourceInterface" managedBy="system">$params.("dataprovider:interface")$</PARAM>
+		<PARAM required="true" type="string" name="fields" managedBy="system">last_download_total, last_download_date, last_download_objId</PARAM>
+	</PARAMETERS>
+	<ARCS>
+		<ARC to="success"/>
+	</ARCS>
+</NODE>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/listCollectionMdStores.xquery.st
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/listCollectionMdStores.xquery.st	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/listCollectionMdStores.xquery.st	(revision 60998)
@@ -0,0 +1,9 @@
+for \$mdId in 
+	distinct-values(
+		for \$x in collection('/db/DRIVER/MetaWorkflowDSResources/MetaWorkflowDSResourceType')[.//DATAPROVIDER/@id='$dsId$' and .//DATAPROVIDER/@interface='$apiId$']//WORKFLOW
+		let \$f := concat('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType/', substring-before(\$x/@id/string(), '_'))
+		return doc(\$f)[.//PARAM[@name="extraFieldForTotal" and text() = 'last_collection_total']]//NODE[@type='StoreMDStoreRecords']//PARAM[@category="MDSTORE_ID"]/text()
+	)
+	let \$fmd := concat('/db/DRIVER/MDStoreDSResources/MDStoreDSResourceType/', substring-before(\$mdId, '_'))
+	return doc(\$fmd)
+	
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/SwitchIndexesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/SwitchIndexesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/SwitchIndexesJobNode.java	(revision 60998)
@@ -0,0 +1,64 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.index;
+
+import java.util.Queue;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.springframework.beans.factory.annotation.Value;
+
+/**
+ * SwitchIndexesJobNode guides the index switches on all search services whose ids are in the queue available in the parameter named 'searchService_ids'.
+ *
+ * @author claudio, alessia
+ * @see eu.dnetlib.msro.openaireplus.workflows.nodes.index.FindSearchServicesJobNode
+ * @see eu.dnetlib.msro.openaireplus.workflows.nodes.index.SwitchIndexJobNode
+ */
+public class SwitchIndexesJobNode extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(SwitchIndexesJobNode.class);
+
+	@Value("${dnet.openaire.index.api.cacheEvictUrl}")
+	private String indexApiCacheEvictUrl;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		Queue<String> q = (Queue<String>) token.getEnv().getTransientAttribute("searchService_ids");
+		log.debug("Got the searchService_ids queue: " + q.toString());
+		if (q == null) throw new MSROException("Transient param 'searchService_ids' with queue of string could not be found");
+		if (q.isEmpty()) {
+			log.info("searchService_ids queue consumed, now ending cycle and evicting direct indexing api cache on " + indexApiCacheEvictUrl);
+			final HttpGet get = new HttpGet(indexApiCacheEvictUrl);
+
+			try(CloseableHttpClient client = HttpClients.createDefault()) {
+				try (CloseableHttpResponse response = client.execute(get)) {
+					int statusCode = response.getStatusLine().getStatusCode();
+					log.info(String.format("GET on %s returned %s", indexApiCacheEvictUrl, statusCode));
+					if (statusCode == HttpStatus.SC_OK) {
+						return Arc.DEFAULT_ARC;
+					} else
+						throw new MSROException("Cannot evict cache of direct indexing API at: " + indexApiCacheEvictUrl);
+				}
+			}
+		} else {
+			//we have something to do: setting the xqueryForServiceIdParam for the SwitchIndexJobNode
+			String id = q.poll();
+			log.debug("Polled id: " + id);
+			log.debug("And now the queue is " + q);
+			token.getEnv().setAttribute("search_service_ID", id);
+			log.debug("Asking to switch on profile with id: " + id);
+			//updating the queue for next iteration
+			token.getEnv().setTransientAttribute("searchService_ids", q);
+			return "switch";
+		}
+
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryProjectOrganization.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryProjectOrganization.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryProjectOrganization.sql	(revision 60998)
@@ -0,0 +1,26 @@
+SELECT
+	po.project                                                              AS project,
+	po.resporganization                                                     AS resporganization,
+	po.participantnumber                                                    AS participantnumber,
+	po.contribution                                                         AS contribution,
+	po.currency                                                             AS currency,
+	NULL                                                                    AS startdate,
+	NULL                                                                    AS enddate,
+	false                                                                   AS inferred,
+	false                                                                   AS deletedbyinference,
+	po.trust                                                                AS trust,
+	NULL                                                                    AS inferenceprovenance,
+
+	po.semanticclass || '@@@' || po.semanticclass || '@@@dnet:project_organization_relations@@@dnet:project_organization_relations' AS semantics,
+	'sysimport:crosswalk:entityregistry@@@sysimport:crosswalk:entityregistry@@@dnet:provenance_actions@@@dnet:provenance_actions' AS provenanceaction
+
+FROM project_organization po
+WHERE po.project not like 'dfgf%'
+AND po.project not like 'innoviris%'
+AND po.project not like 'sgov%'
+AND po.project not like 'conicytf%'
+AND po.project not like 'anr%'
+AND po.project not like 'gsrt%'
+AND po.project not like 'rif%'
+AND po.project not like 'rsf%'
+AND po.project not like 'miur%'
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/SwitchSearchServiceJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/SwitchSearchServiceJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/SwitchSearchServiceJobNode.java	(revision 60998)
@@ -0,0 +1,63 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.index;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * SwitchSearchServiceJobNode switches the index used by a SearchService whose profile id is in 'search_service_ID' env param.
+ *
+ * @author claudio, alessia
+ */
+public class SwitchSearchServiceJobNode extends BlackboardJobNode {
+
+	private static final Log log = LogFactory.getLog(SwitchSearchServiceJobNode.class);
+	private static final String BB_ACTION_SWITCH_INDEX = "UpdateIndex";
+
+	private String inputIndexIdParam;
+
+	private String outputIndexIdParam;
+
+	@Override
+	protected String obtainServiceId(final NodeToken token) {
+		final String id = token.getEnv().getAttribute("search_service_ID");
+		if (StringUtils.isBlank(id)) throw new RuntimeException("No id found in env attribute 'search_service_ID'");
+		else return id;
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		job.setAction(BB_ACTION_SWITCH_INDEX);
+		String indexId = token.getEnv().getAttribute(getInputIndexIdParam());
+
+		checkParam(getInputIndexIdParam(), "output indexId param is missing");
+		checkParam(indexId, "indexId is required to perform switch");
+		log.info("Switching " + obtainServiceId(token) + " to index " + indexId);
+		job.getParameters().put(getOutputIndexIdParam(), indexId);
+	}
+
+	private void checkParam(final String param, final String msg) throws MSROException {
+		if (StringUtils.isBlank(param)) throw new MSROException(msg);
+	}
+
+	public String getInputIndexIdParam() {
+		return inputIndexIdParam;
+	}
+
+	public void setInputIndexIdParam(final String inputIndexIdParam) {
+		this.inputIndexIdParam = inputIndexIdParam;
+	}
+
+	public String getOutputIndexIdParam() {
+		return outputIndexIdParam;
+	}
+
+	public void setOutputIndexIdParam(final String outputIndexIdParam) {
+		this.outputIndexIdParam = outputIndexIdParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryOrganizations.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryOrganizations.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryOrganizations.sql	(revision 60998)
@@ -0,0 +1,45 @@
+SELECT
+		o.id                                                      AS organizationid,
+		o.legalshortname                                          AS legalshortname,
+		o.legalname                                               AS legalname,
+		o.websiteurl                                              AS websiteurl,
+		o.logourl                                                 AS logourl,
+		o.ec_legalbody                                            AS eclegalbody,
+		o.ec_legalperson                                          AS eclegalperson,
+		o.ec_nonprofit                                            AS ecnonprofit,
+		o.ec_researchorganization                                 AS ecresearchorganization,
+		o.ec_highereducation                                      AS echighereducation,
+		o.ec_internationalorganizationeurinterests                AS ecinternationalorganizationeurinterests,
+		o.ec_internationalorganization                            AS ecinternationalorganization,
+		o.ec_enterprise                                           AS ecenterprise,
+		o.ec_smevalidated                                         AS ecsmevalidated,
+		o.ec_nutscode                                             AS ecnutscode,
+		o.dateofcollection                                        AS dateofcollection,
+		o.lastupdate                                              AS dateoftransformation,
+		false                                                     AS inferred,
+		false                                                     AS deletedbyinference,
+		o.trust                                                   AS trust,
+		''                                                        AS inferenceprovenance,
+		d.id                                                      AS collectedfromid,
+		d.officialname                                            AS collectedfromname,
+
+		o.country || '@@@dnet:countries'                          AS country,
+		'sysimport:crosswalk:entityregistry@@@sysimport:crosswalk:entityregistry@@@dnet:provenance_actions@@@dnet:provenance_actions' AS provenanceaction,
+
+		ARRAY[]::text[]                                           AS pid
+FROM dsm_organizations o
+	LEFT OUTER JOIN dsm_datasources d ON (d.id = o.collectedfrom)
+WHERE d.id <> 'openaire____::dfgf'
+AND d.id <> 'openaire____::innoviris'
+AND d.id <> 'openaire____::sgov'
+AND d.id <> 'openaire____::conicytf'
+AND d.id <> 'openaire____::anr'
+AND d.id <> 'openaire____::gsrt'
+AND d.id <> 'openaire____::rif'
+AND d.id <> 'openaire____::rsf'
+AND d.id <> 'openaire____::miur'
+
+
+
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryClaimsRel.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryClaimsRel.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryClaimsRel.sql	(revision 60998)
@@ -0,0 +1 @@
+SELECT xml, provenance FROM claims WHERE type = 'rels2actions' and set = 'userclaim_result_project'	or set = 'userclaim_result_result'
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FindSearchServicesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FindSearchServicesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FindSearchServicesJobNode.java	(revision 60998)
@@ -0,0 +1,69 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.index;
+
+import java.util.List;
+import java.util.Queue;
+import javax.annotation.Resource;
+
+import com.google.common.collect.Queues;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Value;
+
+/**
+ * Supercedes eu.dnetlib.msro.openaireplus.workflows.nodes.index.FindSearchServiceJobNode.
+ * Returns a queue of SearchService ids that match the xquery and saves it in the env with the name 'searchService_ids'.
+ * Use with eu.dnetlib.msro.openaireplus.workflows.nodes.index.SwitchIndexesJobNode
+ *
+ * @author claudio, alessia
+ */
+public class FindSearchServicesJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(FindSearchServicesJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Value(value = "${dnet.openaire.service.search.lookup.xquery}")
+	private String xquery;
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @throws ISLookUpException
+	 * @throws MSROException
+	 * @see com.googlecode.sarasvati.mem.MemNode#execute(com.googlecode.sarasvati.Engine, NodeToken)
+	 */
+	@Override
+	public String execute(final NodeToken token) throws ISLookUpException, MSROException {
+
+		log.info("lookup for search service: " + getXquery());
+
+		List<String> searchServiceIds = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(getXquery());
+		log.info("SearchService found: " + searchServiceIds.size());
+		Queue<String> q = Queues.newLinkedBlockingQueue(searchServiceIds);
+
+		if (searchServiceIds.isEmpty()) {
+			return "notFound";
+		} else {
+			token.getEnv().setTransientAttribute("searchService_ids", q);
+			return "found";
+		}
+	}
+
+	public String getXquery() {
+		return xquery;
+	}
+
+	public void setXquery(final String xquery) {
+		this.xquery = xquery;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasourceOrganization.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasourceOrganization.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasourceOrganization.sql	(revision 60998)
@@ -0,0 +1,25 @@
+SELECT
+	dor.datasource                                                          AS datasource,
+	dor.organization                                                        AS organization,
+	NULL                                                                    AS startdate,
+	NULL                                                                    AS enddate,
+	false                                                                   AS inferred,
+	false                                                                   AS deletedbyinference,
+	0.9                                                                     AS trust,
+	NULL                                                                    AS inferenceprovenance,
+
+	'providedBy@@@provided by@@@dnet:datasources_organizations_typologies@@@dnet:datasources_organizations_typologies' AS semantics,
+	d.provenanceaction || '@@@' || d.provenanceaction || '@@@dnet:provenanceActions@@@dnet:provenanceActions' AS provenanceaction
+
+FROM dsm_datasource_organization dor
+	LEFT OUTER JOIN dsm_datasources d ON (dor.datasource = d.id)
+WHERE d.id <> 'openaire____::dfgf'
+AND d.id <> 'openaire____::innoviris'
+AND d.id <> 'openaire____::sgov'
+AND d.id <> 'openaire____::conicytf'
+AND d.id <> 'openaire____::anr'
+AND d.id <> 'openaire____::gsrt'
+AND d.id <> 'openaire____::rif'
+AND d.id <> 'openaire____::rsf'
+AND d.id <> 'openaire____::miur'
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/FindHostedByJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/FindHostedByJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/FindHostedByJobNode.java	(revision 60998)
@@ -0,0 +1,161 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby;
+
+import java.io.StringReader;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.resultset.MappedResultSetFactory;
+import eu.dnetlib.enabling.resultset.client.ResultSetClientFactory;
+import eu.dnetlib.enabling.resultset.client.utils.EPRUtils;
+import eu.dnetlib.miscutils.functional.UnaryFunction;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+// TODO: Auto-generated Javadoc
+
+/**
+ * The Class FindHostedByJonbNode.
+ */
+public class FindHostedByJobNode extends SimpleJobNode {
+
+	/**
+	 * The input epr param.
+	 */
+	private String inputEprParam;
+
+	/**
+	 * The output epr param.
+	 */
+	private String outputEprParam;
+
+	/**
+	 * The counters param.
+	 */
+	private String countersParam;
+
+	/**
+	 * The result set client factory.
+	 */
+	private ResultSetClientFactory resultSetClientFactory;
+
+	/**
+	 * The mapped result set factory.
+	 */
+	private MappedResultSetFactory mappedResultSetFactory;
+
+	private final String unknown_repo_id = "openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18";
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see eu.dnetlib.msro.workflows.nodes.SimpleJobNode#execute(com.googlecode.sarasvati.NodeToken)
+	 */
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final W3CEndpointReference inputEpr = new EPRUtils().getEpr(token.getEnv().getAttribute(inputEprParam));
+		final HostedByCounters counters = new HostedByCounters();
+
+		final SAXReader reader = new SAXReader();
+
+		final UnaryFunction<String, String> hostedByMapFunction = new UnaryFunction<String, String>() {
+
+			@Override
+			public String evaluate(final String input) {
+				try {
+					final Document doc = reader.read(new StringReader(input));
+					final Element node = (Element) doc.selectSingleNode("//*[local-name()='hostedBy']");
+					if (node != null) {
+						String hostedById = node.attributeValue("id");
+						if (!hostedById.equals(unknown_repo_id)) {
+							counters.increaseCounter(hostedById);
+						}
+					}
+				} catch (Exception e) {
+
+				}
+
+				return input;
+			}
+		};
+
+		final W3CEndpointReference epr = mappedResultSetFactory.createMappedResultSet(inputEpr, hostedByMapFunction);
+		token.getEnv().setAttribute(outputEprParam, epr.toString());
+		token.getEnv().setTransientAttribute(getCountersParam(), counters);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	/**
+	 * @return the inputEprParam
+	 */
+	public String getInputEprParam() {
+		return inputEprParam;
+	}
+
+	/**
+	 * @param inputEprParam the inputEprParam to set
+	 */
+	public void setInputEprParam(final String inputEprParam) {
+		this.inputEprParam = inputEprParam;
+	}
+
+	/**
+	 * @return the outputEprParam
+	 */
+	public String getOutputEprParam() {
+		return outputEprParam;
+	}
+
+	/**
+	 * @param outputEprParam the outputEprParam to set
+	 */
+	public void setOutputEprParam(final String outputEprParam) {
+		this.outputEprParam = outputEprParam;
+	}
+
+	/**
+	 * @return the resultSetClientFactory
+	 */
+	public ResultSetClientFactory getResultSetClientFactory() {
+		return resultSetClientFactory;
+	}
+
+	/**
+	 * @param resultSetClientFactory the resultSetClientFactory to set
+	 */
+	public void setResultSetClientFactory(final ResultSetClientFactory resultSetClientFactory) {
+		this.resultSetClientFactory = resultSetClientFactory;
+	}
+
+	/**
+	 * @return the mappedResultSetFactory
+	 */
+	public MappedResultSetFactory getMappedResultSetFactory() {
+		return mappedResultSetFactory;
+	}
+
+	/**
+	 * @param mappedResultSetFactory the mappedResultSetFactory to set
+	 */
+	public void setMappedResultSetFactory(final MappedResultSetFactory mappedResultSetFactory) {
+		this.mappedResultSetFactory = mappedResultSetFactory;
+	}
+
+	/**
+	 * @return the countersParam
+	 */
+	public String getCountersParam() {
+		return countersParam;
+	}
+
+	/**
+	 * @param countersParam the countersParam to set
+	 */
+	public void setCountersParam(final String countersParam) {
+		this.countersParam = countersParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/SaveContextProfileJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/SaveContextProfileJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/SaveContextProfileJobNode.java	(revision 60998)
@@ -0,0 +1,99 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.contexts;
+
+import java.io.StringReader;
+import java.util.List;
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryException;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+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;
+
+public class SaveContextProfileJobNode extends SimpleJobNode {
+
+	private String contextObj;
+
+	private static final Log log = LogFactory.getLog(SaveContextProfileJobNode.class);
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final ContextDesc desc = (ContextDesc) token.getEnv().getTransientAttribute(contextObj);
+
+		final String xquery = "for $x in collection('/db/DRIVER/ContextDSResources/ContextDSResourceType') " + "where $x//CONFIGURATION/context[@id='"
+				+ desc.getId() + "' " + "and @type='" + desc.getType() + "'] " + "return $x";
+		List<String> list = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery);
+
+		if (list.isEmpty()) {
+			registerNewProfile(desc);
+		} else {
+			updateProfile(list.get(0), desc);
+		}
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	private boolean updateProfile(final String profile, final ContextDesc desc) throws DocumentException, ISRegistryException {
+		final SAXReader reader = new SAXReader();
+		final Document doc = reader.read(new StringReader(profile));
+		final String profId = doc.valueOf("//HEADER/RESOURCE_IDENTIFIER/@value");
+		final Element ctxElem = (Element) doc.selectSingleNode("//CONFIGURATION/context[@id='" + desc.getId() + "' and @type='" + desc.getType() + "']");
+		updateContextParams(ctxElem, desc);
+
+		for (ContextPart cat : desc.getCategories().values()) {
+			final Node catElem = ctxElem.selectSingleNode("./category[@id='" + cat.getId() + "']");
+			if (catElem != null) {
+				catElem.detach();
+			}
+			ctxElem.add(cat.asDomElement("category"));
+		}
+		log.info("updating profile context " + desc.getId());
+		String xml = doc.asXML();
+		log.debug(xml);
+		return serviceLocator.getService(ISRegistryService.class).updateProfile(profId, xml, "ContextDSResourceType");
+	}
+
+	private void updateContextParams(final Element ctxElement, ContextDesc desc) {
+		//removing old PARAMs
+		List<Node> oldParams = ctxElement.selectNodes("param");
+		for (Node n : oldParams) {
+			n.detach();
+		}
+		//adding new params
+		for (Element param : desc.getParamsAsElements()) {
+			ctxElement.add(param);
+		}
+	}
+
+	private String registerNewProfile(final ContextDesc desc) throws DocumentException, ISRegistryException {
+		final SAXReader reader = new SAXReader();
+		final Document doc = reader.read(getClass().getResourceAsStream(
+				"/eu/dnetlib/msro/openaireplus/workflows/repo-hi/entityreg-contexts/xml/contextProfile.xml"));
+		((Element) doc.selectSingleNode("//CONFIGURATION")).add(desc.asDomElement());
+		log.info("registering profile context " + desc.getId());
+		String xml = doc.asXML();
+		log.debug(xml);
+		return serviceLocator.getService(ISRegistryService.class).registerProfile(xml);
+	}
+
+	public String getContextObj() {
+		return contextObj;
+	}
+
+	public void setContextObj(final String contextObj) {
+		this.contextObj = contextObj;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/decapsule_claims_xml.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/decapsule_claims_xml.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/decapsule_claims_xml.xsl	(revision 60998)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+>
+
+	<xsl:output omit-xml-declaration="yes" indent="yes"/>
+
+	<xsl:template match="/">
+		<ROW>
+			<xsl:apply-templates/>
+		</ROW>
+	</xsl:template>
+
+	<xsl:template match="FIELD[@name = 'xml']">
+		<xsl:value-of select="." disable-output-escaping="yes"/>
+	</xsl:template>
+
+	<xsl:template match="FIELD[@name != 'xml']">
+		<xsl:copy-of select="."/>
+	</xsl:template>
+
+</xsl:stylesheet>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/vocEntry_2_db.xsl
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/vocEntry_2_db.xsl	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/vocEntry_2_db.xsl	(revision 60998)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+	<xsl:template match="/">
+		<ROWS>
+			<ROW table="class">
+				<FIELD name="_dnet_resource_identifier_">
+					<xsl:value-of select="//termCode"/>
+				</FIELD>
+				<FIELD name="code">
+					<xsl:value-of select="//termCode"/>
+				</FIELD>
+				<FIELD name="name">
+					<xsl:value-of select="//termEnglishName"/>
+				</FIELD>
+				<FIELD name="optional1">
+					<xsl:value-of select="//termEncoding"/>
+				</FIELD>
+				<FIELD name="optional2">
+					<xsl:value-of select="//termNativeName"/>
+				</FIELD>
+			</ROW>
+			<ROW table="scheme">
+				<FIELD name="_dnet_resource_identifier_">
+					<xsl:value-of select="//vocCode"/>
+				</FIELD>
+				<FIELD name="code">
+					<xsl:value-of select="//vocCode"/>
+				</FIELD>
+				<FIELD name="name">
+					<xsl:value-of select="//vocName"/>
+				</FIELD>
+				<FIELD name="description">
+					<xsl:value-of select="//vocDescription"/>
+				</FIELD>
+			</ROW>
+			<ROW table="class_scheme">
+				<FIELD name="_dnet_resource_identifier_">
+					<xsl:value-of select="concat(//termCode,'@@',//vocCode)"/>
+				</FIELD>
+				<FIELD name="class">
+					<xsl:value-of select="//termCode"/>
+				</FIELD>
+				<FIELD name="scheme">
+					<xsl:value-of select="//vocCode"/>
+				</FIELD>
+			</ROW>
+		</ROWS>
+	</xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasources.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasources.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryDatasources.sql	(revision 60998)
@@ -0,0 +1,159 @@
+SELECT
+	d.id                                                                                                       AS datasourceid,
+	d.id || array_agg(distinct di.pid)                                                                         AS identities,
+	d.officialname                                                                                             AS officialname,
+	d.englishname                                                                                              AS englishname,
+	CASE
+		WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility):: TEXT) @> ARRAY ['openaire-cris_1.1'])
+    			THEN
+    				'openaire-cris_1.1@@@OpenAIRE CRIS v1.1@@@dnet:datasourceCompatibilityLevel@@@dnet:datasourceCompatibilityLevel'
+        WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility):: TEXT) @> ARRAY ['openaire4.0'])
+                THEN
+                    'openaire4.0@@@OpenAIRE 4.0@@@dnet:datasourceCompatibilityLevel@@@dnet:datasourceCompatibilityLevel'
+		WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility):: TEXT) @> ARRAY ['driver', 'openaire2.0'])
+			THEN
+				'driver-openaire2.0@@@OpenAIRE 2.0+ (DRIVER OA, EC funding)@@@dnet:datasourceCompatibilityLevel@@@dnet:datasourceCompatibilityLevel'
+		WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility) :: TEXT) @> ARRAY ['driver'])
+			THEN
+				'driver@@@OpenAIRE Basic (DRIVER OA)@@@dnet:datasourceCompatibilityLevel@@@dnet:datasourceCompatibilityLevel'
+		WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility) :: TEXT) @> ARRAY ['openaire2.0'])
+			THEN
+				'openaire2.0@@@OpenAIRE 2.0 (EC funding)@@@dnet:datasourceCompatibilityLevel@@@dnet:datasourceCompatibilityLevel'
+		WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility) :: TEXT) @> ARRAY ['openaire3.0'])
+			THEN
+				'openaire3.0@@@OpenAIRE 3.0 (OA, funding)@@@dnet:datasourceCompatibilityLevel@@@dnet:datasourceCompatibilityLevel'
+		WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility) :: TEXT) @> ARRAY ['openaire2.0_data'])
+			THEN
+				'openaire2.0_data@@@OpenAIRE Data (funded, referenced datasets)@@@dnet:datasourceCompatibilityLevel@@@dnet:datasourceCompatibilityLevel'
+		WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility) :: TEXT) @> ARRAY ['native'])
+			THEN
+				'native@@@proprietary@@@dnet:datasourceCompatibilityLevel@@@dnet:datasourceCompatibilityLevel'
+		WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility) :: TEXT) @> ARRAY ['hostedBy'])
+			THEN
+				'hostedBy@@@collected from a compatible aggregator@@@dnet:datasourceCompatibilityLevel@@@dnet:datasourceCompatibilityLevel'
+		WHEN (array_agg(DISTINCT COALESCE (a.compatibility_override, a.compatibility) :: TEXT) @> ARRAY ['notCompatible'])
+			THEN
+			'notCompatible@@@under validation@@@dnet:datasourceCompatibilityLevel@@@dnet:datasourceCompatibilityLevel'
+	ELSE
+		'UNKNOWN@@@not available@@@dnet:datasourceCompatibilityLevel@@@dnet:datasourceCompatibilityLevel'
+	END                                                                                                        AS openairecompatibility,
+	d.websiteurl                                                                                               AS websiteurl,
+	d.logourl                                                                                                  AS logourl,
+	array_agg(DISTINCT CASE WHEN a.protocol = 'oai' and last_aggregation_date is not null THEN a.baseurl ELSE NULL END)                              AS accessinfopackage,
+	d.latitude                                                                                                 AS latitude,
+	d.longitude                                                                                                AS longitude,
+	d.namespaceprefix                                                                                          AS namespaceprefix,
+	NULL                                                                                                       AS odnumberofitems,
+	NULL                                                                                                       AS odnumberofitemsdate,
+
+	(SELECT array_agg(s|| '###keywords@@@keywords@@@dnet:subject_classification_typologies@@@dnet:subject_classification_typologies')
+		FROM UNNEST(
+			ARRAY(
+				SELECT trim(s)
+        FROM unnest(string_to_array(d.subjects, '@@')) AS s)) AS s)                                   AS subjects,
+
+	d.description                                                                                              AS description,
+	NULL                                                                                                       AS odpolicies,
+	ARRAY(SELECT trim(s)
+	      FROM unnest(string_to_array(d.languages, ',')) AS s)                                                 AS odlanguages,
+	ARRAY(SELECT trim(s)
+	      FROM unnest(string_to_array(d.od_contenttypes, '-')) AS s)                                           AS odcontenttypes,
+	false                                                                                                      AS inferred,
+	false                                                                                                      AS deletedbyinference,
+	0.9                                                                                                        AS trust,
+	NULL                                                                                                       AS inferenceprovenance,
+	d.dateofcollection                                                                                         AS dateofcollection,
+	d.dateofvalidation                                                                                         AS dateofvalidation,
+		-- re3data fields
+	d.releasestartdate                                                                                         AS releasestartdate,
+	d.releaseenddate                                                                                           AS releaseenddate,
+	d.missionstatementurl                                                                                      AS missionstatementurl,
+	d.dataprovider                                                                                             AS dataprovider,
+	d.serviceprovider                                                                                          AS serviceprovider,
+	d.databaseaccesstype                                                                                       AS databaseaccesstype,
+	d.datauploadtype                                                                                           AS datauploadtype,
+	d.databaseaccessrestriction                                                                                AS databaseaccessrestriction,
+	d.datauploadrestriction                                                                                    AS datauploadrestriction,
+	d.versioning                                                                                               AS versioning,
+	d.citationguidelineurl                                                                                     AS citationguidelineurl,
+	d.qualitymanagementkind                                                                                    AS qualitymanagementkind,
+	d.pidsystems                                                                                               AS pidsystems,
+	d.certificates                                                                                             AS certificates,
+	ARRAY[]::text[]                                                                                            AS policies,
+	dc.id                                                                                                      AS collectedfromid,
+	dc.officialname                                                                                            AS collectedfromname,
+	d.typology || '@@@' || CASE
+		WHEN (d.typology = 'crissystem') THEN 'CRIS System'
+		WHEN (d.typology = 'datarepository::unknown') THEN 'Data Repository'
+		WHEN (d.typology = 'aggregator::datarepository') THEN 'Data Repository Aggregator'
+		WHEN (d.typology = 'infospace') THEN 'Information Space'
+		WHEN (d.typology = 'pubsrepository::institutional') THEN 'Institutional Repository'
+		WHEN (d.typology = 'aggregator::pubsrepository::institutional') THEN 'Institutional Repository Aggregator'
+		WHEN (d.typology = 'pubsrepository::journal') THEN 'Journal'
+		WHEN (d.typology = 'aggregator::pubsrepository::journals') THEN 'Journal Aggregator/Publisher'
+		WHEN (d.typology = 'pubsrepository::mock') THEN 'Other'
+		WHEN (d.typology = 'pubscatalogue::unknown') THEN 'Publication Catalogue'
+		WHEN (d.typology = 'pubsrepository::unknown') THEN 'Publication Repository'
+		WHEN (d.typology = 'aggregator::pubsrepository::unknown') THEN 'Publication Repository Aggregator'
+		WHEN (d.typology = 'entityregistry') THEN 'Registry'
+		WHEN (d.typology = 'scholarcomminfra') THEN 'Scholarly Comm. Infrastructure'
+		WHEN (d.typology = 'pubsrepository::thematic') THEN 'Thematic Repository'
+		WHEN (d.typology = 'websource') THEN 'Web Source'
+		WHEN (d.typology = 'entityregistry::projects') THEN 'Funder database'
+		WHEN (d.typology = 'entityregistry::repositories') THEN 'Registry of repositories'
+		WHEN (d.typology = 'softwarerepository') THEN 'Software Repository'
+		WHEN (d.typology = 'aggregator::softwarerepository') THEN 'Software Repository Aggregator'
+		WHEN (d.typology = 'orprepository') THEN 'Repository'
+		ELSE 'Other'
+	END || '@@@dnet:datasource_typologies@@@dnet:datasource_typologies'                               AS datasourcetype,
+	'sysimport:crosswalk:entityregistry@@@sysimport:crosswalk:entityregistry@@@dnet:provenance_actions@@@dnet:provenance_actions' AS provenanceaction,
+	CONCAT(d.issn, '@@@', d.eissn, '@@@', d.lissn)                                                    AS journal
+
+FROM dsm_datasources d
+
+LEFT OUTER JOIN dsm_datasources dc on (d.collectedfrom = dc.id)
+LEFT OUTER JOIN dsm_api a ON (d.id = a.datasource)
+LEFT OUTER JOIN dsm_datasourcepids di ON (d.id = di.datasource)
+
+WHERE d.id <> 'openaire____::dfgf'
+AND d.id <> 'openaire____::innoviris'
+AND d.id <> 'openaire____::sgov'
+AND d.id <> 'openaire____::conicytf'
+AND d.id <> 'openaire____::anr'
+AND d.id <> 'openaire____::gsrt'
+AND d.id <> 'openaire____::rif'
+AND d.id <> 'openaire____::rsf'
+AND d.id <> 'openaire____::miur'
+
+GROUP BY
+	d.id,
+	d.officialname,
+	d.englishname,
+	d.websiteurl,
+	d.logourl,
+	d.contactemail,
+	d.namespaceprefix,
+	d.description,
+	d.latitude,
+	d.longitude,
+	d.dateofcollection,
+	d.dateofvalidation,
+	d.releasestartdate,
+	d.releaseenddate,
+	d.missionstatementurl,
+	d.dataprovider,
+	d.serviceprovider,
+	d.databaseaccesstype,
+	d.datauploadtype,
+	d.databaseaccessrestriction,
+	d.datauploadrestriction,
+	d.versioning,
+	d.citationguidelineurl,
+	d.qualitymanagementkind,
+	d.pidsystems,
+	d.certificates,
+	dc.id,
+	dc.officialname,
+	d.issn,
+	d.eissn,
+	d.lissn
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryProjects.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryProjects.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryProjects.sql	(revision 60998)
@@ -0,0 +1,11 @@
+SELECT *
+FROM projects_mv
+WHERE p.collectedfrom <> 'openaire____::dfgf'
+AND p.collectedfrom <> 'openaire____::innoviris'
+AND p.collectedfrom <> 'openaire____::sgov'
+AND p.collectedfrom <> 'openaire____::conicytf'
+AND p.collectedfrom <> 'openaire____::anr'
+AND p.collectedfrom <> 'openaire____::gsrt'
+AND p.collectedfrom <> 'openaire____::rif'
+AND p.collectedfrom <> 'openaire____::rsf'
+AND p.collectedfrom <> 'openaire____::miur'
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/applicationContext-msro-openaireplus.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/applicationContext-msro-openaireplus.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/applicationContext-msro-openaireplus.xml	(revision 60998)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:p="http://www.springframework.org/schema/p"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+	<bean id="contextDsLoader" class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.ContextLoader"
+	      p:xquery="${dnet.openaire.context.xquery}"/>
+
+	<bean id="entityGrouperConfLoader" class="eu.dnetlib.msro.openaireplus.workflows.nodes.index.EntityGrouperConfigurationLoader"
+	      p:xquery="${dnet.openaire.entitygruper.xquery}"/>
+
+</beans>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryClaimsUpdate.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryClaimsUpdate.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryClaimsUpdate.sql	(revision 60998)
@@ -0,0 +1,7 @@
+SELECT
+	regexp_replace(xml, '<\?xml version="1\.0" encoding="UTF-8"\?>', '', 'i') AS xml,
+	provenance
+FROM claims
+WHERE type = 'updates2actions' AND set = 'userclaim_dmf'
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/queryClaimsDataset.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/queryClaimsDataset.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/queryClaimsDataset.sql	(revision 60998)
@@ -0,0 +1,5 @@
+SELECT
+	regexp_replace(xml, '&(?!amp;)', '&amp;', 'g') AS xml,
+	provenance
+FROM claims
+WHERE type = 'dmf2actions' AND set = 'userclaim_dmf' AND provenance = 'user:claim:datacite'
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/SubmitDnetHadoopJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/SubmitDnetHadoopJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/SubmitDnetHadoopJobNode.java	(revision 60998)
@@ -0,0 +1,136 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.googlecode.sarasvati.Engine;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.dhp.message.Message;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.message.DnetMessageManager;
+import eu.dnetlib.msro.workflows.hadoop.SubmitHadoopJobNode;
+import eu.dnetlib.msro.workflows.nodes.ProgressJobNode;
+import eu.dnetlib.msro.workflows.nodes.blackboard.BlackboardWorkflowJobListener;
+import eu.dnetlib.msro.workflows.util.ProgressProvider;
+
+import java.util.Objects;
+
+public class SubmitDnetHadoopJobNode extends SubmitHadoopJobNode implements ProgressProvider, ProgressJobNode {
+
+	private static final Log log = LogFactory.getLog(SubmitDnetHadoopJobNode.class);
+
+	@Autowired
+	private DnetMessageManager dnetMessageManager;
+
+	private int currentValue = 0;
+
+	private int totalValue = 0;
+
+	private boolean accurate = false;
+
+	private String wfId;
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		this.wfId = token.getProcess().getEnv().getAttribute("system:processId");
+		super.prepareJob(job, token);
+	}
+
+	private void updateProgressProvider() {
+		final Message mess = dnetMessageManager.findOngoingMessage(wfId);
+		if (mess != null && mess.getBody() != null) {
+			if (mess.getBody().containsKey(Message.CURRENT_PARAM)) {
+				try {
+					setCurrentValue(Integer.parseInt(mess.getBody().get(Message.CURRENT_PARAM)));
+				} catch (final Throwable e) {
+					log.error("Error parsing value", e);
+				}
+			}
+			if (mess.getBody().containsKey(Message.TOTAL_PARAM)) {
+				try {
+					setTotalValue(Integer.parseInt(mess.getBody().get(Message.TOTAL_PARAM)));
+					setAccurate(true);
+				} catch (final Throwable e) {
+					log.error("Error parsing value", e);
+				}
+			}
+		}
+	}
+
+	@Override
+	protected BlackboardWorkflowJobListener generateBlackboardListener(final Engine engine, final NodeToken token) {
+		return new BlackboardWorkflowJobListener(engine, token) {
+
+			@Override
+			protected void onDone(BlackboardJob job) {
+				super.onDone(getOozieWorkflowReport(job));
+			}
+
+			@Override
+			protected void onFailed(final BlackboardJob job) {
+				super.onFailed(getOozieWorkflowReport(job));
+			}
+
+			private BlackboardJob getOozieWorkflowReport(BlackboardJob job) {
+				final Message report = dnetMessageManager.findReportMessage(wfId);
+
+				if (Objects.isNull(report)) {
+					log.error("cannot find report for workflow id: " + wfId);
+				} else {
+					report.getBody().forEach((k, v) -> log.info(String.format("%s - %s", k, v)));
+					job.getParameters().putAll(report.getBody());
+				}
+				return job;
+			}
+
+		};
+	}
+
+	@Override
+	public ProgressProvider getProgressProvider() {
+		return this;
+	}
+
+	public String getWfId() {
+		return wfId;
+	}
+
+	public void setWfId(final String wfId) {
+		this.wfId = wfId;
+	}
+
+	public boolean isAccurate() {
+		return accurate;
+	}
+
+	public void setAccurate(final boolean accurate) {
+		this.accurate = accurate;
+	}
+
+	@Override
+	public int getCurrentValue() {
+		updateProgressProvider();
+		return currentValue;
+	}
+
+	public void setCurrentValue(final int currentValue) {
+		this.currentValue = currentValue;
+	}
+
+	@Override
+	public int getTotalValue() {
+		return totalValue;
+	}
+
+	public void setTotalValue(final int totalValue) {
+		this.totalValue = totalValue;
+	}
+
+	@Override
+	public boolean isInaccurate() {
+		return !accurate;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/vocabulary_entries.xquery
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/vocabulary_entries.xquery	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/vocabulary_entries.xquery	(revision 60998)
@@ -0,0 +1,13 @@
+for $x in collection("/db/DRIVER/VocabularyDSResources/VocabularyDSResourceType")//TERM 
+where 
+	string-length($x/@english_name) > 0 and string-length($x/@code) > 0
+return 
+	<entry>
+		<termEncoding>{$x/@encoding/string()}</termEncoding>
+		<termCode>{$x/@code/string()}</termCode>
+		<termEnglishName>{$x/@english_name/string()}</termEnglishName>
+		<termNativeName>{$x/@native_name/string()}</termNativeName>
+		<vocCode>{$x/../../VOCABULARY_NAME/@code/string()}</vocCode>
+		<vocName>{$x/../../VOCABULARY_NAME/text()}</vocName>
+		<vocDescription>{$x/../../VOCABULARY_DESCRIPTION/text()}</vocDescription>
+	</entry>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/EndReadingMDStoreJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/EndReadingMDStoreJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/EndReadingMDStoreJobNode.java	(revision 60998)
@@ -0,0 +1,53 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.data.mdstore.manager.common.model.MDStoreVersion;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+public class EndReadingMDStoreJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(EndReadingMDStoreJobNode.class);
+
+    /* Spring managed params */
+    private String mdStoreManagerUrl;
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+        final String url = getMdStoreManagerUrl() + "/version/{versionId}/endReading";
+
+        final Map<String, Object> params = new HashMap<>();
+        params.put("versionId", token.getEnv().getAttribute("reading_versionId"));
+
+        final URI uri = UriComponentsBuilder.fromUriString(url)
+                .buildAndExpand(params)
+                .toUri();
+
+        final RestTemplate restTemplate = new RestTemplate();
+        restTemplate.getForObject(uri, MDStoreVersion.class);
+
+        log.info("mdstore version read complete ");
+        return Arc.DEFAULT_ARC;
+    }
+
+    public String getMdStoreManagerUrl() {
+        return mdStoreManagerUrl;
+    }
+
+    @Required
+    public void setMdStoreManagerUrl(final String mdStoreManagerUrl) {
+        this.mdStoreManagerUrl = mdStoreManagerUrl;
+    }
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/CommitMDStoreVersionJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/CommitMDStoreVersionJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/CommitMDStoreVersionJobNode.java	(revision 60998)
@@ -0,0 +1,53 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+public class CommitMDStoreVersionJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(CommitMDStoreVersionJobNode.class);
+
+    /* Spring managed params */
+    private String mdStoreManagerUrl;
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+        final String url = getMdStoreManagerUrl() + "/version/{versionId}/commit/{size}";
+
+        final Map<String, Object> params = new HashMap<>();
+        params.put("versionId", token.getEnv().getAttribute("versionId"));
+        params.put("size", token.getEnv().getAttribute("mdStoreSize"));
+
+        final URI uri = UriComponentsBuilder.fromUriString(url)
+                .buildAndExpand(params)
+                .toUri();
+
+        final RestTemplate restTemplate = new RestTemplate();
+        restTemplate.getForObject(uri, Void.class);
+
+        log.info("mdstore version committed ");
+        return Arc.DEFAULT_ARC;
+    }
+
+    public String getMdStoreManagerUrl() {
+        return mdStoreManagerUrl;
+    }
+
+    @Required
+    public void setMdStoreManagerUrl(final String mdStoreManagerUrl) {
+        this.mdStoreManagerUrl = mdStoreManagerUrl;
+    }
+}
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/CreateMDStoreHadoopJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/CreateMDStoreHadoopJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/CreateMDStoreHadoopJobNode.java	(revision 60998)
@@ -0,0 +1,127 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.google.gson.Gson;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.rmi.MSROException;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.data.mdstore.manager.common.model.MDStoreWithInfo;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+
+import javax.annotation.Resource;
+
+public class CreateMDStoreHadoopJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(CreateMDStoreHadoopJobNode.class);
+    public static final String MDSTORE_CREATE_URL_AND_PARAMS = "/new/{format}/{layout}/{interpretation}?dsName={dsName}&dsId={dsid}&apiId={apiId}";
+
+    /* Workflow params */
+    private String format;
+    private String layout;
+    private String interpretation;
+    private String outputPrefix = "mdstore";
+
+    /* Spring managed params */
+    private String mdStoreManagerUrl;
+
+    @Resource
+    private UniqueServiceLocator serviceLocator;
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+
+        final String repositoryId = token.getFullEnv().getAttribute(WorkflowsConstants.DATAPROVIDER_ID);
+        final String xquery = String.format(
+                "for $x in collection('/db/DRIVER/RepositoryServiceResources/RepositoryServiceResourceType') \n" +
+                "where .//RESOURCE_IDENTIFIER[./@value='%s']\n" +
+                "return $x//EXTRA_FIELDS/FIELD[./key/text() = 'OpenAireDataSourceId']/value/text()",
+                repositoryId);
+
+        log.info("resolving openaAireDatasourceId: " + xquery);
+
+        final String openAireDataSourceId = serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(xquery);
+
+        if (StringUtils.isBlank(openAireDataSourceId)) {
+            throw new MSROException("unable to find openAireDataSourceId in repository profile " + repositoryId);
+        }
+
+        log.info(String.format("got OpenAIRE datasource id '%s' for repository profile '%s'", openAireDataSourceId, repositoryId));
+
+        final String urlTemplate = getMdStoreManagerUrl() + MDSTORE_CREATE_URL_AND_PARAMS;
+
+        final RestTemplate restTemplate = new RestTemplate();
+        final MDStoreWithInfo result = restTemplate.getForObject(
+                urlTemplate,
+                MDStoreWithInfo.class,
+                getFormat(),
+                getLayout(),
+                getInterpretation(),
+                token.getFullEnv().getAttribute(WorkflowsConstants.DATAPROVIDER_NAME),
+                openAireDataSourceId,
+                token.getFullEnv().getAttribute(WorkflowsConstants.DATAPROVIDER_INTERFACE));
+
+        log.info("created mdstore: " + new Gson().toJson(result));
+
+        token.getEnv().setAttribute(getOutputPrefix() + "format", format);
+        token.getEnv().setAttribute(getOutputPrefix() + "layout", layout);
+        token.getEnv().setAttribute(getOutputPrefix() + "interpretation", interpretation);
+        token.getEnv().setAttribute(getOutputPrefix() + "id", result.getId());
+
+        return Arc.DEFAULT_ARC;
+    }
+
+    public String getFormat() {
+        return format;
+    }
+
+    public void setFormat(final String format) {
+        this.format = format;
+    }
+
+    public String getLayout() {
+        return layout;
+    }
+
+    public void setLayout(final String layout) {
+        this.layout = layout;
+    }
+
+    public String getInterpretation() {
+        return interpretation;
+    }
+
+    public void setInterpretation(final String interpretation) {
+        this.interpretation = interpretation;
+    }
+
+    public String getOutputPrefix() {
+        return outputPrefix;
+    }
+
+    public void setOutputPrefix(final String outputPrefix) {
+        this.outputPrefix = outputPrefix;
+    }
+
+    public String getMdStoreManagerUrl() {
+        return mdStoreManagerUrl;
+    }
+
+    @Required
+    public void setMdStoreManagerUrl(final String mdStoreManagerUrl) {
+        this.mdStoreManagerUrl = mdStoreManagerUrl;
+    }
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/DnetMessageManager.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/DnetMessageManager.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/DnetMessageManager.java	(revision 60998)
@@ -0,0 +1,70 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.message;
+
+import java.util.*;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+
+import eu.dnetlib.dhp.message.Message;
+import eu.dnetlib.msro.rmi.MSROException;
+
+public class DnetMessageManager {
+
+	private static final Log log = LogFactory.getLog(DnetMessageManager.class);
+
+	private final Map<String, Message> ongoingMessages = Collections.synchronizedMap(new LinkedHashMap<>());
+
+	private final Map<String, Message> reportMessages = Collections.synchronizedMap(new LinkedHashMap<>());
+
+	private long maxNumberOfMessages;
+
+	public synchronized void registerMessage(final Message message) throws MSROException {
+		log.debug(String.format("Received %s message wfId: %s", message.getMessageType(), message.getWorkflowId()));
+
+		if (Objects.isNull(message.getMessageType())) {
+			throw new MSROException("missing message type in: " + message.toString());
+		}
+		switch (message.getMessageType()) {
+			case ONGOING:
+				ongoingMessages.put(message.getWorkflowId(), message);
+				if (ongoingMessages.size() > maxNumberOfMessages) {
+					ongoingMessages.remove(ongoingMessages.keySet().iterator().next());
+				}
+				break;
+			case REPORT:
+				reportMessages.put(message.getWorkflowId(), message);
+				if (reportMessages.size() > maxNumberOfMessages) {
+					reportMessages.remove(reportMessages.keySet().iterator().next());
+				}
+				break;
+			default:
+				throw new MSROException("message type not managed: " + message.getMessageType());
+		}
+	}
+
+	public Message findOngoingMessage(final String workflowId) {
+		return ongoingMessages.get(workflowId);
+	}
+
+	public Message findReportMessage(final String workflowId) {
+		return reportMessages.get(workflowId);
+	}
+
+	protected Map<String, Message> getOngoingMessages() {
+		return ongoingMessages;
+	}
+
+	protected Map<String, Message> getReportMessages() {
+		return reportMessages;
+	}
+
+	public long getMaxNumberOfMessages() {
+		return maxNumberOfMessages;
+	}
+
+	@Required
+	public void setMaxNumberOfMessages(final long maxNumberOfMessages) {
+		this.maxNumberOfMessages = maxNumberOfMessages;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/PrepareMDStoreVersionJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/PrepareMDStoreVersionJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/PrepareMDStoreVersionJobNode.java	(revision 60998)
@@ -0,0 +1,67 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.data.mdstore.manager.common.model.MDStoreVersion;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+public class PrepareMDStoreVersionJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(PrepareMDStoreVersionJobNode.class);
+
+    private String mdId;
+
+    /* Spring managed params */
+    private String mdStoreManagerUrl;
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+        final String url = getMdStoreManagerUrl() + "/mdstore/{mdId}/newVersion";
+
+        final Map<String, Object> params = new HashMap<>();
+        params.put("mdId", getMdId());
+
+        final URI uri = UriComponentsBuilder.fromUriString(url)
+                .buildAndExpand(params)
+                .toUri();
+
+        final RestTemplate restTemplate = new RestTemplate();
+        final MDStoreVersion version = restTemplate.getForObject(uri, MDStoreVersion.class);
+
+        log.info("mdstore version prepared " + version.getId());
+
+        token.getEnv().setAttribute("mdId", mdId);
+        token.getEnv().setAttribute("versionId", version.getId());
+
+        return Arc.DEFAULT_ARC;
+    }
+
+    public String getMdStoreManagerUrl() {
+        return mdStoreManagerUrl;
+    }
+
+    @Required
+    public void setMdStoreManagerUrl(final String mdStoreManagerUrl) {
+        this.mdStoreManagerUrl = mdStoreManagerUrl;
+    }
+
+    public String getMdId() {
+        return mdId;
+    }
+
+    public void setMdId(final String mdId) {
+        this.mdId = mdId;
+    }
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/MDStoreToApiExtraFieldHadoopJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/MDStoreToApiExtraFieldHadoopJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/MDStoreToApiExtraFieldHadoopJobNode.java	(revision 60998)
@@ -0,0 +1,123 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp;
+
+import java.net.URI;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.data.mdstore.manager.common.model.MDStoreWithInfo;
+import eu.dnetlib.enabling.datasources.common.LocalDatasourceManager;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+public class MDStoreToApiExtraFieldHadoopJobNode extends SimpleJobNode {
+
+    private String mdId;
+    private String datasourceId;
+    private String datasourceInterface;
+    private String extraFieldForTotal;
+    private String extraFieldForDate;
+    private String extraFieldForMdId;
+
+    /* Spring managed params */
+    private String mdStoreManagerUrl;
+
+    @Autowired
+    private LocalDatasourceManager<?, ?> dsManager;
+
+    private static final Log log = LogFactory.getLog(MDStoreToApiExtraFieldHadoopJobNode.class);
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+
+        final String url = getMdStoreManagerUrl() + "/mdstore/{mdId}";
+
+        final Map<String, Object> params = new HashMap<>();
+        params.put("mdId", getMdId());
+
+        final URI uri = UriComponentsBuilder.fromUriString(url)
+                .buildAndExpand(params)
+                .toUri();
+
+        final RestTemplate restTemplate = new RestTemplate();
+        final MDStoreWithInfo mdstore = restTemplate.getForObject(uri, MDStoreWithInfo.class);
+
+        final int size = Math.toIntExact(mdstore.getSize());
+        final Date date = mdstore.getLastUpdate();
+
+        if (extraFieldForTotal.equals("last_collection_total")) {
+            dsManager.setLastCollectionInfo(datasourceId, datasourceInterface, mdId, size, date);
+        } else if (extraFieldForTotal.equals("last_aggregation_total")) {
+            dsManager.setLastAggregationInfo(datasourceId, datasourceInterface, mdId, size, date);
+        } else {
+            log.warn("Invalid field for total: " + extraFieldForTotal);
+        }
+
+        return Arc.DEFAULT_ARC;
+    }
+
+    public String getMdId() {
+        return mdId;
+    }
+
+    public void setMdId(final String mdId) {
+        this.mdId = mdId;
+    }
+
+    public String getDatasourceId() {
+        return datasourceId;
+    }
+
+    public void setDatasourceId(final String datasourceId) {
+        this.datasourceId = datasourceId;
+    }
+
+    public String getDatasourceInterface() {
+        return datasourceInterface;
+    }
+
+    public void setDatasourceInterface(final String datasourceInterface) {
+        this.datasourceInterface = datasourceInterface;
+    }
+
+    public String getExtraFieldForTotal() {
+        return extraFieldForTotal;
+    }
+
+    public void setExtraFieldForTotal(final String extraFieldForTotal) {
+        this.extraFieldForTotal = extraFieldForTotal;
+    }
+
+    public String getExtraFieldForDate() {
+        return extraFieldForDate;
+    }
+
+    public void setExtraFieldForDate(final String extraFieldForDate) {
+        this.extraFieldForDate = extraFieldForDate;
+    }
+
+    public String getExtraFieldForMdId() {
+        return extraFieldForMdId;
+    }
+
+    public void setExtraFieldForMdId(final String extraFieldForMdId) {
+        this.extraFieldForMdId = extraFieldForMdId;
+    }
+
+    public String getMdStoreManagerUrl() {
+        return mdStoreManagerUrl;
+    }
+
+    public void setMdStoreManagerUrl(final String mdStoreManagerUrl) {
+        this.mdStoreManagerUrl = mdStoreManagerUrl;
+    }
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/EntityGrouperConfigurationLoader.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/EntityGrouperConfigurationLoader.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/EntityGrouperConfigurationLoader.java	(revision 60998)
@@ -0,0 +1,46 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.index;
+
+import java.util.List;
+import javax.annotation.Resource;
+
+import com.google.common.collect.Iterables;
+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.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+
+public class EntityGrouperConfigurationLoader {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(EntityGrouperConfigurationLoader.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	private String xquery;
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	public String load() throws ISLookUpException {
+
+		log.info("loading EntityGrouperConfigurationDSResourceType: " + getXquery());
+
+		List<String> conf = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(getXquery());
+		if (conf == null || conf.isEmpty()) { throw new IllegalStateException("unable to read entity grouper configuration profile"); }
+		if (conf.size() > 1) { throw new IllegalStateException("found more than one EntityGrouperConfigurationDSResourceType"); }
+
+		return Iterables.getOnlyElement(conf).replaceAll("\\s+", " ").trim();
+	}
+
+	public String getXquery() {
+		return xquery;
+	}
+
+	@Required
+	public void setXquery(final String xquery) {
+		this.xquery = xquery;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/PrepareIndexDataJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/PrepareIndexDataJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/PrepareIndexDataJobNode.java	(revision 60998)
@@ -0,0 +1,210 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.index;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.io.StringWriter;
+import javax.annotation.Resource;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpDocumentNotFoundException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.miscutils.datetime.DateUtils;
+import eu.dnetlib.miscutils.functional.hash.Hashing;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.core.io.ClassPathResource;
+
+public class PrepareIndexDataJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(PrepareIndexDataJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	/**
+	 * Stylesheet which transforms a layout to another stylesheet which converts a input record to a index record.
+	 */
+	private String layoutToRecordStylesheet;
+
+	private String outputRecordsPathParam;
+
+	private String rottenRecordsPathParam;
+
+	private String hbaseTable;
+
+	private String oafSchemaLocationProperty;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		log.info("start preparing job");
+
+		final String xslt = prepareXslt(env("format", token), env("layout", token));
+
+		token.getEnv().setAttribute("index.xslt", xslt);
+
+		if (!StringUtils.isBlank(getOutputRecordsPathParam())) {
+			token.getEnv().setAttribute(getOutputRecordsPathParam(), "/tmp" + getFileName(token, "indexrecords"));
+		}
+		if (!StringUtils.isBlank(getRottenRecordsPathParam())) {
+			token.getEnv().setAttribute(getRottenRecordsPathParam(), "/tmp" + getFileName(token, "rottenrecords"));
+		}
+
+		token.getEnv().setAttribute("index.solr.url", getIndexSolrUrlZk());
+		token.getEnv().setAttribute("index.solr.collection", getCollectionName(token));
+
+		token.getEnv().setAttribute("index.shutdown.wait.time", getIndexSolrShutdownWait());
+		token.getEnv().setAttribute("index.buffer.flush.threshold", getIndexBufferFlushTreshold());
+		token.getEnv().setAttribute("index.solr.sim.mode", isFeedingSimulationMode());
+
+		token.getEnv().setAttribute("index.feed.timestamp", DateUtils.now_ISO8601());
+
+		token.getEnv().setAttribute(getOafSchemaLocationProperty(), getPropertyFetcher().getProperty(getOafSchemaLocationProperty()));
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	protected String tableName(final NodeToken token) {
+		if (token.getEnv().hasAttribute("hbaseTable")) {
+			String table = token.getEnv().getAttribute("hbaseTable");
+			log.debug("found override value in wfEnv for 'hbaseTable' param: " + table);
+			return table;
+		}
+		return getHbaseTable();
+	}
+
+	public String getIndexSolrUrlZk() throws ISLookUpException {
+		return getServiceConfigValue(
+				"for $x in /RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='IndexServiceResourceType'] return $x//PROTOCOL[./@name='solr']/@address/string()");
+	}
+
+	public String getIndexSolrShutdownWait() throws ISLookUpException {
+		return queryForServiceProperty("solr:feedingShutdownTolerance");
+	}
+
+	public String getIndexBufferFlushTreshold() throws ISLookUpException {
+		return queryForServiceProperty("solr:feedingBufferFlushThreshold");
+	}
+
+	public String isFeedingSimulationMode() throws ISLookUpException {
+		return queryForServiceProperty("solr:feedingSimulationMode");
+	}
+
+	private String queryForServiceProperty(final String key) throws ISLookUpException {
+		return getServiceConfigValue(
+				"for $x in /RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='IndexServiceResourceType'] return $x//SERVICE_PROPERTIES/PROPERTY[./@ key='"
+						+ key + "']/@value/string()");
+	}
+
+	private String getServiceConfigValue(final String xquery) throws ISLookUpException {
+		log.debug("quering for service property: " + xquery);
+		final String res = serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(xquery);
+		if (StringUtils.isBlank(res)) { throw new IllegalStateException("unable to find unique service property, xquery: " + xquery); }
+		return res;
+	}
+
+	private String getFileName(final NodeToken token, final String fileNamePrefix) {
+		return "/" + fileNamePrefix + "_" + tableName(token) + "_" + token.getEnv().getAttribute("format") + ".seq";
+	}
+
+	private String getCollectionName(final NodeToken token) {
+		return env("format", token) + "-" + env("layout", token) + "-" + env("interpretation", token);
+	}
+
+	private String env(final String s, final NodeToken token) {
+		return token.getEnv().getAttribute(s);
+	}
+
+	/**
+	 * Transforms each OAF record into a index record.
+	 *
+	 * @param format         format
+	 * @param layout         layout
+	 * @return resultset with transformed records
+	 * @throws ISLookUpException    could happen
+	 * @throws IOException          could happen
+	 * @throws TransformerException could happen
+	 */
+	protected String prepareXslt(final String format, final String layout) throws ISLookUpException, IOException, TransformerException {
+
+		final TransformerFactory factory = TransformerFactory.newInstance();
+		final Transformer layoutTransformer = factory.newTransformer(new StreamSource(new StringReader(readXslt(getLayoutToRecordStylesheet()))));
+
+		final StreamResult layoutToXsltXslt = new StreamResult(new StringWriter());
+
+		layoutTransformer.setParameter("format", format);
+		layoutTransformer.transform(new StreamSource(new StringReader(getLayoutSource(format, layout))), layoutToXsltXslt);
+
+		return new String(Hashing.encodeBase64(layoutToXsltXslt.getWriter().toString()));
+	}
+
+	private String readXslt(final String s) throws IOException {
+		ClassPathResource resource = new ClassPathResource(s);
+		InputStream inputStream = resource.getInputStream();
+		return IOUtils.toString(inputStream);
+	}
+
+	private String getLayoutSource(final String format, final String layout) throws ISLookUpDocumentNotFoundException, ISLookUpException {
+		return serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(
+				"collection('')//RESOURCE_PROFILE[.//RESOURCE_TYPE/@value = 'MDFormatDSResourceType' and .//NAME='" + format + "']//LAYOUT[@name='" + layout
+						+ "']");
+	}
+
+	public String getLayoutToRecordStylesheet() {
+		return layoutToRecordStylesheet;
+	}
+
+	public void setLayoutToRecordStylesheet(final String layoutToRecordStylesheet) {
+		this.layoutToRecordStylesheet = layoutToRecordStylesheet;
+	}
+
+	public String getHbaseTable() {
+		return hbaseTable;
+	}
+
+	@Required
+	public void setHbaseTable(final String hbaseTable) {
+		this.hbaseTable = hbaseTable;
+	}
+
+	public String getOutputRecordsPathParam() {
+		return outputRecordsPathParam;
+	}
+
+	public void setOutputRecordsPathParam(final String outputRecordsPathParam) {
+		this.outputRecordsPathParam = outputRecordsPathParam;
+	}
+
+	public String getRottenRecordsPathParam() {
+		return rottenRecordsPathParam;
+	}
+
+	public void setRottenRecordsPathParam(final String rottenRecordsPathParam) {
+		this.rottenRecordsPathParam = rottenRecordsPathParam;
+	}
+
+	public String getOafSchemaLocationProperty() {
+		return oafSchemaLocationProperty;
+	}
+
+	public void setOafSchemaLocationProperty(final String oafSchemaLocationProperty) {
+		this.oafSchemaLocationProperty = oafSchemaLocationProperty;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FinalizeIndexJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FinalizeIndexJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FinalizeIndexJobNode.java	(revision 60998)
@@ -0,0 +1,71 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.index;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.provision.index.rmi.IndexService;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpDocumentNotFoundException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.functionality.index.solr.feed.InputDocumentFactory;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import static java.lang.String.format;
+
+public class FinalizeIndexJobNode extends BlackboardJobNode {
+
+	private static final Log log = LogFactory.getLog(FinalizeIndexJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	@Override
+	protected String obtainServiceId(final NodeToken token) {
+		return getServiceLocator().getServiceId(IndexService.class);
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		final String indexDsId = getEnvParam(token, "index_id");
+
+		log.info("preparing blackboard job DELETE_BY_QUERY index: " + indexDsId);
+
+		final String backendId = getBackendId(indexDsId);
+		if (StringUtils.isBlank(backendId))
+			throw new MSROException("empty index backend Id");
+
+		job.setAction("DELETE_BY_QUERY");
+		job.getParameters().put("id", indexDsId);
+		job.getParameters().put("backend_Id", backendId);
+		job.getParameters().put("query", buildQuery(getEnvParam(token, "index.feed.timestamp")));
+	}
+
+	private String buildQuery(final String version) {
+		final String query =
+				String.format("__dsversion:{* TO %s}", InputDocumentFactory.getParsedDateField(version));
+
+		log.info("delete by query: " + query);
+
+		return query;
+	}
+
+	private String getEnvParam(final NodeToken token, final String name) throws MSROException {
+		final String value = token.getEnv().getAttribute(name);
+
+		if (StringUtils.isBlank(value))
+			throw new MSROException(format("unable to finalize index feeding, cannot find property '%s' in the workflow env.", name));
+
+		return value;
+	}
+
+	public String getBackendId(final String indexDsId) throws ISLookUpDocumentNotFoundException, ISLookUpException {
+		return getServiceLocator().getService(ISLookUpService.class).getResourceProfileByQuery(
+				"//RESOURCE_PROFILE[.//RESOURCE_IDENTIFIER/@value='" + indexDsId + "']//BACKEND/text()");
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PatchHostedBy.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PatchHostedBy.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PatchHostedBy.java	(revision 60998)
@@ -0,0 +1,114 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby;
+
+import java.io.StringReader;
+import java.util.Map;
+
+import eu.dnetlib.miscutils.functional.UnaryFunction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.Node;
+import org.dom4j.io.SAXReader;
+
+/**
+ * The Class PatchHostedBy.
+ */
+public class PatchHostedBy implements UnaryFunction<String, String> {
+
+	/**
+	 * The set spec hosted by map.
+	 */
+	private Map<String, HostedByEntry> setSpecHostedByMap;
+
+	/**
+	 * The counters.
+	 */
+	private HostedByCounters counters;
+
+	/**
+	 * The xpath.
+	 */
+	private String xpath;
+
+	/**
+	 * The reader.
+	 */
+	private final SAXReader reader = new SAXReader();
+
+	/**
+	 * The Constant log.
+	 */
+	private static final Log log = LogFactory.getLog(PatchHostedBy.class);
+
+	/**
+	 * Instantiates a new patch hosted by.
+	 *
+	 * @param setSpecHostedByMap the set spec hosted by map
+	 * @param xpath              the xpath
+	 * @param counters           the counters
+	 */
+	public PatchHostedBy(final Map<String, HostedByEntry> setSpecHostedByMap, final String xpath, final HostedByCounters counters) {
+		this.setSpecHostedByMap = setSpecHostedByMap;
+		this.xpath = xpath;
+		this.counters = counters;
+		if (log.isDebugEnabled()) {
+			log.debug("****************************************");
+			log.debug("SetSpec/hostedBy map:");
+			for (Map.Entry<String, HostedByEntry> e : setSpecHostedByMap.entrySet()) {
+				log.debug("   " + e.getKey() + " -> " + e.getValue());
+			}
+			log.debug("****************************************");
+		}
+	}
+
+	/**
+	 * Evaluate.
+	 *
+	 * @param record the record
+	 * @return the string
+	 */
+	@Override
+	public String evaluate(final String record) {
+		try {
+			final Document doc = reader.read(new StringReader(record));
+			final Element node = (Element) doc.selectSingleNode("//*[local-name()='metadata']/*[local-name()='hostedBy']");
+			if (node != null) {
+				final HostedByEntry ds = findHostedBy(doc);
+				if (ds != null) {
+					node.addAttribute("id", ds.getId());
+					node.addAttribute("name", ds.getName());
+					counters.increaseCounter(ds.getId());
+				}
+				return doc.asXML();
+			} else if (log.isDebugEnabled()) {
+				log.debug(" -- Missing hostedBy --");
+			}
+		} catch (Throwable e) {
+			log.error("Error adding hosted by to "  + e.getMessage()+" on record "+record);
+		}
+		return record;
+	}
+
+	/**
+	 * Find hosted by.
+	 *
+	 * @param doc the doc
+	 * @return the hosted by entry
+	 */
+	private HostedByEntry findHostedBy(final Document doc) {
+		for (Object o : doc.selectNodes(this.xpath)) {
+			final String set = ((Node) o).getText().trim();
+			if (setSpecHostedByMap.containsKey(set)) {
+				if (log.isDebugEnabled()) {
+					log.debug(set + " -> " + setSpecHostedByMap.get(set));
+				}
+				return setSpecHostedByMap.get(set);
+			} else if (log.isDebugEnabled()) {
+				log.debug(set + " -> UNKNOWN REPO");
+			}
+		}
+		return null;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/SwitchIndexJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/SwitchIndexJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/SwitchIndexJobNode.java	(revision 60998)
@@ -0,0 +1,88 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.index;
+
+import java.util.List;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * SwitchIndexJobNode performs index switch.
+ *
+ * @author claudio
+ * @see eu.dnetlib.msro.openaireplus.workflows.nodes.index.SwitchSearchServiceJobNode
+ * @see eu.dnetlib.msro.openaireplus.workflows.nodes.index.SwitchIndexesJobNode
+ * @deprecated
+ */
+@Deprecated
+public class SwitchIndexJobNode extends BlackboardJobNode {
+
+	private static final Log log = LogFactory.getLog(SwitchIndexJobNode.class);
+	private static final String BB_ACTION_SWITCH_INDEX = "UpdateIndex";
+
+	private String inputIndexIdParam;
+
+	private String outputIndexIdParam;
+
+	private String xqueryForServiceIdParam;
+
+	@Override
+	protected String obtainServiceId(final NodeToken token) {
+		final String xquery = token.getEnv().getAttribute(getXqueryForServiceIdParam());
+		List<String> searchServiceIds;
+		try {
+			searchServiceIds = getServiceLocator().getService(ISLookUpService.class).quickSearchProfile(xquery);
+			if (searchServiceIds.size() > 1) throw new RuntimeException("Too many SearchService ids found using query: " + xquery);
+			if (searchServiceIds.size() < 1) throw new RuntimeException("SearchService id not found using query: " + xquery);
+			return searchServiceIds.get(0);
+		} catch (ISLookUpException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		job.setAction(BB_ACTION_SWITCH_INDEX);
+		String indexId = token.getEnv().getAttribute(getInputIndexIdParam());
+
+		checkParam(getInputIndexIdParam(), "output indexId param is missing");
+		checkParam(indexId, "indexId is required to perform switch");
+		log.info("Switching " + obtainServiceId(token) + " to index " + indexId);
+		job.getParameters().put(getOutputIndexIdParam(), indexId);
+	}
+
+	private void checkParam(final String param, final String msg) throws MSROException {
+		if (StringUtils.isBlank(param)) throw new MSROException(msg);
+	}
+
+	public String getInputIndexIdParam() {
+		return inputIndexIdParam;
+	}
+
+	public void setInputIndexIdParam(final String inputIndexIdParam) {
+		this.inputIndexIdParam = inputIndexIdParam;
+	}
+
+	public String getOutputIndexIdParam() {
+		return outputIndexIdParam;
+	}
+
+	public void setOutputIndexIdParam(final String outputIndexIdParam) {
+		this.outputIndexIdParam = outputIndexIdParam;
+	}
+
+	public String getXqueryForServiceIdParam() {
+		return xqueryForServiceIdParam;
+	}
+
+	public void setXqueryForServiceIdParam(final String xqueryForServiceIdParam) {
+		this.xqueryForServiceIdParam = xqueryForServiceIdParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PatchHostedByJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PatchHostedByJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PatchHostedByJobNode.java	(revision 60998)
@@ -0,0 +1,266 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby;
+
+import java.io.StringReader;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.io.SAXReader;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.beans.factory.annotation.Value;
+
+import com.google.common.collect.Maps;
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.enabling.database.rmi.DatabaseException;
+import eu.dnetlib.enabling.database.rmi.DatabaseService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.enabling.resultset.MappedResultSetFactory;
+import eu.dnetlib.enabling.resultset.client.ResultSetClientFactory;
+import eu.dnetlib.enabling.resultset.client.utils.EPRUtils;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+public class PatchHostedByJobNode extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(PatchHostedByJobNode.class);
+	private String inputEprParam;
+	private String outputEprParam;
+	@Value("${dnet.openaire.db.name}")
+	private String dbName;
+	private String countersParam;
+	private String hostedbyMapTable;
+	private String xpathEntry;
+	private String overrideDataSourceId;
+	private String keyTypeFilter;
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+	private MappedResultSetFactory mappedResultSetFactory;
+	private ResultSetClientFactory resultSetClientFactory;
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final W3CEndpointReference inputEpr = new EPRUtils().getEpr(token.getEnv().getAttribute(inputEprParam));
+		final HostedByCounters counters = new HostedByCounters();
+		String datasourceId;
+		if (StringUtils.isEmpty(overrideDataSourceId)) {
+			datasourceId = token.getEnv().getAttribute("parentDatasourceId");
+		} else {
+			datasourceId = getOverrideDataSourceId();
+		}
+
+		Map<String, HostedByEntry> hostedByEntryMap;
+
+		if (!StringUtils.isBlank(keyTypeFilter)) {
+			hostedByEntryMap = loadHostedByMapFromType(keyTypeFilter);
+		} else {
+			hostedByEntryMap = loadHostedByMap(datasourceId);
+		}
+
+		final W3CEndpointReference epr = mappedResultSetFactory.createMappedResultSet(inputEpr, new PatchHostedBy(hostedByEntryMap,
+				getXpathEntry(), counters));
+
+		token.getEnv().setAttribute(outputEprParam, epr.toString());
+		token.getEnv().setTransientAttribute(countersParam, counters);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	private Map<String, HostedByEntry> loadHostedByMap(final String datasourceId) throws DocumentException, DatabaseException {
+		final String sql = "SELECT d.id, d.officialname, p.entry from %s p JOIN dsm_datasources d ON (p.datasourceid = d.id) WHERE p.oa_source_id= '%s'";
+		return getHostedByEntryMapByQuery(datasourceId, sql);
+	}
+
+	private Map<String, HostedByEntry> loadHostedByMapFromType(final String keyType) throws DocumentException, DatabaseException {
+		final String sql = "SELECT d.id, d.officialname, p.entry from %s p JOIN dsm_datasources d ON (p.datasourceid = d.id) WHERE p.key_type= '%s'";
+		return getHostedByEntryMapByQuery(keyType, sql);
+	}
+
+	private Map<String, HostedByEntry> getHostedByEntryMapByQuery(final String datasourceId, final String sql)
+			throws DatabaseException, DocumentException {
+		final Map<String, HostedByEntry> map = Maps.newHashMap();
+		final W3CEndpointReference epr = serviceLocator.getService(DatabaseService.class).searchSQL(getDbName(),
+				String.format(sql, getHostedbyMapTable(), datasourceId));
+		final SAXReader reader = new SAXReader();
+		for (final String s : resultSetClientFactory.getClient(epr)) {
+			final Document doc = reader.read(new StringReader(s));
+			final String entry = doc.valueOf("//FIELD[@name='entry']");
+			final String dsId = doc.valueOf("//FIELD[@name='id']");
+			final String dsName = doc.valueOf("//FIELD[@name='officialname']");
+			map.put(entry, new HostedByEntry(dsId, dsName));
+		}
+		log.info(String.format("built hostedByMap from dsId '%s', size: '%s'", datasourceId, map.size()));
+		return map;
+	}
+
+	/**
+	 * Getter for property 'inputEprParam'.
+	 *
+	 * @return Value for property 'inputEprParam'.
+	 */
+	public String getInputEprParam() {
+		return inputEprParam;
+	}
+
+	/**
+	 * Setter for property 'inputEprParam'.
+	 *
+	 * @param inputEprParam
+	 *            Value to set for property 'inputEprParam'.
+	 */
+	public void setInputEprParam(final String inputEprParam) {
+		this.inputEprParam = inputEprParam;
+	}
+
+	/**
+	 * Getter for property 'outputEprParam'.
+	 *
+	 * @return Value for property 'outputEprParam'.
+	 */
+	public String getOutputEprParam() {
+		return outputEprParam;
+	}
+
+	/**
+	 * Setter for property 'outputEprParam'.
+	 *
+	 * @param outputEprParam
+	 *            Value to set for property 'outputEprParam'.
+	 */
+	public void setOutputEprParam(final String outputEprParam) {
+		this.outputEprParam = outputEprParam;
+	}
+
+	/**
+	 * Getter for property 'dbName'.
+	 *
+	 * @return Value for property 'dbName'.
+	 */
+	public String getDbName() {
+		return dbName;
+	}
+
+	/**
+	 * Setter for property 'dbName'.
+	 *
+	 * @param dbName
+	 *            Value to set for property 'dbName'.
+	 */
+	public void setDbName(final String dbName) {
+		this.dbName = dbName;
+	}
+
+	public String getKeyTypeFilter() {
+		return keyTypeFilter;
+	}
+
+	public void setKeyTypeFilter(final String keyTypeFilter) {
+		this.keyTypeFilter = keyTypeFilter;
+	}
+
+	/**
+	 * Getter for property 'mappedResultSetFactory'.
+	 *
+	 * @return Value for property 'mappedResultSetFactory'.
+	 */
+	public MappedResultSetFactory getMappedResultSetFactory() {
+		return mappedResultSetFactory;
+	}
+
+	/**
+	 * Setter for property 'mappedResultSetFactory'.
+	 *
+	 * @param mappedResultSetFactory
+	 *            Value to set for property 'mappedResultSetFactory'.
+	 */
+	@Required
+	public void setMappedResultSetFactory(final MappedResultSetFactory mappedResultSetFactory) {
+		this.mappedResultSetFactory = mappedResultSetFactory;
+	}
+
+	/**
+	 * Getter for property 'resultSetClientFactory'.
+	 *
+	 * @return Value for property 'resultSetClientFactory'.
+	 */
+	public ResultSetClientFactory getResultSetClientFactory() {
+		return resultSetClientFactory;
+	}
+
+	/**
+	 * Setter for property 'resultSetClientFactory'.
+	 *
+	 * @param resultSetClientFactory
+	 *            Value to set for property 'resultSetClientFactory'.
+	 */
+	@Required
+	public void setResultSetClientFactory(final ResultSetClientFactory resultSetClientFactory) {
+		this.resultSetClientFactory = resultSetClientFactory;
+	}
+
+	/**
+	 * Getter for property 'countersParam'.
+	 *
+	 * @return Value for property 'countersParam'.
+	 */
+	public String getCountersParam() {
+		return countersParam;
+	}
+
+	/**
+	 * Setter for property 'countersParam'.
+	 *
+	 * @param countersParam
+	 *            Value to set for property 'countersParam'.
+	 */
+	public void setCountersParam(final String countersParam) {
+		this.countersParam = countersParam;
+	}
+
+	/**
+	 * @return the hostedbyMapTable
+	 */
+	public String getHostedbyMapTable() {
+		return hostedbyMapTable;
+	}
+
+	/**
+	 * @param hostedbyMapTable
+	 *            the hostedbyMapTable to set
+	 */
+	public void setHostedbyMapTable(final String hostedbyMapTable) {
+		this.hostedbyMapTable = hostedbyMapTable;
+	}
+
+	public String getXpathEntry() {
+		return xpathEntry;
+	}
+
+	public void setXpathEntry(final String xpathEntry) {
+		this.xpathEntry = xpathEntry;
+	}
+
+	/**
+	 * @return the overrideDataSourceId
+	 */
+	public String getOverrideDataSourceId() {
+		return overrideDataSourceId;
+	}
+
+	/**
+	 * @param overrideDataSourceId
+	 *            the overrideDataSourceId to set
+	 */
+	public void setOverrideDataSourceId(final String overrideDataSourceId) {
+		this.overrideDataSourceId = overrideDataSourceId;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/HostedByCounters.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/HostedByCounters.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/HostedByCounters.java	(revision 60998)
@@ -0,0 +1,36 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby;
+
+import java.io.StringWriter;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import com.google.common.collect.Maps;
+
+public class HostedByCounters {
+
+	private Map<String, Integer> counters = Maps.newHashMap();
+
+	public void increaseCounter(final String dsId) {
+		int val = counters.containsKey(dsId) ? counters.get(dsId) + 1 : 1;
+		counters.put(dsId, val);
+	}
+
+	public Map<String, Integer> getCounters() {
+		return counters;
+	}
+
+	@Override
+	public String toString() {
+		final StringWriter sw = new StringWriter();
+		sw.append("\n");
+		sw.append("**************************************************\n");
+		for (Entry<String, Integer> e : counters.entrySet()) {
+			sw.append(e.getKey());
+			sw.append(" : ");
+			sw.append(Integer.toString(e.getValue()));
+			sw.append("\n");
+		}
+		sw.append("**************************************************\n");
+		return sw.toString();
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ProcessContextsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ProcessContextsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ProcessContextsJobNode.java	(revision 60998)
@@ -0,0 +1,112 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.contexts;
+
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.resultset.client.ResultSetClientFactory;
+import eu.dnetlib.msro.workflows.nodes.ProgressJobNode;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.resultset.ProcessCountingResultSetFactory;
+import eu.dnetlib.msro.workflows.util.ProgressProvider;
+import eu.dnetlib.msro.workflows.util.ResultsetProgressProvider;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class ProcessContextsJobNode extends SimpleJobNode implements ProgressJobNode {
+
+	private static final Log log = LogFactory.getLog(ProcessContextsJobNode.class);
+
+	private String eprParam;
+	private String contextObj;
+	private ResultsetProgressProvider progressProvider;
+	private String contextId;
+	private String contextLabel;
+	private String contextType;
+
+	private String contextParams;
+	private String dashboardVisibility;
+
+	@Resource
+	private ResultSetClientFactory resultSetClientFactory;
+
+	@Resource
+	private ProcessCountingResultSetFactory processCountingResultSetFactory;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		final String epr = token.getEnv().getAttribute(eprParam);
+
+		this.progressProvider = processCountingResultSetFactory.createProgressProvider(token.getProcess(), epr);
+
+		final Iterable<String> iter = resultSetClientFactory.getClient(progressProvider.getEpr());
+
+		final ContextDesc context = ContextUtils.getContext(iter, getContextId(), getContextLabel(), getContextType(), getContextParams(), getDashboardVisibility());
+
+		token.getEnv().setTransientAttribute(contextObj, context);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getEprParam() {
+		return eprParam;
+	}
+
+	public void setEprParam(final String eprParam) {
+		this.eprParam = eprParam;
+	}
+
+	public String getContextObj() {
+		return contextObj;
+	}
+
+	public void setContextObj(final String contextObj) {
+		this.contextObj = contextObj;
+	}
+
+	@Override
+	public ProgressProvider getProgressProvider() {
+		return progressProvider;
+	}
+
+	public String getContextId() {
+		return contextId;
+	}
+
+	public void setContextId(final String contextId) {
+		this.contextId = contextId;
+	}
+
+	public String getContextLabel() {
+		return contextLabel;
+	}
+
+	public void setContextLabel(final String contextLabel) {
+		this.contextLabel = contextLabel;
+	}
+
+	public String getContextType() {
+		return contextType;
+	}
+
+	public void setContextType(final String contextType) {
+		this.contextType = contextType;
+	}
+
+	public String getContextParams() {
+		return contextParams;
+	}
+
+	public void setContextParams(final String contextParams) {
+		this.contextParams = contextParams;
+	}
+
+	public String getDashboardVisibility() {
+		return dashboardVisibility;
+	}
+
+	public void setDashboardVisibility(final String dashboardVisibility) {
+		this.dashboardVisibility = dashboardVisibility;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextPart.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextPart.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextPart.java	(revision 60998)
@@ -0,0 +1,83 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.contexts;
+
+import java.util.Map;
+import java.util.Map.Entry;
+
+import com.google.common.collect.Maps;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
+public class ContextPart {
+
+	private String id;
+	private String label;
+	private Map<String, String> params = Maps.newLinkedHashMap();
+	private Map<String, ContextPart> parts = Maps.newLinkedHashMap();
+
+	public ContextPart() {
+	}
+
+	public ContextPart(final String id, final String label) {
+		this.id = id;
+		this.label = label;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(final String id) {
+		this.id = id;
+	}
+
+	public String getLabel() {
+		return label;
+	}
+
+	public void setLabel(final String label) {
+		this.label = label;
+	}
+
+	public Map<String, String> getParams() {
+		return params;
+	}
+
+	public void setParams(final Map<String, String> params) {
+		this.params = params;
+	}
+
+	public Map<String, ContextPart> getParts() {
+		return parts;
+	}
+
+	public void setParts(final Map<String, ContextPart> parts) {
+		this.parts = parts;
+	}
+
+	public void addPart(final ContextPart part) {
+		if (parts.containsKey(part.getId())) {
+			final ContextPart localChild = getParts().get(part.getId());
+			for (ContextPart child : part.getParts().values()) {
+				localChild.addPart(child);
+			}
+		} else {
+			parts.put(part.getId(), part);
+		}
+	}
+
+	public Element asDomElement(final String name) {
+		final Element elem = DocumentHelper.createElement(name);
+		elem.addAttribute("id", id);
+		elem.addAttribute("label", label);
+		elem.addAttribute("claim", "false");
+		for (Entry<String, String> e : params.entrySet()) {
+			final Element p = elem.addElement("param");
+			p.addAttribute("name", e.getKey());
+			p.setText(e.getValue());
+		}
+		for (ContextPart child : parts.values()) {
+			elem.add(child.asDomElement("concept"));
+		}
+		return elem;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/OpenaireMdBuilderJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/OpenaireMdBuilderJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/OpenaireMdBuilderJobNode.java	(revision 60998)
@@ -0,0 +1,223 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import javax.annotation.Resource;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.enabling.resultset.XSLTMappedResultSetFactory;
+import eu.dnetlib.enabling.resultset.client.utils.EPRUtils;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.antlr.stringtemplate.StringTemplate;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+public class OpenaireMdBuilderJobNode extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(OpenaireMdBuilderJobNode.class);
+
+	private StringTemplate mdBuilderTemplateXslt;
+
+	private String inputEprParam;
+	private String outputEprParam;
+	private String datasourceId;
+	private String datasourceInterface;
+
+	private boolean inferred = false;
+	private boolean deletedbyinference = false;
+	private String inferenceprovenance = "";
+	private String trust = "";
+	private String provenanceactionclassname = "";
+	private String provenanceactionclassid = "";
+
+	private String overridingMetadataIdentifierXPath = "";
+
+	private XSLTMappedResultSetFactory xsltMappedResultSetFactory;
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Override
+	protected String execute(final NodeToken token) throws MSROException {
+		final String inputEpr = token.getEnv().getAttribute(inputEprParam);
+
+		if ((inputEpr == null) || inputEpr.isEmpty()) throw new MSROException("InputEprParam (" + inputEprParam + ") not found in ENV");
+		final StringTemplate st = new StringTemplate(getMdBuilderTemplateXslt().getTemplate());
+		try {
+			st.setAttribute("xpath", getMetadataIdentifierXPath());
+			st.setAttribute("datasourceId", datasourceId);
+			if (token.getEnv().hasAttribute("namespacePrefix")) {
+				st.setAttribute("namespacePrefix", token.getEnv().getAttribute("namespacePrefix"));
+			} else {
+				st.setAttribute("namespacePrefix", datasourceId);
+			}
+
+			st.setAttribute("inferred", String.valueOf(getInferred()));
+			st.setAttribute("deletedbyinference", String.valueOf(getDeletedbyinference()));
+			st.setAttribute("inferenceprovenance", getInferenceprovenance());
+			st.setAttribute("trust", getTrust());
+			st.setAttribute("provenanceactionclassname", getProvenanceactionclassname());
+			st.setAttribute("provenanceactionclassid", getProvenanceactionclassid());
+			st.setAttribute("baseurl", URLEncoder.encode(getBaseUrl(), "UTF-8"));
+			st.setAttribute("metadatanamespace", getMetadataNamespace());
+
+			final W3CEndpointReference epr = xsltMappedResultSetFactory.createMappedResultSet(new EPRUtils().getEpr(inputEpr), st.toString());
+
+			token.getEnv().setAttribute(outputEprParam, epr.toString());
+
+			return Arc.DEFAULT_ARC;
+		} catch (ISLookUpException e) {
+			throw new MSROException("Error while initializing mdBuilder template for datasource " + datasourceId, e);
+		} catch (UnsupportedEncodingException e) {
+			log.error("Cannot encode baseUrl in UTF-8");
+			throw new MSROException(e);
+		}
+	}
+
+	private String getMetadataIdentifierXPath() throws ISLookUpException {
+		String xQuery =
+				String.format("for $x in collection('/db/DRIVER/RepositoryServiceResources/RepositoryServiceResourceType') "
+						+ "return $x//INTERFACE[@id='%s']/INTERFACE_EXTRA_FIELD[@name='metadata_identifier_path']/string()", getDatasourceInterface());
+
+		return hasOverridingMetadataIdentifierXPath() ? getOverridingMetadataIdentifierXPath() : serviceLocator.getService(ISLookUpService.class)
+				.getResourceProfileByQuery(xQuery);
+	}
+
+	private String getBaseUrl() throws ISLookUpException {
+		String xQuery = "/*[.//RESOURCE_IDENTIFIER/@value='{datasourceId}']//INTERFACE[@id='{interfaceId}']//BASE_URL/string()";
+		xQuery = xQuery.replace("{interfaceId}", datasourceInterface).replace("{datasourceId}", datasourceId);
+		return serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(xQuery);
+	}
+
+	private String getMetadataNamespace() {
+		try {
+			String xQuery =
+					"let $x := /*[.//RESOURCE_IDENTIFIER/@value='{datasourceId}']//INTERFACE[@id='{interfaceId}']/ACCESS_PROTOCOL/@format/string() "
+							+ "return /*[.//RESOURCE_TYPE/@value='MetadataFormatDSResourceType']//METADATAFORMAT[@Prefix=$x]/@NameSpace/string()";
+			xQuery = xQuery.replace("{interfaceId}", datasourceInterface).replace("{datasourceId}", datasourceId);
+			return serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(xQuery);
+		} catch (ISLookUpException e) {
+			log.error("The interface is not OAI or the format is not found in the MetadataFormatDSResourceType, thus metadata format in the <about> section "
+					+ "cannot managed here and it will be leaved empty (for the time being)");
+			return "";
+		}
+	}
+
+	private boolean hasOverridingMetadataIdentifierXPath() {
+		return !getOverridingMetadataIdentifierXPath().isEmpty();
+	}
+
+	public String getInputEprParam() {
+		return inputEprParam;
+	}
+
+	public void setInputEprParam(final String inputEprParam) {
+		this.inputEprParam = inputEprParam;
+	}
+
+	public String getOutputEprParam() {
+		return outputEprParam;
+	}
+
+	public void setOutputEprParam(final String outputEprParam) {
+		this.outputEprParam = outputEprParam;
+	}
+
+	public XSLTMappedResultSetFactory getXsltMappedResultSetFactory() {
+		return xsltMappedResultSetFactory;
+	}
+
+	public String getDatasourceId() {
+		return datasourceId;
+	}
+
+	public void setDatasourceId(final String datasourceId) {
+		this.datasourceId = datasourceId;
+	}
+
+	public String getDatasourceInterface() {
+		return datasourceInterface;
+	}
+
+	public void setDatasourceInterface(final String datasourceInterface) {
+		this.datasourceInterface = datasourceInterface;
+	}
+
+	@Required
+	public void setXsltMappedResultSetFactory(final XSLTMappedResultSetFactory xsltMappedResultSetFactory) {
+		this.xsltMappedResultSetFactory = xsltMappedResultSetFactory;
+	}
+
+	public StringTemplate getMdBuilderTemplateXslt() {
+		return mdBuilderTemplateXslt;
+	}
+
+	public void setMdBuilderTemplateXslt(final StringTemplate mdBuilderTemplateXslt) {
+		this.mdBuilderTemplateXslt = mdBuilderTemplateXslt;
+	}
+
+	public boolean getInferred() {
+		return inferred;
+	}
+
+	public void setInferred(final boolean inferred) {
+		this.inferred = inferred;
+	}
+
+	public boolean getDeletedbyinference() {
+		return deletedbyinference;
+	}
+
+	public void setDeletedbyinference(final boolean deletedbyinference) {
+		this.deletedbyinference = deletedbyinference;
+	}
+
+	public String getInferenceprovenance() {
+		return inferenceprovenance;
+	}
+
+	public void setInferenceprovenance(final String inferenceprovenance) {
+		this.inferenceprovenance = inferenceprovenance;
+	}
+
+	public String getTrust() {
+		return trust;
+	}
+
+	public void setTrust(final String trust) {
+		this.trust = trust;
+	}
+
+	public String getProvenanceactionclassname() {
+		return provenanceactionclassname;
+	}
+
+	public void setProvenanceactionclassname(final String provenanceactionclassname) {
+		this.provenanceactionclassname = provenanceactionclassname;
+	}
+
+	public String getProvenanceactionclassid() {
+		return provenanceactionclassid;
+	}
+
+	public void setProvenanceactionclassid(final String provenanceactionclassid) {
+		this.provenanceactionclassid = provenanceactionclassid;
+	}
+
+	public String getOverridingMetadataIdentifierXPath() {
+		return overridingMetadataIdentifierXPath;
+	}
+
+	public void setOverridingMetadataIdentifierXPath(final String overridingMetadataIdentifierXPath) {
+		this.overridingMetadataIdentifierXPath = overridingMetadataIdentifierXPath;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FetchOntologiesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FetchOntologiesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FetchOntologiesJobNode.java	(revision 60998)
@@ -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/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ClaimDatabaseUtils.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ClaimDatabaseUtils.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ClaimDatabaseUtils.java	(revision 60998)
@@ -0,0 +1,76 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.claims;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+import java.util.Spliterator;
+import java.util.Spliterators;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
+import javax.annotation.PostConstruct;
+
+import eu.dnetlib.enabling.database.DataSourceFactory;
+import eu.dnetlib.enabling.database.utils.JdbcTemplateFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.support.rowset.SqlRowSet;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by Alessia Bardi on 23/06/2017.
+ *
+ * @author Alessia Bardi
+ */
+@Component
+public class ClaimDatabaseUtils {
+
+	@Autowired
+	private JdbcTemplateFactory claimsJdbcTemplateFactory;
+	@Autowired
+	private DataSourceFactory claimsDataSourceFactory;
+
+	private JdbcTemplate jdbcTemplate;
+
+	@Value("${dnet.openaire.claims.db.name}")
+	private String dbName;
+
+	@PostConstruct
+	public void init() {
+		claimsJdbcTemplateFactory.setDataSourceFactory(claimsDataSourceFactory);
+		this.jdbcTemplate = claimsJdbcTemplateFactory.createJdbcTemplate(dbName);
+	}
+
+	public int count(final String sqlCountQuery) {
+		return jdbcTemplate.queryForObject(sqlCountQuery, Integer.class);
+	}
+
+	public Stream<Claim> query(final String sqlQuery) {
+		final SqlRowSet rowSet = jdbcTemplate.queryForRowSet(sqlQuery);
+		return StreamSupport.stream(
+				Spliterators.spliteratorUnknownSize(
+					new Iterator<Claim>() {
+
+						@Override
+						public boolean hasNext() {
+							return !rowSet.isLast();
+						}
+
+						@Override
+						public Claim next() {
+							if (!rowSet.next()) {
+								throw new NoSuchElementException();
+							}
+							return asClaim(rowSet);
+						}
+					},
+					Spliterator.IMMUTABLE), false);
+	}
+
+	private Claim asClaim(SqlRowSet rs) {
+		return new Claim()
+				.setSemantics(rs.getString("semantics"))
+				.setSource(rs.getString("source_id")).setSourceType(rs.getString("source_type"))
+				.setTarget(rs.getString("target_id")).setTargetType(rs.getString("target_type"));
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryOrganizationsFromOpenOrgsDB.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryOrganizationsFromOpenOrgsDB.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryOrganizationsFromOpenOrgsDB.sql	(revision 60998)
@@ -0,0 +1,53 @@
+SELECT
+	o.id                                                                                                                          AS organizationid,
+	coalesce((array_agg(a.acronym))[1], o.name)                                                                                   AS legalshortname,
+	o.name                                                                                                                        AS legalname,
+	array_agg(DISTINCT n.name)                                                                                                    AS "alternativeNames",
+	(array_agg(u.url))[1]                                                                                                         AS websiteurl,
+	o.modification_date                                                                                                           AS dateoftransformation,
+	false                                                                                                                         AS inferred,
+	false                                                                                                                         AS deletedbyinference,
+	0.95                                                                                                                          AS trust,
+	''                                                                                                                            AS inferenceprovenance,
+	'openaire____::openorgs'                                                                                                      AS collectedfromid,
+	'OpenOrgs Database'                                                                                                           AS collectedfromname,
+	o.country || '@@@dnet:countries'                                                                                              AS country,
+	'sysimport:crosswalk:entityregistry@@@sysimport:crosswalk:entityregistry@@@dnet:provenance_actions@@@dnet:provenance_actions' AS provenanceaction,
+	array_agg(DISTINCT i.otherid || '###' || i.type || '@@@dnet:pid_types')                                                       AS pid
+FROM organizations o
+	LEFT OUTER JOIN acronyms a    ON (a.id = o.id)
+	LEFT OUTER JOIN urls u        ON (u.id = o.id)
+	LEFT OUTER JOIN other_ids i   ON (i.id = o.id)
+	LEFT OUTER JOIN other_names n ON (n.id = o.id)
+GROUP BY
+	o.id,
+	o.name,
+	o.modification_date,
+	o.country
+	
+UNION ALL
+	
+SELECT
+	'openorgsmesh'||substring(o.id, 13)||'-'||md5(n.name)                                                                         AS organizationid,
+	n.name                                                                                                                        AS legalshortname,
+	n.name                                                                                                                        AS legalname,
+	ARRAY[]::text[]                                                                                                               AS "alternativeNames",
+	(array_agg(u.url))[1]                                                                                                         AS websiteurl,
+	o.modification_date                                                                                                           AS dateoftransformation,
+	false                                                                                                                         AS inferred,
+	false                                                                                                                         AS deletedbyinference,
+	0.88                                                                                                                          AS trust,
+	''                                                                                                                            AS inferenceprovenance,
+	'openaire____::openorgs'                                                                                                      AS collectedfromid,
+	'OpenOrgs Database'                                                                                                           AS collectedfromname,
+	o.country || '@@@dnet:countries'                                                                                              AS country,
+	'sysimport:crosswalk:entityregistry@@@sysimport:crosswalk:entityregistry@@@dnet:provenance_actions@@@dnet:provenance_actions' AS provenanceaction,
+	array_agg(DISTINCT i.otherid || '###' || i.type || '@@@dnet:pid_types')                                                       AS pid
+FROM other_names n
+	LEFT OUTER JOIN organizations o ON (n.id = o.id)
+	LEFT OUTER JOIN urls u          ON (u.id = o.id)
+	LEFT OUTER JOIN other_ids i     ON (i.id = o.id)
+GROUP BY
+	o.id, o.modification_date, o.country, n.name
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/HostedByEntry.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/HostedByEntry.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/HostedByEntry.java	(revision 60998)
@@ -0,0 +1,34 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby;
+
+public class HostedByEntry {
+
+	private String id;
+	private String name;
+
+	public HostedByEntry(String id, String name) {
+		this.id = id;
+		this.name = name;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	@Override
+	public String toString() {
+		return "[ id: " + id + ", name: " + name + " ]";
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextUtils.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextUtils.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextUtils.java	(revision 60998)
@@ -0,0 +1,186 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.contexts;
+
+import java.io.StringReader;
+import java.lang.reflect.Type;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Maps;
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.*;
+import org.dom4j.io.SAXReader;
+
+/**
+ * Created by claudio on 01/03/16.
+ */
+public class ContextUtils {
+
+	private static final Log log = LogFactory.getLog(ContextUtils.class);
+	private static final String DASHBOARD_VISIBILITY = "status";
+
+	public static ContextDesc getContext(final Iterable<String> it,
+			final String contextId,
+			final String contextLabel,
+			final String contextType,
+			final String params, final String dashboardVisibility) throws
+			DocumentException {
+
+		final Map<String, String> paramMap = getParamMap(params);
+		paramMap.put(DASHBOARD_VISIBILITY, dashboardVisibility);
+		return new ContextUtils().getContextDesc(it, contextId, contextLabel, contextType, paramMap);
+	}
+
+	private static Map<String, String> getParamMap(String jsonMap) {
+		Map<String, String> paramMap = Maps.newHashMap();
+
+		if (StringUtils.isNotBlank(jsonMap)) {
+			Type mapType = new TypeToken<Map<String, String>>() {
+			}.getType();
+			paramMap = new Gson().fromJson(jsonMap, mapType);
+		}
+		return paramMap;
+	}
+
+	private ContextDesc getContextDesc(final Iterable<String> it,
+			final String contextId,
+			final String contextLabel,
+			final String contextType,
+			final Map<String, String> params) throws
+			DocumentException {
+		final ContextDesc context = new ContextDesc(contextId, contextLabel, contextType, params);
+		final SAXReader reader = new SAXReader();
+
+		for (String s : it) {
+			populateContext(context, reader, s);
+		}
+		return context;
+	}
+
+	private void populateContext(final ContextDesc context, final SAXReader reader, final String s) throws DocumentException {
+		final Document doc = reader.read(new StringReader(s));
+
+		for (Object o : doc.selectNodes("//fundingtree")) {
+			final Element treeNode = (Element) o;
+
+			final String funder = treeNode.valueOf("./funder/id");
+			if (StringUtils.isBlank(funder)) {
+				log.debug("No funder found, skipping population from the following XML: \n" + s);
+				return;
+			}
+			if (!context.getDbEntries().containsKey(funder)) {
+				log.info("Found funder: " + funder);
+				context.getDbEntries().put(funder, "<fundingtree>" + treeNode.selectSingleNode("./funder").asXML() + "</fundingtree>");
+				log.debug("db entry: " + context.getDbEntries().get(funder));
+			}
+
+			final String openaireId = treeNode.valueOf("./*[starts-with(local-name(),'funding_level_')]/id");
+			if (!context.getDbEntries().containsKey(openaireId) && StringUtils.isNotBlank(openaireId)) {
+				log.info("Found funding: " + openaireId);
+				context.getDbEntries().put(openaireId, treeNode.asXML());
+				log.debug("db entry: " + context.getDbEntries().get(openaireId));
+				final Node node0 = treeNode.selectSingleNode(".//funding_level_0");
+				if (node0 != null) {
+					final ContextPart part = calculatePart(node0);
+					if (context.getCategories().containsKey(part.getId())) {
+						for (ContextPart p : part.getParts().values()) {
+							context.getCategories().get(part.getId()).addPart(p);
+						}
+					} else {
+						context.getCategories().put(part.getId(), part);
+					}
+				}
+			}
+		}
+	}
+
+	private ContextPart calculatePart(final Node node) {
+
+		// final String newId = contextId + "::" + StringUtils.substringAfter(node.valueOf("./id"), "::");
+		// ids are built as: nsPrefix :: funderID :: fundingLevel0ID :: etc etc, hence it seems we might not need the contextId parameter.
+		final String newId = StringUtils.substringAfter(node.valueOf("./id"), "::");
+
+		final ContextPart part = new ContextPart(newId, node.valueOf("./description"));
+
+		part.getParams().put("name", node.valueOf("./name"));
+		part.getParams().put("openaireId", node.valueOf("./id"));
+		part.getParams().put("class", node.valueOf("./class"));
+
+		final Element parent = node.getParent() != null ? node.getParent().getParent() : null;
+
+		if (parent != null && parent.getName().startsWith("funding_level_")) {
+			final ContextPart p = calculatePart(parent);
+			part.getParts().put(p.getId(), p);
+		}
+		return part;
+	}
+
+	public static Function<Entry<String, String>, String> getContextRowTransformer() {
+
+		return new Function<Entry<String, String>, String>() {
+
+			private final SAXReader reader = new SAXReader();
+
+			@Override
+			public String apply(final Entry<String, String> e) {
+				try {
+					final Document docFundingPath = reader.read(new StringReader(e.getValue()));
+
+					final Element root = DocumentHelper.createElement("ROWS");
+
+					final Map<String, String> fundingFields = Maps.newLinkedHashMap();
+					fundingFields.put("_dnet_resource_identifier_", e.getKey());
+					fundingFields.put("id", e.getKey());
+					fundingFields.put("path", e.getValue());
+					fundingFields.put("jurisdiction", docFundingPath.valueOf("//funder/jurisdiction"));
+					final String desc = docFundingPath.valueOf("(//*[starts-with(local-name(),'funding_level_')])[1]/description");
+					if (StringUtils.isNotBlank(desc)) {
+						fundingFields.put("description", desc);
+					}
+					final Map<String, String> orgFields = findFunderInfo(docFundingPath);
+					final String orgId = orgFields.get("id");
+					if (StringUtils.isNotBlank(orgId)) {
+						addRow(root, "dsm_organizations", orgFields);
+						fundingFields.put("funder", orgId);
+					}
+
+					addRow(root, "fundingpaths", fundingFields);
+
+					if (log.isDebugEnabled()) {
+						log.debug("Db entries: " + root.asXML());
+					}
+
+					return root.asXML();
+				} catch (DocumentException e1) {
+					log.error("Error parsing xml", e1);
+					throw new RuntimeException("Error parsing xml", e1);
+				}
+			}
+
+			private Map<String, String> findFunderInfo(final Document doc) {
+				final Map<String, String> res = Maps.newLinkedHashMap();
+				res.put("_dnet_resource_identifier_", doc.valueOf("//funder/id"));
+				res.put("id", doc.valueOf("//funder/id"));
+				res.put("legalshortname", doc.valueOf("//funder/shortname"));
+				res.put("legalname", doc.valueOf("//funder/name"));
+				res.put("country", doc.valueOf("//funder/jurisdiction"));
+				return res;
+			}
+
+			private void addRow(final Element root, final String table, final Map<String, String> fields) {
+				final Element row = root.addElement("ROW");
+				row.addAttribute("table", table);
+				for (Map.Entry<String, String> e : fields.entrySet()) {
+					final Element pathField = row.addElement("FIELD");
+					pathField.addAttribute("name", e.getKey());
+					pathField.setText(e.getValue());
+				}
+			}
+		};
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/PrepareContextDbEntriesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/PrepareContextDbEntriesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/PrepareContextDbEntriesJobNode.java	(revision 60998)
@@ -0,0 +1,53 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.contexts;
+
+import javax.annotation.Resource;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import com.google.common.collect.Iterables;
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.resultset.IterableResultSetFactory;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class PrepareContextDbEntriesJobNode extends SimpleJobNode {
+
+	private String contextObj;
+	private String eprParam;
+
+	private static final Log log = LogFactory.getLog(PrepareContextDbEntriesJobNode.class);
+
+	@Resource
+	private IterableResultSetFactory iterableResultSetFactory;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		final ContextDesc desc = (ContextDesc) token.getEnv().getTransientAttribute(contextObj);
+
+		final Iterable<String> iter = Iterables.transform(desc.getDbEntries().entrySet(), ContextUtils.getContextRowTransformer());
+		final W3CEndpointReference epr = iterableResultSetFactory.createIterableResultSet(iter);
+
+		token.getEnv().setAttribute(eprParam, epr.toString());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getContextObj() {
+		return contextObj;
+	}
+
+	public void setContextObj(final String contextObj) {
+		this.contextObj = contextObj;
+	}
+
+	public String getEprParam() {
+		return eprParam;
+	}
+
+	public void setEprParam(final String eprParam) {
+		this.eprParam = eprParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/IncrementalOperationJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/IncrementalOperationJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/IncrementalOperationJobNode.java	(revision 60998)
@@ -0,0 +1,100 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.common.logging.DnetLogger;
+import eu.dnetlib.miscutils.datetime.DateUtils;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class IncrementalOperationJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(IncrementalOperationJobNode.class);
+
+    //incremental or refresh
+    private String operationType;
+
+    @Autowired
+    private DnetLogger dnetLogger;
+
+    @Override
+    protected String execute(NodeToken nodeToken) throws Exception {
+
+        if ("incremental".equalsIgnoreCase(operationType)) {
+            final String currentWfProfileId = findCurrentWfProfileId(nodeToken);
+            final Long lastSuccessStartDate = findLastSuccessStartDate(currentWfProfileId);
+            if(forceRefresh(nodeToken, lastSuccessStartDate, currentWfProfileId)) return Arc.DEFAULT_ARC;
+            log.info("Last success start date "+ lastSuccessStartDate);
+
+            nodeToken.getFullEnv().setAttribute("OperationTypeInfo", "Operation type set to INCREMENTAL with date "+DateUtils.calculate_ISO8601(lastSuccessStartDate));
+            nodeToken.getFullEnv().setAttribute("operationType", "INCREMENTAL");
+            nodeToken.getFullEnv().setAttribute("DateFromFilter", lastSuccessStartDate);
+            return Arc.DEFAULT_ARC;
+        }
+        nodeToken.getFullEnv().setAttribute("operationType", "REFRESH");
+        nodeToken.getFullEnv().setAttribute("OperationTypeInfo", "Operation type manually set to REFRESH");
+        return Arc.DEFAULT_ARC;
+    }
+
+    protected boolean forceRefresh(final NodeToken nodeToken, final Long lastSuccessStartDate, final String currentWfProfileId) throws Exception {
+        if (lastSuccessStartDate < 0) {
+            nodeToken.getFullEnv().setAttribute("OperationTypeInfo", "Last success start date < 0, operation forced to REFRESH");
+            nodeToken.getFullEnv().setAttribute("operationType", "REFRESH");
+            return true;
+        }
+        return false;
+    }
+
+    private Long findLastSuccessStartDate(String profId) {
+        long res = -1;
+
+        final Iterator<Map<String, String>> iter = dnetLogger.find(WorkflowsConstants.SYSTEM_WF_PROFILE_ID, profId);
+        while (iter.hasNext()) {
+            final Map<String, String> map = iter.next();
+            if ("true".equalsIgnoreCase(map.get(WorkflowsConstants.SYSTEM_COMPLETED_SUCCESSFULLY))) {
+                final long curr = NumberUtils.toLong(map.get(WorkflowsConstants.SYSTEM_START_DATE), -1);
+                if (curr > res) {
+                    res = curr;
+                }
+            }
+        }
+        log.debug("D-Net logger says the last success end date was on "+res);
+        return res;
+    }
+
+    private String findCurrentWfProfileId(NodeToken token) throws MSROException {
+        log.debug("Start to find the current profile Id");
+        final String p1 = token.getEnv().getAttribute(WorkflowsConstants.SYSTEM_WF_PROFILE_ID);
+        if (p1 != null && !p1.isEmpty()) {
+            log.debug("The profile Id found is "+p1);
+            return p1;
+        }
+        final String p2 = token.getFullEnv().getAttribute(WorkflowsConstants.SYSTEM_WF_PROFILE_ID);
+        if (p2 != null && !p2.isEmpty()) {
+            log.debug("The profile Id found is "+p2);
+            return p2;
+        }
+        final String p3 = token.getProcess().getEnv().getAttribute(WorkflowsConstants.SYSTEM_WF_PROFILE_ID);
+        if (p3 != null && !p3.isEmpty()) {
+            log.debug("The profile Id found is "+p3);
+            return p3;
+        }
+        throw new MSROException("Missing property in env: " + WorkflowsConstants.SYSTEM_WF_PROFILE_ID);
+    }
+
+    public String getOperationType() {
+        return operationType;
+    }
+
+    public void setOperationType(final String operationType) {
+        this.operationType = operationType;
+    }
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextDesc.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextDesc.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextDesc.java	(revision 60998)
@@ -0,0 +1,110 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.contexts;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+
+public class ContextDesc {
+
+	private String id;
+	private String label;
+	private String type;
+	private String xml;
+	private Map<String, ContextPart> categories = Maps.newLinkedHashMap();
+	private Map<String, String> dbEntries = Maps.newLinkedHashMap();
+	private Map<String, String> params;
+
+	public ContextDesc(final String id, final String label, final String type, final Map<String, String> params) {
+		this.id = id;
+		this.label = label;
+		this.type = type;
+		this.params = params;
+	}
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(final String id) {
+		this.id = id;
+	}
+
+	public String getLabel() {
+		return label;
+	}
+
+	public void setLabel(final String label) {
+		this.label = label;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(final String type) {
+		this.type = type;
+	}
+
+	public String getXml() {
+		return xml;
+	}
+
+	public void setXml(final String xml) {
+		this.xml = xml;
+	}
+
+	public Map<String, ContextPart> getCategories() {
+		return categories;
+	}
+
+	public void setCategories(final Map<String, ContextPart> categories) {
+		this.categories = categories;
+	}
+
+	public Map<String, String> getDbEntries() {
+		return dbEntries;
+	}
+
+	public void setDbEntries(final Map<String, String> dbEntries) {
+		this.dbEntries = dbEntries;
+	}
+
+	public Element asDomElement() {
+		final Element ctxElem = DocumentHelper.createElement("context");
+		ctxElem.addAttribute("id", getId());
+		ctxElem.addAttribute("label", getLabel());
+		ctxElem.addAttribute("type", getType());
+		for (Element param : getParamsAsElements()) {
+			ctxElem.add(param);
+		}
+		for (ContextPart part : getCategories().values()) {
+			ctxElem.add(part.asDomElement("category"));
+		}
+
+		return ctxElem;
+	}
+
+	public List<Element> getParamsAsElements() {
+		List<Element> elements = Lists.newArrayList();
+		for (Entry<String, String> e : params.entrySet()) {
+			Element param = DocumentHelper.createElement("param");
+			param.addAttribute("name", e.getKey());
+			param.setText(e.getValue());
+			elements.add(param);
+		}
+		return elements;
+	}
+
+	public Map<String, String> getParams() {
+		return params;
+	}
+
+	public void setParams(final Map<String, String> params) {
+		this.params = params;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/IncrementalTransformationJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/IncrementalTransformationJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/IncrementalTransformationJobNode.java	(revision 60998)
@@ -0,0 +1,71 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import java.util.List;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.miscutils.datetime.DateUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class IncrementalTransformationJobNode extends IncrementalOperationJobNode {
+
+    private static final Log log = LogFactory.getLog(IncrementalTransformationJobNode.class);
+
+    @Autowired
+    private UniqueServiceLocator locator;
+
+    private static final DateUtils dateUtils = new DateUtils();
+
+    @Override
+    protected boolean forceRefresh(final NodeToken nodeToken, final Long lastSuccessStartDate, final String currentWfProfileId) throws Exception {
+        if (lastSuccessStartDate < 0) {
+            nodeToken.getFullEnv().setAttribute("OperationTypeInfo", "Last success start date < 0, transformation forced to REFRESH");
+            nodeToken.getFullEnv().setAttribute("operationType", "REFRESH");
+            return true;
+        }
+        String trRuleId = getTransformationId(currentWfProfileId);
+        final long lastUpdateDate = getLastTransformationRuleUpdate(trRuleId);
+        log.info(String.format("Last update date of the transformation rule with id %s is %s", trRuleId, DateUtils.calculate_ISO8601(lastUpdateDate)));
+
+        if (lastUpdateDate > lastSuccessStartDate) {
+            nodeToken.getFullEnv().setAttribute("OperationTypeInfo", "Transformation Rule has been updated, transformation forced to REFRESH");
+            nodeToken.getFullEnv().setAttribute("operationType", "REFRESH");
+            return true;
+        }
+        return false;
+    }
+
+
+
+
+
+    private String getTransformationId(final String workflowId) throws ISLookUpException {
+
+        final String query="for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType') where $x//RESOURCE_IDENTIFIER/@value='%s' " +
+                "return $x//PARAM[./@category='TRANSFORMATION_RULE_ID']/text()";
+        final ISLookUpService lookUpService = locator.getService(ISLookUpService.class);
+        final String queryInstance = String.format(query, workflowId);
+        log.debug("Query to find the Transformation Rule");
+        List<String> transformationId = lookUpService.quickSearchProfile(queryInstance);
+        if(transformationId== null || transformationId.isEmpty())
+            throw new RuntimeException("Error unable to find the Transformation rule ID on workflow profile "+workflowId);
+        return transformationId.get(0);
+    }
+
+    private Long getLastTransformationRuleUpdate(final String trId) throws ISLookUpException {
+        final String query = "for $x in collection('/db/DRIVER/TransformationRuleDSResources/TransformationRuleDSResourceType') where $x//RESOURCE_IDENTIFIER/@value='%s' return $x//DATE_OF_CREATION/@value/string()";
+        log.debug("retrieve creation date from transformation ID "+trId);
+        final ISLookUpService lookUpService = locator.getService(ISLookUpService.class);
+        final String queryInstance = String.format(query, trId);
+        log.debug("Query to find the Transformation Rule");
+        List<String> currentDate = lookUpService.quickSearchProfile(queryInstance);
+        if(currentDate== null || currentDate.isEmpty())
+            throw new RuntimeException("Error unable to find the creation date of the  Transformation rule "+trId);
+        return dateUtils.parse(currentDate.get(0)).getTime();
+    }
+    
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/propagation/communitytoresult/LoadCommunityIdsListJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/propagation/communitytoresult/LoadCommunityIdsListJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/propagation/communitytoresult/LoadCommunityIdsListJobNode.java	(revision 60998)
@@ -0,0 +1,68 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.propagation.communitytoresult;
+
+import com.google.common.reflect.TypeToken;
+import com.google.gson.Gson;
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.lang.reflect.Type;
+import java.util.List;
+
+public class LoadCommunityIdsListJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(LoadCommunityIdsListJobNode.class);
+
+    @Autowired
+    private UniqueServiceLocator serviceLocator;
+
+    private String xquery;
+
+    private String communityIdParam;
+
+    public String getCommunityIdParam() {
+        return communityIdParam;
+    }
+
+    public void setCommunityIdParam(String communityIdParam) {
+        this.communityIdParam = communityIdParam;
+    }
+
+    public UniqueServiceLocator getServiceLocator() {
+        return serviceLocator;
+    }
+
+    public void setServiceLocator(UniqueServiceLocator serviceLocator) {
+        this.serviceLocator = serviceLocator;
+    }
+
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+
+        final List<String> res = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(getXquery());
+        Type listType = new TypeToken<List<String>>() {}.getType();
+
+        token.getEnv().setAttribute(getCommunityIdParam(),new Gson().toJson(res,listType));
+
+        return Arc.DEFAULT_ARC;
+    }
+
+    public String getXquery() {
+        log.debug(xquery);
+        return xquery;
+    }
+
+    public void setXquery(final String xquery) {
+        this.xquery = xquery;
+
+    }
+
+
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimRelsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimRelsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimRelsJobNode.java	(revision 60998)
@@ -0,0 +1,132 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.claims;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.hadoop.rmi.HadoopService;
+import eu.dnetlib.data.proto.FieldTypeProtos.DataInfo;
+import eu.dnetlib.data.proto.FieldTypeProtos.Qualifier;
+import eu.dnetlib.data.proto.KindProtos.Kind;
+import eu.dnetlib.data.proto.OafProtos.Oaf;
+import eu.dnetlib.data.proto.OafProtos.OafRel;
+import eu.dnetlib.data.proto.RelMetadataProtos.RelMetadata;
+import eu.dnetlib.data.proto.RelTypeProtos.RelType;
+import eu.dnetlib.data.proto.RelTypeProtos.SubRelType;
+import eu.dnetlib.data.proto.ResultProjectProtos.ResultProject;
+import eu.dnetlib.data.proto.ResultProjectProtos.ResultProject.Outcome;
+import eu.dnetlib.data.proto.ResultResultProtos.ResultResult;
+import eu.dnetlib.data.proto.ResultResultProtos.ResultResult.PublicationDataset;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.utils.ontologies.OntologyLoader;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.util.StringUtils;
+
+/**
+ * Created by alessia on 23/10/15.
+ */
+public class ApplyClaimRelsJobNode extends AbstractClaimsToHBASE {
+
+	private static final Log log = LogFactory.getLog(ApplyClaimRelsJobNode.class);
+
+	private final String SEPARATOR = "_";
+
+	@Override
+	protected String execute(NodeToken token) throws Exception {
+		//TODO: use claim.claim_date from the claim db
+		long timestamp = System.currentTimeMillis();
+		setTotal(getClaimDatabaseUtils().count(getCountQuery()));
+
+		final AtomicInteger totalWrites = new AtomicInteger(0);
+		final AtomicInteger discardedClaims = new AtomicInteger(0);
+
+		final HadoopService hadoopService = getServiceLocator().getService(HadoopService.class);
+
+		getClaimDatabaseUtils().query(getSql()).forEach(claim -> {
+			log.debug(claim);
+			try {
+				String sourceId = getFullId(getOpenAIREType(claim.getSourceType()), claim.getSource());
+				String targetId = getFullId(getOpenAIREType(claim.getTargetType()), claim.getTarget());
+				String value = getValue(sourceId, claim.getSemantics(), targetId, timestamp);
+				// adding relationship
+				hadoopService.addHBaseColumn(getClusterName(), getTableName(), sourceId, claim.getSemantics(), targetId, value);
+				totalWrites.incrementAndGet();
+
+				String inverseSemantics = OntologyLoader.fetchInverse(claim.getSemantics());
+				String inverseValue = getValue(targetId, inverseSemantics, sourceId, timestamp);
+				//adding inverse relationship
+				hadoopService.addHBaseColumn(getClusterName(), getTableName(), targetId, inverseSemantics, sourceId, inverseValue);
+				totalWrites.incrementAndGet();
+				incrementProcessed();
+			} catch (Exception e) {
+				log.error("Discarding claim " + claim + ". Cause: " + e.getMessage());
+				discardedClaims.incrementAndGet();
+			}
+		});
+		log.info("totalClaimRels: " + getTotal());
+		token.getEnv().setAttribute("claimRelsSize", getTotal());
+		log.info("claim rels writeOps: " + totalWrites.intValue());
+		token.getEnv().setAttribute("claimRelsWriteOps", totalWrites.intValue());
+		log.info("discardedClaimRels: " + discardedClaims.intValue());
+		token.getEnv().setAttribute("discardedClaimRels", discardedClaims.intValue());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	protected String getValue(final String sourceId, final String semantics, final String targetId, final long timestamp) throws MSROException {
+		log.debug(StringUtils.format("%s -- %s -- %s", sourceId, semantics, targetId));
+		String[] relInfo = semantics.split(SEPARATOR);
+		if (relInfo.length != 3) {
+			throw new MSROException("Semantics " + semantics + " not supported: must be splittable in 3 by '_'");
+		}
+		Qualifier.Builder semanticsBuilder = Qualifier.newBuilder().setClassid(relInfo[2]).setClassname(relInfo[2]);
+
+		Oaf.Builder builder = Oaf.newBuilder().setKind(Kind.relation).setLastupdatetimestamp(timestamp);
+		builder.setDataInfo(DataInfo.newBuilder().setTrust("0.91").setInferred(false)
+				.setProvenanceaction(
+						Qualifier.newBuilder()
+								.setClassid("user:claim")
+								.setClassname("user:claim")
+								.setSchemeid("dnet:provenanceActions")
+								.setSchemename("dnet:provenanceActions")
+				));
+
+		final SubRelType subRelType = SubRelType.valueOf(relInfo[1]);
+		final OafRel.Builder relBuilder = OafRel.newBuilder()
+				.setSubRelType(subRelType)
+				.setRelClass(relInfo[2])
+				.setRelType(RelType.valueOf(relInfo[0]))
+				.setSource(sourceId).setTarget(targetId).setChild(false);
+
+		switch (relInfo[0]) {
+		case "resultProject":
+
+			relBuilder.setResultProject(ResultProject.newBuilder()
+					.setOutcome(Outcome.newBuilder().setRelMetadata(
+							RelMetadata.newBuilder().setSemantics(
+									semanticsBuilder
+											.setSchemeid("dnet:result_project_relations")
+											.setSchemename("dnet:result_project_relations")
+											.build()
+							))));
+			break;
+		case "resultResult":
+			relBuilder.setResultResult(ResultResult.newBuilder()
+					.setPublicationDataset(PublicationDataset.newBuilder().setRelMetadata(
+							RelMetadata.newBuilder().setSemantics(
+									semanticsBuilder
+											.setSchemeid("dnet:result_result_relations")
+											.setSchemename("dnet:result_result_relations")
+											.build()
+							))));
+			break;
+		default:
+			throw new MSROException("Semantics " + relInfo[0] + " not supported");
+		}
+
+		builder.setRel(relBuilder);
+		return Base64.encodeBase64String(builder.build().toByteArray());
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/Claim.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/Claim.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/Claim.java	(revision 60998)
@@ -0,0 +1,67 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.claims;
+
+/**
+ * Created by Alessia Bardi on 23/06/2017.
+ *
+ * @author Alessia Bardi
+ */
+public class Claim {
+
+	private String source, sourceType, target, targetType, semantics;
+
+	public String getSource() {
+		return source;
+	}
+
+	public Claim setSource(final String source) {
+		this.source = source;
+		return this;
+	}
+
+	public String getSourceType() {
+		return sourceType;
+	}
+
+	public Claim setSourceType(final String sourceType) {
+		this.sourceType = sourceType;
+		return this;
+	}
+
+	public String getTarget() {
+		return target;
+	}
+
+	public Claim setTarget(final String target) {
+		this.target = target;
+		return this;
+	}
+
+	public String getTargetType() {
+		return targetType;
+	}
+
+	public Claim setTargetType(final String targetType) {
+		this.targetType = targetType;
+		return this;
+	}
+
+	public String getSemantics() {
+		return semantics;
+	}
+
+	public Claim setSemantics(final String semantics) {
+		this.semantics = semantics;
+		return this;
+	}
+
+	@Override
+	public String toString() {
+		return "Claim{" +
+				"source='" + source + '\'' +
+				", sourceType='" + sourceType + '\'' +
+				", target='" + target + '\'' +
+				", targetType='" + targetType + '\'' +
+				", semantics='" + semantics + '\'' +
+				'}';
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidRepoProfilesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidRepoProfilesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidRepoProfilesJobNode.java	(revision 60998)
@@ -0,0 +1,142 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.consistency;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.enabling.datasources.DatasourceManagerClients;
+import eu.dnetlib.enabling.datasources.LocalOpenaireDatasourceManager;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.ProgressJobNode;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.ProgressProvider;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+
+public class FindInvalidRepoProfilesJobNode extends SimpleJobNode implements ProgressJobNode {
+
+	@Autowired
+	private LocalOpenaireDatasourceManager dsManager;
+
+	@Autowired
+	private DatasourceManagerClients dsManagerClient;
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	private int current = 0;
+	private int total = 0;
+
+	private boolean deleteInvalidProfiles = false;
+	private boolean registerMissingProfiles = false;
+
+	private static final Log log = LogFactory.getLog(FindInvalidRepoProfilesJobNode.class);
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		final Map<String, AtomicInteger> validIds = dsManagerClient.searchSQL("SELECT id FROM dsm_datasources", new HashMap<>())
+				.stream()
+				.map(m -> (String) m.get("id"))
+				.collect(Collectors.toMap(s -> s, s -> new AtomicInteger(0)));
+
+		final List<String> list = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(
+				"for $x in collection('/db/DRIVER/RepositoryServiceResources/RepositoryServiceResourceType') return concat($x//DATASOURCE_ORIGINAL_ID, ' @@@ ', $x//RESOURCE_IDENTIFIER/@value)");
+
+		this.current = 0;
+		this.total = list.size() + validIds.size();
+		int errorInvalidProfiles = 0;
+		int errorUnregisteredProfiles = 0;
+		int errorTooManyProfiles = 0;
+
+		for (final String s : list) {
+			current++;
+			final String oid = StringUtils.substringBefore(s, "@@@").trim();
+			final String profId = StringUtils.substringAfter(s, "@@@").trim();
+			log.info("Evaluating ds: " + oid);
+			if (validIds.containsKey(oid)) {
+				validIds.get(oid).incrementAndGet();
+			} else {
+				log.warn("Invalid profile " + profId + ", openaireId " + oid + " not registered properly");
+				errorInvalidProfiles++;
+				// token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "invalidProfile:" + oid, profId);
+				if (deleteInvalidProfiles) {
+					log.warn("  - Deleting profile " + profId);
+					serviceLocator.getService(ISRegistryService.class).deleteProfile(profId);
+				}
+			}
+		}
+
+		for (final Map.Entry<String, AtomicInteger> e : validIds.entrySet()) {
+			current++;
+			final String dsId = e.getKey();
+			final int n = e.getValue().get();
+			if (n == 0) {
+				errorUnregisteredProfiles++;
+				// token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "unregisterdProfile:" + dsId, dsId);
+				log.warn("Missing profile for ds " + dsId);
+				if (registerMissingProfiles) {
+					dsManager.setManaged(dsId, dsManager.isManaged(dsId)); // This command should regenerate the repo profile
+				}
+			} else if (n > 1) {
+				errorTooManyProfiles++;
+				log.error("Too many profiles registerd " + n + " for ds " + dsId);
+				// token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "tooManyProfiles:" + dsId, n);
+			}
+		}
+
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "errorInvalidProfiles", errorInvalidProfiles);
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "errorUnregisteredProfiles", errorUnregisteredProfiles);
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "errorTooManyProfiles", errorTooManyProfiles);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	@Override
+	public ProgressProvider getProgressProvider() {
+		return new ProgressProvider() {
+
+			@Override
+			public int getTotalValue() {
+				return total;
+			}
+
+			@Override
+			public int getCurrentValue() {
+				return current;
+			}
+
+			@Override
+			public boolean isInaccurate() {
+				return false;
+			}
+		};
+	}
+
+	public boolean isDeleteInvalidProfiles() {
+		return deleteInvalidProfiles;
+	}
+
+	public void setDeleteInvalidProfiles(final boolean deleteInvalidProfiles) {
+		this.deleteInvalidProfiles = deleteInvalidProfiles;
+	}
+
+	public boolean isRegisterMissingProfiles() {
+		return registerMissingProfiles;
+	}
+
+	public void setRegisterMissingProfiles(final boolean registerMissingProfiles) {
+		this.registerMissingProfiles = registerMissingProfiles;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryPersons.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryPersons.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/hbase/queryPersons.sql	(revision 60998)
@@ -0,0 +1,55 @@
+SELECT
+	p.id                                                                    AS personid,
+	p.firstname                                                             AS firstname,
+	p.secondnames                                                           AS secondnames,
+	CASE WHEN length(p.secondnames) > 0
+		THEN trim(BOTH FROM p.secondnames || ', ' || p.firstname)
+	ELSE p.firstname END                                                    AS fullname,
+	p.fax                                                                   AS fax,
+	p.email                                                                 AS email,
+	p.phone                                                                 AS phone,
+	p.dateofcollection                                                      AS dateofcollection,
+	p.inferred                                                              AS inferred,
+	p.deletedbyinference                                                    AS deletedbyinference,
+	p.trust                                                                 AS trust,
+	p.inferenceprovenance                                                   AS inferenceprovenance,
+	dc.id                                                                   AS collectedfromid,
+	dc.officialname                                                         AS collectedfromname,
+
+	nc.code || '@@@' || nc.name || '@@@' || ns.code || '@@@' || ns.name     AS nationality,
+	pac.code || '@@@' || pac.name || '@@@' || pas.code || '@@@' || pas.name AS provenanceaction,
+
+	array_agg(DISTINCT i.pid || '###' || i.issuertypeclass)                 AS pid
+
+FROM persons p
+	LEFT OUTER JOIN class nc ON (nc.code = p.nationalityclass)
+	LEFT OUTER JOIN scheme ns ON (ns.code = p.nationalityscheme)
+
+	LEFT OUTER JOIN class pac ON (pac.code = p.provenanceactionclass)
+	LEFT OUTER JOIN scheme pas ON (pas.code = p.provenanceactionscheme)
+
+	LEFT OUTER JOIN datasources dc ON (dc.id = p.collectedfrom)
+
+	LEFT OUTER JOIN personpids pp ON (pp.person = p.id)
+	LEFT OUTER JOIN identities i ON (i.pid = pp.pid)
+
+	LEFT OUTER JOIN project_organization po ON (po.contactperson = p.id)
+
+WHERE (p.firstname IS NOT NULL OR p.secondnames IS NOT NULL) AND po.resporganization IS NOT NULL
+
+GROUP BY
+	p.id,
+	p.firstname,
+	p.secondnames,
+	p.fax,
+	p.email,
+	p.phone,
+	p.dateofcollection,
+	p.inferred,
+	p.deletedbyinference,
+	p.trust,
+	p.inferenceprovenance,
+	dc.id,
+	dc.officialname,
+	nc.code, nc.name, ns.code, ns.name,
+	pac.code, pac.name, pas.code, pas.name
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/queryClaimsDmf.sql
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/queryClaimsDmf.sql	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/db/queryClaimsDmf.sql	(revision 60998)
@@ -0,0 +1,5 @@
+SELECT
+	regexp_replace(xml, '&(?!amp;)', '&amp;', 'g') AS xml,
+	provenance
+FROM claims
+WHERE type = 'dmf2actions' AND set = 'userclaim_dmf' AND provenance <> 'user:claim:datacite'
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/applicationContext-nodeValues.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/applicationContext-nodeValues.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/resources/eu/dnetlib/msro/openaireplus/workflows/applicationContext-nodeValues.xml	(revision 60998)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:p="http://www.springframework.org/schema/p" xmlns:http="http://cxf.apache.org/transports/http/configuration"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+
+
+                                    http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd">
+
+
+	<bean id="downloadPluginValues" class="eu.dnetlib.msro.openaire.ui.DownloadPluginValues"
+	      p:name="listDownloadPlugins"/>
+</beans>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/DeleteMDStoreHadoopJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/DeleteMDStoreHadoopJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/DeleteMDStoreHadoopJobNode.java	(revision 60998)
@@ -0,0 +1,65 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+public class DeleteMDStoreHadoopJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(DeleteMDStoreHadoopJobNode.class);
+
+    private String mdId;
+
+    /* Spring managed params */
+    private String mdStoreManagerUrl;
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+        final String url = getMdStoreManagerUrl() + "/mdstore/{mdId}";
+
+        final Map<String, Object> params = new HashMap<>();
+        params.put("mdId", getMdId());
+
+        final URI uri = UriComponentsBuilder.fromUriString(url)
+                .buildAndExpand(params)
+                .toUri();
+
+        log.info("delete mdstore request: " + uri.toASCIIString());
+
+        final RestTemplate restTemplate = new RestTemplate();
+        restTemplate.delete(uri);
+
+        log.info("mdstore deleted: " + mdId);
+
+        return Arc.DEFAULT_ARC;
+    }
+
+    public String getMdStoreManagerUrl() {
+        return mdStoreManagerUrl;
+    }
+
+    @Required
+    public void setMdStoreManagerUrl(final String mdStoreManagerUrl) {
+        this.mdStoreManagerUrl = mdStoreManagerUrl;
+    }
+
+    public String getMdId() {
+        return mdId;
+    }
+
+    public void setMdId(final String mdId) {
+        this.mdId = mdId;
+    }
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/DnetMessageManagerController.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/DnetMessageManagerController.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/DnetMessageManagerController.java	(revision 60998)
@@ -0,0 +1,69 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.message;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+import eu.dnetlib.dhp.message.Message;
+import eu.dnetlib.msro.rmi.MSROException;
+
+@Controller
+public class DnetMessageManagerController {
+
+	@Resource
+	private DnetMessageManager dnetMessageManager;
+
+	private static final Log log = LogFactory.getLog(DnetMessageManagerController.class);
+
+	@RequestMapping(value = "/dhp/message", method = {
+		RequestMethod.PUT, RequestMethod.POST
+	})
+	public @ResponseBody List<String> registerMessage(@RequestBody(required = true) final Message message) throws MSROException {
+		dnetMessageManager.registerMessage(message);
+		return Arrays.asList("done");
+	}
+
+	@ExceptionHandler(Exception.class)
+	@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
+	public @ResponseBody ErrorMessage handleException(final Exception e) {
+		log.error("Error processing http method", e);
+		return new ErrorMessage(e);
+	}
+
+	public class ErrorMessage {
+
+		private final String message;
+		private final String stacktrace;
+
+		public ErrorMessage(final Exception e) {
+			this(e.getMessage(), ExceptionUtils.getStackTrace(e));
+		}
+
+		public ErrorMessage(final String message, final String stacktrace) {
+			this.message = message;
+			this.stacktrace = stacktrace;
+		}
+
+		public String getMessage() {
+			return this.message;
+		}
+
+		public String getStacktrace() {
+			return this.stacktrace;
+		}
+
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/StartReadingMDStoreJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/StartReadingMDStoreJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/StartReadingMDStoreJobNode.java	(revision 60998)
@@ -0,0 +1,67 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp;
+
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.data.mdstore.manager.common.model.MDStoreVersion;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+public class StartReadingMDStoreJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(StartReadingMDStoreJobNode.class);
+
+    private String mdId;
+
+    /* Spring managed params */
+    private String mdStoreManagerUrl;
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+        final String url = getMdStoreManagerUrl() + "/mdstore/{mdId}/startReading";
+
+        final Map<String, Object> params = new HashMap<>();
+        params.put("mdId", getMdId());
+
+        final URI uri = UriComponentsBuilder.fromUriString(url)
+                .buildAndExpand(params)
+                .toUri();
+
+        final RestTemplate restTemplate = new RestTemplate();
+        final MDStoreVersion version = restTemplate.getForObject(uri, MDStoreVersion.class);
+
+        log.info("mdstore version ready to read " + version.getId());
+
+        token.getEnv().setAttribute("reading_mdId", mdId);
+        token.getEnv().setAttribute("reading_versionId", version.getId());
+
+        return Arc.DEFAULT_ARC;
+    }
+
+    public String getMdStoreManagerUrl() {
+        return mdStoreManagerUrl;
+    }
+
+    @Required
+    public void setMdStoreManagerUrl(final String mdStoreManagerUrl) {
+        this.mdStoreManagerUrl = mdStoreManagerUrl;
+    }
+
+    public String getMdId() {
+        return mdId;
+    }
+
+    public void setMdId(final String mdId) {
+        this.mdId = mdId;
+    }
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FeedMissingClaimsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FeedMissingClaimsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FeedMissingClaimsJobNode.java	(revision 60998)
@@ -0,0 +1,130 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.index;
+
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.index.CloudIndexClient;
+import eu.dnetlib.data.index.CloudIndexClientFactory;
+import eu.dnetlib.data.index.CloudIndexClientException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.miscutils.functional.xml.ApplyXslt;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.AsyncJobNode;
+import eu.dnetlib.openaire.directindex.api.RecentResultsQueue;
+import eu.dnetlib.openaire.directindex.utils.OafToIndexRecordFactory;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.solr.common.SolrInputDocument;
+import org.dom4j.io.SAXReader;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.ClassPathResource;
+
+/**
+ * Created by michele on 15/12/15.
+ */
+public class FeedMissingClaimsJobNode extends AsyncJobNode {
+
+	private static final Log log = LogFactory.getLog(FeedMissingClaimsJobNode.class);
+	public static final int BATCH_SIZE = 1000;
+	private RecentResultsQueue queue;
+	private OafToIndexRecordFactory oafToIndexRecordFactory;
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Value(value = "${openaire.api.directindex.findSolrIndexUrl.xquery}")
+	private ClassPathResource findSolrIndexUrl;
+
+	@Override
+	protected String execute(final NodeToken nodeToken) throws Exception {
+
+		final String format =
+				nodeToken.getEnv().hasAttribute("format") ? nodeToken.getEnv().getAttribute("format") : nodeToken.getFullEnv().getAttribute("format");
+		final String coll = format + "-index-openaire";
+		final String indexDsId = nodeToken.getEnv().getAttribute("index_id");
+		final String baseUrl = calculateIndexBaseUrl();
+
+		CloudIndexClient idxClient = null;
+
+		try {
+			final List<SolrInputDocument> toFeed = new ArrayList<SolrInputDocument>();
+			final List<String> toDeleteFromCache = new ArrayList<String>();
+
+			final SAXReader reader = new SAXReader();
+			final ApplyXslt xslt = oafToIndexRecordFactory.newTransformer(format);
+
+			idxClient = CloudIndexClientFactory.newIndexClient(baseUrl, coll, false);
+			log.info("Starting to feed claims in index collection "+coll);
+			int count = 0;
+			for (String record : queue) {
+				final String id = reader.read(new StringReader(record)).valueOf("//*[local-name() = 'objIdentifier']");
+				count++;
+				if(log.isDebugEnabled()){
+					log.debug("Processing record "+count);
+				}
+				if (idxClient.isRecordIndexed(id)) {
+					toDeleteFromCache.add(id);
+				} else {
+					toFeed.add(idxClient.prepareSolrDocument(record, indexDsId, xslt));
+				}
+				if(count % BATCH_SIZE == 0) processLists(idxClient, toFeed, toDeleteFromCache);
+
+			}
+			if(!toFeed.isEmpty() || !toDeleteFromCache.isEmpty()) processLists(idxClient, toFeed, toDeleteFromCache);
+			log.info(String.format("Finished feeding of claims in index collection %s, total: %d", coll, count));
+
+		} catch (Throwable e) {
+			log.error("Error feeding missing claims", e);
+			throw new MSROException("Error feeding missing claims: " + e.getMessage(), e);
+		} finally {
+			if (idxClient != null) {
+				idxClient.close();
+			}
+			log.info("Closed Solr index client");
+		}
+		log.info("Now proceeding to Arc.DEFAULT_ARC");
+		return Arc.DEFAULT_ARC;
+	}
+
+
+
+	private void processLists(final CloudIndexClient idxClient, final List<SolrInputDocument> toFeed, final List<String> toDeleteFromCache) throws CloudIndexClientException{
+		idxClient.feed(toFeed, null);
+		queue.remove(toDeleteFromCache);
+		log.info(String.format("%d claims fed and cache cleaned of %d records", toFeed.size(), toDeleteFromCache.size()));
+		toFeed.clear();
+		toDeleteFromCache.clear();
+		log.info("Cleaned temporary lists");
+	}
+
+	public RecentResultsQueue getQueue() {
+		return queue;
+	}
+
+	@Required
+	public void setQueue(final RecentResultsQueue queue) {
+		this.queue = queue;
+	}
+
+	public OafToIndexRecordFactory getOafToIndexRecordFactory() {
+		return oafToIndexRecordFactory;
+	}
+
+	@Required
+	public void setOafToIndexRecordFactory(final OafToIndexRecordFactory oafToIndexRecordFactory) {
+		this.oafToIndexRecordFactory = oafToIndexRecordFactory;
+	}
+
+	private String calculateIndexBaseUrl() throws Exception {
+		final String query = IOUtils.toString(findSolrIndexUrl.getInputStream());
+		return serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(query);
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FindSearchServiceJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FindSearchServiceJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/FindSearchServiceJobNode.java	(revision 60998)
@@ -0,0 +1,79 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.index;
+
+import java.util.List;
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Value;
+
+/**
+ * Superceded by eu.dnetlib.msro.openaireplus.workflows.nodes.index.FindSearchServicesJobNode.
+ *
+ * @author claudio, alessia
+ * @see eu.dnetlib.msro.openaireplus.workflows.nodes.index.FindSearchServicesJobNode
+ * @deprecated
+ */
+@Deprecated
+public class FindSearchServiceJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(FindSearchServiceJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Value(value = "${dnet.openaire.service.search.lookup.xquery}")
+	private String xquery;
+
+	private String xqueryForServiceIdParam;
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @throws ISLookUpException
+	 * @throws MSROException
+	 * @see com.googlecode.sarasvati.mem.MemNode#execute(com.googlecode.sarasvati.Engine, com.googlecode.sarasvati.NodeToken)
+	 */
+	@Override
+	public String execute(final NodeToken token) throws ISLookUpException, MSROException {
+
+		log.info("lookup for search service: " + getXquery());
+
+		List<String> searchServiceIds = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(getXquery());
+
+		if (searchServiceIds.size() > 1) { throw new MSROException("too many search services: " + searchServiceIds); }
+
+		if (searchServiceIds.isEmpty()) {
+			return "notFound";
+		} else {
+			token.getEnv().setAttribute(getXqueryForServiceIdParam(), getXquery());
+			return "found";
+		}
+	}
+
+	public String getXquery() {
+		return xquery;
+	}
+
+	public void setXquery(final String xquery) {
+		this.xquery = xquery;
+	}
+
+	public String getXqueryForServiceIdParam() {
+		return xqueryForServiceIdParam;
+	}
+
+	public void setXqueryForServiceIdParam(final String xqueryForServiceIdParam) {
+		this.xqueryForServiceIdParam = xqueryForServiceIdParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/ContextLoader.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/ContextLoader.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/index/ContextLoader.java	(revision 60998)
@@ -0,0 +1,48 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.index;
+
+import javax.annotation.Resource;
+
+import com.google.common.base.Joiner;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.miscutils.functional.xml.IndentXmlString;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+
+public class ContextLoader {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(ContextLoader.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	private String xquery;
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	public String load() throws ISLookUpException {
+
+		log.info("loading ContextDSResources: " + getXquery());
+
+		StringBuilder sb = new StringBuilder("<ContextDSResources>");
+		Joiner.on("").appendTo(sb, serviceLocator.getService(ISLookUpService.class).quickSearchProfile(getXquery()));
+		sb.append("</ContextDSResources>");
+
+		log.debug("got ContextDSResources: \n" + IndentXmlString.apply(sb.toString()));
+
+		return sb.toString();
+	}
+
+	public String getXquery() {
+		return xquery;
+	}
+
+	@Required
+	public void setXquery(final String xquery) {
+		this.xquery = xquery;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/UpsertHostedByApisJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/UpsertHostedByApisJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/UpsertHostedByApisJobNode.java	(revision 60998)
@@ -0,0 +1,92 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby;
+
+import java.util.Map.Entry;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.enabling.datasources.LocalOpenaireDatasourceManager;
+import eu.dnetlib.enabling.datasources.common.Api;
+import eu.dnetlib.enabling.datasources.common.ApiParam;
+import eu.dnetlib.enabling.datasources.common.DsmException;
+import eu.dnetlib.miscutils.datetime.DateUtils;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+public class UpsertHostedByApisJobNode extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(UpsertHostedByApisJobNode.class);
+
+	private static final String HOSTED_BY_COMPLIANCE = "hostedBy";
+
+	@Autowired
+	private LocalOpenaireDatasourceManager dsManager;
+
+	private String countersParam;
+	private String mdId;
+	public static final String extraFieldsForTotal = "last_aggregation_total";
+	public static final String extraFieldForDate = "last_aggregation_date";
+	public static final String extraFieldForMdId = "last_aggregation_mdId";
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final HostedByCounters counters = (HostedByCounters) token.getEnv().getTransientAttribute(countersParam);
+		final String date = DateUtils.now_ISO8601();
+		final String namespacePrefix = token.getEnv().getAttribute("namespacePrefix");
+
+		log.info(counters);
+
+		for (final Entry<String, Integer> e : counters.getCounters().entrySet()) {
+			updateHostedByApi(e.getKey(), namespacePrefix, date, e.getValue());
+		}
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	private void updateHostedByApi(final String dsId,
+			final String namepsacePrefix,
+			final String date,
+			final int size) {
+		log.info("Verifying hostedBy api in ds: " + dsId);
+		try {
+
+			for (final Api<ApiParam> iface : dsManager.getApis(dsId)) {
+				if (HOSTED_BY_COMPLIANCE.equals(iface.getCompatibility())) { return; }
+			}
+
+			final Api<ApiParam> api = new Api<>();
+			api.setDatasource(dsId);
+			api.setId("api_________::" + dsId + "::hostedBy");
+			api.setTypology(dsManager.getDs(dsId).getTypology());
+			api.setCompatibility(HOSTED_BY_COMPLIANCE);
+			api.setProtocol("UNKNOWN");
+			api.setContentdescription("metadata");
+			api.setBaseurl("");
+			api.setActive(false);
+			api.setRemovable(true);
+			dsManager.addApi(api);
+		} catch (final DsmException e) {
+			log.warn("Error setting hostedBy api of ds: " + dsId, e);
+		}
+	}
+
+	public String getMdId() {
+		return mdId;
+	}
+
+	public void setMdId(final String mdId) {
+		this.mdId = mdId;
+	}
+
+	public String getCountersParam() {
+		return countersParam;
+	}
+
+	public void setCountersParam(final String countersParam) {
+		this.countersParam = countersParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PrepareHostedbyUpdateSQL.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PrepareHostedbyUpdateSQL.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PrepareHostedbyUpdateSQL.java	(revision 60998)
@@ -0,0 +1,52 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+import org.antlr.stringtemplate.StringTemplate;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+
+/**
+ * Created by alessia on 01/02/16.
+ */
+public class PrepareHostedbyUpdateSQL extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(PrepareHostedbyUpdateSQL.class);
+	private String updateSqlTemplatePath;
+	private String theQueryParamName = "hostedByUpdateSQL";
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final String datasourceId = token.getEnv().getAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID);
+		final String datasourceNamespacePrefix = token.getEnv().getAttribute(WorkflowsConstants.DATAPROVIDER_NAMESPACE_PREFIX);
+		final Resource updateSqlTemplate = new ClassPathResource(updateSqlTemplatePath);
+		final StringTemplate st = new StringTemplate(IOUtils.toString(updateSqlTemplate.getInputStream()));
+		st.setAttribute("datasourceId", datasourceId);
+		st.setAttribute("datasourceNamespacePrefix", datasourceNamespacePrefix);
+		final String theQuery = st.toString();
+		log.debug("Generated query: " + theQuery);
+		token.getFullEnv().setAttribute(theQueryParamName, theQuery);
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getUpdateSqlTemplatePath() {
+		return updateSqlTemplatePath;
+	}
+
+	public void setUpdateSqlTemplatePath(final String updateSqlTemplatePath) {
+		this.updateSqlTemplatePath = updateSqlTemplatePath;
+	}
+
+	public String getTheQueryParamName() {
+		return theQueryParamName;
+	}
+
+	public void setTheQueryParamName(final String theQueryParamName) {
+		this.theQueryParamName = theQueryParamName;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidStoresJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidStoresJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidStoresJobNode.java	(revision 60998)
@@ -0,0 +1,103 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.consistency;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.data.mdstore.modular.connector.MDStoreDao;
+import eu.dnetlib.data.objectstore.modular.connector.ObjectStoreDao;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+
+public class FindInvalidStoresJobNode extends SimpleJobNode {
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	@Autowired
+	private MDStoreDao mdstoreDao;
+
+	@Autowired
+	private ObjectStoreDao objDao;
+
+	private static final Log log = LogFactory.getLog(FindInvalidStoresJobNode.class);
+
+	private boolean deleteInvalidStores = false;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final ISLookUpService lookup = serviceLocator.getService(ISLookUpService.class);
+		final ISRegistryService registry = serviceLocator.getService(ISRegistryService.class);
+
+		final String q1 = "distinct-values("
+				+ "for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType')//PARAM[@category='MDSTORE_ID' or @category='OBJECTSTORE_ID'] "
+				+ "return $x/text())";
+
+		final String q2 = "for $x in collection('/db/DRIVER/MDStoreDSResources/MDStoreDSResourceType') return $x//RESOURCE_IDENTIFIER/@value/string()";
+		final String q3 = "for $x in collection('/db/DRIVER/ObjectStoreDSResources/ObjectStoreDSResourceType') return $x//RESOURCE_IDENTIFIER/@value/string()";
+
+		final Set<String> valids = new HashSet<>(lookup.quickSearchProfile(q1));
+
+		int countMdstores = 0;
+		int countInvalidMdStores = 0;
+		int countDeletedMdStores = 0;
+		int countObjstores = 0;
+		int countInvalidObjStores = 0;
+		int countDeletedObjStores = 0;
+
+		for (final String id : lookup.quickSearchProfile(q2)) {
+			countMdstores++;
+			if (!valids.contains(id)) {
+				log.warn("Invalid mdstore: " + id);
+				countInvalidMdStores++;
+				if (deleteInvalidStores) {
+					registry.deleteProfile(id);
+					mdstoreDao.deleteMDStore(id);
+					log.info(" -- Deleted");
+					countDeletedMdStores++;
+				}
+
+			}
+		}
+
+		for (final String id : lookup.quickSearchProfile(q3)) {
+			countObjstores++;
+			if (!valids.contains(id)) {
+				log.warn("Invalid objstore: " + id);
+				countInvalidObjStores++;
+				if (deleteInvalidStores) {
+					registry.deleteProfile(id);
+					objDao.deleteObjectStore(id);
+					log.info(" -- Deleted");
+					countDeletedObjStores++;
+				}
+
+			}
+		}
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "totalMdStores", countMdstores);
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "invalidMdStores", countInvalidMdStores);
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "deletedMdStores", countDeletedMdStores);
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "totalObjStores", countObjstores);
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "invalidObjStores", countInvalidObjStores);
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "deletedObjStores", countDeletedObjStores);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public boolean isDeleteInvalidStores() {
+		return deleteInvalidStores;
+	}
+
+	public void setDeleteInvalidStores(final boolean deleteInvalidStores) {
+		this.deleteInvalidStores = deleteInvalidStores;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/VerifyMdStoreSizesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/VerifyMdStoreSizesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/VerifyMdStoreSizesJobNode.java	(revision 60998)
@@ -0,0 +1,22 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.consistency;
+
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.data.mdstore.modular.connector.MDStoreDao;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+public class VerifyMdStoreSizesJobNode extends SimpleJobNode {
+
+	@Resource(name = "mongodbMDStoreDao")
+	private MDStoreDao dao;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		dao.refreshSizes();
+		return Arc.DEFAULT_ARC;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/CleanActionSetsProfileJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/CleanActionSetsProfileJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/CleanActionSetsProfileJobNode.java	(revision 60998)
@@ -0,0 +1,42 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.actions;
+
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Required;
+
+public class CleanActionSetsProfileJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(CleanActionSetsProfileJobNode.class);
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	private String xupdate;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		log.info("updating Action Sets profiles: " + getXupdate());
+		serviceLocator.getService(ISRegistryService.class).executeXUpdate(getXupdate());
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getXupdate() {
+		return xupdate;
+	}
+
+	@Required
+	public void setXupdate(final String xupdate) {
+		this.xupdate = xupdate;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/GarbageSetsHDFSJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/GarbageSetsHDFSJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/GarbageSetsHDFSJobNode.java	(revision 60998)
@@ -0,0 +1,31 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.actions;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.actionmanager.rmi.ActionManagerService;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Created by claudio on 15/04/16.
+ */
+public class GarbageSetsHDFSJobNode extends BlackboardJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(GarbageSetsJobNode.class);
+
+	@Override
+	protected String obtainServiceId(final NodeToken token) {
+		return getServiceLocator().getServiceId(ActionManagerService.class);
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		log.info("preparing garbage collection for Action sets Job");
+		job.setAction("GARBAGE_HDFS");
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/vre/VREPostJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/vre/VREPostJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/vre/VREPostJobNode.java	(revision 60998)
@@ -0,0 +1,176 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.vre;
+
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.http.Header;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.json.JSONObject;
+
+/**
+ * Created by alessia on 24/03/16.
+ */
+public class VREPostJobNode extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(VREPostJobNode.class);
+	private String scheme;
+	private String host;
+	private String postPath;
+	private int followRedirect = 10;
+
+	//POST parameters
+	private String appToken;
+	private String previewTitle;
+	private String previewDescription;
+	private String text;
+	private String httpImageUrl;
+	private boolean enableNotification;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		log.debug("Posting text: "+getText());
+
+		CloseableHttpClient httpclient = HttpClients.createDefault();
+		try {
+			URI postUri = new URIBuilder().setScheme(scheme).setHost(host).setPath(postPath).build();
+			HttpPost postAction = new HttpPost(postUri);
+
+			JSONObject obj = createPostBody();
+
+			postAction.addHeader("gcube-token", appToken);
+			postAction.addHeader("Content-type", ContentType.APPLICATION_JSON.toString());
+
+			StringEntity params = new StringEntity(obj.toString(), ContentType.APPLICATION_JSON);
+			postAction.setEntity(params);
+
+			return doPost(httpclient, postAction, followRedirect);
+		} finally {
+			httpclient.close();
+		}
+
+	}
+
+	protected String doPost(HttpClient httpclient, HttpPost postAction, int followRedirect) throws IOException, URISyntaxException {
+		HttpResponse response = httpclient.execute(postAction);
+		log.debug(" " + response.getStatusLine().getStatusCode() + " and response message is " + response.getStatusLine().getReasonPhrase());
+		int status = response.getStatusLine().getStatusCode();
+		switch (status) {
+		case HttpURLConnection.HTTP_OK:
+		case HttpURLConnection.HTTP_CREATED:
+			return Arc.DEFAULT_ARC;
+		case HttpURLConnection.HTTP_MOVED_TEMP:
+		case HttpURLConnection.HTTP_MOVED_PERM:
+		case HttpURLConnection.HTTP_SEE_OTHER:
+			if (followRedirect > 0) {
+				Header[] locations = response.getHeaders("Location");
+				Header lastLocation = locations[locations.length - 1];
+				String realLocation = lastLocation.getValue();
+				log.info("New location after redirect for posting is " + realLocation);
+
+				// perform again the same request
+				postAction.setURI(new URI(realLocation));
+				return doPost(httpclient, postAction, followRedirect--);
+			} else
+				throw new RuntimeException("Too many redirects to post on the VRE");
+		}
+		throw new RuntimeException("HTTP error code " + status);
+	}
+
+	protected JSONObject createPostBody() {
+		JSONObject obj = new JSONObject();
+		obj.put("text",  text.replace("\\n", "\n"));
+		obj.put("preview_title", previewTitle);
+		obj.put("preview_description", previewDescription);
+		obj.put("image_url", httpImageUrl);
+		obj.put("enable_notification", Boolean.toString(enableNotification));
+		log.debug("POST body: " + obj.toString());
+		return obj;
+	}
+
+	public String getScheme() {
+		return scheme;
+	}
+
+	public void setScheme(final String scheme) {
+		this.scheme = scheme;
+	}
+
+	public String getHost() {
+		return host;
+	}
+
+	public void setHost(final String host) {
+		this.host = host;
+	}
+
+	public String getPostPath() {
+		return postPath;
+	}
+
+	public void setPostPath(final String postPath) {
+		this.postPath = postPath;
+	}
+
+	public String getAppToken() {
+		return appToken;
+	}
+
+	public void setAppToken(final String token) {
+		this.appToken = token;
+	}
+
+	public String getPreviewTitle() {
+		return previewTitle;
+	}
+
+	public void setPreviewTitle(final String previewTitle) {
+		this.previewTitle = previewTitle;
+	}
+
+	public String getPreviewDescription() {
+		return previewDescription;
+	}
+
+	public void setPreviewDescription(final String previewDescription) {
+		this.previewDescription = previewDescription;
+	}
+
+	public String getText() {
+		return text;
+	}
+
+	public void setText(final String text) {
+		this.text = text;
+	}
+
+	public String getHttpImageUrl() {
+		return httpImageUrl;
+	}
+
+	public void setHttpImageUrl(final String httpImageUrl) {
+		this.httpImageUrl = httpImageUrl;
+	}
+
+	public boolean isEnableNotification() {
+		return enableNotification;
+	}
+
+	public void setEnableNotification(final boolean enablenotification) {
+		this.enableNotification = enablenotification;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimUpdatesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimUpdatesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimUpdatesJobNode.java	(revision 60998)
@@ -0,0 +1,73 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.claims;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.hadoop.rmi.HadoopService;
+import eu.dnetlib.data.proto.KindProtos.Kind;
+import eu.dnetlib.data.proto.OafProtos.Oaf;
+import eu.dnetlib.data.proto.OafProtos.OafEntity;
+import eu.dnetlib.data.proto.ResultProtos.Result;
+import eu.dnetlib.data.proto.ResultProtos.Result.Context;
+import eu.dnetlib.data.proto.TypeProtos.Type;
+import eu.dnetlib.msro.rmi.MSROException;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.util.StringUtils;
+
+/**
+ * Created by alessia on 23/10/15.
+ */
+public class ApplyClaimUpdatesJobNode extends AbstractClaimsToHBASE {
+
+	private static final Log log = LogFactory.getLog(ApplyClaimUpdatesJobNode.class);
+
+	@Override
+	protected String execute(NodeToken token) throws Exception {
+		//TODO: use claim.claim_date from the claim db
+		long timestamp = System.currentTimeMillis();
+		setTotal(getClaimDatabaseUtils().count(getCountQuery()));
+
+		final AtomicInteger discardedClaims = new AtomicInteger(0);
+		final HadoopService hadoopService = getServiceLocator().getService(HadoopService.class);
+
+		getClaimDatabaseUtils().query(getSql()).forEach(claim -> {
+			try {
+				log.debug(claim);
+				String contextId = claim.getSource();
+				String rowKey = getFullId(getOpenAIREType(claim.getTargetType()), claim.getTarget());
+
+				String value = getValue(rowKey, contextId, timestamp);
+				hadoopService.addHBaseColumn(getClusterName(), getTableName(), rowKey, "result", "update_" + System.nanoTime(), value);
+				incrementProcessed();
+			} catch (Exception e) {
+				log.error("Discarding claim " + claim + ". Cause: " + e.getMessage());
+				discardedClaims.incrementAndGet();
+			}
+		});
+		log.info("Total Claim Updates: " + getTotal());
+		token.getEnv().setAttribute("claimUpdatesSize", getTotal());
+		log.info("Claim updates: " + getProcessed());
+		token.getEnv().setAttribute("claimUpdates", getProcessed());
+		log.info("Discarded Claim Updates: " + discardedClaims.intValue());
+		token.getEnv().setAttribute("discardedClaimUpdates", discardedClaims.intValue());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	protected String getValue(final String rowkey, final String contextid, final long timestamp) throws MSROException {
+		log.debug(StringUtils.format("%s --  %s", rowkey, contextid));
+
+		Result.Builder resultBuilder = Result.newBuilder().setMetadata(Result.Metadata.newBuilder().addContext(getContext(contextid)));
+		OafEntity.Builder entityBuilder = OafEntity.newBuilder().setId(rowkey).setType(Type.result).setResult(resultBuilder);
+		Oaf.Builder builder = Oaf.newBuilder().setKind(Kind.entity).setLastupdatetimestamp(timestamp).setEntity(entityBuilder);
+
+		return Base64.encodeBase64String(builder.build().toByteArray());
+	}
+
+	private Context getContext(final String sourceId) {
+		return Context.newBuilder().addDataInfo(getDataInfo()).setId(sourceId).build();
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidWorkflowsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidWorkflowsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidWorkflowsJobNode.java	(revision 60998)
@@ -0,0 +1,72 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.consistency;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+
+public class FindInvalidWorkflowsJobNode extends SimpleJobNode {
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	private static final Log log = LogFactory.getLog(FindInvalidWorkflowsJobNode.class);
+
+	private boolean deleteInvalidProfiles = false;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final ISLookUpService lookup = serviceLocator.getService(ISLookUpService.class);
+		final ISRegistryService registry = serviceLocator.getService(ISRegistryService.class);
+
+		final String q1 =
+				"for $x in collection('/db/DRIVER/MetaWorkflowDSResources/MetaWorkflowDSResourceType')//WORKFLOW/@id|//CONFIGURATION/@destroyWorkflow return $x/string()";
+
+		final String q2 = "for $x in collection('/db/DRIVER/WorkflowDSResources/WorkflowDSResourceType') return $x//RESOURCE_IDENTIFIER/@value/string()";
+
+		final Set<String> valids = new HashSet<>(lookup.quickSearchProfile(q1));
+
+		int count = 0;
+		int countInvalids = 0;
+		int countDeleted = 0;
+		for (final String wfId : lookup.quickSearchProfile(q2)) {
+			count++;
+			if (!valids.contains(wfId)) {
+				log.warn("Invalid wf: " + wfId);
+				countInvalids++;
+				if (deleteInvalidProfiles) {
+					registry.deleteProfile(wfId);
+					log.info(" -- Deleted");
+					countDeleted++;
+				}
+
+			}
+		}
+
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "total", count);
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "invalid", countInvalids);
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "deleted", countDeleted);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public boolean isDeleteInvalidProfiles() {
+		return deleteInvalidProfiles;
+	}
+
+	public void setDeleteInvalidProfiles(final boolean deleteInvalidProfiles) {
+		this.deleteInvalidProfiles = deleteInvalidProfiles;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FixRepoMdstoreSizesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FixRepoMdstoreSizesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FixRepoMdstoreSizesJobNode.java	(revision 60998)
@@ -0,0 +1,231 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.consistency;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.antlr.stringtemplate.StringTemplate;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.io.SAXReader;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.data.mdstore.MDStoreServiceException;
+import eu.dnetlib.data.mdstore.modular.connector.MDStoreDao;
+import eu.dnetlib.data.objectstore.modular.connector.ObjectStoreDao;
+import eu.dnetlib.data.objectstore.rmi.ObjectStoreServiceException;
+import eu.dnetlib.enabling.datasources.LocalOpenaireDatasourceManager;
+import eu.dnetlib.enabling.datasources.common.Api;
+import eu.dnetlib.enabling.datasources.common.ApiParam;
+import eu.dnetlib.enabling.datasources.common.DsmException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryException;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.miscutils.datetime.DateUtils;
+import eu.dnetlib.msro.workflows.nodes.ProgressJobNode;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.ProgressProvider;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+
+public class FixRepoMdstoreSizesJobNode extends SimpleJobNode implements ProgressJobNode {
+
+	@Autowired
+	private LocalOpenaireDatasourceManager dsManager;
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	@Resource(name = "mongodbMDStoreDao")
+	private MDStoreDao mdstoreDao;
+
+	@Autowired
+	private ObjectStoreDao objectStoreDao;
+
+	private final DateUtils dateUtils = new DateUtils();
+
+	private int current = 0;
+	private int total = 0;
+
+	private ISRegistryService registry;
+	private ISLookUpService lookup;
+
+	private final Map<String, String> openaireIds = new HashMap<>();
+	private boolean alwaysUpdate = false;
+
+	private static final Log log = LogFactory.getLog(FixRepoMdstoreSizesJobNode.class);
+
+	public void init(final int total) {
+		this.current = 0;
+		this.total = total;
+		this.lookup = serviceLocator.getService(ISLookUpService.class);
+		this.registry = serviceLocator.getService(ISRegistryService.class);
+		try {
+			openaireIds.putAll(lookup.quickSearchProfile(
+					"for $x in collection('/db/DRIVER/RepositoryServiceResources/RepositoryServiceResourceType') return concat($x//DATASOURCE_ORIGINAL_ID, ' @@@ ', $x//RESOURCE_IDENTIFIER/@value)")
+					.stream()
+					.collect(Collectors.toMap(
+							s -> StringUtils.substringBefore(s, "@@@").trim(),
+							s -> StringUtils.substringAfter(s, "@@@").trim())));
+		} catch (final ISLookUpException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+	}
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final Set<String> list = dsManager.listManagedDatasourceIds();
+
+		init(list.size());
+
+		for (final String dsId : list) {
+			log.info("Processing ds: " + dsId);
+
+			current++;
+
+			try {
+				for (final Api<ApiParam> api : dsManager.getApis(dsId)) {
+					verifyApi(dsId, api);
+				}
+			} catch (final Throwable e) {
+				log.error("Error processing ds: " + dsId, e);
+				token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + dsId, e.getMessage());
+			}
+		}
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	private void verifyApi(final String dsId, final Api<ApiParam> api)
+			throws DsmException, ISRegistryException, IOException, ISLookUpException, MDStoreServiceException, ObjectStoreServiceException {
+
+		for (final Document doc : listCollectionMdStores(dsId, api.getId())) {
+			final String mdId = doc.valueOf("//RESOURCE_IDENTIFIER/@value");
+			final int actualSize = NumberUtils.toInt(doc.valueOf("//NUMBER_OF_RECORDS"), 0);
+			final int size = mdstoreDao.getMDStore(mdId).getSize();
+			if (alwaysUpdate || size != actualSize) {
+				log.info("  -- Updating size of api " + api.getId() + ", new value = " + size);
+				updateMdStoreProfile(mdId, doc, size);
+				dsManager.setLastCollectionInfo(dsId, api.getId(), mdId, size, calculateLastDate(doc));
+			}
+		}
+
+		for (final Document doc : listTransformationMdStores(dsId, api.getId())) {
+			final String mdId = doc.valueOf("//RESOURCE_IDENTIFIER/@value");
+			final int actualSize = NumberUtils.toInt(doc.valueOf("//NUMBER_OF_RECORDS"), 0);
+			final int size = mdstoreDao.getMDStore(mdId).getSize();
+			if (alwaysUpdate || size != actualSize) {
+				updateMdStoreProfile(mdId, doc, size);
+				dsManager.setLastAggregationInfo(dsId, api.getId(), mdId, size, calculateLastDate(doc));
+			}
+		}
+
+		for (final Document doc : listDownloadObjectStores(dsId, api.getId())) {
+			final String objId = doc.valueOf("//RESOURCE_IDENTIFIER/@value");
+			final int actualSize = NumberUtils.toInt(doc.valueOf("//STORE_SIZE"), 0);
+			final int size = objectStoreDao.getObjectStore(objId).getSize();
+			if (alwaysUpdate || size != actualSize) {
+				updateObjStoreProfile(objId, doc, size);
+				dsManager.setLastDownloadInfo(dsId, api.getId(), objId, size, calculateLastDate(doc));
+			}
+		}
+	}
+
+	private Date calculateLastDate(final Document doc) {
+		final String dateS = doc.valueOf("//LAST_STORAGE_DATE");
+		final Date date = StringUtils.isNoneBlank(dateS) ? dateUtils.parse(dateS) : new Date();
+		return date;
+	}
+
+	private List<Document> listCollectionMdStores(final String dsId, final String apiId) throws ISLookUpException, IOException {
+		return executeXquery("listCollectionMdStores.xquery.st", dsId, apiId);
+	}
+
+	private List<Document> listTransformationMdStores(final String dsId, final String apiId) throws ISLookUpException, IOException {
+		return executeXquery("listTransformationMdStores.xquery.st", dsId, apiId);
+	}
+
+	private List<Document> listDownloadObjectStores(final String dsId, final String apiId) throws ISLookUpException, IOException {
+		return executeXquery("listDownloadObjectStores.xquery.st", dsId, apiId);
+	}
+
+	private List<Document> executeXquery(final String template, final String dsId, final String apiId) throws ISLookUpException, IOException {
+		final StringTemplate st = new StringTemplate(IOUtils.toString(getClass().getResourceAsStream(template)));
+		st.setAttribute("dsId", openaireIds.get(dsId));
+		st.setAttribute("apiId", apiId);
+
+		final SAXReader reader = new SAXReader();
+
+		return lookup.quickSearchProfile(st.toString())
+				.stream()
+				.map(s -> {
+					try {
+						return reader.read(new StringReader(s));
+					} catch (final DocumentException e) {
+						return null;
+					}
+				})
+				.filter(Objects::nonNull)
+				.collect(Collectors.toList());
+	}
+
+	private void updateMdStoreProfile(final String mdId, final Document doc, final int size) throws ISRegistryException {
+		doc.selectSingleNode("//NUMBER_OF_RECORDS").setText(Integer.toString(size));
+		registry.updateProfile(mdId, doc.asXML(), "MDStoreDSResourceType");
+	}
+
+	private void updateObjStoreProfile(final String objId, final Document doc, final int size) throws ISRegistryException {
+		doc.selectSingleNode("//COUNT_STORE").setText(Integer.toString(size));
+		doc.selectSingleNode("//STORE_SIZE").setText(Integer.toString(size));
+		registry.updateProfile(objId, doc.asXML(), "ObjectStoreDSResourceType");
+	}
+
+	public boolean isAlwaysUpdate() {
+		return alwaysUpdate;
+	}
+
+	public void setAlwaysUpdate(final boolean alwaysUpdate) {
+		this.alwaysUpdate = alwaysUpdate;
+	}
+
+	@Override
+	public ProgressProvider getProgressProvider() {
+		return new ProgressProvider() {
+
+			@Override
+			public int getTotalValue() {
+				return total;
+			}
+
+			@Override
+			public int getCurrentValue() {
+				return current;
+			}
+
+			@Override
+			public boolean isInaccurate() {
+				return false;
+			}
+		};
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/PrepareActionSetsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/PrepareActionSetsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/PrepareActionSetsJobNode.java	(revision 60998)
@@ -0,0 +1,104 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.actions;
+
+import java.util.List;
+import java.util.Map;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Maps;
+import com.google.gson.Gson;
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.actionmanager.set.RawSet;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.miscutils.datetime.DateUtils;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.fs.Path;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class PrepareActionSetsJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(PrepareActionSetsJobNode.class);
+
+	private String ACTIONSET_PATH_XQUERY_TEMPLATE =
+			"for $x in collection('/db/DRIVER/ActionManagerSetDSResources/ActionManagerSetDSResourceType') "
+					+ "return $x/RESOURCE_PROFILE/BODY/SET[@id = '%s']/@directory/string()";
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	private String sets;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		final List<Map<String, String>> setList = getSetList();
+		final String now = DateUtils.now_ISO8601();
+
+		final ISLookUpService lookUpService = serviceLocator.getService(ISLookUpService.class);
+		final String basePath = lookUpService.getResourceProfileByQuery(
+				"/RESOURCE_PROFILE[./HEADER/RESOURCE_TYPE/@value='ActionManagerServiceResourceType']//SERVICE_PROPERTIES/PROPERTY[@key='basePath']/@value/string()");
+
+		for (Map<String, String> set : setList) {
+
+			set.put("rawset", RawSet.newInstance().getId());
+			set.put("creationDate", now);
+			set.put("path", getFullPath(basePath, set, lookUpService));
+
+			if (set.get("enabled").equals("true")) {
+				log.info("preparing set: " + simplifySetInfo(set));
+			}
+			// setting the job properties needed to name the rawsets
+			token.getEnv().setAttribute(set.get("jobProperty"), set.get("rawset"));
+		}
+
+		token.getEnv().setAttribute("sets", new Gson().toJson(setList));
+		token.getEnv().setAttribute("actionManagerBasePath", basePath);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	private String getFullPath(final String basePath, final Map<String, String> set, final ISLookUpService lookUpService) throws MSROException {
+		return new Path(basePath + "/" + getPath(set.get("set"), lookUpService) + "/" + set.get("rawset")).toString();
+	}
+
+	private String getPath(final String setId, final ISLookUpService lookUpService) throws MSROException {
+		try {
+			return lookUpService.getResourceProfileByQuery(String.format(ACTIONSET_PATH_XQUERY_TEMPLATE, setId));
+		} catch (ISLookUpException e) {
+			throw new MSROException(String.format("Error obtaining directory from ActionSet profile %s", setId), e);
+		}
+	}
+
+	private Map<String, String> simplifySetInfo(final Map<String, String> set) {
+		return Maps.filterKeys(set, new Predicate<String>() {
+
+			@Override
+			public boolean apply(final String k) {
+
+				return k.equals("set") || k.equals("rawset");
+			}
+		});
+	}
+
+	@SuppressWarnings("unchecked")
+	protected List<Map<String, String>> getSetList() {
+		return new Gson().fromJson(getSets(), List.class);
+	}
+
+	public String getSets() {
+		return sets;
+	}
+
+	public void setSets(final String sets) {
+		this.sets = sets;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/PromoteActionsHDFSJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/PromoteActionsHDFSJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/PromoteActionsHDFSJobNode.java	(revision 60998)
@@ -0,0 +1,40 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.actions;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.actionmanager.rmi.ActionManagerService;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * Created by claudio on 14/04/16.
+ */
+public class PromoteActionsHDFSJobNode extends BlackboardJobNode {
+
+	public static final String ALL_SETS = "ALL SETS";
+
+	private String set;
+
+	@Override
+	protected String obtainServiceId(final NodeToken token) {
+		return getServiceLocator().getServiceId(ActionManagerService.class);
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		job.setAction("PROMOTE_FROM_HDFS");
+		if (!StringUtils.isBlank(getSet()) && !getSet().equals(ALL_SETS)) {
+			job.getParameters().put("set", getSet());
+			token.getEnv().setAttribute("set", getSet());
+		}
+	}
+
+	public String getSet() {
+		return set;
+	}
+
+	public void setSet(final String set) {
+		this.set = set;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/UpdateSetsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/UpdateSetsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/UpdateSetsJobNode.java	(revision 60998)
@@ -0,0 +1,85 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.actions;
+
+import java.io.StringReader;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.Resource;
+
+import com.google.gson.Gson;
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.miscutils.datetime.DateUtils;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Attribute;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+public class UpdateSetsJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(UpdateSetsJobNode.class);
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		@SuppressWarnings("unchecked")		final List<Map<String, String>> sets = new Gson().fromJson(token.getEnv().getAttribute("sets"), List.class);
+
+		final String lastUpdate = DateUtils.now_ISO8601();
+		for (Map<String, String> set : sets) {
+
+			// update only the enabled sets.
+			if (isEnabled(set)) {
+				log.info("updating set: " + set.toString());
+				addLatestRawSet(set, lastUpdate);
+			} else {
+				log.info("skip set update: " + set.toString());
+			}
+		}
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	private boolean isEnabled(final Map<String, String> set) {
+		return set.containsKey("enabled") && set.get("enabled").equals("true");
+	}
+
+	public void addLatestRawSet(final Map<String, String> set, final String lastUpdate) throws MSROException {
+		final String q = "for $x in collection('/db/DRIVER/ActionManagerSetDSResources/ActionManagerSetDSResourceType') where $x//SET/@id = '" + set.get("set")
+				+ "' return $x";
+		try {
+			final String profile = serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(q);
+			final Document doc = new SAXReader().read(new StringReader(profile));
+			final String profId = doc.valueOf("//RESOURCE_IDENTIFIER/@value");
+			final Element latest = (Element) doc.selectSingleNode("//RAW_SETS/LATEST");
+			final Element expired = ((Element) doc.selectSingleNode("//RAW_SETS")).addElement("EXPIRED");
+
+			for (Object o : latest.attributes()) {
+				final Attribute a = (Attribute) o;
+				expired.addAttribute(a.getName(), a.getValue());
+			}
+
+			latest.addAttribute("id", set.get("rawset"));
+			latest.addAttribute("creationDate", set.get("creationDate"));
+			latest.addAttribute("lastUpdate", lastUpdate);
+
+			serviceLocator.getService(ISRegistryService.class).updateProfile(profId, doc.asXML(), "ActionManagerSetDSResourceType");
+		} catch (Exception e) {
+			String msg = "Error updating profile of set: " + set;
+			log.error(msg);
+			throw new MSROException(msg, e);
+		}
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/GarbageSetsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/GarbageSetsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/GarbageSetsJobNode.java	(revision 60998)
@@ -0,0 +1,28 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.actions;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.actionmanager.rmi.ActionManagerService;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class GarbageSetsJobNode extends BlackboardJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(GarbageSetsJobNode.class);
+
+	@Override
+	protected String obtainServiceId(final NodeToken token) {
+		return getServiceLocator().getServiceId(ActionManagerService.class);
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		log.info("preparing garbage collection for Action sets Job");
+		job.setAction("GARBAGE");
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/BuildH2020FETTaxonomy.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/BuildH2020FETTaxonomy.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/BuildH2020FETTaxonomy.java	(revision 60998)
@@ -0,0 +1,279 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.contexts;
+
+import java.io.IOException;
+import java.util.*;
+
+import com.google.common.collect.Maps;
+import com.ximpleware.AutoPilot;
+import com.ximpleware.VTDException;
+import com.ximpleware.VTDGen;
+import com.ximpleware.VTDNav;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.joda.time.DateTime;
+
+import static eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions.md5;
+
+public class BuildH2020FETTaxonomy {
+
+	private static final Log log = LogFactory.getLog(BuildH2020FETTaxonomy.class);
+
+	private Iterator<String> projects;
+	private Map<String, Map<String, Map<String, List<Info>>>> dic;
+
+	public BuildH2020FETTaxonomy() {
+		dic = Maps.newHashMap();
+	}
+
+	public void setIterator(Iterator<String> projects) {
+		this.projects = projects;
+	}
+
+	public String parseProjects() throws Exception {
+		while (projects.hasNext())
+			parse(projects.next());
+		return getTaxonomy();
+	}
+
+	public String getTaxonomy() throws Exception {
+		Document taxonomy = DocumentHelper.createDocument();
+		Element root1 = taxonomy.addElement("RESOURCE_PROFILE");
+		createHeader(root1);
+		Element body = root1.addElement("BODY");
+		Element configurationElement = body.addElement("CONFIGURATION");
+		createContext(configurationElement);
+		body.addElement("STATUS");
+		body.addElement("SECURITY_PARAMETERS");
+		return taxonomy.getDocument().asXML();
+
+	}
+
+	private void createContext(final Element configurationElement) {
+		Element context = configurationElement.addElement("context");
+		context.addAttribute("type", "community");
+		context.addAttribute("id", "fet-h2020");
+		context.addAttribute("label", "FET H2020");
+		for (Map.Entry<String, Map<String, Map<String, List<Info>>>> entry : dic.entrySet()) {
+			String type = entry.getKey();
+			Element cat = context.addElement("category");
+			String catid = "fet-h2020::" + type.toLowerCase();
+			cat.addAttribute("id", catid);
+			cat.addAttribute("label", "FET " + type);
+			cat.addAttribute("claim", "false");
+			//int count = 0;
+			for (Map.Entry<String, Map<String, List<Info>>> entryst : dic.get(type).entrySet()) {
+				String subtype = entryst.getKey();
+				for (Map.Entry<String, List<Info>> entryp : dic.get(type).get(subtype).entrySet()) {
+					String opt = entryp.getKey();
+			//		count++;
+					Element subcat = cat.addElement("concept");
+					String proj_md5 = md5(opt).substring(0,12);
+					//String subcatid = catid + "::" + count;
+					String subcatid = catid + "::" + proj_md5;
+					subcat.addAttribute("id", subcatid);
+					Element pa = subcat.addElement("param");
+					pa.addAttribute("name", "CALL_ID");
+					List<Info> projectRows = dic.get(type).get(subtype).get(opt);
+					if (!projectRows.isEmpty()) {
+						for (Info row : projectRows) {
+							createProjectConcept(row, subcat, subcatid);
+						}
+						subcat.addAttribute("label", projectRows.get(0).getCallname());
+						subcat.addAttribute("claim", "false");
+						pa.setText(projectRows.get(0).getCallID());
+					} else throw new RuntimeException("The lis of projects for " + subcatid + " is empty. This exception should never be thrown.");
+				}
+			}
+		}
+	}
+
+	private void createProjectConcept(Info row, Element father, String prefix) {
+		String code = row.getCode();
+		String acronym = row.getAcronym();
+		String title = row.getTitle();
+		String projcallid = row.getProjcallid();
+		Element concept = father.addElement("concept");
+		concept.addAttribute("id", prefix + "::" + code);
+		concept.addAttribute("label", title);
+		concept.addAttribute("claim", "true");
+		Element p = concept.addElement("param");
+		p.addAttribute("name", "CD_PROJ_ID");
+		p.setText(code);
+		p = concept.addElement("param");
+		p.addAttribute("name", "CD_CALL_ID");
+		p.setText(projcallid);
+		p = concept.addElement("param");
+		p.addAttribute("name", "CD_PROJECT_NUMBER");
+		p.setText(code);
+		p = concept.addElement("param");
+		p.addAttribute("name", "CD_ACRONYM");
+		p.setText(acronym);
+		p = concept.addElement("param");
+		p.addAttribute("name", "CD_FRAMEWORK");
+		p.setText("H2020");
+		p = concept.addElement("param");
+		p.addAttribute("name", "funder");
+		p.setText("EC");
+	}
+
+	private void createHeader(final Element profile) {
+		Element header = profile.addElement("HEADER");
+		Element rs = header.addElement("RESOURCE_IDENTIFIER");
+		rs.addAttribute("value", "");
+		Element rt = header.addElement("RESOURCE_TYPE");
+		rt.addAttribute("value", "ContextDSResourceType");
+		Element rk = header.addElement("RESOURCE_KIND");
+		rk.addAttribute("value", "ContextDSResources");
+		Element ru = header.addElement("RESOURCE_URI");
+		ru.addAttribute("value", "");
+		Element daoc = header.addElement("DATE_OF_CREATION");
+		daoc.addAttribute("value", DateTime.now().toString());
+	}
+
+	private boolean parse(String project) throws VTDException, IOException {
+		boolean fet = false;
+		String callid = "";
+		String projectid = "";
+		VTDGen vg = new VTDGen();
+		vg.setDoc(project.getBytes("UTF-8"));
+		vg.parse(false);
+		VTDNav vn = vg.getNav();
+		AutoPilot ap = new AutoPilot(vn);
+		ap.selectXPath("//metadata/ROWS/ROW[@table=\"projects\"]");
+
+		while (ap.evalXPath() != -1) {
+			AutoPilot ap1 = new AutoPilot(vn);
+			ap1.selectXPath("./FIELD[@name=\"call_identifier\"]");
+			if (ap1.evalXPath() != -1)
+				callid = vn.toNormalizedString(vn.getText());
+			ap1.clearVariableExprs();
+			vn.toElement(VTDNav.PARENT);
+			ap1.selectXPath("./FIELD[@name=\"optional1\"]");
+			if (ap1.evalXPath() != -1)
+				projectid = vn.toNormalizedString(vn.getText());
+			if (callid.contains("FET")) {
+				String type;
+				if (callid.contains("OPEN"))
+					type = "OPEN";
+				else if (callid.contains("PROACT"))
+					type = "PROACT";
+				else if (callid.contains("HPC"))
+					type = "HPC";
+				else
+					type = "FLAG";
+				vn.toElement(VTDNav.ROOT);
+				fet = true;
+				insert(type, callid, projectid, new Info(vn));
+			}
+		}
+		return fet;
+	}
+
+	private void insert(String type, String callid, String projcallid, Info row) {
+		Map<String, Map<String, List<Info>>> dopen;
+		Map<String, List<Info>> entry;
+		List<Info> projects;
+		if (dic.containsKey(type)) {
+			dopen = dic.get(type);
+			if (dopen.containsKey(callid)) {
+				entry = dopen.get(callid);
+				if (entry.containsKey(projcallid)) {
+					entry.get(projcallid).add(row);
+				} else {
+					projects = new ArrayList<>();
+					projects.add(row);
+					entry.put(projcallid, projects);
+				}
+			} else {
+				projects = new ArrayList<>();
+				entry = new HashMap<>();
+				projects.add(row);
+				entry.put(projcallid, projects);
+				dopen.put(callid, entry);
+			}
+		} else {
+			projects = new ArrayList<>();
+			entry = new HashMap<>();
+			dopen = new HashMap<>();
+			projects.add(row);
+			entry.put(projcallid, projects);
+			dopen.put(callid, entry);
+			dic.put(type, dopen);
+		}
+	}
+
+	public void parseFETProject(int projects_number) throws VTDException, IOException {
+		int parsed = 0;
+		while (projects.hasNext() && parsed < projects_number) {
+			if (parse(projects.next()))
+				parsed++;
+		}
+		log.debug(parsed);
+	}
+
+	private class Info {
+
+		VTDNav vn;
+		private String code, acronym, title, call_identifier, projcallid, callname;
+
+		public String getCode() {
+			return code;
+		}
+
+		public String getAcronym() {
+			return acronym;
+		}
+
+		public String getTitle() {
+			return title;
+		}
+
+		public String getCallID() {
+			return call_identifier;
+		}
+
+		public String getProjcallid() {
+			return projcallid;
+		}
+
+		public String getCallname() {
+			return callname;
+		}
+
+		public Info(VTDNav vn) {
+			this.vn = vn;
+			parse();
+		}
+
+		private void parse() {
+			try {
+				AutoPilot ap = new AutoPilot(vn);
+				ap.selectXPath("//FIELD");
+				while (ap.evalXPath() != -1) {
+					String aname = vn.toNormalizedString(vn.getAttrVal("name"));
+					String text = "";
+					if (vn.getText() != -1)
+						text = vn.toNormalizedString(vn.getText());
+					if (aname.equals("code"))
+						code = text;
+					else if (aname.equals("acronym"))
+						acronym = text;
+					else if (aname.equals("title"))
+						title = text;
+					else if (aname.equals("call_identifier"))
+						call_identifier = text;
+					else if (aname.equals("optional1"))
+						projcallid = text;
+					else if (aname.equals("optional2"))
+						callname = text;
+				}
+			} catch (Exception e) {
+			}
+		}
+
+	}
+
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/GenerateFETH2020ContextJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/GenerateFETH2020ContextJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/GenerateFETH2020ContextJobNode.java	(revision 60998)
@@ -0,0 +1,110 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.contexts;
+
+import java.util.List;
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryException;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.enabling.resultset.client.ResultSetClientFactory;
+import eu.dnetlib.msro.workflows.nodes.ProgressJobNode;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.resultset.ProcessCountingResultSetFactory;
+import eu.dnetlib.msro.workflows.util.ProgressProvider;
+import eu.dnetlib.msro.workflows.util.ResultsetProgressProvider;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class GenerateFETH2020ContextJobNode extends SimpleJobNode implements ProgressJobNode {
+
+	private static final Log log = LogFactory.getLog(GenerateFETH2020ContextJobNode.class);
+	private String eprParam;
+	private ResultsetProgressProvider progressProvider;
+	@Resource
+	private ResultSetClientFactory resultSetClientFactory;
+	@Resource
+	private ProcessCountingResultSetFactory processCountingResultSetFactory;
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Override
+	public ProgressProvider getProgressProvider() {
+		return this.progressProvider;
+	}
+
+	@Override
+	protected String execute(NodeToken token) throws Exception {
+		final String epr = token.getEnv().getAttribute(eprParam);
+
+		this.progressProvider = processCountingResultSetFactory.createProgressProvider(token.getProcess(), epr);
+
+		final Iterable<String> iter = resultSetClientFactory.getClient(progressProvider.getEpr());
+
+		BuildH2020FETTaxonomy builder = new BuildH2020FETTaxonomy();
+		builder.setIterator(iter.iterator());
+		String taxonomy = builder.parseProjects();
+		final String xquery = "for $x in collection('/db/DRIVER/ContextDSResources/ContextDSResourceType') "
+				+ "where $x//CONFIGURATION/context[@id='fet-h2020'] return $x//RESOURCE_IDENTIFIER/@value/string()";
+		List<String> list = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery);
+		if (list.isEmpty()) {
+			registerProfile(taxonomy);
+		} else {
+			deleteProfile(list.get(0));
+			registerProfile(taxonomy);
+		}
+		return Arc.DEFAULT_ARC;
+	}
+
+	private void registerProfile(String profile) throws ISRegistryException {
+		log.info("registering fet-h2020 profile");
+		ISRegistryService is = serviceLocator.getService(ISRegistryService.class);
+		String id = is.registerProfile(profile);
+		log.info("Generating profile with id " + id);
+	}
+
+	private void deleteProfile(String profId) throws ISRegistryException {
+		log.info("deleting fet-h2020 profile with id " + profId);
+		ISRegistryService is = serviceLocator.getService(ISRegistryService.class);
+		is.deleteProfile(profId);
+	}
+
+	public String getEprParam() {
+		return eprParam;
+	}
+
+	public void setEprParam(final String eprParam) {
+		this.eprParam = eprParam;
+	}
+
+	public void setProgressProvider(final ResultsetProgressProvider progressProvider) {
+		this.progressProvider = progressProvider;
+	}
+
+	public ResultSetClientFactory getResultSetClientFactory() {
+		return resultSetClientFactory;
+	}
+
+	public void setResultSetClientFactory(final ResultSetClientFactory resultSetClientFactory) {
+		this.resultSetClientFactory = resultSetClientFactory;
+	}
+
+	public ProcessCountingResultSetFactory getProcessCountingResultSetFactory() {
+		return processCountingResultSetFactory;
+	}
+
+	public void setProcessCountingResultSetFactory(final ProcessCountingResultSetFactory processCountingResultSetFactory) {
+		this.processCountingResultSetFactory = processCountingResultSetFactory;
+	}
+
+	public UniqueServiceLocator getServiceLocator() {
+		return serviceLocator;
+	}
+
+	public void setServiceLocator(final UniqueServiceLocator serviceLocator) {
+		this.serviceLocator = serviceLocator;
+	}
+
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/bulktag/LoadBulkTaggingConfigurationJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/bulktag/LoadBulkTaggingConfigurationJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/bulktag/LoadBulkTaggingConfigurationJobNode.java	(revision 60998)
@@ -0,0 +1,104 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.bulktag;
+
+import com.google.common.base.Joiner;
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.bulktag.CommunityConfigurationFactory;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+public class LoadBulkTaggingConfigurationJobNode extends SimpleJobNode {
+
+    private static final Log log = LogFactory.getLog(LoadBulkTaggingConfigurationJobNode.class);
+
+    @Autowired
+    private UniqueServiceLocator serviceLocator;
+
+    private String xquery;
+
+    private String bulkTaggingConfParam;
+
+    private String enabledConfParam;
+
+    private boolean enabled;
+
+    private String mappingProtoParam;
+
+    private String mapping;
+
+
+
+    public void setMappingProtoParam(String mappingProtoParam) {
+        this.mappingProtoParam = mappingProtoParam;
+
+    }
+
+    public String getMappingProtoParam() {
+        return mappingProtoParam;
+    }
+
+    public String getMapping() {
+        return mapping;
+    }
+
+    public void setMapping(String mapping) {
+        this.mapping = mapping;
+
+    }
+
+    @Override
+    protected String execute(final NodeToken token) throws Exception {
+
+        final List<String> res = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(getXquery());
+
+        final String xmlConf = "<communities>" + Joiner.on(" ").join(res) + "</communities>";
+
+        token.getEnv().setAttribute(getBulkTaggingConfParam(), CommunityConfigurationFactory.newInstance(xmlConf).toJson());
+        token.getEnv().setAttribute(getEnabledConfParam(),isEnabled());
+        token.getEnv().setAttribute(getMappingProtoParam(),getMapping());
+        return Arc.DEFAULT_ARC;
+    }
+
+    public String getXquery() {
+        log.debug(xquery);
+        return xquery;
+    }
+
+    public void setXquery(final String xquery) {
+        this.xquery = xquery;
+
+    }
+
+    public String getBulkTaggingConfParam() {
+        return bulkTaggingConfParam;
+    }
+
+    public void setBulkTaggingConfParam(final String bulkTaggingConfParam) {
+        this.bulkTaggingConfParam = bulkTaggingConfParam;
+    }
+
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    public void setEnabled(boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    public String getEnabledConfParam() {
+        return enabledConfParam;
+    }
+
+    public void setEnabledConfParam(String enabledConfParam) {
+        this.enabledConfParam = enabledConfParam;
+    }
+
+
+
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/AbstractClaimsToHBASE.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/AbstractClaimsToHBASE.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/AbstractClaimsToHBASE.java	(revision 60998)
@@ -0,0 +1,155 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.claims;
+
+import eu.dnetlib.data.mapreduce.util.OafRowKeyDecoder;
+import eu.dnetlib.data.proto.FieldTypeProtos.DataInfo;
+import eu.dnetlib.data.proto.FieldTypeProtos.Qualifier;
+import eu.dnetlib.data.transform.xml.AbstractDNetXsltFunctions;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.ProgressJobNode;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.ProgressProvider;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Created by Alessia Bardi on 28/06/2017.
+ *
+ * @author Alessia Bardi
+ */
+public abstract class AbstractClaimsToHBASE extends SimpleJobNode implements ProgressJobNode {
+
+	private static final Log log = LogFactory.getLog(AbstractClaimsToHBASE.class);
+
+	private String sql;
+	private String countQuery;
+
+	private int total = 0;
+	private int processed = 0;
+
+	private String clusterName;
+	private String tableName;
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	@Autowired
+	private ClaimDatabaseUtils claimDatabaseUtils;
+
+	@Override
+	public ProgressProvider getProgressProvider() {
+		return new ProgressProvider() {
+
+			@Override
+			public boolean isInaccurate() {
+				return false;
+			}
+
+			@Override
+			public int getTotalValue() {
+				return total;
+			}
+
+			@Override
+			public int getCurrentValue() {
+				return processed;
+			}
+		};
+	}
+
+	protected String getOpenAIREType(final String type) {
+		switch (type) {
+		case "publication":
+		case "dataset":
+		case "software":
+		case "other":
+			return "result";
+		default:
+			return type;
+		}
+	}
+
+	protected String getFullId(final String type, final String id) {
+		final String fullId = AbstractDNetXsltFunctions.oafSimpleId(type, id);
+		return OafRowKeyDecoder.decode(fullId).getKey();
+	}
+
+	protected static DataInfo getDataInfo() {
+		return DataInfo.newBuilder().setTrust("0.91").setInferred(false)
+				.setProvenanceaction(
+						Qualifier.newBuilder()
+								.setClassid("user:claim")
+								.setClassname("user:claim")
+								.setSchemeid("dnet:provenanceActions")
+								.setSchemename("dnet:provenanceActions")).build();
+
+	}
+
+	public String getSql() {
+		return sql;
+	}
+
+	public void setSql(final String sql) {
+		this.sql = sql;
+	}
+
+	public String getCountQuery() {
+		return countQuery;
+	}
+
+	public void setCountQuery(final String countQuery) {
+		this.countQuery = countQuery;
+	}
+
+	public int getTotal() {
+		return total;
+	}
+
+	public void setTotal(final int total) {
+		this.total = total;
+	}
+
+	public int getProcessed() {
+		return processed;
+	}
+
+	public void setProcessed(final int processed) {
+		this.processed = processed;
+	}
+
+	public void incrementProcessed() {
+		processed++;
+	}
+
+	public String getClusterName() {
+		return clusterName;
+	}
+
+	public void setClusterName(final String clusterName) {
+		this.clusterName = clusterName;
+	}
+
+	public String getTableName() {
+		return tableName;
+	}
+
+	public void setTableName(final String tableName) {
+		this.tableName = tableName;
+	}
+
+	public UniqueServiceLocator getServiceLocator() {
+		return serviceLocator;
+	}
+
+	public void setServiceLocator(final UniqueServiceLocator serviceLocator) {
+		this.serviceLocator = serviceLocator;
+	}
+
+	public ClaimDatabaseUtils getClaimDatabaseUtils() {
+		return claimDatabaseUtils;
+	}
+
+	public void setClaimDatabaseUtils(final ClaimDatabaseUtils claimDatabaseUtils) {
+		this.claimDatabaseUtils = claimDatabaseUtils;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/DecapsuleClaimsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/DecapsuleClaimsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/DecapsuleClaimsJobNode.java	(revision 60998)
@@ -0,0 +1,104 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.claims;
+
+import java.io.StringReader;
+import javax.annotation.Resource;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.resultset.MappedResultSetFactory;
+import eu.dnetlib.enabling.resultset.client.utils.EPRUtils;
+import eu.dnetlib.miscutils.functional.UnaryFunction;
+import eu.dnetlib.msro.openaireplus.workflows.nodes.SetHdfsFileJobNode;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.Namespace;
+import org.dom4j.QName;
+import org.dom4j.io.SAXReader;
+
+/**
+ * TODO: this class can be deleted when we are using the new claim database
+ */
+@Deprecated
+public class DecapsuleClaimsJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(SetHdfsFileJobNode.class);
+
+	private static final Namespace OAF_NS = new Namespace("oaf", "http://namespace.openaire.eu/oaf");
+	private static final double DEFAULT_TRUST = 0.9;
+
+	private String inputEprParam;
+	private String outputEprParam;
+
+	@Resource
+	private MappedResultSetFactory mappedResultSetFactory;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final UnaryFunction<String, String> mapper = new UnaryFunction<String, String>() {
+
+			final SAXReader reader = new SAXReader();
+
+			@Override
+			public String evaluate(final String row) {
+				try {
+					final Document docRow = reader.read(new StringReader(row));
+
+					final String xml = docRow.valueOf("//ROW/FIELD[@name = 'xml']");
+					final String provenance = docRow.valueOf("//ROW/FIELD[@name = 'provenance']");
+
+					final Document doc = reader.read(new StringReader(xml));
+					final Element record = (Element) doc.selectSingleNode("//*[local-name() = 'record']");
+					final Element about = record.addElement(new QName("about"));
+					final Element dataInfo = about.addElement(new QName("datainfo", OAF_NS));
+
+					dataInfo.addElement(new QName("inferred", OAF_NS)).setText("false");
+					dataInfo.addElement(new QName("deletedbyinference", OAF_NS)).setText("false");
+					dataInfo.addElement(new QName("trust", OAF_NS)).setText(Double.toString(DEFAULT_TRUST));
+					dataInfo.addElement(new QName("inferenceprovenance", OAF_NS)).setText("");
+
+					final Element action = dataInfo.addElement(new QName("provenanceaction", OAF_NS));
+					action.addAttribute("schemename", "dnet:provenanceActions");
+					action.addAttribute("schemeid", "dnet:provenanceActions");
+					action.addAttribute("classname", provenance);
+					action.addAttribute("classid", provenance);
+
+					return doc.asXML();
+				} catch (Throwable e) {
+					log.error("Error parsing row: " + row, e);
+					throw new IllegalArgumentException("Error parsing row: " + row, e);
+				}
+			}
+		};
+
+		final W3CEndpointReference inputEpr = new EPRUtils().getEpr(token.getEnv().getAttribute(getInputEprParam()));
+		final W3CEndpointReference epr = mappedResultSetFactory.createMappedResultSet(inputEpr, mapper);
+
+		token.getEnv().setAttribute(getOutputEprParam(), epr.toString());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getInputEprParam() {
+		return inputEprParam;
+	}
+
+	public void setInputEprParam(final String inputEprParam) {
+		this.inputEprParam = inputEprParam;
+	}
+
+	public String getOutputEprParam() {
+		return outputEprParam;
+	}
+
+	public void setOutputEprParam(final String outputEprParam) {
+		this.outputEprParam = outputEprParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidMetaWorkflowsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidMetaWorkflowsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/consistency/FindInvalidMetaWorkflowsJobNode.java	(revision 60998)
@@ -0,0 +1,79 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.consistency;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.is.registry.rmi.ISRegistryService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+
+public class FindInvalidMetaWorkflowsJobNode extends SimpleJobNode {
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	private static final Log log = LogFactory.getLog(FindInvalidMetaWorkflowsJobNode.class);
+
+	private boolean deleteInvalidProfiles = false;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		final ISLookUpService lookup = serviceLocator.getService(ISLookUpService.class);
+		final ISRegistryService registry = serviceLocator.getService(ISRegistryService.class);
+
+		final String q1 = "for $x in collection('/db/DRIVER/RepositoryServiceResources/RepositoryServiceResourceType')\n" +
+				"let $id := $x//RESOURCE_IDENTIFIER/@value\n" +
+				"for $api in $x//INTERFACE/@id\n" +
+				"return concat($id,'|',$api)";
+
+		final String q2 = "for $x in collection(' /db/DRIVER/MetaWorkflowDSResources/MetaWorkflowDSResourceType') \n" +
+				"where $x//DATAPROVIDER/@id and $x//DATAPROVIDER/@interface\n" +
+				"return concat($x//RESOURCE_IDENTIFIER/@value,'@@@',$x//DATAPROVIDER/@id,'|',$x//DATAPROVIDER/@interface)";
+
+		final Set<String> valids = new HashSet<>(lookup.quickSearchProfile(q1));
+
+		int count = 0;
+		int countInvalids = 0;
+		int countDeleted = 0;
+		for (final String s : lookup.quickSearchProfile(q2)) {
+			count++;
+			final String metaWfId = StringUtils.substringBefore(s, "@@@");
+			final String dsapi = StringUtils.substringAfter(s, "@@@");
+			if (!valids.contains(dsapi)) {
+				log.warn("Invalid metaWf: " + metaWfId);
+				countInvalids++;
+				if (deleteInvalidProfiles) {
+					registry.deleteProfile(metaWfId);
+					log.info(" -- Deleted");
+					countDeleted++;
+				}
+
+			}
+		}
+
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "total", count);
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "invalid", countInvalids);
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "deleted", countDeleted);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public boolean isDeleteInvalidProfiles() {
+		return deleteInvalidProfiles;
+	}
+
+	public void setDeleteInvalidProfiles(final boolean deleteInvalidProfiles) {
+		this.deleteInvalidProfiles = deleteInvalidProfiles;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FilterManagedDatasourcesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FilterManagedDatasourcesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FilterManagedDatasourcesJobNode.java	(revision 60998)
@@ -0,0 +1,87 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import java.io.StringReader;
+import java.util.Set;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.datasources.LocalOpenaireDatasourceManager;
+import eu.dnetlib.enabling.resultset.MappedResultSetFactory;
+import eu.dnetlib.enabling.resultset.client.utils.EPRUtils;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+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.io.SAXReader;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class FilterManagedDatasourcesJobNode extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(FilterManagedDatasourcesJobNode.class);
+
+	private String inputEprParam;
+	private String outputEprParam;
+
+	@Autowired
+	private LocalOpenaireDatasourceManager dsManager;
+
+	@Autowired
+	private MappedResultSetFactory mappedResultSetFactory;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final W3CEndpointReference inputEpr = new EPRUtils().getEpr(token.getEnv().getAttribute(getInputEprParam()));
+
+		final Set<String> managedDatasources = dsManager.listManagedDatasourceIds();
+
+		log.info(String.format("found %s managed datasources", managedDatasources.size()));
+
+		final W3CEndpointReference outputEpr = mappedResultSetFactory.createMappedResultSet(inputEpr, s -> filterManaged(s, managedDatasources));
+
+		token.getEnv().setAttribute(getOutputEprParam(), outputEpr.toString());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	/**
+	 * Extracts the datasource id from the input record and checks its existence in the given set.
+	 * @param data
+	 * @param filter
+	 * @return The
+	 * @throws IllegalStateException
+	 */
+	private String filterManaged(final String data, Set<String> filter) throws IllegalStateException {
+		try {
+			final Document doc = new SAXReader().read(new StringReader(data));
+
+			final String dsId = doc.valueOf("/record/metadata/ROWS/ROW[@table = 'dsm_datasources']/FIELD[@name = 'id']/text()");
+			if (filter.contains(dsId)) {
+				doc.selectSingleNode("/record/metadata/ROWS").detach();
+				((Element) doc.selectSingleNode("/record/metadata")).addElement("ROWS");
+				return doc.asXML();
+			} else return data;
+		} catch (DocumentException e) {
+			throw new IllegalStateException(e);
+		}
+	}
+
+	public String getInputEprParam() {
+		return inputEprParam;
+	}
+
+	public void setInputEprParam(final String inputEprParam) {
+		this.inputEprParam = inputEprParam;
+	}
+
+	public String getOutputEprParam() {
+		return outputEprParam;
+	}
+
+	public void setOutputEprParam(final String outputEprParam) {
+		this.outputEprParam = outputEprParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/CollectDatasetsByJournalJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/CollectDatasetsByJournalJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/CollectDatasetsByJournalJobNode.java	(revision 60998)
@@ -0,0 +1,180 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.datacite;
+
+import java.io.StringReader;
+import java.util.concurrent.ArrayBlockingQueue;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+import javax.annotation.Resource;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.collector.plugins.datasets.DatasetsByJournalIterator;
+import eu.dnetlib.data.collector.plugins.datasets.PangaeaJournalInfo;
+import eu.dnetlib.enabling.resultset.IterableResultSetFactory;
+import eu.dnetlib.enabling.resultset.client.ResultSetClientFactory;
+import eu.dnetlib.enabling.resultset.client.utils.EPRUtils;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.io.SAXReader;
+
+// TODO: Auto-generated Javadoc
+
+/**
+ * The Class CollectDatasetsByJournalJobNode.
+ */
+public class CollectDatasetsByJournalJobNode extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(CollectDatasetsByJournalJobNode.class);
+
+	public static PangaeaJournalInfo END_QUEUE = new PangaeaJournalInfo();
+
+	/**
+	 * The datasource id.
+	 */
+	private String datasourceId;
+
+	/**
+	 * The output epr param.
+	 */
+	private String outputEprParam;
+
+	/**
+	 * The input epr param.
+	 */
+	private String inputEprParam;
+
+	/**
+	 * The result set client factory.
+	 */
+	private ResultSetClientFactory resultSetClientFactory;
+
+	/**
+	 * The result set factory.
+	 */
+	@Resource(name = "iterableResultSetFactory")
+	private IterableResultSetFactory resultSetFactory;
+
+	/**
+	 * The executor.
+	 */
+	private Executor executor = Executors.newSingleThreadExecutor();
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.dnetlib.msro.workflows.nodes.SimpleJobNode#execute(com.googlecode.sarasvati.NodeToken)
+	 */
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final W3CEndpointReference inputEpr = new EPRUtils().getEpr(token.getEnv().getAttribute(inputEprParam));
+		final Iterable<String> input = resultSetClientFactory.getClient(inputEpr);
+		final BlockingQueue<PangaeaJournalInfo> publicationsQueue = new ArrayBlockingQueue<PangaeaJournalInfo>(50);
+
+		executor.execute(new Runnable() {
+
+			@Override
+			public void run() {
+				final SAXReader reader = new SAXReader();
+
+				for (String inputString : input) {
+					try {
+						Document doc = reader.read(new StringReader(inputString));
+						final String jId = doc.valueOf("//FIELD[@name='id']");
+						final String dsId = doc.valueOf("//FIELD[@name='datasource']");
+						final String dsName = doc.valueOf("//FIELD[@name='name']");
+						final String jISSN = doc.valueOf("//FIELD[@name='issn']");
+						PangaeaJournalInfo info = new PangaeaJournalInfo();
+						info.setDatasourceId(dsId);
+						info.setJournalId(jId);
+						info.setJournalName(dsName);
+						info.setJournalISSN(jISSN);
+						publicationsQueue.put(info);
+					} catch (Exception e) {
+						log.error(e);
+					}
+				}
+				try {
+					publicationsQueue.put(END_QUEUE);
+				} catch (InterruptedException e) {
+					log.error(e);
+				}
+
+			}
+		});
+
+		IteratorOnQueue<PangaeaJournalInfo> itOnQueue = new IteratorOnQueue<PangaeaJournalInfo>(publicationsQueue, CollectDatasetsByJournalJobNode.END_QUEUE);
+
+		W3CEndpointReference eprOutput = resultSetFactory.createIterableResultSet(new DatasetsByJournalIterator(itOnQueue));
+		token.getEnv().setAttribute(getOutputEprParam(), eprOutput.toString());
+		return Arc.DEFAULT_ARC;
+	}
+
+	/**
+	 * Gets the datasource id.
+	 *
+	 * @return the datasourceId
+	 */
+	public String getDatasourceId() {
+		return datasourceId;
+	}
+
+	/**
+	 * Sets the datasource id.
+	 *
+	 * @param datasourceId the datasourceId to set
+	 */
+	public void setDatasourceId(final String datasourceId) {
+		this.datasourceId = datasourceId;
+	}
+
+	/**
+	 * @return the outputEprParam
+	 */
+	public String getOutputEprParam() {
+		return outputEprParam;
+	}
+
+	/**
+	 * @param outputEprParam the outputEprParam to set
+	 */
+	public void setOutputEprParam(final String outputEprParam) {
+		this.outputEprParam = outputEprParam;
+	}
+
+	/**
+	 * @return the inputEprParam
+	 */
+	public String getInputEprParam() {
+		return inputEprParam;
+	}
+
+	/**
+	 * @param inputEprParam the inputEprParam to set
+	 */
+	public void setInputEprParam(final String inputEprParam) {
+		this.inputEprParam = inputEprParam;
+	}
+
+	/**
+	 * Gets the result set client factory.
+	 *
+	 * @return the resultSetClientFactory
+	 */
+	public ResultSetClientFactory getResultSetClientFactory() {
+		return resultSetClientFactory;
+	}
+
+	/**
+	 * Sets the result set client factory.
+	 *
+	 * @param resultSetClientFactory the resultSetClientFactory to set
+	 */
+	public void setResultSetClientFactory(final ResultSetClientFactory resultSetClientFactory) {
+		this.resultSetClientFactory = resultSetClientFactory;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/ExtractOutputPathJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/ExtractOutputPathJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/ExtractOutputPathJobNode.java	(revision 60998)
@@ -0,0 +1,46 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.actions;
+
+import com.google.gson.Gson;
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
+import java.util.Map;
+
+public class ExtractOutputPathJobNode extends SimpleJobNode {
+
+    private String hdfsOutputPathParam;
+
+
+    @Override
+    protected String execute(NodeToken token) throws Exception {
+        final String sets = token.getEnv().getAttribute("sets");
+        if (StringUtils.isBlank(sets))
+            throw  new MSROException("¯\\\\_(ツ)_/¯ cannot find sets on env");
+
+        final List<Map<String, String>> setsMap = new Gson().fromJson(sets, List.class);
+        if (setsMap== null || setsMap.size() !=1)  {
+            throw  new MSROException("¯\\\\_(ツ)_/¯ Sets map from json is wrong!");
+        }
+
+
+        final String path = setsMap.get(0).get("path");
+        if (StringUtils.isEmpty(path)){
+            throw new MSROException("Path is empty");
+        }
+        token.getEnv().setAttribute(getHdfsOutputPathParam(), path);
+        return Arc.DEFAULT_ARC;
+    }
+
+
+    public String getHdfsOutputPathParam() {
+        return hdfsOutputPathParam;
+    }
+
+    public void setHdfsOutputPathParam(String hdfsOutputPathParam) {
+        this.hdfsOutputPathParam = hdfsOutputPathParam;
+    }
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/PromoteActionsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/PromoteActionsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/actions/PromoteActionsJobNode.java	(revision 60998)
@@ -0,0 +1,37 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.actions;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.actionmanager.rmi.ActionManagerService;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import org.apache.commons.lang.StringUtils;
+
+public class PromoteActionsJobNode extends BlackboardJobNode {
+
+	public static final String ALL_SETS = "ALL SETS";
+
+	private String set;
+
+	@Override
+	protected String obtainServiceId(final NodeToken token) {
+		return getServiceLocator().getServiceId(ActionManagerService.class);
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		job.setAction("PROMOTE");
+		if (!StringUtils.isBlank(getSet()) && !getSet().equals(ALL_SETS)) {
+			job.getParameters().put("set", getSet());
+			token.getEnv().setAttribute("set", getSet());
+		}
+	}
+
+	public String getSet() {
+		return set;
+	}
+
+	public void setSet(final String set) {
+		this.set = set;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/repobye/DeleteOpenaireMetaWfJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/repobye/DeleteOpenaireMetaWfJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/repobye/DeleteOpenaireMetaWfJobNode.java	(revision 60998)
@@ -0,0 +1,29 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.repobye;
+
+import eu.dnetlib.enabling.datasources.common.LocalDatasourceManager;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.repobye.DeleteMetaWfJobNode;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DeleteOpenaireMetaWfJobNode extends DeleteMetaWfJobNode {
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	@Autowired
+	private LocalDatasourceManager dsManager;
+
+	@Override
+	protected void setActivationStatus(final String dsId, final String ifaceId, final boolean active) throws Exception {
+
+		final String openaireDsId = serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(
+				"/*[.//RESOURCE_IDENTIFIER/@value = '" + dsId + "']//FIELD/value[../key='OpenAireDataSourceId']/text()");
+
+		if (openaireDsId.equals("openaire____::bootstrap")) {
+			dsManager.setActive(dsId, ifaceId, active);
+		} else {
+			dsManager.setActive(openaireDsId, ifaceId, active);
+		}
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/SplitDatasetRecord.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/SplitDatasetRecord.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/SplitDatasetRecord.java	(revision 60998)
@@ -0,0 +1,134 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.datacite;
+
+import java.util.Iterator;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
+import java.util.concurrent.LinkedBlockingQueue;
+import javax.annotation.Resource;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.resultset.IterableResultSetFactory;
+import eu.dnetlib.enabling.resultset.client.ResultSetClientFactory;
+import eu.dnetlib.enabling.resultset.client.utils.EPRUtils;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+/**
+ * The Class SplitDatasetRecord.
+ */
+public class SplitDatasetRecord extends SimpleJobNode {
+
+	/**
+	 * The input epr parm.
+	 */
+	private String inputEprParm;
+
+	/**
+	 * The output epr parm.
+	 */
+	private String outputEprParm;
+
+	/**
+	 * The result set client factory.
+	 */
+	private ResultSetClientFactory resultSetClientFactory;
+
+	/**
+	 * The result set factory.
+	 */
+	@Resource(name = "iterableResultSetFactory")
+	private IterableResultSetFactory resultSetFactory;
+
+	/**
+	 * The executor.
+	 */
+	private Executor executor = Executors.newSingleThreadExecutor();
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see eu.dnetlib.msro.workflows.nodes.SimpleJobNode#execute(com.googlecode.sarasvati.NodeToken)
+	 */
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final W3CEndpointReference inputEpr = new EPRUtils().getEpr(token.getEnv().getAttribute(inputEprParm));
+		Iterable<String> input = resultSetClientFactory.getClient(inputEpr);
+		final LinkedBlockingQueue<String> publicationsQueue = new LinkedBlockingQueue<String>();
+		final SplitterDatasetsIterator splitterIterator = new SplitterDatasetsIterator(publicationsQueue, input, "publications");
+		executor.execute(new Runnable() {
+
+			@Override
+			public void run() {
+				splitterIterator.populateQueues();
+			}
+		});
+
+		W3CEndpointReference eprUrls_publications = resultSetFactory.createIterableResultSet(new Iterable<String>() {
+
+			@Override
+			public Iterator<String> iterator() {
+				return new IteratorOnQueue<String>(publicationsQueue, SplitterDatasetsIterator.END_QUEUE);
+			}
+		});
+
+		token.getEnv().setAttribute(getOutputEprParm(), eprUrls_publications.toString());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	/**
+	 * Gets the input epr parm.
+	 *
+	 * @return the inputEprParm
+	 */
+	public String getInputEprParm() {
+		return inputEprParm;
+	}
+
+	/**
+	 * Sets the input epr parm.
+	 *
+	 * @param inputEprParm the inputEprParm to set
+	 */
+	public void setInputEprParm(final String inputEprParm) {
+		this.inputEprParm = inputEprParm;
+	}
+
+	/**
+	 * Gets the result set client factory.
+	 *
+	 * @return the resultSetClientFactory
+	 */
+	public ResultSetClientFactory getResultSetClientFactory() {
+		return resultSetClientFactory;
+	}
+
+	/**
+	 * Sets the result set client factory.
+	 *
+	 * @param resultSetClientFactory the resultSetClientFactory to set
+	 */
+	public void setResultSetClientFactory(final ResultSetClientFactory resultSetClientFactory) {
+		this.resultSetClientFactory = resultSetClientFactory;
+	}
+
+	/**
+	 * Gets the output epr parm.
+	 *
+	 * @return the output epr parm
+	 */
+	public String getOutputEprParm() {
+		return outputEprParm;
+	}
+
+	/**
+	 * Sets the output epr parm.
+	 *
+	 * @param outputEprParm the new output epr parm
+	 */
+	public void setOutputEprParm(final String outputEprParm) {
+		this.outputEprParm = outputEprParm;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/LoadEntityLinksJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/LoadEntityLinksJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/LoadEntityLinksJobNode.java	(revision 60998)
@@ -0,0 +1,39 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.msro.openaireplus.workflows.nodes.index.EntityGrouperConfigurationLoader;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class LoadEntityLinksJobNode extends SimpleJobNode {
+
+	private static final String INDEX_ENTITY_LINKS = "index.entity.links";
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(LoadEntityLinksJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Autowired
+	private EntityGrouperConfigurationLoader grouperConfLoader;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		log.info("loading entity link table");
+
+		String links = grouperConfLoader.load();
+
+		if (StringUtils.isBlank(links)) throw new MSROException("empty links table");
+
+		token.getEnv().setAttribute(INDEX_ENTITY_LINKS, links);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/repohi/RetrieveInterfaceInfoJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/repohi/RetrieveInterfaceInfoJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/repohi/RetrieveInterfaceInfoJobNode.java	(revision 60998)
@@ -0,0 +1,41 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.repohi;
+
+import java.io.StringReader;
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+import org.dom4j.Document;
+import org.dom4j.Node;
+import org.dom4j.io.SAXReader;
+
+public class RetrieveInterfaceInfoJobNode extends SimpleJobNode {
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		String datasourceId = token.getFullEnv().getAttribute(WorkflowsConstants.DATAPROVIDER_ID);
+		String interfaceID = token.getFullEnv().getAttribute(WorkflowsConstants.DATAPROVIDER_INTERFACE);
+		final String profile = serviceLocator.getService(ISLookUpService.class).getResourceProfile(datasourceId);
+		final Document doc = new SAXReader().read(new StringReader(profile));
+		final Node ifcNode = doc.selectSingleNode("//INTERFACE[@id='" + interfaceID + "']");
+
+		String contentDescription = ifcNode.valueOf("./@contentDescription");
+		token.getEnv().setAttribute("objectStoreContentDescription", contentDescription);
+
+		final Node acProtNode = doc.selectSingleNode("//INTERFACE[@id='" + interfaceID + "']/ACCESS_PROTOCOL");
+
+		String basePath = acProtNode.valueOf("./@basePath");
+		token.getEnv().setAttribute("objectStoreBasePath", basePath);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dataFlowMonitoring/TriggerIndexMonitoringScenarioJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dataFlowMonitoring/TriggerIndexMonitoringScenarioJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dataFlowMonitoring/TriggerIndexMonitoringScenarioJobNode.java	(revision 60998)
@@ -0,0 +1,51 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dataFlowMonitoring;
+
+import java.io.IOException;
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.monitoring.core.sensors.SensorCreationException;
+import eu.dnetlib.monitoring.core.sensors.SensorFactory;
+import eu.dnetlib.monitoring.core.sensors.collection.index.solr.SolrSensor;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class TriggerIndexMonitoringScenarioJobNode extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(TriggerIndexMonitoringScenarioJobNode.class);
+	private static final String SOLR_COLLECTION_POSTFIX = "-index-openaire";
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+	private String mdFormat;
+	private SolrSensor solrSensor;
+
+	@Override
+	protected String execute(final NodeToken token) throws IOException, InstantiationException, IllegalAccessException, InterruptedException,
+			ISLookUpException, SensorCreationException {
+
+		/* Configuring SOLR sensor */
+		String actualCollection = mdFormat + SOLR_COLLECTION_POSTFIX;
+		log.info("Executing on " + actualCollection + " SOLR collection");
+		solrSensor = (SolrSensor) SensorFactory.createSensorWithConfiguration(SolrSensor.class, "index", "solr2");
+		solrSensor.getConfiguration().setParam("collection", actualCollection);
+		solrSensor.reinitialize();
+		log.info("Measuring...");
+		solrSensor.measure();
+		log.info("DONE!");
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getMdFormat() {
+		return mdFormat;
+	}
+
+	public void setMdFormat(final String mdFormat) {
+		this.mdFormat = mdFormat;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/SplitterDatasetsIterator.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/SplitterDatasetsIterator.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/SplitterDatasetsIterator.java	(revision 60998)
@@ -0,0 +1,145 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.datacite;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import javax.xml.XMLConstants;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathFactory;
+
+import com.google.common.collect.Maps;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.*;
+
+/**
+ * The Class SplitterDatasetsIterator.
+ */
+public class SplitterDatasetsIterator {
+
+	/**
+	 * The Constant log.
+	 */
+	private static final Log log = LogFactory.getLog(SplitterDatasetsIterator.class);
+
+	/**
+	 * The end queue.
+	 */
+	public static String END_QUEUE = "END_QUEUE";
+
+	/**
+	 * The publications.
+	 */
+	private Queue<String> publications;
+
+	/**
+	 * The input epr.
+	 */
+	private Iterable<String> inputEPR;
+
+	/**
+	 * The root name.
+	 */
+	private String rootName;
+
+	/**
+	 * Instantiates a new splitter datasets iterator.
+	 *
+	 * @param publicationsQueue the publications queue
+	 * @param inputEPR          the input epr
+	 * @param rootName          the root name
+	 */
+	public SplitterDatasetsIterator(final Queue<String> publicationsQueue, final Iterable<String> inputEPR, final String rootName) {
+		this.publications = publicationsQueue;
+		this.inputEPR = inputEPR;
+		this.rootName = rootName;
+	}
+
+	/**
+	 * Populate queues.
+	 */
+	public void populateQueues() {
+
+		if (this.inputEPR == null) return;
+		for (String inputXML : inputEPR) {
+
+			final ByteArrayInputStream bais = new ByteArrayInputStream(inputXML.getBytes(StandardCharsets.UTF_8));
+			final List<String> publication_extracted = extractByTag(bais, "publication");
+
+			if (publication_extracted != null) {
+				publications.addAll(publication_extracted);
+
+			}
+		}
+		publications.add(END_QUEUE);
+	}
+
+	/**
+	 * Extract by tag.
+	 *
+	 * @param inputXML the input xml
+	 * @param tag      the tag
+	 * @return the list
+	 */
+	private List<String> extractByTag(final InputStream inputXML, final String tag) {
+		try {
+
+			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+			Document doc = dbf.newDocumentBuilder().parse(inputXML);
+
+			XPath xpath = XPathFactory.newInstance().newXPath();
+
+			Node rootNode = (Node) xpath.evaluate("//*[local-name()='" + this.rootName + "']", doc, XPathConstants.NODE);
+
+			NamedNodeMap attributes = rootNode.getAttributes();
+
+			Map<String, String> nameSpaces = Maps.newHashMap();
+
+			for (int i = 0; i < attributes.getLength(); i++) {
+				Node node = attributes.item(i);
+				String name = node.getNodeName();
+				if (name.startsWith("xmlns:")) {
+					nameSpaces.put(StringUtils.substringAfter(name, "xmlns:"), node.getNodeValue());
+				}
+
+			}
+			xpath = XPathFactory.newInstance().newXPath();
+			NodeList nodes = (NodeList) xpath.evaluate("//*[local-name()='" + tag + "']/*[local-name()='record']", doc, XPathConstants.NODESET);
+
+			if ((nodes != null) && (nodes.getLength() > 0)) {
+				List<String> result = new ArrayList<>();
+				for (int i = 0; i < nodes.getLength(); i++) {
+					Document currentDoc = dbf.newDocumentBuilder().newDocument();
+					Node imported = currentDoc.importNode(nodes.item(i), true);
+					for (String key : nameSpaces.keySet()) {
+						Element element = (Element) imported;
+						element.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, "xmlns:" + key, nameSpaces.get(key));
+					}
+					Transformer transformer = TransformerFactory.newInstance().newTransformer();
+					DOMSource mydoc = new DOMSource(imported);
+					StringWriter writer = new StringWriter();
+					transformer.transform(mydoc, new StreamResult(writer));
+					String record = writer.toString();
+					result.add(record);
+				}
+				return result;
+			}
+		} catch (Exception e) {
+			log.error("Error on extracting " + tag, e);
+			return null;
+		}
+		return null;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/repohi/UpdateOpenaireMetaWfStatusJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/repohi/UpdateOpenaireMetaWfStatusJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/repohi/UpdateOpenaireMetaWfStatusJobNode.java	(revision 60998)
@@ -0,0 +1,35 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.repohi;
+
+import eu.dnetlib.enabling.datasources.common.LocalDatasourceManager;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import eu.dnetlib.enabling.datasources.LocalOpenaireDatasourceManager;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.repohi.UpdateMetaWfStatusJobNode;
+import org.springframework.beans.factory.annotation.Required;
+
+public class UpdateOpenaireMetaWfStatusJobNode extends UpdateMetaWfStatusJobNode {
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	@Autowired
+	private LocalDatasourceManager dsManager;
+
+	@Override
+	protected void updateDatasource(final String dsId, final String ifaceId) throws Exception {
+
+		final String openaireDsId = serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(
+				"/*[.//RESOURCE_IDENTIFIER/@value = '" + dsId + "']//FIELD/value[../key='OpenAireDataSourceId']/text()");
+
+		if (openaireDsId.equals("openaire____::bootstrap")) {
+			super.updateDatasource(dsId, ifaceId);
+		} else {
+			dsManager.setManaged(openaireDsId, true);
+			dsManager.setActive(openaireDsId, ifaceId, true);
+		}
+	}
+
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/DownloadFromMetadataOpenaire.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/DownloadFromMetadataOpenaire.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/DownloadFromMetadataOpenaire.java	(revision 60998)
@@ -0,0 +1,83 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.objectStore;
+
+import java.util.Map;
+
+import com.googlecode.sarasvati.Engine;
+import com.googlecode.sarasvati.NodeToken;
+import com.googlecode.sarasvati.env.Env;
+import eu.dnetlib.data.objectstore.rmi.ObjectStoreService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.workflows.nodes.blackboard.BlackboardWorkflowJobListener;
+import eu.dnetlib.msro.workflows.nodes.download.DownloadFromMetadataJobNode;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DownloadFromMetadataOpenaire extends DownloadFromMetadataJobNode {
+
+	private static final Log log = LogFactory.getLog(DownloadFromMetadataOpenaire.class);
+
+	private String basepath;
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		if (this.getBasepath() != null && this.getBasepath().length() > 0) {
+			job.getParameters().put("basePath", basepath);
+		}
+
+		int size = serviceLocator.getService(ObjectStoreService.class).getSize(getObjectStoreID());
+		log.debug(String.format("objectStore %s has size %s", getObjectStoreID(), size));
+		token.getEnv().setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "oldTotal", size);
+
+		super.prepareJob(job, token);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see eu.dnetlib.msro.workflows.nodes.BlackboardJobNode#generateBlackboardListener(com.googlecode.sarasvati.Engine,
+	 * com.googlecode.sarasvati.NodeToken)
+	 */
+	@Override
+	protected BlackboardWorkflowJobListener generateBlackboardListener(final Engine engine, final NodeToken token) {
+		return new BlackboardWorkflowJobListener(engine, token) {
+
+			@Override
+			protected void populateEnv(final Env env, final Map<String, String> responseParams) {
+				env.setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "total", responseParams.get("total"));
+
+				final String base64 = responseParams.get("report");
+				if (StringUtils.isNotBlank(base64) && Base64.isBase64(base64.getBytes())) {
+					final String report = new String(Base64.decodeBase64(base64.getBytes()));
+					log.info("found download report");
+					log.debug(report);
+					env.setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + "report", report);
+				} else {
+					log.warn("unable to find or decode download report");
+				}
+			}
+		};
+	}
+
+	/**
+	 * @return the basepath
+	 */
+	public String getBasepath() {
+		return basepath;
+	}
+
+	/**
+	 * @param basepath the basepath to set
+	 */
+	public void setBasepath(final String basepath) {
+		this.basepath = basepath;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/UpdateRepositoryProfilesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/UpdateRepositoryProfilesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/UpdateRepositoryProfilesJobNode.java	(revision 60998)
@@ -0,0 +1,25 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+
+import eu.dnetlib.enabling.datasources.common.Api;
+import eu.dnetlib.enabling.datasources.common.Datasource;
+import eu.dnetlib.enabling.datasources.common.LocalDatasourceManager;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+
+public class UpdateRepositoryProfilesJobNode extends SimpleJobNode {
+
+	@Autowired
+	private LocalDatasourceManager<Datasource<?, ?>, Api<?>> dsManager;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		dsManager.regenerateProfiles();
+
+		return Arc.DEFAULT_ARC;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/SetHdfsFileJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/SetHdfsFileJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/SetHdfsFileJobNode.java	(revision 60998)
@@ -0,0 +1,60 @@
+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 org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * The Class SetHdfsFileJobNode.
+ */
+public class SetHdfsFileJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(SetHdfsFileJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	/**
+	 * The input records path.
+	 */
+	private String hdfsPath;
+
+	/**
+	 * The input records path param.
+	 */
+	private String hdfsPathParam;
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see com.googlecode.sarasvati.mem.MemNode#execute(com.googlecode.sarasvati.Engine, com.googlecode.sarasvati.NodeToken)
+	 */
+	@Override
+	public String execute(final NodeToken token) {
+
+		log.info("hdfs path: " + getHdfsPath());
+
+		token.getEnv().setAttribute(getHdfsPathParam(), getHdfsPath());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getHdfsPath() {
+		return hdfsPath;
+	}
+
+	public void setHdfsPath(final String hdfsPath) {
+		this.hdfsPath = hdfsPath;
+	}
+
+	public String getHdfsPathParam() {
+		return hdfsPathParam;
+	}
+
+	public void setHdfsPathParam(final String hdfsPathParam) {
+		this.hdfsPathParam = hdfsPathParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/IteratorOnQueue.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/IteratorOnQueue.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/datacite/IteratorOnQueue.java	(revision 60998)
@@ -0,0 +1,90 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.datacite;
+
+import java.util.Iterator;
+import java.util.concurrent.BlockingQueue;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * The Class IteratorOnQueue.
+ *
+ * @param <T> the generic type
+ */
+public class IteratorOnQueue<T> implements Iterator<T> {
+
+	/**
+	 * The Constant log.
+	 */
+	private static final Log log = LogFactory.getLog(IteratorOnQueue.class);
+
+	/**
+	 * The input queue.
+	 */
+	private final BlockingQueue<T> inputQueue;
+
+	/**
+	 * The current item.
+	 */
+	private T currentItem;
+
+	/**
+	 * The end queue.
+	 */
+	private T endQueue;
+
+	/**
+	 * Instantiates a new iterator on queue.
+	 *
+	 * @param inputQueue the input queue
+	 * @param endQueue   the end queue
+	 */
+	public IteratorOnQueue(final BlockingQueue<T> inputQueue, final T endQueue) {
+		this.inputQueue = inputQueue;
+		this.endQueue = endQueue;
+
+		try {
+			currentItem = this.inputQueue.take();
+		} catch (InterruptedException e) {
+			log.error(e);
+		}
+	}
+
+	/**
+	 * Checks for next.
+	 *
+	 * @return true, if successful
+	 */
+	@Override
+	public boolean hasNext() {
+
+		return currentItem != this.endQueue;
+	}
+
+	/**
+	 * Next.
+	 *
+	 * @return the t
+	 */
+	@Override
+	public T next() {
+
+		T previous = currentItem;
+		try {
+			currentItem = this.inputQueue.take();
+		} catch (Exception e) {
+			log.error(e);
+		}
+		return previous;
+	}
+
+	/**
+	 * Removes the.
+	 */
+	@Override
+	public void remove() {
+		// TODO Auto-generated method stub
+
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareLodParamJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareLodParamJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareLodParamJobNode.java	(revision 60998)
@@ -0,0 +1,84 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import com.mongodb.DBObject;
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.model.Filters;
+import com.mongodb.client.model.Sorts;
+import eu.dnetlib.common.logging.DnetLogger;
+import eu.dnetlib.common.logging.dao.DnetLoggerMongoDao;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+
+public class PrepareLodParamJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(PrepareLodParamJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+	private static final String SYSTEM_PROFILE_ID = "system:profileId";
+	private static final String LOG_DATE = "log:date";
+	private static final String IS_COMPLETED_SUCCESSFULLY = "system:isCompletedSuccessfully";
+
+	@Value("${dnet.openaire.lod.jsonrels}")
+	private String lodJsonRels;
+
+	@Value("${dnet.openaire.lod.wfId}")
+	private String lodWfId;
+
+	@Value("${dnet.openaire.lod.default.date}")
+	private String defaultLodDate;
+
+	@Autowired
+	private DnetLogger dnetLogger;
+
+	@Autowired
+	private DnetLoggerMongoDao mongoDao;
+
+	private final SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		log.info("prepare LOD update job");
+
+		token.getEnv().setAttribute("lod_jsonRels", lodJsonRels);
+		token.getEnv().setAttribute("lod_lastExecutionDate", getFormattedDate());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	/**
+	 * Queries the MSRO logger to find the last time the LOD update workflow was successfully executed.
+	 *
+	 * @return the formatted date
+	 */
+	private String getFormattedDate() {
+		final DBObject dbo = getLoggerDao()
+				.find(Filters.and(Filters.eq(SYSTEM_PROFILE_ID, lodWfId), Filters.eq(IS_COMPLETED_SUCCESSFULLY, "true")))
+				.sort(Sorts.descending(LOG_DATE))
+				.limit(1)
+				.first();
+
+		if (dbo == null || !dbo.containsField(LOG_DATE)) {
+			log.warn(String.format("Cannot find log entry for LOD update workflow, using default date: '%s'", defaultLodDate));
+			return defaultLodDate;
+		}
+
+		final String lastExecutionDate = dateFormat.format(new Date((Long) dbo.get(LOG_DATE)));
+		log.debug(String.format("Last LOD execution date: '%s'", lastExecutionDate));
+		return lastExecutionDate;
+	}
+
+	private MongoCollection<DBObject> getLoggerDao() {
+		return mongoDao.getDb().getCollection(dnetLogger.getName(), DBObject.class);
+	}
+
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISParamsV2.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISParamsV2.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISParamsV2.java	(revision 60998)
@@ -0,0 +1,271 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import java.util.List;
+import java.util.NoSuchElementException;
+import javax.annotation.Resource;
+
+import com.google.common.base.Joiner;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.hadoop.config.ClusterName;
+import eu.dnetlib.data.hadoop.config.ConfigurationEnumerator;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
+import org.springframework.beans.factory.annotation.Required;
+
+public abstract class PrepareIISParamsV2 extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(PrepareIISParamsV2.class);
+
+	@Resource
+	protected ConfigurationEnumerator configurationEnumerator;
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	private String clusterName;
+
+	private String clusterParam = "cluster";
+
+	private String oozieWfAppPath;
+
+	private String oozieWfAppPathParam = "oozie.wf.application.path";
+
+	private String xqueryMdStoreService;
+
+	private String mdStoreStoreLocationParam = "import_mdstore_service_location";
+
+	private String xqueryObjectStoreService;
+
+	private String objectStoreLocationParam = "import_content_object_store_location";
+
+	private String xqueryIsLookupService;
+
+	private String islookupLocationParam = "import_islookup_service_location";
+
+	private String importProjectConceptsContextCSVParam = "import_project_concepts_context_ids_csv";
+
+	private String importProjectConceptsContextCSV;
+
+	private String xqueryDatasetStore;
+
+	private String mdStoreDatasetParam = "import_dataset_mdstore_ids_csv";
+
+	private String objectStoreBlacklistCSV = "";
+
+	protected void prepare(final NodeToken token) throws Exception {
+
+		token.getEnv().setAttribute(getClusterParam(), getClusterName());
+
+		// Assumes we only have one mdStore service instance
+		token.getEnv().setAttribute(getMdStoreStoreLocationParam(), getServiceEndpoint(getXqueryMdStoreService()));
+		// Assumes we only have one objectStore service instance
+		token.getEnv().setAttribute(getObjectStoreLocationParam(), getServiceEndpoint(getXqueryObjectStoreService()));
+
+		token.getEnv().setAttribute(getIslookupLocationParam(), getServiceEndpoint(getXqueryIsLookupService()));
+		token.getEnv().setAttribute(getImportProjectConceptsContextCSVParam(), getImportProjectConceptsContextCSV());
+
+		Configuration conf = configurationEnumerator.get(ClusterName.valueOf(getClusterName()));
+		String nameNode = conf.get("fs.defaultFS");
+
+		token.getEnv().setAttribute(getOozieWfAppPathParam(), getURI(nameNode, getOozieWfAppPath()));
+		token.getEnv().setAttribute(getMdStoreDatasetParam(), asCSV(getProfileIds(getXqueryDatasetStore())));
+	}
+
+	protected String getServiceEndpoint(final String xquery) throws MSROException {
+		try {
+			return Iterables.getOnlyElement(serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery));
+		} catch (ISLookUpException e) {
+			throw new MSROException("unable to fetch service endpoint", e);
+		} catch (NoSuchElementException e) {
+			throw new MSROException("unable to find service endpoint, xquery: " + getXqueryMdStoreService(), e);
+		} catch (IllegalArgumentException e) {
+			throw new MSROException("more than one services found, we assume to have only one available", e);
+		}
+	}
+
+	protected String getProfileId(final String xquery) throws MSROException {
+		try {
+			return Iterables.getOnlyElement(serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery));
+		} catch (ISLookUpException e) {
+			throw new MSROException("unable to fetch profile id", e);
+		} catch (NoSuchElementException e) {
+			throw new MSROException("unable to find profile profile, xquery: " + xquery, e);
+		} catch (IllegalArgumentException e) {
+			throw new MSROException("more than one profile profiles was found, we assume to have only one available, xquery: " + xquery, e);
+		}
+	}
+
+	protected List<String> getProfileIds(final String xquery) throws MSROException {
+		try {
+			List<String> ids = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery);
+
+			if (ids.isEmpty()) {
+				log.warn("couldn't find any profile, xquery: " + xquery);
+			}
+
+			return ids;
+		} catch (ISLookUpException e) {
+			throw new MSROException("unable to fetch profile ids, x query: " + xquery, e);
+		}
+	}
+
+	protected String getFilteredObjectStoreCSV(final String xquery) throws MSROException {
+		return asCSV(filter(getProfileIds(xquery), asList(getObjectStoreBlacklistCSV())));
+	}
+
+	protected List<String> filter(final List<String> list, final List<String> filter) {
+		if (filter == null || filter.isEmpty()) { return list; }
+		list.removeAll(filter);
+		return list;
+	}
+
+	protected String asCSV(final List<String> list) {
+		return Joiner.on(",").skipNulls().join(list);
+	}
+
+	protected List<String> asList(final String csv) {
+		return Lists.newArrayList(Splitter.on(",").trimResults().omitEmptyStrings().split(csv));
+	}
+
+	private String getURI(final String nameNode, final String relative) {
+		// TODO ensure to return a valid URI
+		return nameNode + relative;
+	}
+
+	private String getZkQuorumCSV(final Configuration conf, final String zkPort) {
+		return Joiner.on(":" + zkPort + ",").join(Splitter.on(",").omitEmptyStrings().split(conf.get("hbase.zookeeper.quorum")));
+	}
+
+	@Required
+	public void setXqueryMdStoreService(final String xqueryMdStoreService) {
+		this.xqueryMdStoreService = xqueryMdStoreService;
+	}
+
+	public String getXqueryMdStoreService() {
+		return xqueryMdStoreService;
+	}
+
+	public String getMdStoreStoreLocationParam() {
+		return mdStoreStoreLocationParam;
+	}
+
+	public void setMdStoreStoreLocationParam(final String mdStoreStoreLocationParam) {
+		this.mdStoreStoreLocationParam = mdStoreStoreLocationParam;
+	}
+
+	public String getClusterName() {
+		return clusterName;
+	}
+
+	public void setClusterName(final String clusterName) {
+		this.clusterName = clusterName;
+	}
+
+	public String getClusterParam() {
+		return clusterParam;
+	}
+
+	public void setClusterParam(final String clusterParam) {
+		this.clusterParam = clusterParam;
+	}
+
+	public String getOozieWfAppPathParam() {
+		return oozieWfAppPathParam;
+	}
+
+	public void setOozieWfAppPathParam(final String oozieWfAppPathParam) {
+		this.oozieWfAppPathParam = oozieWfAppPathParam;
+	}
+
+	public String getOozieWfAppPath() {
+		return oozieWfAppPath;
+	}
+
+	public void setOozieWfAppPath(final String oozieWfAppPath) {
+		this.oozieWfAppPath = oozieWfAppPath;
+	}
+
+	@Required
+	public String getXqueryDatasetStore() {
+		return xqueryDatasetStore;
+	}
+
+	public void setXqueryDatasetStore(final String xqueryDatasetStore) {
+		this.xqueryDatasetStore = xqueryDatasetStore;
+	}
+
+	public String getMdStoreDatasetParam() {
+		return mdStoreDatasetParam;
+	}
+
+	public void setMdStoreDatasetParam(final String mdStoreDatasetParam) {
+		this.mdStoreDatasetParam = mdStoreDatasetParam;
+	}
+
+	public String getXqueryObjectStoreService() {
+		return xqueryObjectStoreService;
+	}
+
+	@Required
+	public void setXqueryObjectStoreService(final String xqueryObjectStoreService) {
+		this.xqueryObjectStoreService = xqueryObjectStoreService;
+	}
+
+	public String getObjectStoreLocationParam() {
+		return objectStoreLocationParam;
+	}
+
+	public void setObjectStoreLocationParam(final String objectStoreLocationParam) {
+		this.objectStoreLocationParam = objectStoreLocationParam;
+	}
+
+	public String getObjectStoreBlacklistCSV() {
+		return objectStoreBlacklistCSV;
+	}
+
+	public void setObjectStoreBlacklistCSV(final String objectStoreBlacklistCSV) {
+		this.objectStoreBlacklistCSV = objectStoreBlacklistCSV;
+	}
+
+	public String getXqueryIsLookupService() {
+		return xqueryIsLookupService;
+	}
+
+	@Required
+	public void setXqueryIsLookupService(final String xqueryIsLookupService) {
+		this.xqueryIsLookupService = xqueryIsLookupService;
+	}
+
+	public String getIslookupLocationParam() {
+		return islookupLocationParam;
+	}
+
+	public void setIslookupLocationParam(final String islookupLocationParam) {
+		this.islookupLocationParam = islookupLocationParam;
+	}
+
+	public String getImportProjectConceptsContextCSVParam() {
+		return importProjectConceptsContextCSVParam;
+	}
+
+	public void setImportProjectConceptsContextCSVParam(final String importProjectConceptsContextCSVParam) {
+		this.importProjectConceptsContextCSVParam = importProjectConceptsContextCSVParam;
+	}
+
+	public String getImportProjectConceptsContextCSV() {
+		return importProjectConceptsContextCSV;
+	}
+
+	public void setImportProjectConceptsContextCSV(final String importProjectConceptsContextCSV) {
+		this.importProjectConceptsContextCSV = importProjectConceptsContextCSV;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISParams.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISParams.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISParams.java	(revision 60998)
@@ -0,0 +1,304 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import java.util.List;
+import java.util.NoSuchElementException;
+import javax.annotation.Resource;
+
+import com.google.common.base.Joiner;
+import com.google.common.base.Splitter;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.hadoop.config.ClusterName;
+import eu.dnetlib.data.hadoop.config.ConfigurationEnumerator;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
+import org.springframework.beans.factory.annotation.Required;
+
+@Deprecated
+public abstract class PrepareIISParams extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(PrepareIISParams.class);
+
+	@Resource
+	protected ConfigurationEnumerator configurationEnumerator;
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	private String clusterName;
+
+	private String clusterParam = "cluster";
+
+	private String zkQuorumParam = "export_action_hbase_remote_zookeeper_quorum";
+
+	private String zkPortParam = "export_action_hbase_remote_zookeeper_clientport";
+
+	private String oozieWfAppPath;
+
+	private String oozieWfAppPathParam = "oozie.wf.application.path";
+
+	private String xqueryMdStoreService;
+
+	private String mdStoreStoreLocationParam = "import_mdstore_service_location";
+
+	private String xqueryObjectStoreService;
+
+	private String objectStoreLocationParam = "import_content_object_store_location";
+
+	private String xqueryIsLookupService;
+
+	private String islookupLocationParam = "import_islookup_service_location";
+
+	private String importProjectConceptsContextIdParam = "import_project_concepts_context_id";
+
+	private String importProjectConceptsContextId;
+
+	private String xqueryDatasetStore;
+
+	private String mdStoreDatasetParam = "import_dataset_mdstore_ids_csv";
+
+	private String objectStoreBlacklistCSV = "";
+
+	protected void prepare(final NodeToken token) throws Exception {
+
+		token.getEnv().setAttribute(getClusterParam(), getClusterName());
+
+		// Assumes we only have one mdStore service instance
+		token.getEnv().setAttribute(getMdStoreStoreLocationParam(), getServiceEndpoint(getXqueryMdStoreService()));
+		// Assumes we only have one objectStore service instance
+		token.getEnv().setAttribute(getObjectStoreLocationParam(), getServiceEndpoint(getXqueryObjectStoreService()));
+
+		token.getEnv().setAttribute(getIslookupLocationParam(), getServiceEndpoint(getXqueryIsLookupService()));
+
+		token.getEnv().setAttribute(getImportProjectConceptsContextIdParam(), getImportProjectConceptsContextId());
+
+		Configuration conf = configurationEnumerator.get(ClusterName.valueOf(getClusterName()));
+
+		Configuration exportConf = configurationEnumerator.get(ClusterName.DM);
+		String zkPort = exportConf.get("hbase.zookeeper.property.clientPort");
+		String zkQuorum = getZkQuorumCSV(exportConf, zkPort);
+
+		token.getEnv().setAttribute(getZkQuorumParam(), zkQuorum);
+		token.getEnv().setAttribute(getZkPortParam(), zkPort);
+
+		String nameNode = conf.get("fs.defaultFS");
+
+		token.getEnv().setAttribute("nameNode", nameNode);
+		token.getEnv().setAttribute("jobTracker", conf.get("mapred.job.tracker"));
+		token.getEnv().setAttribute(getOozieWfAppPathParam(), getURI(nameNode, getOozieWfAppPath()));
+		token.getEnv().setAttribute(getMdStoreDatasetParam(), asCSV(getProfileIds(getXqueryDatasetStore())));
+	}
+
+	protected String getServiceEndpoint(final String xquery) throws MSROException {
+		try {
+			return Iterables.getOnlyElement(serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery));
+		} catch (ISLookUpException e) {
+			throw new MSROException("unable to fetch service endpoint", e);
+		} catch (NoSuchElementException e) {
+			throw new MSROException("unable to find service endpoint, xquery: " + getXqueryMdStoreService(), e);
+		} catch (IllegalArgumentException e) {
+			throw new MSROException("more than one services found, we assume to have only one available", e);
+		}
+	}
+
+	protected String getProfileId(final String xquery) throws MSROException {
+		try {
+			return Iterables.getOnlyElement(serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery));
+		} catch (ISLookUpException e) {
+			throw new MSROException("unable to fetch profile id", e);
+		} catch (NoSuchElementException e) {
+			throw new MSROException("unable to find profile profile, xquery: " + xquery, e);
+		} catch (IllegalArgumentException e) {
+			throw new MSROException("more than one profile profiles was found, we assume to have only one available, xquery: " + xquery, e);
+		}
+	}
+
+	protected List<String> getProfileIds(final String xquery) throws MSROException {
+		try {
+			List<String> ids = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery);
+
+			if (ids.isEmpty()) {
+				log.warn("couldn't find any profile, xquery: " + xquery);
+			}
+
+			return ids;
+		} catch (ISLookUpException e) {
+			throw new MSROException("unable to fetch profile ids, x query: " + xquery, e);
+		}
+	}
+
+	protected String getFilteredObjectStoreCSV(final String xquery) throws MSROException {
+		return asCSV(filter(getProfileIds(xquery), asList(getObjectStoreBlacklistCSV())));
+	}
+
+	protected List<String> filter(final List<String> list, final List<String> filter) {
+		if (filter == null || filter.isEmpty()) { return list; }
+		list.removeAll(filter);
+		return list;
+	}
+
+	protected String asCSV(final List<String> list) {
+		return Joiner.on(",").skipNulls().join(list);
+	}
+
+	protected List<String> asList(final String csv) {
+		return Lists.newArrayList(Splitter.on(",").trimResults().omitEmptyStrings().split(csv));
+	}
+
+	private String getURI(final String nameNode, final String relative) {
+		// TODO ensure to return a valid URI
+		return nameNode + relative;
+	}
+
+	private String getZkQuorumCSV(final Configuration conf, final String zkPort) {
+		return Joiner.on(":" + zkPort + ",").join(Splitter.on(",").omitEmptyStrings().split(conf.get("hbase.zookeeper.quorum")));
+	}
+
+	@Required
+	public void setXqueryMdStoreService(final String xqueryMdStoreService) {
+		this.xqueryMdStoreService = xqueryMdStoreService;
+	}
+
+	public String getXqueryMdStoreService() {
+		return xqueryMdStoreService;
+	}
+
+	public String getMdStoreStoreLocationParam() {
+		return mdStoreStoreLocationParam;
+	}
+
+	public void setMdStoreStoreLocationParam(final String mdStoreStoreLocationParam) {
+		this.mdStoreStoreLocationParam = mdStoreStoreLocationParam;
+	}
+
+	public String getClusterName() {
+		return clusterName;
+	}
+
+	public void setClusterName(final String clusterName) {
+		this.clusterName = clusterName;
+	}
+
+	public String getZkQuorumParam() {
+		return zkQuorumParam;
+	}
+
+	public void setZkQuorumParam(final String zkQuorumParam) {
+		this.zkQuorumParam = zkQuorumParam;
+	}
+
+	public String getZkPortParam() {
+		return zkPortParam;
+	}
+
+	public void setZkPortParam(final String zkPortParam) {
+		this.zkPortParam = zkPortParam;
+	}
+
+	public String getClusterParam() {
+		return clusterParam;
+	}
+
+	public void setClusterParam(final String clusterParam) {
+		this.clusterParam = clusterParam;
+	}
+
+	public String getOozieWfAppPathParam() {
+		return oozieWfAppPathParam;
+	}
+
+	public void setOozieWfAppPathParam(final String oozieWfAppPathParam) {
+		this.oozieWfAppPathParam = oozieWfAppPathParam;
+	}
+
+	public String getOozieWfAppPath() {
+		return oozieWfAppPath;
+	}
+
+	public void setOozieWfAppPath(final String oozieWfAppPath) {
+		this.oozieWfAppPath = oozieWfAppPath;
+	}
+
+	@Required
+	public String getXqueryDatasetStore() {
+		return xqueryDatasetStore;
+	}
+
+	public void setXqueryDatasetStore(final String xqueryDatasetStore) {
+		this.xqueryDatasetStore = xqueryDatasetStore;
+	}
+
+	public String getMdStoreDatasetParam() {
+		return mdStoreDatasetParam;
+	}
+
+	public void setMdStoreDatasetParam(final String mdStoreDatasetParam) {
+		this.mdStoreDatasetParam = mdStoreDatasetParam;
+	}
+
+	public String getXqueryObjectStoreService() {
+		return xqueryObjectStoreService;
+	}
+
+	@Required
+	public void setXqueryObjectStoreService(final String xqueryObjectStoreService) {
+		this.xqueryObjectStoreService = xqueryObjectStoreService;
+	}
+
+	public String getObjectStoreLocationParam() {
+		return objectStoreLocationParam;
+	}
+
+	public void setObjectStoreLocationParam(final String objectStoreLocationParam) {
+		this.objectStoreLocationParam = objectStoreLocationParam;
+	}
+
+	public String getObjectStoreBlacklistCSV() {
+		return objectStoreBlacklistCSV;
+	}
+
+	public void setObjectStoreBlacklistCSV(final String objectStoreBlacklistCSV) {
+		this.objectStoreBlacklistCSV = objectStoreBlacklistCSV;
+	}
+
+	public String getXqueryIsLookupService() {
+		return xqueryIsLookupService;
+	}
+
+	@Required
+	public void setXqueryIsLookupService(final String xqueryIsLookupService) {
+		this.xqueryIsLookupService = xqueryIsLookupService;
+	}
+
+	public String getIslookupLocationParam() {
+		return islookupLocationParam;
+	}
+
+	public void setIslookupLocationParam(final String islookupLocationParam) {
+		this.islookupLocationParam = islookupLocationParam;
+	}
+
+	public String getImportProjectConceptsContextIdParam() {
+		return importProjectConceptsContextIdParam;
+	}
+
+	public void setImportProjectConceptsContextIdParam(final String importProjectConceptsContextIdParam) {
+		this.importProjectConceptsContextIdParam = importProjectConceptsContextIdParam;
+	}
+
+	public String getImportProjectConceptsContextId() {
+		return importProjectConceptsContextId;
+	}
+
+	public void setImportProjectConceptsContextId(final String importProjectConceptsContextId) {
+		this.importProjectConceptsContextId = importProjectConceptsContextId;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/PUMAIteratorRepository.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/PUMAIteratorRepository.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/PUMAIteratorRepository.java	(revision 60998)
@@ -0,0 +1,36 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.objectStore;
+
+import java.io.File;
+
+import eu.dnetlib.data.objectstore.rmi.ObjectStoreFile;
+import eu.dnetlib.data.objectstore.rmi.Protocols;
+
+public class PUMAIteratorRepository extends IteratorRepository {
+
+	public PUMAIteratorRepository(final Iterable<File> input, final String repositoryPrefix, final String oaiPrefix) {
+		super(input, repositoryPrefix, oaiPrefix);
+		// TODO Auto-generated constructor stub
+	}
+
+	@Override
+	String generateNextElement() {
+		try {
+			String inputname = input.next().getCanonicalPath();
+			String[] values = inputname.split("/");
+			if (values.length > 1) {
+				ObjectStoreFile info = new ObjectStoreFile();
+				String fileName = values[values.length - 1].replace(".pdf", "");
+				info.setAccessProtocol(Protocols.None);
+				info.setObjectID(fileName);
+				info.setDownloadedURL("  ");
+				info.setMimeType("pdf");
+				info.setURI(inputname);
+				return info.toJSON();
+			}
+		} catch (Exception e) {
+			return null;
+		}
+		return null;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dataFlowMonitoring/TriggerPrepublicMonitoringScenarioJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dataFlowMonitoring/TriggerPrepublicMonitoringScenarioJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dataFlowMonitoring/TriggerPrepublicMonitoringScenarioJobNode.java	(revision 60998)
@@ -0,0 +1,67 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dataFlowMonitoring;
+
+import java.io.IOException;
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.monitoring.core.sensors.SensorCreationException;
+import eu.dnetlib.monitoring.core.sensors.SensorFactory;
+import eu.dnetlib.monitoring.core.sensors.collection.SensorWrapper;
+import eu.dnetlib.monitoring.core.sensors.collection.index.solr.SolrSensor;
+import eu.dnetlib.monitoring.core.sensors.collection.kv.redis.RedisSensor;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class TriggerPrepublicMonitoringScenarioJobNode extends SimpleJobNode {
+
+	private final Log log = LogFactory.getLog(TriggerPrepublicMonitoringScenarioJobNode.class);
+
+	private final static String SOLR_COLLECTION_POSTFIX = "-index-openaire";
+	private String mdFormat;
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	private SolrSensor solrSensor;
+	private RedisSensor redisSensor;
+	private SensorWrapper wrapper;
+
+	@Override
+	protected String execute(final NodeToken token) throws IOException, InstantiationException, IllegalAccessException, InterruptedException,
+			ISLookUpException, SensorCreationException {
+		log.info("Execution of TriggerPrepublicMonitoringScenarioJobNode");
+
+		/* Configuring SOLR sensor */
+		String actualCollection = mdFormat + SOLR_COLLECTION_POSTFIX;
+		log.info("At this round, the Pre-public monitoring scenario will check against " + actualCollection + " SOLR collection");
+		solrSensor = (SolrSensor) SensorFactory.createSensorWithConfiguration(SolrSensor.class, "prepublic", "solr");
+		solrSensor.getConfiguration().setParam("collection", actualCollection);
+		solrSensor.reinitialize();
+
+		/* Configuring Redis sensor */
+		redisSensor = (RedisSensor) SensorFactory.createSensorWithConfiguration(RedisSensor.class, "prepublic", "redis");
+
+		/* Wrapping the two sensors together */
+		wrapper = (SensorWrapper) SensorFactory.createSensor(SensorWrapper.class);
+		wrapper.registerSensor(solrSensor);
+		wrapper.registerSensor(redisSensor);
+
+		log.info("Measuring prepublic scenario");
+		wrapper.measure();
+		log.info("DONE!");
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getMdFormat() {
+		return mdFormat;
+	}
+
+	public void setMdFormat(final String mdFormat) {
+		this.mdFormat = mdFormat;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISMainParamsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISMainParamsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISMainParamsJobNode.java	(revision 60998)
@@ -0,0 +1,52 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import java.util.List;
+import java.util.Map;
+
+import com.google.gson.Gson;
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import org.springframework.beans.factory.annotation.Required;
+
+@Deprecated
+public class PrepareIISMainParamsJobNode extends PrepareIISParams {
+
+	private String xqueryObjectStores;
+
+	private String objectStoreParam = "import_content_objectstores_csv";
+
+	// Enable/Disable inference modules
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		super.prepare(token);
+
+		token.getEnv().setAttribute(getObjectStoreParam(), getFilteredObjectStoreCSV(getXqueryObjectStores()));
+
+		@SuppressWarnings("unchecked")		final List<Map<String, String>> sets = new Gson().fromJson(token.getEnv().getAttribute("sets"), List.class);
+		for (Map<String, String> set : sets) {
+			token.getEnv().setAttribute(set.get("enablingProperty"), set.get("enabled"));
+		}
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getXqueryObjectStores() {
+		return xqueryObjectStores;
+	}
+
+	@Required
+	public void setXqueryObjectStores(final String xqueryObjectStores) {
+		this.xqueryObjectStores = xqueryObjectStores;
+	}
+
+	public String getObjectStoreParam() {
+		return objectStoreParam;
+	}
+
+	public void setObjectStoreParam(final String objectStoreParam) {
+		this.objectStoreParam = objectStoreParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hbase/PrepareCopyTableJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hbase/PrepareCopyTableJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hbase/PrepareCopyTableJobNode.java	(revision 60998)
@@ -0,0 +1,174 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.hbase;
+
+import java.util.Map;
+import java.util.Set;
+import javax.annotation.Resource;
+
+import com.google.common.collect.Sets;
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.hadoop.rmi.HadoopService;
+import eu.dnetlib.data.hadoop.rmi.HadoopServiceException;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * The PrepareCopyTableJobNode prepares the parameters needed to run the CopyTable job.
+ */
+public class PrepareCopyTableJobNode extends SimpleJobNode {
+
+	/**
+	 * The Constant ZOOKEEPER_ZNODE_PARENT.
+	 */
+	private static final String ZOOKEEPER_ZNODE_PARENT = "zookeeper.znode.parent";
+
+	/**
+	 * The Constant HBASE_ZOOKEEPER_CLIENT_PORT.
+	 */
+	private static final String HBASE_ZOOKEEPER_CLIENT_PORT = "hbase.zookeeper.client.port";
+
+	/**
+	 * The Constant HBASE_ZOOKEEPER_QUORUM.
+	 */
+	private static final String HBASE_ZOOKEEPER_QUORUM = "hbase.zookeeper.quorum";
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(PrepareCopyTableJobNode.class);
+
+	/**
+	 * The source table.
+	 */
+	private String sourceCluster;
+
+	/**
+	 * The target cluster.
+	 */
+	private String targetCluster;
+
+	private String sourceTable;
+
+	private String targetTable;
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see eu.dnetlib.msro.workflows.nodes.SimpleJobNode#execute(com.googlecode.sarasvati.NodeToken)
+	 */
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		checkNodeParams();
+
+		final String outputQuorum = getOutputQuorum();
+		log.info("build hbase quorum: " + outputQuorum);
+		token.getEnv().setAttribute("peer.adr", outputQuorum);
+		token.getEnv().setAttribute("sourceCluster", getSourceCluster());
+		token.getEnv().setAttribute("sourceTable", getSourceTable());
+
+		token.getEnv().setAttribute("targetCluster", getTargetCluster());
+		token.getEnv().setAttribute("targetTable", getTargetTable());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	/**
+	 * Builds the output quorum.
+	 *
+	 * @return the output quorum
+	 * @throws HadoopServiceException when cannot retrieve the clustr configuration
+	 * @throws MSROException          when some of the needed properties is missing in the cluster configuration
+	 */
+	private String getOutputQuorum() throws HadoopServiceException, MSROException {
+		Map<String, String> conf = serviceLocator.getService(HadoopService.class).getClusterConfiguration(getTargetCluster());
+		log.debug(conf);
+
+		String hbaseQuorum = conf.get(HBASE_ZOOKEEPER_QUORUM);
+		String hbasePort = conf.get(HBASE_ZOOKEEPER_CLIENT_PORT);
+		String znodeParent = conf.get(ZOOKEEPER_ZNODE_PARENT);
+
+		checkParamExist(hbaseQuorum, String.format("unable to find property '%s' in cluster configuration: %s", HBASE_ZOOKEEPER_QUORUM, hbaseQuorum));
+		checkParamExist(hbasePort, String.format("unable to find property '%s' in cluster configuration: %s", HBASE_ZOOKEEPER_CLIENT_PORT, hbasePort));
+		checkParamExist(znodeParent, String.format("unable to find property '%s' in cluster configuration: %s", ZOOKEEPER_ZNODE_PARENT, znodeParent));
+
+		String outputQuorum = String.format("%s:%s:%s", hbaseQuorum, hbasePort, znodeParent);
+		return outputQuorum;
+	}
+
+	/**
+	 * Checks the wf params.
+	 *
+	 * @throws MSROException          the MSRO exception
+	 * @throws HadoopServiceException
+	 */
+	private void checkNodeParams() throws MSROException, HadoopServiceException {
+
+		checkParamExist(getSourceCluster(), "source cluster must be set");
+		checkParamExist(getTargetCluster(), "target cluster must be set");
+		checkParamExist(getSourceTable(), "source table must be set");
+		checkParamExist(getTargetTable(), "target table must be set");
+
+		final HadoopService hadoop = serviceLocator.getService(HadoopService.class);
+
+		Set<String> clusters = Sets.newHashSet(hadoop.listClusters());
+		if (!clusters.contains(getSourceCluster())) { throw new MSROException(String.format("source cluster '%s' doesn not exists", getSourceCluster())); }
+		if (!clusters.contains(getTargetCluster())) { throw new MSROException(String.format("target cluster '%s' doesn not exists", getTargetCluster())); }
+
+		if (!hadoop.existHbaseTable(getSourceCluster(), getSourceTable())) {
+			throw new MSROException(String.format(
+					"source table '%s' doesn not exists on cluster '%s'", getSourceTable(), getSourceCluster()));
+		}
+	}
+
+	/**
+	 * Check parameter existence.
+	 *
+	 * @param param the param
+	 * @param msg   the msg
+	 * @throws MSROException the MSRO exception
+	 */
+	private void checkParamExist(final String param, final String msg) throws MSROException {
+		if (StringUtils.isBlank(param)) { throw new MSROException(msg); }
+	}
+
+	public String getSourceCluster() {
+		return sourceCluster;
+	}
+
+	public void setSourceCluster(final String sourceCluster) {
+		this.sourceCluster = sourceCluster;
+	}
+
+	public String getTargetCluster() {
+		return targetCluster;
+	}
+
+	public void setTargetCluster(final String targetCluster) {
+		this.targetCluster = targetCluster;
+	}
+
+	public String getSourceTable() {
+		return sourceTable;
+	}
+
+	public void setSourceTable(final String sourceTable) {
+		this.sourceTable = sourceTable;
+	}
+
+	public String getTargetTable() {
+		return targetTable;
+	}
+
+	public void setTargetTable(final String targetTable) {
+		this.targetTable = targetTable;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/AbstractStatsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/AbstractStatsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/AbstractStatsJobNode.java	(revision 60998)
@@ -0,0 +1,72 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.stats;
+
+import java.util.List;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * Abstract BBJob node for sending BB messages to the StatsManagerService. Subclasses must implement the prepareJob method.
+ *
+ * @author alessia
+ */
+public abstract class AbstractStatsJobNode extends BlackboardJobNode {
+
+	private String xqueryForServiceIdParam;
+	/**
+	 * BB parameter defining which is the portal affected by the action. Overrides the value in the env parameter below.
+	 */
+	private String portal;
+	/**
+	 * Name of the env parameter where to find the target portal value. It is used only if the portal parameter above is not explicitly set
+	 * in the workflow.
+	 */
+	private String portalParam;
+
+	@Override
+	protected String obtainServiceId(final NodeToken token) {
+		final String xquery = token.getEnv().getAttribute(getXqueryForServiceIdParam());
+		List<String> statsServiceIds;
+		try {
+			statsServiceIds = getServiceLocator().getService(ISLookUpService.class).quickSearchProfile(xquery);
+			if (statsServiceIds.size() > 1) throw new RuntimeException("Too many StatsManagerService ids found using query: " + xquery);
+			if (statsServiceIds.size() < 1) throw new RuntimeException("StatsManagerService id not found using query: " + xquery);
+			return statsServiceIds.get(0);
+		} catch (ISLookUpException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	public String getPortalName(final NodeToken token) {
+		if (StringUtils.isNotBlank(portal)) return portal;
+		else return token.getEnv().getAttribute(portalParam);
+	}
+
+	public String getXqueryForServiceIdParam() {
+		return xqueryForServiceIdParam;
+	}
+
+	public void setXqueryForServiceIdParam(final String xqueryForServiceIdParam) {
+		this.xqueryForServiceIdParam = xqueryForServiceIdParam;
+	}
+
+	public String getPortal() {
+		return portal;
+	}
+
+	public void setPortal(final String portal) {
+		this.portal = portal;
+	}
+
+	public String getPortalParam() {
+		return portalParam;
+	}
+
+	public void setPortalParam(final String portalParam) {
+		this.portalParam = portalParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/RepositoryNoURLIterator.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/RepositoryNoURLIterator.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/RepositoryNoURLIterator.java	(revision 60998)
@@ -0,0 +1,38 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.objectStore;
+
+import java.io.File;
+
+import eu.dnetlib.data.objectstore.rmi.ObjectStoreFile;
+import eu.dnetlib.data.objectstore.rmi.Protocols;
+import eu.dnetlib.miscutils.functional.xml.DnetXsltFunctions;
+
+public class RepositoryNoURLIterator extends IteratorRepository {
+
+	public RepositoryNoURLIterator(final Iterable<File> input, final String repositoryPrefix, final String oaiPrefix) {
+		super(input, repositoryPrefix, oaiPrefix);
+	}
+
+	@Override
+	String generateNextElement() {
+		try {
+			String inputname = input.next().getCanonicalPath();
+			String[] values = inputname.split("/");
+			if (values.length > 1) {
+				ObjectStoreFile info = new ObjectStoreFile();
+				String fileName = values[values.length - 1].replace(".xml", "");
+				info.setAccessProtocol(Protocols.None);
+				// String value = "oai:europepmc.org:" + fileName;
+				String value = oaiPrefix + fileName;
+				String resultID = repositoryPrefix + "::" + DnetXsltFunctions.md5(value);
+				info.setObjectID(resultID);
+				info.setMimeType("pdf");
+				info.setURI(inputname);
+				return info.toJSON();
+			}
+		} catch (Exception e) {
+			return null;
+		}
+		return null;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/PromoteShadowStatsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/PromoteShadowStatsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/PromoteShadowStatsJobNode.java	(revision 60998)
@@ -0,0 +1,40 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.stats;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Ask the StatsManagerService to promote the shadow stats db and cache to public for the portal specified by the additional BB parameter
+ * <code>StatsManagerServiceBBAction.PROMOTE_SHADOW_STATS.getTargetPortalParamName()</code>.
+ * <p>
+ * <p>
+ * According to the StatsManagerService specifications in https://issue.openaire.research-infrastructures.eu/issues/914#note-49, this BB
+ * action will:
+ * <ol>
+ * <li>promote the shadow cache to public</li>
+ * <li>make a backup of the current stats db schema under the name 'backup'</li>
+ * <li>replace it with the new one</li>
+ * </ol>
+ * </p>
+ *
+ * @author alessia
+ */
+public class PromoteShadowStatsJobNode extends AbstractStatsJobNode {
+
+	private static final Log log = LogFactory.getLog(PromoteShadowStatsJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		job.setAction(StatsManagerServiceBBAction.PROMOTE_SHADOW_STATS.action());
+		String portal = getPortalName(token);
+		if (StringUtils.isNotBlank(portal)) {
+			job.getParameters().put(StatsManagerServiceBBAction.PROMOTE_SHADOW_STATS.getTargetPortalParamName(), portal);
+		} else {
+			log.warn(StatsManagerServiceBBAction.PROMOTE_SHADOW_STATS.getTargetPortalParamName() + " not set. The StatsManagerService will use its default.");
+		}
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISPreprocessingParamsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISPreprocessingParamsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISPreprocessingParamsJobNode.java	(revision 60998)
@@ -0,0 +1,107 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import org.springframework.beans.factory.annotation.Required;
+
+@Deprecated
+public class PrepareIISPreprocessingParamsJobNode extends PrepareIISParams {
+
+	private String xqueryWosMDStore;
+
+	private String mdStoreWosParam = "import_wos_mdstore_id";
+
+	private String xqueryDatabaseService;
+
+	private String databaseServiceLocationParam = "import_database_service_location";
+
+	private String xqueryDataciteObjectStore;
+
+	private String dataciteObjectStoreParam = "import_content_datacite_objectstores_csv";
+
+	private String xqueryWosObjectStore;
+
+	private String wosObjectStorePlaintextParam = "import_content_wos_plaintext_objectstores_csv";
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		super.prepare(token);
+
+		token.getEnv().setAttribute(getMdStoreWosParam(), getProfileId(getXqueryWosMDStore()));
+		token.getEnv().setAttribute(getDatabaseServiceLocationParam(), getServiceEndpoint(getXqueryDatabaseService()));
+
+		token.getEnv().setAttribute(getDataciteObjectStoreParam(), getFilteredObjectStoreCSV(getXqueryDataciteObjectStore()));
+		token.getEnv().setAttribute(getWosObjectStorePlaintextParam(), getProfileId(getXqueryWosObjectStore()));
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getXqueryWosMDStore() {
+		return xqueryWosMDStore;
+	}
+
+	@Required
+	public void setXqueryWosMDStore(final String xqueryWosMDStore) {
+		this.xqueryWosMDStore = xqueryWosMDStore;
+	}
+
+	public String getMdStoreWosParam() {
+		return mdStoreWosParam;
+	}
+
+	public void setMdStoreWosParam(final String mdStoreWosParam) {
+		this.mdStoreWosParam = mdStoreWosParam;
+	}
+
+	public String getXqueryDatabaseService() {
+		return xqueryDatabaseService;
+	}
+
+	@Required
+	public void setXqueryDatabaseService(final String xqueryDatabaseService) {
+		this.xqueryDatabaseService = xqueryDatabaseService;
+	}
+
+	public String getDatabaseServiceLocationParam() {
+		return databaseServiceLocationParam;
+	}
+
+	public void setDatabaseServiceLocationParam(final String databaseServiceLocationParam) {
+		this.databaseServiceLocationParam = databaseServiceLocationParam;
+	}
+
+	public String getWosObjectStorePlaintextParam() {
+		return wosObjectStorePlaintextParam;
+	}
+
+	public void setWosObjectStorePlaintextParam(final String wosObjectStorePlaintextParam) {
+		this.wosObjectStorePlaintextParam = wosObjectStorePlaintextParam;
+	}
+
+	public String getXqueryWosObjectStore() {
+		return xqueryWosObjectStore;
+	}
+
+	@Required
+	public void setXqueryWosObjectStore(final String xqueryWosObjectStore) {
+		this.xqueryWosObjectStore = xqueryWosObjectStore;
+	}
+
+	public String getXqueryDataciteObjectStore() {
+		return xqueryDataciteObjectStore;
+	}
+
+	@Required
+	public void setXqueryDataciteObjectStore(final String xqueryDataciteObjectStore) {
+		this.xqueryDataciteObjectStore = xqueryDataciteObjectStore;
+	}
+
+	public String getDataciteObjectStoreParam() {
+		return dataciteObjectStoreParam;
+	}
+
+	public void setDataciteObjectStoreParam(final String dataciteObjectStoreParam) {
+		this.dataciteObjectStoreParam = dataciteObjectStoreParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISMainParamsV2JobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISMainParamsV2JobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISMainParamsV2JobNode.java	(revision 60998)
@@ -0,0 +1,71 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import java.util.List;
+import java.util.Map;
+
+import com.google.gson.Gson;
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import org.springframework.beans.factory.annotation.Required;
+
+public class PrepareIISMainParamsV2JobNode extends PrepareIISParamsV2 {
+
+	private String xqueryObjectStores;
+
+	private String objectStoreParam = "import_content_objectstores_csv";
+
+	private String importHbaseDumpLocation;
+
+	private String importHbaseDumpLocationParam = "import_hbase_dump_location";
+
+	// Enable/Disable inference modules
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		super.prepare(token);
+
+		token.getEnv().setAttribute(getObjectStoreParam(), getFilteredObjectStoreCSV(getXqueryObjectStores()));
+		token.getEnv().setAttribute(getImportHbaseDumpLocationParam(), getImportHbaseDumpLocation());
+
+		@SuppressWarnings("unchecked")		final List<Map<String, String>> sets = new Gson().fromJson(token.getEnv().getAttribute("sets"), List.class);
+		for (Map<String, String> set : sets) {
+			token.getEnv().setAttribute(set.get("enablingProperty"), set.get("enabled"));
+		}
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getXqueryObjectStores() {
+		return xqueryObjectStores;
+	}
+
+	@Required
+	public void setXqueryObjectStores(final String xqueryObjectStores) {
+		this.xqueryObjectStores = xqueryObjectStores;
+	}
+
+	public String getObjectStoreParam() {
+		return objectStoreParam;
+	}
+
+	public void setObjectStoreParam(final String objectStoreParam) {
+		this.objectStoreParam = objectStoreParam;
+	}
+
+	public String getImportHbaseDumpLocation() {
+		return importHbaseDumpLocation;
+	}
+
+	public void setImportHbaseDumpLocation(final String importHbaseDumpLocation) {
+		this.importHbaseDumpLocation = importHbaseDumpLocation;
+	}
+
+	public String getImportHbaseDumpLocationParam() {
+		return importHbaseDumpLocationParam;
+	}
+
+	public void setImportHbaseDumpLocationParam(final String importHbaseDumpLocationParam) {
+		this.importHbaseDumpLocationParam = importHbaseDumpLocationParam;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISPreprocessingParamsV2JobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISPreprocessingParamsV2JobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareIISPreprocessingParamsV2JobNode.java	(revision 60998)
@@ -0,0 +1,106 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import org.springframework.beans.factory.annotation.Required;
+
+public class PrepareIISPreprocessingParamsV2JobNode extends PrepareIISParamsV2 {
+
+	private String xqueryWosMDStore;
+
+	private String mdStoreWosParam = "import_wos_mdstore_id";
+
+	private String xqueryDatabaseService;
+
+	private String databaseServiceLocationParam = "import_database_service_location";
+
+	private String xqueryDataciteObjectStore;
+
+	private String dataciteObjectStoreParam = "import_content_datacite_objectstores_csv";
+
+	private String xqueryWosObjectStore;
+
+	private String wosObjectStorePlaintextParam = "import_content_wos_plaintext_objectstores_csv";
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		super.prepare(token);
+
+		token.getEnv().setAttribute(getMdStoreWosParam(), getProfileId(getXqueryWosMDStore()));
+		token.getEnv().setAttribute(getDatabaseServiceLocationParam(), getServiceEndpoint(getXqueryDatabaseService()));
+
+		token.getEnv().setAttribute(getDataciteObjectStoreParam(), getFilteredObjectStoreCSV(getXqueryDataciteObjectStore()));
+		token.getEnv().setAttribute(getWosObjectStorePlaintextParam(), getProfileId(getXqueryWosObjectStore()));
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getXqueryWosMDStore() {
+		return xqueryWosMDStore;
+	}
+
+	@Required
+	public void setXqueryWosMDStore(final String xqueryWosMDStore) {
+		this.xqueryWosMDStore = xqueryWosMDStore;
+	}
+
+	public String getMdStoreWosParam() {
+		return mdStoreWosParam;
+	}
+
+	public void setMdStoreWosParam(final String mdStoreWosParam) {
+		this.mdStoreWosParam = mdStoreWosParam;
+	}
+
+	public String getXqueryDatabaseService() {
+		return xqueryDatabaseService;
+	}
+
+	@Required
+	public void setXqueryDatabaseService(final String xqueryDatabaseService) {
+		this.xqueryDatabaseService = xqueryDatabaseService;
+	}
+
+	public String getDatabaseServiceLocationParam() {
+		return databaseServiceLocationParam;
+	}
+
+	public void setDatabaseServiceLocationParam(final String databaseServiceLocationParam) {
+		this.databaseServiceLocationParam = databaseServiceLocationParam;
+	}
+
+	public String getWosObjectStorePlaintextParam() {
+		return wosObjectStorePlaintextParam;
+	}
+
+	public void setWosObjectStorePlaintextParam(final String wosObjectStorePlaintextParam) {
+		this.wosObjectStorePlaintextParam = wosObjectStorePlaintextParam;
+	}
+
+	public String getXqueryWosObjectStore() {
+		return xqueryWosObjectStore;
+	}
+
+	@Required
+	public void setXqueryWosObjectStore(final String xqueryWosObjectStore) {
+		this.xqueryWosObjectStore = xqueryWosObjectStore;
+	}
+
+	public String getXqueryDataciteObjectStore() {
+		return xqueryDataciteObjectStore;
+	}
+
+	@Required
+	public void setXqueryDataciteObjectStore(final String xqueryDataciteObjectStore) {
+		this.xqueryDataciteObjectStore = xqueryDataciteObjectStore;
+	}
+
+	public String getDataciteObjectStoreParam() {
+		return dataciteObjectStoreParam;
+	}
+
+	public void setDataciteObjectStoreParam(final String dataciteObjectStoreParam) {
+		this.dataciteObjectStoreParam = dataciteObjectStoreParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/FindStatsServiceJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/FindStatsServiceJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/FindStatsServiceJobNode.java	(revision 60998)
@@ -0,0 +1,71 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.stats;
+
+import java.util.List;
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Value;
+
+public class FindStatsServiceJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(FindStatsServiceJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Value(value = "${dnet.openaire.service.stats.lookup.xquery}")
+	private String xquery;
+
+	private String xqueryForServiceIdParam;
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @throws ISLookUpException
+	 * @throws MSROException
+	 * @see com.googlecode.sarasvati.mem.MemNode#execute(com.googlecode.sarasvati.Engine, com.googlecode.sarasvati.NodeToken)
+	 */
+	@Override
+	public String execute(final NodeToken token) throws ISLookUpException, MSROException {
+
+		log.info("lookup for stats service: " + getXquery());
+
+		List<String> statsServiceIds = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(getXquery());
+
+		if (statsServiceIds.size() > 1) { throw new MSROException("too many stats services: " + statsServiceIds); }
+
+		if (statsServiceIds.isEmpty()) {
+			return "notFound";
+		} else {
+			token.getEnv().setAttribute(getXqueryForServiceIdParam(), getXquery());
+			return "found";
+		}
+	}
+
+	public String getXquery() {
+		return xquery;
+	}
+
+	public void setXquery(final String xquery) {
+		this.xquery = xquery;
+	}
+
+	public String getXqueryForServiceIdParam() {
+		return xqueryForServiceIdParam;
+	}
+
+	public void setXqueryForServiceIdParam(final String xqueryForServiceIdParam) {
+		this.xqueryForServiceIdParam = xqueryForServiceIdParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/utils/CleaningXsltFunctions.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/utils/CleaningXsltFunctions.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/utils/CleaningXsltFunctions.java	(revision 60998)
@@ -0,0 +1,14 @@
+package eu.dnetlib.msro.openaireplus.utils;
+
+import java.text.Normalizer;
+
+public class CleaningXsltFunctions {
+
+	public static String clean(final String s) {
+		return Normalizer.normalize(s, Normalizer.Form.NFD)
+				.replaceAll("\\(.+\\)", "")
+				.replaceAll("(\\W|\\p{InCombiningDiacriticalMarks}|\\p{Punct}|\\n|\\s)+", "")
+				.toLowerCase()
+				.trim();
+	}
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/RefreshShadowCacheJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/RefreshShadowCacheJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/RefreshShadowCacheJobNode.java	(revision 60998)
@@ -0,0 +1,34 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.stats;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Ask the StatsManagerService to refresh the shadow cache according to the content of the shadow stats db for the portal specified by the
+ * additional BB parameter <code>StatsManagerServiceBBAction.REFRESH_SHADOW_CACHE.getTargetPortalParamName()</code>.
+ * <p>
+ * In order for the given portal to actually use the generated cache, we must promote the cache with the BB message 'promoteCache'.
+ * </p>
+ *
+ * @author alessia
+ * @see eu.dnetlib.msro.openaireplus.workflows.nodes.stats.PromoteShadowCacheStatsJobNode
+ */
+public class RefreshShadowCacheJobNode extends AbstractStatsJobNode {
+
+	private static final Log log = LogFactory.getLog(RefreshShadowCacheJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		job.setAction(StatsManagerServiceBBAction.REFRESH_SHADOW_CACHE.action());
+		String portal = getPortalName(token);
+		if (StringUtils.isNotBlank(portal)) {
+			job.getParameters().put(StatsManagerServiceBBAction.REFRESH_SHADOW_CACHE.getTargetPortalParamName(), portal);
+		} else {
+			log.warn(StatsManagerServiceBBAction.REFRESH_SHADOW_CACHE.getTargetPortalParamName() + " not set. The StatsManagerService will use its default.");
+		}
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareStatsParamJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareStatsParamJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/PrepareStatsParamJobNode.java	(revision 60998)
@@ -0,0 +1,54 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.hadoop.config.ClusterName;
+import eu.dnetlib.data.hadoop.config.ConfigurationEnumerator;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpDocumentNotFoundException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.conf.Configuration;
+
+public class PrepareStatsParamJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(PrepareStatsParamJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	private static final String xqueryIsLookupEndpoint =
+			"//RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='IS_LookUpServiceResourceType']//PROTOCOL[./@name='SOAP']/@address/string()";
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Resource
+	protected ConfigurationEnumerator configurationEnumerator;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		log.info("prepare stats update job");
+
+		Configuration conf = configurationEnumerator.get(ClusterName.DM);
+		String nameNode = conf.get("fs.defaultFS");
+
+		token.getEnv().setAttribute("nameNode", nameNode);
+		token.getEnv().setAttribute("jobTracker", conf.get("mapred.job.tracker"));
+
+		token.getEnv().setAttribute("isLookupEndpoint", getIsLookupEndpoint());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	private String getIsLookupEndpoint() throws ISLookUpDocumentNotFoundException, ISLookUpException {
+		return serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(xqueryIsLookupEndpoint);
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PatchHostedByTest.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PatchHostedByTest.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/PatchHostedByTest.java	(revision 60998)
@@ -0,0 +1,56 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.hostedby;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+
+import com.google.common.collect.Maps;
+import junit.framework.Assert;
+import org.apache.commons.io.IOUtils;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.io.SAXReader;
+import org.junit.Test;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+
+public class PatchHostedByTest {
+	private PatchHostedBy p = new PatchHostedBy(new HashMap<>(),"", new HostedByCounters());
+	private Resource xmlInput = new ClassPathResource("/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input.xml");
+	private Resource xmlInput2 = new ClassPathResource("/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input2.xml");
+	private Resource xmlInput3 = new ClassPathResource("/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input3.xml");
+	private Resource xmlInputFails = new ClassPathResource("/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/inputFails.xml");
+
+
+	private final SAXReader reader = new SAXReader();
+
+	private final String xpath = "substring-after(//*[local-name()='supplementTo']/*[local-name()='source']/@id,'.')";
+
+	@Test
+	public void testEvaluate() throws DocumentException, IOException {
+		final Document doc = reader.read(xmlInput.getInputStream());
+		for (Object o : doc.selectNodes(this.xpath)) {
+			Assert.assertEquals("journal10808", o);
+		}
+	}
+
+
+	@Test
+	public void testEvaluate3() throws Exception{
+		HashMap<String, HostedByEntry> map = Maps.newHashMap();
+		map.put("TIB.TEM", new HostedByEntry("123", "test repo"));
+		PatchHostedBy phb = new PatchHostedBy(map,"//*[local-name() = 'setSpec']", new HostedByCounters());
+		String res = phb.evaluate(IOUtils.toString(xmlInput3.getInputStream(), StandardCharsets.UTF_8));
+		Assert.assertTrue(res.contains("123"));
+
+	}
+
+	@Test
+	public void testInputFails() throws Exception{
+		HashMap<String, HostedByEntry> map = Maps.newHashMap();
+		map.put("0035-8711", new HostedByEntry("crossref::0035-8711", "Monthly Notices of the Royal Astronomical Society - RIGHT"));
+		PatchHostedBy phb = new PatchHostedBy(map,"//*[local-name()='journal']/@issn", new HostedByCounters());
+		String res = phb.evaluate(IOUtils.toString(xmlInputFails.getInputStream(), StandardCharsets.UTF_8));
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/ArxivIteratorRepository.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/ArxivIteratorRepository.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/ArxivIteratorRepository.java	(revision 60998)
@@ -0,0 +1,51 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.objectStore;
+
+import java.io.File;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import eu.dnetlib.data.objectstore.rmi.ObjectStoreFile;
+import eu.dnetlib.data.objectstore.rmi.Protocols;
+import eu.dnetlib.miscutils.functional.xml.DnetXsltFunctions;
+
+public class ArxivIteratorRepository extends IteratorRepository {
+
+	private Pattern pattern;
+
+	public ArxivIteratorRepository(final Iterable<File> input, final String repositoryPrefix, final String oaiPrefix) {
+		super(input, repositoryPrefix, oaiPrefix);
+		pattern = Pattern.compile("[0-9]");
+
+	}
+
+	@Override
+	String generateNextElement() {
+		try {
+			String inputname = input.next().getCanonicalPath();
+			String[] values = inputname.split("/");
+			if (values.length > 1) {
+				ObjectStoreFile info = new ObjectStoreFile();
+				String fileName = values[values.length - 1].replace(".pdf", "");
+				Matcher matcher = pattern.matcher(fileName);
+				if (matcher.find()) {
+					if (matcher.start() != 0) {
+						fileName = fileName.substring(0, matcher.start()) + "/" + fileName.substring(matcher.start());
+					}
+				}
+				info.setDownloadedURL("http://arxiv.org/abs/" + fileName);
+				info.setAccessProtocol(Protocols.None);
+				// String value = "oai:arXiv.org:" + fileName;
+				String value = oaiPrefix + fileName;
+				String resultID = repositoryPrefix + "::" + DnetXsltFunctions.md5(value);
+				info.setObjectID(resultID + "::" + DnetXsltFunctions.md5(info.getDownloadedURL()));
+				info.setMimeType("pdf");
+				info.setURI(inputname);
+				return info.toJSON();
+			}
+		} catch (Exception e) {
+			return null;
+		}
+		return null;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/vre/VREPostJobNodeTest.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/vre/VREPostJobNodeTest.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/vre/VREPostJobNodeTest.java	(revision 60998)
@@ -0,0 +1,24 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.vre;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Created by Alessia Bardi on 2019-06-20.
+ *
+ * @author Alessia Bardi
+ */
+public class VREPostJobNodeTest {
+
+	private String textWithNewLine = "Hello\\n World\\n!";
+	private String expected = "Hello\n World\n!";
+
+	@Test
+	public void testNewLine(){
+		String cleaned = textWithNewLine.replace("\\n", "\n");
+		Assert.assertEquals(expected, cleaned);
+
+	}
+
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/utils/CleaningXsltFunctionTest.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/utils/CleaningXsltFunctionTest.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/utils/CleaningXsltFunctionTest.java	(revision 60998)
@@ -0,0 +1,21 @@
+package eu.dnetlib.msro.openaireplus.utils;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Created by sandro on 11/28/16.
+ */
+public class CleaningXsltFunctionTest {
+
+	@Test
+	public void testCyrillic() {
+
+		final String inputString = "Издательский Дом \"Медицина и Просв";
+		final String cleanedString = CleaningXsltFunctions.clean(inputString);
+		System.out.println(cleanedString);
+
+		Assert.assertNotNull(cleanedString);
+
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/SetFormatInfoJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/SetFormatInfoJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/SetFormatInfoJobNode.java	(revision 60998)
@@ -0,0 +1,92 @@
+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 org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import static java.lang.String.format;
+
+public class SetFormatInfoJobNode extends SimpleJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(SetFormatInfoJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	private String format;
+	private String formatParam = "format";
+
+	private String layout;
+	private String layoutParam = "layout";
+
+	private String interpretation;
+	private String interpretationParam = "interpretation";
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @see com.googlecode.sarasvati.mem.MemNode#execute(com.googlecode.sarasvati.Engine, com.googlecode.sarasvati.NodeToken)
+	 */
+	@Override
+	public String execute(final NodeToken token) {
+
+		log.info(format("setting mdFromat: %s, layout: %s, interpretation: %s", getFormat(), getLayout(), getInterpretation()));
+
+		token.getEnv().setAttribute(getFormatParam(), getFormat());
+		token.getEnv().setAttribute(getLayoutParam(), getLayout());
+		token.getEnv().setAttribute(getInterpretationParam(), getInterpretation());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getFormat() {
+		return format;
+	}
+
+	public void setFormat(final String format) {
+		this.format = format;
+	}
+
+	public String getLayout() {
+		return layout;
+	}
+
+	public void setLayout(final String layout) {
+		this.layout = layout;
+	}
+
+	public String getInterpretation() {
+		return interpretation;
+	}
+
+	public void setInterpretation(final String interpretation) {
+		this.interpretation = interpretation;
+	}
+
+	public String getFormatParam() {
+		return formatParam;
+	}
+
+	public void setFormatParam(final String formatParam) {
+		this.formatParam = formatParam;
+	}
+
+	public String getLayoutParam() {
+		return layoutParam;
+	}
+
+	public void setLayoutParam(final String layoutParam) {
+		this.layoutParam = layoutParam;
+	}
+
+	public String getInterpretationParam() {
+		return interpretationParam;
+	}
+
+	public void setInterpretationParam(final String interpretationParam) {
+		this.interpretationParam = interpretationParam;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/LoadContextsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/LoadContextsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/LoadContextsJobNode.java	(revision 60998)
@@ -0,0 +1,39 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.msro.openaireplus.workflows.nodes.index.ContextLoader;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class LoadContextsJobNode extends SimpleJobNode {
+
+	public static final String CONTEXTMAP = "contextmap";
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(LoadContextsJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Autowired
+	private ContextLoader contextLoader;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+
+		log.info("start preparing job");
+
+		String contexts = contextLoader.load();
+
+		if (StringUtils.isBlank(contexts)) throw new MSROException("empty contexts");
+
+		token.getEnv().setAttribute(CONTEXTMAP, contexts);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/CheckHDFSCountJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/CheckHDFSCountJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/CheckHDFSCountJobNode.java	(revision 60998)
@@ -0,0 +1,75 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class CheckHDFSCountJobNode extends SimpleJobNode {
+
+	private static final Log log = LogFactory.getLog(CheckHDFSCountJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	/**
+	 * Name of the env param where to find the number to check.
+	 **/
+	private String numberToVerifyParamName;
+	/**
+	 * Name of the enc param where to find the number of records stored to hdfs.
+	 **/
+	private String hdfsCounterParamName = "mainlog:storeHdfsRecords:count";
+
+	/**
+	 * {@inheritDoc}
+	 *
+	 * @throws MSROException
+	 * @see com.googlecode.sarasvati.mem.MemNode#execute(com.googlecode.sarasvati.Engine, com.googlecode.sarasvati.NodeToken)
+	 */
+	@Override
+	public String execute(final NodeToken token) throws MSROException {
+		int hdfsCount = 0;
+		int hbaseCount = 0;
+		String numberToVerifyInEnvParam = WorkflowsConstants.BLACKBOARD_PARAM_PREFIX + numberToVerifyParamName;
+		hbaseCount = getValueFromEnv(token, numberToVerifyInEnvParam);
+		hdfsCount = getValueFromEnv(token, hdfsCounterParamName);
+
+		if (hdfsCount != hbaseCount) {
+			log.warn("Numbers are not the same. Number to verify (hbase count): " + hbaseCount + ". From hdfs: " + hdfsCount);
+			log.warn((hdfsCount - hbaseCount) + " records come without a 'metadata' field");
+			token.getEnv().setAttribute("noMetadataRecords", hdfsCount - hbaseCount);
+		}
+		return Arc.DEFAULT_ARC;
+
+	}
+
+	private int getValueFromEnv(final NodeToken token, final String paramName) throws MSROException {
+		String valueString = token.getEnv().getAttribute(paramName);
+		int number = 0;
+		try {
+			number = Integer.parseInt(valueString);
+		} catch (NumberFormatException e) {
+			log.error("Env param name: " + paramName + " is " + valueString + " and cannot be parsed as integer");
+			throw new MSROException(e);
+		}
+		return number;
+	}
+
+	public String getNumberToVerifyParamName() {
+		return numberToVerifyParamName;
+	}
+
+	public void setNumberToVerifyParamName(final String numberToVerifyParamName) {
+		this.numberToVerifyParamName = numberToVerifyParamName;
+	}
+
+	public String getHdfsCounterParamName() {
+		return hdfsCounterParamName;
+	}
+
+	public void setHdfsCounterParamName(final String hdfsCounterParamName) {
+		this.hdfsCounterParamName = hdfsCounterParamName;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/ValidateShadowStatsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/ValidateShadowStatsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/ValidateShadowStatsJobNode.java	(revision 60998)
@@ -0,0 +1,35 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.stats;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Ask the StatsManagerService to perform the content validation between the shadow stats db and the preproduction index (using the
+ * prepublic search service) and creates a report, which is serialized in the blackboard job parameters.
+ * <p>
+ * The report is relative to the shadow stats db related to the portal specified by the additional BB parameter
+ * <code>StatsManagerServiceBBAction.VALIDATE_SHADOW_STATS.getTargetPortalParamName()</code>
+ * </p>
+ *
+ * @author alessia
+ */
+public class ValidateShadowStatsJobNode extends AbstractStatsJobNode {
+
+	private static final Log log = LogFactory.getLog(ValidateShadowStatsJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		job.setAction(StatsManagerServiceBBAction.VALIDATE_SHADOW_STATS.action());
+		String portal = getPortalName(token);
+		if (StringUtils.isNotBlank(portal)) {
+			job.getParameters().put(StatsManagerServiceBBAction.VALIDATE_SHADOW_STATS.getTargetPortalParamName(), portal);
+		} else {
+			log.warn(StatsManagerServiceBBAction.VALIDATE_SHADOW_STATS.getTargetPortalParamName() + " not set. The StatsManagerService will use its default.");
+		}
+
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/ImportFilesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/ImportFilesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/ImportFilesJobNode.java	(revision 60998)
@@ -0,0 +1,125 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.objectStore;
+
+import java.io.File;
+import java.util.List;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.objectstore.rmi.ObjectStoreService;
+import eu.dnetlib.data.objectstore.rmi.Protocols;
+import eu.dnetlib.enabling.resultset.IterableResultSetFactory;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import eu.dnetlib.msro.workflows.nodes.ProgressJobNode;
+import eu.dnetlib.msro.workflows.resultset.ProcessCountingResultSetFactory;
+import eu.dnetlib.msro.workflows.util.ProgressProvider;
+import eu.dnetlib.msro.workflows.util.ResultsetProgressProvider;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.filefilter.TrueFileFilter;
+
+public class ImportFilesJobNode extends BlackboardJobNode implements ProgressJobNode {
+
+	private String basePath;
+	private String repositoryPrefix;
+	private String oaiPrefix;
+	private String objectStoreId;
+	private String contentDescription;
+
+	private ResultsetProgressProvider progressProvider;
+	private ProcessCountingResultSetFactory processCountingResultSetFactory;
+	private IterableResultSetFactory iterableResultSetFactory;
+
+	public String getRepositoryPrefix() {
+		return repositoryPrefix;
+	}
+
+	public void setRepositoryPrefix(final String repositoryPrefix) {
+		this.repositoryPrefix = repositoryPrefix;
+	}
+
+	public String getBasePath() {
+		return basePath;
+	}
+
+	public void setBasePath(final String basePath) {
+		this.basePath = basePath;
+	}
+
+	@Override
+	public ProgressProvider getProgressProvider() {
+		return progressProvider;
+	}
+
+	@Override
+	protected String obtainServiceId(final NodeToken token) {
+		return getServiceLocator().getServiceId(ObjectStoreService.class);
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		File dir = new File(basePath);
+
+		System.out.println("Getting all files in " + dir.getCanonicalPath() + " including those in subdirectories");
+		List<File> files = (List<File>) FileUtils.listFiles(dir, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
+		IteratorRepository irepo;
+		if (repositoryPrefix.equals("od________18")) {
+			irepo = new ArxivIteratorRepository(files, repositoryPrefix, oaiPrefix);
+		} else if (repositoryPrefix.equals("od______2367")) {
+			irepo = new PUMAIteratorRepository(files, repositoryPrefix, oaiPrefix);
+		} else {
+			irepo = new RepositoryNoURLIterator(files, repositoryPrefix, oaiPrefix);
+		}
+		final W3CEndpointReference epr = iterableResultSetFactory.createIterableResultSet(irepo);
+		this.progressProvider = processCountingResultSetFactory.createProgressProvider(token.getProcess(), epr);
+		job.setAction("FEED");
+		job.getParameters().put("obsID", getObjectStoreId());
+		job.getParameters().put("mime", getContentDescription());
+		job.getParameters().put("protocol", Protocols.File_System.toString());
+		job.getParameters().put("epr", progressProvider.getEpr().toString());
+
+	}
+
+	public IterableResultSetFactory getIterableResultSetFactory() {
+		return iterableResultSetFactory;
+	}
+
+	public void setIterableResultSetFactory(final IterableResultSetFactory iterableResultSetFactory) {
+		this.iterableResultSetFactory = iterableResultSetFactory;
+	}
+
+	public void setProgressProvider(final ResultsetProgressProvider progressProvider) {
+		this.progressProvider = progressProvider;
+	}
+
+	public ProcessCountingResultSetFactory getProcessCountingResultSetFactory() {
+		return processCountingResultSetFactory;
+	}
+
+	public void setProcessCountingResultSetFactory(final ProcessCountingResultSetFactory processCountingResultSetFactory) {
+		this.processCountingResultSetFactory = processCountingResultSetFactory;
+	}
+
+	public String getObjectStoreId() {
+		return objectStoreId;
+	}
+
+	public void setObjectStoreId(final String objectStoreId) {
+		this.objectStoreId = objectStoreId;
+	}
+
+	public String getContentDescription() {
+		return contentDescription;
+	}
+
+	public void setContentDescription(final String contentDescription) {
+		this.contentDescription = contentDescription;
+	}
+
+	public String getOaiPrefix() {
+		return oaiPrefix;
+	}
+
+	public void setOaiPrefix(final String oaiPrefix) {
+		this.oaiPrefix = oaiPrefix;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/IteratorRepository.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/IteratorRepository.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/objectStore/IteratorRepository.java	(revision 60998)
@@ -0,0 +1,42 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.objectStore;
+
+import java.io.File;
+import java.util.Iterator;
+
+public abstract class IteratorRepository implements Iterator<String>, Iterable<String> {
+
+	protected Iterator<File> input;
+	protected Iterable<File> inputIterable;
+	protected String repositoryPrefix;
+	protected String oaiPrefix;
+
+	abstract String generateNextElement();
+
+	public IteratorRepository(final Iterable<File> input, final String repositoryPrefix, final String oaiPrefix) {
+		this.inputIterable = input;
+		this.repositoryPrefix = repositoryPrefix;
+		this.oaiPrefix = oaiPrefix;
+	}
+
+	@Override
+	public boolean hasNext() {
+		return input.hasNext();
+	}
+
+	@Override
+	public String next() {
+		return generateNextElement();
+	}
+
+	@Override
+	public void remove() {
+		// TODO Auto-generated method stub
+	}
+
+	@Override
+	public Iterator<String> iterator() {
+		this.input = inputIterable.iterator();
+		return this;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/BackupStatsCacheJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/BackupStatsCacheJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/BackupStatsCacheJobNode.java	(revision 60998)
@@ -0,0 +1,31 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.stats;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Ask the StatsManagerService to backup the stats cache of the portal specified by the additional BB parameter
+ * <code>StatsManagerServiceBBAction.BACKUP_CACHE.getTargetPortalParamName()</code>. The cache can be restored with the last generated backup by
+ * sending a "restore" BB message.
+ *
+ * @author alessia
+ * @see RestoreStatsCacheJobNode
+ */
+public class BackupStatsCacheJobNode extends AbstractStatsJobNode {
+
+	private static final Log log = LogFactory.getLog(BackupStatsCacheJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		job.setAction(StatsManagerServiceBBAction.BACKUP_CACHE.action());
+		String portal = getPortalName(token);
+		if (StringUtils.isNotBlank(portal)) {
+			job.getParameters().put(StatsManagerServiceBBAction.BACKUP_CACHE.getTargetPortalParamName(), portal);
+		} else {
+			log.warn(StatsManagerServiceBBAction.BACKUP_CACHE.getTargetPortalParamName() + " not set. The StatsManagerService will use its default.");
+		}
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/PromoteShadowCacheStatsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/PromoteShadowCacheStatsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/PromoteShadowCacheStatsJobNode.java	(revision 60998)
@@ -0,0 +1,30 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.stats;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Ask the StatsManagerService to promote the shadow cache so that its entries can be used by the portal specified by the additional BB
+ * parameter <code>StatsManagerServiceBBAction.PROMOTE_SHADOW_CACHE.getTargetPortalParamName()</code>.
+ *
+ * @author alessia
+ */
+public class PromoteShadowCacheStatsJobNode extends AbstractStatsJobNode {
+
+	private static final Log log = LogFactory.getLog(PromoteShadowCacheStatsJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		job.setAction(StatsManagerServiceBBAction.PROMOTE_SHADOW_CACHE.action());
+		String portal = getPortalName(token);
+		if (StringUtils.isNotBlank(portal)) {
+			job.getParameters().put(StatsManagerServiceBBAction.PROMOTE_SHADOW_CACHE.getTargetPortalParamName(), portal);
+		} else {
+			log.warn(StatsManagerServiceBBAction.PROMOTE_SHADOW_CACHE.getTargetPortalParamName() + " not set. The StatsManagerService will use its default.");
+		}
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/StatsManagerServiceBBAction.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/StatsManagerServiceBBAction.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/StatsManagerServiceBBAction.java	(revision 60998)
@@ -0,0 +1,68 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.stats;
+
+public enum StatsManagerServiceBBAction {
+	PROMOTE_SHADOW_STATS {
+		@Override
+		public String action() {
+			return "promoteShadow";
+		}
+	},
+	PROMOTE_SHADOW_CACHE {
+		@Override
+		public String action() {
+			return "promoteCache";
+		}
+	},
+	REFRESH_SHADOW_CACHE {
+		@Override
+		public String action() {
+			return "refreshCache";
+		}
+
+	},
+	VALIDATE_SHADOW_STATS {
+		@Override
+		public String action() {
+			return "validate";
+		}
+
+	},
+	BACKUP_CACHE {
+		@Override
+		public String action() {
+			return "backup";
+		}
+
+	},
+	RESTORE_CACHE {
+		@Override
+		public String action() {
+			return "restore";
+		}
+
+	},
+	MIGRATE_CACHE {
+		@Override
+		public String action() {
+			return "migrate";
+		}
+
+		@Override
+		public String getTargetPortalParamName() {
+			return "targetCache";
+		}
+
+	};
+
+	public abstract String action();
+
+	public String getSourcePortalParamName() {
+		return DEFAULT_PORTAL_PARAM_NAME;
+	}
+
+	public String getTargetPortalParamName() {
+		return DEFAULT_PORTAL_PARAM_NAME;
+	}
+
+	private static String DEFAULT_PORTAL_PARAM_NAME = "cache";
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/RestoreStatsCacheJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/RestoreStatsCacheJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/RestoreStatsCacheJobNode.java	(revision 60998)
@@ -0,0 +1,34 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.stats;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Ask the StatsManagerService to restore the cache of the portal specified by the additional BB parameter
+ * <code>StatsManagerServiceBBAction.RESTORE_CACHE.getTargetPortalParamName()</code> to the last available backup.
+ * <p>
+ * To create a backup you must send a "backup" BB message.
+ * </p>
+ *
+ * @author alessia
+ * @see eu.dnetlib.msro.openaireplus.workflows.nodes.stats.BackupStatsCacheJobNode
+ */
+public class RestoreStatsCacheJobNode extends AbstractStatsJobNode {
+
+	private static final Log log = LogFactory.getLog(RestoreStatsCacheJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		job.setAction(StatsManagerServiceBBAction.RESTORE_CACHE.action());
+		String portal = getPortalName(token);
+		if (StringUtils.isNotBlank(portal)) {
+			job.getParameters().put(StatsManagerServiceBBAction.RESTORE_CACHE.getTargetPortalParamName(), portal);
+		} else {
+			log.warn(StatsManagerServiceBBAction.RESTORE_CACHE.getTargetPortalParamName() + " not set. The StatsManagerService will use its default.");
+		}
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/UpdateVocabularyEntriesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/UpdateVocabularyEntriesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/UpdateVocabularyEntriesJobNode.java	(revision 60998)
@@ -0,0 +1,79 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import java.util.stream.Collectors;
+import javax.xml.ws.wsaddressing.W3CEndpointReference;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.database.rmi.DatabaseService;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.enabling.resultset.IterableResultSetFactory;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.miscutils.functional.xml.ApplyXslt;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import org.apache.commons.io.IOUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+
+public class UpdateVocabularyEntriesJobNode extends BlackboardJobNode {
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	@Autowired
+	private IterableResultSetFactory resultSetFactory;
+
+	private Resource xquery;
+
+	private String xsltClasspath;
+
+	private String db;
+
+	@Override
+	protected String obtainServiceId(final NodeToken token) {
+		return getServiceLocator().getServiceId(DatabaseService.class);
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+
+		final ApplyXslt t = new ApplyXslt(new ClassPathResource(xsltClasspath));
+
+		final W3CEndpointReference epr =
+				resultSetFactory.createIterableResultSet(
+						serviceLocator.getService(ISLookUpService.class).quickSearchProfile(IOUtils.toString(getXquery().getInputStream()))
+								.stream().map(t::evaluate).collect(Collectors.toList()));
+
+		job.setAction("IMPORT");
+		job.getParameters().put("db", db);
+		job.getParameters().put("epr", epr.toString());
+	}
+
+	public Resource getXquery() {
+		return xquery;
+	}
+
+	@Required
+	public void setXquery(final Resource xquery) {
+		this.xquery = xquery;
+	}
+
+	public String getXsltClasspath() {
+		return xsltClasspath;
+	}
+
+	public void setXsltClasspath(final String xsltClasspath) {
+		this.xsltClasspath = xsltClasspath;
+	}
+
+	public String getDb() {
+		return db;
+	}
+
+	public void setDb(final String db) {
+		this.db = db;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/MigrateStatsCacheJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/MigrateStatsCacheJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/stats/MigrateStatsCacheJobNode.java	(revision 60998)
@@ -0,0 +1,51 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.stats;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.rmi.MSROException;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Ask the StatsManagerService to copy a cache of a portal to another portal cache.
+ * <p>
+ * The source portal is specified in the BB parameter <code>StatsManagerServiceBBAction.MIGRATE_CACHE.getSourcePortalParamName()</code>.
+ * </p>
+ * <p>
+ * The target portal is specified in the BB parameter <code>StatsManagerServiceBBAction.MIGRATE_CACHE.getTargetPortalParamName()</code>
+ * </p>
+ *
+ * @author alessia
+ */
+public class MigrateStatsCacheJobNode extends AbstractStatsJobNode {
+
+	private static final Log log = LogFactory.getLog(MigrateStatsCacheJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	/**
+	 * BB parameter defining which is the portal with the source cache to migrate.
+	 */
+	private String sourcePortal;
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+		job.setAction(StatsManagerServiceBBAction.MIGRATE_CACHE.action());
+		if (StringUtils.isBlank(sourcePortal)) throw new MSROException("Parameter sourcePortal required to migrate the cache");
+		job.getParameters().put(StatsManagerServiceBBAction.MIGRATE_CACHE.getSourcePortalParamName(), sourcePortal);
+		String targetPortal = getPortalName(token);
+		if (StringUtils.isNotBlank(targetPortal)) {
+			job.getParameters().put(StatsManagerServiceBBAction.MIGRATE_CACHE.getTargetPortalParamName(), targetPortal);
+		} else {
+			log.warn(StatsManagerServiceBBAction.MIGRATE_CACHE.getTargetPortalParamName() + " not set. The StatsManagerService will use its default.");
+		}
+
+	}
+
+	public String getSourcePortal() {
+		return sourcePortal;
+	}
+
+	public void setSourcePortal(final String sourcePortal) {
+		this.sourcePortal = sourcePortal;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input2.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input2.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input2.xml	(revision 60998)
@@ -0,0 +1,336 @@
+<doi_record owner="10.1080" timestamp="2017-02-14 08:25:07">
+    <crossref>
+        <journal>
+            <journal_metadata language="en">
+                <full_title>Expert Review of Proteomics</full_title>
+                <abbrev_title>Expert Review of Proteomics</abbrev_title>
+                <issn media_type="print">1478-9450</issn>
+                <issn media_type="electronic">1744-8387</issn>
+            </journal_metadata>
+            <journal_issue>
+                <publication_date media_type="online">
+                    <month>11</month>
+                    <day>11</day>
+                    <year>2016</year>
+                </publication_date>
+                <publication_date media_type="print">
+                    <month>12</month>
+                    <year>2016</year>
+                </publication_date>
+                <journal_volume>
+                    <volume>13</volume>
+                </journal_volume>
+                <issue>12</issue>
+            </journal_issue>
+            <journal_article publication_type="full_text">
+                <titles>
+                    <title>Urinary biomarkers for renal tract malformations</title>
+                </titles>
+                <contributors>
+                    <person_name contributor_role="author" sequence="first">
+                        <given_name>Pedro</given_name>
+                        <surname>Magalhães</surname>
+                    </person_name>
+                    <person_name contributor_role="author" sequence="additional">
+                        <given_name>Joost P.</given_name>
+                        <surname>Schanstra</surname>
+                    </person_name>
+                    <person_name contributor_role="author" sequence="additional">
+                        <given_name>Emma</given_name>
+                        <surname>Carrick</surname>
+                    </person_name>
+                    <person_name contributor_role="author" sequence="additional">
+                        <given_name>Harald</given_name>
+                        <surname>Mischak</surname>
+                    </person_name>
+                    <person_name contributor_role="author" sequence="additional">
+                        <given_name>Petra</given_name>
+                        <surname>Zürbig</surname>
+                    </person_name>
+                </contributors>
+                <publication_date media_type="online">
+                    <month>11</month>
+                    <day>15</day>
+                    <year>2016</year>
+                </publication_date>
+                <publication_date media_type="print">
+                    <month>12</month>
+                    <year>2016</year>
+                </publication_date>
+                <pages>
+                    <first_page>1121</first_page>
+                    <last_page>1129</last_page>
+                </pages>
+                <publisher_item>
+                    <item_number item_number_type="sequence-number">7</item_number>
+                    <identifier id_type="doi">10.1080/14789450.2016.1254555</identifier>
+                </publisher_item>
+                <crossmark>
+                    <crossmark_version>1</crossmark_version>
+                    <crossmark_policy>10.1080/tandf_crossmark_01</crossmark_policy>
+                    <crossmark_domains>
+                        <crossmark_domain>
+                            <domain>www.tandfonline.com</domain>
+                        </crossmark_domain>
+                    </crossmark_domains>
+                    <crossmark_domain_exclusive>true</crossmark_domain_exclusive>
+                    <custom_metadata>
+                        <assertion label="Peer Review Statement" name="peerreview_statement" order="1">The publishing and review policy for this title is described in its Aims &amp; Scope.</assertion>
+                        <assertion href="http://www.tandfonline.com/action/journalInformation?show=aimsScope&amp;journalCode=ieru20" label="Aim &amp; Scope" name="aims_and_scope_url" order="2">http://www.tandfonline.com/action/journalInformation?show=aimsScope&amp;journalCode=ieru20</assertion>
+                        <program name="fundref">
+                            <assertion name="fundgroup">
+                                <assertion name="funder_name">
+                                    Horizon 2020
+                                    <assertion name="funder_identifier" provider="crossref">http://dx.doi.org/10.13039/100010661</assertion>
+                                </assertion>
+                                <assertion name="award_number">642937-RENALTRACT</assertion>
+                            </assertion>
+                            <assertion name="fundgroup">
+                                <assertion name="funder_name">
+                                    Seventh Framework Programme
+                                    <assertion name="funder_identifier">http://dx.doi.org/10.13039/501100004963</assertion>
+                                </assertion>
+                                <assertion name="award_number">305608-EURenOmics</assertion>
+                                <assertion name="award_number">608332-iMODECKD</assertion>
+                            </assertion>
+                        </program>
+                    </custom_metadata>
+                </crossmark>
+                <doi_data>
+                    <doi>10.1080/14789450.2016.1254555</doi>
+                    <resource>https://www.tandfonline.com/doi/full/10.1080/14789450.2016.1254555</resource>
+                    <collection property="crawler-based">
+                        <item crawler="iParadigms">
+                            <resource>http://www.tandfonline.com/doi/pdf/10.1080/14789450.2016.1254555</resource>
+                        </item>
+                    </collection>
+                </doi_data>
+                <citation_list>
+                    <citation key="CIT0001">
+                        <doi>10.1034/j.1399-3046.2003.00029.x</doi>
+                    </citation>
+                    <citation key="CIT0002">
+                        <doi>10.2215/CJN.03310412</doi>
+                    </citation>
+                    <citation key="CIT0003">
+                        <doi>10.1074/mcp.E800010-MCP200</doi>
+                    </citation>
+                    <citation key="CIT0004">
+                        <doi>10.1126/scitranslmed.3001249</doi>
+                    </citation>
+                    <citation key="CIT0005">
+                        <doi>10.1586/14789450.2014.872564</doi>
+                    </citation>
+                    <citation key="CIT0006">
+                        <doi>10.1111/j.1523-1755.2004.00352.x</doi>
+                    </citation>
+                    <citation key="CIT0007">
+                        <doi>10.1002/pmic.200401012</doi>
+                    </citation>
+                    <citation key="CIT0008">
+                        <doi>10.1002/prca.200780082</doi>
+                    </citation>
+                    <citation key="CIT0009">
+                        <doi>10.1053/j.ackd.2010.09.004</doi>
+                    </citation>
+                    <citation key="CIT0010">
+                        <doi>10.1074/mcp.R800001-MCP200</doi>
+                    </citation>
+                    <citation key="CIT0011">
+                        <doi>10.1016/j.kint.2015.10.010</doi>
+                    </citation>
+                    <citation key="CIT0012">
+                        <doi>10.1111/j.1523-1755.2004.00659.x</doi>
+                    </citation>
+                    <citation key="CIT0013">
+                        <doi>10.1002/pmic.200600230</doi>
+                    </citation>
+                    <citation key="CIT0014">
+                        <doi>10.1038/nrneph.2014.247</doi>
+                    </citation>
+                    <citation key="CIT0015">
+                        <doi>10.1681/ASN.2006090956</doi>
+                    </citation>
+                    <citation key="CIT0016">
+                        <doi>10.1042/CS20050006</doi>
+                    </citation>
+                    <citation key="CIT0017">
+                        <doi>10.1038/nrc2902</doi>
+                    </citation>
+                    <citation key="CIT0018">
+                        <doi>10.1586/14789450.4.3.421</doi>
+                    </citation>
+                    <citation key="CIT0019">
+                        <doi>10.1093/ndt/gfv091</doi>
+                    </citation>
+                    <citation key="CIT0020">
+                        <doi>10.1002/prca.201400113</doi>
+                    </citation>
+                    <citation key="CIT0021">
+                        <doi>10.1681/ASN.2014050423</doi>
+                    </citation>
+                    <citation key="CIT0022">
+                        <doi>10.1021/pr070529w</doi>
+                    </citation>
+                    <citation key="CIT0023">
+                        <doi>10.1016/j.bbapap.2013.06.016</doi>
+                    </citation>
+                    <citation key="CIT0024">
+                        <doi>10.1074/mcp.M110.001917</doi>
+                    </citation>
+                    <citation key="CIT0025">
+                        <doi>10.1093/eurheartj/ehs185</doi>
+                    </citation>
+                    <citation key="CIT0026">
+                        <doi>10.1074/mcp.M700394-MCP200</doi>
+                    </citation>
+                    <citation key="CIT0027">
+                        <doi>10.4161/cbt.8.12.8634</doi>
+                    </citation>
+                    <citation key="CIT0028">
+                        <doi>10.1016/j.molonc.2014.03.006</doi>
+                    </citation>
+                    <citation key="CIT0029">
+                        <doi>10.1038/msb.2008.61</doi>
+                    </citation>
+                    <citation key="CIT0030">
+                        <doi>10.1586/14737159.2015.1093937</doi>
+                    </citation>
+                    <citation key="CIT0031">
+                        <doi>10.1002/pmic.201100436</doi>
+                    </citation>
+                    <citation key="CIT0032">
+                        <doi>10.1007/s00467-015-3291-3</doi>
+                    </citation>
+                    <citation key="CIT0033">
+                        <doi>10.1007/s00467-014-2790-y</doi>
+                    </citation>
+                    <citation key="CIT0034">
+                        <doi>10.1007/s00467-009-1251-5</doi>
+                    </citation>
+                    <citation key="CIT0035">
+                        <journal_title>Rays</journal_title>
+                        <author>Manzoni C</author>
+                        <first_page>131</first_page>
+                        <volume>27</volume>
+                        <issue>2</issue>
+                        <cYear>2002</cYear>
+                    </citation>
+                    <citation key="CIT0036">
+                        <doi>10.1177/000992280204100503</doi>
+                    </citation>
+                    <citation key="CIT0037">
+                        <doi>10.1542/peds.2010-3467</doi>
+                    </citation>
+                    <citation key="CIT0038">
+                        <doi>10.1111/j.1464-410X.2006.06641.x</doi>
+                    </citation>
+                    <citation key="CIT0039">
+                        <doi>10.5114/aoms.2013.36912</doi>
+                    </citation>
+                    <citation key="CIT0040">
+                        <doi>10.1590/S1677-55382009000300008</doi>
+                    </citation>
+                    <citation key="CIT0041">
+                        <doi>10.4103/2277-9175.133196</doi>
+                    </citation>
+                    <citation key="CIT0042">
+                        <doi>10.1046/j.1523-1755.2000.00153.x</doi>
+                    </citation>
+                    <citation key="CIT0043">
+                        <doi>10.1016/j.jpedsurg.2010.07.057</doi>
+                    </citation>
+                    <citation key="CIT0044">
+                        <doi>10.1007/s00467-012-2243-4</doi>
+                    </citation>
+                    <citation key="CIT0045">
+                        <doi>10.1016/j.jpurol.2012.11.011</doi>
+                    </citation>
+                    <citation key="CIT0046">
+                        <doi>10.1111/apa.12324</doi>
+                    </citation>
+                    <citation key="CIT0047">
+                        <doi>10.1074/mcp.M116.059386</doi>
+                    </citation>
+                    <citation key="CIT0048">
+                        <doi>10.1007/s00467-011-1773-5</doi>
+                    </citation>
+                    <citation key="CIT0049">
+                        <doi>10.1007/s00467-012-2217-6</doi>
+                    </citation>
+                    <citation key="CIT0050">
+                        <doi>10.1038/nm1384</doi>
+                    </citation>
+                    <citation key="CIT0051">
+                        <doi>10.1007/s00467-010-1455-8</doi>
+                    </citation>
+                    <citation key="CIT0052">
+                        <doi>10.1002/pmic.200800560</doi>
+                    </citation>
+                    <citation key="CIT0053">
+                        <doi>10.1016/j.juro.2011.10.169</doi>
+                    </citation>
+                    <citation key="CIT0054">
+                        <doi>10.1074/mcp.M114.040121</doi>
+                    </citation>
+                    <citation key="CIT0055">
+                        <doi>10.1016/j.juro.2010.03.061</doi>
+                    </citation>
+                    <citation key="CIT0056">
+                        <doi>10.1016/j.urology.2013.06.009</doi>
+                    </citation>
+                    <citation key="CIT0057">
+                        <doi>10.1016/j.kint.2016.02.020</doi>
+                    </citation>
+                    <citation key="CIT0058">
+                        <doi>10.1093/jjco/hys200</doi>
+                    </citation>
+                    <citation key="CIT0059">
+                        <doi>10.1016/S0022-5347(05)65444-4</doi>
+                    </citation>
+                    <citation key="CIT0060">
+                        <doi>10.1111/j.1464-410X.1992.tb15704.x</doi>
+                    </citation>
+                    <citation key="CIT0061">
+                        <doi>10.1126/scitranslmed.3005807</doi>
+                    </citation>
+                    <citation key="CIT0062">
+                        <doi>10.2215/CJN.09640911</doi>
+                    </citation>
+                    <citation key="CIT0063">
+                        <doi>10.1007/s00467-013-2506-8</doi>
+                    </citation>
+                    <citation key="CIT0064">
+                        <doi>10.1681/ASN.2007020245</doi>
+                    </citation>
+                    <citation key="CIT0065">
+                        <journal_title>Dan Med J</journal_title>
+                        <author>Madsen MG</author>
+                        <first_page>B4582</first_page>
+                        <volume>60</volume>
+                        <cYear>2013</cYear>
+                    </citation>
+                    <citation key="CIT0066">
+                        <journal_title>Mol Med Rep</journal_title>
+                        <author>Zhao Q</author>
+                        <first_page>681</first_page>
+                        <volume>14</volume>
+                        <issue>1</issue>
+                        <cYear>2016</cYear>
+                    </citation>
+                    <citation key="CIT0067">
+                        <journal_title>Int J Clin Exp Pathol</journal_title>
+                        <author>Zhao Q</author>
+                        <first_page>2615</first_page>
+                        <volume>8</volume>
+                        <issue>3</issue>
+                        <cYear>2015</cYear>
+                    </citation>
+                    <citation key="CIT0068">
+                        <doi>10.1152/ajprenal.00244.2013</doi>
+                    </citation>
+                </citation_list>
+            </journal_article>
+        </journal>
+    </crossref>
+    <dc:relation xmlns:dc="http://purl.org/dc/elements/1.1/">info:eu-repo/grantAgreement/EC/H2020/642937</dc:relation><dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/">10.1080/14789450.2016.1254555</dc:identifier></doi_record>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/ObtainOpenaireDataSourceParamsJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/ObtainOpenaireDataSourceParamsJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/ObtainOpenaireDataSourceParamsJobNode.java	(revision 60998)
@@ -0,0 +1,57 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import javax.annotation.Resource;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.miscutils.datetime.DateUtils;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+
+public class ObtainOpenaireDataSourceParamsJobNode extends SimpleJobNode {
+
+	private String providerId;
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final String query = "let $x := /*[.//RESOURCE_IDENTIFIER/@value='" + providerId + "']//EXTRA_FIELDS\n"
+				+ "return concat($x/FIELD[./key='OpenAireDataSourceId']/value, ' @@@ ', $x/FIELD[./key='NamespacePrefix']/value)";
+
+		final String[] arr = serviceLocator.getService(ISLookUpService.class).getResourceProfileByQuery(query).split("@@@");
+
+		final String origId = arr[0].trim();
+		final String nsPrefix = arr[1].trim();
+		//this is needed by the mdbuilder
+		//TODO: update mdbuilder to use the env attributes below, whose names are defined in WorkflowConstants
+		token.getEnv().setAttribute("parentDatasourceId", origId);
+		token.getEnv().setAttribute("namespacePrefix", nsPrefix);
+		token.getEnv().setAttribute("dateOfCollection", DateUtils.now_ISO8601());
+
+		//these are needed for validation and fill hostedby
+		token.getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, origId);
+		token.getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_NAMESPACE_PREFIX, nsPrefix);
+
+		token.getFullEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, origId);
+		token.getFullEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_NAMESPACE_PREFIX, nsPrefix);
+
+		token.getProcess().getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_ORIGINALID, origId);
+		token.getProcess().getEnv().setAttribute(WorkflowsConstants.DATAPROVIDER_NAMESPACE_PREFIX, nsPrefix);
+
+		return Arc.DEFAULT_ARC;
+
+	}
+
+	public String getProviderId() {
+		return providerId;
+	}
+
+	public void setProviderId(final String providerId) {
+		this.providerId = providerId;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p3.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p3.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p3.xml	(revision 60998)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::072c9a0f7177104224b881afedd4e0ab</dri:objIdentifier>
+		<dri:recordIdentifier>754515</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:26:37.65+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754515</FIELD>
+				<FIELD name="id">corda__h2020::754515</FIELD>
+				<FIELD name="code">754515</FIELD>
+				<FIELD name="acronym">HHH</FIELD>
+				<FIELD name="title">Hello</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2345</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-APR-2018</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-4-2016-2017</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">CSA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="optional2">FET Innovation Launchpad</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754515::Francesco_DE PELLEGRINI</FIELD>
+				<FIELD name="id">corda__h2020::754515::Francesco_DE PELLEGRINI</FIELD>
+				<FIELD name="firstname">Francesco</FIELD>
+				<FIELD name="secondnames">DE PELLEGRINI</FIELD>
+				<FIELD name="email">fdepellegrini@fbk.eu</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999625450</FIELD>
+				<FIELD name="id">corda__h2020::999625450</FIELD>
+				<FIELD name="legalshortname">CREATE-NET</FIELD>
+				<FIELD name="legalname">FONDAZIONE BRUNO KESSLER</FIELD>
+				<FIELD name="websiteurl">http://www.fbk.eu</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754515@@corda__h2020::999625450</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::754515</FIELD>
+				<FIELD name="resporganization">corda__h2020::999625450</FIELD>
+				<FIELD name="contactperson">corda__h2020::754515::Francesco_DE PELLEGRINI</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="name">FET Innovation Launchpad</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754515@@corda__h2020::FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="project">corda__h2020::754515</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-04-2016-2017</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::CSA@@corda__h2020::754515</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::CSA</FIELD>
+				<FIELD name="project">corda__h2020::754515</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-NOV-2018</FIELD>
+				<FIELD name="semanticclass">CSA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FindVocabularyEntriesJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FindVocabularyEntriesJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/FindVocabularyEntriesJobNode.java	(revision 60998)
@@ -0,0 +1,49 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import java.util.List;
+
+import com.googlecode.sarasvati.Arc;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import org.apache.commons.io.IOUtils;
+import org.springframework.beans.factory.annotation.Required;
+import org.springframework.core.io.Resource;
+
+public class FindVocabularyEntriesJobNode extends SimpleJobNode {
+
+	private String outputEprParam = "epr";
+
+	@javax.annotation.Resource
+	private UniqueServiceLocator serviceLocator;
+
+	private Resource xquery;
+
+	@Override
+	protected String execute(final NodeToken token) throws Exception {
+		final String query = IOUtils.toString(xquery.getInputStream());
+		final List<String> list = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(query);
+		token.getEnv().setTransientAttribute(getOutputEprParam(), list);
+
+		return Arc.DEFAULT_ARC;
+	}
+
+	public String getOutputEprParam() {
+		return outputEprParam;
+	}
+
+	public void setOutputEprParam(final String outputEprParam) {
+		this.outputEprParam = outputEprParam;
+	}
+
+	public Resource getXquery() {
+		return xquery;
+	}
+
+	@Required
+	public void setXquery(final Resource xquery) {
+		this.xquery = xquery;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/utils/ontologies/OntologyLoader.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/utils/ontologies/OntologyLoader.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/utils/ontologies/OntologyLoader.java	(revision 60998)
@@ -0,0 +1,147 @@
+package eu.dnetlib.utils.ontologies;
+
+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.
+ */
+@Component
+public class OntologyLoader {
+
+    private static final Log log = LogFactory.getLog(OntologyLoader.class);
+
+    private static final String PATTERN = "classpath*:/eu/dnetlib/test/profiles/OntologyDSResources/OntologyDSResourceType/*.xml";
+
+    private static UniqueServiceLocator staticServiceLocator;
+
+    @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/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/RunMDStorePluginJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/RunMDStorePluginJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/RunMDStorePluginJobNode.java	(revision 60998)
@@ -0,0 +1,55 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.mdstore.MDStoreService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Created by claudio on 21/03/16.
+ */
+public class RunMDStorePluginJobNode extends BlackboardJobNode {
+
+	private static final Log log = LogFactory.getLog(RunMDStorePluginJobNode.class);
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	private String mdId;
+
+	private String pluginName;
+
+	@Override
+	protected String obtainServiceId(final NodeToken nodeToken) {
+		return serviceLocator.getServiceId(MDStoreService.class);
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken nodeToken) throws Exception {
+		job.setAction("RUN_PLUGIN");
+		job.getParameters().put("plugin.name", getPluginName());
+		job.getParameters().put("mdId", getMdId());
+
+		log.debug(job.getParameters());
+	}
+
+	public String getMdId() {
+		return mdId;
+	}
+
+	public void setMdId(final String mdId) {
+		this.mdId = mdId;
+	}
+
+	public String getPluginName() {
+		return pluginName;
+	}
+
+	public void setPluginName(final String pluginName) {
+		this.pluginName = pluginName;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaire/ui/DownloadPluginValues.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaire/ui/DownloadPluginValues.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaire/ui/DownloadPluginValues.java	(revision 60998)
@@ -0,0 +1,51 @@
+package eu.dnetlib.msro.openaire.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.Resource;
+
+import eu.dnetlib.data.download.rmi.DownloadPlugin;
+import eu.dnetlib.data.download.rmi.DownloadService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.workflows.util.ValidNodeValuesFetcher;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DownloadPluginValues extends ValidNodeValuesFetcher {
+
+	/**
+	 * The download plugin enumerator.
+	 */
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Autowired(required = false)
+	private List<DownloadPlugin> plugins;
+
+	@Override
+	protected List<DnetParamValue> obtainValues(final Map<String, String> params) throws Exception {
+
+		List<String> otherPlugins = serviceLocator.getService(DownloadService.class).listPlugins();
+
+		ArrayList<DnetParamValue> output = new ArrayList<ValidNodeValuesFetcher.DnetParamValue>();
+
+		// if (plugins != null) {
+		// output.addAll(Lists.newArrayList(Iterables.transform(plugins, new Function<DownloadPlugin, DnetParamValue>() {
+		//
+		// @Override
+		// public DnetParamValue apply(final DownloadPlugin input) {
+		// return new DnetParamValue(input.getPluginName(), input.getPluginName());
+		// }
+		// })));
+		// }
+
+		if (otherPlugins != null) {
+			for (String pluginName : otherPlugins) {
+				output.add(new DnetParamValue(pluginName, pluginName));
+			}
+		}
+
+		return output;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextUtilsTest.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextUtilsTest.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/ContextUtilsTest.java	(revision 60998)
@@ -0,0 +1,181 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.contexts;
+
+import java.io.StringReader;
+import java.util.List;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+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.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Created by claudio on 01/03/16.
+ */
+public class ContextUtilsTest {
+
+	private static final Log log = LogFactory.getLog(ContextUtilsTest.class);
+	private String params = "{param1:value1,param2:value2}";
+
+
+	@Test
+	public void testWrongInput() throws DocumentException {
+		Iterable<String> it = Lists.newArrayList("<fundingtree><funder><id>irb_hr______::HRZZ</id><shortname>HRZZ</shortname><name>Croatian Science Foundation (CSF)</name><originalname>Hrvatska zaklada za znanost</originalname><jurisdiction>HR</jurisdiction></funder></fundingtree>");
+		final ContextDesc context = ContextUtils.getContext(it, "HRZZ", "HRZZ", "funding", params, "all");
+		System.out.println(context.asDomElement().asXML());
+	}
+
+	@Test
+	public void testProfile() throws DocumentException {
+		Iterable<String> it = Lists.newArrayList("<fundingtree><funder><id>irb_hr______::HRZZ</id><shortname>HRZZ</shortname><name>Croatian Science Foundation (CSF)</name><originalname>Hrvatska zaklada za znanost</originalname><jurisdiction>HR</jurisdiction></funder></fundingtree>");
+		final ContextDesc contextDesc = ContextUtils.getContext(it, "HRZZ", "HRZZ", "funding", params, "all");
+		final String profile = "<RESOURCE_PROFILE xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n"
+				+ "    <HEADER>\n"
+				+ "        <RESOURCE_IDENTIFIER value=\"1110d179-f7a8-481e-a1d9-51d14bec6b8d_Q29udGV4dERTUmVzb3VyY2VzL0NvbnRleHREU1Jlc291cmNlVHlwZQ==\"/>\n"
+				+ "        <RESOURCE_TYPE value=\"ContextDSResourceType\"/>\n"
+				+ "        <RESOURCE_KIND value=\"ContextDSResources\"/>\n"
+				+ "        <RESOURCE_URI value=\"\"/>\n"
+				+ "        <DATE_OF_CREATION value=\"2018-05-05T07:31:08+00:00\"/>\n"
+				+ "    </HEADER>\n"
+				+ "    <BODY>\n"
+				+ "        <CONFIGURATION>\n"
+				+ "            <context id=\"HRZZ\" label=\"HRZZ\" type=\"funding\">\n"
+				+ "                 <param name=\"x\">valueX</param>\n"
+				+ "                <category claim=\"true\" id=\"ARC::Special Research initiative (Direct stimulation of the visual cortex: a flexible strategy for restoring high-acuity pattern vision)\" label=\"Special Research initiative (Direct stimulation of the visual cortex: a flexible strategy for restoring high-acuity pattern vision)\">\n"
+				+ "                    <param name=\"name\">Special Research initiative (Direct stimulation of the visual cortex: a flexible strategy for restoring high-acuity pattern vision)</param>\n"
+				+ "                    <param name=\"openaireId\">arc_________::ARC::Special Research initiative (Direct stimulation of the visual cortex: a flexible strategy for restoring high-acuity pattern vision)</param>\n"
+				+ "                    <param name=\"class\">arc:fundingStream</param>\n"
+				+ "                </category>"
+				+ "            </context>\n"
+				+ "        </CONFIGURATION>\n"
+				+ "        <STATUS/>\n"
+				+ "        <SECURITY_PARAMETERS/>\n"
+				+ "    </BODY>\n"
+				+ "</RESOURCE_PROFILE>";
+		final SAXReader reader = new SAXReader();
+		final Document doc = reader.read(new StringReader(profile));
+		final String profId = doc.valueOf("//HEADER/RESOURCE_IDENTIFIER/@value");
+		final Element ctxElem = (Element) doc.selectSingleNode("//CONFIGURATION/context[@id='" + contextDesc.getId() + "' and @type='" + contextDesc.getType() + "']");
+		updateContextParams(ctxElem, contextDesc);
+
+		for (ContextPart cat : contextDesc.getCategories().values()) {
+			final Node catElem = ctxElem.selectSingleNode("./category[@id='" + cat.getId() + "']");
+			if (catElem != null) {
+				catElem.detach();
+			}
+			ctxElem.add(cat.asDomElement("category"));
+		}
+		log.info("registering profile context " + contextDesc.getId());
+		System.out.println(doc.asXML());
+	}
+
+	private void updateContextParams(final Element ctxElement, ContextDesc desc) {
+		//removing old PARAMs
+		List<Node> oldParams = ctxElement.selectNodes("param");
+		for (Node n : oldParams) {
+			n.detach();
+		}
+		//adding new params
+		for (Element param : desc.getParamsAsElements()) {
+			ctxElement.add(param);
+		}
+	}
+
+	@Test
+	public void testContextFactory() throws DocumentException {
+
+		Iterable<String> it = Lists.newArrayList(
+				"\t\t<fundings>\n"
+						+ "\t\t\t<fundingtree>\n"
+						+ "\t\t\t\t<funder>\n"
+						+ "\t\t\t\t\t<id>arc_________::ARC</id>\n"
+						+ "\t\t\t\t\t<shortname>ARC</shortname>\n"
+						+ "\t\t\t\t\t<name>Australian Research Council (ARC)</name>\n"
+						+ "\t\t\t\t\t<jurisdiction>AU</jurisdiction>\n"
+						+ "\t\t\t\t</funder>\n"
+						+ "\t\t\t</fundingtree>\n"
+						+ "\t\t</fundings>");
+
+		final ContextDesc context = ContextUtils.getContext(it, "ARC", "Australian Research Council (ARC)", "funding", params, "hidden");
+
+		final Iterable<String> iter = Iterables.transform(context.getDbEntries().entrySet(), ContextUtils.getContextRowTransformer());
+
+		final SAXReader r = new SAXReader();
+
+		for (String f : iter) {
+
+			final Document fd = r.read(new StringReader(f));
+
+			assertTrue(fd != null);
+			assertTrue("AU".equals(fd.valueOf("//FIELD[@name='jurisdiction']")));
+			assertTrue("arc_________::ARC".equals(fd.valueOf("//FIELD[@name='funder']")));
+		}
+		System.out.println(context.asDomElement().asXML());
+	}
+
+	@Test
+	public void testEmptyFunding() throws DocumentException {
+
+		Iterable<String> it = Lists.newArrayList(
+				"\t\t<fundings>\n"
+						+ "\t\t\t<fundingtree/>\n"
+						+ "\t\t</fundings>");
+
+		final ContextDesc context = ContextUtils.getContext(it, "HRZZ", "HRZZ", "funding", params, "hidden");
+
+		final Iterable<String> iter = Iterables.transform(context.getDbEntries().entrySet(), ContextUtils.getContextRowTransformer());
+
+		final SAXReader r = new SAXReader();
+
+		for (String f : iter) {
+			System.out.println(f);
+
+			/*final Document fd = r.read(new StringReader(f));
+
+			assertTrue(fd != null);
+			assertTrue("AU".equals(fd.valueOf("//FIELD[@name='jurisdiction']")));
+			assertTrue("arc_________::ARC".equals(fd.valueOf("//FIELD[@name='funder']")));
+			*/
+		}
+	}
+
+	@Test
+	public void testCountry() throws DocumentException {
+
+		Iterable<String> it = Lists.newArrayList(
+				"\t\t<fundings>\n"
+						+ "\t\t\t<fundingtree>\n"
+						+ "\t\t\t\t<funder>\n"
+						+ "\t\t\t\t\t<id>arc_________::ARC</id>\n"
+						+ "\t\t\t\t\t<shortname>ARC</shortname>\n"
+						+ "\t\t\t\t\t<name>Australian Research Council (ARC)</name>\n"
+						+ "\t\t\t\t\t<jurisdiction>AU</jurisdiction>\n"
+						+ "\t\t\t\t</funder>\n"
+						+ "\t\t\t</fundingtree>\n"
+						+ "\t\t</fundings>");
+
+		final ContextDesc context = ContextUtils.getContext(it, "ARC", "ARC", "funding", params, "hidden");
+
+		final Iterable<String> iter = Iterables.transform(context.getDbEntries().entrySet(), ContextUtils.getContextRowTransformer());
+
+		final SAXReader r = new SAXReader();
+
+		for (String f : iter) {
+			System.out.println(f);
+
+			final Document fd = r.read(new StringReader(f));
+
+			assertTrue(fd != null);
+			assertTrue("AU".equals(fd.valueOf("//FIELD[@name='jurisdiction']")));
+			assertTrue("arc_________::ARC".equals(fd.valueOf("//FIELD[@name='funder']")));
+		}
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/DnetMessageManagerTest.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/DnetMessageManagerTest.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/dhp/message/DnetMessageManagerTest.java	(revision 60998)
@@ -0,0 +1,46 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.dhp.message;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import eu.dnetlib.dhp.message.MessageType;
+import org.junit.Before;
+import org.junit.Test;
+
+import eu.dnetlib.dhp.message.Message;
+import eu.dnetlib.msro.rmi.MSROException;
+
+public class DnetMessageManagerTest {
+
+	private DnetMessageManager manager;
+
+	private static final int MAX_N_MESSAGES = 10;
+
+	@Before
+	public void setUp() throws Exception {
+		manager = new DnetMessageManager();
+		manager.setMaxNumberOfMessages(MAX_N_MESSAGES);
+	}
+
+	@Test
+	public void testRegisterMessage_multi_wfs() throws MSROException {
+		for (long i = 0; i < MAX_N_MESSAGES; i++) {
+			manager.registerMessage(new Message(MessageType.ONGOING, "wf-" + i));
+			assertTrue(manager.getOngoingMessages().size() <= MAX_N_MESSAGES);
+		}
+
+		for (long i = MAX_N_MESSAGES; i < 200; i++) {
+			manager.registerMessage(new Message(MessageType.ONGOING, "wf-" + i));
+			assertEquals(MAX_N_MESSAGES, manager.getOngoingMessages().size());
+		}
+	}
+
+	@Test
+	public void testRegisterMessage_single_wf() throws MSROException {
+		for (long i = 0; i < 100; i++) {
+			manager.registerMessage(new Message(MessageType.ONGOING, "wf-xxxx"));
+			assertEquals(1, manager.getOngoingMessages().size());
+		}
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimRelsJobNodeTest.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimRelsJobNodeTest.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimRelsJobNodeTest.java	(revision 60998)
@@ -0,0 +1,43 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.claims;
+
+import com.google.protobuf.InvalidProtocolBufferException;
+import eu.dnetlib.data.proto.OafProtos.Oaf;
+import eu.dnetlib.msro.rmi.MSROException;
+import org.junit.Test;
+import org.postgresql.util.Base64;
+
+/**
+ * Created by Alessia Bardi on 26/06/2017.
+ *
+ * @author Alessia Bardi
+ */
+public class ApplyClaimRelsJobNodeTest {
+
+	private ApplyClaimRelsJobNode applyClaims = new ApplyClaimRelsJobNode();
+
+	@Test
+	public void testGetValue() throws MSROException, InvalidProtocolBufferException {
+
+		String sourceId = "40|corda_______::9f752db0b5ec9ca23673ca7f4cb0808e";
+		String semantics = "resultProject_outcome_produces";
+		String targetId = "50|userclaim___::6a8f649d968e734a6733c23a351c1859";
+		System.out.println(getValue(sourceId, semantics, targetId));
+	}
+
+	@Test(expected = MSROException.class)
+	public void testGetValueErrSem() throws MSROException, InvalidProtocolBufferException {
+
+		String sourceId = "40|corda_______::9f752db0b5ec9ca23673ca7f4cb0808e";
+		String semantics = "produces";
+		String targetId = "50|userclaim___::6a8f649d968e734a6733c23a351c1859";
+		getValue(sourceId, semantics, targetId);
+	}
+
+	private String getValue(final String rowKey, final String semantics, final String targetId) throws MSROException, InvalidProtocolBufferException {
+		long time = System.currentTimeMillis();
+		//final String sourceId, final String semantics, final String targetId, final long timestamp
+		String res = applyClaims.getValue(rowKey, semantics, targetId, time);
+		Oaf.Builder builder = Oaf.newBuilder().mergeFrom(Base64.decode(res));
+		return builder.build().toString();
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/inputFails.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/inputFails.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/inputFails.xml	(revision 60998)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record xmlns:ac="org.apache.commons.lang.StringEscapeUtils"
+        xmlns:oaf="http://namespace.openaire.eu/oaf"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+        xmlns:prov="http://www.openarchives.org/OAI/2.0/provenance"
+        xmlns:dr="http://www.driver-repository.eu/namespace/dr"
+        xmlns:dc="http://purl.org/dc/elements/1.1/"
+        xmlns:cr="http://www.crossref.org/qrschema/2.0">
+    <header xmlns="http://namespace.openaire.eu/">
+        <dri:objIdentifier>erc_________::278d671cf00037603a357d2a6da92c08</dri:objIdentifier>
+        <dri:recordIdentifier>204559</dri:recordIdentifier>
+        <dri:dateOfCollection/>
+        <dri:mdFormat/>
+        <dri:mdFormatInterpretation/>
+        <dri:repositoryId>fe8edde0-3675-414b-b8a6-a7d7a3e988bd_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+        <dr:objectIdentifier/>
+        <dr:dateOfCollection>2017-01-03T14:03:40.217Z</dr:dateOfCollection>
+        <dr:dateOfTransformation/>
+        <oaf:datasourceprefix>erc_________</oaf:datasourceprefix>
+    </header>
+    <metadata xmlns="http://namespace.openaire.eu/">
+        <dc:title>The mass-metallicity-star formation rate relation at $&#8;oldsymbol {z gtrsim 2}$ with 3D Hubble Space Telescope</dc:title>
+        <dc:creator>Cullen, F.</dc:creator>
+        <dc:creator>Cirasuolo, M.</dc:creator>
+        <dc:creator>McLure, R. J.</dc:creator>
+        <dc:creator>Dunlop, J. S.</dc:creator>
+        <dc:creator>Bowler, R. A. A.</dc:creator>
+        <dc:date>2014-05-21+02:00</dc:date>
+        <dc:identifier>http://dx.doi.org/10.1093/mnras/stu443</dc:identifier>
+        <dc:language>eng</dc:language>
+        <dc:source>Monthly Notices of the Royal Astronomical Society</dc:source>
+        <dc:subject/>
+        <dc:type>journal_article</dc:type>
+        <dr:CobjCategory type="publication">0001</dr:CobjCategory>
+        <dr:CobjIdentifier/>
+        <oaf:dateAccepted>2014-05-21</oaf:dateAccepted>
+        <oaf:projectid validationDate="2017-01-03T14:03:40.217Z">corda_______::247373</oaf:projectid>
+        <oaf:collectedDatasourceid>openaire____::erc</oaf:collectedDatasourceid>
+        <oaf:accessrights>CLOSED</oaf:accessrights>
+        <oaf:hostedBy name="Unknown Repository"
+                      id="openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18"/>
+        <oaf:collectedFrom name="European Research Council (ERC)" id="openaire____::erc"/>
+        <oaf:identifier identifierType="doi">10.1093/mnras/stu443</oaf:identifier>
+        <oaf:journal issn="0035-8711">Monthly Notices of the Royal Astronomical Society</oaf:journal>
+    </metadata>
+    <about xmlns="http://namespace.openaire.eu/"
+           xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+        <provenance xmlns="http://www.openarchives.org/OAI/2.0/provenance"
+                    xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance http://www.openarchives.org/OAI/2.0/provenance.xsd">
+            <originDescription harvestDate="2017-01-03T14:03:40.217Z" altered="true">
+                <baseURL>file:///var/lib/dnet/data/erc/PUB_REPORTED_PATCHED.xml</baseURL>
+                <identifier/>
+                <datestamp/>
+                <metadataNamespace/>
+            </originDescription>
+        </provenance>
+        <oaf:datainfo>
+            <oaf:inferred>false</oaf:inferred>
+            <oaf:deletedbyinference>false</oaf:deletedbyinference>
+            <oaf:trust>0.9</oaf:trust>
+            <oaf:inferenceprovenance/>
+            <oaf:provenanceaction schemename="dnet:provenanceActions" schemeid="dnet:provenanceActions"
+                                  classname="sysimport:crosswalk:repository"
+                                  classid="sysimport:crosswalk:repository"/>
+        </oaf:datainfo>
+    </about>
+</record>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimUpdatesJobNodeTest.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimUpdatesJobNodeTest.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/claims/ApplyClaimUpdatesJobNodeTest.java	(revision 60998)
@@ -0,0 +1,39 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.claims;
+
+import com.google.protobuf.InvalidProtocolBufferException;
+import eu.dnetlib.data.proto.OafProtos.Oaf;
+import eu.dnetlib.msro.rmi.MSROException;
+import org.junit.Test;
+import org.postgresql.util.Base64;
+
+/**
+ * Created by Alessia Bardi on 26/06/2017.
+ *
+ * @author Alessia Bardi
+ */
+public class ApplyClaimUpdatesJobNodeTest {
+
+	private ApplyClaimUpdatesJobNode applyClaims = new ApplyClaimUpdatesJobNode();
+
+	@Test
+	public void testGetValueEGI() throws MSROException, InvalidProtocolBufferException {
+		String context = "egi";
+		String rowkey = "50|userclaim___::6a8f649d968e734a6733c23a351c1859";
+		System.out.println(getValue(context, rowkey));
+	}
+
+	@Test
+	public void testGetValueEGILongId() throws MSROException, InvalidProtocolBufferException {
+		String context = "egi::classification::natsc::earths::other";
+		String rowkey = "50|userclaim___::6a8f649d968e734a6733c23a351c1859";
+		System.out.println(getValue(context, rowkey));
+	}
+
+	private String getValue(final String context, final String rowkey) throws MSROException, InvalidProtocolBufferException {
+		long time = System.currentTimeMillis();
+		//final String sourceId, final String semantics, final String targetId, final long timestamp
+		String res = applyClaims.getValue(rowkey, context, time);
+		Oaf.Builder builder = Oaf.newBuilder().mergeFrom(Base64.decode(res));
+		return builder.build().toString();
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/utils/ontologies/OntologyLoaderTest.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/utils/ontologies/OntologyLoaderTest.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/utils/ontologies/OntologyLoaderTest.java	(revision 60998)
@@ -0,0 +1,78 @@
+package eu.dnetlib.utils.ontologies;
+
+import com.google.gson.Gson;
+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 = new Gson().fromJson(json, Ontologies.class);
+
+        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/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/IISCacheBuilderJobNode.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/IISCacheBuilderJobNode.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/nodes/IISCacheBuilderJobNode.java	(revision 60998)
@@ -0,0 +1,86 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes;
+
+import java.util.NoSuchElementException;
+import javax.annotation.Resource;
+
+import com.google.common.collect.Iterables;
+import com.googlecode.sarasvati.NodeToken;
+import eu.dnetlib.data.hadoop.config.ClusterName;
+import eu.dnetlib.data.hadoop.config.ConfigurationEnumerator;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpException;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.rmi.MSROException;
+import eu.dnetlib.msro.workflows.hadoop.SubmitHadoopJobNode;
+import org.apache.hadoop.conf.Configuration;
+
+/**
+ * Created by claudio on 07/09/16.
+ */
+public class IISCacheBuilderJobNode extends SubmitHadoopJobNode {
+
+	@Resource
+	protected ConfigurationEnumerator configurationEnumerator;
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	private String xqueryObjectStoreService;
+
+	private String oozieWfAppPath;
+
+	private String objectStoreId;
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final NodeToken token) throws Exception {
+
+		final Configuration conf = configurationEnumerator.get(ClusterName.valueOf(getCluster()));
+
+		String nameNode = conf.get("fs.defaultFS");
+
+		job.getParameters().put("nameNode", nameNode);
+		job.getParameters().put("jobTracker", conf.get("mapred.job.tracker"));
+		job.getParameters().put("objectstore_service_location", getServiceEndpoint(getXqueryObjectStoreService()));
+		job.getParameters().put("approved_objectstores_csv", getObjectStoreId());
+		job.getParameters().put("execution_environment", "cache_builder_" + getObjectStoreId());
+
+		super.prepareJob(job, token);
+	}
+
+	protected String getServiceEndpoint(final String xquery) throws MSROException {
+		try {
+			return Iterables.getOnlyElement(serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery));
+		} catch (ISLookUpException e) {
+			throw new MSROException("unable to fetch service endpoint", e);
+		} catch (NoSuchElementException e) {
+			throw new MSROException("unable to find service endpoint, xquery: " + xquery, e);
+		} catch (IllegalArgumentException e) {
+			throw new MSROException("more than one services found, we assume to have only one available", e);
+		}
+	}
+
+	public String getOozieWfAppPath() {
+		return oozieWfAppPath;
+	}
+
+	public void setOozieWfAppPath(final String oozieWfAppPath) {
+		this.oozieWfAppPath = oozieWfAppPath;
+	}
+
+	public String getObjectStoreId() {
+		return objectStoreId;
+	}
+
+	public void setObjectStoreId(final String objectStoreId) {
+		this.objectStoreId = objectStoreId;
+	}
+
+	public String getXqueryObjectStoreService() {
+		return xqueryObjectStoreService;
+	}
+
+	public void setXqueryObjectStoreService(final String xqueryObjectStoreService) {
+		this.xqueryObjectStoreService = xqueryObjectStoreService;
+	}
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input.xml	(revision 60998)
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oai:record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+		xmlns:md="http://www.pangaea.de/MetaData"
+		xmlns:oaf="http://namespace.openaire.eu/oaf" xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+	<oai:header>
+		<dri:objIdentifier>r39633d1e8c4::00bbb9e987a2363ea886dc6004899be2</dri:objIdentifier>
+		<dri:recordIdentifier>10.1594/PANGAEA.807041</dri:recordIdentifier>
+		<dri:dateOfCollection>2014-12-01T13:29:20.571Z</dri:dateOfCollection>
+		<dri:repositoryId/>
+		<oaf:datasourceprefix>r39633d1e8c4</oaf:datasourceprefix>
+		<dri:repositoryId>1f978947-5dec-4e5a-a005-02b2035fdbb2_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+	</oai:header>
+	<oai:metadata>
+		<datasetsRecord>
+			<oaf:projectid>info:eu-repo/grantAgreement/EC/FP7/265103</oaf:projectid>
+			<journal datasourceid="" issn="" name=""/>
+			<metadata>
+				<md:MetaData version="2013-03-27">
+					<md:citation id="dataset807041">
+						<md:author id="dataset.author44941">
+							<md:lastName>Kádár</md:lastName>
+							<md:firstName>Enikö</md:firstName>
+							<md:eMail>enik@pml.ac.uk</md:eMail>
+						</md:author>
+						<md:author id="dataset.author44942">
+							<md:lastName>Fisher</md:lastName>
+							<md:firstName>Andrew</md:firstName>
+						</md:author>
+						<md:author id="dataset.author44943">
+							<md:lastName>Stolpe</md:lastName>
+							<md:firstName>Björn</md:firstName>
+						</md:author>
+						<md:author id="dataset.author44944">
+							<md:lastName>Harrison</md:lastName>
+							<md:firstName>Roy M</md:firstName>
+						</md:author>
+						<md:author id="dataset.author39176">
+							<md:lastName>Parello</md:lastName>
+							<md:firstName>Francesco</md:firstName>
+							<md:eMail>parello@unipa.it</md:eMail>
+						</md:author>
+						<md:author id="dataset.author44946">
+							<md:lastName>Lead</md:lastName>
+							<md:firstName>Jamie</md:firstName>
+						</md:author>
+						<md:year>2013</md:year>
+						<md:title>Image analysis from TEM and AFM micrograph, Table S1, S2, S3, Figure S1, Figure S2</md:title>
+						<md:URI>doi:10.1594/PANGAEA.807041</md:URI>
+						<md:dateTime>2013-02-10T21:46:50</md:dateTime>
+						<md:abstract>We report on metal enrichment along a natural pH gradient owing to increased CO2 degassing at cold, shal- low seeps of Vulcano Island in the Mediterranean Sea, off Sicily. We assessed composition of unfiltered and filtered seawater (b100 nm) along acidic zones ranging between ambient and pH 5, and showed that most seep derived elements are present as nanoclusters which then aggregate into larger colloids while mixing with ambient seawater along a pH gradient. Size and elemental composition of such naturally occurring nanoparticles assessed by modern characterisation methods were in good agreement with the results from conventional analytical methods.
+							We provide analytical evidence for the presence in the water column of a large fraction of seep derived ele- ments (e.g. approximately 50% of iron, over 80% of Mn, 100% of Cr, S and Zn) in the form of nano sized par- ticles (e.g. b100 nm) even at typical open ocean pHs. We launch in situ sampling protocols and sample preparation procedures for multi-method suitable to obtain accurate measurements on nanoparticles from environmental samples. Based on our results a first insight to the formation of natural nanoparticles at cold CO2 seeps is presented and the persistence of such nano-clusters in the surrounding seawater is stipulated.
+						</md:abstract>
+						<md:supplementTo id="ref39185">
+							<md:author id="ref39185.author44941">
+								<md:lastName>Kádár</md:lastName>
+								<md:firstName>Enikö</md:firstName>
+								<md:eMail>enik@pml.ac.uk</md:eMail>
+							</md:author>
+							<md:author id="ref39185.author44942">
+								<md:lastName>Fisher</md:lastName>
+								<md:firstName>Andrew</md:firstName>
+							</md:author>
+							<md:author id="ref39185.author44943">
+								<md:lastName>Stolpe</md:lastName>
+								<md:firstName>Björn</md:firstName>
+							</md:author>
+							<md:author id="ref39185.author44944">
+								<md:lastName>Harrison</md:lastName>
+								<md:firstName>Roy M</md:firstName>
+							</md:author>
+							<md:author id="ref39185.author39176">
+								<md:lastName>Parello</md:lastName>
+								<md:firstName>Francesco</md:firstName>
+								<md:eMail>parello@unipa.it</md:eMail>
+							</md:author>
+							<md:author id="ref39185.author44946">
+								<md:lastName>Lead</md:lastName>
+								<md:firstName>Jamie</md:firstName>
+							</md:author>
+							<md:year>2012</md:year>
+							<md:title>Metallic nanoparticle enrichment at low temperature, shallow CO2 seeps in Southern Italy</md:title>
+							<md:source id="ref39185.journal10808">Marine Chemistry</md:source>
+							<md:URI>doi:10.1016/j.marchem.2012.07.001</md:URI>
+							<md:volume>140</md:volume>
+							<md:pages>24-32</md:pages>
+						</md:supplementTo>
+					</md:citation>
+					<md:reference id="ref39182" relationType="Related to" relationTypeId="12">
+						<md:author id="ref39182.author44947">
+							<md:lastName>Capaccioni</md:lastName>
+							<md:firstName>B</md:firstName>
+						</md:author>
+						<md:author id="ref39182.author44948">
+							<md:lastName>Tassi</md:lastName>
+							<md:firstName>F</md:firstName>
+							<md:orcid>0000-0002-3319-4257</md:orcid>
+						</md:author>
+						<md:author id="ref39182.author44949">
+							<md:lastName>Vaselli</md:lastName>
+							<md:firstName>O</md:firstName>
+						</md:author>
+						<md:year>2001</md:year>
+						<md:title>Organic and inorganic geochemistry of low temperature gas discharges at the Baia di Levante beach, Vulcano Island, Italy</md:title>
+						<md:source id="ref39182.journal10213">Journal of Volcanology and Geothermal Research</md:source>
+						<md:URI>doi:10.1016/S0377-0273(00)00284-5</md:URI>
+						<md:volume>108</md:volume>
+						<md:pages>173-185</md:pages>
+					</md:reference>
+					<md:reference id="ref39183" relationType="Related to" relationTypeId="12">
+						<md:author id="ref39183.author44941">
+							<md:lastName>Kádár</md:lastName>
+							<md:firstName>Enikö</md:firstName>
+							<md:eMail>enik@pml.ac.uk</md:eMail>
+						</md:author>
+						<md:author id="ref39183.author44950">
+							<md:lastName>Costa</md:lastName>
+							<md:firstName>Valentina</md:firstName>
+						</md:author>
+						<md:author id="ref39183.author44957">
+							<md:lastName>Martins</md:lastName>
+							<md:firstName>Ines</md:firstName>
+							<md:orcid>0000-0002-5362-9801</md:orcid>
+						</md:author>
+						<md:author id="ref39183.author44951">
+							<md:lastName>Santos</md:lastName>
+							<md:firstName>Ricado Serrao</md:firstName>
+						</md:author>
+						<md:author id="ref39183.author44952">
+							<md:lastName>Powell</md:lastName>
+							<md:firstName>Jonathan J</md:firstName>
+						</md:author>
+						<md:year>2005</md:year>
+						<md:title>Enrichment in trace metals (Al, Mn, Co, Cu, Mo, Cd, Fe, Zn, Pb and Hg) of macro-invertebrate habitats at hydrothermal vents along the Mid-Atlantic Ridge</md:title>
+						<md:source id="ref39183.journal6662">Hydrobiologia</md:source>
+						<md:URI>doi:10.1007/s10750-005-4758-1</md:URI>
+						<md:volume>548(1)</md:volume>
+						<md:pages>191-205</md:pages>
+					</md:reference>
+					<md:reference id="ref39184" relationType="Related to" relationTypeId="12">
+						<md:author id="ref39184.author44953">
+							<md:lastName>Yücel</md:lastName>
+							<md:firstName>Mustafa</md:firstName>
+						</md:author>
+						<md:author id="ref39184.author44954">
+							<md:lastName>Gartman</md:lastName>
+							<md:firstName>Amy</md:firstName>
+						</md:author>
+						<md:author id="ref39184.author44955">
+							<md:lastName>Chan</md:lastName>
+							<md:firstName>Clara S</md:firstName>
+						</md:author>
+						<md:author id="ref39184.author44956">
+							<md:lastName>Luther</md:lastName>
+							<md:firstName>Georg W</md:firstName>
+						</md:author>
+						<md:year>2011</md:year>
+						<md:title>Hydrothermal vents as a kinetically stable source of iron-sulphide-bearing nanoparticles to the ocean</md:title>
+						<md:source id="ref39184.journal11670">Nature Geoscience</md:source>
+						<md:URI>doi:10.1038/ngeo1148</md:URI>
+						<md:volume>4</md:volume>
+						<md:pages>367-371</md:pages>
+					</md:reference>
+					<md:reference id="ref54021" relationType="Further details" relationTypeId="17">
+						<md:title>Supplementary information - Image analysis from TEM and AFM micrographs</md:title>
+						<md:URI>hdl:10013/epic.40911.d001</md:URI>
+					</md:reference>
+					<md:extent>
+						<md:geographic>
+							<md:westBoundLongitude>14.9</md:westBoundLongitude>
+							<md:eastBoundLongitude>14.9</md:eastBoundLongitude>
+							<md:southBoundLatitude>38.53</md:southBoundLatitude>
+							<md:northBoundLatitude>38.53</md:northBoundLatitude>
+							<md:meanLongitude>14.9</md:meanLongitude>
+							<md:meanLatitude>38.53</md:meanLatitude>
+						</md:geographic>
+						<md:topoType id="topotype1">not specified</md:topoType>
+					</md:extent>
+					<md:project id="project4142" type="EU">
+						<md:label>MedSeA</md:label>
+						<md:name>Mediterranean Sea Acidification in a Changing Climate</md:name>
+						<md:URI>http://medsea-project.eu/</md:URI>
+					</md:project>
+					<md:event id="event2678800">
+						<md:label>Vulcano_Island</md:label>
+						<md:latitude>38.53</md:latitude>
+						<md:longitude>14.9</md:longitude>
+						<md:location id="event2678800.location19077">Aeolian Islands, Mediterranean Sea, off Sicily</md:location>
+					</md:event>
+					<md:size unit="kBytes">2291.0</md:size>
+					<md:license id="license1">
+						<md:label>CC-BY</md:label>
+						<md:name>Creative Commons Attribution 3.0 Unported</md:name>
+						<md:URI>http://creativecommons.org/licenses/by/3.0/</md:URI>
+					</md:license>
+					<md:keywords>
+						<md:techKeyword type="autoGenerated">supplement</md:techKeyword>
+						<md:techKeyword type="autoGenerated">citable</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author39176</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44941</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44942</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44943</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44944</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44946</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44947</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44948</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44949</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44950</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44951</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44952</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44953</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44954</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44955</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44956</md:techKeyword>
+						<md:techKeyword type="autoGenerated">author44957</md:techKeyword>
+						<md:techKeyword type="autoGenerated">dataset807041</md:techKeyword>
+						<md:techKeyword type="autoGenerated">event2678800</md:techKeyword>
+						<md:techKeyword type="autoGenerated">journal10213</md:techKeyword>
+						<md:techKeyword type="autoGenerated">journal10808</md:techKeyword>
+						<md:techKeyword type="autoGenerated">journal11670</md:techKeyword>
+						<md:techKeyword type="autoGenerated">journal6662</md:techKeyword>
+						<md:techKeyword type="autoGenerated">license1</md:techKeyword>
+						<md:techKeyword type="autoGenerated">location19077</md:techKeyword>
+						<md:techKeyword type="autoGenerated">project4142</md:techKeyword>
+						<md:techKeyword type="autoGenerated">ref39182</md:techKeyword>
+						<md:techKeyword type="autoGenerated">ref39183</md:techKeyword>
+						<md:techKeyword type="autoGenerated">ref39184</md:techKeyword>
+						<md:techKeyword type="autoGenerated">ref39185</md:techKeyword>
+						<md:techKeyword type="autoGenerated">ref54021</md:techKeyword>
+						<md:techKeyword type="autoGenerated">topotype1</md:techKeyword>
+					</md:keywords>
+					<md:technicalInfo>
+						<md:entry key="xmlLastModified" value="2014-11-13T08:51:13Z"/>
+						<md:entry key="mimeType" value="application/pdf"/>
+						<md:entry key="status" value="published &amp; citable"/>
+						<md:entry key="status_num" value="11"/>
+						<md:entry key="DOIRegistryStatus" value="registered"/>
+						<md:entry key="DOIRegistryStatus_num" value="4"/>
+						<md:entry key="loginOption" value="unrestricted"/>
+						<md:entry key="loginOption_num" value="1"/>
+						<md:entry key="staticURL" value="hdl:10013/epic.40911.d002"/>
+					</md:technicalInfo>
+				</md:MetaData>
+			</metadata>
+		</datasetsRecord>
+	</oai:metadata>
+</oai:record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p7.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p7.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p7.xml	(revision 60998)
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::1455cc535553ceef0b94e58da9abfd52</dri:objIdentifier>
+		<dri:recordIdentifier>737164</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:24:08.344+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::737164</FIELD>
+				<FIELD name="id">corda__h2020::737164</FIELD>
+				<FIELD name="code">737164</FIELD>
+				<FIELD name="acronym">SUMCASTEC</FIELD>
+				<FIELD name="title">Semiconductor-based Ultrawideband Micromanipulation of CAncer STEm Cells</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JAN-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-JUN-2020</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-1-2016-2017</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">Yes</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">RIA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="optional2">FET-Open research and innovation actions</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::737164::Arnaud_POTHIER</FIELD>
+				<FIELD name="id">corda__h2020::737164::Arnaud_POTHIER</FIELD>
+				<FIELD name="firstname">Arnaud</FIELD>
+				<FIELD name="secondnames">POTHIER</FIELD>
+				<FIELD name="email">arnaud.pothier@xlim.fr</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::939948916</FIELD>
+				<FIELD name="id">corda__h2020::939948916</FIELD>
+				<FIELD name="legalshortname">CREO</FIELD>
+				<FIELD name="legalname">CREO MEDICAL LIMITED</FIELD>
+				<FIELD name="websiteurl">http://www.creomedical.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::737164@@corda__h2020::939948916</FIELD>
+				<FIELD name="participantnumber" type="int">6</FIELD>
+				<FIELD name="project">corda__h2020::737164</FIELD>
+				<FIELD name="resporganization">corda__h2020::939948916</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::998267838</FIELD>
+				<FIELD name="id">corda__h2020::998267838</FIELD>
+				<FIELD name="legalshortname">UNILIM</FIELD>
+				<FIELD name="legalname">UNIVERSITE DE LIMOGES</FIELD>
+				<FIELD name="websiteurl">http://www.unilim.fr</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">FR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::737164@@corda__h2020::998267838</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::737164</FIELD>
+				<FIELD name="resporganization">corda__h2020::998267838</FIELD>
+				<FIELD name="contactperson">corda__h2020::737164::Arnaud_POTHIER</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999606438</FIELD>
+				<FIELD name="id">corda__h2020::999606438</FIELD>
+				<FIELD name="legalshortname">IHP</FIELD>
+				<FIELD name="legalname">IHP GMBH - INNOVATIONS FOR HIGH PERFORMANCE MICROELECTRONICS/LEIBNIZ-INSTITUT FUER INNOVATIVE MIKROELEKTRONIK</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::737164@@corda__h2020::999606438</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::737164</FIELD>
+				<FIELD name="resporganization">corda__h2020::999606438</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999823815</FIELD>
+				<FIELD name="id">corda__h2020::999823815</FIELD>
+				<FIELD name="legalshortname">BANGOR</FIELD>
+				<FIELD name="legalname">BANGOR UNIVERSITY</FIELD>
+				<FIELD name="websiteurl">http://www.bangor.ac.uk</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">N/A</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">N/A</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::737164@@corda__h2020::999823815</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::737164</FIELD>
+				<FIELD name="resporganization">corda__h2020::999823815</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999988521</FIELD>
+				<FIELD name="id">corda__h2020::999988521</FIELD>
+				<FIELD name="legalshortname">ENEA</FIELD>
+				<FIELD name="legalname">AGENZIA NAZIONALE PER LE NUOVE TECNOLOGIE, L'ENERGIA E LO SVILUPPO ECONOMICO SOSTENIBILE</FIELD>
+				<FIELD name="websiteurl">http://www.enea.it</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::737164@@corda__h2020::999988521</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::737164</FIELD>
+				<FIELD name="resporganization">corda__h2020::999988521</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999995602</FIELD>
+				<FIELD name="id">corda__h2020::999995602</FIELD>
+				<FIELD name="legalshortname">UNIPD</FIELD>
+				<FIELD name="legalname">UNIVERSITA DEGLI STUDI DI PADOVA</FIELD>
+				<FIELD name="websiteurl">http://www.unipd.it</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::737164@@corda__h2020::999995602</FIELD>
+				<FIELD name="participantnumber" type="int">5</FIELD>
+				<FIELD name="project">corda__h2020::737164</FIELD>
+				<FIELD name="resporganization">corda__h2020::999995602</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="name">FET-Open research and innovation actions</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::737164@@corda__h2020::FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="project">corda__h2020::737164</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-01-2016-2017</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::RIA@@corda__h2020::737164</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::RIA</FIELD>
+				<FIELD name="project">corda__h2020::737164</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JAN-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-JUN-2020</FIELD>
+				<FIELD name="semanticclass">RIA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p4.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p4.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p4.xml	(revision 60998)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::072c9a0f7177104264b881afedd4e0ab</dri:objIdentifier>
+		<dri:recordIdentifier>754514</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:26:37.65+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754514</FIELD>
+				<FIELD name="id">corda__h2020::754514</FIELD>
+				<FIELD name="code">754514</FIELD>
+				<FIELD name="acronym">ROMA</FIELD>
+				<FIELD name="title">Resource AuctiOning Engine for the Mobile Digital MArket</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-NOV-2018</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-4-2016-2017</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">CSA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="optional2">FET Innovation Launchpad</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754514::Francesco_DE PELLEGRINI</FIELD>
+				<FIELD name="id">corda__h2020::754514::Francesco_DE PELLEGRINI</FIELD>
+				<FIELD name="firstname">Francesco</FIELD>
+				<FIELD name="secondnames">DE PELLEGRINI</FIELD>
+				<FIELD name="email">fdepellegrini@fbk.eu</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999625450</FIELD>
+				<FIELD name="id">corda__h2020::999625450</FIELD>
+				<FIELD name="legalshortname">CREATE-NET</FIELD>
+				<FIELD name="legalname">FONDAZIONE BRUNO KESSLER</FIELD>
+				<FIELD name="websiteurl">http://www.fbk.eu</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754514@@corda__h2020::999625450</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::754514</FIELD>
+				<FIELD name="resporganization">corda__h2020::999625450</FIELD>
+				<FIELD name="contactperson">corda__h2020::754514::Francesco_DE PELLEGRINI</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="name">FET Innovation Launchpad</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754514@@corda__h2020::FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="project">corda__h2020::754514</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-04-2016-2017</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::CSA@@corda__h2020::754514</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::CSA</FIELD>
+				<FIELD name="project">corda__h2020::754514</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-NOV-2018</FIELD>
+				<FIELD name="semanticclass">CSA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p11.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p11.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p11.xml	(revision 60998)
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::236e667820ae0bcf403cb3a8d604e9f4</dri:objIdentifier>
+		<dri:recordIdentifier>665148</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T10:51:55.189+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665148</FIELD>
+				<FIELD name="id">corda__h2020::665148</FIELD>
+				<FIELD name="code">665148</FIELD>
+				<FIELD name="acronym">QCUMbER</FIELD>
+				<FIELD name="title">Quantum Controlled Ultrafast Multimode Entanglement and Measurement</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-AUG-2018</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-2014-2015-RIA</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">RIA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="optional2">FET-Open research projects</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665148::Brian_SMITH</FIELD>
+				<FIELD name="id">corda__h2020::665148::Brian_SMITH</FIELD>
+				<FIELD name="firstname">Brian</FIELD>
+				<FIELD name="secondnames">SMITH</FIELD>
+				<FIELD name="email">b.smith1@physics.ox.ac.uk</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999837492</FIELD>
+				<FIELD name="id">corda__h2020::999837492</FIELD>
+				<FIELD name="legalshortname">UPB</FIELD>
+				<FIELD name="legalname">UNIVERSITAET PADERBORN</FIELD>
+				<FIELD name="websiteurl">http://www.uni-paderborn.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665148@@corda__h2020::999837492</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::665148</FIELD>
+				<FIELD name="resporganization">corda__h2020::999837492</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999852430</FIELD>
+				<FIELD name="id">corda__h2020::999852430</FIELD>
+				<FIELD name="legalshortname">UROS</FIELD>
+				<FIELD name="legalname">UNIVERSITAET ROSTOCK</FIELD>
+				<FIELD name="websiteurl">http://www.uni-rostock.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665148@@corda__h2020::999852430</FIELD>
+				<FIELD name="participantnumber" type="int">5</FIELD>
+				<FIELD name="project">corda__h2020::665148</FIELD>
+				<FIELD name="resporganization">corda__h2020::999852430</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999866107</FIELD>
+				<FIELD name="id">corda__h2020::999866107</FIELD>
+				<FIELD name="legalshortname">UNIROMA3</FIELD>
+				<FIELD name="legalname">UNIVERSITA DEGLI STUDI ROMA TRE</FIELD>
+				<FIELD name="websiteurl">http://www.uniroma3.it</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665148@@corda__h2020::999866107</FIELD>
+				<FIELD name="participantnumber" type="int">6</FIELD>
+				<FIELD name="project">corda__h2020::665148</FIELD>
+				<FIELD name="resporganization">corda__h2020::999866107</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999899378</FIELD>
+				<FIELD name="id">corda__h2020::999899378</FIELD>
+				<FIELD name="legalshortname">USTL</FIELD>
+				<FIELD name="legalname">UNIVERSITE DES SCIENCES ET TECHNOLOGIES DE LILLE - LILLE I</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">FR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665148@@corda__h2020::999899378</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::665148</FIELD>
+				<FIELD name="resporganization">corda__h2020::999899378</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999984350</FIELD>
+				<FIELD name="id">corda__h2020::999984350</FIELD>
+				<FIELD name="legalshortname">UOXF</FIELD>
+				<FIELD name="legalname">THE CHANCELLOR, MASTERS AND SCHOLARS OF THE UNIVERSITY OF OXFORD</FIELD>
+				<FIELD name="websiteurl">http://www.ox.ac.uk</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665148@@corda__h2020::999984350</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::665148</FIELD>
+				<FIELD name="resporganization">corda__h2020::999984350</FIELD>
+				<FIELD name="contactperson">corda__h2020::665148::Brian_SMITH</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999986193</FIELD>
+				<FIELD name="id">corda__h2020::999986193</FIELD>
+				<FIELD name="legalshortname">UPMC</FIELD>
+				<FIELD name="legalname">UNIVERSITE PIERRE ET MARIE CURIE - PARIS 6</FIELD>
+				<FIELD name="websiteurl">http://www.upmc.fr</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">FR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665148@@corda__h2020::999986193</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::665148</FIELD>
+				<FIELD name="resporganization">corda__h2020::999986193</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="name">FET-Open research projects</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665148@@corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="project">corda__h2020::665148</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::RIA@@corda__h2020::665148</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::RIA</FIELD>
+				<FIELD name="project">corda__h2020::665148</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-AUG-2018</FIELD>
+				<FIELD name="semanticclass">RIA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p22.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p22.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p22.xml	(revision 60998)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::005c3dcb8b95f0ead48dcef46d7a934b</dri:objIdentifier>
+		<dri:recordIdentifier>703374</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:09:28.795+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::703374</FIELD>
+				<FIELD name="id">corda__h2020::703374</FIELD>
+				<FIELD name="code">703374</FIELD>
+				<FIELD name="acronym">NMR4Nanos</FIELD>
+				<FIELD name="title">Development and application of NMR-based tools to inorganic nanocarriers for effective vaccine delivery</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">.--</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">.--</FIELD>
+				<FIELD name="call_identifier">H2020-MSCA-IF-2015</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">MSCA-IF-EF-ST</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">MSCA-IF-2015-EF</FIELD>
+				<FIELD name="optional2">Marie Skłodowska-Curie Individual Fellowships (IF-EF)</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::703374::Jose_MARTINS</FIELD>
+				<FIELD name="id">corda__h2020::703374::Jose_MARTINS</FIELD>
+				<FIELD name="firstname">Jose</FIELD>
+				<FIELD name="secondnames">MARTINS</FIELD>
+				<FIELD name="email">jose.martins@ugent.be</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999986096</FIELD>
+				<FIELD name="id">corda__h2020::999986096</FIELD>
+				<FIELD name="legalshortname">UGENT</FIELD>
+				<FIELD name="legalname">UNIVERSITEIT GENT</FIELD>
+				<FIELD name="websiteurl">http://www.ugent.be</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">BE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::703374@@corda__h2020::999986096</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::703374</FIELD>
+				<FIELD name="resporganization">corda__h2020::999986096</FIELD>
+				<FIELD name="contactperson">corda__h2020::703374::Jose_MARTINS</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::MSCA-IF-2015-EF</FIELD>
+				<FIELD name="id">corda__h2020::MSCA-IF-2015-EF</FIELD>
+				<FIELD name="name">Marie Skłodowska-Curie Individual Fellowships (IF-EF)</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::703374@@corda__h2020::MSCA-IF-2015-EF</FIELD>
+				<FIELD name="project">corda__h2020::703374</FIELD>
+				<FIELD name="subject">corda__h2020::MSCA-IF-2015-EF</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::MSCA-IF-EF-ST@@corda__h2020::703374</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::MSCA-IF-EF-ST</FIELD>
+				<FIELD name="project">corda__h2020::703374</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">.--</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">.--</FIELD>
+				<FIELD name="semanticclass">MSCA-IF-EF-ST</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p8.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p8.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p8.xml	(revision 60998)
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::19643e6a0e10790318ff84b3b7b01571</dri:objIdentifier>
+		<dri:recordIdentifier>686330</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:01:29.854+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686330</FIELD>
+				<FIELD name="id">corda__h2020::686330</FIELD>
+				<FIELD name="code">686330</FIELD>
+				<FIELD name="acronym">FutureAgriculture</FIELD>
+				<FIELD name="title">Transforming the future of agriculture through synthetic photorespiration</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JAN-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-DEC-2020</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-2014-2015-RIA</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">Yes</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">RIA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="optional2">FET-Open research projects</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686330::Arren_BAR-EVEN</FIELD>
+				<FIELD name="id">corda__h2020::686330::Arren_BAR-EVEN</FIELD>
+				<FIELD name="firstname">Arren</FIELD>
+				<FIELD name="secondnames">BAR-EVEN</FIELD>
+				<FIELD name="email">arren.be@gmail.com</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::925188814</FIELD>
+				<FIELD name="id">corda__h2020::925188814</FIELD>
+				<FIELD name="legalshortname">Evogene Ltd.</FIELD>
+				<FIELD name="legalname">EVOGENE LTD</FIELD>
+				<FIELD name="websiteurl">http://www.evogene.com/</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">IL</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686330@@corda__h2020::925188814</FIELD>
+				<FIELD name="participantnumber" type="int">5</FIELD>
+				<FIELD name="project">corda__h2020::686330</FIELD>
+				<FIELD name="resporganization">corda__h2020::925188814</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::983078414</FIELD>
+				<FIELD name="id">corda__h2020::983078414</FIELD>
+				<FIELD name="legalshortname">IN Srl</FIELD>
+				<FIELD name="legalname">IN SRL</FIELD>
+				<FIELD name="websiteurl">http://www.insrl.eu</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686330@@corda__h2020::983078414</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::686330</FIELD>
+				<FIELD name="resporganization">corda__h2020::983078414</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999979306</FIELD>
+				<FIELD name="id">corda__h2020::999979306</FIELD>
+				<FIELD name="legalshortname">WEIZMANN</FIELD>
+				<FIELD name="legalname">WEIZMANN INSTITUTE OF SCIENCE</FIELD>
+				<FIELD name="websiteurl">http://www.weizmann.ac.il</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IL</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686330@@corda__h2020::999979306</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::686330</FIELD>
+				<FIELD name="resporganization">corda__h2020::999979306</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999990267</FIELD>
+				<FIELD name="id">corda__h2020::999990267</FIELD>
+				<FIELD name="legalshortname">MPG</FIELD>
+				<FIELD name="legalname">MAX-PLANCK-GESELLSCHAFT ZUR FORDERUNG DER WISSENSCHAFTEN EV</FIELD>
+				<FIELD name="websiteurl">http://www.mpg.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686330@@corda__h2020::999990267</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::686330</FIELD>
+				<FIELD name="resporganization">corda__h2020::999990267</FIELD>
+				<FIELD name="contactperson">corda__h2020::686330::Arren_BAR-EVEN</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999993468</FIELD>
+				<FIELD name="id">corda__h2020::999993468</FIELD>
+				<FIELD name="legalshortname">Imperial</FIELD>
+				<FIELD name="legalname">IMPERIAL COLLEGE OF SCIENCE TECHNOLOGY AND MEDICINE</FIELD>
+				<FIELD name="websiteurl">http://www.imperial.ac.uk</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686330@@corda__h2020::999993468</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::686330</FIELD>
+				<FIELD name="resporganization">corda__h2020::999993468</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="name">FET-Open research projects</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686330@@corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="project">corda__h2020::686330</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::RIA@@corda__h2020::686330</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::RIA</FIELD>
+				<FIELD name="project">corda__h2020::686330</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JAN-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-DEC-2020</FIELD>
+				<FIELD name="semanticclass">RIA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p15.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p15.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p15.xml	(revision 60998)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::0036ca7301de596bcb73e3a5d78fdb62</dri:objIdentifier>
+		<dri:recordIdentifier>701676</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:08:16.309+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::701676</FIELD>
+				<FIELD name="id">corda__h2020::701676</FIELD>
+				<FIELD name="code">701676</FIELD>
+				<FIELD name="acronym">SF-QFT</FIELD>
+				<FIELD name="title">Fundamental physics with intense laser fields</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-OCT-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-SEP-2018</FIELD>
+				<FIELD name="call_identifier">H2020-MSCA-IF-2015</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">MSCA-IF-EF-ST</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">MSCA-IF-2015-EF</FIELD>
+				<FIELD name="optional2">Marie Skłodowska-Curie Individual Fellowships (IF-EF)</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::701676::Thomas_HEINZL</FIELD>
+				<FIELD name="id">corda__h2020::701676::Thomas_HEINZL</FIELD>
+				<FIELD name="firstname">Thomas</FIELD>
+				<FIELD name="secondnames">HEINZL</FIELD>
+				<FIELD name="email">thomas.heinzl@plymouth.ac.uk</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999854661</FIELD>
+				<FIELD name="id">corda__h2020::999854661</FIELD>
+				<FIELD name="legalshortname">UOP</FIELD>
+				<FIELD name="legalname">UNIVERSITY OF PLYMOUTH</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">N/A</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">N/A</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::701676@@corda__h2020::999854661</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::701676</FIELD>
+				<FIELD name="resporganization">corda__h2020::999854661</FIELD>
+				<FIELD name="contactperson">corda__h2020::701676::Thomas_HEINZL</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::MSCA-IF-2015-EF</FIELD>
+				<FIELD name="id">corda__h2020::MSCA-IF-2015-EF</FIELD>
+				<FIELD name="name">Marie Skłodowska-Curie Individual Fellowships (IF-EF)</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::701676@@corda__h2020::MSCA-IF-2015-EF</FIELD>
+				<FIELD name="project">corda__h2020::701676</FIELD>
+				<FIELD name="subject">corda__h2020::MSCA-IF-2015-EF</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::MSCA-IF-EF-ST@@corda__h2020::701676</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::MSCA-IF-EF-ST</FIELD>
+				<FIELD name="project">corda__h2020::701676</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-OCT-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-SEP-2018</FIELD>
+				<FIELD name="semanticclass">MSCA-IF-EF-ST</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/profiles/RepositoryXsltFunctions.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/profiles/RepositoryXsltFunctions.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/msro/openaireplus/workflows/profiles/RepositoryXsltFunctions.java	(revision 60998)
@@ -0,0 +1,132 @@
+package eu.dnetlib.msro.openaireplus.workflows.profiles;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.List;
+import java.util.Map;
+
+import com.google.common.base.Splitter;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import org.antlr.stringtemplate.StringTemplate;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+
+public class RepositoryXsltFunctions {
+
+	private static final Log log = LogFactory.getLog(RepositoryXsltFunctions.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	private static Resource ifaceTemplate = new ClassPathResource("/eu/dnetlib/msro/openaireplus/workflows/profiles/repo_interface.st");
+
+	private static Resource paramTemplate = new ClassPathResource("/eu/dnetlib/msro/openaireplus/workflows/profiles/repo_param.st");
+
+	private enum Params {
+		FORMAT, SET
+	}
+
+	;
+
+	public static String buildInterface(final String infopackage) {
+
+		final List<String> formats = Lists.newArrayList();
+		final List<String> sets = Lists.newArrayList();
+		final Map<String, String> otherParams = Maps.newHashMap();
+
+		for (String param : parseParams(getValueBetween(infopackage, "===6===", null))) {
+			StringTemplate p = getTemplate(paramTemplate);
+			String paramName = StringUtils.substringBefore(param, "=").trim();
+			String paramValue = StringUtils.substringAfter(param, "=").trim();
+
+			p.setAttribute("param", paramName.toUpperCase());
+			p.setAttribute("value", paramValue);
+
+			try {
+				switch (Params.valueOf(paramName.toUpperCase())) {
+				case FORMAT:
+					formats.add(p.toString());
+					break;
+				case SET:
+					sets.add(p.toString());
+					break;
+				}
+			} catch (Exception e) {
+				if ((paramName != null) && !paramName.isEmpty()) {
+					otherParams.put(paramName, StringEscapeUtils.escapeXml(paramValue));
+				}
+			}
+		}
+
+		final StringTemplate i = getTemplate(ifaceTemplate);
+		i.setAttribute("id", getValueBetween(infopackage, null, "===1==="));
+		i.setAttribute("fileMode", getValueBetween(infopackage, "===1===", "===2==="));
+		i.setAttribute("fileDesc", getValueBetween(infopackage, "===2===", "===3==="));
+		i.setAttribute("iisWf", getValueBetween(infopackage, "===3===", "===4==="));
+		i.setAttribute("baseUrl", getBaseUrl(getValueBetween(infopackage, "===4===", "===5===")));
+		i.setAttribute("accessProtocol", getAccessProtocol(getValueBetween(infopackage, "===5===", "===6==="), otherParams));
+		i.setAttribute("formats", ensureMinOccurs(formats, "<FORMAT/>"));
+		i.setAttribute("sets", ensureMinOccurs(sets, "<SET/>"));
+		if (!otherParams.isEmpty()) {
+			i.setAttribute("otherParams", otherParams);
+		}
+
+		final String iface = i.toString();
+		return iface;
+	}
+
+	private static String getValueBetween(final String s, final String pre, final String post) {
+		if ((pre == null) && (post == null)) {
+			return s;
+		} else if (pre == null) {
+			return StringUtils.substringBefore(s, post);
+		} else if (post == null) {
+			return StringUtils.substringAfter(s, pre);
+		} else {
+			return StringUtils.substringBetween(s, pre, post);
+		}
+	}
+
+	private static List<String> ensureMinOccurs(final List<String> list, final String empty) {
+		if (list.isEmpty()) {
+			list.add(empty);
+		}
+		return list;
+	}
+
+	private static Iterable<String> parseParams(final String s) {
+		return Splitter.on("***").omitEmptyStrings().trimResults().split(s);
+	}
+
+	private static String getBaseUrl(final String url) {
+		final StringTemplate b = getTemplate(paramTemplate);
+		b.setAttribute("param", "BASE_URL");
+		b.setAttribute("value", url);
+		return b.toString();
+	}
+
+	private static String getAccessProtocol(final String protocol, final Map<String, String> otherParams) {
+		final StringTemplate a = getTemplate(paramTemplate);
+		a.setAttribute("param", "ACCESS_PROTOCOL");
+		a.setAttribute("value", protocol);
+		if ((otherParams != null) && !otherParams.isEmpty()) {
+			a.setAttribute("attrs", otherParams);
+		}
+		return a.toString();
+	}
+
+	private static StringTemplate getTemplate(final Resource res) {
+		final StringWriter body = new StringWriter();
+		try {
+			IOUtils.copy(res.getInputStream(), body);
+			return new StringTemplate(body.toString());
+		} catch (IOException e) {
+			log.error("unable to get template", e);
+			throw new RuntimeException(e);
+		}
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p26.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p26.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p26.xml	(revision 60998)
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::afbcda36b1a26e7e606daae82ad48762</dri:objIdentifier>
+		<dri:recordIdentifier>665083</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T10:51:52.482+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665083</FIELD>
+				<FIELD name="id">corda__h2020::665083</FIELD>
+				<FIELD name="code">665083</FIELD>
+				<FIELD name="acronym">FET_TRACES</FIELD>
+				<FIELD name="title">Tracing impacts of the FET programme</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">15-JUL-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">14-NOV-2017</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-2014-CSA</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">CSA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-2-2014</FIELD>
+				<FIELD name="optional2">Coordination and Support Activities</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665083::Bernd_BECKERT</FIELD>
+				<FIELD name="id">corda__h2020::665083::Bernd_BECKERT</FIELD>
+				<FIELD name="firstname">Bernd</FIELD>
+				<FIELD name="secondnames">BECKERT</FIELD>
+				<FIELD name="email">bernd.beckert@isi.fraunhofer.de</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999584128</FIELD>
+				<FIELD name="id">corda__h2020::999584128</FIELD>
+				<FIELD name="legalshortname">AIT Austrian Institute of Technology GmbH</FIELD>
+				<FIELD name="legalname">AIT AUSTRIAN INSTITUTE OF TECHNOLOGY GMBH</FIELD>
+				<FIELD name="websiteurl">http://www.ait.ac.at/</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">AT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665083@@corda__h2020::999584128</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::665083</FIELD>
+				<FIELD name="resporganization">corda__h2020::999584128</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999984059</FIELD>
+				<FIELD name="id">corda__h2020::999984059</FIELD>
+				<FIELD name="legalshortname">Fraunhofer Gesellschaft</FIELD>
+				<FIELD name="legalname">FRAUNHOFER GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V.</FIELD>
+				<FIELD name="websiteurl">http://www.fraunhofer.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665083@@corda__h2020::999984059</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::665083</FIELD>
+				<FIELD name="resporganization">corda__h2020::999984059</FIELD>
+				<FIELD name="contactperson">corda__h2020::665083::Bernd_BECKERT</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="name">Coordination and Support Activities</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665083@@corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="project">corda__h2020::665083</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-2-2014</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::CSA@@corda__h2020::665083</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::CSA</FIELD>
+				<FIELD name="project">corda__h2020::665083</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">15-JUL-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">14-NOV-2017</FIELD>
+				<FIELD name="semanticclass">CSA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/functionality/modular/ui/workflows/values/ListActionManagerSetsValues.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/functionality/modular/ui/workflows/values/ListActionManagerSetsValues.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/main/java/eu/dnetlib/functionality/modular/ui/workflows/values/ListActionManagerSetsValues.java	(revision 60998)
@@ -0,0 +1,35 @@
+package eu.dnetlib.functionality.modular.ui.workflows.values;
+
+import java.util.List;
+import java.util.Map;
+import javax.annotation.Resource;
+
+import com.google.common.collect.Lists;
+import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.msro.openaireplus.workflows.nodes.actions.PromoteActionsJobNode;
+import eu.dnetlib.msro.workflows.util.ValidNodeValuesFetcher;
+
+public class ListActionManagerSetsValues extends ValidNodeValuesFetcher {
+
+	@Resource
+	private UniqueServiceLocator serviceLocator;
+
+	@Override
+	protected List<DnetParamValue> obtainValues(final Map<String, String> params) throws Exception {
+
+		final String xquery =
+				"for $x in /RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='ActionManagerSetDSResourceType'] return concat($x//SET/@id, ' @@@ ', $x//SET) ";
+
+		final List<String> result = serviceLocator.getService(ISLookUpService.class).quickSearchProfile(xquery);
+		final List<DnetParamValue> values = Lists.newArrayList(new DnetParamValue("", PromoteActionsJobNode.ALL_SETS));
+
+		for (final String s : result) {
+			final String[] arr = s.split("@@@");
+			values.add(new DnetParamValue(arr[0].trim(), arr[1].trim()));
+		}
+
+		return values;
+	}
+
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p19.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p19.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p19.xml	(revision 60998)
@@ -0,0 +1,458 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::0043a658bfc1be5e0b2997128cec0b11</dri:objIdentifier>
+		<dri:recordIdentifier>734140</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:22:49.39+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140</FIELD>
+				<FIELD name="id">corda__h2020::734140</FIELD>
+				<FIELD name="code">734140</FIELD>
+				<FIELD name="acronym">PJ27 IOPVLD</FIELD>
+				<FIELD name="title">Flight Object Interoperability VLD Demonstration</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-NOV-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-DEC-2019</FIELD>
+				<FIELD name="call_identifier">H2020-SESAR-2015-2</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">SESAR-IA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">SESAR.IR-VLD.Wave1-28-2015</FIELD>
+				<FIELD name="optional2">Flight Information Exchange</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140::Peter_GLOMBIOWSKI</FIELD>
+				<FIELD name="id">corda__h2020::734140::Peter_GLOMBIOWSKI</FIELD>
+				<FIELD name="firstname">Peter</FIELD>
+				<FIELD name="secondnames">GLOMBIOWSKI</FIELD>
+				<FIELD name="email">peter.glombiowski@dfs.de</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::923671249</FIELD>
+				<FIELD name="id">corda__h2020::923671249</FIELD>
+				<FIELD name="legalshortname">Naviair/COOPANS</FIELD>
+				<FIELD name="legalname">NAVIAIR</FIELD>
+				<FIELD name="websiteurl">http://www.naviair.dk</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">DK</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::923671249</FIELD>
+				<FIELD name="participantnumber" type="int">13</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::923671249</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::924128216</FIELD>
+				<FIELD name="id">corda__h2020::924128216</FIELD>
+				<FIELD name="legalshortname">CCL/COOPANS</FIELD>
+				<FIELD name="legalname">CROATIA CONTROL, CROATIAN AIR NAVIGATION SERVICES LTD</FIELD>
+				<FIELD name="websiteurl">http://www.crocontrol.hr</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">HR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::924128216</FIELD>
+				<FIELD name="participantnumber" type="int">10</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::924128216</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::927009019</FIELD>
+				<FIELD name="id">corda__h2020::927009019</FIELD>
+				<FIELD name="legalshortname">IAA/COOPANS</FIELD>
+				<FIELD name="legalname">UDARAS EITLIOCHTA NA HEIREANN THE IRISH AVIATION AUTHORITY</FIELD>
+				<FIELD name="websiteurl">http://www.iaa.ie</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">IE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::927009019</FIELD>
+				<FIELD name="participantnumber" type="int">11</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::927009019</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::928673636</FIELD>
+				<FIELD name="id">corda__h2020::928673636</FIELD>
+				<FIELD name="legalshortname">DSNA</FIELD>
+				<FIELD name="legalname">DIRECTION DES SERVICES DE LA NAVIGATION AERIENNE</FIELD>
+				<FIELD name="websiteurl">http://www.dgac.fr</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">FR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::928673636</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::928673636</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::942346077</FIELD>
+				<FIELD name="id">corda__h2020::942346077</FIELD>
+				<FIELD name="legalshortname">LFV/COOPANS</FIELD>
+				<FIELD name="legalname">LUFTFARTSVERKET</FIELD>
+				<FIELD name="websiteurl">http://www.lfv.se</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">SE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::942346077</FIELD>
+				<FIELD name="participantnumber" type="int">12</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::942346077</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::997701843</FIELD>
+				<FIELD name="id">corda__h2020::997701843</FIELD>
+				<FIELD name="legalshortname">ENAIRE</FIELD>
+				<FIELD name="legalname">ENTIDAD PUBLICA EMPRESARIAL ENAIRE</FIELD>
+				<FIELD name="websiteurl">http://www.enaire.es</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">ES</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::997701843</FIELD>
+				<FIELD name="participantnumber" type="int">8</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::997701843</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::998197513</FIELD>
+				<FIELD name="id">corda__h2020::998197513</FIELD>
+				<FIELD name="legalshortname">ENAV</FIELD>
+				<FIELD name="legalname">ENAV SPA</FIELD>
+				<FIELD name="websiteurl">http://www.enav.it</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::998197513</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::998197513</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::998627417</FIELD>
+				<FIELD name="id">corda__h2020::998627417</FIELD>
+				<FIELD name="legalshortname">FINMECCANICA</FIELD>
+				<FIELD name="legalname">LEONARDO - FINMECCANICA SPA</FIELD>
+				<FIELD name="websiteurl">http://www.finmeccanica.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::998627417</FIELD>
+				<FIELD name="participantnumber" type="int">6</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::998627417</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::998956635</FIELD>
+				<FIELD name="id">corda__h2020::998956635</FIELD>
+				<FIELD name="legalshortname">ACG/COOPANS</FIELD>
+				<FIELD name="legalname">AUSTRO CONTROL OSTERREICHISCHE GESELLSCHAFT FUR ZIVILLUFTFAHRT MBH</FIELD>
+				<FIELD name="websiteurl">http://www.austrocontrol.at</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">AT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::998956635</FIELD>
+				<FIELD name="participantnumber" type="int">9</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::998956635</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999483733</FIELD>
+				<FIELD name="id">corda__h2020::999483733</FIELD>
+				<FIELD name="legalshortname">EUROCONTROL</FIELD>
+				<FIELD name="legalname">EUROCONTROL - EUROPEAN ORGANISATION FOR THE SAFETY OF AIR NAVIGATION</FIELD>
+				<FIELD name="websiteurl">http://www.eurocontrol.int</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">BE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::999483733</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::999483733</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999936820</FIELD>
+				<FIELD name="id">corda__h2020::999936820</FIELD>
+				<FIELD name="legalshortname">DFS</FIELD>
+				<FIELD name="legalname">DFS DEUTSCHE FLUGSICHERUNG GMBH</FIELD>
+				<FIELD name="websiteurl">http://www.dfs.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::999936820</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::999936820</FIELD>
+				<FIELD name="contactperson">corda__h2020::734140::Peter_GLOMBIOWSKI</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999959130</FIELD>
+				<FIELD name="id">corda__h2020::999959130</FIELD>
+				<FIELD name="legalshortname">INDRA</FIELD>
+				<FIELD name="legalname">INDRA SISTEMAS SA</FIELD>
+				<FIELD name="websiteurl">http://www.indracompany.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">ES</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::999959130</FIELD>
+				<FIELD name="participantnumber" type="int">5</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::999959130</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999961555</FIELD>
+				<FIELD name="id">corda__h2020::999961555</FIELD>
+				<FIELD name="legalshortname">THALES AIR SYS</FIELD>
+				<FIELD name="legalname">THALES AIR SYSTEMS SAS</FIELD>
+				<FIELD name="websiteurl">http://www.thalesgroup.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">FR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::999961555</FIELD>
+				<FIELD name="participantnumber" type="int">7</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="resporganization">corda__h2020::999961555</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::SESAR.IR-VLD.Wave1-28-2015</FIELD>
+				<FIELD name="id">corda__h2020::SESAR.IR-VLD.Wave1-28-2015</FIELD>
+				<FIELD name="name">Flight Information Exchange</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734140@@corda__h2020::SESAR.IR-VLD.Wave1-28-2015</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD name="subject">corda__h2020::SESAR.IR-VLD.Wave1-28-2015</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::SESAR-IA@@corda__h2020::734140</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::SESAR-IA</FIELD>
+				<FIELD name="project">corda__h2020::734140</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-NOV-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-DEC-2019</FIELD>
+				<FIELD name="semanticclass">SESAR-IA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/FETTest.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/FETTest.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/FETTest.java	(revision 60998)
@@ -0,0 +1,52 @@
+package eu.dnetlib.msro.openaireplus.workflows.nodes.contexts;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Iterator;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Lists;
+import org.apache.commons.io.IOUtils;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+
+public class FETTest {
+
+	private static final String PATTERN = "classpath*:/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/*.xml";
+	//class under test
+	private BuildH2020FETTaxonomy fetBuilder;
+	private Iterator<String> iterator;
+
+	//String outputCheck = "<category id=\"fet-h2020::open\" label=\"FET OPEN\" claim=\"false\"><concept id=\"fet-h2020::open::1\" label=\"FET-Open research projects\" claim=\"false\"><param name=\"CALL_ID\">H2020-FETOPEN-2014-2015-RIA</param><concept id=\"fet-h2020::open::1::713140\" label=\"Custom architecturally defined 3D stem cell derived functional human neural networks for transformative progress in neuroscience and medicine\" claim=\"true\"><param name=\"CD_PROJ_ID\">713140</param><param name=\"CD_CALL_ID\">FETOPEN-RIA-2014-2015</param><param name=\"CD_PROJECT_NUMBER\">713140</param><param name=\"CD_ACRONYM\">MESO_BRAIN</param><param name=\"CD_FRAMEWORK\">H2020</param></concept><concept id=\"fet-h2020::open::1::665148\" label=\"Quantum Controlled Ultrafast Multimode Entanglement and Measurement\" claim=\"true\"><param name=\"CD_PROJ_ID\">665148</param><param name=\"CD_CALL_ID\">FETOPEN-RIA-2014-2015</param><param name=\"CD_PROJECT_NUMBER\">665148</param><param name=\"CD_ACRONYM\">QCUMbER</param><param name=\"CD_FRAMEWORK\">H2020</param></concept><concept id=\"fet-h2020::open::1::665233\" label=\"Super-resolution visualisation and manipulation of metaphase chromosomes\" claim=\"true\"><param name=\"CD_PROJ_ID\">665233</param><param name=\"CD_CALL_ID\">FETOPEN-RIA-2014-2015</param><param name=\"CD_PROJECT_NUMBER\">665233</param><param name=\"CD_ACRONYM\">CHROMAVISION</param><param name=\"CD_FRAMEWORK\">H2020</param></concept></concept><concept id=\"fet-h2020::open::2\" label=\"FET Exchange Coordination and Support Activities 2015\" claim=\"false\"><param name=\"CALL_ID\">H2020-FETOPEN-2015-CSA</param><concept id=\"fet-h2020::open::2::713171\" label=\"SENSE - a roadmap for the ideal low light level sensor development\" claim=\"true\"><param name=\"CD_PROJ_ID\">713171</param><param name=\"CD_CALL_ID\">FETOPEN-CSA-FETEXCHANGE-2015</param><param name=\"CD_PROJECT_NUMBER\">713171</param><param name=\"CD_ACRONYM\">SENSE</param><param name=\"CD_FRAMEWORK\">H2020</param></concept></concept><concept id=\"fet-h2020::open::3\" label=\"FET Innovation Launchpad\" claim=\"false\"><param name=\"CALL_ID\">H2020-FETOPEN-4-2016-2017</param><concept id=\"fet-h2020::open::3::754514\" label=\"Resource AuctiOning Engine for the Mobile Digital MArket\" claim=\"true\"><param name=\"CD_PROJ_ID\">754514</param><param name=\"CD_CALL_ID\">FETOPEN-04-2016-2017</param><param name=\"CD_PROJECT_NUMBER\">754514</param><param name=\"CD_ACRONYM\">ROMA</param><param name=\"CD_FRAMEWORK\">H2020</param></concept><concept id=\"fet-h2020::open::3::754515\" label=\"Hello\" claim=\"true\"><param name=\"CD_PROJ_ID\">754515</param><param name=\"CD_CALL_ID\">FETOPEN-04-2016-2017</param><param name=\"CD_PROJECT_NUMBER\">754515</param><param name=\"CD_ACRONYM\">HHH</param><param name=\"CD_FRAMEWORK\">H2020</param></concept></concept><concept id=\"fet-h2020::open::4\" label=\"Coordination and Support Activities\" claim=\"false\"><param name=\"CALL_ID\">H2020-FETOPEN-2014-CSA</param><concept id=\"fet-h2020::open::4::665564\" label=\"Coordinating European Research on Molecular Communications\" claim=\"true\"><param name=\"CD_PROJ_ID\">665564</param><param name=\"CD_CALL_ID\">FETOPEN-2-2014</param><param name=\"CD_PROJECT_NUMBER\">665564</param><param name=\"CD_ACRONYM\">CIRCLE</param><param name=\"CD_FRAMEWORK\">H2020</param></concept><concept id=\"fet-h2020::open::4::665134\" label=\"Ensuring the success of the next FET Conference and exhibition at a key period for FET\" claim=\"true\"><param name=\"CD_PROJ_ID\">665134</param><param name=\"CD_CALL_ID\">FETOPEN-2-2014</param><param name=\"CD_PROJECT_NUMBER\">665134</param><param name=\"CD_ACRONYM\">FET-Event</param><param name=\"CD_FRAMEWORK\">H2020</param></concept><concept id=\"fet-h2020::open::4::665083\" label=\"Tracing impacts of the FET programme\" claim=\"true\"><param name=\"CD_PROJ_ID\">665083</param><param name=\"CD_CALL_ID\">FETOPEN-2-2014</param><param name=\"CD_PROJECT_NUMBER\">665083</param><param name=\"CD_ACRONYM\">FET_TRACES</param><param name=\"CD_FRAMEWORK\">H2020</param></concept><concept id=\"fet-h2020::open::4::665136\" label=\"Observing Emergence\" claim=\"true\"><param name=\"CD_PROJ_ID\">665136</param><param name=\"CD_CALL_ID\">FETOPEN-2-2014</param><param name=\"CD_PROJECT_NUMBER\">665136</param><param name=\"CD_ACRONYM\">OBSERVE</param><param name=\"CD_FRAMEWORK\">H2020</param></concept></concept></category>";
+
+	@Before
+	public void setup() throws Exception {
+		final PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
+		iterator = Lists.transform(Arrays.asList(resolver.getResources(PATTERN)), new Function<Resource, String>() {
+			@Override
+			public String apply(final Resource resource) {
+				try {
+					return IOUtils.toString(resource.getInputStream());
+				} catch (IOException e) {
+					return null;
+				}
+			}
+		}).iterator();
+		fetBuilder = new BuildH2020FETTaxonomy();
+	}
+
+	@Test
+	public void parseFirstNFET() throws Exception {
+		fetBuilder.setIterator(iterator);
+		fetBuilder.parseFETProject(10);
+		String fetContext = fetBuilder.getTaxonomy();
+		Assert.assertNotNull(fetContext);
+		Assert.assertNotSame("", fetContext);
+		System.out.println(fetContext);
+		//Assert.assertTrue(fetContext.contains(outputCheck));
+	}
+
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_zenodo.json
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_zenodo.json	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_zenodo.json	(revision 60998)
@@ -0,0 +1,26 @@
+{
+  "authors":[
+	"Alouges, Fran\u00e7ois",
+	"Di Fratta, Giovanni"
+  ],
+  "collectedFromId":"opendoar____::2659",
+  "description":"The paper is about the parking 3-sphere swimmer ($\\text{sPr}_3$). This is a low-Reynolds number model swimmer composed of three balls of equal radii. The three balls can move along three horizontal axes (supported in the same plane) that mutually meet at the center of $\\text{sPr}_3$ with angles of $120^{\u2218}$ . The governing dynamical system is introduced and the implications of its geometric symmetries revealed. It is then shown that, in the first order range of small strokes, optimal periodic strokes are ellipses embedded in 3d space, i.e. closed curves of the form $t\ud835\udfc4 [0,2\u03c0] \u21a6 (\\cos t)u + (\\sin t)v$ for suitable orthogonal vectors $u$ and $v$ of $\u211d^3$. A simple analytic expression for the vectors $u$ and $v$ is derived. The results of the paper are used in a second article where the real physical dynamics of $\\text{sPr}_3$ is analyzed in the asymptotic range of very long arms. ; Comment: 17 pages, 4 figures",
+  "hostedById":"opendoar____::2659",
+  "licenseCode":"OPEN",
+  "originalId":"oai:zenodo.org:996201",
+  "pids":[
+	{
+	  "type":"oai",
+	  "value":"oai:zenodo.org:996201"
+	},
+	{
+	  "type":"doi",
+	  "value":"10.5281/zenodo.996201"
+	}
+  ],
+  "publisher":"Zenodo",
+  "resourceType":"0020",
+  "title":"Parking 3-sphere swimmer. I. Energy minimizing strokes",
+  "type":"publication",
+  "url":"https://zenodo.org/record/996201"
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/index/OpenaireLayoutToRecordStylesheetTest.java
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/index/OpenaireLayoutToRecordStylesheetTest.java	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/java/eu/dnetlib/msro/openaireplus/workflows/index/OpenaireLayoutToRecordStylesheetTest.java	(revision 60998)
@@ -0,0 +1,127 @@
+package eu.dnetlib.msro.openaireplus.workflows.index;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.google.common.collect.Maps;
+import eu.dnetlib.functionality.index.model.document.IndexDocument;
+import eu.dnetlib.functionality.index.solr.feed.InputDocumentFactory;
+import eu.dnetlib.functionality.index.solr.feed.StreamingInputDocumentFactory;
+import eu.dnetlib.miscutils.datetime.DateUtils;
+import eu.dnetlib.miscutils.functional.xml.ApplyXslt;
+import eu.dnetlib.miscutils.functional.xml.IndentXmlString;
+import org.apache.commons.io.IOUtils;
+import org.apache.solr.common.SolrInputDocument;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Node;
+import org.dom4j.io.SAXReader;
+import org.junit.Test;
+import org.springframework.core.io.ClassPathResource;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.text.SimpleDateFormat;
+import java.util.Map;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+
+public class OpenaireLayoutToRecordStylesheetTest {
+
+	private static final String OPENAIRE_LAYOUT_TO_RECORD_STYLESHEET_XSL = "/eu/dnetlib/msro/openaireplus/workflows/index/openaireLayoutToRecordStylesheet.xsl";
+
+	private static final String MDFORMAT_FIELDS_PROFILE = "/eu/dnetlib/test/profiles/MDFormatDSResources/MDFormatDSResourceType/2-8b9503d9-8a86-4330-93ef-7e0cd9bc87c2.xml";
+
+	private static final String OAF_RECORD = "/eu/dnetlib/msro/openaireplus/workflows/index/oafRecord.xml";
+
+	private final static String[] dateFormats = { "yyyy-MM-dd'T'hh:mm:ss", "yyyy-MM-dd", "dd-MM-yyyy", "dd/MM/yyyy", "yyyy" };
+
+	@Test
+	public void testConvertRecord() throws IOException, TransformerException, XMLStreamException, DocumentException {
+		String xsl = prepareXslt("DMF");
+		assertNotNull(xsl);
+		assertFalse(xsl.isEmpty());
+
+		System.out.println(xsl);
+
+		ApplyXslt xslt = new ApplyXslt(xsl);
+
+		String indexRecord = xslt.evaluate(readFromClasspath(OAF_RECORD));
+
+		assertNotNull(indexRecord);
+		assertFalse(indexRecord.isEmpty());
+
+		System.out.println(IndentXmlString.apply(indexRecord));
+
+		StreamingInputDocumentFactory factory = new StreamingInputDocumentFactory();
+
+		SolrInputDocument doc = factory.parseDocument(DateUtils.now_ISO8601(), indexRecord, "dsId", "dnetResult");
+		assertNotNull(doc);
+		assertFalse(doc.isEmpty());
+
+		System.out.println("SolrDocument");
+
+		System.out.println(doc.values());
+
+		System.out.println("SolrDocument fields");
+
+		Map<String, Object> fields = Maps.newHashMap();
+
+		doc.entrySet().stream()
+				.forEach(e -> {
+					Object value = e.getValue().getValueCount() == 1 ? e.getValue().getFirstValue() : e.getValue().getValues();
+					fields.put(e.getKey(), value);
+				});
+
+		//new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(fields);
+
+		final ObjectWriter objectWriter = new ObjectMapper()
+				.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"))
+				.writerWithDefaultPrettyPrinter();
+
+		System.out.println(objectWriter.writeValueAsString(fields));
+	}
+
+	protected String prepareXslt(final String format) throws IOException, TransformerException, DocumentException {
+
+		final Transformer layoutTransformer = TransformerFactory.newInstance().newTransformer(streamSource(OPENAIRE_LAYOUT_TO_RECORD_STYLESHEET_XSL));
+
+		final StreamResult result = new StreamResult(new StringWriter());
+
+		layoutTransformer.setParameter("format", format);
+
+		final StreamSource fields = indexFieldsFromProfile(MDFORMAT_FIELDS_PROFILE);
+
+		layoutTransformer.transform(fields , result);
+
+		return result.getWriter().toString();
+	}
+
+	private StreamSource streamSource(final String s) throws IOException {
+		return new StreamSource(new StringReader(readFromClasspath(s)));
+	}
+
+	private String readFromClasspath(final String s) throws IOException {
+		ClassPathResource resource = new ClassPathResource(s);
+		InputStream inputStream = resource.getInputStream();
+		return IOUtils.toString(inputStream);
+	}
+
+	private StreamSource indexFieldsFromProfile(final String path) throws IOException, DocumentException {
+		final Document doc = new SAXReader().read(new StringReader(readFromClasspath(path)));
+		final Node layout = doc.selectSingleNode("//LAYOUT[@name='index']");
+		return new StreamSource(new StringReader(layout.asXML()));
+	}
+
+}
+
+
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_complete.json
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_complete.json	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_complete.json	(revision 60998)
@@ -0,0 +1,37 @@
+{
+  "originalId": "ORIG_ID_TEST",
+  "type": "publication",
+  "title": "TEST TITLE",
+  "authors": [
+	"Michele Artini",
+	"Claudio Atzori",
+	"Alessia Bardi"
+  ],
+  "publisher": "Test publisher",
+  "description": "DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION",
+  "language": "ita",
+  "pids": [
+	{
+	  "type": "doi",
+	  "value": "10.000/xyz-123"
+	},
+	{
+	  "type": "oai",
+	  "value": "oai:1234"
+	}
+  ],
+  "licenseCode": "EMBARGO",
+  "embargoEndDate": "2018-02-02",
+  "resourceType": "0001",
+  "url": "http://test.it/xyz",
+  "collectedFromId": "opendoar____::2659",
+  "hostedById": "opendoar____::2659",
+  "linksToProjects": [
+	"info:eu-repo/grantAgreement/EC/FP7/283595/EU//OpenAIREplus",
+	"info:eu-repo/grantAgreement/EC/FP7/244909/EU/Making Capabilities Work/WorkAble"
+  ],
+  "contexts": [
+	"egi::classification::natsc::math::pure",
+	"egi::classification::natsc::math::stats"
+  ]
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p20.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p20.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p20.xml	(revision 60998)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::0059df285b7bff23913630f024172b7d</dri:objIdentifier>
+		<dri:recordIdentifier>658375</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T10:47:51.648+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::658375</FIELD>
+				<FIELD name="id">corda__h2020::658375</FIELD>
+				<FIELD name="code">658375</FIELD>
+				<FIELD name="acronym">EFTA DEVELOPMENT</FIELD>
+				<FIELD name="title">The ‘other’ Europe: the formation and development of the European Free Trade Association (EFTA), 1958–92</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JAN-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-DEC-2017</FIELD>
+				<FIELD name="call_identifier">H2020-MSCA-IF-2014</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">MSCA-IF-EF-ST</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">MSCA-IF-2014-EF</FIELD>
+				<FIELD name="optional2">Marie Skłodowska-Curie Individual Fellowships (IF-EF)</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::658375::Henri_VOGT</FIELD>
+				<FIELD name="id">corda__h2020::658375::Henri_VOGT</FIELD>
+				<FIELD name="firstname">Henri</FIELD>
+				<FIELD name="secondnames">VOGT</FIELD>
+				<FIELD name="email">henri.vogt@utu.fi</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999903064</FIELD>
+				<FIELD name="id">corda__h2020::999903064</FIELD>
+				<FIELD name="legalshortname">UNIVERSITY OF TURKU</FIELD>
+				<FIELD name="legalname">TURUN YLIOPISTO</FIELD>
+				<FIELD name="websiteurl">http://www.utu.fi</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">FI</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::658375@@corda__h2020::999903064</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::658375</FIELD>
+				<FIELD name="resporganization">corda__h2020::999903064</FIELD>
+				<FIELD name="contactperson">corda__h2020::658375::Henri_VOGT</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::MSCA-IF-2014-EF</FIELD>
+				<FIELD name="id">corda__h2020::MSCA-IF-2014-EF</FIELD>
+				<FIELD name="name">Marie Skłodowska-Curie Individual Fellowships (IF-EF)</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::658375@@corda__h2020::MSCA-IF-2014-EF</FIELD>
+				<FIELD name="project">corda__h2020::658375</FIELD>
+				<FIELD name="subject">corda__h2020::MSCA-IF-2014-EF</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::MSCA-IF-EF-ST@@corda__h2020::658375</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::MSCA-IF-EF-ST</FIELD>
+				<FIELD name="project">corda__h2020::658375</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JAN-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-DEC-2017</FIELD>
+				<FIELD name="semanticclass">MSCA-IF-EF-ST</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p1.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p1.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p1.xml	(revision 60998)
@@ -0,0 +1,576 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record>
+    <oai:header xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+                xmlns:oai="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+        <dri:objIdentifier>corda__h2020::636a2309a19eed30ce928d92f058b268</dri:objIdentifier>
+        <dri:recordIdentifier>768977</dri:recordIdentifier>
+        <dri:dateOfCollection>2017-09-29T10:03:47.191Z</dri:dateOfCollection>
+        <dri:repositoryId>abba4d10-e30b-4f60-b9ad-689bdfe298c9_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+        <dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+    </oai:header>
+    <metadata>
+        <ROWS>
+            <ROW table="projects">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977</FIELD>
+                <FIELD name="id">corda__h2020::768977</FIELD>
+                <FIELD name="code">768977</FIELD>
+                <FIELD name="acronym">CHIST-ERA III</FIELD>
+                <FIELD name="title">European coordinated research on long-term ICT and ICT-based scientific challenges</FIELD>
+                <FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-DEC-2017</FIELD>
+                <FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-NOV-2022</FIELD>
+                <FIELD name="call_identifier">FETPROACT-2017</FIELD>
+                <FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+                <FIELD name="ec_article29_3" type="boolean">Yes</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="contracttypeclass">ERA-NET-Cofund</FIELD>
+                <FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="websiteurl"/>
+                <FIELD name="optional1">FETPROACT-02-2017</FIELD>
+                <FIELD name="optional2">FET ERANET Cofund</FIELD>
+            </ROW>
+            <ROW table="persons">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977::Edouard_GEOFFROIS</FIELD>
+                <FIELD name="id">corda__h2020::768977::Edouard_GEOFFROIS</FIELD>
+                <FIELD name="firstname">Edouard</FIELD>
+                <FIELD name="secondnames">GEOFFROIS</FIELD>
+                <FIELD name="email">edouard.geoffrois@agencerecherche.fr</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::927033172</FIELD>
+                <FIELD name="id">corda__h2020::927033172</FIELD>
+                <FIELD name="legalshortname">TA CR</FIELD>
+                <FIELD name="legalname">TECHNOLOGICKA AGENTURA CESKE REPUBLIKY</FIELD>
+                <FIELD name="websiteurl">http://www.tacr.cz/index.php/en/</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+                <FIELD name="countryclass">CZ</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::927033172</FIELD>
+                <FIELD name="participantnumber" type="int">6</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::927033172</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::954020706</FIELD>
+                <FIELD name="id">corda__h2020::954020706</FIELD>
+                <FIELD name="legalshortname">MINECO</FIELD>
+                <FIELD name="legalname">MINISTERIO DE ECONOMIA, INDUSTRIA Y COMPETITIVIDAD</FIELD>
+                <FIELD name="websiteurl">http://www.mineco.gob.es</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+                <FIELD name="countryclass">ES</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::954020706</FIELD>
+                <FIELD name="participantnumber" type="int">8</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::954020706</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::960264402</FIELD>
+                <FIELD name="id">corda__h2020::960264402</FIELD>
+                <FIELD name="legalshortname">NCN</FIELD>
+                <FIELD name="legalname">NARODOWE CENTRUM NAUKI</FIELD>
+                <FIELD name="websiteurl">http://www.ncn.gov.pl</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+                <FIELD name="countryclass">PL</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::960264402</FIELD>
+                <FIELD name="participantnumber" type="int">13</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::960264402</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::972130024</FIELD>
+                <FIELD name="id">corda__h2020::972130024</FIELD>
+                <FIELD name="legalshortname">UEFISCDI</FIELD>
+                <FIELD name="legalname">Unitatea Executiva pentru Finantarea Invatamantului Superior, a Cercetarii, Dezvoltarii si Inovarii</FIELD>
+                <FIELD name="websiteurl">http://www.uefiscdi.gov.ro</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+                <FIELD name="countryclass">RO</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::972130024</FIELD>
+                <FIELD name="participantnumber" type="int">14</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::972130024</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::984222335</FIELD>
+                <FIELD name="id">corda__h2020::984222335</FIELD>
+                <FIELD name="legalshortname">BNSF</FIELD>
+                <FIELD name="legalname">BULGARIAN NATIONAL SCIENCE FUND</FIELD>
+                <FIELD name="websiteurl">http://www.fni.bg</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+                <FIELD name="countryclass">BG</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::984222335</FIELD>
+                <FIELD name="participantnumber" type="int">4</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::984222335</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::997808446</FIELD>
+                <FIELD name="id">corda__h2020::997808446</FIELD>
+                <FIELD name="legalshortname">LMT</FIELD>
+                <FIELD name="legalname">Lietuvos mokslo taryba</FIELD>
+                <FIELD name="websiteurl">http://www.lmt.lt/</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+                <FIELD name="countryclass">LT</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::997808446</FIELD>
+                <FIELD name="participantnumber" type="int">12</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::997808446</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::998483760</FIELD>
+                <FIELD name="id">corda__h2020::998483760</FIELD>
+                <FIELD name="legalshortname">ETAg</FIELD>
+                <FIELD name="legalname">SIHTASUTUS EESTI TEADUSAGENTUUR</FIELD>
+                <FIELD name="websiteurl">http://www.etag.ee</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">No</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+                <FIELD name="countryclass">EE</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::998483760</FIELD>
+                <FIELD name="participantnumber" type="int">7</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::998483760</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::998711613</FIELD>
+                <FIELD name="id">corda__h2020::998711613</FIELD>
+                <FIELD name="legalshortname">ANR</FIELD>
+                <FIELD name="legalname">AGENCE NATIONALE DE LA RECHERCHE</FIELD>
+                <FIELD name="websiteurl">http://www.agence-nationale-recherche.fr</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+                <FIELD name="countryclass">FR</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::998711613</FIELD>
+                <FIELD name="participantnumber" type="int">1</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::998711613</FIELD>
+                <FIELD name="contactperson">corda__h2020::768977::Edouard_GEOFFROIS</FIELD>
+                <FIELD name="semanticclass">coordinator</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::998735960</FIELD>
+                <FIELD name="id">corda__h2020::998735960</FIELD>
+                <FIELD name="legalshortname">FWF</FIELD>
+                <FIELD name="legalname">FONDS ZUR FÖRDERUNG DER WISSENSCHAFTLICHEN FORSCHUNG</FIELD>
+                <FIELD name="websiteurl">http://www.fwf.ac.at</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+                <FIELD name="countryclass">AT</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::998735960</FIELD>
+                <FIELD name="participantnumber" type="int">2</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::998735960</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::999517586</FIELD>
+                <FIELD name="id">corda__h2020::999517586</FIELD>
+                <FIELD name="legalshortname">AKA</FIELD>
+                <FIELD name="legalname">SUOMEN AKATEMIA</FIELD>
+                <FIELD name="websiteurl">http://www.aka.fi</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+                <FIELD name="countryclass">FI</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::999517586</FIELD>
+                <FIELD name="participantnumber" type="int">9</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::999517586</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::999530390</FIELD>
+                <FIELD name="id">corda__h2020::999530390</FIELD>
+                <FIELD name="legalshortname">SAV</FIELD>
+                <FIELD name="legalname">SLOVENSKA AKADEMIA VIED</FIELD>
+                <FIELD name="websiteurl">http://www.sav.sk</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+                <FIELD name="countryclass">SK</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::999530390</FIELD>
+                <FIELD name="participantnumber" type="int">15</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::999530390</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::999540381</FIELD>
+                <FIELD name="id">corda__h2020::999540381</FIELD>
+                <FIELD name="legalshortname">FNRS</FIELD>
+                <FIELD name="legalname">FONDS NATIONAL DE LA RECHERCHE SCIENTIFIQUE</FIELD>
+                <FIELD name="websiteurl"/>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+                <FIELD name="countryclass">BE</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::999540381</FIELD>
+                <FIELD name="participantnumber" type="int">3</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::999540381</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::999540575</FIELD>
+                <FIELD name="id">corda__h2020::999540575</FIELD>
+                <FIELD name="legalshortname">SNSF</FIELD>
+                <FIELD name="legalname">SCHWEIZERISCHER NATIONALFONDS ZUR FORDERUNG DER WISSENSCHAFTLICHEN FORSCHUNG</FIELD>
+                <FIELD name="websiteurl">http://www.snf.ch</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">No</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+                <FIELD name="countryclass">CH</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::999540575</FIELD>
+                <FIELD name="participantnumber" type="int">5</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::999540575</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::999563370</FIELD>
+                <FIELD name="id">corda__h2020::999563370</FIELD>
+                <FIELD name="legalshortname">HEA</FIELD>
+                <FIELD name="legalname">AN TUDARAS UM ARD OIDEACHAS</FIELD>
+                <FIELD name="websiteurl">http://www.hea.ie</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+                <FIELD name="countryclass">IE</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::999563370</FIELD>
+                <FIELD name="participantnumber" type="int">10</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::999563370</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::999587135</FIELD>
+                <FIELD name="id">corda__h2020::999587135</FIELD>
+                <FIELD name="legalshortname">TUBITAK</FIELD>
+                <FIELD name="legalname">TURKIYE BILIMSEL VE TEKNOLOJIK ARASTIRMA KURUMU</FIELD>
+                <FIELD name="websiteurl">http://www.tubitak.gov.tr</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+                <FIELD name="countryclass">TR</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::999587135</FIELD>
+                <FIELD name="participantnumber" type="int">16</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::999587135</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::999637963</FIELD>
+                <FIELD name="id">corda__h2020::999637963</FIELD>
+                <FIELD name="legalshortname">EPSRC</FIELD>
+                <FIELD name="legalname">THE ENGINEERING AND PHYSICAL SCIENCES RESEARCH COUNCIL</FIELD>
+                <FIELD name="websiteurl">http://www.epsrc.ac.uk</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+                <FIELD name="countryclass">GB</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::999637963</FIELD>
+                <FIELD name="participantnumber" type="int">17</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::999637963</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="organizations">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::999641358</FIELD>
+                <FIELD name="id">corda__h2020::999641358</FIELD>
+                <FIELD name="legalshortname">MIUR</FIELD>
+                <FIELD name="legalname">MINISTERO DELL'ISTRUZIONE, DELL'UNIVERSITA' E DELLA RICERCA</FIELD>
+                <FIELD name="websiteurl">http://www.istruzione.it</FIELD>
+                <FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+                <FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+                <FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+                <FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_highereducation" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+                <FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+                <FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+                <FIELD name="countryclass">IT</FIELD>
+                <FIELD name="countryscheme">dnet:countries</FIELD>
+                <FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+                <FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+                <FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+                <FIELD name="trust" type="float">0.92</FIELD>
+            </ROW>
+            <ROW table="project_organization">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::999641358</FIELD>
+                <FIELD name="participantnumber" type="int">11</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="resporganization">corda__h2020::999641358</FIELD>
+                <FIELD name="contactperson"/>
+                <FIELD name="semanticclass">participant</FIELD>
+                <FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+            </ROW>
+            <ROW table="subjects">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::FETPROACT-02-2017</FIELD>
+                <FIELD name="id">corda__h2020::FETPROACT-02-2017</FIELD>
+                <FIELD name="name">FET ERANET Cofund</FIELD>
+                <FIELD name="semanticclass">ec:h2020topics</FIELD>
+                <FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+            </ROW>
+            <ROW table="project_subject">
+                <FIELD name="_dnet_resource_identifier_">corda__h2020::768977@@corda__h2020::FETPROACT-02-2017</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD name="subject">corda__h2020::FETPROACT-02-2017</FIELD>
+            </ROW>
+            <ROW table="project_fundingpath">
+                <FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::ERA-NET-Cofund@@corda__h2020::768977</FIELD>
+                <FIELD name="funding">ec__________::EC::H2020::ERA-NET-Cofund</FIELD>
+                <FIELD name="project">corda__h2020::768977</FIELD>
+                <FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-DEC-2017</FIELD>
+                <FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-NOV-2022</FIELD>
+                <FIELD name="semanticclass">ERA-NET-Cofund</FIELD>
+                <FIELD name="semanticscheme">ec:h2020toas</FIELD>
+            </ROW>
+        </ROWS>
+    </metadata>
+</record>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p13.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p13.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p13.xml	(revision 60998)
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::2fa7637c88313dd239c64ea52b04e9ad</dri:objIdentifier>
+		<dri:recordIdentifier>713171</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:13:57.907+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713171</FIELD>
+				<FIELD name="id">corda__h2020::713171</FIELD>
+				<FIELD name="code">713171</FIELD>
+				<FIELD name="acronym">SENSE</FIELD>
+				<FIELD name="title">SENSE - a roadmap for the ideal low light level sensor development</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-AUG-2019</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-2015-CSA</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">Yes</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">CSA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-CSA-FETEXCHANGE-2015</FIELD>
+				<FIELD name="optional2">FET Exchange Coordination and Support Activities 2015</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713171::Katharina_HENJES-KUNST</FIELD>
+				<FIELD name="id">corda__h2020::713171::Katharina_HENJES-KUNST</FIELD>
+				<FIELD name="firstname">Katharina</FIELD>
+				<FIELD name="secondnames">HENJES-KUNST</FIELD>
+				<FIELD name="email">katharina.henjes-kunst@desy.de</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::990797674</FIELD>
+				<FIELD name="id">corda__h2020::990797674</FIELD>
+				<FIELD name="legalshortname">KIT</FIELD>
+				<FIELD name="legalname">KARLSRUHER INSTITUT FUER TECHNOLOGIE</FIELD>
+				<FIELD name="websiteurl">http://www.kit.edu</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713171@@corda__h2020::990797674</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::713171</FIELD>
+				<FIELD name="resporganization">corda__h2020::990797674</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999974650</FIELD>
+				<FIELD name="id">corda__h2020::999974650</FIELD>
+				<FIELD name="legalshortname">UNIGE</FIELD>
+				<FIELD name="legalname">UNIVERSITE DE GENEVE</FIELD>
+				<FIELD name="websiteurl">http://www.unige.ch</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">CH</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713171@@corda__h2020::999974650</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::713171</FIELD>
+				<FIELD name="resporganization">corda__h2020::999974650</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999986969</FIELD>
+				<FIELD name="id">corda__h2020::999986969</FIELD>
+				<FIELD name="legalshortname">DESY</FIELD>
+				<FIELD name="legalname">STIFTUNG DEUTSCHES ELEKTRONEN-SYNCHROTRON DESY</FIELD>
+				<FIELD name="websiteurl">http://www.desy.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">N/A</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">N/A</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">N/A</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713171@@corda__h2020::999986969</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::713171</FIELD>
+				<FIELD name="resporganization">corda__h2020::999986969</FIELD>
+				<FIELD name="contactperson">corda__h2020::713171::Katharina_HENJES-KUNST</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999990267</FIELD>
+				<FIELD name="id">corda__h2020::999990267</FIELD>
+				<FIELD name="legalshortname">MPG</FIELD>
+				<FIELD name="legalname">MAX-PLANCK-GESELLSCHAFT ZUR FORDERUNG DER WISSENSCHAFTEN EV</FIELD>
+				<FIELD name="websiteurl">http://www.mpg.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713171@@corda__h2020::999990267</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::713171</FIELD>
+				<FIELD name="resporganization">corda__h2020::999990267</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-CSA-FETEXCHANGE-2015</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-CSA-FETEXCHANGE-2015</FIELD>
+				<FIELD name="name">FET Exchange Coordination and Support Activities 2015</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713171@@corda__h2020::FETOPEN-CSA-FETEXCHANGE-2015</FIELD>
+				<FIELD name="project">corda__h2020::713171</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-CSA-FETEXCHANGE-2015</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::CSA@@corda__h2020::713171</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::CSA</FIELD>
+				<FIELD name="project">corda__h2020::713171</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-AUG-2019</FIELD>
+				<FIELD name="semanticclass">CSA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p5.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p5.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p5.xml	(revision 60998)
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::0fa87a85cbbfb14f5cc2d4330c2b1cad</dri:objIdentifier>
+		<dri:recordIdentifier>736876</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:24:05.589+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876</FIELD>
+				<FIELD name="id">corda__h2020::736876</FIELD>
+				<FIELD name="code">736876</FIELD>
+				<FIELD name="acronym">VISORSURF</FIELD>
+				<FIELD name="title">VisorSurf - A Hardware Platform for Software-driven Functional Metasurfaces</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JAN-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-JUN-2020</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-1-2016-2017</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">RIA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="optional2">FET-Open research and innovation actions</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876::Costas_SOUKOULIS</FIELD>
+				<FIELD name="id">corda__h2020::736876::Costas_SOUKOULIS</FIELD>
+				<FIELD name="firstname">Costas</FIELD>
+				<FIELD name="secondnames">SOUKOULIS</FIELD>
+				<FIELD name="email">soukouli@iesl.forth.gr</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::991256096</FIELD>
+				<FIELD name="id">corda__h2020::991256096</FIELD>
+				<FIELD name="legalshortname">AALTO</FIELD>
+				<FIELD name="legalname">AALTO-KORKEAKOULUSAATIO</FIELD>
+				<FIELD name="websiteurl">http://www.aalto.fi</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">FI</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::991256096</FIELD>
+				<FIELD name="participantnumber" type="int">6</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::991256096</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999542903</FIELD>
+				<FIELD name="id">corda__h2020::999542903</FIELD>
+				<FIELD name="legalshortname">SG</FIELD>
+				<FIELD name="legalname">SIGNALGENERIX LTD</FIELD>
+				<FIELD name="websiteurl">http://www.signalgenerix.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">CY</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::999542903</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::999542903</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999835843</FIELD>
+				<FIELD name="id">corda__h2020::999835843</FIELD>
+				<FIELD name="legalshortname">UCY</FIELD>
+				<FIELD name="legalname">UNIVERSITY OF CYPRUS</FIELD>
+				<FIELD name="websiteurl">http://www.ucy.ac.cy</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">CY</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::999835843</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::999835843</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999976202</FIELD>
+				<FIELD name="id">corda__h2020::999976202</FIELD>
+				<FIELD name="legalshortname">UPC</FIELD>
+				<FIELD name="legalname">UNIVERSITAT POLITECNICA DE CATALUNYA</FIELD>
+				<FIELD name="websiteurl">http://www.upc.edu</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">ES</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::999976202</FIELD>
+				<FIELD name="participantnumber" type="int">5</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::999976202</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999984059</FIELD>
+				<FIELD name="id">corda__h2020::999984059</FIELD>
+				<FIELD name="legalshortname">Fraunhofer</FIELD>
+				<FIELD name="legalname">FRAUNHOFER GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V.</FIELD>
+				<FIELD name="websiteurl">http://www.fraunhofer.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::999984059</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::999984059</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999995893</FIELD>
+				<FIELD name="id">corda__h2020::999995893</FIELD>
+				<FIELD name="legalshortname">FORTH</FIELD>
+				<FIELD name="legalname">FOUNDATION FOR RESEARCH AND TECHNOLOGY HELLAS</FIELD>
+				<FIELD name="websiteurl">http://www.forth.gr</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">GR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::999995893</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::999995893</FIELD>
+				<FIELD name="contactperson">corda__h2020::736876::Costas_SOUKOULIS</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="name">FET-Open research and innovation actions</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-01-2016-2017</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::RIA@@corda__h2020::736876</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::RIA</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JAN-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-JUN-2020</FIELD>
+				<FIELD name="semanticclass">RIA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p24.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p24.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p24.xml	(revision 60998)
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::3548e7151decbb665ee1ca31b2bc3a65</dri:objIdentifier>
+		<dri:recordIdentifier>665564</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T10:52:00.56+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564</FIELD>
+				<FIELD name="id">corda__h2020::665564</FIELD>
+				<FIELD name="code">665564</FIELD>
+				<FIELD name="acronym">CIRCLE</FIELD>
+				<FIELD name="title">Coordinating European Research on Molecular Communications</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-MAY-2017</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-2014-CSA</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">Yes</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">CSA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-2-2014</FIELD>
+				<FIELD name="optional2">Coordination and Support Activities</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564::Alan_DAVY</FIELD>
+				<FIELD name="id">corda__h2020::665564::Alan_DAVY</FIELD>
+				<FIELD name="firstname">Alan</FIELD>
+				<FIELD name="secondnames">DAVY</FIELD>
+				<FIELD name="email">adavy@tssg.org</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::990343811</FIELD>
+				<FIELD name="id">corda__h2020::990343811</FIELD>
+				<FIELD name="legalshortname">TUT</FIELD>
+				<FIELD name="legalname">TTY-SAATIO</FIELD>
+				<FIELD name="websiteurl">http://www.tut.fi</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">FI</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564@@corda__h2020::990343811</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD name="resporganization">corda__h2020::990343811</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999608184</FIELD>
+				<FIELD name="id">corda__h2020::999608184</FIELD>
+				<FIELD name="legalshortname">IMINDS</FIELD>
+				<FIELD name="legalname">IMINDS</FIELD>
+				<FIELD name="websiteurl">http://www.iminds.be</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">BE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564@@corda__h2020::999608184</FIELD>
+				<FIELD name="participantnumber" type="int">8</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD name="resporganization">corda__h2020::999608184</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999618660</FIELD>
+				<FIELD name="id">corda__h2020::999618660</FIELD>
+				<FIELD name="legalshortname">WIT</FIELD>
+				<FIELD name="legalname">WATERFORD INSTITUTE OF TECHNOLOGY</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564@@corda__h2020::999618660</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD name="resporganization">corda__h2020::999618660</FIELD>
+				<FIELD name="contactperson">corda__h2020::665564::Alan_DAVY</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999649603</FIELD>
+				<FIELD name="id">corda__h2020::999649603</FIELD>
+				<FIELD name="legalshortname">CNIT</FIELD>
+				<FIELD name="legalname">CONSORZIO NAZIONALE INTERUNIVERSITARIO PER LE TELECOMUNICAZIONI</FIELD>
+				<FIELD name="websiteurl">http://www.cnit.it</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564@@corda__h2020::999649603</FIELD>
+				<FIELD name="participantnumber" type="int">9</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD name="resporganization">corda__h2020::999649603</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999846319</FIELD>
+				<FIELD name="id">corda__h2020::999846319</FIELD>
+				<FIELD name="legalshortname">UNIPG</FIELD>
+				<FIELD name="legalname">UNIVERSITA DEGLI STUDI DI PERUGIA</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564@@corda__h2020::999846319</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD name="resporganization">corda__h2020::999846319</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999901512</FIELD>
+				<FIELD name="id">corda__h2020::999901512</FIELD>
+				<FIELD name="legalshortname">KU</FIELD>
+				<FIELD name="legalname">KOC UNIVERSITY</FIELD>
+				<FIELD name="websiteurl">http://www.ku.edu.tr</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">TR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564@@corda__h2020::999901512</FIELD>
+				<FIELD name="participantnumber" type="int">5</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD name="resporganization">corda__h2020::999901512</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999915189</FIELD>
+				<FIELD name="id">corda__h2020::999915189</FIELD>
+				<FIELD name="legalshortname">UMC</FIELD>
+				<FIELD name="legalname">UNIVERSITAIR MEDISCH CENTRUM UTRECHT</FIELD>
+				<FIELD name="websiteurl">http://www.umcutrecht.nl</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">NL</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564@@corda__h2020::999915189</FIELD>
+				<FIELD name="participantnumber" type="int">6</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD name="resporganization">corda__h2020::999915189</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999976202</FIELD>
+				<FIELD name="id">corda__h2020::999976202</FIELD>
+				<FIELD name="legalshortname">UPC</FIELD>
+				<FIELD name="legalname">UNIVERSITAT POLITECNICA DE CATALUNYA</FIELD>
+				<FIELD name="websiteurl">http://www.upc.edu</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">ES</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564@@corda__h2020::999976202</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD name="resporganization">corda__h2020::999976202</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999977172</FIELD>
+				<FIELD name="id">corda__h2020::999977172</FIELD>
+				<FIELD name="legalshortname">THE CHANCELLOR, MASTERS AND SCHOLARS OF THE UNIVERSITY OF CAMBRIDGE</FIELD>
+				<FIELD name="legalname">THE CHANCELLOR, MASTERS AND SCHOLARS OF THE UNIVERSITY OF CAMBRIDGE</FIELD>
+				<FIELD name="websiteurl">http://www.cam.ac.uk</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564@@corda__h2020::999977172</FIELD>
+				<FIELD name="participantnumber" type="int">7</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD name="resporganization">corda__h2020::999977172</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999981149</FIELD>
+				<FIELD name="id">corda__h2020::999981149</FIELD>
+				<FIELD name="legalshortname">IMINDS</FIELD>
+				<FIELD name="legalname">INTERUNIVERSITAIR MICRO-ELECTRONICA CENTRUM</FIELD>
+				<FIELD name="websiteurl">http://www.imec.be</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">BE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564@@corda__h2020::999981149</FIELD>
+				<FIELD name="participantnumber" type="int">8</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD name="resporganization">corda__h2020::999981149</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="name">Coordination and Support Activities</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665564@@corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-2-2014</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::CSA@@corda__h2020::665564</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::CSA</FIELD>
+				<FIELD name="project">corda__h2020::665564</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-MAY-2017</FIELD>
+				<FIELD name="semanticclass">CSA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p9.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p9.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p9.xml	(revision 60998)
@@ -0,0 +1,337 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::219eead6ff0077cb500106ded3ff7fcb</dri:objIdentifier>
+		<dri:recordIdentifier>686731</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:01:35.286+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731</FIELD>
+				<FIELD name="id">corda__h2020::686731</FIELD>
+				<FIELD name="code">686731</FIELD>
+				<FIELD name="acronym">SUPERTWIN</FIELD>
+				<FIELD name="title">All Solid-State Super-Twinning Photon Microscope</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-MAR-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">28-FEB-2019</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-2014-2015-RIA</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">Yes</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">RIA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="optional2">FET-Open research projects</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731::David_STOPPA</FIELD>
+				<FIELD name="id">corda__h2020::686731::David_STOPPA</FIELD>
+				<FIELD name="firstname">David</FIELD>
+				<FIELD name="secondnames">STOPPA</FIELD>
+				<FIELD name="email">stoppa@fbk.eu</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::952944491</FIELD>
+				<FIELD name="id">corda__h2020::952944491</FIELD>
+				<FIELD name="legalshortname">Single Quantum</FIELD>
+				<FIELD name="legalname">SINGLE QUANTUM BV</FIELD>
+				<FIELD name="websiteurl">http://www.singlequantum.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">NL</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731@@corda__h2020::952944491</FIELD>
+				<FIELD name="participantnumber" type="int">5</FIELD>
+				<FIELD name="project">corda__h2020::686731</FIELD>
+				<FIELD name="resporganization">corda__h2020::952944491</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::965904273</FIELD>
+				<FIELD name="id">corda__h2020::965904273</FIELD>
+				<FIELD name="legalshortname">LFOUNDRY SRL</FIELD>
+				<FIELD name="legalname">LFOUNDRY SRL</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731@@corda__h2020::965904273</FIELD>
+				<FIELD name="participantnumber" type="int">9</FIELD>
+				<FIELD name="project">corda__h2020::686731</FIELD>
+				<FIELD name="resporganization">corda__h2020::965904273</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::993674015</FIELD>
+				<FIELD name="id">corda__h2020::993674015</FIELD>
+				<FIELD name="legalshortname">IPNASB</FIELD>
+				<FIELD name="legalname">B.I. Stepanov Institute of Physics of the National Academy of Sciences of Belarus</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">BY</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731@@corda__h2020::993674015</FIELD>
+				<FIELD name="participantnumber" type="int">8</FIELD>
+				<FIELD name="project">corda__h2020::686731</FIELD>
+				<FIELD name="resporganization">corda__h2020::993674015</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::998354362</FIELD>
+				<FIELD name="id">corda__h2020::998354362</FIELD>
+				<FIELD name="legalshortname">APE</FIELD>
+				<FIELD name="legalname">A.P.E. RESEARCH SRL</FIELD>
+				<FIELD name="websiteurl">http://www.aperesearch.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731@@corda__h2020::998354362</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::686731</FIELD>
+				<FIELD name="resporganization">corda__h2020::998354362</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999625450</FIELD>
+				<FIELD name="id">corda__h2020::999625450</FIELD>
+				<FIELD name="legalshortname">FBK</FIELD>
+				<FIELD name="legalname">FONDAZIONE BRUNO KESSLER</FIELD>
+				<FIELD name="websiteurl">http://www.fbk.eu</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731@@corda__h2020::999625450</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::686731</FIELD>
+				<FIELD name="resporganization">corda__h2020::999625450</FIELD>
+				<FIELD name="contactperson">corda__h2020::686731::David_STOPPA</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999958839</FIELD>
+				<FIELD name="id">corda__h2020::999958839</FIELD>
+				<FIELD name="legalshortname">CSEM</FIELD>
+				<FIELD name="legalname">CSEM CENTRE SUISSE D'ELECTRONIQUE ET DE MICROTECHNIQUE SA - RECHERCHE ET DEVELOPPEMENT</FIELD>
+				<FIELD name="websiteurl">http://www.csem.ch</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">CH</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731@@corda__h2020::999958839</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::686731</FIELD>
+				<FIELD name="resporganization">corda__h2020::999958839</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999971546</FIELD>
+				<FIELD name="id">corda__h2020::999971546</FIELD>
+				<FIELD name="legalshortname">III V LAB GIE</FIELD>
+				<FIELD name="legalname">III-V LAB</FIELD>
+				<FIELD name="websiteurl">http://www.3-5lab.fr</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">FR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731@@corda__h2020::999971546</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::686731</FIELD>
+				<FIELD name="resporganization">corda__h2020::999971546</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999973971</FIELD>
+				<FIELD name="id">corda__h2020::999973971</FIELD>
+				<FIELD name="legalshortname">EPFL</FIELD>
+				<FIELD name="legalname">ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE</FIELD>
+				<FIELD name="websiteurl">http://www.epfl.ch</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">CH</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731@@corda__h2020::999973971</FIELD>
+				<FIELD name="participantnumber" type="int">7</FIELD>
+				<FIELD name="project">corda__h2020::686731</FIELD>
+				<FIELD name="resporganization">corda__h2020::999973971</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999976493</FIELD>
+				<FIELD name="id">corda__h2020::999976493</FIELD>
+				<FIELD name="legalshortname">UBERN</FIELD>
+				<FIELD name="legalname">UNIVERSITAET BERN</FIELD>
+				<FIELD name="websiteurl">http://www.unibe.ch</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">CH</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731@@corda__h2020::999976493</FIELD>
+				<FIELD name="participantnumber" type="int">6</FIELD>
+				<FIELD name="project">corda__h2020::686731</FIELD>
+				<FIELD name="resporganization">corda__h2020::999976493</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="name">FET-Open research projects</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::686731@@corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="project">corda__h2020::686731</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::RIA@@corda__h2020::686731</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::RIA</FIELD>
+				<FIELD name="project">corda__h2020::686731</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-MAR-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">28-FEB-2019</FIELD>
+				<FIELD name="semanticclass">RIA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/log4j.properties
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/log4j.properties	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/log4j.properties	(revision 60998)
@@ -0,0 +1,10 @@
+### Root Level ###
+log4j.rootLogger=WARN, CONSOLE
+### Configuration for the CONSOLE appender ###
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d %c - %m%n
+org.apache.cxf.Logger=org.apache.cxf.common.logging.Log4jLogger
+### Application Level ###
+log4j.logger.eu.dnetlib=INFO
+log4j.logger.eu.dnetlib.msro.openaireplus.workflows.nodes.contexts=DEBUG
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p17.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p17.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p17.xml	(revision 60998)
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::003d8b7877f8d86860ce30b7c24534d5</dri:objIdentifier>
+		<dri:recordIdentifier>734075</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:22:46.663+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734075</FIELD>
+				<FIELD name="id">corda__h2020::734075</FIELD>
+				<FIELD name="code">734075</FIELD>
+				<FIELD name="acronym">CoDiS</FIELD>
+				<FIELD name="title">Compact, high-power, frequency-converted diode laser systems (CoDiS)</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-OCT-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-MAR-2019</FIELD>
+				<FIELD name="call_identifier">H2020-SMEINST-2-2016-2017</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">SME-2</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">SMEInst-01-2016-2017</FIELD>
+				<FIELD name="optional2">Open Disruptive Innovation Scheme</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734075::Oliver_HVIDT</FIELD>
+				<FIELD name="id">corda__h2020::734075::Oliver_HVIDT</FIELD>
+				<FIELD name="firstname">Oliver</FIELD>
+				<FIELD name="secondnames">HVIDT</FIELD>
+				<FIELD name="email">olhv@norlase.com</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::938309131</FIELD>
+				<FIELD name="id">corda__h2020::938309131</FIELD>
+				<FIELD name="legalshortname">NORLASE</FIELD>
+				<FIELD name="legalname">NORLASE APS</FIELD>
+				<FIELD name="websiteurl">http://www.norlase.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">DK</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734075@@corda__h2020::938309131</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::734075</FIELD>
+				<FIELD name="resporganization">corda__h2020::938309131</FIELD>
+				<FIELD name="contactperson">corda__h2020::734075::Oliver_HVIDT</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::940765074</FIELD>
+				<FIELD name="id">corda__h2020::940765074</FIELD>
+				<FIELD name="legalshortname">eyP</FIELD>
+				<FIELD name="legalname">EAGLEYARD PHOTONICS GMBH</FIELD>
+				<FIELD name="websiteurl">http://www.eagleyard.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734075@@corda__h2020::940765074</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::734075</FIELD>
+				<FIELD name="resporganization">corda__h2020::940765074</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::SMEInst-01-2016-2017</FIELD>
+				<FIELD name="id">corda__h2020::SMEInst-01-2016-2017</FIELD>
+				<FIELD name="name">Open Disruptive Innovation Scheme</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::734075@@corda__h2020::SMEInst-01-2016-2017</FIELD>
+				<FIELD name="project">corda__h2020::734075</FIELD>
+				<FIELD name="subject">corda__h2020::SMEInst-01-2016-2017</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::SME-2@@corda__h2020::734075</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::SME-2</FIELD>
+				<FIELD name="project">corda__h2020::734075</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-OCT-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-MAR-2019</FIELD>
+				<FIELD name="semanticclass">SME-2</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p12.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p12.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p12.xml	(revision 60998)
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::29d6d8c73672fc18badf81efc66fda4f</dri:objIdentifier>
+		<dri:recordIdentifier>665233</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T10:51:55.199+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665233</FIELD>
+				<FIELD name="id">corda__h2020::665233</FIELD>
+				<FIELD name="code">665233</FIELD>
+				<FIELD name="acronym">CHROMAVISION</FIELD>
+				<FIELD name="title">Super-resolution visualisation and manipulation of metaphase chromosomes</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-MAY-2019</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-2014-2015-RIA</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">Yes</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">RIA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="optional2">FET-Open research projects</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665233::gijs_WUITE</FIELD>
+				<FIELD name="id">corda__h2020::665233::gijs_WUITE</FIELD>
+				<FIELD name="firstname">gijs</FIELD>
+				<FIELD name="secondnames">WUITE</FIELD>
+				<FIELD name="email">gwuite@gmail.com</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::941077220</FIELD>
+				<FIELD name="id">corda__h2020::941077220</FIELD>
+				<FIELD name="legalshortname">LUMICKS</FIELD>
+				<FIELD name="legalname">LUMICKS B.V.</FIELD>
+				<FIELD name="websiteurl">http://www.lumicks.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">NL</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665233@@corda__h2020::941077220</FIELD>
+				<FIELD name="participantnumber" type="int">5</FIELD>
+				<FIELD name="project">corda__h2020::665233</FIELD>
+				<FIELD name="resporganization">corda__h2020::941077220</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::954530344</FIELD>
+				<FIELD name="id">corda__h2020::954530344</FIELD>
+				<FIELD name="legalshortname">VU/VUmc</FIELD>
+				<FIELD name="legalname">STICHTING VU</FIELD>
+				<FIELD name="websiteurl">http://www.vu.nl</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">NL</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665233@@corda__h2020::954530344</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::665233</FIELD>
+				<FIELD name="resporganization">corda__h2020::954530344</FIELD>
+				<FIELD name="contactperson">corda__h2020::665233::gijs_WUITE</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999975620</FIELD>
+				<FIELD name="id">corda__h2020::999975620</FIELD>
+				<FIELD name="legalshortname">UNIVERSITY COLLEGE LONDON</FIELD>
+				<FIELD name="legalname">UNIVERSITY COLLEGE LONDON</FIELD>
+				<FIELD name="websiteurl">http://www.ucl.ac.uk</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">N/A</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">N/A</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665233@@corda__h2020::999975620</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::665233</FIELD>
+				<FIELD name="resporganization">corda__h2020::999975620</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999990655</FIELD>
+				<FIELD name="id">corda__h2020::999990655</FIELD>
+				<FIELD name="legalshortname">DTU</FIELD>
+				<FIELD name="legalname">DANMARKS TEKNISKE UNIVERSITET</FIELD>
+				<FIELD name="websiteurl">http://www.dtu.dk</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DK</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665233@@corda__h2020::999990655</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::665233</FIELD>
+				<FIELD name="resporganization">corda__h2020::999990655</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999991043</FIELD>
+				<FIELD name="id">corda__h2020::999991043</FIELD>
+				<FIELD name="legalshortname">UCPH</FIELD>
+				<FIELD name="legalname">KOBENHAVNS UNIVERSITET</FIELD>
+				<FIELD name="websiteurl">http://www.ku.dk</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DK</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665233@@corda__h2020::999991043</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::665233</FIELD>
+				<FIELD name="resporganization">corda__h2020::999991043</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="name">FET-Open research projects</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665233@@corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="project">corda__h2020::665233</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::RIA@@corda__h2020::665233</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::RIA</FIELD>
+				<FIELD name="project">corda__h2020::665233</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-MAY-2019</FIELD>
+				<FIELD name="semanticclass">RIA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input3.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input3.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/hostedby/input3.xml	(revision 60998)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record xmlns:dr="http://www.driver-repository.eu/namespace/dr"
+        xmlns:oaf="http://namespace.openaire.eu/oaf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <oai:header xmlns="http://namespace.openaire.eu/"
+                xmlns:dc="http://purl.org/dc/elements/1.1/"
+                xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+                xmlns:oai="http://www.openarchives.org/OAI/2.0/" xmlns:prov="http://www.openarchives.org/OAI/2.0/provenance">
+        <dri:objIdentifier>datacite____::000000aaf19e1fdd1069b68c85cf5eda</dri:objIdentifier>
+        <dri:recordIdentifier>10.18421/tem53-12</dri:recordIdentifier>
+        <dri:dateOfCollection>2018-10-28T00:39:04.337Z</dri:dateOfCollection>
+        <oaf:datasourceprefix>datacite____</oaf:datasourceprefix>
+        <identifier xmlns="http://www.openarchives.org/OAI/2.0/">10.18421/tem53-12</identifier>
+        <setSpec xmlns="http://www.openarchives.org/OAI/2.0/">TIB.TEM</setSpec>
+    </oai:header>
+    <metadata>
+        <resource xmlns="http://datacite.org/schema/kernel-3"
+                  xmlns:dc="http://purl.org/dc/elements/1.1/"
+                  xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+                  xmlns:oai="http://www.openarchives.org/OAI/2.0/"
+                  xmlns:prov="http://www.openarchives.org/OAI/2.0/provenance" xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd">
+            <identifier identifierType="DOI">10.18421/tem53-12</identifier>
+            <creators>
+                <creator>
+                    <creatorName>Žileska – Pančovska, Valentina</creatorName>
+                </creator>
+                <creator>
+                    <creatorName>Blaževska-Stoilkovska, Biljana</creatorName>
+                </creator>
+                <creator>
+                    <creatorName>Hanák, Tomáš</creatorName>
+                </creator>
+            </creators>
+            <titles>
+                <title>Management of Human Resources and Quality in Materials Supply Process in Construction Projects</title>
+            </titles>
+            <publisher>UIKTEN</publisher>
+            <publicationYear>2016</publicationYear>
+            <subjects>
+                <subject>construction project</subject>
+                <subject>Human resources management</subject>
+                <subject>Quality management</subject>
+                <subject>materials supply process</subject>
+                <subject>satisfaction</subject>
+            </subjects>
+            <dates>
+                <date dateType="Issued">2016</date>
+            </dates>
+            <language>eng</language>
+            <resourceType bibtex="article" resourceTypeGeneral="Text">Article</resourceType>
+            <alternateIdentifiers xmlns="http://www.openarchives.org/OAI/2.0/">
+                <alternateIdentifier alternateIdentifierType="DOI" xmlns="http://datacite.org/schema/kernel-3">https://doi.org/10.18421/tem53-12</alternateIdentifier>
+                <alternateIdentifier alternateIdentifierType="URL">http://dx.doi.org/10.18421/tem53-12</alternateIdentifier>
+            </alternateIdentifiers>
+            <formats>
+                <format>PDF</format>
+            </formats>
+            <version>None</version>
+            <descriptions>
+                <description descriptionType="SeriesInformation">TEM Journal; Vol 5, No 3, 2016. ISSN 2217-8309</description>
+                <description descriptionType="Abstract">Construction projects participants were surveyed to assess how coordination and communication among stakeholders and quality control in building materials supply process were managed, as well as to evaluate their satisfaction with the structures quality. It was found that the participants’ role and working experience had a statistically significant interaction effect on satisfaction with the structures quality, but their effect on perceived coordination and communication among stakeholders and materials’ quality control wasn’t statistically significant. The results were discussed in light of their importance for effective construction project management from the aspect of human resources, building materials quality and satisfaction with the quality of structures.</description>
+            </descriptions>
+            <oaf:hostedBy
+                    id="openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18" name="Unknown Repository"/>
+        </resource>
+        <dr:CobjCategory type="publication">0038</dr:CobjCategory>
+        <oaf:dateAccepted>2016-01-01</oaf:dateAccepted>
+        <oaf:accessrights>UNKNOWN</oaf:accessrights>
+        <oaf:language>eng</oaf:language>
+        <oaf:hostedBy
+                id="openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18" name="Unknown Repository"/>
+        <oaf:collectedFrom id="openaire____::datacite" name="Datacite"/>
+    </metadata>
+    <about xmlns:dc="http://purl.org/dc/elements/1.1/"
+           xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+           xmlns:oai="http://www.openarchives.org/OAI/2.0/" xmlns:prov="http://www.openarchives.org/OAI/2.0/provenance">
+        <provenance xmlns="http://www.openarchives.org/OAI/2.0/provenance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance http://www.openarchives.org/OAI/2.0/provenance.xsd">
+            <originDescription altered="true" harvestDate="2019-08-30T16:18:10.136Z">
+                <baseURL>http://ip-90-147-167-25.ct1.garrservices.it:5000</baseURL>
+                <identifier>10.18421/tem53-12</identifier>
+                <datestamp/>
+                <metadataNamespace/>
+            </originDescription>
+        </provenance>
+        <oaf:datainfo>
+            <oaf:inferred>false</oaf:inferred>
+            <oaf:deletedbyinference>false</oaf:deletedbyinference>
+            <oaf:trust>0.9</oaf:trust>
+            <oaf:inferenceprovenance/>
+            <oaf:provenanceaction classid="sysimport:crosswalk:datasetarchive"
+                                  classname="sysimport:crosswalk:datasetarchive"
+                                  schemeid="dnet:provenanceActions" schemename="dnet:provenanceActions"/>
+        </oaf:datainfo>
+    </about>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/index/oafRecord.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/index/oafRecord.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/index/oafRecord.xml	(revision 60998)
@@ -0,0 +1,73 @@
+<record rank="null">
+	<result>
+		<header>
+			<objIdentifier>lareferencia::29c95f5ef62c8bad9db1f4a6fdfd0a3a</objIdentifier>
+			<dateOfCollection>2018-03-09T15:22:59.538Z</dateOfCollection>
+			<dateOfTransformation>2018-09-19T09:51:37.481Z</dateOfTransformation>
+			<counters></counters>
+		</header>
+		<metadata>
+			<entity schemaLocation="http://namespace.openaire.eu/oaf https://www.openaire.eu/schema/1.0/oaf-1.0.xsd">
+				<result>
+					<source>Organizações &amp; Sociedade v.20 n.67 2013</source>
+					<source>reponame:Escola de Administração da Universidade Federal da Bahia</source>
+					<source>instname:UFBA</source>
+					<format>text/html</format>
+					<creator rank="1" name="Mônica Aguiar Mac-Allister Da" surname="Silva">Silva,Mônica de Aguiar Mac-Allister da</creator>
+					<creator rank="2" name="José Célio Silveira" surname="Andrade">Andrade,José Célio Silveira</creator>
+					<title classid="main title" classname="main title" schemeid="dnet:dataCite_title" schemename="dnet:dataCite_title">Editorial</title>
+					<dateofacceptance>2013-12-01</dateofacceptance>
+					<journal issn="" eissn="" lissn="" ep="" iss="" sp="" vol="" />
+					<publisher>Escola de Administração da Universidade Federal da Bahia</publisher>
+					<resulttype classid="publication" classname="publication" schemeid="dnet:result_typologies" schemename="dnet:result_typologies" />
+					<language classid="por" classname="Portuguese" schemeid="dnet:languages" schemename="dnet:languages" />
+					<country classid="" classname="" schemeid="" schemename="" />
+					<subject classid="" classname="" schemeid="" schemename="" />
+					<relevantdate classid="" classname="" schemeid="" schemename="" />
+					<description />
+					<embargoenddate />
+					<fulltext />
+					<contributor />
+					<resourcetype classid="" classname="" schemeid="" schemename="" />
+					<coverage />
+					<storagedate />
+					<device />
+					<size />
+					<version />
+					<lastmetadataupdate />
+					<metadataversionnumber />
+					<documentationUrl />
+					<codeRepositoryUrl />
+					<programmingLanguage classid="" classname="" schemeid="" schemename="" />
+					<contactperson />
+					<contactgroup />
+					<tool />
+					<originalId>oai:periodicos.ibict.br.OrganizacoesESociedade:oai:scielo:S1984-92302013000400001</originalId>
+					<collectedfrom name="LA Referencia" id="openaire____::dc6e224a8d74ce03bf301152d6e33e97" />
+					<pid classid="" classname="" schemeid="" schemename="" />
+					<bestaccessright classid="OPEN" classname="Open Access" schemeid="dnet:access_modes" schemename="dnet:access_modes" />
+					<datainfo>
+						<inferred>false</inferred>
+						<deletedbyinference>false</deletedbyinference>
+						<trust>0.9</trust>
+						<inferenceprovenance />
+						<provenanceaction classid="sysimport:crosswalk:repository" classname="sysimport:crosswalk:repository" schemeid="dnet:provenanceActions" schemename="dnet:provenanceActions" />
+					</datainfo>
+					<rels></rels>
+					<children>
+						<instance id="openaire____::dc6e224a8d74ce03bf301152d6e33e97">
+							<collectedfrom name="LA Referencia" id="openaire____::dc6e224a8d74ce03bf301152d6e33e97" />
+							<instancetype classid="0001" classname="Article" schemeid="dnet:publication_resource" schemename="dnet:publication_resource" />
+							<dateofacceptance>2013-12-01</dateofacceptance>
+							<accessright classid="OPEN" classname="Open Access" schemeid="dnet:access_modes" schemename="dnet:access_modes" />
+							<hostedby name="LA Referencia" id="openaire____::dc6e224a8d74ce03bf301152d6e33e97" />
+							<webresource>
+								<url>http://www.scielo.br/scielo.php?script=sci_arttext&amp;pid=S1984-92302013000400001</url>
+							</webresource>
+						</instance>
+					</children>
+				</result>
+			</entity>
+		</metadata>
+	</result>
+</record>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p23.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p23.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p23.xml	(revision 60998)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::006a3cdb2edabcf0d82d914bb4b2ac7f</dri:objIdentifier>
+		<dri:recordIdentifier>678282</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T10:57:33.372+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::678282</FIELD>
+				<FIELD name="id">corda__h2020::678282</FIELD>
+				<FIELD name="code">678282</FIELD>
+				<FIELD name="acronym">LENA</FIELD>
+				<FIELD name="title">non-LinEar sigNal processing for solving data challenges in Astrophysics</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-AUG-2021</FIELD>
+				<FIELD name="call_identifier">ERC-2015-STG</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">ERC-STG</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">ERC-StG-2015</FIELD>
+				<FIELD name="optional2">ERC Starting Grant</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::678282::Jerome_BOBIN</FIELD>
+				<FIELD name="id">corda__h2020::678282::Jerome_BOBIN</FIELD>
+				<FIELD name="firstname">Jerome</FIELD>
+				<FIELD name="secondnames">BOBIN</FIELD>
+				<FIELD name="email">jbobin@cea.fr</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999992401</FIELD>
+				<FIELD name="id">corda__h2020::999992401</FIELD>
+				<FIELD name="legalshortname">CEA</FIELD>
+				<FIELD name="legalname">COMMISSARIAT A L ENERGIE ATOMIQUE ET AUX ENERGIES ALTERNATIVES</FIELD>
+				<FIELD name="websiteurl">http://www.cea.fr</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">FR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::678282@@corda__h2020::999992401</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::678282</FIELD>
+				<FIELD name="resporganization">corda__h2020::999992401</FIELD>
+				<FIELD name="contactperson">corda__h2020::678282::Jerome_BOBIN</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::ERC-StG-2015</FIELD>
+				<FIELD name="id">corda__h2020::ERC-StG-2015</FIELD>
+				<FIELD name="name">ERC Starting Grant</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::678282@@corda__h2020::ERC-StG-2015</FIELD>
+				<FIELD name="project">corda__h2020::678282</FIELD>
+				<FIELD name="subject">corda__h2020::ERC-StG-2015</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::ERC::ERC-STG@@corda__h2020::678282</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::ERC::ERC-STG</FIELD>
+				<FIELD name="project">corda__h2020::678282</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-AUG-2021</FIELD>
+				<FIELD name="semanticclass">ERC-STG</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_ariadne.json
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_ariadne.json	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_ariadne.json	(revision 60998)
@@ -0,0 +1,25 @@
+{
+  "openaireId":"od_______278::d5b39693ac6c2197e8cf48008a982950",
+  "originalId": "oai:rudar.ruc.dk:1800/24690",
+  "type": "publication",
+  "title": "Autofiktion",
+  "authors": [
+	"Sloan, Patrick Alexander Raaby",
+	"Strange, Gustav Valdemar",
+	"Freund-Jensen, Sofie",
+	"Canvin, Emilie Meistrup",
+	"Faaborg, Ida Selvejer",
+	"Kruse, Mikkel"
+  ],
+  "publisher": "",
+  "description": "The following paper is a project on the autofictional book Færdig med Eddy Bellegueule by Édouard Louis (2015). The main focus is to ascertain how the novel is an expression of the author’s effort to connect social life and literature, and what part autofiction as a genre plays in this process. A textual analysis will describe the narrator’s position, and the aesthetic grip of the novel. Furthermore, we will analyze the central themes in Louis’ novel with theories by sociologist Pierre Bourdieu, gender theorist Judith Butler and postcolonial theorist Gayatri Spivak. This includes symbolic violence, gender roles, language and suppression. With use of classic literary theory and the more recent and specific theory on autofiction, the paper concludes, that Færdig med Eddy Bellegueule is based on non-fictional events, but presents these events through a fictionalization that raise the story into a literary work of art. The genre autofiction encircles a current tendency to blend non-fictional events and characters into literature, and Færdig med Eddy Bellegueule writes itself perfectly into this twilight zone between fact and fiction.",
+  "language": "eng",
+  "pids": [],
+  "licenseCode": "OPEN",
+  "resourceType": "0006",
+  "url": "http://rudar.ruc.dk/handle/1800/24690",
+  "collectedFromId": "opendoar____::278",
+  "hostedById": "opendoar____::278",
+  "linksToProjects": [],
+  "contexts": []
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p16.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p16.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p16.xml	(revision 60998)
@@ -0,0 +1,428 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::003a34b5811de10e17597e29e32214b4</dri:objIdentifier>
+		<dri:recordIdentifier>721577</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:17:28.987+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577</FIELD>
+				<FIELD name="id">corda__h2020::721577</FIELD>
+				<FIELD name="code">721577</FIELD>
+				<FIELD name="acronym">Keep Control</FIELD>
+				<FIELD name="title">Industrial Academic Initial Training Network towards specific diagnosis and treatment of age-related gait and balance deficits</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-MAR-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">28-FEB-2021</FIELD>
+				<FIELD name="call_identifier">H2020-MSCA-ITN-2016</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">MSCA-ITN-ETN</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">MSCA-ITN-2016</FIELD>
+				<FIELD name="optional2">Innovative Training Networks</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577::Walter_MAETZLER</FIELD>
+				<FIELD name="id">corda__h2020::721577::Walter_MAETZLER</FIELD>
+				<FIELD name="firstname">Walter</FIELD>
+				<FIELD name="secondnames">MAETZLER</FIELD>
+				<FIELD name="email">w.maetzler@neurologie.uni-kiel.de</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::916516238</FIELD>
+				<FIELD name="id">corda__h2020::916516238</FIELD>
+				<FIELD name="legalshortname">Patients Know Best</FIELD>
+				<FIELD name="legalname">PATIENTS KNOW BEST LIMITED</FIELD>
+				<FIELD name="websiteurl">http://www.patientsknowbest.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::916516238</FIELD>
+				<FIELD name="participantnumber" type="int">12</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::916516238</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::932602718</FIELD>
+				<FIELD name="id">corda__h2020::932602718</FIELD>
+				<FIELD name="legalshortname">Gait Up</FIELD>
+				<FIELD name="legalname">GAIT UP SA</FIELD>
+				<FIELD name="websiteurl">http://www.gaitup.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">CH</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::932602718</FIELD>
+				<FIELD name="participantnumber" type="int">10</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::932602718</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::954530344</FIELD>
+				<FIELD name="id">corda__h2020::954530344</FIELD>
+				<FIELD name="legalshortname">VU/VUmc</FIELD>
+				<FIELD name="legalname">STICHTING VU</FIELD>
+				<FIELD name="websiteurl">http://www.vu.nl</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">NL</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::954530344</FIELD>
+				<FIELD name="participantnumber" type="int">6</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::954530344</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::969048334</FIELD>
+				<FIELD name="id">corda__h2020::969048334</FIELD>
+				<FIELD name="legalshortname">Motek Medical</FIELD>
+				<FIELD name="legalname">MOTEK MEDICAL B.V.</FIELD>
+				<FIELD name="websiteurl">http://www.motekmedical.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">NL</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::969048334</FIELD>
+				<FIELD name="participantnumber" type="int">9</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::969048334</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::969946457</FIELD>
+				<FIELD name="id">corda__h2020::969946457</FIELD>
+				<FIELD name="legalshortname">HASOMED GmbH</FIELD>
+				<FIELD name="legalname">HASOMED HARD-UND SOFTWARE FUER MEDIZIN GESELLSCHAFT MBH</FIELD>
+				<FIELD name="websiteurl">http://www.hasomed.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::969946457</FIELD>
+				<FIELD name="participantnumber" type="int">11</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::969946457</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999587232</FIELD>
+				<FIELD name="id">corda__h2020::999587232</FIELD>
+				<FIELD name="legalshortname">CHU LILLE</FIELD>
+				<FIELD name="legalname">CENTRE HOSPITALIER REGIONAL ET UNIVERSITAIRE DE LILLE</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">FR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::999587232</FIELD>
+				<FIELD name="participantnumber" type="int">8</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::999587232</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999839529</FIELD>
+				<FIELD name="id">corda__h2020::999839529</FIELD>
+				<FIELD name="legalshortname">CAU</FIELD>
+				<FIELD name="legalname">CHRISTIAN-ALBRECHTS-UNIVERSITAET ZU KIEL</FIELD>
+				<FIELD name="websiteurl">http://www.uni-kiel.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::999839529</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::999839529</FIELD>
+				<FIELD name="contactperson">corda__h2020::721577::Walter_MAETZLER</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999894916</FIELD>
+				<FIELD name="id">corda__h2020::999894916</FIELD>
+				<FIELD name="legalshortname">UPORTO</FIELD>
+				<FIELD name="legalname">UNIVERSIDADE DO PORTO</FIELD>
+				<FIELD name="websiteurl">http://www.up.pt</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">PT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::999894916</FIELD>
+				<FIELD name="participantnumber" type="int">5</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::999894916</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999914801</FIELD>
+				<FIELD name="id">corda__h2020::999914801</FIELD>
+				<FIELD name="legalshortname">UMCG</FIELD>
+				<FIELD name="legalname">ACADEMISCH ZIEKENHUIS GRONINGEN</FIELD>
+				<FIELD name="websiteurl">http://www.umcg.nl</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">NL</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::999914801</FIELD>
+				<FIELD name="participantnumber" type="int">7</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::999914801</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999978433</FIELD>
+				<FIELD name="id">corda__h2020::999978433</FIELD>
+				<FIELD name="legalshortname">LMU</FIELD>
+				<FIELD name="legalname">LUDWIG-MAXIMILIANS-UNIVERSITAET MUENCHEN</FIELD>
+				<FIELD name="websiteurl">http://www.uni-muenchen.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">N/A</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">N/A</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::999978433</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::999978433</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999985417</FIELD>
+				<FIELD name="id">corda__h2020::999985417</FIELD>
+				<FIELD name="legalshortname">UNEW</FIELD>
+				<FIELD name="legalname">UNIVERSITY OF NEWCASTLE UPON TYNE</FIELD>
+				<FIELD name="websiteurl">http://www.newcastle.ac.uk</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::999985417</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::999985417</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999991334</FIELD>
+				<FIELD name="id">corda__h2020::999991334</FIELD>
+				<FIELD name="legalshortname">KU Leuven</FIELD>
+				<FIELD name="legalname">KATHOLIEKE UNIVERSITEIT LEUVEN</FIELD>
+				<FIELD name="websiteurl">http://www.kuleuven.be</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">BE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::999991334</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="resporganization">corda__h2020::999991334</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::MSCA-ITN-2016</FIELD>
+				<FIELD name="id">corda__h2020::MSCA-ITN-2016</FIELD>
+				<FIELD name="name">Innovative Training Networks</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::721577@@corda__h2020::MSCA-ITN-2016</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD name="subject">corda__h2020::MSCA-ITN-2016</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::MSCA-ITN-ETN@@corda__h2020::721577</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::MSCA-ITN-ETN</FIELD>
+				<FIELD name="project">corda__h2020::721577</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-MAR-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">28-FEB-2021</FIELD>
+				<FIELD name="semanticclass">MSCA-ITN-ETN</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record.json
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record.json	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record.json	(revision 60998)
@@ -0,0 +1,36 @@
+{
+  "originalId": "ORIG_ID_12345",
+  "title": "TEST TITLE",
+  "authors": [
+	"Michele Artini",
+	"Claudio Atzori",
+	"Alessia Bardi"
+  ],
+  "publisher": "Test publisher",
+  "description": "DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION",
+  "language": "ita",
+  "pids": [
+	{
+	  "type": "doi",
+	  "value": "10.000/xyz-123"
+	},
+	{
+	  "type": "oai",
+	  "value": "oai:1234"
+	}
+  ],
+  "licenseCode": "OPEN",
+  "resourceType": "0001",
+  "url": "http://test.it/xyz",
+  "collectedFromId": "opendoar____::2659",
+  "hostedById": "opendoar____::2367",
+  "linksToProjects": [
+	"info:eu-repo/grantAgreement/EC/FP7/283595/EU//OpenAIREplus",
+	"info:eu-repo/grantAgreement/EC/FP7/244909/EU/Making Capabilities Work/WorkAble"
+  ],
+  "contexts": [
+	"egi::classification::natsc::math::pure",
+	"egi::classification::natsc::math::stats"
+  ]
+}
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/deploy.info
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/deploy.info	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/deploy.info	(revision 60998)
@@ -0,0 +1 @@
+{"type_source": "SVN", "goal": "package -U source:jar", "url": "http://svn-public.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-openaireplus-workflows/trunk/", "deploy_repository": "dnet45-snapshots", "version": "4", "mail": "sandro.labruzzo@isti.cnr.it,michele.artini@isti.cnr.it, claudio.atzori@isti.cnr.it, alessia.bardi@isti.cnr.it", "deploy_repository_url": "http://maven.research-infrastructures.eu/nexus/content/repositories/dnet45-snapshots", "name": "dnet-openaireplus-workflows"}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p27.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p27.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p27.xml	(revision 60998)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::e12e28f98e22f9a9c85b086adfcf34d5</dri:objIdentifier>
+		<dri:recordIdentifier>665136</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T10:51:55.188+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665136</FIELD>
+				<FIELD name="id">corda__h2020::665136</FIELD>
+				<FIELD name="code">665136</FIELD>
+				<FIELD name="acronym">OBSERVE</FIELD>
+				<FIELD name="title">Observing Emergence</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-MAY-2017</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-2014-CSA</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">Yes</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">CSA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-2-2014</FIELD>
+				<FIELD name="optional2">Coordination and Support Activities</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665136::Philine_WARNKE</FIELD>
+				<FIELD name="id">corda__h2020::665136::Philine_WARNKE</FIELD>
+				<FIELD name="firstname">Philine</FIELD>
+				<FIELD name="secondnames">WARNKE</FIELD>
+				<FIELD name="email">philine.warnke@isi.fraunhofer.de</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999984059</FIELD>
+				<FIELD name="id">corda__h2020::999984059</FIELD>
+				<FIELD name="legalshortname">Fraunhofer</FIELD>
+				<FIELD name="legalname">FRAUNHOFER GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V.</FIELD>
+				<FIELD name="websiteurl">http://www.fraunhofer.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665136@@corda__h2020::999984059</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::665136</FIELD>
+				<FIELD name="resporganization">corda__h2020::999984059</FIELD>
+				<FIELD name="contactperson">corda__h2020::665136::Philine_WARNKE</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="name">Coordination and Support Activities</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665136@@corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="project">corda__h2020::665136</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-2-2014</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::CSA@@corda__h2020::665136</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::CSA</FIELD>
+				<FIELD name="project">corda__h2020::665136</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-MAY-2017</FIELD>
+				<FIELD name="semanticclass">CSA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p2.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p2.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p2.xml	(revision 60998)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::072c9a0f7177104264b881afedd4e0ab</dri:objIdentifier>
+		<dri:recordIdentifier>754514</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:26:37.65+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754514</FIELD>
+				<FIELD name="id">corda__h2020::754514</FIELD>
+				<FIELD name="code">754514</FIELD>
+				<FIELD name="acronym">ROMA</FIELD>
+				<FIELD name="title">Resource AuctiOning Engine for the Mobile Digital MArket</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-NOV-2018</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-4-2016-2017</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">CSA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="optional2">FET Innovation Launchpad</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754514::Francesco_DE PELLEGRINI</FIELD>
+				<FIELD name="id">corda__h2020::754514::Francesco_DE PELLEGRINI</FIELD>
+				<FIELD name="firstname">Francesco</FIELD>
+				<FIELD name="secondnames">DE PELLEGRINI</FIELD>
+				<FIELD name="email">fdepellegrini@fbk.eu</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999625450</FIELD>
+				<FIELD name="id">corda__h2020::999625450</FIELD>
+				<FIELD name="legalshortname">CREATE-NET</FIELD>
+				<FIELD name="legalname">FONDAZIONE BRUNO KESSLER</FIELD>
+				<FIELD name="websiteurl">http://www.fbk.eu</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754514@@corda__h2020::999625450</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::754514</FIELD>
+				<FIELD name="resporganization">corda__h2020::999625450</FIELD>
+				<FIELD name="contactperson">corda__h2020::754514::Francesco_DE PELLEGRINI</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="name">FET Innovation Launchpad</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::754514@@corda__h2020::FETOPEN-04-2016-2017</FIELD>
+				<FIELD name="project">corda__h2020::754514</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-04-2016-2017</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::CSA@@corda__h2020::754514</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::CSA</FIELD>
+				<FIELD name="project">corda__h2020::754514</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JUN-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-NOV-2018</FIELD>
+				<FIELD name="semanticclass">CSA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/index/fields.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/index/fields.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/index/fields.xml	(revision 60998)
@@ -0,0 +1,172 @@
+<LAYOUT name="index">
+	<FIELDS>
+		<FIELD indexable="false" name="oafentity" result="true" stat="false" tokenizable="true" xpath="//*[local-name() = 'entity']"/>
+		<FIELD indexable="true" name="oaftype" result="false" stat="false" tokenizable="false" value="local-name(//*[local-name()='entity']/*)"/>
+		<FIELD indexable="true" name="objIdentifier" result="false" stat="false" tokenizable="false" xpath="//header/dri:objIdentifier"/>
+
+		<!-- DATASOURCE FIELDS -->
+		<FIELD indexable="true" name="datasourceofficialname" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='datasource']/officialname"/>
+		<FIELD indexable="true" name="datasourceenglishname" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='datasource']/englishname"/>
+		<FIELD indexable="true" name="datasourcewebsiteurl" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='datasource']/websiteurl"/>
+		<FIELD indexable="true" name="datasourcelogourl" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='datasource']/logourl"/>
+		<FIELD indexable="true" name="datasourcecontactemail" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='datasource']/contactemail"/>
+		<FIELD indexable="true" name="datasourceoddescription" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='datasource']/oddescription"/>
+		<FIELD indexable="true" name="datasourceodnumberofitems" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='datasource']/odnumberofitems"/>
+		<FIELD indexable="true" name="datasourceodnumberofitemsdate" result="false" stat="false" type="date" value="//*[local-name()='entity']/*[local-name()='datasource']/odnumberofitemsdate"/>
+		<FIELD indexable="true" name="datasourceodsubjects" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='datasource']/odsubjects"/>
+		<FIELD indexable="true" name="datasourceodlanguages" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='datasource']/odlanguages"/>
+		<FIELD indexable="true" name="datasourceodcontenttypes" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='datasource']/odcontenttypes"/>
+		<FIELD indexable="true" name="datasourcetypeid" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='datasource']/datasourcetype/@classid"/>
+		<FIELD indexable="true" name="datasourcetypename" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='datasource']/datasourcetype/@classname"/>
+		<FIELD indexable="true" name="datasourcetypeuiid" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='datasource']/datasourcetypeui/@classid"/>
+		<FIELD indexable="true" name="datasourcetypeuiname" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='datasource']/datasourcetypeui/@classname"/>
+		<FIELD indexable="true" name="datasourcecompatibilityid" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='datasource']/openairecompatibility/@classid"/>
+		<FIELD indexable="true" name="datasourcecompatibilityname" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='datasource']/openairecompatibility/@classname"/>
+
+		<!-- ORGANIZATION FIELDS -->
+		<FIELD indexable="true" name="organizationlegalshortname" result="false" stat="false" type="ngramtext" value="//*[local-name()='entity']/*[local-name()='organization']/legalshortname"/>
+		<FIELD indexable="true" name="organizationlegalname" result="false" stat="false" type="ngramtext" value="//*[local-name()='entity']/*[local-name()='organization']/legalname"/>
+		<FIELD indexable="true" name="organizationwebsiteurl" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/websiteurl"/>
+		<FIELD indexable="true" name="organizationlogourl" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/logourl"/>
+		<FIELD indexable="true" name="organizationeclegalbody" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/eclegalbody"/>
+		<FIELD indexable="true" name="organizationeclegalperson" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/eclegalperson"/>
+		<FIELD indexable="true" name="organizationecnonprofit" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/ecnonprofit"/>
+		<FIELD indexable="true" name="organizationecresearchorganization" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/ecresearchorganization"/>
+		<FIELD indexable="true" name="organizationecinternationalorganizationeurinterests" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/ecinternationalorganizationeurinterests"/>
+		<FIELD indexable="true" name="organizationecinternationalorganization" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/ecinternationalorganization"/>
+		<FIELD indexable="true" name="organizationecenterprise" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/ecenterprise"/>
+		<FIELD indexable="true" name="organizationecsmevalidated" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/ecsmevalidated"/>
+		<FIELD indexable="true" name="organizationecnutscode" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/ecnutscode"/>
+		<FIELD indexable="true" name="organizationcollectedfrom" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='organization']/collectedfrom"/>
+		<FIELD indexable="true" name="organizationcountryid" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='organization']/country/@classid"/>
+		<FIELD indexable="true" name="organizationcountryname" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='organization']/country/@classname"/>
+
+		<!-- PERSON FIELDS -->
+		<FIELD indexable="true" name="personfirstname" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='person']/firstname"/>
+		<FIELD indexable="true" name="personsecondnames" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='person']/secondnames"/>
+		<FIELD indexable="true" name="personfullname" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='person']/fullname"/>
+		<FIELD indexable="true" name="personfax" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='person']/fax"/>
+		<FIELD indexable="true" name="personemail" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='person']/email"/>
+		<FIELD indexable="true" name="personphone" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='person']/phone"/>
+		<FIELD indexable="true" name="personcollectedfrom" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='person']/collectedfrom"/>
+		<FIELD indexable="true" name="personcountryid" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='person']/nationality/@classid"/>
+		<FIELD indexable="true" name="personcountryname" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='person']/nationality/@classname"/>
+
+		<!-- PROJECT FIELDS -->
+		<FIELD indexable="true" name="projectwebsiteurl" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='project']/websiteurl"/>
+		<FIELD indexable="true" name="projectcode" result="false" stat="false" type="ngramtext" value="//*[local-name()='entity']/*[local-name()='project']/code"/>
+		<FIELD indexable="true" name="projectacronym" result="false" stat="false" type="ngramtext" value="//*[local-name()='entity']/*[local-name()='project']/acronym"/>
+		<FIELD indexable="true" name="projecttitle" result="false" stat="false" type="ngramtext" value="//*[local-name()='entity']/*[local-name()='project']/title"/>
+		<FIELD indexable="true" name="projectstartdate" result="false" stat="false" type="date" value="//*[local-name()='entity']/*[local-name()='project']/startdate"/>
+		<FIELD indexable="true" name="projectstartyear" result="false" stat="false" tokenizable="false" value="dnet:extractYear(//*[local-name()='entity']/*[local-name()='project']/startdate)"/>
+		<FIELD indexable="true" name="projectenddate" result="false" stat="false" type="date" value="//*[local-name()='entity']/*[local-name()='project']/enddate"/>
+		<FIELD indexable="true" name="projectendyear" result="false" stat="false" tokenizable="false" value="dnet:extractYear(//*[local-name()='entity']/*[local-name()='project']/enddate)"/>
+		<FIELD indexable="true" name="projectcallidentifier" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='project']/callidentifier"/>
+		<FIELD indexable="true" name="projectkeywords" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='project']/keywords"/>
+		<FIELD indexable="true" name="projectduration" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='project']/duration"/>
+		<FIELD indexable="true" name="projectecsc39" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='project']/ecsc39"/>
+		<FIELD indexable="true" name="projectcollectedfrom" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='project']/collectedfrom"/>
+		<FIELD indexable="true" name="projectcontracttypeid" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='project']/contracttype/@classid"/>
+		<FIELD indexable="true" name="projectcontracttypename" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='project']/contracttype/@classname"/>
+		<FIELD indexable="true" name="fundinglevel0_id" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='project']/fundingtree//funding_level_0/id"/>
+		<FIELD indexable="true" name="fundinglevel0_name" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='project']/fundingtree//funding_level_0/name"/>
+		<FIELD indexable="true" name="fundinglevel0_description" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='project']/fundingtree//funding_level_0/description"/>
+		<FIELD indexable="true" name="fundinglevel1_id" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='project']/fundingtree//funding_level_1/id"/>
+		<FIELD indexable="true" name="fundinglevel1_name" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='project']/fundingtree//funding_level_1/name"/>
+		<FIELD indexable="true" name="fundinglevel1_description" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='project']/fundingtree//funding_level_1/description"/>
+		<FIELD indexable="true" name="fundinglevel2_id" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='project']/fundingtree//funding_level_2/id"/>
+		<FIELD indexable="true" name="fundinglevel2_name" result="false" stat="false" tokenizable="false" value="//*[local-name()='entity']/*[local-name()='project']/fundingtree//funding_level_2/name"/>
+		<FIELD indexable="true" name="fundinglevel2_description" result="false" stat="false" value="//*[local-name()='entity']/*[local-name()='project']/fundingtree//funding_level_2/description"/>
+
+		<!-- RESULT FIELDS -->
+		<FIELD indexable="true" name="resulttitle" result="false" stat="false" xpath="//*[local-name()='entity']/*[local-name()='result']/title"/>
+		<FIELD indexable="true" name="resulttitleclass" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/title/@classname"/>
+		<FIELD indexable="true" name="resultsubject" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/subject"/>
+		<FIELD indexable="true" name="resultsubjectclass" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/subject/@classname"/>
+		<FIELD indexable="true" name="resultdate" result="false" stat="false" type="date" value="//*[local-name()='entity']/*[local-name()='result']/relevantdate"/>
+		<FIELD indexable="true" name="resultdateclass" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/relevantdate/@classname"/>
+		<FIELD indexable="true" name="resultstoragedate" result="false" stat="false" type="date" value="//*[local-name()='entity']/*[local-name()='result']/storagedate"/>
+		<FIELD indexable="true" name="resultembargoenddate" result="false" stat="false" type="date" value="//*[local-name()='entity']/*[local-name()='result']/embargoenddate"/>
+		<FIELD indexable="true" name="resultembargoendyear" result="false" stat="false" tokenizable="false" value="dnet:extractYear(//*[local-name()='entity']/*[local-name()='result']/embargoenddate)"/>
+		<FIELD indexable="true" name="resulttypeid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/resulttype/@classid"/>
+		<FIELD indexable="true" name="resulttypename" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/resulttype/@classname"/>
+		<FIELD indexable="true" name="resultlanguageid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/language/@classid"/>
+		<FIELD indexable="true" name="resultlanguagename" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/language/@classname"/>
+		<FIELD indexable="true" name="resultpublisher" result="false" stat="false" xpath="//*[local-name()='entity']/*[local-name()='result']/*[local-name()='publisher']"/>
+		<FIELD indexable="true" name="resultdescription" result="false" stat="false" xpath="//*[local-name()='entity']/*[local-name()='result']/*[local-name()='description']"/>
+		<FIELD indexable="true" name="resultrights" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/children/instance/licence/@classname"/>
+		<FIELD indexable="true" name="resultrightsid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/children/instance/licence/@classid"/>
+		<FIELD indexable="true" name="resultbestlicense" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/bestlicense/@classname"/>
+		<FIELD indexable="true" name="resultbestlicenseid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/bestlicense/@classid"/>
+		<FIELD indexable="true" name="resultidentifier" result="false" stat="false" xpath="//*[local-name()='entity']/*[local-name()='result']/children/instance/webresource/*[local-name()='identifier']"/>
+		<FIELD indexable="true" name="resultdateofacceptance" result="false" stat="false" type="date" value="//*[local-name()='entity']/*[local-name()='result']/dateofacceptance"/>
+		<FIELD indexable="true" name="resultacceptanceyear" result="false" stat="false" tokenizable="false" value="dnet:extractYear(//*[local-name()='entity']/*[local-name()='result']/dateofacceptance)"/>
+		<FIELD indexable="true" name="resulthostingdatasourceid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/children/instance/*[local-name()='hostedby']/@id"/>
+		<FIELD indexable="true" name="resulthostingdatasourcename" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/children/instance/*[local-name()='hostedby']/@name"/>
+		<FIELD indexable="true" name="resultcollectedfromdatasourceid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/*[local-name()='collectedfrom']/@id"/>
+		<FIELD indexable="true" name="resultcollectedfromdatasourcename" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/*[local-name()='collectedfrom']/@name"/>
+		<FIELD indexable="true" name="instancetypename" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/children/instance/*[local-name()='instancetype']/@classname"/>
+		<FIELD indexable="true" name="instancetypenameid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/children/instance/*[local-name()='instancetype']/@classid"/>
+		<FIELD indexable="true" name="resultdupid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*//children/result/@objidentifier"/>
+		<FIELD indexable="true" name="externalrefsite" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*//children/externalreference/sitename"/>
+		<FIELD indexable="true" name="externalreflabel" result="false" stat="false" tokenizable="true" xpath="//*[local-name()='entity']/*//children/externalreference/label"/>
+		<FIELD indexable="true" name="externalrefclass" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*//children/externalreference/qualifier/@classid"/>
+		<FIELD indexable="true" name="externalrefid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*//children/externalreference/refidentifier"/>
+
+
+		<!--  REL FIELDS -->
+		<FIELD indexable="true" name="relpersonid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*//rel/to[@type='person']"/>
+		<FIELD indexable="true" name="relperson" result="false" stat="false" xpath="//*[local-name()='entity']/*//rel[./to/@type='person']/fullname"/>
+		<FIELD indexable="true" name="relprojectid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*//rel/to[@type='project']"/>
+		<FIELD indexable="true" name="relprojectcode" result="false" stat="false" xpath="//*[local-name()='entity']/*//rel[to/@type='project']/code"/>
+		<FIELD indexable="true" name="relprojectname" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*//rel[./to/@type='project']/acronym"/>
+		<FIELD indexable="true" name="relprojecttitle" result="false" stat="false" xpath="//*[local-name()='entity']/*//rel[./to/@type='project']/title"/>
+		<FIELD indexable="true" name="relcontracttypeid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*//rel[./to/@type='project']/contracttype/@classid"/>
+		<FIELD indexable="true" name="relcontracttypename" result="false" stat="false" xpath="//*[local-name()='entity']/*//rel[./to/@type='project']/contracttype/@classname"/>
+		<FIELD indexable="true" name="relorganizationcountryid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*//rel[./to/@type='organization']/country/@classid"/>
+		<FIELD indexable="true" name="relorganizationcountryname" result="false" stat="false" xpath="//*[local-name()='entity']/*//rel[./to/@type='organization']/country/@classname"/>
+		<FIELD indexable="true" name="relorganizationid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*//rel/to[@type='organization']"/>
+		<FIELD indexable="true" name="relorganizationname" result="false" stat="false" xpath="//*[local-name()='entity']/*//rel[./to/@type='organization']/legalname"/>
+		<FIELD indexable="true" name="relorganizationshortname" result="false" stat="false" xpath="//*[local-name()='entity']/*//rel[./to/@type='organization']/legalshortname"/>
+		<FIELD indexable="true" name="relresultid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*//rel/to[@type='result']"/>
+		<FIELD indexable="true" name="relfundinglevel0_id" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//rel/funding/funding_level_0"/>
+		<FIELD indexable="true" name="relfundinglevel1_id" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//rel/funding/funding_level_1"/>
+		<FIELD indexable="true" name="relfundinglevel2_id" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//rel/funding/funding_level_2"/>
+		<FIELD indexable="true" name="relinferred" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//rel/@inferred"/>
+		<FIELD indexable="true" name="reltrust" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//rel/@trust"/>
+		<FIELD indexable="true" name="relinferenceprovenance" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//rel/@inferenceprovenance"/>
+		<FIELD indexable="true" name="relprovenanceactionclassid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//rel/@provenanceaction"/>
+
+		<!-- COMMON FIELDS -->
+		<FIELD indexable="true" name="dateofcollection" result="false" stat="false" type="date" value="//header/*[local-name()='dateOfCollection']"/>
+		<FIELD indexable="true" name="collectedfromdatasourceid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//*[local-name()='collectedfrom']/@id"/>
+		<FIELD indexable="true" name="collectedfromdatasourcename" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//*[local-name()='collectedfrom']/@name"/>
+		<FIELD indexable="true" name="pid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//pid"/>
+		<FIELD indexable="true" name="pidclassid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//pid/@classid"/>
+		<FIELD indexable="true" name="pidclassname" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//pid/@classname"/>
+		<FIELD indexable="true" name="h1" result="false" stat="false" stored="false" tokenizable="false" value="dnet:randomInt(100)"/>
+		<FIELD indexable="true" name="h2" result="false" stat="false" stored="false" tokenizable="false" value="dnet:randomInt(100)"/>
+		<FIELD indexable="true" name="inferred" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//datainfo/inferred"/>
+		<FIELD indexable="true" name="deletedbyinference" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//datainfo/deletedbyinference"/>
+		<FIELD indexable="true" name="trust" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//datainfo/trust"/>
+		<FIELD indexable="true" name="inferenceprovenance" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//datainfo/inferenceprovenance"/>
+		<FIELD indexable="true" name="provenanceactionclassid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']//datainfo/provenanceaction/@classid"/>
+		<FIELD indexable="true" name="contextid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/context/@id"/>
+		<FIELD indexable="true" name="contexttype" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/context/@type"/>
+		<FIELD indexable="true" name="contextname" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/context/@label"/>
+		<FIELD indexable="true" name="categoryid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/context/category/@id"/>
+		<FIELD indexable="true" name="categoryname" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/context/category/@label"/>
+		<FIELD indexable="true" name="conceptid" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/context/category//concept/@id"/>
+		<FIELD indexable="true" name="conceptname" result="false" stat="false" tokenizable="false" xpath="//*[local-name()='entity']/*[local-name()='result']/context/category//concept/@label"/>
+
+		<!-- COUNTER FIELDS -->
+		<FIELD name="counter_dedup" xpath="/record/result/*[local-name()='header']/*[local-name()='counters']/counter_dedup/@value" type="int" indexable="true" header="true" stored="true"/>
+		<FIELD name="counter_authorship" xpath="/record/result/*[local-name()='header']/*[local-name()='counters']/counter_authorship/@value" type="int" indexable="true" header="true" stored="true"/>
+		<FIELD name="counter_participation" xpath="/record/result/*[local-name()='header']/*[local-name()='counters']/counter_participation/@value" type="int" indexable="true" header="true" stored="true"/>
+		<FIELD name="counter_outcome" xpath="/record/result/*[local-name()='header']/*[local-name()='counters']/counter_outcome/@value" type="int" indexable="true" header="true" stored="true"/>
+		<FIELD name="counter_contactperson" xpath="/record/result/*[local-name()='header']/*[local-name()='counters']/counter_contactperson/@value" type="int" indexable="true" header="true" stored="true"/>
+		<FIELD name="counter_provision" xpath="/record/result/*[local-name()='header']/*[local-name()='counters']/counter_provision/@value" type="int" indexable="true" header="true" stored="true"/>
+		<FIELD name="counter_similarity" xpath="/record/result/*[local-name()='header']/*[local-name()='counters']/counter_similarity/@value" type="int" indexable="true" header="true" stored="true"/>
+		<FIELD name="counter_publicationdataset" xpath="/record/result/*[local-name()='header']/*[local-name()='counters']/counter_publicationdataset/@value" type="int" indexable="true" header="true" stored="true"/>
+	</FIELDS>
+</LAYOUT>
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p6.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p6.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p6.xml	(revision 60998)
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::0fa87a85cbbfb14f5cc2d4330c2b1cad</dri:objIdentifier>
+		<dri:recordIdentifier>736876</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:24:05.589+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876</FIELD>
+				<FIELD name="id">corda__h2020::736876</FIELD>
+				<FIELD name="code">736876</FIELD>
+				<FIELD name="acronym">VISORSURF</FIELD>
+				<FIELD name="title">VisorSurf - A Hardware Platform for Software-driven Functional Metasurfaces</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JAN-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-JUN-2020</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-1-2016-2017</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">RIA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="optional2">FET-Open research and innovation actions</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876::Costas_SOUKOULIS</FIELD>
+				<FIELD name="id">corda__h2020::736876::Costas_SOUKOULIS</FIELD>
+				<FIELD name="firstname">Costas</FIELD>
+				<FIELD name="secondnames">SOUKOULIS</FIELD>
+				<FIELD name="email">soukouli@iesl.forth.gr</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::991256096</FIELD>
+				<FIELD name="id">corda__h2020::991256096</FIELD>
+				<FIELD name="legalshortname">AALTO</FIELD>
+				<FIELD name="legalname">AALTO-KORKEAKOULUSAATIO</FIELD>
+				<FIELD name="websiteurl">http://www.aalto.fi</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">FI</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::991256096</FIELD>
+				<FIELD name="participantnumber" type="int">6</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::991256096</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999542903</FIELD>
+				<FIELD name="id">corda__h2020::999542903</FIELD>
+				<FIELD name="legalshortname">SG</FIELD>
+				<FIELD name="legalname">SIGNALGENERIX LTD</FIELD>
+				<FIELD name="websiteurl">http://www.signalgenerix.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">CY</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::999542903</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::999542903</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999835843</FIELD>
+				<FIELD name="id">corda__h2020::999835843</FIELD>
+				<FIELD name="legalshortname">UCY</FIELD>
+				<FIELD name="legalname">UNIVERSITY OF CYPRUS</FIELD>
+				<FIELD name="websiteurl">http://www.ucy.ac.cy</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">CY</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::999835843</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::999835843</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999976202</FIELD>
+				<FIELD name="id">corda__h2020::999976202</FIELD>
+				<FIELD name="legalshortname">UPC</FIELD>
+				<FIELD name="legalname">UNIVERSITAT POLITECNICA DE CATALUNYA</FIELD>
+				<FIELD name="websiteurl">http://www.upc.edu</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">ES</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::999976202</FIELD>
+				<FIELD name="participantnumber" type="int">5</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::999976202</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999984059</FIELD>
+				<FIELD name="id">corda__h2020::999984059</FIELD>
+				<FIELD name="legalshortname">Fraunhofer</FIELD>
+				<FIELD name="legalname">FRAUNHOFER GESELLSCHAFT ZUR FOERDERUNG DER ANGEWANDTEN FORSCHUNG E.V.</FIELD>
+				<FIELD name="websiteurl">http://www.fraunhofer.de</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::999984059</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::999984059</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999995893</FIELD>
+				<FIELD name="id">corda__h2020::999995893</FIELD>
+				<FIELD name="legalshortname">FORTH</FIELD>
+				<FIELD name="legalname">FOUNDATION FOR RESEARCH AND TECHNOLOGY HELLAS</FIELD>
+				<FIELD name="websiteurl">http://www.forth.gr</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">GR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::999995893</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="resporganization">corda__h2020::999995893</FIELD>
+				<FIELD name="contactperson">corda__h2020::736876::Costas_SOUKOULIS</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="name">FET-Open research and innovation actions</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::736876@@corda__h2020::FETOPEN-01-2016-2017</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-01-2016-2017</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::RIA@@corda__h2020::736876</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::RIA</FIELD>
+				<FIELD name="project">corda__h2020::736876</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-JAN-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-JUN-2020</FIELD>
+				<FIELD name="semanticclass">RIA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_wrong_openaireId.json
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_wrong_openaireId.json	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_wrong_openaireId.json	(revision 60998)
@@ -0,0 +1,38 @@
+{
+  "openaireId":"dedup_wf_001::ab42e811",
+  "originalId": "ORIG_ID_TEST",
+  "type": "publication",
+  "title": "TEST TITLE",
+  "authors": [
+	"Michele Artini",
+	"Claudio Atzori",
+	"Alessia Bardi"
+  ],
+  "publisher": "Test publisher",
+  "description": "DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION",
+  "language": "ita",
+  "pids": [
+	{
+	  "type": "doi",
+	  "value": "10.000/xyz-123"
+	},
+	{
+	  "type": "oai",
+	  "value": "oai:1234"
+	}
+  ],
+  "licenseCode": "EMBARGO",
+  "embargoEndDate": "2018-02-02",
+  "resourceType": "0001",
+  "url": "http://test.it/xyz",
+  "collectedFromId": "opendoar____::2659",
+  "hostedById": "opendoar____::2659",
+  "linksToProjects": [
+	"info:eu-repo/grantAgreement/EC/FP7/283595/EU//OpenAIREplus",
+	"info:eu-repo/grantAgreement/EC/FP7/244909/EU/Making Capabilities Work/WorkAble"
+  ],
+  "contexts": [
+	"egi::classification::natsc::math::pure",
+	"egi::classification::natsc::math::stats"
+  ]
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/submit_test_record.sh
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/submit_test_record.sh	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/submit_test_record.sh	(revision 60998)
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+curl -H "Content-Type: application/json" --data @test_record.json "http://localhost:8280/app/mvc/api/publications/feedObject"
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p10.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p10.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p10.xml	(revision 60998)
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::232fe4024d869d852767d07f5e99f2fe</dri:objIdentifier>
+		<dri:recordIdentifier>713140</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:13:57.906+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713140</FIELD>
+				<FIELD name="id">corda__h2020::713140</FIELD>
+				<FIELD name="code">713140</FIELD>
+				<FIELD name="acronym">MESO_BRAIN</FIELD>
+				<FIELD name="title">Custom architecturally defined 3D stem cell derived functional human neural networks for
+					transformative progress in neuroscience and medicine
+				</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-AUG-2019</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-2014-2015-RIA</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">RIA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="optional2">FET-Open research projects</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713140::Edik_RAFAILOV</FIELD>
+				<FIELD name="id">corda__h2020::713140::Edik_RAFAILOV</FIELD>
+				<FIELD name="firstname">Edik</FIELD>
+				<FIELD name="secondnames">RAFAILOV</FIELD>
+				<FIELD name="email">e.rafailov@aston.ac.uk</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::936325772</FIELD>
+				<FIELD name="id">corda__h2020::936325772</FIELD>
+				<FIELD name="legalshortname">Axol</FIELD>
+				<FIELD name="legalname">AXOL BIOSCIENCE LTD</FIELD>
+				<FIELD name="websiteurl">http://www.axolbio.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713140@@corda__h2020::936325772</FIELD>
+				<FIELD name="participantnumber" type="int">5</FIELD>
+				<FIELD name="project">corda__h2020::713140</FIELD>
+				<FIELD name="resporganization">corda__h2020::936325772</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::995206033</FIELD>
+				<FIELD name="id">corda__h2020::995206033</FIELD>
+				<FIELD name="legalshortname">Kite Innovation</FIELD>
+				<FIELD name="legalname">Kite Innovation (Europe) Limited</FIELD>
+				<FIELD name="websiteurl">http://www.kiteinnovation.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713140@@corda__h2020::995206033</FIELD>
+				<FIELD name="participantnumber" type="int">6</FIELD>
+				<FIELD name="project">corda__h2020::713140</FIELD>
+				<FIELD name="resporganization">corda__h2020::995206033</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999588590</FIELD>
+				<FIELD name="id">corda__h2020::999588590</FIELD>
+				<FIELD name="legalshortname">LZH</FIELD>
+				<FIELD name="legalname">LZH LASER ZENTRUM HANNOVER E.V.</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">N/A</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">N/A</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">N/A</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">DE</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713140@@corda__h2020::999588590</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::713140</FIELD>
+				<FIELD name="resporganization">corda__h2020::999588590</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999619436</FIELD>
+				<FIELD name="id">corda__h2020::999619436</FIELD>
+				<FIELD name="legalshortname">ICFO</FIELD>
+				<FIELD name="legalname">FUNDACIO INSTITUT DE CIENCIES FOTONIQUES</FIELD>
+				<FIELD name="websiteurl">http://www.icfo.eu</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">ES</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713140@@corda__h2020::999619436</FIELD>
+				<FIELD name="participantnumber" type="int">3</FIELD>
+				<FIELD name="project">corda__h2020::713140</FIELD>
+				<FIELD name="resporganization">corda__h2020::999619436</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999896953</FIELD>
+				<FIELD name="id">corda__h2020::999896953</FIELD>
+				<FIELD name="legalshortname">ASTON U</FIELD>
+				<FIELD name="legalname">ASTON UNIVERSITY</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Missing</FIELD>
+				<FIELD name="countryclass">GB</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713140@@corda__h2020::999896953</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::713140</FIELD>
+				<FIELD name="resporganization">corda__h2020::999896953</FIELD>
+				<FIELD name="contactperson">corda__h2020::713140::Edik_RAFAILOV</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999986387</FIELD>
+				<FIELD name="id">corda__h2020::999986387</FIELD>
+				<FIELD name="legalshortname">UB</FIELD>
+				<FIELD name="legalname">UNIVERSITAT DE BARCELONA</FIELD>
+				<FIELD name="websiteurl">http://www.ub.edu</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">ES</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713140@@corda__h2020::999986387</FIELD>
+				<FIELD name="participantnumber" type="int">4</FIELD>
+				<FIELD name="project">corda__h2020::713140</FIELD>
+				<FIELD name="resporganization">corda__h2020::999986387</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="name">FET-Open research projects</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::713140@@corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+				<FIELD name="project">corda__h2020::713140</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-RIA-2014-2015</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::RIA@@corda__h2020::713140</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::RIA</FIELD>
+				<FIELD name="project">corda__h2020::713140</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-AUG-2019</FIELD>
+				<FIELD name="semanticclass">RIA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p21.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p21.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p21.xml	(revision 60998)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::005bd6e527663f5bb6063c16c9f72edb</dri:objIdentifier>
+		<dri:recordIdentifier>659064</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T10:48:23.062+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::659064</FIELD>
+				<FIELD name="id">corda__h2020::659064</FIELD>
+				<FIELD name="code">659064</FIELD>
+				<FIELD name="acronym">DISHY</FIELD>
+				<FIELD name="title">Synergistic effects of DISpersant, oil and HYpoxia in a teleost fish: Investigating the impact of oil contamination in hypoxic areas and the use of dispersant as a response technique</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">30-APR-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">29-APR-2017</FIELD>
+				<FIELD name="call_identifier">H2020-MSCA-IF-2014</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">MSCA-IF-EF-ST</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">MSCA-IF-2014-EF</FIELD>
+				<FIELD name="optional2">Marie Skłodowska-Curie Individual Fellowships (IF-EF)</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::659064::paolo_DOMENICI</FIELD>
+				<FIELD name="id">corda__h2020::659064::paolo_DOMENICI</FIELD>
+				<FIELD name="firstname">paolo</FIELD>
+				<FIELD name="secondnames">DOMENICI</FIELD>
+				<FIELD name="email">paolo.domenici@cnr.it</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999979500</FIELD>
+				<FIELD name="id">corda__h2020::999979500</FIELD>
+				<FIELD name="legalshortname">CNR</FIELD>
+				<FIELD name="legalname">CONSIGLIO NAZIONALE DELLE RICERCHE</FIELD>
+				<FIELD name="websiteurl">http://www.cnr.it</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">IT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::659064@@corda__h2020::999979500</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::659064</FIELD>
+				<FIELD name="resporganization">corda__h2020::999979500</FIELD>
+				<FIELD name="contactperson">corda__h2020::659064::paolo_DOMENICI</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::MSCA-IF-2014-EF</FIELD>
+				<FIELD name="id">corda__h2020::MSCA-IF-2014-EF</FIELD>
+				<FIELD name="name">Marie Skłodowska-Curie Individual Fellowships (IF-EF)</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::659064@@corda__h2020::MSCA-IF-2014-EF</FIELD>
+				<FIELD name="project">corda__h2020::659064</FIELD>
+				<FIELD name="subject">corda__h2020::MSCA-IF-2014-EF</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::MSCA-IF-EF-ST@@corda__h2020::659064</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::MSCA-IF-EF-ST</FIELD>
+				<FIELD name="project">corda__h2020::659064</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">30-APR-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">29-APR-2017</FIELD>
+				<FIELD name="semanticclass">MSCA-IF-EF-ST</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p14.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p14.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p14.xml	(revision 60998)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::002f8a425bcd433f4bb17b12b0c1df17</dri:objIdentifier>
+		<dri:recordIdentifier>714692</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:14:49.222+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::714692</FIELD>
+				<FIELD name="id">corda__h2020::714692</FIELD>
+				<FIELD name="code">714692</FIELD>
+				<FIELD name="acronym">UNIGLASS</FIELD>
+				<FIELD name="title">The Enigmatic Universality of Glass</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-AUG-2022</FIELD>
+				<FIELD name="call_identifier">ERC-2016-STG</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">ERC-STG</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">ERC-2016-STG</FIELD>
+				<FIELD name="optional2">ERC Starting Grant</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::714692::Andrew_FEFFERMAN</FIELD>
+				<FIELD name="id">corda__h2020::714692::Andrew_FEFFERMAN</FIELD>
+				<FIELD name="firstname">Andrew</FIELD>
+				<FIELD name="secondnames">FEFFERMAN</FIELD>
+				<FIELD name="email">andrew.fefferman@neel.cnrs.fr</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999997930</FIELD>
+				<FIELD name="id">corda__h2020::999997930</FIELD>
+				<FIELD name="legalshortname">CNRS</FIELD>
+				<FIELD name="legalname">CENTRE NATIONAL DE LA RECHERCHE SCIENTIFIQUE CNRS</FIELD>
+				<FIELD name="websiteurl">http://www.cnrs.fr</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">FR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::714692@@corda__h2020::999997930</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::714692</FIELD>
+				<FIELD name="resporganization">corda__h2020::999997930</FIELD>
+				<FIELD name="contactperson">corda__h2020::714692::Andrew_FEFFERMAN</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::ERC-2016-STG</FIELD>
+				<FIELD name="id">corda__h2020::ERC-2016-STG</FIELD>
+				<FIELD name="name">ERC Starting Grant</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::714692@@corda__h2020::ERC-2016-STG</FIELD>
+				<FIELD name="project">corda__h2020::714692</FIELD>
+				<FIELD name="subject">corda__h2020::ERC-2016-STG</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::ERC::ERC-STG@@corda__h2020::714692</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::ERC::ERC-STG</FIELD>
+				<FIELD name="project">corda__h2020::714692</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2017</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-AUG-2022</FIELD>
+				<FIELD name="semanticclass">ERC-STG</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p25.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p25.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p25.xml	(revision 60998)
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::818cb43dac3aeb307a264705549be581</dri:objIdentifier>
+		<dri:recordIdentifier>665134</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T10:51:52.49+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665134</FIELD>
+				<FIELD name="id">corda__h2020::665134</FIELD>
+				<FIELD name="code">665134</FIELD>
+				<FIELD name="acronym">FET-Event</FIELD>
+				<FIELD name="title">Ensuring the success of the next FET Conference and exhibition at a key period for FET</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-NOV-2016</FIELD>
+				<FIELD name="call_identifier">H2020-FETOPEN-2014-CSA</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">Yes</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">CSA</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">FETOPEN-2-2014</FIELD>
+				<FIELD name="optional2">Coordination and Support Activities</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665134::Olga_KIEFFER</FIELD>
+				<FIELD name="id">corda__h2020::665134::Olga_KIEFFER</FIELD>
+				<FIELD name="firstname">Olga</FIELD>
+				<FIELD name="secondnames">KIEFFER</FIELD>
+				<FIELD name="email">olga.kieffer@sigma-orionis.com</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999593828</FIELD>
+				<FIELD name="id">corda__h2020::999593828</FIELD>
+				<FIELD name="legalshortname">ERCIM</FIELD>
+				<FIELD name="legalname">GEIE ERCIM</FIELD>
+				<FIELD name="websiteurl">http://www.ercim.org</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">FR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665134@@corda__h2020::999593828</FIELD>
+				<FIELD name="participantnumber" type="int">2</FIELD>
+				<FIELD name="project">corda__h2020::665134</FIELD>
+				<FIELD name="resporganization">corda__h2020::999593828</FIELD>
+				<FIELD name="contactperson"/>
+				<FIELD name="semanticclass">participant</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999792096</FIELD>
+				<FIELD name="id">corda__h2020::999792096</FIELD>
+				<FIELD name="legalshortname">SIGMA</FIELD>
+				<FIELD name="legalname">SIGMA ORIONIS SA</FIELD>
+				<FIELD name="websiteurl">http://www.sigma-orionis.com</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">No</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">No</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">Yes</FIELD>
+				<FIELD name="countryclass">FR</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665134@@corda__h2020::999792096</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::665134</FIELD>
+				<FIELD name="resporganization">corda__h2020::999792096</FIELD>
+				<FIELD name="contactperson">corda__h2020::665134::Olga_KIEFFER</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="id">corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="name">Coordination and Support Activities</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::665134@@corda__h2020::FETOPEN-2-2014</FIELD>
+				<FIELD name="project">corda__h2020::665134</FIELD>
+				<FIELD name="subject">corda__h2020::FETOPEN-2-2014</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::CSA@@corda__h2020::665134</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::CSA</FIELD>
+				<FIELD name="project">corda__h2020::665134</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-SEP-2015</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">30-NOV-2016</FIELD>
+				<FIELD name="semanticclass">CSA</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p18.xml
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p18.xml	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/workflows/nodes/contexts/fetprojects/p18.xml	(revision 60998)
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<record
+		xmlns:dri="http://www.driver-repository.eu/namespace/dri"
+>
+	<oai:header xmlns:oai="http://www.openarchives.org/OAI/2.0/">
+		<dri:objIdentifier>corda__h2020::003f2e50d3aaeb4c23eecf98126d33b2</dri:objIdentifier>
+		<dri:recordIdentifier>701859</dri:recordIdentifier>
+		<dri:dateOfCollection>2017-03-01T11:08:24.367+01:00</dri:dateOfCollection>
+		<dri:repositoryId>f70dfee1-c5bb-4872-ba0f-0b029f066747_UmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZXMvUmVwb3NpdG9yeVNlcnZpY2VSZXNvdXJjZVR5cGU=</dri:repositoryId>
+		<dri:datasourceprefix>corda__h2020</dri:datasourceprefix>
+	</oai:header>
+	<metadata>
+		<ROWS>
+			<ROW table="projects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::701859</FIELD>
+				<FIELD name="id">corda__h2020::701859</FIELD>
+				<FIELD name="code">701859</FIELD>
+				<FIELD name="acronym">GSAORI</FIELD>
+				<FIELD name="title">Guide Stars Adaptive Optics for Retinal Imaging</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-APR-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-MAR-2018</FIELD>
+				<FIELD name="call_identifier">H2020-MSCA-IF-2015</FIELD>
+				<FIELD name="oa_mandate_for_publications" type="boolean">true</FIELD>
+				<FIELD name="ec_article29_3" type="boolean">No</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="contracttypeclass">MSCA-IF-EF-ST</FIELD>
+				<FIELD name="contracttypescheme">ec:h2020toas</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="websiteurl"/>
+				<FIELD name="optional1">MSCA-IF-2015-EF</FIELD>
+				<FIELD name="optional2">Marie Skłodowska-Curie Individual Fellowships (IF-EF)</FIELD>
+			</ROW>
+			<ROW table="persons">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::701859::Michael_PIRCHER</FIELD>
+				<FIELD name="id">corda__h2020::701859::Michael_PIRCHER</FIELD>
+				<FIELD name="firstname">Michael</FIELD>
+				<FIELD name="secondnames">PIRCHER</FIELD>
+				<FIELD name="email">michael.pircher@meduniwien.ac.at</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+			</ROW>
+			<ROW table="organizations">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::999989976</FIELD>
+				<FIELD name="id">corda__h2020::999989976</FIELD>
+				<FIELD name="legalshortname">MUW</FIELD>
+				<FIELD name="legalname">MEDIZINISCHE UNIVERSITAET WIEN</FIELD>
+				<FIELD name="websiteurl">http://www.meduniwien.ac.at</FIELD>
+				<FIELD name="ec_legalbody" type="boolean">Yes</FIELD>
+				<FIELD name="ec_legalperson" type="boolean">Yes</FIELD>
+				<FIELD name="ec_nonprofit" type="boolean">Yes</FIELD>
+				<FIELD name="ec_researchorganization" type="boolean">Yes</FIELD>
+				<FIELD name="ec_highereducation" type="boolean">Yes</FIELD>
+				<FIELD name="ec_internationalorganizationeurinterests" type="boolean">No</FIELD>
+				<FIELD name="ec_internationalorganization" type="boolean">No</FIELD>
+				<FIELD name="ec_smevalidated" type="boolean">No</FIELD>
+				<FIELD name="countryclass">AT</FIELD>
+				<FIELD name="countryscheme">dnet:countries</FIELD>
+				<FIELD name="collectedfrom">openaire____::corda_h2020</FIELD>
+				<FIELD name="provenanceActionClass">sysimport:crosswalk:entityregistry</FIELD>
+				<FIELD name="provenanceActionScheme">dnet:provenanceActions</FIELD>
+				<FIELD name="trust" type="float">0.92</FIELD>
+			</ROW>
+			<ROW table="project_organization">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::701859@@corda__h2020::999989976</FIELD>
+				<FIELD name="participantnumber" type="int">1</FIELD>
+				<FIELD name="project">corda__h2020::701859</FIELD>
+				<FIELD name="resporganization">corda__h2020::999989976</FIELD>
+				<FIELD name="contactperson">corda__h2020::701859::Michael_PIRCHER</FIELD>
+				<FIELD name="semanticclass">coordinator</FIELD>
+				<FIELD name="semanticscheme">dnet:project_organization_relations</FIELD>
+			</ROW>
+			<ROW table="subjects">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::MSCA-IF-2015-EF</FIELD>
+				<FIELD name="id">corda__h2020::MSCA-IF-2015-EF</FIELD>
+				<FIELD name="name">Marie Skłodowska-Curie Individual Fellowships (IF-EF)</FIELD>
+				<FIELD name="semanticclass">ec:h2020topics</FIELD>
+				<FIELD name="semanticscheme">dnet:subject_classification_typologies</FIELD>
+			</ROW>
+			<ROW table="project_subject">
+				<FIELD name="_dnet_resource_identifier_">corda__h2020::701859@@corda__h2020::MSCA-IF-2015-EF</FIELD>
+				<FIELD name="project">corda__h2020::701859</FIELD>
+				<FIELD name="subject">corda__h2020::MSCA-IF-2015-EF</FIELD>
+			</ROW>
+			<ROW table="project_fundingpath">
+				<FIELD name="_dnet_resource_identifier_">ec__________::EC::H2020::MSCA-IF-EF-ST@@corda__h2020::701859</FIELD>
+				<FIELD name="funding">ec__________::EC::H2020::MSCA-IF-EF-ST</FIELD>
+				<FIELD name="project">corda__h2020::701859</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="startdate" type="date">01-APR-2016</FIELD>
+				<FIELD format="dd-MMM-yyyy" name="enddate" type="date">31-MAR-2018</FIELD>
+				<FIELD name="semanticclass">MSCA-IF-EF-ST</FIELD>
+				<FIELD name="semanticscheme">ec:h2020toas</FIELD>
+			</ROW>
+		</ROWS>
+	</metadata>
+</record>
+
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_zenodo_software.json
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_zenodo_software.json	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_zenodo_software.json	(revision 60998)
@@ -0,0 +1,29 @@
+{
+  "authors":[
+	"Alouges, Fran\u00e7ois",
+	"Di Fratta, Giovanni"
+  ],
+  "collectedFromId":"opendoar____::2659",
+  "description":"This is a software",
+  "hostedById":"opendoar____::2659",
+  "licenseCode":"OPEN",
+  "originalId":"oai:zenodo.org:12345",
+  "pids":[
+	{
+	  "type":"oai",
+	  "value":"oai:zenodo.org:12345"
+	},
+	{
+	  "type":"doi",
+	  "value":"10.5281/zenodo.12345"
+	}
+  ],
+  "publisher":"Zenodo",
+  "resourceType":"0029",
+  "title":"Parking 3-sphere swimmer. I. Energy minimizing strokes",
+  "type":"software",
+  "url":"https://zenodo.org/record/12345",
+  "contexts": [
+	"mes"
+  ]
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_openaireId.json
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_openaireId.json	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_openaireId.json	(revision 60998)
@@ -0,0 +1,38 @@
+{
+  "openaireId":"dedup_wf_001::ab42e8116f4ae3c4021fb7c643a8167a",
+  "originalId": "ORIG_ID_TEST",
+  "type": "publication",
+  "title": "TEST TITLE",
+  "authors": [
+	"Michele Artini",
+	"Claudio Atzori",
+	"Alessia Bardi"
+  ],
+  "publisher": "Test publisher",
+  "description": "DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION DESCRIPTION",
+  "language": "ita",
+  "pids": [
+	{
+	  "type": "doi",
+	  "value": "10.000/xyz-123"
+	},
+	{
+	  "type": "oai",
+	  "value": "oai:1234"
+	}
+  ],
+  "licenseCode": "EMBARGO",
+  "embargoEndDate": "2018-02-02",
+  "resourceType": "0001",
+  "url": "http://test.it/xyz",
+  "collectedFromId": "opendoar____::2659",
+  "hostedById": "opendoar____::2659",
+  "linksToProjects": [
+	"info:eu-repo/grantAgreement/EC/FP7/283595/EU//OpenAIREplus",
+	"info:eu-repo/grantAgreement/EC/FP7/244909/EU/Making Capabilities Work/WorkAble"
+  ],
+  "contexts": [
+	"egi::classification::natsc::math::pure",
+	"egi::classification::natsc::math::stats"
+  ]
+}
\ No newline at end of file
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_with_greek_chars.json
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_with_greek_chars.json	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12/src/test/resources/eu/dnetlib/msro/openaireplus/api/objects/test_record_with_greek_chars.json	(revision 60998)
@@ -0,0 +1,29 @@
+{
+  "originalId": "ORIG_ID_12345",
+  "title": "TEST TITLE WITH Greek Characters",
+  "authors": [
+	"αβγδεζηθικλμ νξοπρσςτυφχψω",
+	"ΑΒΓΔΕΖΗΘΙΚΛ ΜΝΞΟΠΡΣΤΥΦΧΨΩ"
+  ],
+  "publisher": "âââââââ",
+  "description": "Αν περιμένατε να βρίσκεται εδώ μια σελίδα και δεν υπάρχει, η σελίδα μπορεί να μην εμφανίζεται λόγω καθυστέρησης στην ανανέωση της βάσης δεδομένων, ή μπορεί να έχει διαγραφεί. (Δείτε την γρήγορη διαγραφή σελίδων για πιθανούς λόγους). Μπορείτε να δοκιμάστε την λειτουργία εκκαθάρισης, και να ελέγξετε το αρχείο διαγραφών.",
+  "language": "ell",
+  "pids": [
+	{
+	  "type": "doi",
+	  "value": "10.000/xyz-123-gr"
+	}
+  ],
+  "licenseCode": "EMBARGO",
+  "embargoEndDate": "2018-02-02",
+  "resourceType": "0001",
+  "url": "http://test.it/xyz",
+  "collectedFromId": "opendoar____::2659",
+  "hostedById": "opendoar____::2367",
+  "linksToProjects": [
+	"info:eu-repo/grantAgreement/EC/FP7/123456/EU//Test"
+  ],
+  "contexts": [
+	"egi::classification::natsc::math::stats"
+  ]
+}
Index: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12
===================================================================
--- modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12	(nonexistent)
+++ modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12	(revision 60998)

Property changes on: modules/dnet-openaireplus-workflows/tags/dnet-openaireplus-workflows-7.1.12
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,9 ##
+.classpath
+.settings
+target
+velocity.log
+.project
+.springBeans
+*.iml
+.idea
+.factorypath
