diff --git a/hr/doctype/job_applicant/job_applicant.js b/hr/doctype/job_applicant/job_applicant.js
index 9aff605..f82da11 100644
--- a/hr/doctype/job_applicant/job_applicant.js
+++ b/hr/doctype/job_applicant/job_applicant.js
@@ -16,7 +16,7 @@
 	},
 	make_listing: function(doc) {
 		cur_frm.communication_view = new wn.views.CommunicationList({
-			list: wn.model.get("Communication", {"job_applicant": doc.name}),
+			list: wn.model.get("Communication", {"parent": doc.name, "parenttype": "Job Applicant"}),
 			parent: cur_frm.fields_dict['thread_html'].wrapper,
 			doc: doc,
 			recipients: doc.email_id
diff --git a/patches/september_2013/p01_update_communication.py b/patches/september_2013/p01_update_communication.py
index c3bd61b..d840c80 100644
--- a/patches/september_2013/p01_update_communication.py
+++ b/patches/september_2013/p01_update_communication.py
@@ -7,4 +7,9 @@
 			set parenttype=%s, parentfield='communications', 
 			parent=`%s` 
 			where ifnull(`%s`, '')!=''""" % ("%s", fieldname, fieldname), doctype)
+			
+		webnotes.reload_doc("core", "doctype", "communication")
+			
+		webnotes.conn.sql("""update tabCommunication set communication_date = creation where 
+			ifnull(communication_date, '')='' """)
 	
\ No newline at end of file
diff --git a/selling/doctype/lead/lead.js b/selling/doctype/lead/lead.js
index 4088739..3bc357c 100644
--- a/selling/doctype/lead/lead.js
+++ b/selling/doctype/lead/lead.js
@@ -36,7 +36,90 @@
 		
 		this.frm.dashboard.reset(doc);
 		if(!doc.__islocal) {
-			if(doc.status=="Converted") {
+			if(doc.status=="Converted") {// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+// License: GNU General Public License v3. See license.txt
+
+cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) {
+	return{	query:"controllers.queries.customer_query" } }
+
+wn.provide("erpnext.support");
+// TODO commonify this code
+erpnext.support.CustomerIssue = wn.ui.form.Controller.extend({
+	customer: function() {
+		var me = this;
+		if(this.frm.doc.customer) {
+			return this.frm.call({
+				doc: this.frm.doc,
+				method: "set_customer_defaults",
+			});			
+		}
+	}
+});
+
+$.extend(cur_frm.cscript, new erpnext.support.CustomerIssue({frm: cur_frm}));
+
+$.extend(cur_frm.cscript, {
+	onload: function(doc, dt, dn) {
+		if(in_list(user_roles,'System Manager')) {
+			cur_frm.footer.help_area.innerHTML = '<p><a href="#Form/Email Settings/Email Settings">Email Settings</a><br>\
+				<span class="help">Integrate incoming support emails to Support Ticket</span></p>';
+		}
+	},
+	
+	refresh: function(doc) {
+		erpnext.hide_naming_series();
+		cur_frm.cscript.make_listing(doc);
+		if(!doc.__islocal) {
+			if(cur_frm.fields_dict.status.get_status()=="Write") {
+				if(doc.status!='Closed') cur_frm.add_custom_button('Close Ticket', cur_frm.cscript['Close Ticket']);
+				if(doc.status=='Closed') cur_frm.add_custom_button('Re-Open Ticket', cur_frm.cscript['Re-Open Ticket']);
+			}
+			
+			cur_frm.toggle_enable(["subject", "raised_by"], false);
+			cur_frm.toggle_display("description", false);
+		}
+		refresh_field('status');
+	},
+	
+	make_listing: function(doc) {
+		var wrapper = cur_frm.fields_dict['thread_html'].wrapper;
+		
+		var comm_list = wn.model.get("Communication", {"parent": doc.name, "parenttype":"Lead"})
+							
+		cur_frm.communication_view = new wn.views.CommunicationList({
+			list: comm_list,
+			parent: wrapper,
+			doc: doc,
+			recipients: doc.raised_by
+		})
+
+	},
+		
+	'Close Ticket': function() {
+		cur_frm.cscript.set_status("Closed");
+	},
+	
+	'Re-Open Ticket': function() {
+		cur_frm.cscript.set_status("Open");
+	},
+
+	set_status: function(status) {
+		return wn.call({
+			method:"support.doctype.support_ticket.support_ticket.set_status",
+			args: {
+				name: cur_frm.doc.name,
+				status: status
+			},
+			callback: function(r) {
+				if(!r.exc) cur_frm.reload_doc();
+			}
+		})
+		
+	}
+	
+})
+
+
 				this.frm.dashboard.set_headline_alert(wn._("Converted"), "alert-success", "icon-ok-sign");
 			} else {
 				this.frm.dashboard.set_headline_alert(wn._(doc.status), "alert-info", "icon-exclamation-sign");
diff --git a/support/doctype/support_ticket/support_ticket.js b/support/doctype/support_ticket/support_ticket.js
index 2c1f332..78c3ce5 100644
--- a/support/doctype/support_ticket/support_ticket.js
+++ b/support/doctype/support_ticket/support_ticket.js
@@ -46,16 +46,12 @@
 	make_listing: function(doc) {
 		var wrapper = cur_frm.fields_dict['thread_html'].wrapper;
 		
-		var comm_list = wn.model.get("Communication", {"support_ticket": doc.name})
-
-		var sortfn = function (a, b) { return (b.creation > a.creation) ? 1 : -1; }
-		comm_list = comm_list.sort(sortfn);
+		var comm_list = wn.model.get("Communication", {"parent": doc.name, "parenttype":"Support Ticket"})
 		
-		if(!comm_list.length || (comm_list[comm_list.length - 1].sender != doc.raised_by)) {
+		if(!comm_list.length) {
 			comm_list.push({
 				"sender": doc.raised_by,
-				"creation": doc.creation,
-				"modified": doc.creation,
+				"communication_date": doc.creation,
 				"content": doc.description});
 		}
 					
