diff --git a/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.py b/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.py
index 6201a9c..2be6381 100644
--- a/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.py
+++ b/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.py
@@ -23,7 +23,6 @@
 from webnotes.model.doclist import getlist, copy_doclist
 from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
 from webnotes import session, form, is_testing, msgprint, errprint
-from webnotes.utils.scheduler import set_event, cancel_event, Scheduler
 
 in_transaction = webnotes.conn.in_transaction
 convert_to_lists = webnotes.conn.convert_to_lists
@@ -692,29 +691,6 @@
 		elif self.doc.recurring_id:
 			webnotes.conn.sql("""update `tabReceivable Voucher` set convert_into_recurring_invoice = 0 where recurring_id = %s""", self.doc.recurring_id)
 
-		self.manage_scheduler()
-
-	def manage_scheduler(self):
-		""" set/cancel event in scheduler """
-		event = 'accounts.doctype.gl_control.gl_control.manage_recurring_invoices'
-
-		if webnotes.conn.sql("select name from `tabReceivable Voucher` where ifnull(convert_into_recurring_invoice, 0) = 1 and next_date <= end_date"):
-			if not self.check_event_exists(event):
-				set_event(event,  interval = 60*60, recurring = 1)
-		else:
-			cancel_event(event)
-
-
-	def check_event_exists(self, event):
-		try:
-			ev = Scheduler().get_events()
-		except:
-			msgprint("Scheduler database not exists. Please mail to support@erpnext.com", raise_exception=1)
-
-		if event in [d['event'] for d in ev]:
-			return 1
-
-
 	def set_next_date(self):
 		""" Set next date on which auto invoice will be created"""
 
diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py
index c606218..c5989bb 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.py
+++ b/erpnext/setup/doctype/email_digest/email_digest.py
@@ -422,49 +422,6 @@
 			#webnotes.errprint(webnotes.getTraceback())
 
 
-	def on_update(self):
-		"""
-
-		"""
-		import webnotes
-		args = {
-			'db_name': webnotes.conn.get_value('Control Panel', '', 'account_id'),
-			'event': 'setup.doctype.email_digest.email_digest.send'
-		}
-		from webnotes.utils.scheduler import Scheduler
-		#print "before scheduler"
-		sch = Scheduler()
-		sch.connect()
-
-		if self.doc.enabled == 1:
-			# Create scheduler entry
-			res = sch.conn.sql("""
-				SELECT * FROM Event
-				WHERE
-					db_name = %(db_name)s AND
-					event = %(event)s
-			""", args)
-
-			if not (res and res[0]):
-				args['next_execution'] = self.get_next_execution()
-				sch.conn.begin()
-				sch.conn.sql("""
-					INSERT INTO	Event (db_name, event, `interval`, next_execution, recurring)
-					VALUES (%(db_name)s, %(event)s, 86400, %(next_execution)s, 1)
-				""", args)
-				sch.conn.commit()
-
-		else:
-			# delete scheduler entry if no other email digest is enabled
-			res = webnotes.conn.sql("""
-				SELECT * FROM `tabEmail Digest`
-				WHERE enabled=1
-			""")
-			if not (res and res[0]):
-				sch.clear(args['db_name'], args['event'])
-		#print "after on update"
-	
-
 	def get_next_sending(self):
 		"""
 
diff --git a/erpnext/startup/schedule_handlers.py b/erpnext/startup/schedule_handlers.py
index cf0d7c2..a828fea 100644
--- a/erpnext/startup/schedule_handlers.py
+++ b/erpnext/startup/schedule_handlers.py
@@ -17,13 +17,40 @@
 """will be called by scheduler"""
 
 import webnotes
+from webnotes.utils import scheduler
 	
 def execute_all():
-	"""get support email"""
-	from support.doctype.support_ticket import get_support_mails
-	get_support_mails()
+	"""
+		* get support email
+		* recurring invoice
+	"""
+	try:
+		from support.doctype.support_ticket import get_support_mails
+		get_support_mails()
+	except Exception, e:
+		scheduler.log('get_support_mails')
+
+	try:
+		from accounts.doctype.gl_control.gl_control import manage_recurring_invoices
+		manage_recurring_invoices()
+	except Exception, e:
+		scheduler.log('manage_recurring_invoices')
+
+	
 	
 def execute_daily():
 	"""email digest"""
-	from setup.doctype.email_digest.email_digest import send
-	send()
\ No newline at end of file
+	try:
+		from setup.doctype.email_digest.email_digest import send
+		send()
+	except Exception, e:
+		scheduler.log('email_digest.send')
+
+def execute_weekly():
+	pass
+
+def execute_monthly():
+	pass
+
+def execute_hourly():
+	pass
