diff --git a/Pipfile b/Pipfile
index a653d6ded7bde25d0724dbb15f92c8e456f91d32..101897d0a0b3b9de36ddcb9f0c7a84f4c9cfdcb2 100644
--- a/Pipfile
+++ b/Pipfile
@@ -33,4 +33,4 @@ pytest-mock = "*"
 mock = "*"
 
 [requires]
-python_version = "3.7"
+python_version = "3.6"
diff --git a/app.py b/app.py
index 4193394b4efe0d8a3c2dd0b78374b12505b07d60..2ebae75a6dcd8f2937c6e4fe87961cbe5adfd81b 100644
--- a/app.py
+++ b/app.py
@@ -20,8 +20,9 @@ log = logger.getLogger(__name__)
 data_cli = AppGroup('data', help='Sample data initialization')
 users_cli = AppGroup('users', help='Users management')
 courses_cli = AppGroup('courses', help='Courses management')
-devel_cli = AppGroup('devel', help='Development options')
-submissions_cli = AppGroup('submissions', help='Submissions options')
+devel_cli = AppGroup('devel', help='Development management')
+submissions_cli = AppGroup('submissions', help='Submissions management')
+projects_cli = AppGroup('projects', help='Projects management')
 
 app: Flask = create_app()
 
@@ -29,6 +30,8 @@ app.cli.add_command(data_cli)
 app.cli.add_command(users_cli)
 app.cli.add_command(courses_cli)
 app.cli.add_command(devel_cli)
+app.cli.add_command(submissions_cli)
+app.cli.add_command(projects_cli)
 
 manager = DataManagement(app, db)
 
@@ -109,6 +112,12 @@ def cli_course_creates(name):
     log.info(f"[CMD] Created Course: {course}")
 
 
+@courses_cli.command('list', help="List courses")
+def cli_courses_list():
+    log.info(f"[CMD] List Courses")
+    course = manager.list_courses()
+
+
 @courses_cli.command(
     'create-role', help="Creates role by it's type in the course")
 @click.argument('course')
@@ -120,5 +129,21 @@ def cli_course_role_creates(course, type, name=None):
     log.info(f"[CMD] Created Course: {course}")
 
 
+@projects_cli.command('activate', help="activates project")
+@click.option('-p', '--project')
+@click.option('-c', '--course')
+def cli_projects_activate(project, course):
+    log.info(f"[CMD] Activating project: {project} in course {course}")
+    project = manager.activate_project(course, project)
+    log.info(f"[CMD] Project has been activated: {project}")
+
+
+@projects_cli.command('list', help="list projects")
+@click.option('-c', '--course')
+def cli_projects_list(course):
+    log.info(f"[CMD] Listing projects in the course {course}")
+    manager.list_projects(course)
+
+
 if __name__ == '__main__':
     cli_run_devel()
diff --git a/management/data/__init__.py b/management/data/__init__.py
index 595d25e931cff515f5718dd568033d4ce08cf5cd..43651851fce863a687035d97ab808fce6d6224ca 100644
--- a/management/data/__init__.py
+++ b/management/data/__init__.py
@@ -1,3 +1,4 @@
+import datetime
 from flask import Flask
 from flask_sqlalchemy import SQLAlchemy
 
@@ -7,6 +8,8 @@ from management.data.data_dev import init_dev_data
 from management.data.data_prod import init_prod_data
 from portal.database.models import Course, Role, User
 from portal.service import general
+from portal.service.general import write_entity
+from portal.tools import time
 
 
 class DataManagement(object):
@@ -75,7 +78,7 @@ class DataManagement(object):
                 name=name,
                 admin=True,
                 password=password
-            )
+                )
             self.db.session.commit()
         return user
 
@@ -109,3 +112,25 @@ class DataManagement(object):
         with self.app.app_context():
             for user in User.query.all():
                 print(f"{user.username} ({user.id}) - {user.created_at}")
+
+    def activate_project(self, course: str, project: str):
+        with self.app.app_context():
+            course = general.find_course(course)
+            project = general.find_project(course, project)
+            days_allow_to = time.current_time() + datetime.timedelta(days=1000)
+            project.config.archive_from = None
+            project.config.submissions_allowed_to = days_allow_to
+            write_entity(project)
+            self.db.session.commit()
+            return project
+
+    def list_projects(self, course: str):
+        with self.app.app_context():
+            course = general.find_course(course)
+            for project in course.projects:
+                print(f"{project.name}: {project.description}")
+
+    def list_courses(self):
+        with self.app.app_context():
+            for course in Course.query.all():
+                print(f"{course.codename}: {course.name}")
diff --git a/portal/database/models.py b/portal/database/models.py
index 6d4cb15a47e8f791f8bbb785a19955e43ed3f5c6..53f9d631046cd4030143c6398da5ad0a024ea1b5 100644
--- a/portal/database/models.py
+++ b/portal/database/models.py
@@ -552,10 +552,10 @@ class ProjectConfig(db.Model, EntityBase):
         submissions_allowed_to = normalize_time(submissions_allowed_to)
         if self.submissions_allowed_from is not None and \
                 self.submissions_allowed_from > submissions_allowed_to:
-            raise PortalDbError()
+            raise PortalDbError("Submissions allowed from later than to")
         if self.archive_from is not None and \
                 self.archive_from < submissions_allowed_to:
-            raise PortalDbError()
+            raise PortalDbError("Archive from is lesser than submissions allowed to")
         self._submissions_allowed_to = time.strip_seconds(
             submissions_allowed_to)
 
@@ -565,6 +565,9 @@ class ProjectConfig(db.Model, EntityBase):
         Args:
             archive_from(time): Time from which all the submissions are allowed to archive
         """
+        if archive_from is None:
+            self._archive_from = None
+            return
         archive_from = normalize_time(archive_from)
         if self.submissions_allowed_from is not None and \
                 self.submissions_allowed_from > archive_from:
diff --git a/portal/service/projects.py b/portal/service/projects.py
index 76457033dd255ff7fae31508ac213a1af36856b8..afb40e55e4a7d532b00f9c59713bc7a0f29a60d3 100644
--- a/portal/service/projects.py
+++ b/portal/service/projects.py
@@ -77,7 +77,7 @@ def update_project(project: Project, data: dict) -> Project:
 
 
 def __set_project_data(project: Project, data: dict) -> Project:
-    return general.update_entity(project, data, allowed=['name'])
+    return general.update_entity(project, data, allowed=['name', 'description'])
 
 
 def create_project(course: Course, data: dict) -> Project: