diff --git a/app/models/experiment.rb b/app/models/experiment.rb
index 1aefe5f3f..eb27ccebb 100644
--- a/app/models/experiment.rb
+++ b/app/models/experiment.rb
@@ -9,6 +9,7 @@ class Experiment < ActiveRecord::Base
 
   has_many :my_modules, inverse_of: :experiment, dependent: :destroy
   has_many :my_module_groups, inverse_of: :experiment, dependent: :destroy
+  has_many :report_elements, inverse_of: :experiment, dependent: :destroy
 
   validates :name,
             presence: true,
diff --git a/app/models/report_element.rb b/app/models/report_element.rb
index 7a0389f54..3e8f5dfe0 100644
--- a/app/models/report_element.rb
+++ b/app/models/report_element.rb
@@ -14,7 +14,8 @@ class ReportElement < ActiveRecord::Base
     step_comments: 11,
     result_comments: 12,
     project_activity: 13, # TODO
-    project_samples: 14 # TODO
+    project_samples: 14, # TODO
+    experiment: 15
   }
 
   # This is only used by certain elements
@@ -36,6 +37,7 @@ class ReportElement < ActiveRecord::Base
 
   # References to various report entities
   belongs_to :project, inverse_of: :report_elements
+  belongs_to :experiment, inverse_of: :report_elements
   belongs_to :my_module, inverse_of: :report_elements
   belongs_to :step, inverse_of: :report_elements
   belongs_to :result, inverse_of: :report_elements
@@ -59,6 +61,8 @@ class ReportElement < ActiveRecord::Base
   def element_reference
     if project_header? or project_activity? or project_samples?
       return project
+    elsif experiment?
+      return experiment
     elsif my_module? or my_module_activity? or my_module_samples?
       return my_module
     elsif step? or step_comments?
@@ -79,6 +83,8 @@ class ReportElement < ActiveRecord::Base
   def set_element_reference(ref_id)
     if project_header? or project_activity? or project_samples?
       self.project_id = ref_id
+    elsif experiment?
+      self.experiment_id = ref_id
     elsif my_module? or my_module_activity? or my_module_samples?
       self.my_module_id = ref_id
     elsif step? or step_comments?
