diff --git a/hiboo/profile/admin.py b/hiboo/profile/admin.py
index d81891f3ea6ae2e0c1220f35c271cd0c860a17d8..78fc7c0fe00666db95fc536e321a588a3c55310c 100644
--- a/hiboo/profile/admin.py
+++ b/hiboo/profile/admin.py
@@ -42,8 +42,6 @@ def details(profile_uuid):
 @security.confirmation_required("change the profile status")
 @security.admin_required()
 def set_status(profile_uuid, status):
-    if status not in (models.Profile.ACTIVE, models.Profile.BLOCKED):
-        flask.abort(403)
     profile = models.Profile.query.get(profile_uuid) or flask.abort(404)
     profile.transition = status
     models.log(
@@ -61,6 +59,17 @@ def set_status(profile_uuid, status):
     return flask.redirect(flask.url_for(".details", profile_uuid=profile_uuid))
 
 
+@blueprint.route("/transition/<profile_uuid>", methods=["GET", "POST"])
+@security.admin_required()
+def complete_transition(profile_uuid):
+    profile = models.Profile.query.get(profile_uuid) or flask.abort(404)
+    profile.status = profile.transition
+    profile.transition = None
+    models.db.session.commit()
+    flask.flash(_("Profile status change was completed"), "success")
+    return flask.redirect(flask.url_for(".details", profile_uuid=profile_uuid))
+
+
 @blueprint.route("/assign/<profile_uuid>", methods=["GET", "POST"])
 @security.admin_required()
 def assign(profile_uuid):
diff --git a/hiboo/profile/templates/profile_list.html b/hiboo/profile/templates/profile_list.html
index 347d80d270243f5d6b1b878161c1073b9a28b98f..ec9436e60b619ca808a17e07af68ae40dd44195e 100644
--- a/hiboo/profile/templates/profile_list.html
+++ b/hiboo/profile/templates/profile_list.html
@@ -53,6 +53,7 @@
               {% elif profile.status == "unclaimed" %}
               <a href="{{ url_for("profile.assign", profile_uuid=profile.uuid) }}">{% trans %}Assign profile{% endtrans %}</a>
               {% endif %}
+              <a href="{{ url_for("profile.set_status", profile_uuid=profile.uuid, status="deleted") }}">{% trans %}Delete profile{% endtrans %}</a>
             </td>
           </tr>
           {% endfor %}
diff --git a/hiboo/templates/macros.html b/hiboo/templates/macros.html
index d3ce4771c66831ad69ccad2ec192a09faebd9d5e..6450780b7c014c299f73ed975e15e1d1c9cd8ad6 100644
--- a/hiboo/templates/macros.html
+++ b/hiboo/templates/macros.html
@@ -38,6 +38,7 @@
   {% set transition = profile.STATUSES[profile.transition] %}
   <i class="fa fa-arrow-right"></i>
   <span class="badge bg-{{ transition[0] }}">{{ transition[1] }}</span>
+  (<a href="{{ url_for("profile.complete_transition", profile_uuid=profile.uuid) }}">{% trans %}complete manually{% endtrans %}</a>)
   {% endif %}
 {% endmacro %}