Index: modules/dnet-hadoop-service/trunk/src/main/java/eu/dnetlib/data/hadoop/oozie/OozieJobMonitor.java
===================================================================
--- modules/dnet-hadoop-service/trunk/src/main/java/eu/dnetlib/data/hadoop/oozie/OozieJobMonitor.java	(revision 47221)
+++ modules/dnet-hadoop-service/trunk/src/main/java/eu/dnetlib/data/hadoop/oozie/OozieJobMonitor.java	(revision 47222)
@@ -1,12 +1,18 @@
 package eu.dnetlib.data.hadoop.oozie;
 
-import java.util.Date;
-import java.util.HashMap;
+import java.io.IOException;
+import java.util.*;
 
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+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.apache.oozie.client.OozieClient;
 import org.apache.oozie.client.OozieClientException;
+import org.apache.oozie.client.WorkflowAction;
+import org.apache.oozie.client.WorkflowJob;
 import org.apache.oozie.client.WorkflowJob.Status;
 
 import eu.dnetlib.data.hadoop.action.JobCompletion;
@@ -21,12 +27,23 @@
 
 	private final String jobId;
 
-	public OozieJobMonitor(OozieClient oozieClient, String jobId, JobCompletion callback) {
+	public static final String ACTION_TYPE_SUBWORKFLOW = "sub-workflow";
+
+	private Set<String> workflowActions = Sets.newHashSet();
+
+	public OozieJobMonitor(final OozieClient oozieClient, String jobId, final JobCompletion callback) {
 		super(callback);
 		this.oozieClient = oozieClient;
 		this.jobId = jobId;
 	}
 
+	public OozieJobMonitor(final OozieClient oozieClient, String jobId, final JobCompletion callback, final Set<String> workflowActions) {
+		super(callback);
+		this.oozieClient = oozieClient;
+		this.jobId = jobId;
+		this.workflowActions = workflowActions;
+	}
+
 	@Override
 	public void run() {
 		try {
@@ -46,7 +63,15 @@
 			log.debug("job " + jobId + " finihsed with status: " + status);
 			if (status == Status.SUCCEEDED) {
 				// TODO set some content to return to the blackboard msg.
-				getCallback().done(new HashMap<String, String>());
+
+				final Properties report = getReport(getOozieClient(), getHadoopId(), workflowActions);
+				if (report != null) {
+					final Map<String, String> map = Maps.newHashMap();
+					report.forEach((k, v) -> map.put(k.toString(), v.toString()));
+					getCallback().done(map);
+				} else {
+					getCallback().done(new HashMap<>());
+				}
             } else {
 				// TODO retrieve some failure information from the oozie client.
 				String msg = "hadoop job: " + getHadoopId() + " failed with status: " + getStatus() + ", oozie log:\n "
@@ -58,6 +83,29 @@
 		}
 	}
 
+	/**
+	 * Provides report entries when found for given oozie job identifier. Returns null when report not found.
+	 */
+	private static Properties getReport(final OozieClient oozieClient, final String oozieJobId, final Set<String> workflowActions) throws OozieClientException, IOException {
+		WorkflowJob mainIisWfJob = oozieClient.getJobInfo(oozieJobId);
+		for (WorkflowAction currentAction : mainIisWfJob.getActions()) {
+			if (workflowActions.contains(currentAction.getName())) {
+				if (ACTION_TYPE_SUBWORKFLOW.equals(currentAction.getType())) {
+					Properties subworkflowProperties = getReport(oozieClient, currentAction.getExternalId(), workflowActions);
+					if (subworkflowProperties != null) {
+						return subworkflowProperties;
+					}
+				} else if (StringUtils.isNotBlank(currentAction.getData())) {
+					Properties properties = new Properties();
+					properties.load(IOUtils.toInputStream(currentAction.getData()));
+					return properties;
+				}
+			}
+		}
+
+		return null;
+	}
+
 	@Override
 	public String getHadoopId() {
 		return jobId;
Index: modules/dnet-hadoop-service/trunk/src/main/java/eu/dnetlib/data/hadoop/action/SubmitOozieJobAction.java
===================================================================
--- modules/dnet-hadoop-service/trunk/src/main/java/eu/dnetlib/data/hadoop/action/SubmitOozieJobAction.java	(revision 47221)
+++ modules/dnet-hadoop-service/trunk/src/main/java/eu/dnetlib/data/hadoop/action/SubmitOozieJobAction.java	(revision 47222)
@@ -3,7 +3,11 @@
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Properties;
+import java.util.Set;
 
+import com.google.common.base.Splitter;
+import com.google.common.collect.Sets;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
@@ -21,6 +25,8 @@
 
 	private static final Log log = LogFactory.getLog(SubmitOozieJobAction.class); // NOPMD by marko on 11/24/08 5:02 PM
 
+	public static final String OOZIE_REPORT_ACTIONS = "oozie.report.actions.csv";
+
 	@Override
 	public void submit(final JobCompletion callback, final BlackboardJob bbJob, final String jobName, final JobProfile jobProfile)
 			throws HadoopServiceException {
@@ -40,7 +46,7 @@
 			final String jobId = newJobId(clusterName, internalId);
 
 			jobRegistry.registerJob(HadoopJob.newInstance(jobId, clusterName, jobProfile,
-					new OozieJobMonitor(oozieClient, internalId, callback)));
+					new OozieJobMonitor(oozieClient, internalId, callback, getWorkflowActions(bbJob))));
 
 		} catch (final OozieClientException e) {
 			throw new HadoopServiceException("error executing hadoop job: " + jobName, e);
@@ -47,6 +53,19 @@
 		}
 	}
 
+	/**
+	 * Extracts from the blackboard job params the oozie action names as csv and returns them as a set.
+	 * @param bbJob
+	 * @return
+	 */
+	private Set<String> getWorkflowActions(final BlackboardJob bbJob) {
+		final String actions = bbJob.getParameters().get(OOZIE_REPORT_ACTIONS);
+		if (StringUtils.isNotBlank(actions)) {
+			return Sets.newHashSet(Splitter.on(",").split(actions));
+		}
+		return Sets.newHashSet();
+	}
+
 	private Properties prepareJob(final Configuration configuration, final String jobName, final JobProfile jobProfile, final Map<String, String> parameters) {
 
 		log.info("creating job: " + jobName);
