diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index 0a88893..2c15144 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -118,27 +118,7 @@
 			for d in frappe.db.get_values('Account', filters=filters, fieldname=["company", "name"], as_dict=True):
 				parent_acc_name_map[d["company"]] = d["name"]
 
-			if not parent_acc_name_map:
-				# map can be empty if only one descendant or all descendants without parent account exist(s)
-				# or if no descendants exist
-				if descendants:
-					frappe.throw(_("Parent Account {0} does not exist in any Child Company").format(frappe.bold(parent_acc_name)),
-						title=_("Account Missing"))
-				else:
-					# no descendants and empty map, nothing to sync
-					return
-
-			companies_missing_account = []
-			for company in descendants:
-				if not company in parent_acc_name_map:
-					companies_missing_account.append(company)
-
-			# If atleast any one of the descendants does not have the parent account, block transaction
-			if companies_missing_account:
-				message = _("Parent Account {0} does not exist in the following companies:").format(frappe.bold(parent_acc_name))
-				message += "<br><br><ul><li>" + "</li><li>".join(companies_missing_account) + "</li></ul>"
-				message += _("Please make sure the account exists in the child companies as well")
-				frappe.throw(message, title=_("Account Missing"))
+			if not parent_acc_name_map: return
 
 			self.create_account_for_child_company(parent_acc_name_map, descendants, parent_acc_name)
 
@@ -318,6 +298,23 @@
 	old_acc_name, old_acc_number = frappe.db.get_value('Account', name, \
 				["account_name", "account_number"])
 
+	# check if account exists in parent company
+	ancestors = get_ancestors_of("Company", account.company)
+	allow_independent_account_creation = frappe.get_value("Company", account.company, "allow_account_creation_against_child_company")
+
+	if ancestors and not allow_independent_account_creation:
+		for ancestor in ancestors:
+			if frappe.db.get_value("Account", {'account_name': old_acc_name, 'company': ancestor}, 'name'):
+				# same account in parent company exists
+				allow_child_account_creation = _("Allow Account Creation Against Child Company")
+
+				message = _("Account {0} exists in parent company {1}.").format(frappe.bold(old_acc_name), frappe.bold(ancestor))
+				message += "<br>" + _("Renaming it is only allowed via parent company {0}, \
+					to avoid mismatch.").format(frappe.bold(ancestor)) + "<br><br>"
+				message += _("To overrule this, enable '{0}' in company {1}").format(allow_child_account_creation, frappe.bold(account.company))
+
+				frappe.throw(message, title=_("Rename Not Allowed"))
+
 	validate_account_number(name, account_number, account.company)
 	if account_number:
 		frappe.db.set_value("Account", name, "account_number", account_number.strip())
diff --git a/erpnext/accounts/doctype/account/test_account.py b/erpnext/accounts/doctype/account/test_account.py
index 6819081..b6a950b 100644
--- a/erpnext/accounts/doctype/account/test_account.py
+++ b/erpnext/accounts/doctype/account/test_account.py
@@ -123,7 +123,7 @@
 		# Rename account in parent company
 		update_account_number(acc.name, "Test Rename Sync Account", "1234")
 
-		# Check if renmamed in children
+		# Check if renamed in children
 		self.assertTrue(frappe.db.exists("Account", {'account_name': "Test Rename Sync Account", "company": "_Test Company 4", "account_number": "1234"}))
 		self.assertTrue(frappe.db.exists("Account", {'account_name': "Test Rename Sync Account", "company": "_Test Company 5", "account_number": "1234"}))
 
@@ -131,7 +131,7 @@
 		frappe.delete_doc("Account", "1234 - Test Rename Sync Account - _TC4")
 		frappe.delete_doc("Account", "1234 - Test Rename Sync Account - _TC5")
 
-	def test_account_sync_with_missing_parent_account_in_child_company(self):
+	def test_child_company_account_rename_sync(self):
 		frappe.local.flags.pop("ignore_root_company_validation", None)
 
 		acc = frappe.new_doc("Account")
@@ -144,20 +144,19 @@
 		self.assertTrue(frappe.db.exists("Account", {'account_name': "Test Group Account", "company": "_Test Company 4"}))
 		self.assertTrue(frappe.db.exists("Account", {'account_name': "Test Group Account", "company": "_Test Company 5"}))
 
+		# Try renaming child company account
 		acc_tc_5 = frappe.db.get_value('Account', {'account_name': "Test Group Account", "company": "_Test Company 5"})
-		# Rename group account in one child company
+		self.assertRaises(frappe.ValidationError, update_account_number, acc_tc_5, "Test Modified Account")
+
+		# Rename child company account with allow_account_creation_against_child_company enabled
+		frappe.db.set_value("Company", "_Test Company 5", "allow_account_creation_against_child_company", 1)
+
 		update_account_number(acc_tc_5, "Test Modified Account")
+		self.assertTrue(frappe.db.exists("Account", {'name': "Test Modified Account - _TC5", "company": "_Test Company 5"}))
 
-		# Add child account to test group account in parent company
-		# which will try to do the same in child company
-		acc = frappe.new_doc("Account")
-		acc.account_name = "Test Child Account"
-		acc.parent_account = "Test Group Account - _TC3"
-		acc.company = "_Test Company 3"
+		frappe.db.set_value("Company", "_Test Company 5", "allow_account_creation_against_child_company", 0)
 
-		self.assertRaises(frappe.ValidationError, acc.insert)
-
-		to_delete = ["Test Group Account - _TC3", "Test Group Account - _TC5", "Test Modified Account - _TC5"]
+		to_delete = ["Test Group Account - _TC3", "Test Group Account - _TC4", "Test Modified Account - _TC5"]
 		for doc in to_delete:
 			frappe.delete_doc("Account", doc)
 
