diff --git a/selling/doctype/lead/lead.py b/selling/doctype/lead/lead.py
index 571cdfd..d80f843 100644
--- a/selling/doctype/lead/lead.py
+++ b/selling/doctype/lead/lead.py
@@ -17,8 +17,7 @@
 from __future__ import unicode_literals
 import webnotes
 from webnotes import _
-from webnotes.utils import cstr, validate_email_add
-from webnotes.model.doc import Document, addchild
+from webnotes.utils import cstr, validate_email_add, cint
 from webnotes import session, msgprint
 
 sql = webnotes.conn.sql
@@ -54,11 +53,17 @@
 			if not validate_email_add(self.doc.email_id):
 				msgprint('Please enter valid email id.')
 				raise Exception
+		
+		self._prev = webnotes._dict({
+			"contact_date": webnotes.conn.get_value("Lead", self.doc.name, "contact_date") if \
+				(not cint(self.doc.fields.get("__islocal"))) else None,
+			"contact_by": webnotes.conn.get_value("Lead", self.doc.name, "contact_by") if \
+				(not cint(self.doc.fields.get("__islocal"))) else None,
+		})
 				
 	
 	def on_update(self):
-		if self.doc.contact_date:
-			self.add_calendar_event()
+		self.add_calendar_event()
 			
 		self.check_email_id_is_unique()
 
@@ -73,25 +78,33 @@
 					", ".join(items), raise_exception=True)
 		
 	def add_calendar_event(self):
-		# delete any earlier event by this lead
-		sql("delete from tabEvent where ref_type='Lead' and ref_name=%s", self.doc.name)
-	
-		# create new event
-		ev = Document('Event')
-		ev.owner = self.doc.lead_owner
-		ev.description = ('Contact ' + cstr(self.doc.lead_name)) + \
-			(self.doc.contact_by and ('. By : ' + cstr(self.doc.contact_by)) or '') + \
-			(self.doc.remark and ('.To Discuss : ' + cstr(self.doc.remark)) or '')
-		ev.event_date = self.doc.contact_date
-		ev.event_hour = '10:00'
-		ev.event_type = 'Private'
-		ev.ref_type = 'Lead'
-		ev.ref_name = self.doc.name
-		ev.save(1)
-		
-		event_user = addchild(ev, 'event_individuals', 'Event User')
-		event_user.person = self.doc.contact_by
-		event_user.save()
+		if self.doc.contact_by != cstr(self._prev.contact_by) or \
+				self.doc.contact_date != cstr(self._prev.contact_date):
+			# delete any earlier event by this lead
+			for name in webnotes.conn.sql_list("""select name from `tabEvent` 
+				where ref_type="Lead" and ref_name=%s""", self.doc.name):
+					webnotes.delete_doc("Event", name)
+			
+			if self.doc.contact_date:	
+				webnotes.bean([
+					{
+						"doctype": "Event",
+						"owner": self.doc.lead_owner or self.doc.owner,
+						"subject": ('Contact ' + cstr(self.doc.lead_name)),
+						"description": ('Contact ' + cstr(self.doc.lead_name)) + \
+							(self.doc.contact_by and ('. By : ' + cstr(self.doc.contact_by)) or '') + \
+							(self.doc.remark and ('.To Discuss : ' + cstr(self.doc.remark)) or ''),
+						"starts_on": self.doc.contact_date + " 10:00:00",
+						"event_type": "Private",
+						"ref_type": "Lead",
+						"ref_name": self.doc.name
+					},
+					{
+						"doctype": "Event User",
+						"parentfield": "event_individuals",
+						"person": self.doc.contact_by
+					}
+				]).insert()
 
 	def get_sender(self, comm):
 		return webnotes.conn.get_value('Sales Email Settings',None,'email_id')
