diff --git a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenancePlugin.java b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenancePlugin.java
index 90a918ebafdf4d943ac1c219ed39f19c68fc8a95..b70384e27d99c775777ed9eff4cef5a3432484bc 100644
--- a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenancePlugin.java
+++ b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenancePlugin.java
@@ -43,6 +43,18 @@ public class MaintenancePlugin
         this.requiresDataStoreLock = requiresDataStoreLock();
     }
 
+    /**
+     * Constructor that takes a configured maintenance task.
+     * 
+     * @param task
+     */
+    public MaintenancePlugin(IMaintenanceTask task, MaintenanceTaskParameters parameters)
+    {
+        this.parameters = parameters;
+        this.task = task;
+        this.requiresDataStoreLock = requiresDataStoreLock();
+    }
+
     private boolean requiresDataStoreLock()
     {
         if (task instanceof IDataStoreLockingMaintenanceTask)
diff --git a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskParameters.java b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskParameters.java
index e1f7ef7fd4d9db570445f743a613d9d37a3befd3..1df85fe93e0833b6a74f8a45fbeb67c5c364d245 100644
--- a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskParameters.java
+++ b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskParameters.java
@@ -34,13 +34,13 @@ import ch.systemsx.cisd.common.utilities.PropertyUtils;
  */
 public class MaintenanceTaskParameters
 {
-    static final String TIME_FORMAT = "HH:mm";
+    public static final String CLASS_KEY = "class";
 
-    static final int ONE_DAY_IN_SEC = 60 * 60 * 24;
+    public static final String INTERVAL_KEY = "interval";
 
-    static final String CLASS_KEY = "class";
+    static final String TIME_FORMAT = "HH:mm";
 
-    static final String INTERVAL_KEY = "interval";
+    static final int ONE_DAY_IN_SEC = 60 * 60 * 24;
 
     static final String START_KEY = "start";
 
diff --git a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskUtils.java b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskUtils.java
index f1369c945dfa2ec97b24a977d50d443bed2f1a32..2d98422931130c0676eff2a5ee3929a975e9ba7b 100644
--- a/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskUtils.java
+++ b/common/source/java/ch/systemsx/cisd/common/maintenance/MaintenanceTaskUtils.java
@@ -51,12 +51,21 @@ public class MaintenanceTaskUtils
             MaintenancePlugin plugin = new MaintenancePlugin(parameters);
             plugins.add(plugin);
         }
+
         for (MaintenancePlugin plugin : plugins)
         {
             plugin.start();
         }
     }
 
+    /**
+     * Inject a maintenance plugin into the running plugin environment.
+     */
+    public static void injectMaintenancePlugin(MaintenancePlugin plugin)
+    {
+        plugin.start();
+    }
+
     public static MaintenanceTaskParameters[] createMaintenancePlugins(
             final Properties serviceProperties)
     {