diff --git a/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/IndexPage.java b/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/IndexPage.java
index 3200097..0c24ca4 100644
--- a/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/IndexPage.java
+++ b/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/IndexPage.java
@@ -50,7 +50,7 @@
                     item.add(new Label("system-load-average", o.getString("system-load-average")));
                     PageParameters params = new PageParameters();
                     params.add("node-id", o.getString("node-id"));
-                    item.add(new BookmarkablePageLink("node-details", NodeDetailsPage.class, params));
+                    item.add(new BookmarkablePageLink<Object>("node-details", NodeDetailsPage.class, params));
                 } catch (JSONException e) {
                     throw new RuntimeException(e);
                 }
@@ -76,7 +76,7 @@
                     item.add(new Label("end-time", o.getString("end-time")));
                     PageParameters params = new PageParameters();
                     params.add("job-id", o.getString("node-id"));
-                    item.add(new BookmarkablePageLink("job-details", JobDetailsPage.class, params));
+                    item.add(new BookmarkablePageLink<Object>("job-details", JobDetailsPage.class, params));
                 } catch (JSONException e) {
                     throw new RuntimeException(e);
                 }
diff --git a/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java b/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java
index 153f90c..5f05ce0 100644
--- a/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java
+++ b/hyracks-control-cc/src/main/java/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.java
@@ -14,11 +14,36 @@
  */
 package edu.uci.ics.hyracks.control.cc.adminconsole.pages;
 
+import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.string.StringValue;
+
+import edu.uci.ics.hyracks.api.job.JobId;
+import edu.uci.ics.hyracks.control.cc.ClusterControllerService;
+import edu.uci.ics.hyracks.control.cc.work.GetJobActivityGraphJSONWork;
+import edu.uci.ics.hyracks.control.cc.work.GetJobRunJSONWork;
+import edu.uci.ics.hyracks.control.cc.work.GetJobSpecificationJSONWork;
 
 public class JobDetailsPage extends AbstractPage {
     private static final long serialVersionUID = 1L;
 
     public JobDetailsPage(PageParameters params) throws Exception {
+        ClusterControllerService ccs = getAdminConsoleApplication().getClusterControllerService();
+
+        StringValue jobIdStr = params.get("job-id");
+
+        JobId jobId = JobId.parse(jobIdStr.toString());
+
+        GetJobSpecificationJSONWork gjsw = new GetJobSpecificationJSONWork(ccs, jobId);
+        ccs.getWorkQueue().scheduleAndSync(gjsw);
+        add(new Label("job-specification", gjsw.getJSON().toString()));
+
+        GetJobActivityGraphJSONWork gjagw = new GetJobActivityGraphJSONWork(ccs, jobId);
+        ccs.getWorkQueue().scheduleAndSync(gjagw);
+        add(new Label("job-activity-graph", gjagw.getJSON().toString()));
+
+        GetJobRunJSONWork gjrw = new GetJobRunJSONWork(ccs, jobId);
+        ccs.getWorkQueue().scheduleAndSync(gjrw);
+        add(new Label("job-run", gjrw.getJSON().toString()));
     }
 }
\ No newline at end of file
diff --git a/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.html b/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.html
index b740fed..da6d8a6 100644
--- a/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.html
+++ b/hyracks-control-cc/src/main/resources/edu/uci/ics/hyracks/control/cc/adminconsole/pages/JobDetailsPage.html
@@ -1,12 +1,8 @@
 <wicket:extend xmlns:wicket>
-    <script type="text/javascript">
-        $(document).ready(function() {
-            $.timer(function() {
-                window.location.reload();
-            }, 10000, true);
-            $.get('/rest/jobs/' + $.getURLParam('job-id') + '/job-specification, function(data) {
-                var result = data.result;
-            });
-        });
-    </script>
-</wicket:extend>
+    <div id="job-specification" wicket:id="job-specification" style="display: none;">
+    </div>
+    <div id="job-activity-graph" wicket:id="job-activity-graph" style="display: none;">
+    </div>
+    <div id="job-run" wicket:id="job-run" style="display: none;">
+    </div>
+</wicket:extend>
\ No newline at end of file
