diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index f6162fac619ddd09347f009f2a777cad9807fc32..8e558fb1956617ff36280768b3fefdef47089f47 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -29,6 +29,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.
+* Import failed if there were multiple versions for a term in the future.
 
 `2.1.3`_ - 2022-02-06
 ---------------------
diff --git a/aleksis/apps/untis/commands.py b/aleksis/apps/untis/commands.py
index ae85233596d18b6f63f6c1f9e4434e6709e6ffd6..515c7f8cc4c3d8979f9372d5e807ed48c69b69bf 100644
--- a/aleksis/apps/untis/commands.py
+++ b/aleksis/apps/untis/commands.py
@@ -1,10 +1,11 @@
 from typing import Optional
 
-from django.db.models import QuerySet
+from django.db.models import Q, QuerySet
 from django.utils.functional import classproperty
 
 from aleksis.apps.untis.util.mysql.importers.terms import (
     get_future_terms_for_date,
+    get_terms,
     get_terms_for_date,
 )
 
@@ -72,7 +73,12 @@ class CurrentNextImportCommand(ImportCommand):
         terms = get_terms_for_date()
         future_terms = get_future_terms_for_date()
         if future_terms.exists():
-            terms = terms.union(future_terms[0:1])
+            future_term = future_terms.first()
+            terms = (
+                get_terms()
+                .filter(Q(pk__in=terms.values_list("pk", flat=True)) | Q(pk=future_term.pk))
+                .distinct()
+            )
         return terms
 
 
@@ -85,7 +91,14 @@ class CurrentFutureImportCommand(ImportCommand):
     def get_terms(cls) -> Optional[QuerySet]:
         terms = get_terms_for_date()
         future_terms = get_future_terms_for_date()
-        terms = terms.union(future_terms)
+        terms = (
+            get_terms()
+            .filter(
+                Q(pk__in=terms.values_list("pk", flat=True))
+                | Q(pk__in=future_terms.values_list("pk", flat=True))
+            )
+            .distinct()
+        )
         return terms
 
 
diff --git a/aleksis/apps/untis/util/mysql/importers/terms.py b/aleksis/apps/untis/util/mysql/importers/terms.py
index 092a9f9d990e7056461257afc74cb3c8560ad66b..99f1dd1375ecf66082d3e4c44504053e501bbcd5 100644
--- a/aleksis/apps/untis/util/mysql/importers/terms.py
+++ b/aleksis/apps/untis/util/mysql/importers/terms.py
@@ -19,12 +19,17 @@ from aleksis.core import models as core_models
 from .... import models as mysql_models
 
 
+def get_terms() -> QuerySet:
+    """Get all terms."""
+    return run_using(mysql_models.Terms.objects).order_by("datefrom")
+
+
 def get_terms_for_date(for_date: Optional[date] = None) -> QuerySet:
     """Get term queryset with term valid for the provided date."""
     if not for_date:
         for_date = timezone.now().date()
 
-    qs = run_using(mysql_models.Terms.objects).filter(
+    qs = get_terms().filter(
         datefrom__lte=date_to_untis_date(for_date),
         dateto__gte=date_to_untis_date(for_date),
     )
@@ -37,7 +42,7 @@ def get_future_terms_for_date(for_date: Optional[date] = None) -> QuerySet:
     if not for_date:
         for_date = timezone.now().date()
 
-    qs = run_using(mysql_models.Terms.objects).filter(
+    qs = get_terms().filter(
         datefrom__gt=date_to_untis_date(for_date),
     )