diff --git a/erpnext/home/__init__.py b/erpnext/home/__init__.py
index 2cca85a..8118ea6 100644
--- a/erpnext/home/__init__.py
+++ b/erpnext/home/__init__.py
@@ -47,7 +47,7 @@
 	# Support
 	'Customer Issue':       ['[%(status)s] %(description)s by %(customer_name)s', '#000080'],
 	'Maintenance Visit':['To %(customer_name)s', '#4169E1'],
-	'Support Ticket':       ['[%(status)s] %(subject)s', '#000080'],
+	'Support Ticket':       ["[%(status)s] %(subject)s", '#000080'],
 	
 	# Website
 	'Web Page': ['%(title)s', '#000080'],
diff --git a/erpnext/home/page/my_company/my_company.py b/erpnext/home/page/my_company/my_company.py
index f35f475..d3a7bc7 100644
--- a/erpnext/home/page/my_company/my_company.py
+++ b/erpnext/home/page/my_company/my_company.py
@@ -67,7 +67,7 @@
 	# erpnext-saas
 	if cint(webnotes.conn.get_value('Control Panel', None, 'sync_with_gateway')):
 		from server_tools.gateway_utils import add_user_gateway
-		add_user_gateway(args['user'])
+		add_user_gateway(args)
 	
 	add_profile(args)
 	
diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py
index c5989bb..ff9bf68 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.py
+++ b/erpnext/setup/doctype/email_digest/email_digest.py
@@ -282,7 +282,8 @@
 			Returns start and end date depending on the frequency of email digest
 		"""
 		from datetime import datetime, date, timedelta
-		today = datetime.now().date()
+		from webnotes.utils import now_datetime
+		today = now_datetime().date()
 		year, month, day = today.year, today.month, today.day
 		
 		if self.doc.frequency == 'Daily':
@@ -409,6 +410,7 @@
 
 		from webnotes.utils.email_lib import sendmail
 		try:
+			#webnotes.msgprint('in send')
 			sendmail(
 				recipients=recipient_list,
 				sender='notifications+email_digest@erpnext.com',
@@ -419,64 +421,22 @@
 			)
 		except Exception, e:
 			webnotes.msgprint('There was a problem in sending your email. Please contact support@erpnext.com')
-			#webnotes.errprint(webnotes.getTraceback())
+			webnotes.errprint(webnotes.getTraceback())
 
 
 	def get_next_sending(self):
-		"""
-
-		"""
-		# Get TimeZone
-		# Get System TimeZone
-		import time
-		from pytz import timezone
 		import datetime
-		import webnotes.defs
-		cp = webnotes.model.doc.Document('Control Panel','Control Panel')
-		app_tz = timezone(cp.time_zone)
-		server_tz = timezone(getattr(webnotes.defs, 'system_timezone'))
 		
 		start_date, end_date = self.get_start_end_dates()
 		
-		new_date = end_date + datetime.timedelta(days=1)
-		new_time = datetime.time(hour=6)
-
-		naive_dt = datetime.datetime.combine(new_date, new_time)
-		app_dt = app_tz.localize(naive_dt)
-		server_dt = server_tz.normalize(app_dt.astimezone(server_tz))
-
-		res = {
-			'app_dt': app_dt.replace(tzinfo=None),
-			'app_tz': app_tz,
-			'server_dt': server_dt.replace(tzinfo=None),
-			'server_tz': server_tz
-		}
-
+		send_date = end_date + datetime.timedelta(days=1)
+		
 		from webnotes.utils import formatdate
-		str_date = formatdate(str(res['app_dt'].date()))
-		str_time = res['app_dt'].time().strftime('%I:%M')
+		str_date = formatdate(str(send_date))
 
-		self.doc.next_send = str_date + " at about " + str_time
+		self.doc.next_send = str_date + " at midnight"
 
-		return res
-
-
-	def get_next_execution(self):
-		"""
-
-		"""
-		from datetime import datetime, timedelta
-		dt_args = self.get_next_sending()
-		server_dt = dt_args['server_dt']
-		now_dt = datetime.now(dt_args['server_tz'])
-		if now_dt.time() <= server_dt.time():
-			next_date = now_dt.date()
-		else:
-			next_date = now_dt.date() + timedelta(days=1)
-
-		next_time = server_dt.time()
-
-		return datetime.combine(next_date, next_time)
+		return send_date
 
 
 	def onload(self):
@@ -743,21 +703,16 @@
 	""", as_list=1)
 
 	from webnotes.model.code import get_obj
-	from datetime import datetime, timedelta
-	now = datetime.now()
-	now_date = now.date()
-	now_time = (now + timedelta(hours=2)).time()
+	from webnotes.utils import now_datetime
 
