syncope-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ilgro...@apache.org
Subject [4/4] syncope git commit: [SYNCOPE-744][SYNCOPE-750] Basic work done for jobs and executions widget
Date Wed, 24 Feb 2016 15:50:09 GMT
[SYNCOPE-744][SYNCOPE-750] Basic work done for jobs and executions widget


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/15582e4f
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/15582e4f
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/15582e4f

Branch: refs/heads/master
Commit: 15582e4ff81c10f911d9f09753cc2cedcd26f73a
Parents: 924a951
Author: Francesco Chicchiriccò <ilgrosso@apache.org>
Authored: Wed Feb 24 16:49:55 2016 +0100
Committer: Francesco Chicchiriccò <ilgrosso@apache.org>
Committed: Wed Feb 24 16:49:55 2016 +0100

----------------------------------------------------------------------
 .../cli/commands/report/ReportListJobs.java     |  10 +-
 .../commands/report/ReportResultManager.java    |  17 +-
 .../report/ReportSyncopeOperations.java         |   7 +-
 .../client/cli/commands/task/TaskCommand.java   |  10 +-
 .../client/cli/commands/task/TaskDetails.java   |  11 +-
 .../client/cli/commands/task/TaskExecute.java   |   2 +-
 .../client/cli/commands/task/TaskListJobs.java  |  58 +++
 .../cli/commands/task/TaskListRunningJobs.java  |  58 ---
 .../commands/task/TaskListScheduledJobs.java    |  50 ---
 .../cli/commands/task/TaskResultManager.java    |  50 +--
 .../commands/task/TaskSyncopeOperations.java    |  10 +-
 .../syncope/client/console/pages/Dashboard.java |   3 +
 .../console/panels/AbstractLogsPanel.java       |  17 +-
 .../panels/AbstractSearchResultPanel.java       |   1 +
 .../client/console/panels/ListViewPanel.java    |   5 +-
 .../client/console/panels/ParametersPanel.java  |  16 +-
 .../client/console/widgets/JobWidget.java       | 299 ++++++++++++++
 .../META-INF/resources/css/syncopeConsole.css   |   4 +
 .../syncope/client/console/pages/Dashboard.html |   7 +-
 .../syncope/client/console/pages/Layouts.html   |   3 +-
 .../syncope/client/console/pages/Logs.html      |   1 -
 .../client/console/pages/Notifications.html     |   3 +-
 .../client/console/pages/Parameters.html        |   1 -
 .../syncope/client/console/pages/Policies.html  |   1 -
 .../syncope/client/console/pages/Realms.html    |   4 +-
 .../syncope/client/console/pages/Reports.html   |   1 -
 .../syncope/client/console/pages/Roles.html     |   1 -
 .../client/console/pages/SecurityQuestions.html |   1 -
 .../syncope/client/console/pages/Types.html     |   1 -
 .../syncope/client/console/pages/Workflow.html  |   1 -
 .../client/console/panels/AccountPolicy.html    |  14 +-
 .../console/panels/AnyAjaxTabbedPanel.html      |  30 +-
 .../panels/AnyTypeClassDetailsPanel.html        |   1 -
 .../client/console/panels/AnyTypeMenuItem.html  |  14 +-
 .../client/console/panels/ConsoleLogPanel.html  |   3 +-
 .../client/console/panels/CoreLogPanel.html     |   3 +-
 .../panels/ParametersCreateModalPanel.html      |   1 -
 .../panels/ParametersEditModalPanel.html        |   1 -
 .../client/console/panels/PasswordPolicy.html   |  14 +-
 .../console/panels/PlainSchemaDetails.html      |   2 +-
 .../syncope/client/console/panels/Realm.html    |   3 +-
 .../client/console/panels/RealmDetails.html     |  32 +-
 .../console/panels/RealmSidebarPanel.html       |   1 -
 .../panels/RelationshipTypeModalPanel.html      |   1 -
 .../console/panels/ResourceDetailsPanel.html    |  78 ++--
 .../client/console/panels/SchemasPanel.html     |  18 +-
 .../panels/SecurityQuestionsModalPanel.html     |   1 -
 .../client/console/panels/TogglePanel.html      | 153 ++++----
 .../tasks/SchedTaskSearchResultPanel.html       |   1 -
 .../console/tasks/StartAtTogglePanel.html       |  71 ++--
 .../client/console/topology/Topology.html       |   1 -
 .../console/topology/TopologyNodePanel.html     |   1 -
 .../paging/AjaxDataNavigationToolbar.html       |   1 -
 .../markup/html/bootstrap/tabs/Accordion.html   |   3 +-
 .../html/form/preview/BinaryCertPreviewer.html  |  10 +-
 .../client/console/widgets/JobWidget.html       |  37 ++
 .../client/console/widgets/JobWidget.properties |  22 ++
 .../console/widgets/JobWidget_it.properties     |  22 ++
 .../console/widgets/JobWidget_pt_BR.properties  |  22 ++
 .../ProvisionWizardBuilder$ConnObjectLink.html  |  25 +-
 .../ProvisionWizardBuilder$Mapping.html         |  11 +-
 .../ProvisionWizardBuilder$ObjectType.html      |  27 +-
 .../org/apache/syncope/common/lib/to/JobTO.java |  95 +++++
 .../syncope/common/lib/to/TaskExecTO.java       |  12 +
 .../syncope/common/lib/types/JobStatusType.java |  30 --
 .../common/rest/api/service/JAXRSService.java   |   2 +
 .../rest/api/service/NotificationService.java   |  20 +
 .../common/rest/api/service/ReportService.java  |  28 +-
 .../common/rest/api/service/TaskService.java    |  27 +-
 .../syncope/core/logic/AbstractJobLogic.java    | 233 +++++------
 .../syncope/core/logic/NotificationLogic.java   |  21 +-
 .../apache/syncope/core/logic/ReportLogic.java  |  58 ++-
 .../core/logic/SystemLoadReporterJob.java       |   9 +-
 .../apache/syncope/core/logic/TaskLogic.java    |  51 ++-
 .../core/logic/init/JobInstanceLoaderImpl.java  | 335 ----------------
 .../syncope/core/logic/init/JobManagerImpl.java | 387 +++++++++++++++++++
 .../logic/notification/NotificationJob.java     |   9 +-
 .../syncope/core/logic/report/ReportJob.java    |  33 +-
 .../core/persistence/api/dao/ReportExecDAO.java |   2 +
 .../core/persistence/api/dao/TaskExecDAO.java   |   2 +
 .../persistence/jpa/dao/JPAReportExecDAO.java   |  10 +
 .../persistence/jpa/dao/JPATaskExecDAO.java     |  13 +-
 .../provisioning/api/job/JobInstanceLoader.java |  43 ---
 .../core/provisioning/api/job/JobManager.java   |  50 +++
 .../core/provisioning/api/job/JobNamer.java     |  10 +-
 .../java/data/ReportDataBinderImpl.java         |   2 +-
 .../java/data/TaskDataBinderImpl.java           |   7 +-
 .../java/job/AbstractInterruptableJob.java      |  73 ++++
 .../core/provisioning/java/job/TaskJob.java     |  72 +---
 .../cxf/service/NotificationServiceImpl.java    |  12 +
 .../rest/cxf/service/ReportServiceImpl.java     |  11 +-
 .../core/rest/cxf/service/TaskServiceImpl.java  |  11 +-
 .../syncope/fit/core/SchedTaskITCase.java       |  40 +-
 93 files changed, 1770 insertions(+), 1215 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportListJobs.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportListJobs.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportListJobs.java
