diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 892e89d..e57fdf9 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -6,11 +6,9 @@
 erpnext.patches.v11_0.refactor_autoname_naming
 erpnext.patches.v14_0.change_is_subcontracted_fieldtype
 execute:frappe.reload_doc("accounts", "doctype", "POS Payment Method") #2020-05-28
-execute:frappe.reload_doc("HR", "doctype", "HR Settings") #2020-01-16 #2020-07-24
 erpnext.patches.v4_2.update_requested_and_ordered_qty #2021-03-31
 erpnext.patches.v5_7.update_item_description_based_on_item_master
 erpnext.patches.v4_2.repost_reserved_qty #2021-03-31
-execute:frappe.reload_doc("Payroll", "doctype", "salary_slip")
 erpnext.patches.v8_1.setup_gst_india #2017-06-27
 erpnext.patches.v8_1.removed_roles_from_gst_report_non_indian_account #16-08-2018
 erpnext.patches.v8_7.sync_india_custom_fields
@@ -18,27 +16,20 @@
 erpnext.patches.v10_0.rename_price_to_rate_in_pricing_rule
 erpnext.patches.v10_0.set_currency_in_pricing_rule
 erpnext.patches.v10_0.update_translatable_fields
-erpnext.patches.v10_0.rename_offer_letter_to_job_offer
 execute:frappe.delete_doc('DocType', 'Production Planning Tool', ignore_missing=True)
-erpnext.patches.v10_0.migrate_daily_work_summary_settings_to_daily_work_summary_group # 24-12-2018
 erpnext.patches.v10_0.add_default_cash_flow_mappers
 erpnext.patches.v11_0.rename_duplicate_item_code_values
 erpnext.patches.v11_0.make_quality_inspection_template
 erpnext.patches.v11_0.merge_land_unit_with_location
 erpnext.patches.v11_0.add_index_on_nestedset_doctypes
 erpnext.patches.v11_0.remove_modules_setup_page
-erpnext.patches.v11_0.move_leave_approvers_from_employee #13-06-2018
 erpnext.patches.v11_0.update_department_lft_rgt
-erpnext.patches.v11_0.add_default_email_template_for_leave
-erpnext.patches.v11_0.set_default_email_template_in_hr #08-06-2018
 erpnext.patches.v11_0.uom_conversion_data #30-06-2018
 erpnext.patches.v11_0.update_account_type_in_party_type
 erpnext.patches.v11_0.rename_supplier_type_to_supplier_group
 erpnext.patches.v10_1.transfer_subscription_to_auto_repeat
 erpnext.patches.v11_0.update_brand_in_item_price
 erpnext.patches.v11_0.create_default_success_action
-erpnext.patches.v11_0.rename_field_max_days_allowed
-erpnext.patches.v11_0.create_salary_structure_assignments
 erpnext.patches.v11_0.rebuild_tree_for_company
 erpnext.patches.v11_0.create_department_records_for_each_company
 erpnext.patches.v11_0.make_location_from_warehouse
@@ -53,10 +44,8 @@
 erpnext.patches.v11_0.update_total_qty_field
 erpnext.patches.v11_0.update_sales_partner_type
 erpnext.patches.v11_0.rename_asset_adjustment_doctype
-erpnext.patches.v11_0.set_salary_component_properties
 erpnext.patches.v11_0.set_user_permissions_for_department
 erpnext.patches.v11_0.hr_ux_cleanups
-erpnext.patches.v11_0.skip_user_permission_check_for_department
 erpnext.patches.v11_0.set_department_for_doctypes
 erpnext.patches.v11_0.update_allow_transfer_for_manufacture
 erpnext.patches.v11_0.add_item_group_defaults
@@ -70,13 +59,11 @@
 execute:frappe.delete_doc_if_exists("Page", "stock-analytics")
 execute:frappe.delete_doc_if_exists("Page", "production-analytics")
 erpnext.patches.v11_0.ewaybill_fields_gst_india #2018-11-13 #2019-01-09 #2019-04-01 #2019-04-26 #2019-05-03
-erpnext.patches.v11_0.drop_column_max_days_allowed
 erpnext.patches.v10_0.item_barcode_childtable_migrate # 16-02-2019
 erpnext.patches.v11_0.update_delivery_trip_status
 erpnext.patches.v11_0.set_missing_gst_hsn_code
 erpnext.patches.v11_0.rename_bom_wo_fields
 erpnext.patches.v12_0.set_default_homepage_type
-erpnext.patches.v11_0.rename_additional_salary_component_additional_salary
 erpnext.patches.v11_0.renamed_from_to_fields_in_project
 erpnext.patches.v11_0.add_permissions_in_gst_settings #2020-04-04
 erpnext.patches.v11_1.setup_guardian_role
@@ -97,7 +84,6 @@
 erpnext.patches.v12_0.move_item_tax_to_item_tax_template
 erpnext.patches.v11_1.set_variant_based_on
 erpnext.patches.v11_1.woocommerce_set_creation_user
-erpnext.patches.v11_1.set_salary_details_submittable
 erpnext.patches.v11_1.rename_depends_on_lwp
 execute:frappe.delete_doc("Report", "Inactive Items")
 erpnext.patches.v11_1.delete_scheduling_tool
@@ -129,7 +115,6 @@
 execute:frappe.reload_doc('desk', 'doctype', 'dashboard_chart')
 execute:frappe.reload_doc('desk', 'doctype', 'dashboard_chart_field')
 erpnext.patches.v12_0.remove_bank_remittance_custom_fields
-erpnext.patches.v12_0.generate_leave_ledger_entries #04-11-2020
 execute:frappe.delete_doc_if_exists("Report", "Loan Repayment")
 erpnext.patches.v12_0.move_credit_limit_to_customer_credit_limit
 erpnext.patches.v12_0.add_variant_of_in_item_attribute_table
@@ -143,7 +128,6 @@
 erpnext.patches.v12_0.set_payment_entry_status
 erpnext.patches.v12_0.update_owner_fields_in_acc_dimension_custom_fields
 erpnext.patches.v12_0.add_export_type_field_in_party_master
-erpnext.patches.v12_0.remove_denied_leaves_from_leave_ledger
 erpnext.patches.v12_0.update_price_or_product_discount
 erpnext.patches.v12_0.set_production_capacity_in_workstation
 erpnext.patches.v12_0.set_employee_preferred_emails
@@ -152,7 +136,6 @@
 erpnext.patches.v12_0.add_eway_bill_in_delivery_note
 erpnext.patches.v12_0.set_lead_title_field
 erpnext.patches.v12_0.set_permission_einvoicing
-erpnext.patches.v12_0.set_job_offer_applicant_email
 erpnext.patches.v12_0.create_irs_1099_field_united_states
 erpnext.patches.v12_0.move_bank_account_swift_number_to_bank
 erpnext.patches.v12_0.rename_bank_reconciliation
@@ -165,17 +148,11 @@
 erpnext.patches.v12_0.set_total_batch_quantity
 erpnext.patches.v12_0.rename_mws_settings_fields
 erpnext.patches.v12_0.set_updated_purpose_in_pick_list
-erpnext.patches.v12_0.set_default_payroll_based_on
 erpnext.patches.v12_0.repost_stock_ledger_entries_for_target_warehouse
 erpnext.patches.v12_0.update_end_date_and_status_in_email_campaign
-erpnext.patches.v13_0.move_tax_slabs_from_payroll_period_to_income_tax_slab #123
 erpnext.patches.v12_0.fix_quotation_expired_status
 erpnext.patches.v12_0.rename_pos_closing_doctype
 erpnext.patches.v13_0.replace_pos_payment_mode_table #2020-12-29
-erpnext.patches.v12_0.remove_duplicate_leave_ledger_entries #2020-05-22
-erpnext.patches.v13_0.patch_to_fix_reverse_linking_in_additional_salary_encashment_and_incentive
-execute:frappe.reload_doc("HR", "doctype", "Employee Advance")
-erpnext.patches.v12_0.move_due_advance_amount_to_pending_amount
 execute:frappe.delete_doc_if_exists("Page", "appointment-analytic")
 execute:frappe.rename_doc("Desk Page", "Getting Started", "Home", force=True)
 erpnext.patches.v12_0.unset_customer_supplier_based_on_type_of_item_price
@@ -202,11 +179,8 @@
 erpnext.patches.v12_0.set_multi_uom_in_rfq
 erpnext.patches.v13_0.delete_old_sales_reports
 execute:frappe.delete_doc_if_exists("DocType", "Bank Reconciliation")
-erpnext.patches.v13_0.move_doctype_reports_and_notification_from_hr_to_payroll #22-06-2020
-erpnext.patches.v13_0.move_payroll_setting_separately_from_hr_settings #22-06-2020
 erpnext.patches.v12_0.create_itc_reversal_custom_fields
 execute:frappe.reload_doc("regional", "doctype", "e_invoice_settings")
-erpnext.patches.v13_0.check_is_income_tax_component #22-06-2020
 erpnext.patches.v13_0.loyalty_points_entry_for_pos_invoice #22-07-2020
 erpnext.patches.v12_0.add_taxjar_integration_field
 erpnext.patches.v12_0.fix_percent_complete_for_projects
@@ -218,7 +192,6 @@
 erpnext.patches.v12_0.update_state_code_for_daman_and_diu
 erpnext.patches.v12_0.rename_lost_reason_detail
 erpnext.patches.v13_0.drop_razorpay_payload_column
