diff --git a/erpnext/patches/4_0/update_incharge_name_to_sales_person_in_maintenance_schedule.py b/erpnext/patches/4_0/update_incharge_name_to_sales_person_in_maintenance_schedule.py
index 7c81ef5..2a488f4 100644
--- a/erpnext/patches/4_0/update_incharge_name_to_sales_person_in_maintenance_schedule.py
+++ b/erpnext/patches/4_0/update_incharge_name_to_sales_person_in_maintenance_schedule.py
@@ -5,5 +5,8 @@
 import webnotes
 
 def execute():
+	webnotes.reload_doc("support", "doctype", "maintenance_schedule_detail")
+	webnotes.reload_doc("support", "doctype", "maintenance_schedule_item")
+	
 	webnotes.conn.sql("""update `tabMaintenance Schedule Detail` set sales_person=incharge_name""")
 	webnotes.conn.sql("""update `tabMaintenance Schedule Item` set sales_person=incharge_name""")
\ No newline at end of file
diff --git a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
index 4fdc9ea..865c21c 100644
--- a/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/support/doctype/maintenance_schedule/maintenance_schedule.py
@@ -28,9 +28,9 @@
 		self.doclist = self.doc.clear_table(self.doclist, 'maintenance_schedule_detail')
 		webnotes.conn.sql("""delete from `tabMaintenance Schedule Detail` 
 			where parent=%s""", (self.doc.name))
+		count = 1
 		for d in getlist(self.doclist, 'item_maintenance_detail'):
 			self.validate_maintenance_detail()
-			count = 1
 			s_list = []
 			s_list = self.create_schedule_list(d.start_date, d.end_date, d.no_of_visits, d.sales_person)
 			for i in range(d.no_of_visits):
@@ -105,17 +105,33 @@
 		return schedule_list
 
 	def validate_schedule_date_for_holiday_list(self, schedule_date, sales_person):
+		from erpnext.accounts.utils import get_fiscal_year
 		validated = False
+		fy_details = ""
 
-		holiday_list = webnotes.conn.sql_list("""select h.holiday_date from `tabEmployee` emp, 
-			`tabSales Person` sp, `tabHoliday` h where sp.name=%s and emp.name=sp.employee 
-			and h.parent=emp.holiday_list""", sales_person)
+		try:
+			fy_details = get_fiscal_year(date=schedule_date, verbose=0)
+		except Exception:
+			pass
 
-		while not validated:
-			if schedule_date in holiday_list:
-				schedule_date = add_days(schedule_date, 1)
-			else:
-				validated = True
+		if fy_details and fy_details[0]:
+			holiday_list = webnotes.conn.sql_list("""select h.holiday_date from `tabEmployee` emp, 
+				`tabSales Person` sp, `tabHoliday` h, `tabHoliday List` hl 
+				where sp.name=%s and emp.name=sp.employee 
+				and hl.name=emp.holiday_list and 
+				h.parent=hl.name and 
+				hl.fiscal_year=%s""", (sales_person, fy_details[0]))
+			if not holiday_list:
+				holiday_list = webnotes.conn.sql("""select h.holiday_date from 
+					`tabHoliday` h, `tabHoliday List` hl 
+					where h.parent=hl.name and ifnull(hl.is_default, 0) = 1 
+					and hl.fiscal_year=%s""", fy_details[0])
+
+			while not validated and holiday_list:
+				if schedule_date in holiday_list:
+					schedule_date = add_days(schedule_date, -1)
+				else:
+					validated = True
 
 		return schedule_date
 
