diff --git a/modules/Bio/EnsEMBL/Hive/DBSQL/AnalysisJobAdaptor.pm b/modules/Bio/EnsEMBL/Hive/DBSQL/AnalysisJobAdaptor.pm
index d38ef28773aa98f652ad5f963550eadae3993233..0f4f34556aa4b42af66d9867fa3fd3ec128e1a3e 100644
--- a/modules/Bio/EnsEMBL/Hive/DBSQL/AnalysisJobAdaptor.pm
+++ b/modules/Bio/EnsEMBL/Hive/DBSQL/AnalysisJobAdaptor.pm
@@ -221,6 +221,25 @@ sub fetch_all_failed_jobs {
 }
 
 
+sub fetch_by_url_query
+{
+  my $self = shift;
+  my $query = shift;
+
+  return undef unless($query);
+  #print("Bio::EnsEMBL::DBSQL::AnalysisAdaptor::fetch_by_url_query : $query\n");
+
+  if((my $p=index($query, "=")) != -1) {
+    my $type = substr($query,0, $p);
+    my $value = substr($query,$p+1,length($query));
+
+    if($type eq 'dbID') {
+      return $self->fetch_by_dbID($value);
+    }
+  }
+  return undef;
+}
+
 #
 # INTERNAL METHODS
 #
diff --git a/modules/Bio/EnsEMBL/Hive/Process.pm b/modules/Bio/EnsEMBL/Hive/Process.pm
index 0e344781376037538f59badde4acbffa8dd63111..b78e6ba1f9aea34a502e07698662d0cd6266f781 100755
--- a/modules/Bio/EnsEMBL/Hive/Process.pm
+++ b/modules/Bio/EnsEMBL/Hive/Process.pm
@@ -160,7 +160,7 @@ sub autoflow_inputjob {
 =cut
 
 sub dataflow_output_id {
-  my ($self, $output_id, $branch_code) = @_;
+  my ($self, $output_id, $branch_code, $blocked) = @_;
 
   return unless($output_id);
   return unless($self->analysis);
@@ -176,12 +176,13 @@ sub dataflow_output_id {
   $job->input_id($output_id);
   $job->analysis_id($self->analysis->dbID);
   $job->branch_code($branch_code);
-  $job->dbID($self->input_job->dbID);  
+  $job->dbID($self->input_job->dbID);
+  $job->status('BLOCKED') if(defined($blocked) and ($blocked eq 'BLOCKED'));
   
   #if process uses branch_code 1 explicitly, turn off automatic dataflow
   $self->autoflow_inputjob(0) if($branch_code==1);
 
-  $self->queen->flow_output_job($job);  
+  return $self->queen->flow_output_job($job);  
 }
 
 sub debug {
diff --git a/modules/Bio/EnsEMBL/Hive/Queen.pm b/modules/Bio/EnsEMBL/Hive/Queen.pm
index 57e34fff47edf5abb7feb98fd2fa71dcf60a00e4..c235201c668fd134ee622e2a175627aba7465a56 100755
--- a/modules/Bio/EnsEMBL/Hive/Queen.pm
+++ b/modules/Bio/EnsEMBL/Hive/Queen.pm
@@ -293,15 +293,23 @@ sub flow_output_job {
   my $job = shift;
   
   return unless($job);
+  my $create_blocked_job = 0;
+  $create_blocked_job = 1 if($job->status eq 'BLOCKED');
   
+  my @output_jobs;
   my $rules = $self->db->get_DataflowRuleAdaptor->fetch_from_analysis_job($job);
   foreach my $rule (@{$rules}) {
-    Bio::EnsEMBL::Hive::DBSQL::AnalysisJobAdaptor->CreateNewJob (
+    my $job_id = Bio::EnsEMBL::Hive::DBSQL::AnalysisJobAdaptor->CreateNewJob (
         -input_id       => $job->input_id,
         -analysis       => $rule->to_analysis,
         -input_job_id   => $job->dbID,
+        -block          => $create_blocked_job
     );
+    my $job_url =  $rule->to_analysis->adaptor->db->dbc->url;
+    $job_url .= "/analysis_job?dbID=" . $job_id;
+    push @output_jobs, $job_url;
   }
+  return \@output_jobs;
 }
 
 
diff --git a/modules/Bio/EnsEMBL/Hive/URLFactory.pm b/modules/Bio/EnsEMBL/Hive/URLFactory.pm
index 9502b33e33d21fa322de5f723191f39d7aa73497..c3ddf736fde8f0ac3e4167ae7864f3e15769f1b0 100755
--- a/modules/Bio/EnsEMBL/Hive/URLFactory.pm
+++ b/modules/Bio/EnsEMBL/Hive/URLFactory.pm
@@ -102,6 +102,11 @@ sub fetch
       my $adaptor = $dba->get_AnalysisAdaptor;
       return $adaptor->fetch_by_url_query($query);
     }
+    if($table eq 'analysis_job') {
+      #my $adaptor = new Bio::EnsEMBL::DBSQL::AnalysisAdaptor($dba);
+      my $adaptor = $dba->get_AnalysisJobAdaptor;
+      return $adaptor->fetch_by_url_query($query);
+    }
   }
 
   return undef;