diff --git a/client/src/interfaces/ApiModels.ts b/client/src/interfaces/ApiModels.ts
index a6fa68a0e9b58dcc63ad67d29884bbf3e781a64a..2734884b7783b662113dc00f61d112f8a58f5dd6 100644
--- a/client/src/interfaces/ApiModels.ts
+++ b/client/src/interfaces/ApiModels.ts
@@ -56,6 +56,7 @@ export interface Question extends NameID {
   slide_id: number
   total_score: number
   type_id: number
+  correcting_instructions: string
 }
 
 export interface QuestionAlternative {
diff --git a/client/src/interfaces/ApiRichModels.ts b/client/src/interfaces/ApiRichModels.ts
index b9ca9f333640071518a9f216e08a77af670eb153..253565a40e4ca4c8d0b1cc3597a58d5eb91cf2ec 100644
--- a/client/src/interfaces/ApiRichModels.ts
+++ b/client/src/interfaces/ApiRichModels.ts
@@ -36,5 +36,6 @@ export interface RichQuestion {
   total_score: number
   question_type: QuestionType
   type_id: number
+  correcting_instructions: string
   alternatives: QuestionAlternative[]
 }
diff --git a/client/src/pages/presentationEditor/components/slideSettingsComponents/Instructions.tsx b/client/src/pages/presentationEditor/components/slideSettingsComponents/Instructions.tsx
index 7d609300966a6f6e5141685f1fbaed7e0298d7ba..48917fcc01967b72e121b506fc6e4e05ac883c40 100644
--- a/client/src/pages/presentationEditor/components/slideSettingsComponents/Instructions.tsx
+++ b/client/src/pages/presentationEditor/components/slideSettingsComponents/Instructions.tsx
@@ -29,7 +29,7 @@ const Instructions = ({ activeSlide, competitionId }: InstructionsProps) => {
             .put(
               `/api/competitions/${competitionId}/slides/${activeSlide.id}/questions/${activeSlide.questions[0].id}`,
               {
-                instructions: event.target.value,
+                correcting_instructions: event.target.value,
               }
             )
             .then(() => {
@@ -55,7 +55,7 @@ const Instructions = ({ activeSlide, competitionId }: InstructionsProps) => {
         <Center>
           <TextField
             id="outlined-basic"
-            defaultValue={''}
+            defaultValue={activeSlide.questions[0].correcting_instructions}
             onChange={updateInstructionsText}
             variant="outlined"
             fullWidth={true}
diff --git a/client/src/pages/views/components/JudgeScoringInstructions.tsx b/client/src/pages/views/components/JudgeScoringInstructions.tsx
index 3cc803194a9754bea8a9b23b3f2b073d6547c05c..97062246b33a5105efd34fbfb2ac3a66296ee93b 100644
--- a/client/src/pages/views/components/JudgeScoringInstructions.tsx
+++ b/client/src/pages/views/components/JudgeScoringInstructions.tsx
@@ -20,7 +20,7 @@ const JudgeScoringInstructions = ({ question }: JudgeScoringInstructionsProps) =
   return (
     <JudgeScoringInstructionsContainer elevation={3}>
       <Typography variant="h4">Rättningsinstruktioner</Typography>
-      <Typography variant="body1">Såhär rättar du denhär frågan</Typography>
+      <Typography variant="body1">{question?.correcting_instructions}</Typography>
     </JudgeScoringInstructionsContainer>
   )
 }
diff --git a/server/app/apis/questions.py b/server/app/apis/questions.py
index b14849d224501e48f9cce8a108bfd24f29657e99..94df2a36456baf6e8a492250944dc4156b5aa21f 100644
--- a/server/app/apis/questions.py
+++ b/server/app/apis/questions.py
@@ -14,11 +14,13 @@ question_parser_add = reqparse.RequestParser()
 question_parser_add.add_argument("name", type=str, default=None, location="json")
 question_parser_add.add_argument("total_score", type=int, default=None, location="json")
 question_parser_add.add_argument("type_id", type=int, required=True, location="json")
+question_parser_add.add_argument("correcting_instructions", type=str, default=None, location="json")
 
 question_parser_edit = reqparse.RequestParser()
 question_parser_edit.add_argument("name", type=str, default=sentinel, location="json")
 question_parser_edit.add_argument("total_score", type=int, default=sentinel, location="json")
 question_parser_edit.add_argument("type_id", type=int, default=sentinel, location="json")
+question_parser_edit.add_argument("correcting_instructions", type=str, default=sentinel, location="json")
 
 
 @api.route("/questions")
diff --git a/server/app/core/rich_schemas.py b/server/app/core/rich_schemas.py
index 7d883584776677ee1be21975ed5ae413dc2019fa..60f7ac309d37b3be15c0378a94a71dc10cdf7cc8 100644
--- a/server/app/core/rich_schemas.py
+++ b/server/app/core/rich_schemas.py
@@ -25,6 +25,7 @@ class QuestionSchemaRich(RichSchema):
     total_score = ma.auto_field()
     slide_id = ma.auto_field()
     type_id = ma.auto_field()
+    correcting_instructions = ma.auto_field()
     alternatives = fields.Nested(schemas.QuestionAlternativeSchema, many=True)
 
 
diff --git a/server/app/core/schemas.py b/server/app/core/schemas.py
index 73ac21cbd396d1ee175e6151003d05f1a10dc82b..a2e81c2568f6e1c100fbc5c302a200644e11433d 100644
--- a/server/app/core/schemas.py
+++ b/server/app/core/schemas.py
@@ -63,6 +63,7 @@ class QuestionSchema(BaseSchema):
     total_score = ma.auto_field()
     type_id = ma.auto_field()
     slide_id = ma.auto_field()
+    correcting_instructions = ma.auto_field()
 
 
 class QuestionAnswerSchema(BaseSchema):
diff --git a/server/app/database/controller/add.py b/server/app/database/controller/add.py
index 6c5ea14bcd143a4bac5d0f214fc3d14f8f73bfe0..18bcd4b130a1f6aebd49df520c83e741a819d8cc 100644
--- a/server/app/database/controller/add.py
+++ b/server/app/database/controller/add.py
@@ -179,10 +179,13 @@ def _competition_no_slides(name, year, city_id, font=None):
         item_competition.font = font
 
     # Add code for Judge view
-    code(item_competition.id, 2)
+    code(2, item_competition.id)
 
     # Add code for Audience view
-    code(item_competition.id, 3)
+    code(3, item_competition.id)
+
+    # Add code for Operator view
+    code(4, item_competition.id)
 
     item_competition = utils.refresh(item_competition)
     return item_competition
@@ -244,12 +247,12 @@ def user(email, password, role_id, city_id, name=None):
     return db_add(User(email, password, role_id, city_id, name))
 
 
-def question(name, total_score, type_id, slide_id):
+def question(name, total_score, type_id, slide_id, correcting_instructions=None):
     """
     Adds a question to the specified slide using the provided arguments.
     """
 
-    return db_add(Question(name, total_score, type_id, slide_id))
+    return db_add(Question(name, total_score, type_id, slide_id, correcting_instructions))
 
 
 def question_alternative(text, value, question_id):
diff --git a/server/app/database/controller/copy.py b/server/app/database/controller/copy.py
index a32ba1deda39c231bfa7ea2b26f91337e0ee2bec..08d743472035034b3b45eda3bdc6553f26377f60 100644
--- a/server/app/database/controller/copy.py
+++ b/server/app/database/controller/copy.py
@@ -24,6 +24,7 @@ def _question(item_question_old, slide_id):
             item_question_old.total_score,
             item_question_old.type_id,
             slide_id,
+            item_question_old.correcting_instructions,
         )
     )
 
@@ -102,7 +103,6 @@ def competition(item_competition_old):
     name = "Kopia av " + item_competition_old.name
     item_competition, total = search.competition(name=name)
     if item_competition:
-        print(f"{item_competition[total-1].name}, {total=}")
         name = "Kopia av " + item_competition[total - 1].name
 
     item_competition_new = add._competition_no_slides(
diff --git a/server/app/database/controller/delete.py b/server/app/database/controller/delete.py
index f3dc2dd51b680bc8834d9cf734001ac7291883d8..93a4c3393bf57fed22f2d672338f6cc592ecc543 100644
--- a/server/app/database/controller/delete.py
+++ b/server/app/database/controller/delete.py
@@ -56,10 +56,13 @@ def slide(item_slide):
 
 
 def team(item_team):
-    """ Deletes team and its question answers. """
+    """ Deletes team, its question answers and the code. """
 
     for item_question_answer in item_team.question_answers:
         question_answers(item_question_answer)
+    for item_code in item_team.code:
+        code(item_code)
+
     default(item_team)
 
 
@@ -86,12 +89,19 @@ def question_answers(item_question_answers):
 
 
 def competition(item_competition):
-    """ Deletes competition and its slides and teams. """
+    """ Deletes competition, its slides, teams and codes. """
 
     for item_slide in item_competition.slides:
         _slide(item_slide)
     for item_team in item_competition.teams:
         team(item_team)
+    for item_code in item_competition.codes:
+        code(item_code)
 
-    # TODO codes
     default(item_competition)
+
+
+def code(item_code):
+    """ Deletes competition code. """
+
+    default(item_code)
diff --git a/server/app/database/models.py b/server/app/database/models.py
index d4e177b070755d75cada2988e43468f28794146b..0f909aee7f7ebf33efba3b5145601c9a6f9bced5 100644
--- a/server/app/database/models.py
+++ b/server/app/database/models.py
@@ -104,6 +104,7 @@ class Competition(db.Model):
 
     slides = db.relationship("Slide", backref="competition")
     teams = db.relationship("Team", backref="competition")
+    codes = db.relationship("Code", backref="competition")
 
     background_image = db.relationship("Media", uselist=False)
 
@@ -121,6 +122,7 @@ class Team(db.Model):
     competition_id = db.Column(db.Integer, db.ForeignKey("competition.id"), nullable=False)
 
     question_answers = db.relationship("QuestionAnswer", backref="team")
+    code = db.relationship("Code", backref="team")
 
     def __init__(self, name, competition_id):
         self.name = name
@@ -154,15 +156,17 @@ class Question(db.Model):
     total_score = db.Column(db.Integer, nullable=False, default=1)
     type_id = db.Column(db.Integer, db.ForeignKey("question_type.id"), nullable=False)
     slide_id = db.Column(db.Integer, db.ForeignKey("slide.id"), nullable=False)
+    correcting_instructions = db.Column(db.Text, nullable=True, default=None)
 
     question_answers = db.relationship("QuestionAnswer", backref="question")
     alternatives = db.relationship("QuestionAlternative", backref="question")
 
-    def __init__(self, name, total_score, type_id, slide_id):
+    def __init__(self, name, total_score, type_id, slide_id, correcting_instructions):
         self.name = name
         self.total_score = total_score
         self.type_id = type_id
         self.slide_id = slide_id
+        self.correcting_instructions = correcting_instructions
 
 
 class QuestionAlternative(db.Model):
diff --git a/server/tests/test_db.py b/server/tests/test_db.py
index dd13427c1c62689a88edefc96a6c16b8aa9db682..c504ed14ff39224f9bb76fe8fd32ca99e12dd725 100644
--- a/server/tests/test_db.py
+++ b/server/tests/test_db.py
@@ -3,10 +3,10 @@ This file tests the database controller functions.
 """
 
 import app.database.controller as dbc
-from app.database.models import City, Media, MediaType, Role, User
+from app.database.models import City, Competition, Media, MediaType, Role, User, Code
 
 from tests import app, client, db
-from tests.test_helpers import add_default_values, assert_exists, assert_insert_fail
+from tests.test_helpers import add_default_values, assert_exists, assert_insert_fail, delete
 
 
 def test_user(client):
@@ -58,7 +58,7 @@ def test_copy(client):
     item_slide_original = item_slides[0]
 
     # Inserts several copies of the same slide
-    num_copies = 10
+    num_copies = 3
     for _ in range(num_copies):
         item_slide_copy = dbc.copy.slide(item_slide_original)
         num_slides += 1
@@ -73,6 +73,23 @@ def test_copy(client):
             item_slide_original = item_competition_original.slides[order]
             check_slides_copy(item_slide_original, item_slide, num_slides, order)
             assert item_slide.competition_id != item_slide_original.competition_id
+            # TODO: Check that all codes are corectly created
+
+    # Deleting competition deletes all corresponding codes
+    item_competitions = dbc.get.all(Competition)
+    for item_competition in item_competitions:
+        dbc.delete.competition(item_competition)
+    assert len(dbc.get.all(Code)) == 0
+
+    # Deleting team deletes the right code
+    item_competition = dbc.add.competition("tom", 1971, 1)
+    item_team_1 = dbc.add.team("Lag 1", item_competition.id)
+    item_team_2 = dbc.add.team("Lag 2", item_competition.id)
+    assert len(dbc.get.all(Code)) == 5
+    dbc.delete.team(item_team_1)
+    assert len(dbc.get.all(Code)) == 4
+    dbc.delete.team(item_team_2)
+    assert len(dbc.get.all(Code)) == 3
 
 
 def check_slides_copy(item_slide_original, item_slide_copy, num_slides, order):