diff --git a/internal/models/desk.go b/internal/models/desk.go
index 45bdfa28baf403a57b73c29de114990da07ae6ad..301f4167ccca0e690b99aad1f21ce6f582701da1 100644
--- a/internal/models/desk.go
+++ b/internal/models/desk.go
@@ -110,10 +110,15 @@ func (d *DataHandler) putDesk(w http.ResponseWriter, r *http.Request, id int) {
 func (d *DataHandler) deleteDesk(w http.ResponseWriter, r *http.Request, id int) {
 	if id != 0 {
 		var o Desk
-		if err := d.db.First(&o, id).Error; err != nil {
+		if err := d.db.Preload("DeskRounds").First(&o, id).Error; err != nil {
 			http.Error(w, ErrorIDIsMissing, http.StatusNotFound)
 			return
 		}
+
+		for _, deskRound := range o.DeskRounds {
+			d.deleteDeskRound(deskRound)
+		}
+
 		d.db.Delete(&o)
 	} else {
 		http.Error(w, ErrorIDIsMissing, http.StatusNotFound)
diff --git a/internal/models/deskRound.go b/internal/models/deskRound.go
index 73a45424f22093b66c171794318f364f5c7db04b..231b3b06adf0746f064c4154db4379af52c607a3 100644
--- a/internal/models/deskRound.go
+++ b/internal/models/deskRound.go
@@ -79,6 +79,5 @@ func (d *DataHandler) createDeskRound(roundID uint, deskID uint) {
 }
 
 func (d *DataHandler) deleteDeskRound(deskRound DeskRound) {
-
 	d.db.Delete(&deskRound)
 }
diff --git a/internal/rootmux/rootmux_test.go b/internal/rootmux/rootmux_test.go
index 88cba30f5630f4bbb5262f4bef03b543b6abf349..1a5d922fe6f510bfb5b57e2c9612736f7b892c0f 100644
--- a/internal/rootmux/rootmux_test.go
+++ b/internal/rootmux/rootmux_test.go
@@ -98,6 +98,11 @@ func appTests(t *testing.T) {
 		do("GET", "/api/Round/1", xsrfHeader, ``, 200, `{"ID":1,"ElectionID":1,"Parameter":{"ID":0,"CountBlankAndNull":false,"ShowOnlyCompleted":false,"ShowMap":false},"Date":"2020-06-28","Round":1,"DeskRounds":[{"ID":1,"RoundID":1,"DeskID":1,"Capturers":null,"Completed":false,"DateCompletion":"0001-01-01T00:00:00Z","Validated":false,"Votes":null}],"CandidateLists":[]}`)
 		do("GET", "/api/Desk/1", xsrfHeader, ``, 200, `{"ID":1,"SectionID":1,"Name":"Desk 1","WitnessDesk":true,"Subscribed":9587,"DeskRounds":[{"ID":1,"RoundID":1,"DeskID":1,"Capturers":null,"Completed":false,"DateCompletion":"0001-01-01T00:00:00Z","Validated":false,"Votes":null}]}`)
 
+		// Verify that on Desk deletion deskRounds are deleted
+		do("GET", "/api/Desk/1", xsrfHeader, ``, 200, `{"ID":1,"SectionID":1,"Name":"Desk 1","WitnessDesk":true,"Subscribed":9587,"DeskRounds":[{"ID":1,"RoundID":1,"DeskID":1,"Capturers":null,"Completed":false,"DateCompletion":"0001-01-01T00:00:00Z","Validated":false,"Votes":null}]}`)
+		do("DELETE", "/api/Desk/1", xsrfHeader, ``, 200, ``)
+		do("GET", "/api/DeskRound/1", xsrfHeader, ``, 404, `id is missing`)
+
 	}
 	// Do an OAuth2 login with an known admin
 	do("GET", "/OAuth2Login", noH, "", 200, "<!DOCTYPE html>")