diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 1c5d84e49f244191cf28eef3e8a4fe48c651f621..f07e1be13705a187d9d70cc35e3c4fad891850de 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -26,6 +26,7 @@ Fixed
 
 * Search course groups not only by parent groups and subject, but also take
   the teachers (group owners) into account
+* Don't recreate lesson periods if they change, but just update them.
 
 `2.1.3`_ - 2022-02-06
 ---------------------
diff --git a/aleksis/apps/untis/util/mysql/importers/lessons.py b/aleksis/apps/untis/util/mysql/importers/lessons.py
index eae5812fb69dbd38c01da1022581a13e30b37014..dc7aa154c85b4ca21c05030c53e7a49f9d25a81b 100644
--- a/aleksis/apps/untis/util/mysql/importers/lessons.py
+++ b/aleksis/apps/untis/util/mysql/importers/lessons.py
@@ -268,10 +268,7 @@ def import_lessons(
             # All times for this course
             old_lesson_periods_qs = chronos_models.LessonPeriod.objects.filter(lesson=lesson)
 
-            # If length has changed, delete all lesson periods
-            if old_lesson_periods_qs.count() != len(time_periods):
-                old_lesson_periods_qs.delete()
-                logger.info("    Lesson periods deleted")
+            existing_lesson_period_pks = []
 
             # Sync time periods
             for j, time_period in enumerate(time_periods):
@@ -285,24 +282,29 @@ def import_lessons(
                     room = None
 
                 # Check if an old lesson period is provided
-                old_lesson_period_qs = old_lesson_periods_qs.filter(element_id_untis=j)
+                old_lesson_period_qs = old_lesson_periods_qs.filter(period=time_period)
                 if old_lesson_period_qs.exists():
                     # Update old lesson period
 
-                    old_lesson_period = old_lesson_period_qs[0]
-                    if old_lesson_period.period != time_period or old_lesson_period.room != room:
-                        old_lesson_period.period = time_period
-                        old_lesson_period.room = room
-                        old_lesson_period.save()
-                        logger.info("      Time period and room updated")
+                    lesson_period = old_lesson_period_qs[0]
+                    if lesson_period.room != room or lesson_period.element_id_untis != j:
+                        lesson_period.element_id_untis = j
+                        lesson_period.room = room
+                        lesson_period.save()
+                        logger.info("      Untis reference and room updated")
                 else:
                     # Create new lesson period
 
-                    chronos_models.LessonPeriod.objects.create(
+                    lesson_period = chronos_models.LessonPeriod.objects.create(
                         lesson=lesson, period=time_period, room=room, element_id_untis=j
                     )
-                    logger.info("      New time period added")
+                    logger.info("      New lesson period added")
 
+                existing_lesson_period_pks.append(lesson_period.pk)
+
+            # delete all no-longer existing lesson periods
+            old_lesson_periods_qs.exclude(pk__in=existing_lesson_period_pks).delete()
+            logger.info("    Old lesson periods deleted")
             current_teacher_id = teacher_id
 
     for lesson in chronos_models.Lesson.objects.filter(validity=validity_range):