+	now_date = now_datetime().date()
+	
 	for ed in edigest_list:
 		if ed[0]:
 			ed_obj = get_obj('Email Digest', ed[0])
 			ed_obj.sending = True
-			dt_dict = ed_obj.get_next_sending()
-			send_date = dt_dict['server_dt'].date()
-			send_time = dt_dict['server_dt'].time()
+			send_date = ed_obj.get_next_sending()
+			#webnotes.msgprint([ed[0], now_date, send_date])
 
 			if (now_date == send_date):
-				#webnotes.msgprint('sending ' + ed_obj.doc.name)
 				ed_obj.send()
-			#else:
-			#	webnotes.msgprint('not sending ' + ed_obj.doc.name)
diff --git a/erpnext/setup/doctype/email_settings/email_settings.py b/erpnext/setup/doctype/email_settings/email_settings.py
index 0f930bc..c670b31 100644
--- a/erpnext/setup/doctype/email_settings/email_settings.py
+++ b/erpnext/setup/doctype/email_settings/email_settings.py
@@ -35,8 +35,8 @@
 		"""
 			Update value in control panel
 		"""
-		if self.doc.fields.get(key):
-			webnotes.conn.set_value('Control Panel', None, key, self.doc.fields[key])
+		webnotes.conn.set_value('Control Panel', None, key,
+				self.doc.fields.get(key))
 
 	def validate(self):
 		"""
@@ -117,19 +117,7 @@
 		
 	def on_update(self):
 		"""
-			Sets or cancels the event in the scheduler
+			update control panel
 		"""
-		# update control panel
 		for f in ('outgoing_mail_server', 'mail_login', 'mail_password', 'auto_email_id', 'mail_port', 'use_ssl'):
 			self.set_cp_value(f)
-
-		# setup scheduler for support emails
-		if cint(self.doc.sync_support_mails):
-			if not (self.doc.support_host and self.doc.support_username and self.doc.support_password):
-				webnotes.msgprint("You must give the incoming POP3 settings for support emails to activiate mailbox integration", raise_exception=1)
-			
-			from webnotes.utils.scheduler import set_event
-			set_event('support.doctype.support_ticket.get_support_mails', 60*5, 1)
-		else:
-			from webnotes.utils.scheduler import cancel_event
-			cancel_event('support.doctype.support_ticket.get_support_mails')
diff --git a/erpnext/support/doctype/support_ticket/__init__.py b/erpnext/support/doctype/support_ticket/__init__.py
index ca27a61..eebb6cf 100644
--- a/erpnext/support/doctype/support_ticket/__init__.py
+++ b/erpnext/support/doctype/support_ticket/__init__.py
@@ -81,6 +81,7 @@
 				st.make_response_record(content, mail.mail['From'], content_type)
 				webnotes.conn.set(st.doc, 'status', 'Open')
 				update_feed(st.doc, 'on_update')
+				webnotes.conn.commit()
 				# extract attachments
 				self.save_attachments(st.doc, mail.attachments)
 				return
@@ -99,21 +100,22 @@
 		d.naming_series = (opts and opts[0] and opts[0][0] and opts[0][0].split("\n")[0]) or 'SUP'
 		try:
 			d.save(1)
+		except:
+			d.description = 'Unable to extract message'
+			d.save(1)
 
+		else:
 			# update feed
 			update_feed(d, 'on_update')
 
 			# send auto reply
 			self.send_auto_reply(d)
 
-		except:
-			d.description = 'Unable to extract message'
-			d.save(1)
-
-		else:
+			webnotes.conn.commit()
+			
 			# extract attachments
 			self.save_attachments(d, mail.attachments)
-
+			
 
 	def save_attachments(self, doc, attachment_list=[]):
 		"""
@@ -138,9 +140,10 @@
 		"""
 			Send auto reply to emails
 		"""
-		signature = self.email_settings.support_signature
+		from webnotes.utils import cstr
+		signature = self.email_settings.fields.get('support_signature') or ''
 
-		response = self.email_settings.support_autoreply or ("""
+		response = self.email_settings.fields.get('support_autoreply') or ("""
 A new Ticket has been raised for your query. If you have any additional information, please
 reply back to this mail.
 		
@@ -148,15 +151,15 @@
 
 [This is an automatic response]
 
-		""" + (signature or ''))
+		""" + cstr(signature))
 
 		from webnotes.utils.email_lib import sendmail
 		
 		sendmail(\
-			recipients = [d.raised_by], \
-			sender = self.email_settings.support_email, \
-			subject = '['+d.name+'] ' + cstr(d.subject), \
-			msg = response)
+			recipients = [cstr(d.raised_by)], \
+			sender = cstr(self.email_settings.fields.get('support_email')), \
+			subject = '['+cstr(d.name)+'] ' + cstr(d.subject), \
+			msg = cstr(response))
 		
 	def auto_close_tickets(self):
 		"""
