diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php
index 0d089fe58fa3fb1e0faf8406aa30a0493b85bbb1..7ab537c8fc62d44b60fba9c4bd682fc4d78eb245 100644
--- a/include/class.dynamic_forms.php
+++ b/include/class.dynamic_forms.php
@@ -189,9 +189,11 @@ class DynamicForm extends VerySimpleModel {
     }
 
     function delete() {
+
         if (!$this->isDeletable())
             return false;
 
+        // Soft Delete: Mark the form as deleted.
         $this->setFlag(self::FLAG_DELETED);
         return $this->save();
     }
diff --git a/include/class.list.php b/include/class.list.php
index a182ef3ce7ed46ef1dc2d6f4087016ef62cfc222..82142b90ea86c50b822c926512284fed8a43b739 100644
--- a/include/class.list.php
+++ b/include/class.list.php
@@ -355,11 +355,20 @@ class DynamicList extends VerySimpleModel implements CustomList {
     function delete() {
         $fields = DynamicFormField::objects()->filter(array(
             'type'=>'list-'.$this->id))->count();
-        if ($fields == 0)
-            return parent::delete();
-        else
-            // Refuse to delete lists that are in use by fields
+
+        // Refuse to delete lists that are in use by fields
+        if ($fields != 0)
+            return false;
+
+        if (!parent::delete())
             return false;
+
+        if (($form = $this->getForm(false))) {
+            $form->delete(false);
+            $form->fields->delete();
+        }
+
+        return true;
     }
 
     private function createForm() {