@@ -98,6 +104,7 @@ class ReportElement < ActiveRecord::Base
   def clean_removed_or_archived_elements
     parent_model = ''
     [ 'project',
+      'experiment',
       'my_module',
       'step',
       'result',
@@ -119,6 +126,7 @@ class ReportElement < ActiveRecord::Base
   def has_one_of_referenced_elements
     num_of_refs = [
       project,
+      experiment,
       my_module,
       step,
       result,
diff --git a/db/migrate/20160803082801_add_experiment_to_report_elements.rb b/db/migrate/20160803082801_add_experiment_to_report_elements.rb
new file mode 100644
index 000000000..a816e4b92
--- /dev/null
+++ b/db/migrate/20160803082801_add_experiment_to_report_elements.rb
@@ -0,0 +1,8 @@
+class AddExperimentToReportElements < ActiveRecord::Migration
+  def change
+    add_column :report_elements, :experiment_id, :integer
+
+    add_foreign_key :report_elements, :experiments
+    add_index :report_elements, :experiment_id
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index fa23e0e64..dae069f44 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 20160722082700) do
+ActiveRecord::Schema.define(version: 20160803082801) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
@@ -138,26 +138,26 @@ ActiveRecord::Schema.define(version: 20160722082700) do
   add_index "delayed_jobs", ["queue"], name: "delayed_jobs_queue", using: :btree
 
   create_table "experiments", force: :cascade do |t|
-    t.string   "name",                           null: false
+    t.string   "name",                                null: false
     t.text     "description"
-    t.integer  "project_id",                     null: false
-    t.integer  "created_by_id",                  null: false
-    t.integer  "last_modified_by_id",            null: false
-    t.boolean  "archived",       default: false, null: false
+    t.integer  "project_id",                          null: false
+    t.integer  "created_by_id",                       null: false
+    t.integer  "last_modified_by_id",                 null: false
+    t.boolean  "archived",            default: false, null: false
     t.integer  "archived_by_id"
     t.datetime "archived_on"
     t.integer  "restored_by_id"
     t.datetime "restored_on"
-    t.datetime "created_at",                     null: false
-    t.datetime "updated_at",                     null: false
+    t.datetime "created_at",                          null: false
+    t.datetime "updated_at",                          null: false
   end
 
   add_index "experiments", ["archived_by_id"], name: "index_experiments_on_archived_by_id", using: :btree
   add_index "experiments", ["created_by_id"], name: "index_experiments_on_created_by_id", using: :btree
+  add_index "experiments", ["last_modified_by_id"], name: "index_experiments_on_last_modified_by_id", using: :btree
   add_index "experiments", ["name"], name: "index_experiments_on_name", using: :btree
   add_index "experiments", ["project_id"], name: "index_experiments_on_project_id", using: :btree
   add_index "experiments", ["restored_by_id"], name: "index_experiments_on_restored_by_id", using: :btree
-  add_index "experiments", ["last_modified_by_id"], name: "index_experiments_on_last_modified_by_id", using: :btree
 
   create_table "logs", force: :cascade do |t|
     t.integer "organization_id", null: false
@@ -316,9 +316,9 @@ ActiveRecord::Schema.define(version: 20160722082700) do
   add_index "protocols", ["restored_by_id"], name: "index_protocols_on_restored_by_id", using: :btree
 
   create_table "report_elements", force: :cascade do |t|
-    t.integer  "position",                 null: false
-    t.integer  "type_of",                  null: false
-    t.integer  "sort_order",   default: 0
+    t.integer  "position",                  null: false
+    t.integer  "type_of",                   null: false
+    t.integer  "sort_order",    default: 0
     t.integer  "report_id"
     t.integer  "parent_id"
     t.integer  "project_id"
@@ -328,12 +328,14 @@ ActiveRecord::Schema.define(version: 20160722082700) do
     t.integer  "checklist_id"
     t.integer  "asset_id"
     t.integer  "table_id"
-    t.datetime "created_at",               null: false
-    t.datetime "updated_at",               null: false
+    t.datetime "created_at",                null: false
+    t.datetime "updated_at",                null: false
+    t.integer  "experiment_id"
   end
 
   add_index "report_elements", ["asset_id"], name: "index_report_elements_on_asset_id", using: :btree
   add_index "report_elements", ["checklist_id"], name: "index_report_elements_on_checklist_id", using: :btree
+  add_index "report_elements", ["experiment_id"], name: "index_report_elements_on_experiment_id", using: :btree
   add_index "report_elements", ["my_module_id"], name: "index_report_elements_on_my_module_id", using: :btree
   add_index "report_elements", ["parent_id"], name: "index_report_elements_on_parent_id", using: :btree
   add_index "report_elements", ["project_id"], name: "index_report_elements_on_project_id", using: :btree
@@ -661,8 +663,8 @@ ActiveRecord::Schema.define(version: 20160722082700) do
   add_foreign_key "custom_fields", "users", column: "last_modified_by_id"
   add_foreign_key "experiments", "users", column: "archived_by_id"
   add_foreign_key "experiments", "users", column: "created_by_id"
-  add_foreign_key "experiments", "users", column: "restored_by_id"
   add_foreign_key "experiments", "users", column: "last_modified_by_id"
+  add_foreign_key "experiments", "users", column: "restored_by_id"
   add_foreign_key "logs", "organizations"
   add_foreign_key "my_module_comments", "comments"
   add_foreign_key "my_module_comments", "my_modules"
@@ -695,6 +697,7 @@ ActiveRecord::Schema.define(version: 20160722082700) do
   add_foreign_key "protocols", "users", column: "restored_by_id"
   add_foreign_key "report_elements", "assets"
   add_foreign_key "report_elements", "checklists"
+  add_foreign_key "report_elements", "experiments"
   add_foreign_key "report_elements", "my_modules"
   add_foreign_key "report_elements", "projects"
   add_foreign_key "report_elements", "reports"