index ff743dc..b15ad7d 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportListJobs.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportListJobs.java
@@ -18,9 +18,10 @@
  */
 package org.apache.syncope.client.cli.commands.report;
 
+import java.util.List;
 import org.apache.syncope.client.cli.Input;
 import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.types.JobStatusType;
+import org.apache.syncope.common.lib.to.JobTO;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -39,8 +40,11 @@ public class ReportListJobs extends AbstractReportCommand {
     public void list() {
         if (input.parameterNumber() == 0) {
             try {
-                for (final JobStatusType jobStatusType : JobStatusType.values()) {
-                    reportResultManager.printReportExecution(reportSyncopeOperations.listJobs(jobStatusType.name()));
+                List<JobTO> jobs = reportSyncopeOperations.listJobs();
+                if (jobs.isEmpty()) {
+                    reportResultManager.genericMessage("There are NO jobs available");
+                } else {
+                    reportResultManager.printJobs(jobs);
                 }
             } catch (final SyncopeClientException ex) {
                 LOG.error("Error listing report", ex);

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportResultManager.java
index 223d533..ef8991d 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportResultManager.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportResultManager.java
@@ -23,6 +23,7 @@ import java.util.Map;
 import org.apache.syncope.client.cli.commands.CommonsResultManager;
 import org.apache.syncope.common.lib.report.AbstractReportletConf;
 import org.apache.syncope.common.lib.report.UserReportletConf;
+import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.ReportExecTO;
 import org.apache.syncope.common.lib.to.ReportTO;
 
@@ -47,7 +48,7 @@ public class ReportResultManager extends CommonsResultManager {
             printReportletConf(reportletConf);
         }
         System.out.println("    EXECUTIONS:");
-        printReportExecution(reportTO.getExecutions());
+        printReportExecutions(reportTO.getExecutions());
         System.out.println("");
     }
 
@@ -63,7 +64,7 @@ public class ReportResultManager extends CommonsResultManager {
         }
     }
 
-    public void printReportExecution(final List<ReportExecTO> reportExecTOs) {
+    public void printReportExecutions(final List<ReportExecTO> reportExecTOs) {
         for (final ReportExecTO reportExecTO : reportExecTOs) {
             System.out.println("       REPORT EXEC ID: " + reportExecTO.getKey());
             System.out.println("       status: " + reportExecTO.getStatus());
@@ -73,7 +74,17 @@ public class ReportResultManager extends CommonsResultManager {
             System.out.println("       report id: " + reportExecTO.getReport());
         }
     }
-    
+
+    public void printJobs(final List<JobTO> jobTOs) {
+        for (final JobTO jobTO : jobTOs) {
+            System.out.println("       REPORT ID/NAME: " + jobTO.getReferenceKey() + "/" + jobTO.getReferenceName());
+            System.out.println("       status: " + jobTO.getStatus());
+            System.out.println("       start date: " + jobTO.getStart());
+            System.out.println("       running: " + jobTO.isRunning());
+            System.out.println("       scheduled: " + jobTO.isScheduled());
+        }
+    }
+
     public void printDetails(final Map<String, String> details) {
         printDetails("reports details", details);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportSyncopeOperations.java
index a924651..8a8814a 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/report/ReportSyncopeOperations.java
@@ -25,9 +25,8 @@ import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 import org.apache.syncope.client.cli.SyncopeServices;
 import org.apache.syncope.client.cli.util.XMLUtils;
-import org.apache.syncope.common.lib.to.ReportExecTO;
+import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.ReportTO;
-import org.apache.syncope.common.lib.types.JobStatusType;
 import org.apache.syncope.common.lib.types.ReportExecExportFormat;
 import org.apache.syncope.common.rest.api.beans.ExecuteQuery;
 import org.apache.syncope.common.rest.api.service.ReportService;
@@ -41,8 +40,8 @@ public class ReportSyncopeOperations {
         return reportService.read(Long.valueOf(reportKey));
     }
 
-    public List<ReportExecTO> listJobs(final String jobStatusType) {
-        return reportService.listJobs(JobStatusType.valueOf(jobStatusType));
+    public List<JobTO> listJobs() {
+        return reportService.listJobs(10);
     }
 
     public List<ReportTO> list() {

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskCommand.java
index b14492c..1277ead 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskCommand.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskCommand.java
@@ -43,11 +43,8 @@ public class TaskCommand extends AbstractCommand {
             case LIST:
                 new TaskList(input).list();
                 break;
-            case LIST_RUNNING_JOBS:
-                new TaskListRunningJobs(input).list();
-                break;
-            case LIST_SCHEDULED_JOBS:
-                new TaskListScheduledJobs(input).list();
+            case LIST_JOBS:
+                new TaskListJobs(input).list();
                 break;
             case READ:
                 new TaskRead(input).read();
@@ -82,8 +79,7 @@ public class TaskCommand extends AbstractCommand {
         HELP("--help"),
         DETAILS("--details"),
         LIST("--list"),
-        LIST_RUNNING_JOBS("--list-running-jobs"),
-        LIST_SCHEDULED_JOBS("--list-scheduled-jobs"),
+        LIST_JOBS("--list-jobs"),
         READ("--read"),
         DELETE("--delete"),
         DELETE_PROP_TASK("--delete-all-prop"),

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDetails.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDetails.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDetails.java
index 4409c35..45fd01c 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDetails.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskDetails.java
@@ -25,12 +25,12 @@ import org.apache.syncope.client.cli.Input;
 import org.apache.syncope.client.cli.util.CommandUtils;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.AbstractTaskTO;
+import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.PropagationTaskTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
 import org.apache.syncope.common.lib.to.SchedTaskTO;
 import org.apache.syncope.common.lib.to.SyncTaskTO;
-import org.apache.syncope.common.lib.to.TaskExecTO;
 import org.apache.syncope.common.lib.types.SyncMode;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.slf4j.Logger;
@@ -58,8 +58,7 @@ public class TaskDetails extends AbstractTaskCommand {
                 final List<AbstractTaskTO> pushTaskTOs = taskSyncopeOperations.list(TaskType.PUSH.name());
                 final List<AbstractTaskTO> scheduledTaskTOs = taskSyncopeOperations.list(TaskType.SCHEDULED.name());
                 final List<AbstractTaskTO> syncTaskTOs = taskSyncopeOperations.list(TaskType.SYNCHRONIZATION.name());
-                final List<TaskExecTO> runningTOs = taskSyncopeOperations.listRunningJobs();
-                final List<TaskExecTO> scheduledTOs = taskSyncopeOperations.listScheduledJobs();
+                final List<JobTO> jobTOs = taskSyncopeOperations.listJobs();
                 final int notificationTaskSize = notificationTaskTOs.size();
                 int notificationNotExecuted = 0;
                 final int propagationTaskSize = propagationTaskTOs.size();
@@ -71,8 +70,7 @@ public class TaskDetails extends AbstractTaskCommand {
                 final int syncTaskSize = syncTaskTOs.size();
                 int syncNotExecuted = 0;
                 int syncFull = 0;
-                final int runningJobsSize = runningTOs.size();
-                final int scheduledJobsSize = scheduledTOs.size();
+                final int jobsSize = jobTOs.size();
 
                 for (final AbstractTaskTO notificationTaskTO : notificationTaskTOs) {
                     if (!((NotificationTaskTO) notificationTaskTO).isExecuted()) {
@@ -127,8 +125,7 @@ public class TaskDetails extends AbstractTaskCommand {
                 details.put("synchronization tasks", String.valueOf(syncTaskSize));
                 details.put("synchronization tasks not executed", String.valueOf(syncNotExecuted));
                 details.put("synchronization tasks with full reconciliation", String.valueOf(syncFull));
-                details.put("running jobs", String.valueOf(runningJobsSize));
-                details.put("scheduled jobs", String.valueOf(scheduledJobsSize));
+                details.put("jobs", String.valueOf(jobsSize));
                 taskResultManager.printDetails(details);
             } catch (final SyncopeClientException ex) {
                 LOG.error("Error reading details about task", ex);

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecute.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecute.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecute.java
index 7c97de4..b139832 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecute.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskExecute.java
@@ -49,7 +49,7 @@ public class TaskExecute extends AbstractTaskCommand {
                 } else {
                     taskResultManager.notBooleanDeletedError("dry run", input.secondParameter());
                 }
-                taskResultManager.printTaskExecTO(Arrays.asList(
+                taskResultManager.printTaskExecTOs(Arrays.asList(
                         taskSyncopeOperations.execute(input.firstParameter(), dryRun)));
             } catch (final WebServiceException | SyncopeClientException ex) {
                 LOG.error("Error executing task", ex);

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListJobs.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListJobs.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListJobs.java
new file mode 100644
index 0000000..f21a3ff
--- /dev/null
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListJobs.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.cli.commands.task;
+
+import java.util.List;
+import org.apache.syncope.client.cli.Input;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.JobTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TaskListJobs extends AbstractTaskCommand {
+
+    private static final Logger LOG = LoggerFactory.getLogger(TaskListJobs.class);
+
+    private static final String READ_HELP_MESSAGE = "task --list-jobs";
+
+    private final Input input;
+
+    public TaskListJobs(final Input input) {
+        this.input = input;
+    }
+
+    public void list() {
+        if (input.parameterNumber() == 0) {
+            try {
+                List<JobTO> jobs = taskSyncopeOperations.listJobs();
+                if (jobs.isEmpty()) {
+                    taskResultManager.genericMessage("There are NO jobs available");
+                } else {
+                    taskResultManager.printJobs(jobs);
+                }
+            } catch (final SyncopeClientException ex) {
+                LOG.error("Error listing jobs", ex);
+                taskResultManager.genericError(ex.getMessage());
+            }
+        } else {
+            taskResultManager.unnecessaryParameters(input.listParameters(), READ_HELP_MESSAGE);
+        }
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListRunningJobs.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListRunningJobs.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListRunningJobs.java
deleted file mode 100644
index 9b3e980..0000000
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListRunningJobs.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.client.cli.commands.task;
-
-import java.util.List;
-import org.apache.syncope.client.cli.Input;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.to.TaskExecTO;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class TaskListRunningJobs extends AbstractTaskCommand {
-
-    private static final Logger LOG = LoggerFactory.getLogger(TaskListRunningJobs.class);
-
-    private static final String READ_HELP_MESSAGE = "task --list-running-jobs";
-
-    private final Input input;
-
-    public TaskListRunningJobs(final Input input) {
-        this.input = input;
-    }
-
-    public void list() {
-        if (input.parameterNumber() == 0) {
-            try {
-                final List<TaskExecTO> taskExecTOs = taskSyncopeOperations.listRunningJobs();
-                if (taskExecTOs.isEmpty()) {
-                    taskResultManager.genericMessage("There are NO running jobs available");
-                } else {
-                    taskResultManager.printTaskExecTO(taskExecTOs);
-                }
-            } catch (final SyncopeClientException ex) {
-                LOG.error("Error listing jobs", ex);
-                taskResultManager.genericError(ex.getMessage());
-            }
-        } else {
-            taskResultManager.unnecessaryParameters(input.listParameters(), READ_HELP_MESSAGE);
-        }
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListScheduledJobs.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListScheduledJobs.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListScheduledJobs.java
deleted file mode 100644
index 1710d79..0000000
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskListScheduledJobs.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.client.cli.commands.task;
-
-import org.apache.syncope.client.cli.Input;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class TaskListScheduledJobs extends AbstractTaskCommand {
-
-    private static final Logger LOG = LoggerFactory.getLogger(TaskListScheduledJobs.class);
-
-    private static final String READ_HELP_MESSAGE = "task --list-scheduled-jobs";
-
-    private final Input input;
-
-    public TaskListScheduledJobs(final Input input) {
-        this.input = input;
-    }
-
-    public void list() {
-        if (input.parameterNumber() == 0) {
-            try {
-                taskResultManager.printTaskExecTO(taskSyncopeOperations.listScheduledJobs());
-            } catch (final SyncopeClientException ex) {
-                LOG.error("Error listing task", ex);
-                taskResultManager.genericError(ex.getMessage());
-            }
-        } else {
-            taskResultManager.unnecessaryParameters(input.listParameters(), READ_HELP_MESSAGE);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskResultManager.java
index 6de6ea9..40cc323 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskResultManager.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskResultManager.java
@@ -24,6 +24,7 @@ import java.util.Map;
 import org.apache.syncope.client.cli.commands.CommonsResultManager;
 import org.apache.syncope.common.lib.to.AbstractTaskTO;
 import org.apache.syncope.common.lib.to.AnyTO;
+import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.NotificationTaskTO;
 import org.apache.syncope.common.lib.to.PropagationTaskTO;
 import org.apache.syncope.common.lib.to.PushTaskTO;
@@ -91,13 +92,12 @@ public class TaskResultManager extends CommonsResultManager {
         System.out.println("     subjetc: " + notificationTaskTO.getSubject());
         System.out.println("     text body: " + notificationTaskTO.getTextBody());
         System.out.println("     html body: " + notificationTaskTO.getHtmlBody());
-        System.out.println("     latest execution status: "
-                + notificationTaskTO.getLatestExecStatus());
+        System.out.println("     latest execution status: " + notificationTaskTO.getLatestExecStatus());
         System.out.println("     start date: " + notificationTaskTO.getStart());
         System.out.println("     end date: " + notificationTaskTO.getEnd());
         System.out.println("     recipients: " + notificationTaskTO.getRecipients());
         System.out.println("     trace level: " + notificationTaskTO.getTraceLevel());
-        printTaskExecTO(notificationTaskTO.getExecutions());
+        printTaskExecTOs(notificationTaskTO.getExecutions());
         System.out.println("");
     }
 
@@ -106,18 +106,15 @@ public class TaskResultManager extends CommonsResultManager {
         System.out.println("     resource: " + propagationTaskTO.getResource());
         System.out.println("     any key: " + propagationTaskTO.getAnyKey());
         System.out.println("     any type kind: " + propagationTaskTO.getAnyTypeKind());
-        System.out.println("     connector object key: "
-                + propagationTaskTO.getConnObjectKey());
-        System.out.println("     old connector object key: "
-                + propagationTaskTO.getOldConnObjectKey());
-        System.out.println("     latest execution status: "
-                + propagationTaskTO.getLatestExecStatus());
+        System.out.println("     connector object key: " + propagationTaskTO.getConnObjectKey());
+        System.out.println("     old connector object key: " + propagationTaskTO.getOldConnObjectKey());
+        System.out.println("     latest execution status: " + propagationTaskTO.getLatestExecStatus());
         System.out.println("     class name: " + propagationTaskTO.getObjectClassName());
         System.out.println("     attributes: " + propagationTaskTO.getAttributes());
         System.out.println("     start date: " + propagationTaskTO.getStart());
         System.out.println("     end date: " + propagationTaskTO.getEnd());
         System.out.println("     operation: " + propagationTaskTO.getOperation());
-        printTaskExecTO(propagationTaskTO.getExecutions());
+        printTaskExecTOs(propagationTaskTO.getExecutions());
         System.out.println("");
     }
 
@@ -135,14 +132,13 @@ public class TaskResultManager extends CommonsResultManager {
         System.out.println("     end date: " + pushTaskTO.getEnd());
         System.out.println("     last execution: " + pushTaskTO.getLastExec());
         System.out.println("     next execution: " + pushTaskTO.getNextExec());
-        System.out.println("     latest execution status: "
-                + pushTaskTO.getLatestExecStatus());
+        System.out.println("     latest execution status: " + pushTaskTO.getLatestExecStatus());
         System.out.println("     filters: " + pushTaskTO.getFilters());
         System.out.println("     delegate class: " + pushTaskTO.getJobDelegateClassName());
         System.out.println("     action class: " + pushTaskTO.getActionsClassNames());
         System.out.println("     matching rule: " + pushTaskTO.getMatchingRule());
         System.out.println("     not matching rule: " + pushTaskTO.getUnmatchingRule());
-        printTaskExecTO(pushTaskTO.getExecutions());
+        printTaskExecTOs(pushTaskTO.getExecutions());
         System.out.println("");
     }
 
@@ -155,11 +151,9 @@ public class TaskResultManager extends CommonsResultManager {
         System.out.println("     end date: " + schedTaskTO.getEnd());
         System.out.println("     last execution: " + schedTaskTO.getLastExec());
         System.out.println("     next execution: " + schedTaskTO.getNextExec());
-        System.out.println("     latest execution status: "
-                + schedTaskTO.getLatestExecStatus());
-        System.out.println("     job delegate class: "
-                + schedTaskTO.getJobDelegateClassName());
-        printTaskExecTO(schedTaskTO.getExecutions());
+        System.out.println("     latest execution status: " + schedTaskTO.getLatestExecStatus());
+        System.out.println("     job delegate class: " + schedTaskTO.getJobDelegateClassName());
+        printTaskExecTOs(schedTaskTO.getExecutions());
         System.out.println("");
     }
 
@@ -181,14 +175,12 @@ public class TaskResultManager extends CommonsResultManager {
         System.out.println("     end date: " + syncTaskTO.getEnd());
         System.out.println("     next execution: " + syncTaskTO.getNextExec());
         System.out.println("     last execution: " + syncTaskTO.getLastExec());
-        System.out.println("     latest execution status: "
-                + syncTaskTO.getLatestExecStatus());
-        System.out.println("     job delegate class: "
-                + syncTaskTO.getJobDelegateClassName());
+        System.out.println("     latest execution status: " + syncTaskTO.getLatestExecStatus());
+        System.out.println("     job delegate class: " + syncTaskTO.getJobDelegateClassName());
         System.out.println("     action class name: " + syncTaskTO.getActionsClassNames());
         System.out.println("     matching rule: " + syncTaskTO.getMatchingRule());
         System.out.println("     unmatching rule: " + syncTaskTO.getUnmatchingRule());
-        printTaskExecTO(syncTaskTO.getExecutions());
+        printTaskExecTOs(syncTaskTO.getExecutions());
         System.out.println("");
     }
 
@@ -203,7 +195,7 @@ public class TaskResultManager extends CommonsResultManager {
         }
     }
 
-    public void printTaskExecTO(final List<TaskExecTO> taskExecTOs) {
+    public void printTaskExecTOs(final List<TaskExecTO> taskExecTOs) {
         for (final TaskExecTO taskExecTO : taskExecTOs) {
             System.out.println("     EXECUTIONS: ");
             System.out.println("     - task execution key: " + taskExecTO.getKey());
@@ -219,6 +211,16 @@ public class TaskResultManager extends CommonsResultManager {
         }
     }
 
+    public void printJobs(final List<JobTO> jobTOs) {
+        for (final JobTO jobTO : jobTOs) {
+            System.out.println("       TASK ID/NAME: " + jobTO.getReferenceKey() + "/" + jobTO.getReferenceName());
+            System.out.println("       status: " + jobTO.getStatus());
+            System.out.println("       start date: " + jobTO.getStart());
+            System.out.println("       running: " + jobTO.isRunning());
+            System.out.println("       scheduled: " + jobTO.isScheduled());
+        }
+    }
+
     public void printDetails(final Map<String, String> details) {
         printDetails("tasks details", details);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java
index 61ba771..14b4cd1 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/task/TaskSyncopeOperations.java
@@ -21,8 +21,8 @@ package org.apache.syncope.client.cli.commands.task;
 import java.util.List;
 import org.apache.syncope.client.cli.SyncopeServices;
 import org.apache.syncope.common.lib.to.AbstractTaskTO;
+import org.apache.syncope.common.lib.to.JobTO;
 import org.apache.syncope.common.lib.to.TaskExecTO;
-import org.apache.syncope.common.lib.types.JobStatusType;
 import org.apache.syncope.common.lib.types.TaskType;
 import org.apache.syncope.common.rest.api.beans.ExecuteQuery;
 import org.apache.syncope.common.rest.api.beans.TaskQuery;
@@ -32,12 +32,8 @@ public class TaskSyncopeOperations {
 
     private final TaskService taskService = SyncopeServices.get(TaskService.class);
 
-    public List<TaskExecTO> listScheduledJobs() {
-        return taskService.listJobs(JobStatusType.SCHEDULED);
-    }
-
-    public List<TaskExecTO> listRunningJobs() {
-        return taskService.listJobs(JobStatusType.RUNNING);
+    public List<JobTO> listJobs() {
+        return taskService.listJobs(10);
     }
 
     public <T extends AbstractTaskTO> T read(final String taskKey) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/java/org/apache/syncope/client/console/pages/Dashboard.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Dashboard.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Dashboard.java
index 396ec2f..28dfbb8 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Dashboard.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Dashboard.java
@@ -22,6 +22,7 @@ import org.apache.syncope.client.console.SyncopeConsoleSession;
 import org.apache.syncope.client.console.widgets.NumberWidget;
 import org.apache.syncope.client.console.widgets.AnyByRealmWidget;
 import org.apache.syncope.client.console.widgets.CompletenessWidget;
+import org.apache.syncope.client.console.widgets.JobWidget;
 import org.apache.syncope.client.console.widgets.LoadWidget;
 import org.apache.syncope.client.console.widgets.UsersByStatusWidget;
 import org.apache.syncope.common.lib.info.NumbersInfo;
@@ -79,5 +80,7 @@ public class Dashboard extends BasePage {
                 numbers.getAny2ByRealm()));
 
         body.add(new LoadWidget("load", SyncopeConsoleSession.get().getService(SyncopeService.class).system()));
+
+        body.add(new JobWidget("job", getPageReference()));
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
index 60f6f2a..227d7d4 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractLogsPanel.java
@@ -48,14 +48,14 @@ public abstract class AbstractLogsPanel<T extends AbstractBaseBean> extends Pane
             final String id,
             final PageReference pageRef,
             final List<LoggerTO> loggerTOs) {
+        
         super(id);
 
-        final WebMarkupContainer container = new WebMarkupContainer("loggerContainer");
+        WebMarkupContainer container = new WebMarkupContainer("loggerContainer");
         container.setOutputMarkupId(true);
         add(container);
 
-        final ListViewPanel.Builder<LoggerTO> builder = new ListViewPanel.Builder<LoggerTO>(
-                LoggerTO.class, pageRef) {
+        ListViewPanel.Builder<LoggerTO> builder = new ListViewPanel.Builder<LoggerTO>(LoggerTO.class, pageRef) {
 
             private static final long serialVersionUID = 6957788356709885298L;
 
@@ -91,11 +91,12 @@ public abstract class AbstractLogsPanel<T extends AbstractBaseBean> extends Pane
             }
         };
 
-        builder.setItems(loggerTOs);
-        builder.setModel(new ListModel<>(loggerTOs));
-        builder.includes("key", "level");
-        builder.withChecks(ListViewPanel.CheckAvailability.NONE);
-        builder.setReuseItem(false);
+        builder.setItems(loggerTOs).
+                setModel(new ListModel<>(loggerTOs)).
+                includes("key", "level").
+                withChecks(ListViewPanel.CheckAvailability.NONE).
+                setReuseItem(false);
+
         container.add(builder.build("logger"));
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
index d21271e..ccc019b 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/AbstractSearchResultPanel.java
@@ -157,6 +157,7 @@ public abstract class AbstractSearchResultPanel<
         // Rows-per-page selector
         // ---------------------------
         final Form<?> paginatorForm = new Form<>("paginator");
+        paginatorForm.setOutputMarkupPlaceholderTag(true);
         container.add(paginatorForm);
 
         final DropDownChoice<Integer> rowsChooser = new DropDownChoice<>(

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
index f75e71b..0b6205f 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ListViewPanel.java
@@ -53,9 +53,6 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
 
     private static final long serialVersionUID = -7982691107029848579L;
 
-    /**
-     * Logger.
-     */
     private static final Logger LOG = LoggerFactory.getLogger(ListViewPanel.class);
 
     public enum CheckAvailability {
@@ -217,7 +214,7 @@ public abstract class ListViewPanel<T extends Serializable> extends WizardMgtPan
      */
     public static class Builder<T extends Serializable> extends WizardMgtPanel.Builder<T> {
 
-        private static final long serialVersionUID = 1L;
+        private static final long serialVersionUID = -3643771352897992172L;
 
         private IModel<? extends Collection<T>> model = new Model<>();
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
index f9834f3..f6a521d 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersPanel.java
@@ -195,11 +195,10 @@ public class ParametersPanel extends AbstractSearchResultPanel<
 
                 final AttrTO attrTO = model.getObject();
 
-                final ActionLinksPanel.Builder<Serializable> actionLinks = ActionLinksPanel.builder(page.
-                        getPageReference());
+                ActionLinksPanel.Builder<Serializable> actionLinks = ActionLinksPanel.builder(page.getPageReference());
                 actionLinks.setDisableIndicator(true);
-                ActionLinksPanel.Builder<Serializable> addWithRoles = actionLinks
-                        .addWithRoles(new ActionLink<Serializable>() {
+                actionLinks.
+                        addWithRoles(new ActionLink<Serializable>() {
 
                             private static final long serialVersionUID = 3257738274365467945L;
 
@@ -211,9 +210,8 @@ public class ParametersPanel extends AbstractSearchResultPanel<
                                 modalDetails.setContent(new ParametersEditModalPanel(modalDetails, attrTO, pageRef));
                                 modalDetails.show(true);
                             }
-                        }, ActionLink.ActionType.EDIT, StandardEntitlement.CONFIGURATION_SET
-                        )
-                        .addWithRoles(new ActionLink<Serializable>() {
+                        }, ActionLink.ActionType.EDIT, StandardEntitlement.CONFIGURATION_SET).
+                        addWithRoles(new ActionLink<Serializable>() {
 
                             private static final long serialVersionUID = 3257738274365467945L;
 
@@ -234,11 +232,9 @@ public class ParametersPanel extends AbstractSearchResultPanel<
 
                 item.add(actionLinks.build(componentId));
             }
-        }
-        );
+        });
 
         return columns;
-
     }
 
     protected final class ParametersProvider extends SearchableDataProvider<AttrTO> {

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
new file mode 100644
index 0000000..7d1c907
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/widgets/JobWidget.java
@@ -0,0 +1,299 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.widgets;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.SearchableDataProvider;
+import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.panels.AbstractSearchResultPanel;
+import org.apache.syncope.client.console.rest.BaseRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.common.lib.to.AbstractExecTO;
+import org.apache.syncope.common.lib.to.JobTO;
+import org.apache.syncope.common.lib.to.ReportExecTO;
+import org.apache.syncope.common.lib.to.TaskExecTO;
+import org.apache.syncope.common.rest.api.service.NotificationService;
+import org.apache.syncope.common.rest.api.service.ReportService;
+import org.apache.syncope.common.rest.api.service.TaskService;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.ResourceModel;
+
+public class JobWidget extends AbstractWidget {
+
+    private static final long serialVersionUID = 7667120094526529934L;
+
+    private static final int ROWS = 5;
+
+    private final List<JobTO> available;
+
+    private final List<AbstractExecTO> recent;
+
+    public JobWidget(final String id, final PageReference pageRef) {
+        super(id);
+
+        JobTO notificationJob = SyncopeConsoleSession.get().getService(NotificationService.class).getJob();
+
+        List<JobTO> taskJobs = SyncopeConsoleSession.get().getService(TaskService.class).listJobs(10);
+
+        List<JobTO> reportJobs = SyncopeConsoleSession.get().getService(ReportService.class).listJobs(10);
+
+        available = new ArrayList<>();
+        available.add(notificationJob);
+        available.addAll(taskJobs);
+        available.addAll(reportJobs);
+
+        add(new AvailableJobsPanel("available", pageRef));
+
+        List<ReportExecTO> reportExecs = SyncopeConsoleSession.get().
+                getService(ReportService.class).listRecentExecutions(10);
+
+        List<TaskExecTO> taskExecs = SyncopeConsoleSession.get().
+                getService(TaskService.class).listRecentExecutions(10);
+
+        recent = new ArrayList<>();
+        recent.addAll(reportExecs);
+        recent.addAll(taskExecs);
+
+        add(new RecentExecPanel("recent", pageRef));
+    }
+
+    protected class AvailableJobsPanel extends AbstractSearchResultPanel<
+        JobTO, JobTO, AvailableJobsProvider, BaseRestClient> {
+
+        private static final long serialVersionUID = -8214546246301342868L;
+
+        public AvailableJobsPanel(final String id, final PageReference pageRef) {
+            super(id, new Builder<JobTO, JobTO, BaseRestClient>(null, pageRef) {
+
+                private static final long serialVersionUID = 8769126634538601689L;
+
+                @Override
+                protected WizardMgtPanel<JobTO> newInstance(final String id) {
+                    return new AvailableJobsPanel(id, pageRef);
+                }
+            }.disableCheckBoxes());
+
+            rows = ROWS;
+            initResultTable();
+            container.get("paginator").setVisible(false);
+        }
+
+        @Override
+        protected AvailableJobsProvider dataProvider() {
+            return new AvailableJobsProvider();
+        }
+
+        @Override
+        protected String paginatorRowsKey() {
+            return StringUtils.EMPTY;
+        }
+
+        @Override
+        protected Collection<ActionLink.ActionType> getBulkActions() {
+            return Collections.<ActionLink.ActionType>emptyList();
+        }
+
+        @Override
+        protected List<IColumn<JobTO, String>> getColumns() {
+            final List<IColumn<JobTO, String>> columns = new ArrayList<>();
+
+            for (Field field : JobTO.class.getDeclaredFields()) {
+                if (field != null && !Modifier.isStatic(field.getModifiers())) {
+                    final String fieldName = field.getName();
+                    if (field.getType().isArray()
+                            || Collection.class.isAssignableFrom(field.getType())
+                            || Map.class.isAssignableFrom(field.getType())) {
+
+                        columns.add(new PropertyColumn<JobTO, String>(
+                                new ResourceModel(field.getName()), field.getName()));
+                    } else {
+                        columns.add(new PropertyColumn<JobTO, String>(
+                                new ResourceModel(field.getName()), field.getName(), field.getName()) {
+
+                            private static final long serialVersionUID = -6902459669035442212L;
+
+                            @Override
+                            public String getCssClass() {
+                                String css = super.getCssClass();
+                                if ("referenceKey".equals(fieldName)) {
+                                    css = StringUtils.isBlank(css)
+                                            ? "medium_fixedsize"
+                                            : css + " medium_fixedsize";
+                                }
+                                return css;
+                            }
+                        });
+                    }
+                }
+            }
+
+            return columns;
+        }
+
+    }
+
+    protected final class AvailableJobsProvider extends SearchableDataProvider<JobTO> {
+
+        private static final long serialVersionUID = 3191573490219472572L;
+
+        private final SortableDataProviderComparator<JobTO> comparator;
+
+        private AvailableJobsProvider() {
+            super(ROWS);
+            setSort("running", SortOrder.DESCENDING);
+            comparator = new SortableDataProviderComparator<>(this);
+        }
+
+        @Override
+        public Iterator<JobTO> iterator(final long first, final long count) {
+            Collections.sort(available, comparator);
+            return available.subList((int) first, (int) first + (int) count).iterator();
+        }
+
+        @Override
+        public long size() {
+            return available.size();
+        }
+
+        @Override
+        public IModel<JobTO> model(final JobTO object) {
+            return new CompoundPropertyModel<>(object);
+        }
+    }
+
+    protected class RecentExecPanel extends AbstractSearchResultPanel<
+        AbstractExecTO, AbstractExecTO, RecentExecProvider, BaseRestClient> {
+
+        private static final long serialVersionUID = -8214546246301342868L;
+
+        public RecentExecPanel(final String id, final PageReference pageRef) {
+            super(id, new Builder<AbstractExecTO, AbstractExecTO, BaseRestClient>(null, pageRef) {
+
+                private static final long serialVersionUID = 8769126634538601689L;
+
+                @Override
+                protected WizardMgtPanel<AbstractExecTO> newInstance(final String id) {
+                    return new RecentExecPanel(id, pageRef);
+                }
+            }.disableCheckBoxes());
+
+            rows = ROWS;
+            initResultTable();
+            container.get("paginator").setVisible(false);
+        }
+
+        @Override
+        protected RecentExecProvider dataProvider() {
+            return new RecentExecProvider();
+        }
+
+        @Override
+        protected String paginatorRowsKey() {
+            return StringUtils.EMPTY;
+        }
+
+        @Override
+        protected Collection<ActionLink.ActionType> getBulkActions() {
+            return Collections.<ActionLink.ActionType>emptyList();
+        }
+
+        @Override
+        protected List<IColumn<AbstractExecTO, String>> getColumns() {
+            final List<IColumn<AbstractExecTO, String>> columns = new ArrayList<>();
+
+            for (Field field : AbstractExecTO.class.getDeclaredFields()) {
+                if (field != null && !Modifier.isStatic(field.getModifiers())) {
+                    final String fieldName = field.getName();
+                    if (field.getType().isArray()
+                            || Collection.class.isAssignableFrom(field.getType())
+                            || Map.class.isAssignableFrom(field.getType())) {
+
+                        columns.add(new PropertyColumn<AbstractExecTO, String>(
+                                new ResourceModel(field.getName()), field.getName()));
+                    } else {
+                        columns.add(new PropertyColumn<AbstractExecTO, String>(
+                                new ResourceModel(field.getName()), field.getName(), field.getName()) {
+
+                            private static final long serialVersionUID = -6902459669035442212L;
+
+                            @Override
+                            public String getCssClass() {
+                                String css = super.getCssClass();
+                                if ("key".equals(fieldName)) {
+                                    css = StringUtils.isBlank(css)
+                                            ? "medium_fixedsize"
+                                            : css + " medium_fixedsize";
+                                }
+                                return css;
+                            }
+                        });
+                    }
+                }
+            }
+
+            return columns;
+        }
+
+    }
+
+    protected final class RecentExecProvider extends SearchableDataProvider<AbstractExecTO> {
+
+        private static final long serialVersionUID = 2835707012690698633L;
+
+        private final SortableDataProviderComparator<AbstractExecTO> comparator;
+
+        private RecentExecProvider() {
+            super(ROWS);
+            setSort("end", SortOrder.DESCENDING);
+            comparator = new SortableDataProviderComparator<>(this);
+        }
+
+        @Override
+        public Iterator<AbstractExecTO> iterator(final long first, final long count) {
+            Collections.sort(recent, comparator);
+            return recent.subList((int) first, (int) first + (int) count).iterator();
+        }
+
+        @Override
+        public long size() {
+            return recent.size();
+        }
+
+        @Override
+        public IModel<AbstractExecTO> model(final AbstractExecTO object) {
+            return new CompoundPropertyModel<>(object);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
index 15fdc35..a2dd0d1 100644
--- a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
+++ b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
@@ -498,4 +498,8 @@ END - Result page
   height: auto !important;
   padding: 10px;
   text-align: center;
+}
+
+.nav-tabs-custom > .nav-tabs > li.active {
+    border-top-color: #d2d6de !important;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Dashboard.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Dashboard.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Dashboard.html
index c6eb390..4518d4a 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Dashboard.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Dashboard.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -50,6 +49,12 @@ under the License.
           <span wicket:id="anyByRealm"/>
         </div>
       </div>
+
+      <div class="row">
+        <div class="col-md-12">
+          <span wicket:id="job"/>
+        </div>
+      </div>
     </section>
   </wicket:extend>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Layouts.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Layouts.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Layouts.html
index 0ca52d7..ba1764b 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Layouts.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Layouts.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -17,7 +16,7 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
-<html xmlns="http://www.w3.org/1999/xhtml" >
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
   <wicket:extend>
 
     <section class="content-header">

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Logs.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Logs.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Logs.html
index d7f479d..24ce9b1 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Logs.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Logs.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications.html
index d79c959..9d84dfa 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Notifications.html
@@ -1,5 +1,4 @@
-<!DOCTYPE html>
-<!--
+s<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Parameters.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Parameters.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Parameters.html
index ff920b2..22c362f 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Parameters.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Parameters.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Policies.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Policies.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Policies.html
index cb7c548..be6320a 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Policies.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Policies.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Realms.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Realms.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Realms.html
index de6e4ab..e579a2a 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Realms.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Realms.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -17,8 +16,7 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
-  <head><title>Realms</title></head>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
   <wicket:extend>
     <section class="content-header">
       <h1>

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.html
index 3505a22..f560876 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Reports.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Roles.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Roles.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Roles.html
index 0782e38..37e5ac8 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Roles.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Roles.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html
index 2eae244..58d050b 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/SecurityQuestions.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.html
index b116624..41d3c32 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Types.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.html
index c91440e..f26791e 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/AccountPolicy.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AccountPolicy.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AccountPolicy.html
index 26a9aae..b52cc45 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AccountPolicy.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AccountPolicy.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -17,13 +16,8 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
-  <body>
-    <wicket:panel>
-      <h1>Account Policy</h1>
-    </wicket:panel>
-  </body>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+  <wicket:panel>
+    <h1>Account Policy</h1>
+  </wicket:panel>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyAjaxTabbedPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyAjaxTabbedPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyAjaxTabbedPanel.html
index 9b40371..b83a98a 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyAjaxTabbedPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyAjaxTabbedPanel.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -18,21 +17,18 @@ specific language governing permissions and limitations
 under the License.
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
-  <head><title></title></head>
-  <body>
-    <wicket:panel>
-      <div class="tabbable tabs-left" style="margin-right: 0; border-right: 0;">
-        <ul class="nav nav-tabs" style="margin-right: 0; border-right: 0;" wicket:id="tabs-container">
-          <li wicket:id="tabs">
-            <a data-toggle="tab" href="#" wicket:id="link">
-              <span wicket:id="title">[tab title]</span>
-            </a>
-          </li>
-        </ul>
-        <div class="tab-content" style="min-height: 100%; padding-left: 20px; border-left: 1px solid #ddd;">
-          <div wicket:id="panel" class="tab-pane active">[tab]</div>
-        </div>
+  <wicket:panel>
+    <div class="tabbable tabs-left" style="margin-right: 0; border-right: 0;">
+      <ul class="nav nav-tabs" style="margin-right: 0; border-right: 0;" wicket:id="tabs-container">
+        <li wicket:id="tabs">
+          <a data-toggle="tab" href="#" wicket:id="link">
+            <span wicket:id="title">[tab title]</span>
+          </a>
+        </li>
+      </ul>
+      <div class="tab-content" style="min-height: 100%; padding-left: 20px; border-left: 1px solid #ddd;">
+        <div wicket:id="panel" class="tab-pane active">[tab]</div>
       </div>
-    </wicket:panel>
-  </body>
+    </div>
+  </wicket:panel>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.html
index 2a68a1d..6f272ae 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeClassDetailsPanel.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeMenuItem.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeMenuItem.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeMenuItem.html
index 9d9ed0e..80a7cfd 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeMenuItem.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AnyTypeMenuItem.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -17,13 +16,8 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
-  <body>
-    <wicket:panel>
-      <a data-toggle="tab" wicket:id="tabLink"><span wicket:id="tabLabel"></span></a>
-    </wicket:panel>
-  </body>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+  <wicket:panel>
+    <a data-toggle="tab" wicket:id="tabLink"><span wicket:id="tabLabel"></span></a>
+  </wicket:panel>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConsoleLogPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConsoleLogPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConsoleLogPanel.html
index ada2f99..a4cd024 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConsoleLogPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConsoleLogPanel.html
@@ -16,8 +16,7 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
-  <head><title></title></head>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
   <wicket:panel>
     <span wicket:id="loggerContainer">
       <div class="logs">

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/CoreLogPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/CoreLogPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/CoreLogPanel.html
index ada2f99..a4cd024 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/CoreLogPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/CoreLogPanel.html
@@ -16,8 +16,7 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
-  <head><title></title></head>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
   <wicket:panel>
     <span wicket:id="loggerContainer">
       <div class="logs">

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/ParametersCreateModalPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ParametersCreateModalPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ParametersCreateModalPanel.html
index a9e6ee9..4ce1ac9 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ParametersCreateModalPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ParametersCreateModalPanel.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/ParametersEditModalPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ParametersEditModalPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ParametersEditModalPanel.html
index e8fa912..6f94ce5 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ParametersEditModalPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ParametersEditModalPanel.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/PasswordPolicy.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/PasswordPolicy.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PasswordPolicy.html
index 5fbd41d..5ea16b6 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/PasswordPolicy.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PasswordPolicy.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -17,13 +16,8 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
-  <body>
-    <wicket:panel>
-      <h1>Password Policy</h1>
-    </wicket:panel>
-  </body>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+  <wicket:panel>
+    <h1>Password Policy</h1>
+  </wicket:panel>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/PlainSchemaDetails.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/PlainSchemaDetails.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PlainSchemaDetails.html
index 79ef7a1..8622f5d 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/PlainSchemaDetails.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/PlainSchemaDetails.html
@@ -16,7 +16,7 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
   <wicket:panel>
     <form wicket:id="form">
       <div class="form-group">

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/Realm.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/Realm.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/Realm.html
index 0755e3e..c674ea8 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/Realm.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/Realm.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -17,7 +16,7 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
   <wicket:panel>
     <div wicket:id="tabbedPanel"></div>
   </wicket:panel>

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails.html
index 57955dd..c5282d1 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmDetails.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -17,23 +16,20 @@ KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
 -->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://xmlns.jcp.org/jsf/composite">
-  <head><title></title></head>
-  <body>
-    <wicket:panel>
-      <div wicket:id="container" class="summarize">
-        <span wicket:id="name">[name]</span>
-        <span wicket:id="fullPath">[fullPath]</span>
-        <span wicket:id="accountPolicy">[accountPolicy]</span>
-        <span wicket:id="passwordPolicy">[passwordPolicy]</span>
-      </div>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+  <wicket:panel>
+    <div wicket:id="container" class="summarize">
+      <span wicket:id="name">[name]</span>
+      <span wicket:id="fullPath">[fullPath]</span>
+      <span wicket:id="accountPolicy">[accountPolicy]</span>
+      <span wicket:id="passwordPolicy">[passwordPolicy]</span>
+    </div>
 
-      <span wicket:id="actions"></span>
+    <span wicket:id="actions"></span>
 
-      <wicket:fragment wicket:id="emptyFragment"></wicket:fragment>
-      <wicket:fragment wicket:id="actionsFragment">
-        <div wicket:id="actions" class="modal-footer circular-actions"/>
-      </wicket:fragment>
-    </wicket:panel>
-  </body>
+    <wicket:fragment wicket:id="emptyFragment"></wicket:fragment>
+    <wicket:fragment wicket:id="actionsFragment">
+      <div wicket:id="actions" class="modal-footer circular-actions"/>
+    </wicket:fragment>
+  </wicket:panel>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmSidebarPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmSidebarPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmSidebarPanel.html
index ce14556..b97f8b8 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmSidebarPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RealmSidebarPanel.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file

http://git-wip-us.apache.org/repos/asf/syncope/blob/15582e4f/client/console/src/main/resources/org/apache/syncope/client/console/panels/RelationshipTypeModalPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/RelationshipTypeModalPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RelationshipTypeModalPanel.html
index e243bbb..142322b 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/RelationshipTypeModalPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/RelationshipTypeModalPanel.html
@@ -1,4 +1,3 @@
-<!DOCTYPE html>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file


Mime
View raw message