-erpnext.patches.v13_0.update_start_end_date_for_old_shift_assignment
 erpnext.patches.v13_0.setting_custom_roles_for_some_regional_reports
 erpnext.patches.v13_0.rename_issue_doctype_fields
 erpnext.patches.v13_0.change_default_pos_print_format
@@ -227,8 +200,6 @@
 erpnext.patches.v13_0.print_uom_after_quantity_patch
 erpnext.patches.v13_0.set_payment_channel_in_payment_gateway_account
 erpnext.patches.v12_0.setup_einvoice_fields #2020-12-02
-erpnext.patches.v13_0.updates_for_multi_currency_payroll
-erpnext.patches.v13_0.update_reason_for_resignation_in_employee
 execute:frappe.delete_doc("Report", "Quoted Item Comparison")
 erpnext.patches.v13_0.update_member_email_address
 erpnext.patches.v13_0.update_pos_closing_entry_in_merge_log
@@ -237,7 +208,6 @@
 execute:frappe.rename_doc("Workspace", "Loan", "Loan Management", ignore_if_exists=True, force=True)
 erpnext.patches.v13_0.create_uae_pos_invoice_fields
 erpnext.patches.v13_0.update_project_template_tasks
-erpnext.patches.v13_0.set_company_in_leave_ledger_entry
 erpnext.patches.v13_0.convert_qi_parameter_to_link_field
 erpnext.patches.v13_0.add_naming_series_to_old_projects # 1-02-2021
 erpnext.patches.v13_0.update_payment_terms_outstanding
@@ -257,16 +227,13 @@
 erpnext.patches.v12_0.purchase_receipt_status
 erpnext.patches.v13_0.fix_non_unique_represents_company
 erpnext.patches.v12_0.add_document_type_field_for_italy_einvoicing
-erpnext.patches.v13_0.make_non_standard_user_type #13-04-2021 #17-01-2022
 erpnext.patches.v13_0.update_shipment_status
 erpnext.patches.v13_0.remove_attribute_field_from_item_variant_setting
 erpnext.patches.v12_0.add_ewaybill_validity_field
 erpnext.patches.v13_0.set_pos_closing_as_failed
-erpnext.patches.v13_0.rename_stop_to_send_birthday_reminders
 execute:frappe.rename_doc("Workspace", "Loan Management", "Loans", force=True)
 erpnext.patches.v13_0.update_timesheet_changes
 erpnext.patches.v13_0.add_doctype_to_sla #14-06-2021
-erpnext.patches.v13_0.set_training_event_attendance
 erpnext.patches.v13_0.bill_for_rejected_quantity_in_purchase_invoice
 erpnext.patches.v13_0.rename_issue_status_hold_to_on_hold
 erpnext.patches.v13_0.update_response_by_variance
@@ -304,7 +271,6 @@
 erpnext.patches.v13_0.modify_invalid_gain_loss_gl_entries #2
 erpnext.patches.v13_0.fix_additional_cost_in_mfg_stock_entry
 erpnext.patches.v13_0.set_status_in_maintenance_schedule_table
-erpnext.patches.v13_0.add_default_interview_notification_templates
 erpnext.patches.v13_0.enable_scheduler_job_for_item_reposting
 erpnext.patches.v13_0.requeue_failed_reposts
 erpnext.patches.v13_0.update_job_card_status
@@ -322,7 +288,6 @@
 erpnext.patches.v13_0.wipe_serial_no_field_for_0_qty
 erpnext.patches.v13_0.disable_ksa_print_format_for_others # 16-12-2021
 erpnext.patches.v13_0.update_tax_category_for_rcm
-erpnext.patches.v14_0.set_payroll_cost_centers
 erpnext.patches.v13_0.agriculture_deprecation_warning
 erpnext.patches.v13_0.hospitality_deprecation_warning
 erpnext.patches.v13_0.update_asset_quantity_field
@@ -334,7 +299,6 @@
 [post_model_sync]
 execute:frappe.delete_doc_if_exists('Workspace', 'ERPNext Integrations Settings')
 erpnext.patches.v14_0.rename_ongoing_status_in_sla_documents
-erpnext.patches.v14_0.add_default_exit_questionnaire_notification_template
 erpnext.patches.v14_0.delete_shopify_doctypes
 erpnext.patches.v14_0.delete_healthcare_doctypes
 erpnext.patches.v14_0.delete_hub_doctypes
@@ -343,7 +307,6 @@
 erpnext.patches.v14_0.delete_education_doctypes
 erpnext.patches.v14_0.delete_datev_doctypes
 erpnext.patches.v14_0.rearrange_company_fields
-erpnext.patches.v14_0.update_leave_notification_template
 erpnext.patches.v14_0.restore_einvoice_fields
 erpnext.patches.v13_0.update_sane_transfer_against
 erpnext.patches.v12_0.add_company_link_to_einvoice_settings
@@ -358,20 +321,16 @@
 erpnext.patches.v13_0.update_accounts_in_loan_docs
 erpnext.patches.v14_0.update_batch_valuation_flag
 erpnext.patches.v14_0.delete_non_profit_doctypes
-erpnext.patches.v13_0.update_employee_advance_status
 erpnext.patches.v13_0.add_cost_center_in_loans
 erpnext.patches.v13_0.set_return_against_in_pos_invoice_references
 erpnext.patches.v13_0.remove_unknown_links_to_prod_plan_items # 24-03-2022
-erpnext.patches.v13_0.update_expense_claim_status_for_paid_advances
 erpnext.patches.v13_0.create_gst_custom_fields_in_quotation
 erpnext.patches.v13_0.copy_custom_field_filters_to_website_item
 erpnext.patches.v13_0.change_default_item_manufacturer_fieldtype
 erpnext.patches.v13_0.requeue_recoverable_reposts
 erpnext.patches.v14_0.discount_accounting_separation
-erpnext.patches.v14_0.delete_employee_transfer_property_doctype
 erpnext.patches.v13_0.create_accounting_dimensions_in_orders
 erpnext.patches.v13_0.set_per_billed_in_return_delivery_note
 execute:frappe.delete_doc("DocType", "Naming Series")
-erpnext.patches.v13_0.set_payroll_entry_status
 erpnext.patches.v13_0.job_card_status_on_hold
 erpnext.patches.v14_0.delete_hr_payroll_doctypes
