diff --git a/erpnext/crm/doctype/lead/lead.js b/erpnext/crm/doctype/lead/lead.js
index ad24a6e..10e3f7d 100644
--- a/erpnext/crm/doctype/lead/lead.js
+++ b/erpnext/crm/doctype/lead/lead.js
@@ -12,7 +12,8 @@
 			'Opportunity': this.make_opportunity
 		};
 
-		this.frm.toggle_reqd("lead_name", !this.frm.doc.organization_lead);
+		// For avoiding integration issues.
+		this.frm.set_df_property('first_name', 'reqd', true);
 	}
 
 	onload () {
@@ -84,42 +85,16 @@
 	}
 
 	render_basic_info_html() {
-		let html='';
-		if (cur_frm.doc.lead_owner) {
-			html += `<div class="col-xs-2">
-				<span><b> Lead Owner </b></span>
-			</div>
-			<div class="col-xs-10">
-				<span> ${cur_frm.doc.lead_owner} </span>
-			</div>` ;
+		if (cur_frm.doc.contact_date) {
+			let contact_date = frappe.datetime.obj_to_str(cur_frm.doc.contact_date)
+			let diff_days = frappe.datetime.get_day_diff(contact_date, frappe.datetime.get_today());
+			let color = diff_days > 0 ? "orange" : "green";
+			let message = diff_days > 0 ? __("Next Contact Date") : __("Last Contact Date");
+			let html = `<div class="col-xs-12">
+						<span class="indicator whitespace-nowrap ${color}"><span> ${message} : ${contact_date}</span></span>
+					</div>` ;
+			cur_frm.dashboard.set_headline_alert(html);
 		}
-
-		if (cur_frm.doc.email_id) {
-			html += `<div class="col-xs-2">
-				<span><b> Email </b></span>
-			</div>
-			<div class="col-xs-10">
-				<span> ${cur_frm.doc.email_id} </span>
-			</div>` ;
-		}
-
-		if (cur_frm.doc.mobile_no) {
-			html += `<div class="col-xs-2">
-				<span><b> Mobile </b></span>
-			</div>
-			<div class="col-xs-10">
-				<span> ${cur_frm.doc.mobile_no} </span>
-			</div>` ;
-		}
-
-		html += `<div class="col-xs-2">
-				<span><b> Status </b></span>
-			</div>
-			<div class="col-xs-10">
-				<span> ${cur_frm.doc.status} </span>
-			</div>` ;
-		html = `<div class="row">${html}</div>`;
-		cur_frm.dashboard.set_headline_alert(html);
 	}
 };
 
diff --git a/erpnext/crm/doctype/lead/lead.json b/erpnext/crm/doctype/lead/lead.json
index f9a500f..542977e 100644
--- a/erpnext/crm/doctype/lead/lead.json
+++ b/erpnext/crm/doctype/lead/lead.json
@@ -16,37 +16,36 @@
   "middle_name",
   "last_name",
   "lead_name",
-  "email_id",
-  "mobile_no",
-  "phone",
   "col_break123",
   "status",
   "company_name",
   "designation",
   "gender",
+  "contact_details_section",
+  "email_id",
+  "mobile_no",
+  "whatsapp_no",
+  "column_break_16",
+  "phone",
+  "phone_ext",
   "additional_information_section",
   "no_of_employees",
   "industry",
   "market_segment",
-  "type",
-  "request_type",
   "column_break_22",
-  "whatsapp_no",
   "fax",
   "website",
+  "type",
+  "request_type",
   "address_section",
   "address_html",
-  "address_type",
-  "address_title",
-  "address_line1",
-  "address_line2",
   "city",
+  "pincode",
   "county",
   "column_break2",
   "contact_html",
   "state",
   "country",
-  "pincode",
   "section_break_12",
   "lead_owner",
   "ends_on",
@@ -91,9 +90,9 @@
    "fieldtype": "Data",
    "in_global_search": 1,
    "label": "Full Name",
-   "mandatory_depends_on": "eval: !(doc.company_name)",
    "oldfieldname": "lead_name",
    "oldfieldtype": "Data",
+   "read_only": 1,
    "search_index": 1
   },
   {
@@ -102,7 +101,7 @@
    "in_list_view": 1,
    "in_standard_filter": 1,
    "label": "Organization Name",
-   "mandatory_depends_on": "eval: !(doc.lead_name)",
+   "mandatory_depends_on": "eval: !(doc.first_name)",
    "oldfieldname": "company_name",
    "oldfieldtype": "Data"
   },
