diff --git a/lms/lmsdb/bootstrap.py b/lms/lmsdb/bootstrap.py
index 09f08fe6..cae8fa24 100644
--- a/lms/lmsdb/bootstrap.py
+++ b/lms/lmsdb/bootstrap.py
@@ -338,6 +338,12 @@ def _linter_email_migration():
         log.info(f'{new_mail_address} already exists in User')
 
 
+def _add_is_model_solution_column() -> bool:
+    Solution = models.Solution
+    _migrate_column_in_table_if_needed(Solution, Solution.is_model_solution)
+    return True
+
+
 def is_tables_exists(tables: Union[Model, Iterable[Model]]) -> bool:
     if not isinstance(tables, (tuple, list)):
         tables = (tables,)
@@ -369,6 +375,8 @@ def main():
         _add_user_course_constaint()
         _linter_email_migration()
 
+        _add_is_model_solution_column()
+
         models.create_basic_roles()
         if models.User.select().count() == 0:
             models.create_demo_users()
diff --git a/lms/lmsdb/models.py b/lms/lmsdb/models.py
index 1b6ecca5..029c9507 100644
--- a/lms/lmsdb/models.py
+++ b/lms/lmsdb/models.py
@@ -624,6 +624,7 @@ class Solution(BaseModel):
     exercise = ForeignKeyField(Exercise, backref='solutions')
     solver = ForeignKeyField(User, backref='solutions')
     checker = ForeignKeyField(User, null=True, backref='solutions')
+    is_key_answer = BooleanField(default=False)
     state = CharField(
         choices=STATES.to_choices(),
         default=STATES.CREATED.name,