diff --git a/poetry.lock b/poetry.lock
index e14bc1cbc18aa8141cd1d45c68424752e54b2065..c22e0baed738e641b49ce967890f4b659aa4bbef 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -49,7 +49,7 @@ reference = "gitlab"
 
 [[package]]
 name = "aleksis-core"
-version = "2.4.dev0+20211219212617.32a63b24"
+version = "2.3.1"
 description = "AlekSIS (School Information System) — Core"
 category = "main"
 optional = false
@@ -121,15 +121,10 @@ spdx-license-list = ">=0.5.0,<0.6.0"
 Whoosh = ">=2.7.4,<3.0.0"
 
 [package.extras]
-s3 = ["boto3 (>=1.17.33,<2.0.0)", "django-storages (>=1.11.1,<2.0.0)"]
-ldap = ["django-auth-ldap (>=4.0,<5.0)"]
+ldap = ["django-auth-ldap (>=3.0,<4.0)"]
+s3 = ["django-storages (>=1.11.1,<2.0.0)", "boto3 (>=1.17.33,<2.0.0)"]
 sentry = ["sentry-sdk (>=1.4.3,<2.0.0)"]
 
-[package.source]
-type = "legacy"
-url = "https://edugit.org/api/v4/projects/461/packages/pypi/simple"
-reference = "gitlab"
-
 [[package]]
 name = "amqp"
 version = "5.0.9"
@@ -325,19 +320,20 @@ django = ["Django (>=2.2,<5.0)"]
 
 [[package]]
 name = "celery"
-version = "5.0.2"
+version = "5.1.2"
 description = "Distributed Task Queue."
 category = "main"
 optional = false
 python-versions = ">=3.6,"
 
 [package.dependencies]
-billiard = ">=3.6.3.0,<4.0"
-click = ">=7.0"
+billiard = ">=3.6.4.0,<4.0"
+click = ">=7.0,<8.0"
 click-didyoumean = ">=0.0.3"
+click-plugins = ">=1.1.1"
 click-repl = ">=0.1.6"
 Django = {version = ">=1.11", optional = true, markers = "extra == \"django\""}
-kombu = ">=5.0.0,<6.0"
+kombu = ">=5.1.0,<6.0"
 pytz = ">0.0-dev"
 redis = {version = ">=3.2.0", optional = true, markers = "extra == \"redis\""}
 vine = ">=5.0.0,<6.0"
@@ -345,10 +341,10 @@ vine = ">=5.0.0,<6.0"
 [package.extras]
 arangodb = ["pyArango (>=1.3.2)"]
 auth = ["cryptography"]
-azureblockblob = ["azure-storage (==0.36.0)", "azure-common (==1.1.5)", "azure-storage-common (==1.1.0)"]
+azureblockblob = ["azure-storage-blob (==12.6.0)"]
 brotli = ["brotli (>=1.0.0)", "brotlipy (>=0.7.0)"]
 cassandra = ["cassandra-driver (<3.21.0)"]
-consul = ["python-consul"]
+consul = ["python-consul2"]
 cosmosdbsql = ["pydocumentdb (==2.3.2)"]
 couchbase = ["couchbase (>=3.0.0)"]
 couchdb = ["pycouchdb"]
@@ -358,12 +354,12 @@ elasticsearch = ["elasticsearch"]
 eventlet = ["eventlet (>=0.26.1)"]
 gevent = ["gevent (>=1.0.0)"]
 librabbitmq = ["librabbitmq (>=1.5.0)"]
-lzma = ["backports.lzma"]
 memcache = ["pylibmc"]
 mongodb = ["pymongo[srv] (>=3.3.0)"]
 msgpack = ["msgpack"]
 pymemcache = ["python-memcached"]
 pyro = ["pyro4"]
+pytest = ["pytest-celery"]
 redis = ["redis (>=3.2.0)"]
 s3 = ["boto3 (>=1.9.125)"]
 slmq = ["softlayer-messaging (>=1.0.3)"]
@@ -433,14 +429,11 @@ unicode_backport = ["unicodedata2"]
 
 [[package]]
 name = "click"
-version = "8.0.3"
+version = "7.1.2"
 description = "Composable command line interface toolkit"
 category = "main"
 optional = false
-python-versions = ">=3.6"
-
-[package.dependencies]
-colorama = {version = "*", markers = "platform_system == \"Windows\""}
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 
 [[package]]
 name = "click-didyoumean"
@@ -453,6 +446,20 @@ python-versions = ">=3.6.2,<4.0.0"
 [package.dependencies]
 click = ">=7"
 
+[[package]]
+name = "click-plugins"
+version = "1.1.1"
+description = "An extension module for click to enable registering CLI commands via setuptools entry-points."
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+click = ">=4.0"
+
+[package.extras]
+dev = ["pytest (>=3.6)", "pytest-cov", "wheel", "coveralls"]
+
 [[package]]
 name = "click-repl"
 version = "0.2.0"
@@ -2822,7 +2829,7 @@ pycryptodome = "*"
 [metadata]
 lock-version = "1.1"
 python-versions = "^3.9"