@@ -242,23 +241,6 @@
    "read_only": 1
   },
   {
-   "description": "Home, Work, etc.",
-   "fieldname": "address_title",
-   "fieldtype": "Data",
-   "label": "Address Title"
-  },
-  {
-   "fieldname": "address_line1",
-   "fieldtype": "Data",
-   "label": "Address Line 1",
-   "mandatory_depends_on": "eval: doc.address_title && doc.address_type"
-  },
-  {
-   "fieldname": "address_line2",
-   "fieldtype": "Data",
-   "label": "Address Line 2"
-  },
-  {
    "fieldname": "city",
    "fieldtype": "Data",
    "label": "City/Town",
@@ -407,13 +389,6 @@
    "options": "Designation"
   },
   {
-   "default": "Billing",
-   "fieldname": "address_type",
-   "fieldtype": "Select",
-   "label": "Address Type",
-   "options": "Billing\nShipping\nOffice\nPersonal\nPlant\nPostal\nShop\nSubsidiary\nWarehouse\nCurrent\nPermanent\nOther"
-  },
-  {
    "fieldname": "language",
    "fieldtype": "Link",
    "label": "Print Language",
@@ -422,7 +397,8 @@
   {
    "fieldname": "first_name",
    "fieldtype": "Data",
-   "label": "First Name"
+   "label": "First Name",
+   "mandatory_depends_on": "eval: !(doc.company_name)"
   },
   {
    "fieldname": "middle_name",
@@ -457,7 +433,7 @@
   },
   {
    "collapsible": 1,
-   "depends_on": "eval:!doc.__islocal",
+   "depends_on": "eval: !doc.__islocal",
    "fieldname": "address_section",
    "fieldtype": "Section Break",
    "label": "Address"
@@ -475,13 +451,27 @@
    "fieldname": "other_information_section",
    "fieldtype": "Section Break",
    "label": "Other Information"
+  },
+  {
+   "fieldname": "contact_details_section",
+   "fieldtype": "Section Break",
+   "label": "Contact Details"
+  },
+  {
+   "fieldname": "column_break_16",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "phone_ext",
+   "fieldtype": "Data",
+   "label": "Phone Ext."
   }
  ],
  "icon": "fa fa-user",
  "idx": 5,
  "image_field": "image",
  "links": [],
- "modified": "2021-07-28 00:20:37.768449",
+ "modified": "2021-08-04 00:24:57.208590",
  "modified_by": "Administrator",
  "module": "CRM",
  "name": "Lead",
diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py
index f09a814..33fda89 100644
--- a/erpnext/crm/doctype/lead/lead.py
+++ b/erpnext/crm/doctype/lead/lead.py
@@ -21,18 +21,24 @@
 		self.get("__onload").is_customer = customer
 		load_address_and_contact(self)
 
+	def set_full_name(self):
+		self.lead_name = " ".join(filter(None, [self.first_name, self.middle_name, self.last_name]))
+
 	def validate(self):
+		self.set_full_name()
 		self.set_lead_name()
 		self.set_title()
+		self.set_status()
+		self.check_email_id_is_unique()
+		self.validate_email_id()
+		self.validate_contact_date()
 		self._prev = frappe._dict({
 			"contact_date": frappe.db.get_value("Lead", self.name, "contact_date") if (not cint(self.is_new())) else None,
 			"ends_on": frappe.db.get_value("Lead", self.name, "ends_on") if (not cint(self.is_new())) else None,
 			"contact_by": frappe.db.get_value("Lead", self.name, "contact_by") if (not cint(self.is_new())) else None,
 		})
-
-		self.set_status()
-		self.check_email_id_is_unique()
-
+		
+	def validate_email_id(self):
 		if self.email_id:
 			if not self.flags.ignore_email_validation:
 				validate_email_address(self.email_id, throw=True)
@@ -46,6 +52,7 @@
 			if self.is_new() or not self.image:
 				self.image = has_gravatar(self.email_id)
 
+	def validate_contact_date(self):
 		if self.contact_date and getdate(self.contact_date) < getdate(nowdate()):
 			frappe.throw(_("Next Contact Date cannot be in the past"))
 
@@ -88,7 +95,7 @@
 			linked_doc = frappe.get_doc(link['parenttype'], link['parent'])
 
 			if len(linked_doc.get('links')) == 1:
-				linked_doc.delete()
+				linked_doc.delete(ignore_permissions=True)
 			else:
 				to_remove = None
 				for d in linked_doc.get('links'):
@@ -96,6 +103,7 @@
 						to_remove = d
 				if to_remove:
 					linked_doc.remove(to_remove)
+					linked_doc.save(ignore_permissions=True)
 
 	def has_customer(self):
 		return frappe.db.get_value("Customer", {"lead_name": self.name})
