           RETURN NULL;
         END IF;
         IF "persist"."state" = 'verification' THEN
-          PERFORM "freeze_after_snapshot"("issue_id_p");
+          SELECT * INTO "issue_row" FROM "issue" WHERE "id" = "issue_id_p"
+            FOR UPDATE;
+          SELECT * INTO "policy_row" FROM "policy"
+            WHERE "id" = "issue_row"."policy_id";
+          IF EXISTS (
+            SELECT NULL FROM "initiative"
+            WHERE "issue_id" = "issue_id_p" AND "admitted" = TRUE
+          ) THEN
+            UPDATE "issue" SET
+              "state"         = 'voting',
+              "accepted"      = coalesce("accepted", "phase_finished"),
+              "half_frozen"   = coalesce("half_frozen", "phase_finished"),
+              "fully_frozen"  = "phase_finished",
+              "phase_finished" = NULL
+              WHERE "id" = "issue_id_p";
+          ELSE
+            UPDATE "issue" SET
+              "state"           = 'canceled_no_initiative_admitted',
+              "accepted"        = coalesce("accepted", "phase_finished"),
+              "half_frozen"     = coalesce("half_frozen", "phase_finished"),
+              "fully_frozen"    = "phase_finished",
+              "closed"          = "phase_finished",
+              "phase_finished"  = NULL
+              WHERE "id" = "issue_id_p";
+            -- NOTE: The following DELETE statements have effect only when
+            --       issue state has been manipulated
+            DELETE FROM "direct_voter"     WHERE "issue_id" = "issue_id_p";
+            DELETE FROM "delegating_voter" WHERE "issue_id" = "issue_id_p";
+            DELETE FROM "battle"           WHERE "issue_id" = "issue_id_p";
+          END IF;
           RETURN NULL;
         END IF;
         IF "persist"."state" = 'voting' THEN

        "harmonic_weights_set"  BOOLEAN,
        "closed_voting"         BOOLEAN );

CREATE FUNCTION "check_issue"
  ( "issue_id_p" "issue"."id"%TYPE,
    "persist"    "check_issue_persistence" )
  RETURNS "check_issue_persistence"
  LANGUAGE 'plpgsql' VOLATILE AS $$
    DECLARE
      "issue_row" "issue"%ROWTYPE;
      "state_v"   "issue_state";
    BEGIN
      PERFORM "require_transaction_isolation"();
      IF "persist" ISNULL THEN

        RETURN NULL;
      END IF;
      IF "persist"."state" = 'admission' THEN
        SELECT * INTO "issue_row" FROM "issue" WHERE "id" = "issue_id_p"
          FOR UPDATE;
        SELECT * INTO "policy_row"
          FROM "policy" WHERE "id" = "issue_row"."policy_id";
        IF EXISTS (
          SELECT NULL FROM "initiative"
          WHERE "issue_id" = "issue_id_p"
          AND "supporter_count" > 0
          AND "supporter_count" * "policy_row"."issue_quorum_den"
          >= "issue_row"."population" * "policy_row"."issue_quorum_num"
        ) THEN
          UPDATE "issue" SET
            "state"          = 'discussion',
            "accepted"       = coalesce("phase_finished", now()),
            "phase_finished" = NULL
            WHERE "id" = "issue_id_p";
        ELSIF "issue_row"."phase_finished" NOTNULL THEN
          UPDATE "issue" SET
            "state"          = 'canceled_issue_not_accepted',
            "closed"         = "phase_finished",
            "phase_finished" = NULL
            WHERE "id" = "issue_id_p";
        END IF;
        RETURN NULL;
      END IF;
      IF "persist"."phase_finished" THEN
