diff --git a/azkaban-common/src/main/java/azkaban/flow/CommonJobProperties.java b/azkaban-common/src/main/java/azkaban/flow/CommonJobProperties.java
index 9c5e972..7c0b774 100644
--- a/azkaban-common/src/main/java/azkaban/flow/CommonJobProperties.java
+++ b/azkaban-common/src/main/java/azkaban/flow/CommonJobProperties.java
@@ -66,6 +66,10 @@ public class CommonJobProperties {
/*
* The following are the common props that will be added to the job by azkaban
*/
+ /**
+ * Url to access azkaban on a given host
+ */
+ public static final String AZKABAN_URL = "azkaban.url";
/**
* The attempt number of the executing job.
diff --git a/azkaban-execserver/src/main/java/azkaban/execapp/JobRunner.java b/azkaban-execserver/src/main/java/azkaban/execapp/JobRunner.java
index c2ed6d5..2243fb8 100644
--- a/azkaban-execserver/src/main/java/azkaban/execapp/JobRunner.java
+++ b/azkaban-execserver/src/main/java/azkaban/execapp/JobRunner.java
@@ -178,7 +178,7 @@ public class JobRunner extends EventHandler implements Runnable {
/**
* Returns a list of jobs that this JobRunner will wait upon to finish before
* starting. It is only relevant if pipeline is turned on.
- *
+ *
* @return
*/
public Set<String> getPipelineWatchedJobs() {
@@ -257,7 +257,7 @@ public class JobRunner extends EventHandler implements Runnable {
/**
* Used to handle non-ready and special status's (i.e. KILLED). Returns true
* if they handled anything.
- *
+ *
* @return
*/
private boolean handleNonReadyStatus() {
@@ -558,6 +558,7 @@ public class JobRunner extends EventHandler implements Runnable {
String flowName = node.getParentFlow().getFlowId();
String projectName = node.getParentFlow().getProjectName();
+ props.put(CommonJobProperties.AZKABAN_URL, baseURL);
props.put(CommonJobProperties.EXECUTION_LINK,
String.format("%s/executor?execid=%d", baseURL, executionId));
props.put(CommonJobProperties.JOBEXEC_LINK, String.format(