diff --git a/master/bt5/vifib_slap/PathTemplateItem/portal_alarms/cleanup_active_process.xml b/master/bt5/slapos_erp5/PathTemplateItem/portal_alarms/slapos_erp5_cleanup_active_process.xml
similarity index 96%
rename from master/bt5/vifib_slap/PathTemplateItem/portal_alarms/cleanup_active_process.xml
rename to master/bt5/slapos_erp5/PathTemplateItem/portal_alarms/slapos_erp5_cleanup_active_process.xml
index 10be3f44819483b3d257e4f4a72fe35a884ecc4c..50f5dd494435584357ecb4929f48a5fe7af38e20 100644
--- a/master/bt5/vifib_slap/PathTemplateItem/portal_alarms/cleanup_active_process.xml
+++ b/master/bt5/slapos_erp5/PathTemplateItem/portal_alarms/slapos_erp5_cleanup_active_process.xml
@@ -20,7 +20,7 @@
         </item>
         <item>
             <key> <string>id</string> </key>
-            <value> <string>cleanup_active_process</string> </value>
+            <value> <string>slapos_erp5_cleanup_active_process</string> </value>
         </item>
         <item>
             <key> <string>periodicity_day_frequency</string> </key>
diff --git a/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration.xml b/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fffd07216284df8648ddf64fe1a838065d726455
--- /dev/null
+++ b/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Folder" module="OFS.Folder"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_local_properties</string> </key>
+            <value>
+              <tuple>
+                <dictionary>
+                  <item>
+                      <key> <string>id</string> </key>
+                      <value> <string>business_template_skin_layer_priority</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>type</string> </key>
+                      <value> <string>float</string> </value>
+                  </item>
+                </dictionary>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>_objects</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>business_template_skin_layer_priority</string> </key>
+            <value> <float>60.0</float> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>slapos_administration</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/ActiveProcess_deleteSelf.xml b/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/ActiveProcess_deleteSelf.xml
similarity index 91%
rename from master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/ActiveProcess_deleteSelf.xml
rename to master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/ActiveProcess_deleteSelf.xml
index b0c8382b15285869c448771f789ba1939751ea2a..975226ea19ac484433e3faaa1cbf9d2884276475 100644
--- a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/ActiveProcess_deleteSelf.xml
+++ b/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/ActiveProcess_deleteSelf.xml
@@ -50,14 +50,19 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>if context.getPortalType() != \'Active Process\':\n
+            <value> <string>from zExceptions import Unauthorized\n
+if REQUEST is not None:\n
+  raise Unauthorized\n
+\n
+if context.getPortalType() != \'Active Process\':\n
   raise TypeError(\'Call me on Active Process\')\n
+\n
 context.getParentValue().deleteContent(context.getId())\n
 </string> </value>
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string></string> </value>
+            <value> <string>REQUEST=None</string> </value>
         </item>
         <item>
             <key> <string>id</string> </key>
diff --git a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Alarm_initiateActiveProcessCleanup.xml b/master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Alarm_initiateActiveProcessCleanup.xml
similarity index 100%
rename from master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/Alarm_initiateActiveProcessCleanup.xml
rename to master/bt5/slapos_erp5/SkinTemplateItem/portal_skins/slapos_administration/Alarm_initiateActiveProcessCleanup.xml
diff --git a/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5Alarm.py b/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5Alarm.py
new file mode 100644
index 0000000000000000000000000000000000000000..c2cfea537fc83198bd5d7d7714bb423ae05e8c46
--- /dev/null
+++ b/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5Alarm.py
@@ -0,0 +1,108 @@
+# Copyright (c) 2002-2012 Nexedi SA and Contributors. All Rights Reserved.
+import transaction
+from Products.SlapOS.tests.testSlapOSMixin import \
+  testSlapOSMixin
+from Products.ERP5Type.tests.utils import createZODBPythonScript
+from Products.ERP5Type.tests.backportUnittest import skip
+import json
+from DateTime import DateTime
+from zExceptions import Unauthorized
+
+class TestSlapOSERP5CleanupActiveProcess(testSlapOSMixin):
+
+  def beforeTearDown(self):
+    transaction.abort()
+
+  def _simulateActiveProcess_deleteSelf(self):
+    script_name = 'ActiveProcess_deleteSelf'
+    if script_name in self.portal.portal_skins.custom.objectIds():
+      raise ValueError('Precondition failed: %s exists in custom' % script_name)
+    createZODBPythonScript(self.portal.portal_skins.custom,
+                        script_name,
+                        '*args, **kwargs',
+                        '# Script body\n'
+"""description = '%s\\nVisited by ActiveProcess_deleteSelf' % context.getDescription()
+context.edit(description=description)""")
+    transaction.commit()
+
+  def _dropActiveProcess_deleteSelf(self):
+    script_name = 'ActiveProcess_deleteSelf'
+    if script_name in self.portal.portal_skins.custom.objectIds():
+      self.portal.portal_skins.custom.manage_delObjects(script_name)
+    transaction.commit()
+
+  def check_cleanup_active_process_alarm(self, date, assert_method):
+    def verify_getCreationDate_call(*args, **kwargs):
+      return date
+    ActiveProcessClass = self.portal.portal_types.getPortalTypeClass(
+        'Active Process')
+    ActiveProcessClass.getCreationDate_call = ActiveProcessClass.\
+        getCreationDate
+    ActiveProcessClass.getCreationDate = verify_getCreationDate_call
+
+    new_id = self.generateNewId()
+    active_process = self.portal.portal_activities.newContent(
+      portal_type='Active Process',
+      title="Active Process %s" % new_id,
+      reference="ACTPROC-%s" % new_id,
+      description="Active Process %s" % new_id,
+      )
+    self.assertEquals(active_process.getCreationDate(), date)
+
+    self._simulateActiveProcess_deleteSelf()
+    try:
+      self.portal.portal_alarms.slapos_erp5_cleanup_active_process.activeSense()
+      self.tic()
+    finally:
+      self._dropActiveProcess_deleteSelf()
+      self.portal.portal_types.resetDynamicDocumentsOnceAtTransactionBoundary()
+      transaction.commit()
+
+    assert_method(active_process.getDescription('').\
+        endswith("Visited by ActiveProcess_deleteSelf"),
+        active_process.getDescription(''))
+
+  def test_alarm_old_active_process(self):
+    self.check_cleanup_active_process_alarm(DateTime() - 22, self.assertTrue)
+
+  def test_alarm_new_active_process(self):
+    self.check_cleanup_active_process_alarm(DateTime() - 20, self.assertFalse)
+
+
+class TestSlapOSERP5ActiveProcess_deleteSelf(testSlapOSMixin):
+
+  def beforeTearDown(self):
+    transaction.abort()
+
+  def createActiveProcess(self):
+    new_id = self.generateNewId()
+    return self.portal.portal_activities.newContent(
+      portal_type='Active Process',
+      title="Active Process %s" % new_id,
+      reference="ACTPROC-%s" % new_id,
+      description="Active Process %s" % new_id,
+      )
+
+  def test_disallowedPortalType(self):
+    document = self.portal.person_module.newContent()
+    self.assertRaises(
+      TypeError,
+      document.ActiveProcess_deleteSelf,
+      )
+
+  def test_REQUEST_disallowed(self):
+    active_process = self.createActiveProcess()
+    self.assertRaises(
+      Unauthorized,
+      active_process.ActiveProcess_deleteSelf,
+      REQUEST={})
+
+  def test_default_use_case(self):
+    active_process = self.createActiveProcess()
+    module = active_process.getParentValue()
+    id = active_process.getId()
+    active_process.ActiveProcess_deleteSelf()
+    self.assertRaises(
+      KeyError,
+      module._getOb,
+      id)
diff --git a/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5SkinSelection.py b/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5SkinSelection.py
index f955a2dc724dc3a28f4b8907f2574d411f53b884..1145e767f8311727ba4d8f05e43a97a2693e9f3d 100644
--- a/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5SkinSelection.py
+++ b/master/bt5/slapos_erp5/TestTemplateItem/testSlapOSERP5SkinSelection.py
@@ -109,6 +109,7 @@ class TestSlaposSkinSelection(testSlapOSMixin):
 custom
 vifib_hosting
 slapos_accounting
+slapos_administration
 slapos_cache
 slapos_cloud
 slapos_cloud_promise
@@ -197,6 +198,7 @@ zpt_generic
 """
 custom
 slapos_accounting
+slapos_administration
 slapos_cache
 slapos_cloud
 slapos_cloud_promise
@@ -281,6 +283,7 @@ zpt_generic
 """
 custom
 slapos_accounting
+slapos_administration
 slapos_cache
 slapos_cloud
 slapos_cloud_promise
@@ -366,6 +369,7 @@ zpt_generic
 """
 custom
 slapos_accounting
+slapos_administration
 slapos_cache
 slapos_cloud
 slapos_cloud_promise
@@ -448,6 +452,7 @@ zpt_generic
 """
 custom
 slapos_accounting
+slapos_administration
 slapos_cache
 slapos_cloud
 slapos_cloud_promise
diff --git a/master/bt5/slapos_erp5/bt/revision b/master/bt5/slapos_erp5/bt/revision
index 2702ba3d439a353c3f748180065944feb28b8b87..d2c5ed2124821b21d11dcc57f6a116ed29593583 100644
--- a/master/bt5/slapos_erp5/bt/revision
+++ b/master/bt5/slapos_erp5/bt/revision
@@ -1 +1 @@
-115
\ No newline at end of file
+116
\ No newline at end of file
diff --git a/master/bt5/slapos_erp5/bt/template_path_list b/master/bt5/slapos_erp5/bt/template_path_list
new file mode 100644
index 0000000000000000000000000000000000000000..8446989bc162e264d1eda0cd89999f0b60454ef9
--- /dev/null
+++ b/master/bt5/slapos_erp5/bt/template_path_list
@@ -0,0 +1 @@
+portal_alarms/slapos_erp5_cleanup_active_process
\ No newline at end of file
diff --git a/master/bt5/slapos_erp5/bt/template_skin_id_list b/master/bt5/slapos_erp5/bt/template_skin_id_list
index 2c5c19caf73113bb23415c40fbb4155ef79ef219..002ddca89372e64ae26bbc09e52e31fb4b3b58cd 100644
--- a/master/bt5/slapos_erp5/bt/template_skin_id_list
+++ b/master/bt5/slapos_erp5/bt/template_skin_id_list
@@ -1 +1,2 @@
+slapos_administration
 slapos_core
\ No newline at end of file
diff --git a/master/bt5/slapos_erp5/bt/template_test_id_list b/master/bt5/slapos_erp5/bt/template_test_id_list
index 6bf2ba27851f15167c8e187fad77d4136df70dfc..ed98c87b617529a9be67520b1205515e5fa31add 100644
--- a/master/bt5/slapos_erp5/bt/template_test_id_list
+++ b/master/bt5/slapos_erp5/bt/template_test_id_list
@@ -1,4 +1,5 @@
 testSlapOSERP5DefaultScenario
 testSlapOSERP5GroupRoleSecurity
 testSlapOSERP5LocalPermissionSlapOSInteractionWorkflow
-testSlapOSERP5SkinSelection
\ No newline at end of file
+testSlapOSERP5SkinSelection
+testSlapOSERP5Alarm
\ No newline at end of file
diff --git a/master/bt5/vifib_slap/bt/revision b/master/bt5/vifib_slap/bt/revision
index 3cdc988178d1a9b697f73bf12e8749f835151245..fb5f8f013c9c30f6ca22ea0f56bac120d6815512 100644
--- a/master/bt5/vifib_slap/bt/revision
+++ b/master/bt5/vifib_slap/bt/revision
@@ -1 +1 @@
-889
\ No newline at end of file
+890
\ No newline at end of file
diff --git a/master/bt5/vifib_slap/bt/template_path_list b/master/bt5/vifib_slap/bt/template_path_list
index bc331bb4000666f605a4a6390a5a8e00c321a64e..fe5e0e878f2100be77f237e348a0e5f9aa6d87f9 100644
--- a/master/bt5/vifib_slap/bt/template_path_list
+++ b/master/bt5/vifib_slap/bt/template_path_list
@@ -1,4 +1,3 @@
-portal_alarms/cleanup_active_process
 portal_alarms/vifib_check_consistency
 portal_alarms/vifib_lock_person
 portal_alarms/vifib_lock_software_instance