diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryLocation.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryLocation.kt
index c5315a98646599c1a8773a3f99fe58e9cdb11a90..d4192af041ce8789f72bb20a020d7e0d645126e0 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryLocation.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryLocation.kt
@@ -1,6 +1,7 @@
 package de.rki.coronawarnapp.contactdiary.model
 
 import de.rki.coronawarnapp.util.lists.HasStableId
+import java.util.Locale
 
 interface ContactDiaryLocation : HasStableId {
     val locationId: Long
@@ -8,4 +9,4 @@ interface ContactDiaryLocation : HasStableId {
 }
 
 fun List<ContactDiaryLocation>.sortByNameAndIdASC(): List<ContactDiaryLocation> =
-    this.sortedWith(compareBy({ it.locationName }, { it.locationId }))
+    this.sortedWith(compareBy({ it.locationName.toLowerCase(Locale.ROOT) }, { it.locationId }))
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryLocationVisit.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryLocationVisit.kt
index a1f4061d7966086715a548e5c50784a8f9f1a085..2d477bcee18248a08aa8ecdfd9d4937f7e635ed2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryLocationVisit.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryLocationVisit.kt
@@ -1,6 +1,7 @@
 package de.rki.coronawarnapp.contactdiary.model
 
 import org.joda.time.LocalDate
+import java.util.Locale
 
 interface ContactDiaryLocationVisit {
     val id: Long
@@ -9,4 +10,9 @@ interface ContactDiaryLocationVisit {
 }
 
 fun List<ContactDiaryLocationVisit>.sortByNameAndIdASC(): List<ContactDiaryLocationVisit> =
-    this.sortedWith(compareBy({ it.contactDiaryLocation.locationName }, { it.contactDiaryLocation.locationId }))
+    this.sortedWith(
+        compareBy(
+            { it.contactDiaryLocation.locationName.toLowerCase(Locale.ROOT) },
+            { it.contactDiaryLocation.locationId }
+        )
+    )
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryPerson.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryPerson.kt
index 95badab5576060f02a888551d0c416be8ad9ba9b..de391152bcfba7267c0d095124025137b2fc3214 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryPerson.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryPerson.kt
@@ -1,6 +1,7 @@
 package de.rki.coronawarnapp.contactdiary.model
 
 import de.rki.coronawarnapp.util.lists.HasStableId
+import java.util.Locale
 
 interface ContactDiaryPerson : HasStableId {
     val personId: Long
@@ -8,4 +9,4 @@ interface ContactDiaryPerson : HasStableId {
 }
 
 fun List<ContactDiaryPerson>.sortByNameAndIdASC(): List<ContactDiaryPerson> =
-    this.sortedWith(compareBy({ it.fullName }, { it.personId }))
+    this.sortedWith(compareBy({ it.fullName.toLowerCase(Locale.ROOT) }, { it.personId }))
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryPersonEncounter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryPersonEncounter.kt
index 60bf3887a3680388cbb6ec527eaf5e0bfc86ffec..47975a267757d5a18018d5a21c46d088bf32da3f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryPersonEncounter.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/contactdiary/model/ContactDiaryPersonEncounter.kt
@@ -1,6 +1,7 @@
 package de.rki.coronawarnapp.contactdiary.model
 
 import org.joda.time.LocalDate
+import java.util.Locale
 
 interface ContactDiaryPersonEncounter {
     val id: Long
@@ -9,4 +10,9 @@ interface ContactDiaryPersonEncounter {
 }
 
 fun List<ContactDiaryPersonEncounter>.sortByNameAndIdASC(): List<ContactDiaryPersonEncounter> =
-    this.sortedWith(compareBy({ it.contactDiaryPerson.fullName }, { it.contactDiaryPerson.personId }))
+    this.sortedWith(
+        compareBy(
+            { it.contactDiaryPerson.fullName.toLowerCase(Locale.ROOT) },
+            { it.contactDiaryPerson.personId }
+        )
+    )
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensionsTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensionsTest.kt
index ea4feec334a5b47f0792f5c24d615b686902b27f..ee98a610d59b9994cbd3d652d0ca837c7bd877a9 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensionsTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/contactdiary/util/ContactDiaryExtensionsTest.kt
@@ -1,5 +1,8 @@
 package de.rki.coronawarnapp.contactdiary.util
 
+import de.rki.coronawarnapp.contactdiary.model.DefaultContactDiaryLocation
+import de.rki.coronawarnapp.contactdiary.model.DefaultContactDiaryPerson
+import de.rki.coronawarnapp.contactdiary.model.sortByNameAndIdASC
 import org.junit.Assert
 import org.junit.jupiter.api.Test
 
@@ -12,4 +15,78 @@ class ContactDiaryExtensionsTest {
         Assert.assertEquals("Granny   ".formatContactDiaryNameField(5), "Grann")
         Assert.assertEquals("    ".formatContactDiaryNameField(2), "  ")
     }
+
+    @Test
+    fun `upper and lowercase mix sorting for names`() {
+        val testList = listOf(
+            DefaultContactDiaryPerson(1, "Max Mustermann"),
+            DefaultContactDiaryPerson(2, "Erika Musterfrau"),
+            DefaultContactDiaryPerson(3, "erika musterfrau2"),
+        )
+
+        val expectedResult = listOf(
+            DefaultContactDiaryPerson(2, "Erika Musterfrau"),
+            DefaultContactDiaryPerson(3, "erika musterfrau2"),
+            DefaultContactDiaryPerson(1, "Max Mustermann"),
+        )
+
+        // Test that lowercase "erika musterfrau2" is sorted to the 2nd position instead of the end
+        Assert.assertEquals(expectedResult, testList.sortByNameAndIdASC())
+    }
+
+    @Test
+    fun `sort by id when names are equal for names`() {
+        val testList = listOf(
+            DefaultContactDiaryPerson(1, "Max Mustermann"),
+            DefaultContactDiaryPerson(3, "Erika Musterfrau"),
+            DefaultContactDiaryPerson(2, "Erika Musterfrau"),
+        )
+
+        val expectedResult = listOf(
+            DefaultContactDiaryPerson(2, "Erika Musterfrau"),
+            DefaultContactDiaryPerson(3, "Erika Musterfrau"),
+            DefaultContactDiaryPerson(1, "Max Mustermann"),
+        )
+
+        // Test that "Erika Musterfrau" with lower personId comes before the other one, even though it was
+        // added as the last entry to the testList
+        Assert.assertEquals(expectedResult, testList.sortByNameAndIdASC())
+    }
+
+    @Test
+    fun `upper and lowercase mix sorting for places`() {
+        val testList = listOf(
+            DefaultContactDiaryLocation(1, "Berlin"),
+            DefaultContactDiaryLocation(2, "At home"),
+            DefaultContactDiaryLocation(3, "at home"),
+        )
+
+        val expectedResult = listOf(
+            DefaultContactDiaryLocation(2, "At home"),
+            DefaultContactDiaryLocation(3, "at home"),
+            DefaultContactDiaryLocation(1, "Berlin"),
+        )
+
+        // Test that lowercase "at home" is sorted to the 2nd position instead of the end
+        Assert.assertEquals(expectedResult, testList.sortByNameAndIdASC())
+    }
+
+    @Test
+    fun `sort by id when names are equal for places`() {
+        val testList = listOf(
+            DefaultContactDiaryLocation(1, "Berlin"),
+            DefaultContactDiaryLocation(3, "At home"),
+            DefaultContactDiaryLocation(2, "At home"),
+        )
+
+        val expectedResult = listOf(
+            DefaultContactDiaryLocation(2, "At home"),
+            DefaultContactDiaryLocation(3, "At home"),
+            DefaultContactDiaryLocation(1, "Berlin"),
+        )
+
+        // Test that "At home" with lower locationId comes before the other one, even though it was
+        // added as the last entry to the testList
+        Assert.assertEquals(expectedResult, testList.sortByNameAndIdASC())
+    }
 }