\ No newline at end of file
diff --git a/erpnext/patches/v10_0/migrate_daily_work_summary_settings_to_daily_work_summary_group.py b/erpnext/patches/v10_0/migrate_daily_work_summary_settings_to_daily_work_summary_group.py
deleted file mode 100644
index 2cbbe05..0000000
--- a/erpnext/patches/v10_0/migrate_daily_work_summary_settings_to_daily_work_summary_group.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (c) 2018, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-
-
-def execute():
-	if not frappe.db.table_exists("Daily Work Summary Group"):
-		frappe.reload_doc("hr", "doctype", "daily_work_summary_group")
-		frappe.reload_doc("hr", "doctype", "daily_work_summary_group_user")
-
-		# check if Daily Work Summary Settings Company table exists
-		try:
-			frappe.db.sql("DESC `tabDaily Work Summary Settings Company`")
-		except Exception:
-			return
-
-		# get the previously saved settings
-		previous_setting = get_previous_setting()
-		if previous_setting["companies"]:
-			for d in previous_setting["companies"]:
-				users = frappe.get_list(
-					"Employee", dict(company=d.company, user_id=("!=", " ")), "user_id as user"
-				)
-				if len(users):
-					# create new group entry for each company entry
-					new_group = frappe.get_doc(
-						dict(
-							doctype="Daily Work Summary Group",
-							name="Daily Work Summary for " + d.company,
-							users=users,
-							send_emails_at=d.send_emails_at,
-							subject=previous_setting["subject"],
-							message=previous_setting["message"],
-						)
-					)
-					new_group.flags.ignore_permissions = True
-					new_group.flags.ignore_validate = True
-					new_group.insert(ignore_if_duplicate=True)
-
-	frappe.delete_doc("DocType", "Daily Work Summary Settings")
-	frappe.delete_doc("DocType", "Daily Work Summary Settings Company")
-
-
-def get_previous_setting():
-	obj = {}
-	setting_data = frappe.db.sql(
-		"select field, value from tabSingles where doctype='Daily Work Summary Settings'"
-	)
-	for field, value in setting_data:
-		obj[field] = value
-	obj["companies"] = get_setting_companies()
-	return obj
-
-
-def get_setting_companies():
-	return frappe.db.sql("select * from `tabDaily Work Summary Settings Company`", as_dict=True)
diff --git a/erpnext/patches/v10_0/rename_offer_letter_to_job_offer.py b/erpnext/patches/v10_0/rename_offer_letter_to_job_offer.py
deleted file mode 100644
index a2deab6..0000000
--- a/erpnext/patches/v10_0/rename_offer_letter_to_job_offer.py
+++ /dev/null
@@ -1,10 +0,0 @@
-import frappe
-
-
-def execute():
-	if frappe.db.table_exists("Offer Letter") and not frappe.db.table_exists("Job Offer"):
-		frappe.rename_doc("DocType", "Offer Letter", "Job Offer", force=True)
-		frappe.rename_doc("DocType", "Offer Letter Term", "Job Offer Term", force=True)
-		frappe.reload_doc("hr", "doctype", "job_offer")
-		frappe.reload_doc("hr", "doctype", "job_offer_term")
-		frappe.delete_doc("Print Format", "Offer Letter")
diff --git a/erpnext/patches/v11_0/add_default_email_template_for_leave.py b/erpnext/patches/v11_0/add_default_email_template_for_leave.py
deleted file mode 100644
index 1fddc7f..0000000
--- a/erpnext/patches/v11_0/add_default_email_template_for_leave.py
+++ /dev/null
@@ -1,38 +0,0 @@
-import os
-
-import frappe
-from frappe import _
-
-
-def execute():
-	frappe.reload_doc("email", "doctype", "email_template")
-
-	if not frappe.db.exists("Email Template", _("Leave Approval Notification")):
-		base_path = frappe.get_app_path("erpnext", "hr", "doctype")
-		response = frappe.read_file(
-			os.path.join(base_path, "leave_application/leave_application_email_template.html")
-		)
-		frappe.get_doc(
-			{
-				"doctype": "Email Template",
-				"name": _("Leave Approval Notification"),
-				"response": response,
-				"subject": _("Leave Approval Notification"),
-				"owner": frappe.session.user,
-			}
-		).insert(ignore_permissions=True)
-
-	if not frappe.db.exists("Email Template", _("Leave Status Notification")):
-		base_path = frappe.get_app_path("erpnext", "hr", "doctype")
-		response = frappe.read_file(
-			os.path.join(base_path, "leave_application/leave_application_email_template.html")
-		)
-		frappe.get_doc(
-			{
-				"doctype": "Email Template",
-				"name": _("Leave Status Notification"),
-				"response": response,
-				"subject": _("Leave Status Notification"),
-				"owner": frappe.session.user,
-			}
-		).insert(ignore_permissions=True)
diff --git a/erpnext/patches/v11_0/create_salary_structure_assignments.py b/erpnext/patches/v11_0/create_salary_structure_assignments.py
deleted file mode 100644
index b81e867..0000000
--- a/erpnext/patches/v11_0/create_salary_structure_assignments.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright (c) 2017, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-from datetime import datetime
-
-import frappe
-from frappe.utils import getdate
-
-from erpnext.payroll.doctype.salary_structure_assignment.salary_structure_assignment import (
-	DuplicateAssignment,
-)
-
-
-def execute():
-	frappe.reload_doc("Payroll", "doctype", "Salary Structure")
-	frappe.reload_doc("Payroll", "doctype", "Salary Structure Assignment")
-	frappe.db.sql(
-		"""
-		delete from `tabSalary Structure Assignment`
-		where salary_structure in (select name from `tabSalary Structure` where is_active='No' or docstatus!=1)
-	"""
-	)
-	if frappe.db.table_exists("Salary Structure Employee"):
-		ss_details = frappe.db.sql(
-			"""
-			select sse.employee, sse.employee_name, sse.from_date, sse.to_date,
-				sse.base, sse.variable, sse.parent as salary_structure, ss.company
-			from `tabSalary Structure Employee` sse, `tabSalary Structure` ss
-			where ss.name = sse.parent AND ss.is_active='Yes'
-			AND sse.employee in (select name from `tabEmployee` where ifNull(status, '') != 'Left')""",
-			as_dict=1,
-		)
-	else:
-		cols = ""
-		if "base" in frappe.db.get_table_columns("Salary Structure"):
-			cols = ", base, variable"
-
-		ss_details = frappe.db.sql(
-			"""
-			select name as salary_structure, employee, employee_name, from_date, to_date, company {0}
-			from `tabSalary Structure`
-			where is_active='Yes'
-			AND employee in (select name from `tabEmployee` where ifNull(status, '') != 'Left')
-		""".format(
-				cols
-			),
-			as_dict=1,
-		)
-
-	all_companies = frappe.db.get_all("Company", fields=["name", "default_currency"])
-	for d in all_companies:
-		company = d.name
-		company_currency = d.default_currency
-
-		frappe.db.sql(
-			"""update `tabSalary Structure` set currency = %s where company=%s""",
-			(company_currency, company),
-		)
-
-	for d in ss_details:
-		try:
-			joining_date, relieving_date = frappe.db.get_value(
-				"Employee", d.employee, ["date_of_joining", "relieving_date"]
-			)
-			from_date = d.from_date
-			if joining_date and getdate(from_date) < joining_date:
-				from_date = joining_date
-			elif relieving_date and getdate(from_date) > relieving_date:
-				continue
-			company_currency = frappe.db.get_value("Company", d.company, "default_currency")
-
-			s = frappe.new_doc("Salary Structure Assignment")
-			s.employee = d.employee
-			s.employee_name = d.employee_name
-			s.salary_structure = d.salary_structure
-			s.from_date = from_date
-			s.to_date = d.to_date if isinstance(d.to_date, datetime) else None
-			s.base = d.get("base")
-			s.variable = d.get("variable")
-			s.company = d.company
-			s.currency = company_currency
-
-			# to migrate the data of the old employees
-			s.flags.old_employee = True
-			s.save()
-			s.submit()
-		except DuplicateAssignment:
-			pass
-
-	frappe.db.sql("update `tabSalary Structure` set docstatus=1")
diff --git a/erpnext/patches/v11_0/drop_column_max_days_allowed.py b/erpnext/patches/v11_0/drop_column_max_days_allowed.py
deleted file mode 100644
index 4b4770d..0000000
--- a/erpnext/patches/v11_0/drop_column_max_days_allowed.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import frappe
-
-
-def execute():
-	if frappe.db.exists("DocType", "Leave Type"):
-		if "max_days_allowed" in frappe.db.get_table_columns("Leave Type"):
-			frappe.db.sql("alter table `tabLeave Type` drop column max_days_allowed")
diff --git a/erpnext/patches/v11_0/move_leave_approvers_from_employee.py b/erpnext/patches/v11_0/move_leave_approvers_from_employee.py
deleted file mode 100644
index f91a7db..0000000
--- a/erpnext/patches/v11_0/move_leave_approvers_from_employee.py
+++ /dev/null
@@ -1,34 +0,0 @@
-import frappe
-from frappe.model.utils.rename_field import rename_field
-
-
-def execute():
-	frappe.reload_doc("hr", "doctype", "department_approver")
-	frappe.reload_doc("hr", "doctype", "employee")
-	frappe.reload_doc("hr", "doctype", "department")
-
-	if frappe.db.has_column("Department", "leave_approver"):
-		rename_field("Department", "leave_approver", "leave_approvers")
-
-	if frappe.db.has_column("Department", "expense_approver"):
-		rename_field("Department", "expense_approver", "expense_approvers")
-
-	if not frappe.db.table_exists("Employee Leave Approver"):
-		return
-
-	approvers = frappe.db.sql(
-		"""select distinct app.leave_approver, emp.department from
-	`tabEmployee Leave Approver` app, `tabEmployee` emp
-		where app.parenttype = 'Employee'
-		and emp.name = app.parent
-		""",
-		as_dict=True,
-	)
-
-	for record in approvers:
-		if record.department:
-			department = frappe.get_doc("Department", record.department)
-			if not department:
-				return
-			if not len(department.leave_approvers):
-				department.append("leave_approvers", {"approver": record.leave_approver}).db_insert()
diff --git a/erpnext/patches/v11_0/rename_additional_salary_component_additional_salary.py b/erpnext/patches/v11_0/rename_additional_salary_component_additional_salary.py
deleted file mode 100644
index 036ae8e..0000000
--- a/erpnext/patches/v11_0/rename_additional_salary_component_additional_salary.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import frappe
-
-# this patch should have been included with this PR https://github.com/frappe/erpnext/pull/14302
-
-
-def execute():
-	if frappe.db.table_exists("Additional Salary Component"):
-		if not frappe.db.table_exists("Additional Salary"):
-			frappe.rename_doc("DocType", "Additional Salary Component", "Additional Salary")
-
-		frappe.delete_doc("DocType", "Additional Salary Component")
diff --git a/erpnext/patches/v11_0/rename_field_max_days_allowed.py b/erpnext/patches/v11_0/rename_field_max_days_allowed.py
deleted file mode 100644
index 0813770..0000000
--- a/erpnext/patches/v11_0/rename_field_max_days_allowed.py
+++ /dev/null
@@ -1,15 +0,0 @@
-import frappe
-from frappe.model.utils.rename_field import rename_field
-
-
-def execute():
-	frappe.db.sql(
-		"""
-		UPDATE `tabLeave Type`
-		SET max_days_allowed = '0'
-		WHERE trim(coalesce(max_days_allowed, '')) = ''
-	"""
-	)
-	frappe.db.sql_ddl("""ALTER table `tabLeave Type` modify max_days_allowed int(8) NOT NULL""")
-	frappe.reload_doc("hr", "doctype", "leave_type")
-	rename_field("Leave Type", "max_days_allowed", "max_continuous_days_allowed")
diff --git a/erpnext/patches/v11_0/set_default_email_template_in_hr.py b/erpnext/patches/v11_0/set_default_email_template_in_hr.py
deleted file mode 100644
index ee083ca..0000000
--- a/erpnext/patches/v11_0/set_default_email_template_in_hr.py
+++ /dev/null
@@ -1,9 +0,0 @@
-import frappe
-from frappe import _
-
-
-def execute():
-	hr_settings = frappe.get_single("HR Settings")
-	hr_settings.leave_approval_notification_template = _("Leave Approval Notification")
-	hr_settings.leave_status_notification_template = _("Leave Status Notification")
-	hr_settings.save()
diff --git a/erpnext/patches/v11_0/set_department_for_doctypes.py b/erpnext/patches/v11_0/set_department_for_doctypes.py
index 4900458..b784772 100644
--- a/erpnext/patches/v11_0/set_department_for_doctypes.py
+++ b/erpnext/patches/v11_0/set_department_for_doctypes.py
@@ -6,19 +6,6 @@
 def execute():
 
 	doctypes_to_update = {
-		"hr": [
-			"Appraisal",
-			"Leave Allocation",
-			"Expense Claim",
-			"Salary Slip",
-			"Attendance",
-			"Training Feedback",
-			"Training Result Employee",
-			"Leave Application",
-			"Employee Advance",
-			"Training Event Employee",
-			"Payroll Employee Detail",
-		],
 		"projects": ["Activity Cost", "Timesheet"],
 		"setup": ["Sales Person"],
 	}
