diff --git a/CHANGES.md b/CHANGES.md
index efa3fea72318f0223ee36bae2352f96fd74d7f53..4f580c4e5d7b379dc86ab738907aad1b89b6b8a4 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,5 +1,10 @@
 Please also refer to the Changelog of Element Android: https://github.com/vector-im/element-android/blob/main/CHANGES.md
 
+Changes in Matrix-SDK 1.3.14 (2022-01-12)
+===================================================
+
+Imported from Element 1.3.14. (https://github.com/vector-im/element-android/releases/tag/v1.3.14)
+
 Changes in Matrix-SDK 1.3.13 (2022-01-11)
 ===================================================
 
diff --git a/gradle.properties b/gradle.properties
index 050c0557f7b32ba6979903b1c021b0bb26977488..48f69eb43f4ce7d3e9dbeb91aab36161c9d56800 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -26,7 +26,7 @@ vector.httpLogLevel=NONE
 # Ref: https://github.com/vanniktech/gradle-maven-publish-plugin
 GROUP=org.matrix.android
 POM_ARTIFACT_ID=matrix-android-sdk2
-VERSION_NAME=1.3.13
+VERSION_NAME=1.3.14
 
 POM_PACKAGING=aar
 
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt
index 7dd8cc73ae28bf713ca79a8f743c09cc81af58ee..0646e4d2b8c7e72925209d502fce6c68d1c4add2 100755
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt
@@ -578,7 +578,7 @@ internal class DefaultCryptoService @Inject constructor(
         // (for now at least. Maybe we should alert the user somehow?)
         val existingAlgorithm = cryptoStore.getRoomAlgorithm(roomId)
 
-        if (existingAlgorithm == algorithm) {
+        if (existingAlgorithm == algorithm && roomEncryptorsStore.get(roomId) != null) {
             // ignore
             Timber.tag(loggerTag.value).e("setEncryptionInRoom() : Ignoring m.room.encryption for same alg ($algorithm) in  $roomId")
             return false
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/helper/TimelineEventEntityHelper.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/helper/TimelineEventEntityHelper.kt
index 1d2cbcad51d08f655fa841bd902ceec08a9c59c1..ea508731b1f6200bebc6c784a552d0023be3da58 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/helper/TimelineEventEntityHelper.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/helper/TimelineEventEntityHelper.kt
@@ -30,8 +30,8 @@ internal fun TimelineEventEntity.Companion.nextId(realm: Realm): Long {
 }
 
 internal fun TimelineEventEntity.isMoreRecentThan(eventToCheck: TimelineEventEntity): Boolean {
-    val currentChunk = this.chunk?.first() ?: return false
-    val chunkToCheck = eventToCheck.chunk?.firstOrNull() ?: return false
+    val currentChunk = this.chunk?.first(null) ?: return false
+    val chunkToCheck = eventToCheck.chunk?.first(null) ?: return false
     return if (currentChunk == chunkToCheck) {
         this.displayIndex >= eventToCheck.displayIndex
     } else {
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomGetter.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomGetter.kt
index eb9cd9fcba995ef2f28b37851fb8e388962a331c..e3f4732cc1402de439cffa907bee2571adb1c40f 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomGetter.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomGetter.kt
@@ -51,7 +51,7 @@ internal class DefaultRoomGetter @Inject constructor(
                     .equalTo(RoomSummaryEntityFields.IS_DIRECT, true)
                     .equalTo(RoomSummaryEntityFields.MEMBERSHIP_STR, Membership.JOIN.name)
                     .findAll()
-                    .firstOrNull { dm -> dm.otherMemberIds.size == 1 && dm.otherMemberIds.first() == otherUserId }
+                    .firstOrNull { dm -> dm.otherMemberIds.size == 1 && dm.otherMemberIds.first(null) == otherUserId }
                     ?.roomId
         }
     }
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/TimelineChunk.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/TimelineChunk.kt
index 14cba2a4b8de751e33f05c9b86fb03ae34037236..6af03a858ad8c885a236789426b4a5747a80fe0c 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/TimelineChunk.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/timeline/TimelineChunk.kt
@@ -426,9 +426,9 @@ internal class TimelineChunk(private val chunkEntity: ChunkEntity,
             if (initialEventId != null) {
                 frozenTimelineEvents.where().equalTo(TimelineEventEntityFields.EVENT_ID, initialEventId).findFirst()?.displayIndex
             } else if (direction == Timeline.Direction.BACKWARDS) {
-                frozenTimelineEvents.first()?.displayIndex
+                frozenTimelineEvents.first(null)?.displayIndex
             } else {
-                frozenTimelineEvents.last()?.displayIndex
+                frozenTimelineEvents.last(null)?.displayIndex
             }
         } else if (direction == Timeline.Direction.FORWARDS) {
             builtEvents.first().displayIndex + 1