diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/polls/RoomPollsViewModel.kt b/vector/src/main/java/im/vector/app/features/roomprofile/polls/RoomPollsViewModel.kt
index 83b71878cd..4b1a79f561 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/polls/RoomPollsViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/polls/RoomPollsViewModel.kt
@@ -29,6 +29,7 @@ import im.vector.app.features.roomprofile.polls.list.domain.SyncPollsUseCase
 import im.vector.app.features.roomprofile.polls.list.ui.PollSummaryMapper
 import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.mapNotNull
 import kotlinx.coroutines.flow.onEach
 import kotlinx.coroutines.launch
 
@@ -74,7 +75,7 @@ class RoomPollsViewModel @AssistedInject constructor(
 
     private fun observePolls(roomId: String) {
         getPollsUseCase.execute(roomId)
-                .map { it.map { event -> pollSummaryMapper.map(event) } }
+                .map { it.mapNotNull { event -> pollSummaryMapper.map(event) } }
                 .onEach { setState { copy(polls = it) } }
                 .launchIn(viewModelScope)
     }
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/ui/PollSummaryMapper.kt b/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/ui/PollSummaryMapper.kt
index f16e41e944..0bd7cd33af 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/ui/PollSummaryMapper.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/polls/list/ui/PollSummaryMapper.kt
@@ -22,6 +22,7 @@ import im.vector.app.features.home.room.detail.timeline.helper.PollResponseDataF
 import im.vector.app.features.home.room.detail.timeline.item.PollResponseData
 import org.matrix.android.sdk.api.session.room.model.message.MessagePollContent
 import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
+import timber.log.Timber
 import javax.inject.Inject
 
 // TODO add unit tests
@@ -30,20 +31,21 @@ class PollSummaryMapper @Inject constructor(
         private val pollOptionViewStateFactory: PollOptionViewStateFactory,
 ) {
 
-    fun map(timelineEvent: TimelineEvent): PollSummary {
+    fun map(timelineEvent: TimelineEvent): PollSummary? {
         val content = timelineEvent.getVectorLastMessageContent()
         val pollResponseData = pollResponseDataFactory.create(timelineEvent)
         val eventId = timelineEvent.root.eventId.orEmpty()
         val creationTimestamp = timelineEvent.root.originServerTs ?: 0
-        if (eventId.isNotEmpty() && creationTimestamp > 0 && content is MessagePollContent && pollResponseData != null) {
-            return convertToPollSummary(
+        return if (eventId.isNotEmpty() && creationTimestamp > 0 && content is MessagePollContent) {
+            convertToPollSummary(
                     eventId = eventId,
                     creationTimestamp = creationTimestamp,
                     messagePollContent = content,
                     pollResponseData = pollResponseData
             )
         } else {
-            throw IllegalStateException("missing mandatory info about poll event with id=$eventId")
+            Timber.w("missing mandatory info about poll event with id=$eventId")
+            null
         }
     }
 
@@ -51,11 +53,11 @@ class PollSummaryMapper @Inject constructor(
             eventId: String,
             creationTimestamp: Long,
             messagePollContent: MessagePollContent,
-            pollResponseData: PollResponseData
+            pollResponseData: PollResponseData?
     ): PollSummary {
         val pollCreationInfo = messagePollContent.getBestPollCreationInfo()
         val pollTitle = pollCreationInfo?.question?.getBestQuestion().orEmpty()
-        return if (pollResponseData.isClosed) {
+        return if (pollResponseData?.isClosed == true) {
             PollSummary.EndedPoll(
                     id = eventId,
                     creationTimestamp = creationTimestamp,