diff --git a/src/Model/Item.php b/src/Model/Item.php
index fdccb37844..248e646afc 100644
--- a/src/Model/Item.php
+++ b/src/Model/Item.php
@@ -1263,6 +1263,28 @@ class Item extends BaseObject
 		 */
 	}
 
+	/**
+	 * Write an item array into a spool file to be inserted later.
+	 * This command is called whenever there are issues storing an item.
+	 *
+	 * @param array $item The item fields that are to be inserted
+	 * @throws \Exception
+	 */
+	private static function spool($orig_item)
+	{
+		// Now we store the data in the spool directory
+		// We use "microtime" to keep the arrival order and "mt_rand" to avoid duplicates
+		$file = 'item-' . round(microtime(true) * 10000) . '-' . mt_rand() . '.msg';
+
+		$spoolpath = get_spoolpath();
+		if ($spoolpath != "") {
+			$spool = $spoolpath . '/' . $file;
+
+			file_put_contents($spool, json_encode($orig_item));
+			Logger::warning("Item wasn't stored - Item was spooled into file", ['file' => $file]);
+		}
+	}
+
 	public static function insert($item, $force_parent = false, $notify = false, $dontcache = false)
 	{
 		$orig_item = $item;
@@ -1779,23 +1801,7 @@ class Item extends BaseObject
 			DBA::rollback();
 
 			// Store the data into a spool file so that we can try again later.
-
-			// At first we restore the Diaspora signature that we removed above.
-			if (isset($encoded_signature)) {
-				$item['dsprsig'] = $encoded_signature;
-			}
-
-			// Now we store the data in the spool directory
-			// We use "microtime" to keep the arrival order and "mt_rand" to avoid duplicates
-			$file = 'item-'.round(microtime(true) * 10000).'-'.mt_rand().'.msg';
-
-			$spoolpath = get_spoolpath();
-			if ($spoolpath != "") {
-				$spool = $spoolpath.'/'.$file;
-
-				file_put_contents($spool, json_encode($orig_item));
-				Logger::log("Item wasn't stored - Item was spooled into file ".$file, Logger::DEBUG);
-			}
+			self::spool($orig_item);
 			return 0;
 		}
 
@@ -1869,7 +1875,14 @@ class Item extends BaseObject
 			DBA::insert('diaspora-interaction', ['uri-id' => $item['uri-id'], 'interaction' => $diaspora_signed_text], true);
 		}
 
-		self::tagDeliver($item['uid'], $current_post);
+		// In that function we check if this is a forum post. Additionally we delete the item under certain circumstances
+		if (self::tagDeliver($item['uid'], $current_post)) {
+			// Get the user information for the logging
+			$user = User::getById($uid);
+
+			Logger::notice('Item had been deleted', ['id' => $current_post, 'user' => $uid, 'account-type' => $user['account-type']]);
+			return 0;
+		}
 
 		/*
 		 * current post can be deleted if is for a community page and no mention are
@@ -2547,7 +2560,7 @@ class Item extends BaseObject
 	 *
 	 * @param int $uid
 	 * @param int $item_id
-	 * @return void true if item was deleted, else false
+	 * @return boolean true if item was deleted, else false
 	 * @throws \Friendica\Network\HTTPException\InternalServerErrorException
 	 * @throws \ImagickException
 	 */
@@ -2557,7 +2570,7 @@ class Item extends BaseObject
 
 		$user = DBA::selectFirst('user', [], ['uid' => $uid]);
 		if (!DBA::isResult($user)) {
-			return;
+			return false;
 		}
 
 		$community_page = (($user['page-flags'] == User::PAGE_FLAGS_COMMUNITY) ? true : false);
@@ -2565,7 +2578,7 @@ class Item extends BaseObject
 
 		$item = self::selectFirst(self::ITEM_FIELDLIST, ['id' => $item_id]);
 		if (!DBA::isResult($item)) {
-			return;
+			return false;
 		}
 
 		$link = Strings::normaliseLink(System::baseUrl() . '/profile/' . $user['nickname']);
@@ -2595,7 +2608,7 @@ class Item extends BaseObject
 				DBA::delete('item', ['id' => $item_id]);
 				return true;
 			}
-			return;
+			return false;
 		}
 
 		$arr = ['item' => $item, 'user' => $user];
@@ -2603,7 +2616,7 @@ class Item extends BaseObject
 		Hook::callAll('tagged', $arr);
 
 		if (!$community_page && !$prvgroup) {
-			return;
+			return false;
 		}
 
 		/*
@@ -2612,13 +2625,13 @@ class Item extends BaseObject
 		 * if the message originated elsewhere and is a top-level post
 		 */
 		if ($item['wall'] || $item['origin'] || ($item['id'] != $item['parent'])) {
-			return;
+			return false;
 		}
 
 		// now change this copy of the post to a forum head message and deliver to all the tgroup members
 		$self = DBA::selectFirst('contact', ['id', 'name', 'url', 'thumb'], ['uid' => $uid, 'self' => true]);
 		if (!DBA::isResult($self)) {
-			return;
+			return false;
 		}
 
 		$owner_id = Contact::getIdForURL($self['url']);
@@ -2638,6 +2651,8 @@ class Item extends BaseObject
 		self::updateThread($item_id);
 
 		Worker::add(['priority' => PRIORITY_HIGH, 'dont_fork' => true], 'Notifier', Delivery::POST, $item_id);
+
+		return false;
 	}
 
 	public static function isRemoteSelf($contact, &$datarray)