diff --git a/erpnext/patches/v11_0/set_salary_component_properties.py b/erpnext/patches/v11_0/set_salary_component_properties.py
deleted file mode 100644
index 3ec9f8a..0000000
--- a/erpnext/patches/v11_0/set_salary_component_properties.py
+++ /dev/null
@@ -1,22 +0,0 @@
-import frappe
-
-
-def execute():
-	frappe.reload_doc("Payroll", "doctype", "salary_detail")
-	frappe.reload_doc("Payroll", "doctype", "salary_component")
-
-	frappe.db.sql("update `tabSalary Component` set is_tax_applicable=1 where type='Earning'")
-
-	frappe.db.sql(
-		"""update `tabSalary Component` set variable_based_on_taxable_salary=1
-	    where type='Deduction' and name in ('TDS', 'Tax Deducted at Source')"""
-	)
-
-	frappe.db.sql(
-		"""update `tabSalary Detail` set is_tax_applicable=1
-	    where parentfield='earnings' and statistical_component=0"""
-	)
-	frappe.db.sql(
-		"""update `tabSalary Detail` set variable_based_on_taxable_salary=1
-	    where parentfield='deductions' and salary_component in ('TDS', 'Tax Deducted at Source')"""
-	)
diff --git a/erpnext/patches/v11_0/skip_user_permission_check_for_department.py b/erpnext/patches/v11_0/skip_user_permission_check_for_department.py
deleted file mode 100644
index 1327da9..0000000
--- a/erpnext/patches/v11_0/skip_user_permission_check_for_department.py
+++ /dev/null
@@ -1,85 +0,0 @@
-import frappe
-from frappe.desk.form.linked_with import get_linked_doctypes
-
-# Skips user permission check for doctypes where department link field was recently added
-# https://github.com/frappe/erpnext/pull/14121
-
-
-def execute():
-	doctypes_to_skip = []
-	for doctype in [
-		"Appraisal",
-		"Leave Allocation",
-		"Expense Claim",
-		"Instructor",
-		"Salary Slip",
-		"Attendance",
-		"Training Feedback",
-		"Training Result Employee",
-		"Leave Application",
-		"Employee Advance",
-		"Activity Cost",
-		"Training Event Employee",
-		"Timesheet",
-		"Sales Person",
-		"Payroll Employee Detail",
-	]:
-		if frappe.db.exists("Custom Field", {"dt": doctype, "fieldname": "department"}):
-			continue
-		doctypes_to_skip.append(doctype)
-
-	frappe.reload_doctype("User Permission")
-
-	user_permissions = frappe.get_all(
-		"User Permission",
-		filters=[["allow", "=", "Department"], ["applicable_for", "in", [None] + doctypes_to_skip]],
-		fields=["name", "applicable_for"],
-	)
-
-	user_permissions_to_delete = []
-	new_user_permissions_list = []
-
-	for user_permission in user_permissions:
-		if user_permission.applicable_for:
-			# simply delete user permission record since it needs to be skipped.
-			user_permissions_to_delete.append(user_permission.name)
-		else:
-			# if applicable_for is `None` it means that user permission is applicable for every doctype
-			# to avoid this we need to create other user permission records and only skip the listed doctypes in this patch
-			linked_doctypes = get_linked_doctypes(user_permission.allow, True).keys()
-			applicable_for_doctypes = list(set(linked_doctypes) - set(doctypes_to_skip))
-
-			user_permissions_to_delete.append(user_permission.name)
-
-			for doctype in applicable_for_doctypes:
-				if doctype:
-					# Maintain sequence (name, user, allow, for_value, applicable_for, apply_to_all_doctypes)
-					new_user_permissions_list.append(
-						(
-							frappe.generate_hash("", 10),
-							user_permission.user,
-							user_permission.allow,
-							user_permission.for_value,
-							doctype,
-							0,
-						)
-					)
-
-	if new_user_permissions_list:
-		frappe.db.sql(
-			"""
-			INSERT INTO `tabUser Permission`
-			(`name`, `user`, `allow`, `for_value`, `applicable_for`, `apply_to_all_doctypes`)
-			VALUES {}""".format(
-				", ".join(["%s"] * len(new_user_permissions_list))
-			),  # nosec
-			tuple(new_user_permissions_list),
-		)
-
-	if user_permissions_to_delete:
-		frappe.db.sql(
-			"DELETE FROM `tabUser Permission` WHERE `name` IN ({})".format(  # nosec
-				",".join(["%s"] * len(user_permissions_to_delete))
-			),
-			tuple(user_permissions_to_delete),
-		)
diff --git a/erpnext/patches/v11_0/update_department_lft_rgt.py b/erpnext/patches/v11_0/update_department_lft_rgt.py
index bca5e9e..778392e 100644
--- a/erpnext/patches/v11_0/update_department_lft_rgt.py
+++ b/erpnext/patches/v11_0/update_department_lft_rgt.py
@@ -5,7 +5,7 @@
 
 def execute():
 	"""assign lft and rgt appropriately"""
