Index: modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/CreateHBaseTableJobNode.java
===================================================================
--- modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/CreateHBaseTableJobNode.java	(nonexistent)
+++ modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/CreateHBaseTableJobNode.java	(revision 44367)
@@ -0,0 +1,49 @@
+package eu.dnetlib.msro.workflows.nodes.hadoop;
+
+import java.util.Set;
+
+import eu.dnetlib.msro.workflows.graph.Arc;
+import eu.dnetlib.msro.workflows.procs.Env;
+import eu.dnetlib.rmi.data.hadoop.HadoopService;
+import eu.dnetlib.rmi.manager.MSROException;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class CreateHBaseTableJobNode extends AbstractHBaseAdminJobNode {
+
+	private static final Log log = LogFactory.getLog(CreateHBaseTableJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	private boolean reuseRegionInfo = false;
+
+	@Override
+	protected String execute(final Env env) throws Exception {
+		final Set<String> columns = getColumns(env);
+
+		log.info("Ensuring table " + getTableName() + " on cluster: '" + getCluster() + "' - columns: " + columns);
+
+		final HadoopService hadoopService = getServiceLocator().getService(HadoopService.class);
+		log.info(String.format("reuse region info: %s", isReuseRegionInfo()));
+		if (isReuseRegionInfo()) {
+			final String jsonConf = env.getAttribute(getTableConfigurationParamName(), String.class);
+			log.debug(String.format("region info: %s", jsonConf));
+			if (StringUtils.isBlank(jsonConf)) {
+				throw new MSROException("cannot find HBase table configuration in workflow env");
+			}
+
+			hadoopService.createConfiguredHbaseTable(getCluster(), getTableName(), jsonConf);
+		} else {
+			hadoopService.createHbaseTable(getCluster(), getTableName(), columns);
+		}
+		return Arc.DEFAULT_ARC;
+	}
+
+	public boolean isReuseRegionInfo() {
+		return reuseRegionInfo;
+	}
+
+	public void setReuseRegionInfo(final boolean reuseRegionInfo) {
+		this.reuseRegionInfo = reuseRegionInfo;
+	}
+
+}
Index: modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/SubmitHadoopJobNode.java
===================================================================
--- modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/SubmitHadoopJobNode.java	(nonexistent)
+++ modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/SubmitHadoopJobNode.java	(revision 44367)
@@ -0,0 +1,136 @@
+package eu.dnetlib.msro.workflows.nodes.hadoop;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import com.google.common.collect.Iterables;
+import eu.dnetlib.enabling.locators.UniqueServiceLocator;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import eu.dnetlib.msro.workflows.procs.Env;
+import eu.dnetlib.msro.workflows.procs.Token;
+import eu.dnetlib.rmi.data.hadoop.HadoopBlackboardActions;
+import eu.dnetlib.rmi.data.hadoop.HadoopJobType;
+import eu.dnetlib.rmi.data.hadoop.HadoopService;
+import eu.dnetlib.rmi.enabling.ISLookUpException;
+import eu.dnetlib.rmi.enabling.ISLookUpService;
+import eu.dnetlib.rmi.manager.MSROException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class SubmitHadoopJobNode extends BlackboardJobNode {
+
+	/**
+	 * logger.
+	 */
+	private static final Log log = LogFactory.getLog(SubmitHadoopJobNode.class);
+
+	@Autowired
+	private UniqueServiceLocator serviceLocator;
+
+	private String hadoopJob;
+
+	private String cluster;
+
+	private boolean simulation = false;
+
+	private Map<String, Object> jobParams = new HashMap<>();
+
+	@Override
+	protected String obtainServiceId(final Env env) {
+		return getServiceLocator().getServiceId(HadoopService.class);
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final Token token) throws Exception {
+		String type = getJobType(getHadoopJob());
+
+		log.info("submitting job " + getHadoopJob() + " type: " + type);
+
+		job.setAction(type);
+		job.getParameters().put("job.name", getHadoopJob());
+		job.getParameters().put("cluster", cluster(token));
+		job.getParameters().put("simulation", String.valueOf(isSimulation()));
+
+		for (Entry<String, Object> e : getJobParams().entrySet()) {
+			try {
+				job.getParameters().put(e.getKey(), e.getValue().toString());
+			} catch (Throwable ex) {
+				throw new MSROException(String.format("missing value for map key '%s'", e.getKey()));
+			}
+		}
+	}
+
+	private String cluster(final Token token) {
+		if (token.getEnv().hasAttribute("cluster")) {
+			String cluster = token.getEnv().getAttribute("cluster", String.class);
+			log.info("found override value in wfEnv for 'cluster' param: " + cluster);
+			return cluster;
+		}
+		return getCluster();
+	}
+
+	/**
+	 * reads the job type for the given job name
+	 *
+	 * @param jobName
+	 * @return
+	 * @throws ISLookUpException
+	 */
+	private String getJobType(final String jobName) throws ISLookUpException {
+		List<String> res =
+				serviceLocator.getService(ISLookUpService.class).quickSearchProfile(
+						"/RESOURCE_PROFILE[.//RESOURCE_TYPE/@value = 'HadoopJobConfigurationDSResourceType']//HADOOP_JOB[./@name='" + jobName
+								+ "']/@type/string()");
+		if (res.isEmpty()) { throw new IllegalStateException("unable to find job type for job: " + jobName); }
+
+		final HadoopJobType type = HadoopJobType.valueOf(Iterables.getOnlyElement(res));
+
+		switch (type) {
+		case mapreduce:
+			return HadoopBlackboardActions.SUBMIT_MAPREDUCE_JOB.toString();
+		case admin:
+			return HadoopBlackboardActions.SUBMIT_ADMIN_JOB.toString();
+		case oozie:
+			return HadoopBlackboardActions.SUBMIT_OOZIE_JOB.toString();
+		default:
+			throw new IllegalStateException("undefined job type: " + type.toString());
+		}
+	}
+
+	public String getHadoopJob() {
+		return hadoopJob;
+	}
+
+	public void setHadoopJob(final String hadoopJob) {
+		this.hadoopJob = hadoopJob;
+	}
+
+	public String getCluster() {
+		return cluster;
+	}
+
+	public void setCluster(final String cluster) {
+		this.cluster = cluster;
+	}
+
+	public boolean isSimulation() {
+		return simulation;
+	}
+
+	public void setSimulation(final boolean simulation) {
+		this.simulation = simulation;
+	}
+
+	public Map<String, Object> getJobParams() {
+		return jobParams;
+	}
+
+	public void setJobParams(final Map<String, Object> jobParams) {
+		this.jobParams = jobParams;
+	}
+
+}
Index: modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/DropHBaseTableJobNode.java
===================================================================
--- modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/DropHBaseTableJobNode.java	(nonexistent)
+++ modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/DropHBaseTableJobNode.java	(revision 44367)
@@ -0,0 +1,34 @@
+package eu.dnetlib.msro.workflows.nodes.hadoop;
+
+import eu.dnetlib.msro.workflows.graph.Arc;
+import eu.dnetlib.msro.workflows.procs.Env;
+import eu.dnetlib.rmi.data.hadoop.HadoopService;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * The Class DropHBaseTableJobNode.
+ */
+public class DropHBaseTableJobNode extends AbstractHBaseAdminJobNode {
+
+	/**
+	 * The Constant log.
+	 */
+	private static final Log log = LogFactory.getLog(DropHBaseTableJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	/*
+	 * (non-Javadoc)
+	 *
+	 * @see eu.dnetlib.msro.workflows.nodes.SimpleJobNode#execute(com.googlecode.sarasvati.NodeToken)
+	 */
+	@Override
+	protected String execute(final Env env) throws Exception {
+
+		log.info("Dropping hbase table '" + getTableName() + "' on cluster: '" + getCluster() + "'");
+
+		getServiceLocator().getService(HadoopService.class).dropHbaseTable(getCluster(), getTableName());
+
+		return Arc.DEFAULT_ARC;
+	}
+
+}
Index: modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/StoreHdfsRecordsJobNode.java
===================================================================
--- modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/StoreHdfsRecordsJobNode.java	(nonexistent)
+++ modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/StoreHdfsRecordsJobNode.java	(revision 44367)
@@ -0,0 +1,84 @@
+package eu.dnetlib.msro.workflows.nodes.hadoop;
+
+import java.util.Map;
+
+import eu.dnetlib.enabling.resultset.client.ResultSetClient;
+import eu.dnetlib.enabling.tools.blackboard.BlackboardJob;
+import eu.dnetlib.msro.workflows.nodes.BlackboardJobNode;
+import eu.dnetlib.msro.workflows.nodes.blackboard.BlackboardWorkflowJobListener;
+import eu.dnetlib.msro.workflows.procs.Env;
+import eu.dnetlib.msro.workflows.procs.Token;
+import eu.dnetlib.msro.workflows.util.ResultsetProgressProvider;
+import eu.dnetlib.msro.workflows.util.WorkflowsConstants;
+import eu.dnetlib.rmi.common.ResultSet;
+import eu.dnetlib.rmi.data.hadoop.HadoopBlackboardActions;
+import eu.dnetlib.rmi.data.hadoop.HadoopService;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class StoreHdfsRecordsJobNode extends BlackboardJobNode {
+
+	private static final Log log = LogFactory.getLog(StoreHdfsRecordsJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	private String inputEprParam;
+	private String hdfsPath;
+	private String cluster;
+
+	@Autowired
+	private ResultSetClient resultSetClient;
+
+	@Override
+	protected String obtainServiceId(final Env env) {
+		return getServiceLocator().getServiceId(HadoopService.class);
+	}
+
+	@Override
+	protected void prepareJob(final BlackboardJob job, final Token token) throws Exception {
+		log.info("Invoking blackboard method");
+
+		final ResultSet<?> rs = token.getEnv().getAttribute(inputEprParam, ResultSet.class);
+		token.setProgressProvider(new ResultsetProgressProvider(rs, resultSetClient));
+
+		job.setAction(HadoopBlackboardActions.IMPORT_EPR_HDFS.toString());
+		job.getParameters().put("input_epr", rs.toJson());
+		job.getParameters().put("path", getHdfsPath());
+		job.getParameters().put("cluster", getCluster());
+	}
+
+	@Override
+	protected BlackboardWorkflowJobListener generateBlackboardListener(final Token token) {
+		return new BlackboardWorkflowJobListener(token) {
+
+			@Override
+			protected void responseToEnv(final Env env, final Map<String, String> responseParams) {
+				env.setAttribute(WorkflowsConstants.MAIN_LOG_PREFIX + getNodeName() + ":count", responseParams.get("count"));
+			}
+		};
+	}
+
+	public String getInputEprParam() {
+		return inputEprParam;
+	}
+
+	public void setInputEprParam(final String inputEprParam) {
+		this.inputEprParam = inputEprParam;
+	}
+
+	public String getCluster() {
+		return cluster;
+	}
+
+	public void setCluster(final String cluster) {
+		this.cluster = cluster;
+	}
+
+	public String getHdfsPath() {
+		return hdfsPath;
+	}
+
+	public void setHdfsPath(final String hdfsPath) {
+		this.hdfsPath = hdfsPath;
+	}
+}
+
Index: modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/ExistHBaseTableJobNode.java
===================================================================
--- modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/ExistHBaseTableJobNode.java	(nonexistent)
+++ modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/ExistHBaseTableJobNode.java	(revision 44367)
@@ -0,0 +1,30 @@
+package eu.dnetlib.msro.workflows.nodes.hadoop;
+
+import eu.dnetlib.msro.workflows.procs.Env;
+import eu.dnetlib.rmi.data.hadoop.HadoopService;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class ExistHBaseTableJobNode extends AbstractHBaseAdminJobNode {
+
+	private static final Log log = LogFactory.getLog(ExistHBaseTableJobNode.class); // NOPMD by marko on 11/24/08 5:02 PM
+
+	@Override
+	protected String execute(final Env env) throws Exception {
+
+		log.info("checking table existance: '" + getTableName() + "' on cluster: '" + getCluster() + "'");
+
+		final HadoopService hadoopService = getServiceLocator().getService(HadoopService.class);
+		boolean exists = hadoopService.existHbaseTable(getCluster(), getTableName());
+
+		log.info("table '" + getTableName() + "' exists: " + exists);
+
+		if (exists) {
+			final String tableDesc = hadoopService.describeHBaseTableConfiguration(getCluster(), getTableName());
+			env.setAttribute(getTableConfigurationParamName(), tableDesc);
+		}
+
+		return exists ? "drop" : "define";
+	}
+
+}
Index: modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/ReuseHdfsRecordsJobNode.java
===================================================================
--- modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/ReuseHdfsRecordsJobNode.java	(nonexistent)
+++ modules/dnet-dli/trunk/src/main/java/eu/dnetlib/msro/workflows/nodes/hadoop/ReuseHdfsRecordsJobNode.java	(revision 44367)
@@ -0,0 +1,23 @@
+package eu.dnetlib.msro.workflows.nodes.hadoop;
+
+import eu.dnetlib.msro.workflows.nodes.SimpleJobNode;
+import eu.dnetlib.msro.workflows.procs.Env;
+
+public class ReuseHdfsRecordsJobNode extends SimpleJobNode {
+
+	private boolean reuseMdRecords;
+
+	@Override
+	protected String execute(final Env env) throws Exception {
+		return String.valueOf(isReuseMdRecords());
+	}
+
+	public boolean isReuseMdRecords() {
+		return reuseMdRecords;
+	}
+
+	public void setReuseMdRecords(final boolean reuseMdRecords) {
+		this.reuseMdRecords = reuseMdRecords;
+	}
+
+}
Index: modules/dnet-dli/trunk/src/main/resources/eu/dnetlib/msro/workflows/nodes/applicationContext-msro-dli.xml
===================================================================
--- modules/dnet-dli/trunk/src/main/resources/eu/dnetlib/msro/workflows/nodes/applicationContext-msro-dli.xml	(revision 44366)
+++ modules/dnet-dli/trunk/src/main/resources/eu/dnetlib/msro/workflows/nodes/applicationContext-msro-dli.xml	(revision 44367)
@@ -15,7 +15,32 @@
 	      class="eu.dnetlib.msro.workflows.nodes.FilterResolvedRecordJobNode"
 	      scope="prototype"/>
 
-	<bean id="wfNodeDefineHBaseSchema" class="eu.dnetlib.msro.workflows.nodes.hadoop.DefineHBaseSchemaJobNode"
+	<bean id="wfNodeDefineHBaseSchema"
+	      class="eu.dnetlib.msro.workflows.nodes.hadoop.DefineHBaseSchemaJobNode"
 	      scope="prototype" />
 
+	<bean id="wfNodeDropHBaseTable"
+	      class="eu.dnetlib.msro.workflows.nodes.hadoop.DropHBaseTableJobNode"
+	      scope="prototype"/>
+
+	<bean id="wfNodeCheckHBaseTable"
+	      class="eu.dnetlib.msro.workflows.nodes.hadoop.ExistHBaseTableJobNode"
+	      scope="prototype"/>
+
+	<bean id="wfNodeCreateHBaseTable"
+	      class="eu.dnetlib.msro.workflows.nodes.hadoop.CreateHBaseTableJobNode"
+	      scope="prototype"/>
+
+	<bean id="wfNodeStoreHdfsRecords"
+	      class="eu.dnetlib.msro.workflows.nodes.hadoop.StoreHdfsRecordsJobNode"
+	      scope="prototype"/>
+
+	<bean id="wfNodeSubmitHadoopJob"
+	      class="eu.dnetlib.msro.workflows.nodes.hadoop.SubmitHadoopJobNode"
+	      scope="prototype"/>
+
+	<bean id="wfNodeReuseHdfsRecords"
+	      class="eu.dnetlib.msro.workflows.nodes.hadoop.ReuseHdfsRecordsJobNode"
+	      scope="prototype"/>
+
 </beans>
Index: modules/dnet-dli/trunk/src/main/resources/eu/dnetlib/bootstrap/profiles/workflows/provision.global.xml
===================================================================
--- modules/dnet-dli/trunk/src/main/resources/eu/dnetlib/bootstrap/profiles/workflows/provision.global.xml	(nonexistent)
+++ modules/dnet-dli/trunk/src/main/resources/eu/dnetlib/bootstrap/profiles/workflows/provision.global.xml	(revision 44367)
@@ -0,0 +1,259 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="b6addffa-bae1-42db-811c-ae20a5c514a6_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 menuSection="InfoSpace Provision">DLI Data Provision</WORKFLOW_NAME>
+		<WORKFLOW_DESCRIPTION>DLI Data Provision</WORKFLOW_DESCRIPTION>
+		<WORKFLOW_INFO/>
+		<WORKFLOW_FAMILY>Data Provision</WORKFLOW_FAMILY>
+		<WORKFLOW_PRIORITY>35</WORKFLOW_PRIORITY>
+		<!-- <ADMIN_EMAIL>alessia.bardi@isti.cnr.it,claudio.atzori@isti.cnr.it</ADMIN_EMAIL> -->
+		<CONFIGURATION status="EXECUTABLE" start="MANUAL">
+
+			<PARAMETERS>
+				<PARAM name="table" description="HBase table to be dropped" required="true" managedBy="user" type="string"></PARAM>
+				<PARAM name="cluster" description="Hadoop cluster logical name" required="true" managedBy="user" type="string" function="validValues(['DM','IIS'])"></PARAM>
+				<PARAM name="reuseRegionInfo" description="Reuse table splits" required="true" managedBy="user" type="boolean">true</PARAM>
+
+				<PARAM name="tableConf" description="HBase table configuration param name" required="true" managedBy="system" type="string">hbase.table.conf</PARAM>
+				<PARAM name="tableCols" description="HBase table schema param name" required="true" managedBy="system" type="string">hbase.table.cols</PARAM>
+
+				<PARAM name="mappingPublication" description="xslt mapping for publications" required="true" type="string" managedBy="user" function="obtainValues('pmf2hbaseMappings', {})"/>
+				<PARAM name="reusePublication" description="reuse publications on HDFS?" required="true" type="boolean" managedBy="user"/>
+				<PARAM name="hdfsPathPublication" description="hdfs path for publications" required="true" type="string" managedBy="user"/>
+
+				<PARAM name="mappingDataset" description="xslt mapping for datasets" required="true" type="string" managedBy="user" function="obtainValues('dmf2hbaseMappings', {})"/>
+				<PARAM name="reuseDataset" description="reuse datasets on HDFS?" required="true" type="boolean" managedBy="user"/>
+				<PARAM name="hdfsPathDataset" description="hdfs path for datasets" required="true" type="string" managedBy="user"/>
+
+				<PARAM name="mappingSimilarities" description="xslt mapping function for similarities" required="true" type="string" managedBy="user" function="obtainValues('dbmf2hbaseMappings', {})"/>
+				<PARAM name="mappingDissimilarities" description="xslt mapping function for dissimilarities" required="true" type="string" managedBy="user" function="obtainValues('dbmf2hbaseMappings', {})"/>
+				<PARAM name="actionSets" description="csv list of action sets to be promoted" required="true" type="string" managedBy="user"/>
+
+				<PARAM name="personDedupConfig" description="dedup person configuration" required="true" type="string" managedBy="user" function="obtainValues('dedupOrchestrations', {})"/>
+				<PARAM name="minDistWorkDir" description="work directory for the minDist algorithm" required="true" type="string" managedBy="user"/>
+
+				<PARAM name="mdFormat" description="metadata format name" required="true" type="string" managedBy="user" function="validValues(['DMF','TMF'])"></PARAM>
+
+				<PARAM name="oaiDBName" description="OAI store db name" required="true" type="string" managedBy="user"/>
+
+			</PARAMETERS>
+			<WORKFLOW>
+
+				<NODE name="resetHbase" type="LaunchWorkflowTemplate" isStart="true">
+					<DESCRIPTION>Reset HBase table</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="wfTemplateId" value="75345aba-c069-43f4-90aa-e13688d9845e_V29ya2Zsb3dUZW1wbGF0ZURTUmVzb3VyY2VzL1dvcmtmbG93VGVtcGxhdGVEU1Jlc291cmNlVHlwZQ=="/>
+						<PARAM name="wfTemplateParams">
+							<MAP>
+								<ENTRY key="table" ref="table"/>
+								<ENTRY key="cluster" ref="cluster"/>
+								<ENTRY key="reuseRegionInfo" ref="reuseRegionInfo"/>
+							</MAP>
+						</PARAM>
+					</PARAMETERS>
+
+					<ARCS>
+						<ARC to="success"/>
+					</ARCS>
+				</NODE>
+
+				<!--
+				<NODE name="db2hbase" type="LaunchWorkflowTemplate">
+					<DESCRIPTION>load db to hbase</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="wfTemplateId" value="3ffe4cd8-73f1-4566-85fc-26ac32e8af56_V29ya2Zsb3dUZW1wbGF0ZURTUmVzb3VyY2VzL1dvcmtmbG93VGVtcGxhdGVEU1Jlc291cmNlVHlwZQ=="/>
+						<PARAM name="wfTemplateParams">
+							<MAP>
+								<ENTRY key="db" ref="db"/>
+								<ENTRY key="hbaseTable" ref="table"/>
+								<ENTRY key="cluster" ref="cluster"/>
+
+								<ENTRY key="sqlQueryDS" value="/eu/dnetlib/msro/workflows/hbase/queryDatasources.sql"/>
+								<ENTRY key="mappingDS" ref="mappingDS"/>
+
+								<ENTRY key="sqlQueryDS_ORG" value="/eu/dnetlib/msro/workflows/hbase/queryDatasourceOrganization.sql"/>
+								<ENTRY key="mappingDS_ORG" ref="mappingDS_ORG"/>
+
+								<ENTRY key="sqlQueryORG" value="/eu/dnetlib/msro/workflows/hbase/queryOrganizations.sql"/>
+								<ENTRY key="mappingORG" ref="mappingORG"/>
+
+								<ENTRY key="sqlQueryPERSON" value="/eu/dnetlib/msro/workflows/hbase/queryPersons.sql"/>
+								<ENTRY key="mappingPERSON" ref="mappingPERSON"/>
+
+								<ENTRY key="sqlQueryPRJ_ORG" value="/eu/dnetlib/msro/workflows/hbase/queryProjectOrganization.sql"/>
+								<ENTRY key="mappingPRJ_ORG" ref="mappingPRJ_ORG"/>
+
+								<ENTRY key="sqlQueryPRJ_PERSON" value="/eu/dnetlib/msro/workflows/hbase/queryProjectContactperson.sql"/>
+								<ENTRY key="mappingPRJ_PERSON" ref="mappingPRJ_PERSON"/>
+
+								<ENTRY key="sqlQueryPRJ" value="/eu/dnetlib/msro/workflows/hbase/queryProjects.sql"/>
+								<ENTRY key="mappingPRJ" ref="mappingPRJ"/>
+
+								<ENTRY key="sqlQueryCLAIM_RELS" value="/eu/dnetlib/msro/workflows/hbase/queryClaimsRel.sql"/>
+								<ENTRY key="mappingCLAIM_RELS" ref="mappingCLAIM_RELS"/>
+							</MAP>
+						</PARAM>
+					</PARAMETERS>
+
+					<ARCS>
+						<ARC to="pmf2hbase"/>
+					</ARCS>
+
+				</NODE>
+
+				<NODE name="pmf2hbase" type="LaunchWorkflowTemplate">
+					<DESCRIPTION>OAF Publications to HBase</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="wfTemplateId" value="5b05a65a-4eeb-4862-bc55-b35c7ec3baf0_V29ya2Zsb3dUZW1wbGF0ZURTUmVzb3VyY2VzL1dvcmtmbG93VGVtcGxhdGVEU1Jlc291cmNlVHlwZQ=="/>
+						<PARAM name="wfTemplateParams">
+							<MAP>
+								<ENTRY key="hbaseTable" ref="table"/>
+								<ENTRY key="cluster" ref="cluster"/>
+								<ENTRY key="mdFormat" value="PMF"/>
+								<ENTRY key="mapping" ref="mappingPublication"/>
+								<ENTRY key="reuseMdRecords" ref="reusePublication"/>
+								<ENTRY key="hdfsPath" ref="hdfsPathPublication"/>
+							</MAP>
+						</PARAM>
+					</PARAMETERS>
+					<ARCS>
+						<ARC to="dmf2hbase"/>
+					</ARCS>
+				</NODE>
+
+
+				<NODE name="dmf2hbase" type="LaunchWorkflowTemplate">
+					<DESCRIPTION>ODF Datasets to HBase</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="wfTemplateId" value="5b05a65a-4eeb-4862-bc55-b35c7ec3baf0_V29ya2Zsb3dUZW1wbGF0ZURTUmVzb3VyY2VzL1dvcmtmbG93VGVtcGxhdGVEU1Jlc291cmNlVHlwZQ=="/>
+						<PARAM name="wfTemplateParams">
+							<MAP>
+								<ENTRY key="hbaseTable" ref="table"/>
+								<ENTRY key="cluster" ref="cluster"/>
+								<ENTRY key="mdFormat" value="DMF"/>
+								<ENTRY key="mapping" ref="mappingDataset"/>
+								<ENTRY key="reuseMdRecords" ref="reuseDataset"/>
+								<ENTRY key="hdfsPath" ref="hdfsPathDataset"/>
+							</MAP>
+						</PARAM>
+					</PARAMETERS>
+					<ARCS>
+						<ARC to="actions2hbase"/>
+					</ARCS>
+				</NODE>
+
+				<NODE name="actions2hbase" type="LaunchWorkflowTemplate">
+					<DESCRIPTION>actions to hbase</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="wfTemplateId" value="72a974b4-a13f-48e2-a18c-98e0effb4579_V29ya2Zsb3dUZW1wbGF0ZURTUmVzb3VyY2VzL1dvcmtmbG93VGVtcGxhdGVEU1Jlc291cmNlVHlwZQ=="/>
+						<PARAM name="wfTemplateParams">
+							<MAP>
+								<ENTRY key="hbaseTable" ref="table"/>
+								<ENTRY key="cluster" ref="cluster"/>
+								<ENTRY key="mappingSimilarities" ref="mappingSimilarities"/>
+								<ENTRY key="mappingDissimilarities" ref="mappingDissimilarities"/>
+								<ENTRY key="set" ref="actionSets"/>
+							</MAP>
+						</PARAM>
+					</PARAMETERS>
+					<ARCS>
+						<ARC to="dedupPerson"/>
+					</ARCS>
+				</NODE>
+
+				<NODE name="dedupPerson" type="LaunchWorkflowTemplate">
+					<DESCRIPTION>dedup person</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="wfTemplateId" value="5e3e809c-c967-4c68-95f4-9cb8a503bbc3_V29ya2Zsb3dUZW1wbGF0ZURTUmVzb3VyY2VzL1dvcmtmbG93VGVtcGxhdGVEU1Jlc291cmNlVHlwZQ=="/>
+						<PARAM name="wfTemplateParams">
+							<MAP>
+								<ENTRY key="hbaseTable" ref="table"/>
+								<ENTRY key="cluster" ref="cluster"/>
+								<ENTRY key="dedupConfig" ref="personDedupConfig"/>
+							</MAP>
+						</PARAM>
+					</PARAMETERS>
+
+					<ARCS>
+						<ARC to="closeMesh"/>
+					</ARCS>
+				</NODE>
+
+
+				<NODE name="closeMesh" type="LaunchWorkflowTemplate">
+					<DESCRIPTION>close mesh</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="wfTemplateId" value="9522876c-5885-4dd2-9d06-92e9a3eaa9f1_V29ya2Zsb3dUZW1wbGF0ZURTUmVzb3VyY2VzL1dvcmtmbG93VGVtcGxhdGVEU1Jlc291cmNlVHlwZQ=="/>
+						<PARAM name="wfTemplateParams">
+							<MAP>
+								<ENTRY key="hbaseTable" ref="table"/>
+								<ENTRY key="cluster" ref="cluster"/>
+								<ENTRY key="workDir" ref="minDistWorkDir"/>
+								<ENTRY key="entitySequence" value="organization,result"/>
+							</MAP>
+						</PARAM>
+					</PARAMETERS>
+
+					<ARCS>
+						<ARC to="applyBlacklist"/>
+					</ARCS>
+				</NODE>
+
+
+				<NODE name="applyBlacklist">
+					<DESCRIPTION>Resolve the identifiers in the blacklist</DESCRIPTION>
+					<PARAMETERS/>
+					<ARCS>
+						<ARC to="updateProvision"/>
+					</ARCS>
+				</NODE>
+
+				<NODE name="updateProvision" type="LaunchWorkflowTemplate">
+					<DESCRIPTION>update provision</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="wfTemplateId" value="a4434d62-d4cd-4c73-a107-bc7c62e6f815_V29ya2Zsb3dUZW1wbGF0ZURTUmVzb3VyY2VzL1dvcmtmbG93VGVtcGxhdGVEU1Jlc291cmNlVHlwZQ=="/>
+						<PARAM name="wfTemplateParams">
+							<MAP>
+								<ENTRY key="mdFormat" ref="mdFormat"/>
+								<ENTRY key="hbaseTable" ref="table"/>
+								<ENTRY key="cluster" ref="cluster"/>
+								<ENTRY key="oaiDBName" ref="oaiDBName"/>
+							</MAP>
+						</PARAM>
+					</PARAMETERS>
+					<ARCS>
+						<ARC to="preparePrepublic"/>
+					</ARCS>
+				</NODE>
+
+				<NODE name="preparePrepublic">
+					<DESCRIPTION>prepare pre-public infospace</DESCRIPTION>
+					<PARAMETERS/>
+
+					<ARCS>
+						<ARC to="success"/>
+					</ARCS>
+				</NODE>
+
+-->
+
+			</WORKFLOW>
+
+		</CONFIGURATION>
+
+		<NOTIFICATIONS/>
+
+		<SCHEDULING enabled="false">
+			<CRON>29 5 22 ? * *</CRON>
+			<MININTERVAL>10080</MININTERVAL>
+		</SCHEDULING>
+
+		<STATUS/>
+	</BODY>
+</RESOURCE_PROFILE>
Index: modules/dnet-dli/trunk/src/main/resources/eu/dnetlib/bootstrap/profiles/workflows.hbase/metadata2hbase.xml
===================================================================
--- modules/dnet-dli/trunk/src/main/resources/eu/dnetlib/bootstrap/profiles/workflows.hbase/metadata2hbase.xml	(nonexistent)
+++ modules/dnet-dli/trunk/src/main/resources/eu/dnetlib/bootstrap/profiles/workflows.hbase/metadata2hbase.xml	(revision 44367)
@@ -0,0 +1,95 @@
+<RESOURCE_PROFILE>
+	<HEADER>
+		<RESOURCE_IDENTIFIER value="5b05a65a-4eeb-4862-bc55-b35c7ec3baf0_V29ya2Zsb3dUZW1wbGF0ZURTUmVzb3VyY2VzL1dvcmtmbG93VGVtcGxhdGVEU1Jlc291cmNlVHlwZQ=="/>
+		<RESOURCE_TYPE value="WorkflowTemplateDSResourceType"/>
+		<RESOURCE_KIND value="WorkflowTemplateDSResources"/>
+		<RESOURCE_URI value=""/>
+		<DATE_OF_CREATION value="2016-06-20T07:52:08+00:00"/>
+	</HEADER>
+	<BODY>
+		<CONFIGURATION>
+			<PARAMETERS>
+				<PARAM name="reuseMdRecords" description="reuse metadata records?" required="true" type="boolean"/>
+				<PARAM name="mdFormat" description="metadata format name" required="true" type="string"/>
+				<PARAM name="mapping" description="xslt mapping function" required="true" type="string"/>
+				<PARAM name="hdfsPath" description="HDFS path" required="true" type="string"/>
+				<PARAM name="hbaseTable" description="HBase table name" required="true" type="string"/>
+				<PARAM name="cluster" description="Hadoop cluster name" required="true" type="string"/>
+			</PARAMETERS>
+			<WORKFLOW>
+
+				<NODE name="reuseHdfsRecords" type="ReuseHdfsRecords" isStart="true">
+					<DESCRIPTION>reuse mdstore records</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="reuseMdRecords" ref="reuseMdRecords"/>
+					</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 name="format" ref="mdFormat"/>
+						<PARAM name="layout" value="store"/>
+						<PARAM name="interpretation" value="cleaned"/>
+						<PARAM name="outputEprParam" value="records_epr"/>
+					</PARAMETERS>
+					<ARCS>
+						<ARC to="storeHdfsRecords"/>
+					</ARCS>
+				</NODE>
+				<NODE name="storeHdfsRecords" type="StoreHdfsRecords">
+					<DESCRIPTION>Store records to HDFS</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="inputEprParam" value="records_epr"/>
+						<PARAM name="hdfsPath" ref="hdfsPath"/>
+						<PARAM name="cluster" ref="cluster"/>
+					</PARAMETERS>
+					<ARCS>
+						<ARC to="doneExport"/>
+					</ARCS>
+				</NODE>
+				<NODE name="doneExport">
+					<DESCRIPTION/>
+					<PARAMETERS/>
+					<ARCS>
+						<ARC to="loadMapping"/>
+					</ARCS>
+				</NODE>
+
+				<NODE name="loadMapping" type="LoadMappingProfile">
+					<DESCRIPTION>Load mapping profile</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="profileId" ref="mapping"/>
+						<PARAM name="loadedMappingParam" value="hbase.import.xslt"/>
+					</PARAMETERS>
+					<ARCS>
+						<ARC to="mapreduce"/>
+					</ARCS>
+				</NODE>
+
+				<NODE name="mapreduce" type="SubmitHadoopJob">
+					<DESCRIPTION>Run M/R import Job</DESCRIPTION>
+					<PARAMETERS>
+						<PARAM name="cluster" ref="cluster"/>
+						<PARAM name="hadoopJob" value="mdStoreHdfsImportJob"/>
+						<PARAM name="simulation" value="false"/>
+						<PARAM name="jobParams">
+							<MAP>
+								<ENTRY key="mapred.input.dir" ref="hdfsPath"/>
+								<ENTRY key="hbase.mapred.outputtable" ref="hbaseTable"/>
+								<ENTRY key="hbase.import.xslt" env="hbase.import.xslt"/>
+							</MAP>
+						</PARAM>
+					</PARAMETERS>
+					<ARCS>
+						<ARC to="success"/>
+					</ARCS>
+				</NODE>
+
+			</WORKFLOW>
+		</CONFIGURATION>
+	</BODY>
+</RESOURCE_PROFILE>
