diff --git a/erpnext/patches/v8_0/merge_student_batch_and_student_group.py b/erpnext/patches/v8_0/merge_student_batch_and_student_group.py
index 3eb8e80..7cfdf60 100644
--- a/erpnext/patches/v8_0/merge_student_batch_and_student_group.py
+++ b/erpnext/patches/v8_0/merge_student_batch_and_student_group.py
@@ -8,9 +8,9 @@
 
 
 def execute():
-
 	# for converting student batch into student group
-	frappe.reload_doctype("Student Group")
+	for doctype in ["Student Group", "Student Group Student", "Student Group Instructor", "Student Attendance"]:
+		frappe.reload_doc("schools", "doctype", doctype)
 
 	if frappe.db.table_exists("Student Batch"):
 		student_batches = frappe.db.sql('''select name as student_group_name, student_batch_name as batch,
@@ -32,7 +32,7 @@
 			else:
 				cond = " "
 			student_list = frappe.db.sql('''select student, student_name {cond} from `tabStudent Batch Student`
-				where parent=%s'''.format(cond=cond), (doc.name), as_dict=1)
+				where parent=%s'''.format(cond=cond), (doc.student_group_name), as_dict=1)
 
 			if student_list:
 				for i, student in enumerate(student_list):
@@ -40,7 +40,7 @@
 				doc.extend("students", student_list)
 
 			instructor_list = frappe.db.sql('''select instructor, instructor_name from `tabStudent Batch Instructor`
-				where parent=%s''', (doc.name), as_dict=1)
+				where parent=%s''', (doc.student_group_name), as_dict=1)
 			if instructor_list:
 				doc.extend("instructors", instructor_list)
 			doc.save()
@@ -62,8 +62,6 @@
 		frappe.delete_doc("DocType", "Attendance Tool Student", force=1)
 
 	# change the student batch to student group in the student attendance
-	frappe.reload_doctype("Student Attendance")
-
 	table_columns = frappe.db.get_table_columns("Student Attendance")
 	if "student_batch" in table_columns:
 		rename_field("Student Attendance", "student_batch", "student_group")
diff --git a/erpnext/patches/v8_0/update_student_groups_from_student_batches.py b/erpnext/patches/v8_0/update_student_groups_from_student_batches.py
new file mode 100644
index 0000000..ae24fe4
--- /dev/null
+++ b/erpnext/patches/v8_0/update_student_groups_from_student_batches.py
@@ -0,0 +1,38 @@
+# Copyright (c) 2017, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.utils.rename_field import *
+from frappe.model.mapper import get_mapped_doc
+
+
+def execute():
+	if frappe.db.table_exists("Student Batch"):
+		student_batches = frappe.db.sql('''select name from `tabStudent Batch`''', as_dict=1)
+
+		for student_batch in student_batches:
+			if frappe.db.exists("Student Group", student_batch.get("name")):
+				student_group = frappe.get_doc("Student Group", student_batch.get("name"))
+
+				if frappe.db.table_exists("Student Batch Student"):
+					current_student_list = frappe.db.sql_list('''select student from `tabStudent Group Student`
+						where parent=%s''', (student_group.name))
+					batch_student_list = frappe.db.sql_list('''select student from `tabStudent Batch Student`
+						where parent=%s''', (student_group.name))
+
+					student_list = list(set(batch_student_list)-set(current_student_list))
+					if student_list:
+						student_group.extend("students", [{"student":d} for d in student_list])
+
+				if frappe.db.table_exists("Student Batch Instructor"):
+					current_instructor_list = frappe.db.sql_list('''select instructor from `tabStudent Group Instructor`
+						where parent=%s''', (student_group.name))
+					batch_instructor_list = frappe.db.sql_list('''select instructor from `tabStudent Batch Instructor`
+						where parent=%s''', (student_group.name))
+
+					instructor_list = list(set(batch_instructor_list)-set(current_instructor_list))
+					if instructor_list:
+						student_group.extend("instructors", [{"instructor":d} for d in instructor_list])
+
+				student_group.save()