-	frappe.reload_doc("hr", "doctype", "department")
+	frappe.reload_doc("setup", "doctype", "department")
 	if not frappe.db.exists("Department", _("All Departments")):
 		frappe.get_doc(
 			{"doctype": "Department", "department_name": _("All Departments"), "is_group": 1}
diff --git a/erpnext/patches/v11_1/rename_depends_on_lwp.py b/erpnext/patches/v11_1/rename_depends_on_lwp.py
deleted file mode 100644
index 4e71838..0000000
--- a/erpnext/patches/v11_1/rename_depends_on_lwp.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-from frappe import scrub
-from frappe.model.utils.rename_field import rename_field
-
-
-def execute():
-	for doctype in ("Salary Component", "Salary Detail"):
-		if "depends_on_lwp" in frappe.db.get_table_columns(doctype):
-			frappe.reload_doc("Payroll", "doctype", scrub(doctype))
-			rename_field(doctype, "depends_on_lwp", "depends_on_payment_days")
diff --git a/erpnext/patches/v11_1/set_salary_details_submittable.py b/erpnext/patches/v11_1/set_salary_details_submittable.py
deleted file mode 100644
index e5ecce6..0000000
--- a/erpnext/patches/v11_1/set_salary_details_submittable.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import frappe
-
-
-def execute():
-	frappe.db.sql(
-		"""
-		update `tabSalary Structure` ss, `tabSalary Detail` sd
-		set sd.docstatus=1
-		where ss.name=sd.parent and ss.docstatus=1 and sd.parenttype='Salary Structure'
-	"""
-	)
diff --git a/erpnext/patches/v12_0/generate_leave_ledger_entries.py b/erpnext/patches/v12_0/generate_leave_ledger_entries.py
deleted file mode 100644
index 354c509..0000000
--- a/erpnext/patches/v12_0/generate_leave_ledger_entries.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# Copyright (c) 2018, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-from frappe.utils import getdate, today
-
-
-def execute():
-	"""Generates leave ledger entries for leave allocation/application/encashment
-	for last allocation"""
-	frappe.reload_doc("HR", "doctype", "Leave Ledger Entry")
-	frappe.reload_doc("HR", "doctype", "Leave Encashment")
-	frappe.reload_doc("HR", "doctype", "Leave Type")
-
-	if not frappe.get_meta("Leave Allocation").has_field("unused_leaves"):
-		frappe.reload_doc("HR", "doctype", "Leave Allocation")
-		update_leave_allocation_fieldname()
-
-	generate_allocation_ledger_entries()
-	generate_application_leave_ledger_entries()
-	generate_encashment_leave_ledger_entries()
-	generate_expiry_allocation_ledger_entries()
-
-
-def update_leave_allocation_fieldname():
-	"""maps data from old field to the new field"""
-	frappe.db.sql(
-		"""
-		UPDATE `tabLeave Allocation`
-		SET `unused_leaves` = `carry_forwarded_leaves`
-	"""
-	)
-
-
-def generate_allocation_ledger_entries():
-	"""fix ledger entries for missing leave allocation transaction"""
-	allocation_list = get_allocation_records()
-
-	for allocation in allocation_list:
-		if not frappe.db.exists(
-			"Leave Ledger Entry",
-			{"transaction_type": "Leave Allocation", "transaction_name": allocation.name},
-		):
-			allocation_obj = frappe.get_doc("Leave Allocation", allocation)
-			allocation_obj.create_leave_ledger_entry()
-
-
-def generate_application_leave_ledger_entries():
-	"""fix ledger entries for missing leave application transaction"""
-	leave_applications = get_leaves_application_records()
-
-	for application in leave_applications:
-		if not frappe.db.exists(
-			"Leave Ledger Entry",
-			{"transaction_type": "Leave Application", "transaction_name": application.name},
-		):
-			frappe.get_doc("Leave Application", application.name).create_leave_ledger_entry()
-
-
-def generate_encashment_leave_ledger_entries():
-	"""fix ledger entries for missing leave encashment transaction"""
-	leave_encashments = get_leave_encashment_records()
-
-	for encashment in leave_encashments:
-		if not frappe.db.exists(
-			"Leave Ledger Entry",
-			{"transaction_type": "Leave Encashment", "transaction_name": encashment.name},
-		):
-			frappe.get_doc("Leave Encashment", encashment).create_leave_ledger_entry()
-
-
-def generate_expiry_allocation_ledger_entries():
-	"""fix ledger entries for missing leave allocation transaction"""
-	from erpnext.hr.doctype.leave_ledger_entry.leave_ledger_entry import expire_allocation
-
-	allocation_list = get_allocation_records()
-
-	for allocation in allocation_list:
-		if not frappe.db.exists(
-			"Leave Ledger Entry",
-			{"transaction_type": "Leave Allocation", "transaction_name": allocation.name, "is_expired": 1},
-		):
-			allocation_obj = frappe.get_doc("Leave Allocation", allocation)
-			if allocation_obj.to_date <= getdate(today()):
-				expire_allocation(allocation_obj)
-
-
-def get_allocation_records():
-	return frappe.get_all(
-		"Leave Allocation", filters={"docstatus": 1}, fields=["name"], order_by="to_date ASC"
-	)
-
-
-def get_leaves_application_records():
-	return frappe.get_all("Leave Application", filters={"docstatus": 1}, fields=["name"])
-
-
-def get_leave_encashment_records():
-	return frappe.get_all("Leave Encashment", filters={"docstatus": 1}, fields=["name"])
diff --git a/erpnext/patches/v12_0/move_due_advance_amount_to_pending_amount.py b/erpnext/patches/v12_0/move_due_advance_amount_to_pending_amount.py
deleted file mode 100644
index 8b8d963..0000000
--- a/erpnext/patches/v12_0/move_due_advance_amount_to_pending_amount.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2019, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-
-
-def execute():
-	"""Move from due_advance_amount to pending_amount"""
-
-	if frappe.db.has_column("Employee Advance", "due_advance_amount"):
-		frappe.db.sql(""" UPDATE `tabEmployee Advance` SET pending_amount=due_advance_amount """)
diff --git a/erpnext/patches/v12_0/remove_denied_leaves_from_leave_ledger.py b/erpnext/patches/v12_0/remove_denied_leaves_from_leave_ledger.py
deleted file mode 100644
index 4029a3f..0000000
--- a/erpnext/patches/v12_0/remove_denied_leaves_from_leave_ledger.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2018, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-
-
-def execute():
-	"""Delete leave ledger entry created
-	via leave applications with status != Approved"""
-	if not frappe.db.a_row_exists("Leave Ledger Entry"):
-		return
-
-	leave_application_list = get_denied_leave_application_list()
-	if leave_application_list:
-		delete_denied_leaves_from_leave_ledger_entry(leave_application_list)
-
-
-def get_denied_leave_application_list():
-	return frappe.db.sql_list(
-		""" Select name from `tabLeave Application` where status <> 'Approved' """
-	)
-
-
-def delete_denied_leaves_from_leave_ledger_entry(leave_application_list):
-	if leave_application_list:
-		frappe.db.sql(
-			""" Delete
-			FROM `tabLeave Ledger Entry`
-			WHERE
-				transaction_type = 'Leave Application'
-				AND transaction_name in (%s) """
-			% (", ".join(["%s"] * len(leave_application_list))),  # nosec
-			tuple(leave_application_list),
-		)
diff --git a/erpnext/patches/v12_0/remove_duplicate_leave_ledger_entries.py b/erpnext/patches/v12_0/remove_duplicate_leave_ledger_entries.py
deleted file mode 100644
index 8247734..0000000
--- a/erpnext/patches/v12_0/remove_duplicate_leave_ledger_entries.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (c) 2018, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-
-
-def execute():
-	"""Delete duplicate leave ledger entries of type allocation created."""
-	frappe.reload_doc("hr", "doctype", "leave_ledger_entry")
-	if not frappe.db.a_row_exists("Leave Ledger Entry"):
-		return
-
-	duplicate_records_list = get_duplicate_records()
-	delete_duplicate_ledger_entries(duplicate_records_list)
-
-
-def get_duplicate_records():
-	"""Fetch all but one duplicate records from the list of expired leave allocation."""
-	return frappe.db.sql(
-		"""
-		SELECT name, employee, transaction_name, leave_type, is_carry_forward, from_date, to_date
-		FROM `tabLeave Ledger Entry`
-		WHERE
-			transaction_type = 'Leave Allocation'
-			AND docstatus = 1
-			AND is_expired = 1
-		GROUP BY
-			employee, transaction_name, leave_type, is_carry_forward, from_date, to_date
-		HAVING
-			count(name) > 1
-		ORDER BY
-			creation
-	"""
-	)
-
-
-def delete_duplicate_ledger_entries(duplicate_records_list):
-	"""Delete duplicate leave ledger entries."""
-	if not duplicate_records_list:
-		return
-	for d in duplicate_records_list:
-		frappe.db.sql(
-			"""
-			DELETE FROM `tabLeave Ledger Entry`
-			WHERE name != %s
-				AND employee = %s
-				AND transaction_name = %s
-				AND leave_type = %s
-				AND is_carry_forward = %s
-				AND from_date = %s
-				AND to_date = %s
-		""",
-			tuple(d),
-		)
diff --git a/erpnext/patches/v12_0/set_default_payroll_based_on.py b/erpnext/patches/v12_0/set_default_payroll_based_on.py
deleted file mode 100644
index de641c6..0000000
--- a/erpnext/patches/v12_0/set_default_payroll_based_on.py
+++ /dev/null
@@ -1,6 +0,0 @@
-import frappe
-
-
-def execute():
-	frappe.reload_doc("hr", "doctype", "hr_settings")
-	frappe.db.set_value("HR Settings", None, "payroll_based_on", "Leave")
diff --git a/erpnext/patches/v12_0/set_job_offer_applicant_email.py b/erpnext/patches/v12_0/set_job_offer_applicant_email.py
deleted file mode 100644
index 0e3b5c4..0000000
--- a/erpnext/patches/v12_0/set_job_offer_applicant_email.py
+++ /dev/null
@@ -1,14 +0,0 @@
-import frappe
-
-
-def execute():
-	frappe.reload_doc("hr", "doctype", "job_offer")
-
-	frappe.db.sql(
-		"""
-		UPDATE
-			`tabJob Offer` AS offer
-		SET
-			applicant_email = (SELECT email_id FROM `tabJob Applicant` WHERE name = offer.job_applicant)
-	"""
-	)
diff --git a/erpnext/patches/v13_0/add_default_interview_notification_templates.py b/erpnext/patches/v13_0/add_default_interview_notification_templates.py
deleted file mode 100644
index 9a47efe..0000000
--- a/erpnext/patches/v13_0/add_default_interview_notification_templates.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import os
-
-import frappe
-from frappe import _
-
-
-def execute():
-	if not frappe.db.exists("Email Template", _("Interview Reminder")):
-		base_path = frappe.get_app_path("erpnext", "hr", "doctype")
-		response = frappe.read_file(
-			os.path.join(base_path, "interview/interview_reminder_notification_template.html")
-		)
-
-		frappe.get_doc(
-			{
-				"doctype": "Email Template",
-				"name": _("Interview Reminder"),
-				"response": response,
-				"subject": _("Interview Reminder"),
-				"owner": frappe.session.user,
-			}
-		).insert(ignore_permissions=True)
-
-	if not frappe.db.exists("Email Template", _("Interview Feedback Reminder")):
-		base_path = frappe.get_app_path("erpnext", "hr", "doctype")
-		response = frappe.read_file(
-			os.path.join(base_path, "interview/interview_feedback_reminder_template.html")
-		)
-
-		frappe.get_doc(
-			{
-				"doctype": "Email Template",
-				"name": _("Interview Feedback Reminder"),
-				"response": response,
-				"subject": _("Interview Feedback Reminder"),
-				"owner": frappe.session.user,
-			}
-		).insert(ignore_permissions=True)
-
-	hr_settings = frappe.get_doc("HR Settings")
-	hr_settings.interview_reminder_template = _("Interview Reminder")
-	hr_settings.feedback_reminder_notification_template = _("Interview Feedback Reminder")
-	hr_settings.flags.ignore_links = True
-	hr_settings.save()
diff --git a/erpnext/patches/v13_0/check_is_income_tax_component.py b/erpnext/patches/v13_0/check_is_income_tax_component.py
deleted file mode 100644
index 0ae3a3e..0000000
--- a/erpnext/patches/v13_0/check_is_income_tax_component.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (c) 2019, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-from frappe.custom.doctype.custom_field.custom_field import create_custom_field
-
-import erpnext
-
-
-def execute():
-
-	doctypes = [
-		"salary_component",
-		"Employee Tax Exemption Declaration",
-		"Employee Tax Exemption Proof Submission",
-		"Employee Tax Exemption Declaration Category",
-		"Employee Tax Exemption Proof Submission Detail",
-		"gratuity_rule",
-		"gratuity_rule_slab",
-		"gratuity_applicable_component",
-	]
-
-	for doctype in doctypes:
-		frappe.reload_doc("Payroll", "doctype", doctype, force=True)
-
-	reports = ["Professional Tax Deductions", "Provident Fund Deductions", "E-Invoice Summary"]
-	for report in reports:
-		frappe.reload_doc("Regional", "Report", report)
-		frappe.reload_doc("Regional", "Report", report)
-
-	if erpnext.get_region() == "India":
-		create_custom_field(
-			"Salary Component",
-			dict(
-				fieldname="component_type",
-				label="Component Type",
-				fieldtype="Select",
-				insert_after="description",
-				options="\nProvident Fund\nAdditional Provident Fund\nProvident Fund Loan\nProfessional Tax",
-				depends_on='eval:doc.type == "Deduction"',
-			),
-		)
-
-	if frappe.db.exists("Salary Component", "Income Tax"):
-		frappe.db.set_value("Salary Component", "Income Tax", "is_income_tax_component", 1)
-	if frappe.db.exists("Salary Component", "TDS"):
-		frappe.db.set_value("Salary Component", "TDS", "is_income_tax_component", 1)
-
-	components = frappe.db.sql(
-		"select name from `tabSalary Component` where variable_based_on_taxable_salary = 1", as_dict=1
-	)
-	for component in components:
-		frappe.db.set_value("Salary Component", component.name, "is_income_tax_component", 1)
-
-	if erpnext.get_region() == "India":
-		if frappe.db.exists("Salary Component", "Provident Fund"):
-			frappe.db.set_value("Salary Component", "Provident Fund", "component_type", "Provident Fund")
-		if frappe.db.exists("Salary Component", "Professional Tax"):
-			frappe.db.set_value(
-				"Salary Component", "Professional Tax", "component_type", "Professional Tax"
-			)
diff --git a/erpnext/patches/v13_0/make_non_standard_user_type.py b/erpnext/patches/v13_0/make_non_standard_user_type.py
deleted file mode 100644
index e2c0685..0000000
--- a/erpnext/patches/v13_0/make_non_standard_user_type.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (c) 2019, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-
-from erpnext.setup.install import add_non_standard_user_types
-
-
-def execute():
-	doctype_dict = {
-		"projects": ["Timesheet"],
-		"payroll": [
-			"Salary Slip",
-			"Employee Tax Exemption Declaration",
-			"Employee Tax Exemption Proof Submission",
-			"Employee Benefit Application",
-			"Employee Benefit Claim",
-		],
-		"hr": [
-			"Employee",
-			"Expense Claim",
-			"Leave Application",
-			"Attendance Request",
-			"Compensatory Leave Request",
-			"Holiday List",
-			"Employee Advance",
-			"Training Program",
-			"Training Feedback",
-			"Shift Request",
-			"Employee Grievance",
-			"Employee Referral",
-			"Travel Request",
-		],
-	}
-
-	for module, doctypes in doctype_dict.items():
-		for doctype in doctypes:
-			frappe.reload_doc(module, "doctype", doctype)
-
-	frappe.flags.ignore_select_perm = True
-	frappe.flags.update_select_perm_after_migrate = True
-
-	add_non_standard_user_types()
diff --git a/erpnext/patches/v13_0/move_doctype_reports_and_notification_from_hr_to_payroll.py b/erpnext/patches/v13_0/move_doctype_reports_and_notification_from_hr_to_payroll.py
deleted file mode 100644
index 0290af0..0000000
--- a/erpnext/patches/v13_0/move_doctype_reports_and_notification_from_hr_to_payroll.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (c) 2019, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-
-
-def execute():
-	frappe.db.sql(
-		"""UPDATE `tabPrint Format`
-        SET module = 'Payroll'
-        WHERE name IN ('Salary Slip Based On Timesheet', 'Salary Slip Standard')"""
-	)
-
-	frappe.db.sql("""UPDATE `tabNotification` SET module='Payroll' WHERE name='Retention Bonus';""")
-
-	doctypes_moved = [
-		"Employee Benefit Application Detail",
-		"Employee Tax Exemption Declaration Category",
-		"Salary Component",
-		"Employee Tax Exemption Proof Submission Detail",
-		"Income Tax Slab Other Charges",
-		"Taxable Salary Slab",
-		"Payroll Period Date",
-		"Salary Slip Timesheet",
-		"Payroll Employee Detail",
-		"Salary Detail",
-		"Employee Tax Exemption Sub Category",
-		"Employee Tax Exemption Category",
-		"Employee Benefit Claim",
-		"Employee Benefit Application",
-		"Employee Other Income",
-		"Employee Tax Exemption Proof Submission",
-		"Employee Tax Exemption Declaration",
-		"Employee Incentive",
-		"Retention Bonus",
-		"Additional Salary",
-		"Income Tax Slab",
-		"Payroll Period",
-		"Salary Slip",
-		"Payroll Entry",
-		"Salary Structure Assignment",
-		"Salary Structure",
-	]
-
-	for doctype in doctypes_moved:
-		frappe.delete_doc_if_exists("DocType", doctype)
-
-	reports = ["Salary Register", "Bank Remittance"]
-
-	for report in reports:
-		frappe.delete_doc_if_exists("Report", report)
diff --git a/erpnext/patches/v13_0/move_payroll_setting_separately_from_hr_settings.py b/erpnext/patches/v13_0/move_payroll_setting_separately_from_hr_settings.py
deleted file mode 100644
index 37a3c35..0000000
--- a/erpnext/patches/v13_0/move_payroll_setting_separately_from_hr_settings.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (c) 2019, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-
-
-def execute():
-	data = frappe.db.sql(
-		"""SELECT *
-        FROM `tabSingles`
-        WHERE
-            doctype = "HR Settings"
-        AND
-            field in (
-                "encrypt_salary_slips_in_emails",
-                "email_salary_slip_to_employee",
-                "daily_wages_fraction_for_half_day",
-                "disable_rounded_total",
-                "include_holidays_in_total_working_days",
-                "max_working_hours_against_timesheet",
-                "payroll_based_on",
-                "password_policy"
-            )
-            """,
-		as_dict=1,
-	)
-
-	for d in data:
-		frappe.db.set_value("Payroll Settings", None, d.field, d.value)
diff --git a/erpnext/patches/v13_0/move_tax_slabs_from_payroll_period_to_income_tax_slab.py b/erpnext/patches/v13_0/move_tax_slabs_from_payroll_period_to_income_tax_slab.py
deleted file mode 100644
index f84a739..0000000
--- a/erpnext/patches/v13_0/move_tax_slabs_from_payroll_period_to_income_tax_slab.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# Copyright (c) 2019, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-
-
-def execute():
-	if not (
-		frappe.db.table_exists("Payroll Period") and frappe.db.table_exists("Taxable Salary Slab")
-	):
-		return
-
-	for doctype in (
-		"income_tax_slab",
-		"salary_structure_assignment",
-		"employee_other_income",
-		"income_tax_slab_other_charges",
-	):
-		frappe.reload_doc("Payroll", "doctype", doctype)
-
-	standard_tax_exemption_amount_exists = frappe.db.has_column(
-		"Payroll Period", "standard_tax_exemption_amount"
-	)
-
-	select_fields = "name, start_date, end_date"
-	if standard_tax_exemption_amount_exists:
-		select_fields = "name, start_date, end_date, standard_tax_exemption_amount"
-
-	for company in frappe.get_all("Company"):
-		payroll_periods = frappe.db.sql(
-			"""
-			SELECT
-				{0}
-			FROM
-				`tabPayroll Period`
-			WHERE company=%s
-			ORDER BY start_date DESC
-		""".format(
-				select_fields
-			),
-			company.name,
-			as_dict=1,
-		)
-
-		for i, period in enumerate(payroll_periods):
-			income_tax_slab = frappe.new_doc("Income Tax Slab")
-			income_tax_slab.name = "Tax Slab:" + period.name
-
-			if i == 0:
-				income_tax_slab.disabled = 0
-			else:
-				income_tax_slab.disabled = 1
-
-			income_tax_slab.effective_from = period.start_date
-			income_tax_slab.company = company.name
-			income_tax_slab.allow_tax_exemption = 1
-			if standard_tax_exemption_amount_exists:
-				income_tax_slab.standard_tax_exemption_amount = period.standard_tax_exemption_amount
-
-			income_tax_slab.flags.ignore_mandatory = True
-			income_tax_slab.submit()
-
-			frappe.db.sql(
-				""" UPDATE `tabTaxable Salary Slab`
-				SET parent = %s , parentfield = 'slabs' , parenttype = "Income Tax Slab"
-				WHERE parent = %s
-			""",
-				(income_tax_slab.name, period.name),
-				as_dict=1,
-			)
-
-			if i == 0:
-				frappe.db.sql(
-					"""
-					UPDATE
-						`tabSalary Structure Assignment`
-					set
-						income_tax_slab = %s
-					where
-						company = %s
-						and from_date >= %s
-						and docstatus < 2
-				""",
-					(income_tax_slab.name, company.name, period.start_date),
-				)
-
-	# move other incomes to separate document
-	if not frappe.db.table_exists("Employee Tax Exemption Proof Submission"):
-		return
-
-	migrated = []
-	proofs = frappe.get_all(
-		"Employee Tax Exemption Proof Submission",
-		filters={"docstatus": 1},
-		fields=["payroll_period", "employee", "company", "income_from_other_sources"],
-	)
-	for proof in proofs:
-		if proof.income_from_other_sources:
-			employee_other_income = frappe.new_doc("Employee Other Income")
-			employee_other_income.employee = proof.employee
-			employee_other_income.payroll_period = proof.payroll_period
-			employee_other_income.company = proof.company
-			employee_other_income.amount = proof.income_from_other_sources
-
-			try:
-				employee_other_income.submit()
-				migrated.append([proof.employee, proof.payroll_period])
-			except Exception:
-				pass
-
-	if not frappe.db.table_exists("Employee Tax Exemption Declaration"):
-		return
-
-	declerations = frappe.get_all(
-		"Employee Tax Exemption Declaration",
-		filters={"docstatus": 1},
-		fields=["payroll_period", "employee", "company", "income_from_other_sources"],
-	)
-
-	for declaration in declerations:
-		if (
-			declaration.income_from_other_sources
-			and [declaration.employee, declaration.payroll_period] not in migrated
-		):
-			employee_other_income = frappe.new_doc("Employee Other Income")
-			employee_other_income.employee = declaration.employee
-			employee_other_income.payroll_period = declaration.payroll_period
-			employee_other_income.company = declaration.company
-			employee_other_income.amount = declaration.income_from_other_sources
-
-			try:
-				employee_other_income.submit()
-			except Exception:
-				pass
diff --git a/erpnext/patches/v13_0/rename_stop_to_send_birthday_reminders.py b/erpnext/patches/v13_0/rename_stop_to_send_birthday_reminders.py
deleted file mode 100644
index 434dbb4..0000000
--- a/erpnext/patches/v13_0/rename_stop_to_send_birthday_reminders.py
+++ /dev/null
@@ -1,21 +0,0 @@
-import frappe
-from frappe.model.utils.rename_field import rename_field
-
-
-def execute():
-	frappe.reload_doc("hr", "doctype", "hr_settings")
-
-	try:
-		# Rename the field
-		rename_field("HR Settings", "stop_birthday_reminders", "send_birthday_reminders")
-
-		# Reverse the value
-		old_value = frappe.db.get_single_value("HR Settings", "send_birthday_reminders")
-
-		frappe.db.set_value(
-			"HR Settings", "HR Settings", "send_birthday_reminders", 1 if old_value == 0 else 0
-		)
-
-	except Exception as e:
-		if e.args[0] != 1054:
-			raise
diff --git a/erpnext/patches/v13_0/set_company_in_leave_ledger_entry.py b/erpnext/patches/v13_0/set_company_in_leave_ledger_entry.py
deleted file mode 100644
index adc8784..0000000
--- a/erpnext/patches/v13_0/set_company_in_leave_ledger_entry.py
+++ /dev/null
@@ -1,12 +0,0 @@
-import frappe
-
-
-def execute():
-	frappe.reload_doc("HR", "doctype", "Leave Allocation")
-	frappe.reload_doc("HR", "doctype", "Leave Ledger Entry")
-	frappe.db.sql(
-		"""update `tabLeave Ledger Entry` as lle set company = (select company from `tabEmployee` where employee = lle.employee)"""
-	)
-	frappe.db.sql(
-		"""update `tabLeave Allocation` as la set company = (select company from `tabEmployee` where employee = la.employee)"""
-	)
diff --git a/erpnext/patches/v13_0/set_payroll_entry_status.py b/erpnext/patches/v13_0/set_payroll_entry_status.py
deleted file mode 100644
index 97adff9..0000000
--- a/erpnext/patches/v13_0/set_payroll_entry_status.py
+++ /dev/null
@@ -1,16 +0,0 @@
-import frappe
-from frappe.query_builder import Case
-
-
-def execute():
-	PayrollEntry = frappe.qb.DocType("Payroll Entry")
-
-	(
-		frappe.qb.update(PayrollEntry).set(
-			"status",
-			Case()
-			.when(PayrollEntry.docstatus == 0, "Draft")
-			.when(PayrollEntry.docstatus == 1, "Submitted")
-			.else_("Cancelled"),
-		)
-	).run()
diff --git a/erpnext/patches/v13_0/set_training_event_attendance.py b/erpnext/patches/v13_0/set_training_event_attendance.py
deleted file mode 100644
index 7b55758..0000000
--- a/erpnext/patches/v13_0/set_training_event_attendance.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import frappe
-
-
-def execute():
-	frappe.reload_doc("hr", "doctype", "training_event")
-	frappe.reload_doc("hr", "doctype", "training_event_employee")
-
-	frappe.db.sql("update `tabTraining Event Employee` set `attendance` = 'Present'")
-	frappe.db.sql(
-		"update `tabTraining Event Employee` set `is_mandatory` = 1 where `attendance` = 'Mandatory'"
-	)
diff --git a/erpnext/patches/v13_0/update_employee_advance_status.py b/erpnext/patches/v13_0/update_employee_advance_status.py
deleted file mode 100644
index fc9e05e..0000000
--- a/erpnext/patches/v13_0/update_employee_advance_status.py
+++ /dev/null
@@ -1,29 +0,0 @@
-import frappe
-
-
-def execute():
-	frappe.reload_doc("hr", "doctype", "employee_advance")
-
-	advance = frappe.qb.DocType("Employee Advance")
-	(
-		frappe.qb.update(advance)
-		.set(advance.status, "Returned")
-		.where(
-			(advance.docstatus == 1)
-			& ((advance.return_amount) & (advance.paid_amount == advance.return_amount))
-			& (advance.status == "Paid")
-		)
-	).run()
-
-	(
-		frappe.qb.update(advance)
-		.set(advance.status, "Partly Claimed and Returned")
-		.where(
-			(advance.docstatus == 1)
-			& (
-				(advance.claimed_amount & advance.return_amount)
-				& (advance.paid_amount == (advance.return_amount + advance.claimed_amount))
-			)
-			& (advance.status == "Paid")
-		)
-	).run()
diff --git a/erpnext/patches/v13_0/update_expense_claim_status_for_paid_advances.py b/erpnext/patches/v13_0/update_expense_claim_status_for_paid_advances.py
deleted file mode 100644
index 2bc17ae..0000000
--- a/erpnext/patches/v13_0/update_expense_claim_status_for_paid_advances.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import frappe
-
-
-def execute():
-	"""
-	Update Expense Claim status to Paid if:
-	        - the entire required amount is already covered via linked advances
-	        - the claim is partially paid via advances and the rest is reimbursed
-	"""
-
-	ExpenseClaim = frappe.qb.DocType("Expense Claim")
-
-	(
-		frappe.qb.update(ExpenseClaim)
-		.set(ExpenseClaim.status, "Paid")
-		.where(
-			(
-				(ExpenseClaim.grand_total == 0)
-				| (ExpenseClaim.grand_total == ExpenseClaim.total_amount_reimbursed)
-			)
-			& (ExpenseClaim.approval_status == "Approved")
-			& (ExpenseClaim.docstatus == 1)
-			& (ExpenseClaim.total_sanctioned_amount > 0)
-		)
-	).run()
diff --git a/erpnext/patches/v13_0/update_reason_for_resignation_in_employee.py b/erpnext/patches/v13_0/update_reason_for_resignation_in_employee.py
index 31aa292..6ee7090 100644
--- a/erpnext/patches/v13_0/update_reason_for_resignation_in_employee.py
+++ b/erpnext/patches/v13_0/update_reason_for_resignation_in_employee.py
@@ -6,7 +6,7 @@
 
 
 def execute():
-	frappe.reload_doc("hr", "doctype", "employee")
+	frappe.reload_doc("setup", "doctype", "employee")
 
 	if frappe.db.has_column("Employee", "reason_for_resignation"):
 		frappe.db.sql(
diff --git a/erpnext/patches/v13_0/update_start_end_date_for_old_shift_assignment.py b/erpnext/patches/v13_0/update_start_end_date_for_old_shift_assignment.py
deleted file mode 100644
index 6d26ac5..0000000
--- a/erpnext/patches/v13_0/update_start_end_date_for_old_shift_assignment.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (c) 2019, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-
-
-def execute():
-	frappe.reload_doc("hr", "doctype", "shift_assignment")
-	if frappe.db.has_column("Shift Assignment", "date"):
-		frappe.db.sql(
-			"""update `tabShift Assignment`
-            set end_date=date, start_date=date
-            where date IS NOT NULL and start_date IS NULL and end_date IS NULL;"""
-		)
diff --git a/erpnext/patches/v13_0/updates_for_multi_currency_payroll.py b/erpnext/patches/v13_0/updates_for_multi_currency_payroll.py
deleted file mode 100644
index b395c01c..0000000
--- a/erpnext/patches/v13_0/updates_for_multi_currency_payroll.py
+++ /dev/null
@@ -1,133 +0,0 @@
-# Copyright (c) 2019, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-import frappe
-from frappe import _
-from frappe.model.utils.rename_field import rename_field
-
-
-def execute():
-
-	frappe.reload_doc("Accounts", "doctype", "Salary Component Account")
-	if frappe.db.has_column("Salary Component Account", "default_account"):
-		rename_field("Salary Component Account", "default_account", "account")
-
-	doctype_list = [
-		{"module": "HR", "doctype": "Employee Advance"},
-		{"module": "HR", "doctype": "Leave Encashment"},
-		{"module": "Payroll", "doctype": "Additional Salary"},
-		{"module": "Payroll", "doctype": "Employee Benefit Application"},
-		{"module": "Payroll", "doctype": "Employee Benefit Claim"},
-		{"module": "Payroll", "doctype": "Employee Incentive"},
-		{"module": "Payroll", "doctype": "Employee Tax Exemption Declaration"},
-		{"module": "Payroll", "doctype": "Employee Tax Exemption Proof Submission"},
-		{"module": "Payroll", "doctype": "Income Tax Slab"},
-		{"module": "Payroll", "doctype": "Payroll Entry"},
-		{"module": "Payroll", "doctype": "Retention Bonus"},
-		{"module": "Payroll", "doctype": "Salary Structure"},
-		{"module": "Payroll", "doctype": "Salary Structure Assignment"},
-		{"module": "Payroll", "doctype": "Salary Slip"},
-	]
-
-	for item in doctype_list:
-		frappe.reload_doc(item["module"], "doctype", item["doctype"])
-
-	# update company in employee advance based on employee company
-	for dt in [
-		"Employee Incentive",
-		"Leave Encashment",
-		"Employee Benefit Application",
-		"Employee Benefit Claim",
-	]:
-		frappe.db.sql(
-			"""
-			update `tab{doctype}`
-			set company = (select company from tabEmployee where name=`tab{doctype}`.employee)
-		""".format(
-				doctype=dt
-			)
-		)
-
-	# update exchange rate for employee advance
-	frappe.db.sql("update `tabEmployee Advance` set exchange_rate=1")
-
-	# get all companies and it's currency
-	all_companies = frappe.db.get_all(
-		"Company", fields=["name", "default_currency", "default_payroll_payable_account"]
-	)
-	for d in all_companies:
-		company = d.name
-		company_currency = d.default_currency
-		default_payroll_payable_account = d.default_payroll_payable_account
-
-		if not default_payroll_payable_account:
-			default_payroll_payable_account = frappe.db.get_value(
-				"Account",
-				{
-					"account_name": _("Payroll Payable"),
-					"company": company,
-					"account_currency": company_currency,
-					"is_group": 0,
-				},
-			)
-
-		# update currency in following doctypes based on company currency
-		doctypes_for_currency = [
-			"Employee Advance",
-			"Leave Encashment",
-			"Employee Benefit Application",
-			"Employee Benefit Claim",
-			"Employee Incentive",
-			"Additional Salary",
-			"Employee Tax Exemption Declaration",
-			"Employee Tax Exemption Proof Submission",
-			"Income Tax Slab",
-			"Retention Bonus",
-			"Salary Structure",
-		]
-
-		for dt in doctypes_for_currency:
-			frappe.db.sql(
-				"""update `tab{doctype}` set currency = %s where company=%s""".format(doctype=dt),
-				(company_currency, company),
-			)
-
-		# update fields in payroll entry
-		frappe.db.sql(
-			"""
-			update `tabPayroll Entry`
-			set currency = %s,
-				exchange_rate = 1,
-				payroll_payable_account=%s
-			where company=%s
-		""",
-			(company_currency, default_payroll_payable_account, company),
-		)
-
-		# update fields in Salary Structure Assignment
-		frappe.db.sql(
-			"""
-			update `tabSalary Structure Assignment`
-			set currency = %s,
-				payroll_payable_account=%s
-			where company=%s
-		""",
-			(company_currency, default_payroll_payable_account, company),
-		)
-
-		# update fields in Salary Slip
-		frappe.db.sql(
-			"""
-			update `tabSalary Slip`
-			set currency = %s,
-				exchange_rate = 1,
-				base_hour_rate = hour_rate,
-				base_gross_pay = gross_pay,
-				base_total_deduction = total_deduction,
-				base_net_pay = net_pay,
-				base_rounded_total = rounded_total,
-				base_total_in_words = total_in_words
-			where company=%s
-		""",
-			(company_currency, company),
-		)
diff --git a/erpnext/patches/v14_0/add_default_exit_questionnaire_notification_template.py b/erpnext/patches/v14_0/add_default_exit_questionnaire_notification_template.py
deleted file mode 100644
index 001c8ef..0000000
--- a/erpnext/patches/v14_0/add_default_exit_questionnaire_notification_template.py
+++ /dev/null
@@ -1,29 +0,0 @@
-import os
-
-import frappe
-from frappe import _
-
-
-def execute():
-	template = frappe.db.exists("Email Template", _("Exit Questionnaire Notification"))
-	if not template:
-		base_path = frappe.get_app_path("erpnext", "hr", "doctype")
-		response = frappe.read_file(
-			os.path.join(base_path, "exit_interview/exit_questionnaire_notification_template.html")
-		)
-
-		template = frappe.get_doc(
-			{
-				"doctype": "Email Template",
-				"name": _("Exit Questionnaire Notification"),
-				"response": response,
-				"subject": _("Exit Questionnaire Notification"),
-				"owner": frappe.session.user,
-			}
-		).insert(ignore_permissions=True)
-		template = template.name
-
-	hr_settings = frappe.get_doc("HR Settings")
-	hr_settings.exit_questionnaire_notification_template = template
-	hr_settings.flags.ignore_links = True
-	hr_settings.save()
diff --git a/erpnext/patches/v14_0/delete_employee_transfer_property_doctype.py b/erpnext/patches/v14_0/delete_employee_transfer_property_doctype.py
deleted file mode 100644
index b50e010..0000000
--- a/erpnext/patches/v14_0/delete_employee_transfer_property_doctype.py
+++ /dev/null
@@ -1,5 +0,0 @@
-import frappe
-
-
-def execute():
-	frappe.delete_doc("DocType", "Employee Transfer Property", ignore_missing=True)
diff --git a/erpnext/patches/v14_0/set_payroll_cost_centers.py b/erpnext/patches/v14_0/set_payroll_cost_centers.py
deleted file mode 100644
index 0951e39..0000000
--- a/erpnext/patches/v14_0/set_payroll_cost_centers.py
+++ /dev/null
@@ -1,29 +0,0 @@
-import frappe
-
-
-def execute():
-	frappe.reload_doc("payroll", "doctype", "employee_cost_center")
-	frappe.reload_doc("payroll", "doctype", "salary_structure_assignment")
-
-	employees = frappe.get_all("Employee", fields=["department", "payroll_cost_center", "name"])
-
-	employee_cost_center = {}
-	for d in employees:
-		cost_center = d.payroll_cost_center
-		if not cost_center and d.department:
-			cost_center = frappe.get_cached_value("Department", d.department, "payroll_cost_center")
-
-		if cost_center:
-			employee_cost_center.setdefault(d.name, cost_center)
-
-	salary_structure_assignments = frappe.get_all(
-		"Salary Structure Assignment", filters={"docstatus": ["!=", 2]}, fields=["name", "employee"]
-	)
-
-	for d in salary_structure_assignments:
-		cost_center = employee_cost_center.get(d.employee)
-		if cost_center:
-			assignment = frappe.get_doc("Salary Structure Assignment", d.name)
-			if not assignment.get("payroll_cost_centers"):
-				assignment.append("payroll_cost_centers", {"cost_center": cost_center, "percentage": 100})
-				assignment.save()
diff --git a/erpnext/patches/v14_0/update_leave_notification_template.py b/erpnext/patches/v14_0/update_leave_notification_template.py
deleted file mode 100644
index aec5f8b..0000000
--- a/erpnext/patches/v14_0/update_leave_notification_template.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import os
-
-import frappe
-from frappe import _
-
-
-def execute():
-	base_path = frappe.get_app_path("erpnext", "hr", "doctype")
-	response = frappe.read_file(
-		os.path.join(base_path, "leave_application/leave_application_email_template.html")
-	)
-
-	template = frappe.db.exists("Email Template", _("Leave Approval Notification"))
-	if template:
-		frappe.db.set_value("Email Template", template, "response", response)
-
-	template = frappe.db.exists("Email Template", _("Leave Status Notification"))
-	if template:
-		frappe.db.set_value("Email Template", template, "response", response)
diff --git a/erpnext/patches/v8_7/sync_india_custom_fields.py b/erpnext/patches/v8_7/sync_india_custom_fields.py
index e1b9a73..02a954a 100644
--- a/erpnext/patches/v8_7/sync_india_custom_fields.py
+++ b/erpnext/patches/v8_7/sync_india_custom_fields.py
@@ -8,12 +8,6 @@
 	if not company:
 		return
 
-	frappe.reload_doc("Payroll", "doctype", "payroll_period")
-	frappe.reload_doc("Payroll", "doctype", "employee_tax_exemption_declaration")
-	frappe.reload_doc("Payroll", "doctype", "employee_tax_exemption_proof_submission")
-	frappe.reload_doc("Payroll", "doctype", "employee_tax_exemption_declaration_category")
-	frappe.reload_doc("Payroll", "doctype", "employee_tax_exemption_proof_submission_detail")
-
 	frappe.reload_doc("accounts", "doctype", "tax_category")
 
 	for doctype in ["Sales Invoice", "Delivery Note", "Purchase Invoice"]:
