diff --git a/core/src/main/java/se/su/dsv/scipro/plagiarism/PlagiarismRequest.java b/core/src/main/java/se/su/dsv/scipro/plagiarism/PlagiarismRequest.java
index 3356526223..1aece5bd51 100644
--- a/core/src/main/java/se/su/dsv/scipro/plagiarism/PlagiarismRequest.java
+++ b/core/src/main/java/se/su/dsv/scipro/plagiarism/PlagiarismRequest.java
@@ -11,46 +11,61 @@ import jakarta.persistence.JoinColumn;
 import jakarta.persistence.ManyToOne;
 import jakarta.persistence.OneToOne;
 import jakarta.persistence.Table;
-import java.util.*;
+
+import java.util.Objects;
 
 @Entity
 @Table(name = "plagiarism_request")
 class PlagiarismRequest {
+    // ----------------------------------------------------------------------------------
+    // Basic JPA-mappings
+    // ----------------------------------------------------------------------------------
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
 
+    // ----------------------------------------------------------------------------------
+    // JPA-mappings of foreign keys in this table (plagiarism_request) referencing other
+    // tables.
+    // ----------------------------------------------------------------------------------
     @OneToOne(optional = false)
-    @JoinColumn(name = "document_reference_id")
+    @JoinColumn(name = "document_file_reference_id", referencedColumnName = "id")
     private FileReference document;
 
     @ManyToOne
+    @JoinColumn(name = "receiver_user_id", referencedColumnName = "id")
     private User receiver;
 
+    // ----------------------------------------------------------------------------------
+    // Properties (Getters and Setters)
+    // ----------------------------------------------------------------------------------
     public Long getId() {
         return this.id;
     }
 
-    public FileReference getDocument() {
-        return this.document;
-    }
-
-    public User getReceiver() {
-        return this.receiver;
-    }
-
     public void setId(Long id) {
         this.id = id;
     }
 
+    public FileReference getDocument() {
+        return this.document;
+    }
+
     public void setDocument(FileReference fileDescription) {
         this.document = fileDescription;
     }
 
+    public User getReceiver() {
+        return this.receiver;
+    }
+
     public void setReceiver(User receiver) {
         this.receiver = receiver;
     }
 
+    // ----------------------------------------------------------------------------------
+    // Methods Common To All Objects
+    // ----------------------------------------------------------------------------------
     @Override
     public boolean equals(final Object o) {
         if (o == this) return true;
@@ -62,10 +77,6 @@ class PlagiarismRequest {
                 && Objects.equals(this.getReceiver(), other.getReceiver());
     }
 
-    protected boolean canEqual(final Object other) {
-        return other instanceof PlagiarismRequest;
-    }
-
     @Override
     public int hashCode() {
         return Objects.hash(this.getId(), this.getDocument(), this.getReceiver());
@@ -73,6 +84,14 @@ class PlagiarismRequest {
 
     @Override
     public String toString() {
-        return "PlagiarismRequest(id=" + this.getId() + ", fileDescription=" + this.getDocument() + ", receiver=" + this.getReceiver() + ")";
+        return "PlagiarismRequest(id=" + this.getId() + ", fileDescription=" + this.getDocument() +
+                ", receiver=" + this.getReceiver() + ")";
+    }
+
+    // ----------------------------------------------------------------------------------
+    // Other method
+    // ----------------------------------------------------------------------------------
+    protected boolean canEqual(final Object other) {
+        return other instanceof PlagiarismRequest;
     }
 }
diff --git a/core/src/main/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmission.java b/core/src/main/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmission.java
index 594dd691fc..87580259a7 100644
--- a/core/src/main/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmission.java
+++ b/core/src/main/java/se/su/dsv/scipro/plagiarism/urkund/UrkundSubmission.java
@@ -17,139 +17,159 @@ import jakarta.persistence.ManyToOne;
 import jakarta.persistence.OneToOne;
 import jakarta.persistence.Table;
 import java.time.Instant;
-import java.util.*;
+import java.util.Objects;
 
 @Entity
 @Table(name = "urkund_submission")
 public class UrkundSubmission extends DomainObject {
-
-    public enum State {
-        SUBMISSION_FAILED, SUBMITTED, REJECTED, ACCEPTED, ANALYZED, ERROR;
-
-        public boolean isFinal() {
-            return !(this == SUBMITTED || this == ACCEPTED);
-        }
-    }
-
+    // ----------------------------------------------------------------------------------
+    // Basic JPA-mappings
+    // ----------------------------------------------------------------------------------
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
 
-    @ManyToOne
-    private User receiver;
+    @Basic
+    @Column(name = "submitted_date", nullable = false)
+    private Instant submitted;
 
     @Basic
-    private String analysisAddress;
-
-    @Column(nullable = false)
+    @Column(name = "state", nullable = false)
     @Enumerated(EnumType.STRING)
     private State state;
 
-    @Column(nullable = false)
-    private Instant submitted;
-
-    @Column(nullable = false)
+    @Basic
+    @Column(name = "next_poll_date", nullable = false)
     private Instant nextPoll;
 
-    @Column(nullable = false)
+    @Basic
+    @Column(name = "polling_delay", nullable = false)
     @Enumerated(EnumType.STRING)
     private PollingDelay pollingDelay = PollingDelay.FIRST;
 
-    @OneToOne(optional = false)
-    @JoinColumn(name = "document_reference_id")
-    private FileReference document;
-
     @Basic(optional = false)
+    @Column(name = "message")
     private String message;
 
     @Basic
+    @Column(name = "report_url")
     private String reportUrl;
 
     @Basic
+    @Column(name = "significance")
     private Float significance;
 
+    @Basic
+    @Column(name = "analysis_address")
+    private String analysisAddress;
+
+    // ----------------------------------------------------------------------------------
+    // JPA-mappings of foreign keys in this table (urkund_submission) referencing other
+    // tables.
+    // ----------------------------------------------------------------------------------
+    @OneToOne(optional = false)
+    @JoinColumn(name = "document_file_reference_id", referencedColumnName = "id")
+    private FileReference document;
+
+    @ManyToOne
+    @JoinColumn(name = "receiver_user_id", referencedColumnName = "id")
+    private User receiver;
+
+    // ----------------------------------------------------------------------------------
+    // Properties (Getters and Setters)
+    // ----------------------------------------------------------------------------------
     @Override
     public Long getId() {
         return this.id;
     }
 
-    public String getAnalysisAddress() {
-        return this.analysisAddress;
-    }
-
-    public State getState() {
-        return this.state;
-    }
-
-    public Instant getSubmitted() {
-        return this.submitted;
-    }
-
-    public FileReference getDocument() {
-        return this.document;
-    }
-
-    public String getMessage() {
-        return this.message;
-    }
-
-    public String getReportUrl() {
-        return this.reportUrl;
-    }
-
-    public Float getSignificance() {
-        return this.significance;
-    }
-
-    @Override
-    public String toString() {
-        return "UrkundSubmission(id=" + this.getId() + ", receiver=" + this.getReceiver() + ", analysisAddress=" + this.getAnalysisAddress() + ", state=" + this.getState() + ", submitted=" + this.getSubmitted() + ", nextPoll=" + this.getNextPoll() + ", pollingDelay=" + this.getPollingDelay() + ", fileDescription=" + this.getDocument() + ", message=" + this.getMessage() + ", reportUrl=" + this.getReportUrl() + ", significance=" + this.getSignificance() + ")";
-    }
-
     void setId(Long id) {
         this.id = id;
     }
 
-    void setReceiver(User receiver) {
-        this.receiver = receiver;
-    }
-
-    void setAnalysisAddress(String analysisAddress) {
-        this.analysisAddress = analysisAddress;
-    }
-
-    void setState(State state) {
-        this.state = state;
+    public Instant getSubmitted() {
+        return this.submitted;
     }
 
     void setSubmitted(Instant submitted) {
         this.submitted = submitted;
     }
 
+    public State getState() {
+        return this.state;
+    }
+
+    void setState(State state) {
+        this.state = state;
+    }
+
+    Instant getNextPoll() {
+        return this.nextPoll;
+    }
+
     void setNextPoll(Instant nextPoll) {
         this.nextPoll = nextPoll;
     }
 
+    PollingDelay getPollingDelay() {
+        return this.pollingDelay;
+    }
+
     void setPollingDelay(PollingDelay pollingDelay) {
         this.pollingDelay = pollingDelay;
     }
 
-    void setDocument(FileReference fileDescription) {
-        this.document = fileDescription;
+    public String getMessage() {
+        return this.message;
     }
 
     void setMessage(String message) {
         this.message = message;
     }
 
+    public String getReportUrl() {
+        return this.reportUrl;
+    }
+
     void setReportUrl(String reportUrl) {
         this.reportUrl = reportUrl;
     }
 
+    public Float getSignificance() {
+        return this.significance;
+    }
+
     void setSignificance(Float significance) {
         this.significance = significance;
     }
 
+    public String getAnalysisAddress() {
+        return this.analysisAddress;
+    }
+
+    void setAnalysisAddress(String analysisAddress) {
+        this.analysisAddress = analysisAddress;
+    }
+
+    public FileReference getDocument() {
+        return this.document;
+    }
+
+    void setDocument(FileReference fileDescription) {
+        this.document = fileDescription;
+    }
+
+    User getReceiver() {
+        return this.receiver;
+    }
+
+    void setReceiver(User receiver) {
+        this.receiver = receiver;
+    }
+
+    // ----------------------------------------------------------------------------------
+    // Methods Common To All Objects
+    // ----------------------------------------------------------------------------------
     @Override
     public boolean equals(final Object o) {
         if (o == this) return true;
@@ -170,10 +190,6 @@ public class UrkundSubmission extends DomainObject {
                 && Objects.equals(this.getSignificance(), other.getSignificance());
     }
 
-    protected boolean canEqual(final Object other) {
-        return other instanceof UrkundSubmission;
-    }
-
     @Override
     public int hashCode() {
         return Objects.hash(
@@ -190,15 +206,31 @@ public class UrkundSubmission extends DomainObject {
                 this.getSignificance());
     }
 
-    User getReceiver() {
-        return this.receiver;
+    @Override
+    public String toString() {
+        return "UrkundSubmission(id=" + this.getId() + ", receiver=" + this.getReceiver() +
+                ", analysisAddress=" + this.getAnalysisAddress() + ", state=" +
+                this.getState() + ", submitted=" + this.getSubmitted() +
+                ", nextPoll=" + this.getNextPoll() + ", pollingDelay=" + this.getPollingDelay() +
+                ", fileDescription=" + this.getDocument() + ", message=" + this.getMessage() +
+                ", reportUrl=" + this.getReportUrl() + ", significance=" + this.getSignificance() + ")";
     }
 
-    Instant getNextPoll() {
-        return this.nextPoll;
+    // ----------------------------------------------------------------------------------
+    // Other Methods
+    // ----------------------------------------------------------------------------------
+    protected boolean canEqual(final Object other) {
+        return other instanceof UrkundSubmission;
     }
 
-    PollingDelay getPollingDelay() {
-        return this.pollingDelay;
+    // ----------------------------------------------------------------------------------
+    // Nested type
+    // ----------------------------------------------------------------------------------
+    public enum State {
+        SUBMISSION_FAILED, SUBMITTED, REJECTED, ACCEPTED, ANALYZED, ERROR;
+
+        public boolean isFinal() {
+            return !(this == SUBMITTED || this == ACCEPTED);
+        }
     }
 }
diff --git a/core/src/main/resources/db/migration/V389__harmonize_table_attribute_name.sql b/core/src/main/resources/db/migration/V389__harmonize_table_attribute_name.sql
index a4a7654105..2af85aa93a 100644
--- a/core/src/main/resources/db/migration/V389__harmonize_table_attribute_name.sql
+++ b/core/src/main/resources/db/migration/V389__harmonize_table_attribute_name.sql
@@ -2770,6 +2770,58 @@ alter table `decision`
         foreign key (reviewer_approval_id) references reviewer_approval (id)
             on delete cascade on update cascade;
 
+/*
+ * Step 19: urkund_submission & plagiarium_request
+ */
+
+-- table: urkund_submission
+
+alter table `urkund_submission` drop foreign key `urkund_submission_ibfk_2`;
+alter table `urkund_submission` drop foreign key `FK_urkund_submission_document_reference`;
+
+alter table `urkund_submission` drop key `FK_urkund_submission_document_reference`;
+alter table `urkund_submission` drop key `FK_urkund_submission_receiver`;
+
+alter table `urkund_submission` change `document_reference_id` `document_file_reference_id` bigint(20) not null;
+alter table `urkund_submission` change `receiver_id` `receiver_user_id` bigint(20) not null after `document_file_reference_id`;
+alter table `urkund_submission` change `submitted` `submitted_date` datetime not null;
+alter table `urkund_submission` change `nextPoll` `next_poll_date` datetime not null;
+alter table `urkund_submission` change `pollingDelay` `polling_delay` varchar(16) not null;
+alter table `urkund_submission` change `reportUrl` `report_url` varchar(255) default null;
+alter table `urkund_submission` change `analysisAddress` `analysis_address` varchar(255) default null;
+
+alter table `urkund_submission`
+    add constraint fk_urkund_submission_document_file_reference_id
+        foreign key (document_file_reference_id) references file_reference (id)
+            on delete cascade on update cascade;
+
+alter table `urkund_submission`
+    add constraint fk_urkund_submission_receiver_user_id
+        foreign key (receiver_user_id) references user (id)
+            on delete cascade on update cascade;
+
+-- table: plagiarism_request
+
+alter table `plagiarism_request` drop foreign key `plagiarism_request_ibfk_2`;
+alter table `plagiarism_request` drop foreign key `FK_plagiarism_request_document_reference`;
+
+alter table `plagiarism_request` drop key `FK_plagiarism_request_document_reference`;
+alter table `plagiarism_request` drop key `FK_plagiarism_request_receiver`;
+
+alter table `plagiarism_request` change `document_reference_id` `document_file_reference_id` bigint(20) not null;
+alter table `plagiarism_request` change `receiver_id` `receiver_user_id` bigint(20) not null after `document_file_reference_id`;
+
+alter table `plagiarism_request`
+    add constraint fk_plagiarism_request_document_file_reference_id
+        foreign key (document_file_reference_id) references file_reference (id)
+            on delete cascade on update cascade;
+
+alter table `plagiarism_request`
+    add constraint fk_plagiarism_request_receiver_user_id
+        foreign key (receiver_user_id) references user (id)
+            on delete cascade on update cascade;
+
+
 /* Useful SQL
 
 >>> SQL query for FK-to: