diff --git a/src/app/messagesadapter.h b/src/app/messagesadapter.h
index 881eec37651b8379ae06db8ad04342ea9a9a2145..8913d89a2331db58063b09234a7b48c050d35dab 100644
--- a/src/app/messagesadapter.h
+++ b/src/app/messagesadapter.h
@@ -43,7 +43,8 @@ public:
         auto type = static_cast<interaction::Type>(
             sourceModel()->data(index, MessageList::Role::Type).toInt());
         return type != interaction::Type::MERGE && type != interaction::Type::EDITED
-               && type != interaction::Type::REACTION;
+               && type != interaction::Type::REACTION && type != interaction::Type::VOTE
+               && type != interaction::Type::UPDATE_PROFILE && type != interaction::Type::INVALID;
     };
     bool lessThan(const QModelIndex& left, const QModelIndex& right) const override
     {
diff --git a/src/libclient/api/interaction.h b/src/libclient/api/interaction.h
index 237060465931809d588052e2c9b0b29c425b3762..3abfb2dfbc6c9112279420debfc8ea883845d4b5 100644
--- a/src/libclient/api/interaction.h
+++ b/src/libclient/api/interaction.h
@@ -42,6 +42,8 @@ enum class Type {
     MERGE,
     EDITED,
     REACTION,
+    VOTE,
+    UPDATE_PROFILE,
     COUNT__
 };
 Q_ENUM_NS(Type)
@@ -62,6 +64,10 @@ to_string(const Type& type)
         return "DATA_TRANSFER";
     case Type::MERGE:
         return "MERGE";
+    case Type::VOTE:
+        return "VOTE";
+    case Type::UPDATE_PROFILE:
+        return "UPDATE_PROFILE";
     case Type::EDITED:
         return "EDITED";
     case Type::REACTION:
@@ -90,6 +96,10 @@ to_type(const QString& type)
         return interaction::Type::DATA_TRANSFER;
     else if (type == "merge")
         return interaction::Type::MERGE;
+    else if (type == "application/update-profile")
+        return interaction::Type::UPDATE_PROFILE;
+    else if (type == "vote")
+        return interaction::Type::VOTE;
     else if (type == "application/edited-message")
         return interaction::Type::EDITED;
     else