-content-hash = "1fdaba543057eb73b6e8fbcd0349ec9563b600814d2a66b54f6908b941fdf830"
+content-hash = "4b3a3e1e6e9a4019d9d447d15358b5e3a14a8f98708d8ea0bba371b90dbb6bad"
 
 [metadata.files]
 alabaster = [
@@ -2834,8 +2841,8 @@ aleksis-builddeps = [
     {file = "AlekSIS_Builddeps-5+20211217223231.67eacc89-py3-none-any.whl", hash = "sha256:1af558d23109d859c1d04a6dbd0aa46b7ff02dade40d68e511855a83ad4a1e14"},
 ]
 aleksis-core = [
-    {file = "AlekSIS-Core-2.4.dev0+20211219212617.32a63b24.tar.gz", hash = "sha256:fbb78178fbb64fe76f0e7f75b52bf3464226d5ddea0429a4e522b4a248d04c09"},
-    {file = "AlekSIS_Core-2.4.dev0+20211219212617.32a63b24-py3-none-any.whl", hash = "sha256:ba5eb4103d9b0f23149422df109cff4dafa68d57d987d014557d2624adfd7b3d"},
+    {file = "AlekSIS-Core-2.3.1.tar.gz", hash = "sha256:5aea8beb684faabcac9c68f0dba28dd16d9e0f204900220f65ed301e525f7e6e"},
+    {file = "AlekSIS_Core-2.3.1-py3-none-any.whl", hash = "sha256:cb9751fff6a5a563ba0f39791070e184c30deb56abec797f21fd27b74131c093"},
 ]
 amqp = [
     {file = "amqp-5.0.9-py3-none-any.whl", hash = "sha256:9cd81f7b023fc04bbb108718fbac674f06901b77bfcdce85b10e2a5d0ee91be5"},
@@ -2905,8 +2912,8 @@ calendarweek = [
     {file = "calendarweek-0.5.1.tar.gz", hash = "sha256:fffe2db46dc272f2ede867bfe20e9b07fb051429f25441fb45fb2a4dd69ee0c7"},
 ]
 celery = [
-    {file = "celery-5.0.2-py3-none-any.whl", hash = "sha256:930c3acd55349d028c4e7104a7d377729cbcca19d9fce470c17172d9e7f9a8b6"},
-    {file = "celery-5.0.2.tar.gz", hash = "sha256:012c814967fe89e3f5d2cf49df2dba3de5f29253a7f4f2270e8fce6b901b4ebf"},
+    {file = "celery-5.1.2-py3-none-any.whl", hash = "sha256:9dab2170b4038f7bf10ef2861dbf486ddf1d20592290a1040f7b7a1259705d42"},
+    {file = "celery-5.1.2.tar.gz", hash = "sha256:8d9a3de9162965e97f8e8cc584c67aad83b3f7a267584fa47701ed11c3e0d4b0"},
 ]
 celery-haystack-ng = [
     {file = "celery-haystack-ng-0.20.post2.tar.gz", hash = "sha256:d2e077851f13dddc36fc86134c7c8a937e46ae75e576eb8e77e03b03977fc7bb"},
@@ -2977,13 +2984,17 @@ charset-normalizer = [
     {file = "charset_normalizer-2.0.9-py3-none-any.whl", hash = "sha256:1eecaa09422db5be9e29d7fc65664e6c33bd06f9ced7838578ba40d58bdf3721"},
 ]
 click = [
-    {file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"},
-    {file = "click-8.0.3.tar.gz", hash = "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"},
+    {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"},
+    {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"},
 ]
 click-didyoumean = [
     {file = "click-didyoumean-0.3.0.tar.gz", hash = "sha256:f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035"},
     {file = "click_didyoumean-0.3.0-py3-none-any.whl", hash = "sha256:a0713dc7a1de3f06bc0df5a9567ad19ead2d3d5689b434768a6145bff77c0667"},
 ]
+click-plugins = [
+    {file = "click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b"},
+    {file = "click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8"},
+]
 click-repl = [
     {file = "click-repl-0.2.0.tar.gz", hash = "sha256:cd12f68d745bf6151210790540b4cb064c7b13e571bc64b6957d98d120dacfd8"},
     {file = "click_repl-0.2.0-py3-none-any.whl", hash = "sha256:94b3fbbc9406a236f176e0506524b2937e4b23b6f4c0c0b2a0a83f8a64e9194b"},
diff --git a/pyproject.toml b/pyproject.toml
index 8143699e29082ed95cf91fdb5969d1761b3c2713..f2a3077ea43291e3b752ae89528d91ab986e8756 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "AlekSIS-App-CSVImport"
-version = "2.0rc2"
+version = "2.0"
 packages = [
     { include = "aleksis" }
 ]
@@ -14,6 +14,7 @@ homepage = "https://aleksis.org/"
 repository = "https://edugit.org/AlekSIS/Onboarding/AlekSIS-App-CSVImport"
 documentation = "https://aleksis.edugit.io/AlekSIS/docs/html/"
 classifiers = [
+    "Development Status :: 5 - Production/Stable",
     "Environment :: Web Environment",
     "Intended Audience :: Education",
     "Topic :: Education"
@@ -30,7 +31,7 @@ pandas = "^1.0.0"
 phonenumbers = "^8.10"
 dateparser = "^1.0.0"
 pycountry = "^20.7.3"
-aleksis-core = "^2.0rc"
+aleksis-core = "^2.0"
 
 [tool.poetry.dev-dependencies]
 aleksis-builddeps = "^5"