diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 933c70d..4ec5c95 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -669,7 +669,7 @@
 	if party_type not in ("Customer", "Supplier"):
 		return
 	template = None
-	print(party_type, party_name)
+
 	if party_type == "Customer":
 		customer = frappe.get_cached_value(
 			"Customer", party_name, fieldname=["payment_terms", "customer_group"], as_dict=1
diff --git a/erpnext/setup/demo.py b/erpnext/setup/demo.py
index 1256b0e..41faff2 100644
--- a/erpnext/setup/demo.py
+++ b/erpnext/setup/demo.py
@@ -18,12 +18,14 @@
 
 @frappe.whitelist()
 def clear_demo_data():
-	company = frappe.db.get_single_value("Global Defaults", "demo_company")
+	company = erpnext.get_default_company()
 	create_transaction_deletion_record(company)
+	clear_masters()
+	delete_company(company)
 
 
 def create_demo_company():
-	company = frappe.db.get_value("Company", {"docstatus": 0})
+	company = erpnext.get_default_company()
 	company_doc = frappe.get_doc("Company", company)
 
 	# Make a dummy company
@@ -37,19 +39,19 @@
 	new_company.chart_of_accounts = company_doc.chart_of_accounts
 	new_company.insert()
 
-	frappe.db.set_single_value("Global Defaults", "demo_company", new_company.name)
+	frappe.db.set_single_value("Global Defaults", "original_default_company", company)
+
+	# Set Demo Company as default to
+	frappe.db.set_single_value("Global Defaults", "default_company", new_company.name)
 	return new_company.name
 
 
 def process_masters():
-	demo_doctypes = frappe.get_hooks("demo_master_doctypes") or []
-	path = os.path.join(os.path.dirname(__file__), "demo_data")
-	for doctype in demo_doctypes:
-		with open(os.path.join(path, doctype + ".json"), "r") as f:
-			data = f.read()
-			if data:
-				for item in json.loads(data):
-					create_demo_record(item)
+	for doctype in frappe.get_hooks("demo_master_doctypes"):
+		data = read_data_file_using_hooks(doctype)
+		if data:
+			for item in json.loads(data):
+				create_demo_record(item)
 
 
 def create_demo_record(doctype):
@@ -57,14 +59,11 @@
 
 
 def make_transactions(company):
-	transaction_doctypes = frappe.get_hooks("demo_transaction_doctypes") or []
-	path = os.path.join(os.path.dirname(__file__), "demo_data")
-	for transaction in transaction_doctypes:
-		with open(os.path.join(path, transaction + ".json"), "r") as f:
-			data = f.read()
-			if data:
-				for item in json.loads(data):
-					create_transaction(item, company)
+	for doctype in frappe.get_hooks("demo_transaction_doctypes"):
+		data = read_data_file_using_hooks(doctype)
+		if data:
+			for item in json.loads(data):
+				create_transaction(item, company)
 
 
 def create_transaction(doctype, company):
@@ -93,3 +92,32 @@
 	transaction_deletion_record.company = company
 	transaction_deletion_record.save(ignore_permissions=True)
 	transaction_deletion_record.submit()
+
+
+def clear_masters():
+	for doctype in frappe.get_hooks("demo_master_doctypes")[::-1]:
+		data = read_data_file_using_hooks(doctype)
+		if data:
+			for item in json.loads(data):
+				clear_demo_record(item)
+
+
+def clear_demo_record(doctype):
+	doc_type = doctype.get("doctype")
+	del doctype["doctype"]
+	doc = frappe.get_doc(doc_type, doctype)
+	frappe.delete_doc(doc.doctype, doc.name, ignore_permissions=True)
+
+
+def delete_company(company):
+	original_company = frappe.db.get_single_value("Global Defaults", "original_default_company")
+	frappe.db.set_single_value("Global Defaults", "default_company", original_company)
+	frappe.delete_doc("Company", company, ignore_permissions=True)
+
+
+def read_data_file_using_hooks(doctype):
+	path = os.path.join(os.path.dirname(__file__), "demo_data")
+	with open(os.path.join(path, doctype + ".json"), "r") as f:
+		data = f.read()
+
+	return data
diff --git a/erpnext/setup/demo_data/customer.json b/erpnext/setup/demo_data/customer.json
index 08e0e13..ed95292 100644
--- a/erpnext/setup/demo_data/customer.json
+++ b/erpnext/setup/demo_data/customer.json
@@ -2,16 +2,19 @@
     {
         "doctype": "Customer",
         "customer_group": "Demo Customer Group",
+        "territory": "All Territories",
         "customer_name": "ABC Enterprises"
     },
     {
         "doctype": "Customer",
         "customer_group": "Demo Customer Group",
+        "territory": "All Territories",
         "customer_name": "XYZ Corporation"
     },
     {
         "doctype": "Customer",
         "customer_group": "Demo Customer Group",
+        "territory": "All Territories",
         "customer_name": "KJPR Pvt Ltd"
     }
 ]
\ No newline at end of file
diff --git a/erpnext/setup/demo_data/item.json b/erpnext/setup/demo_data/item.json
index 3782223..a241337 100644
--- a/erpnext/setup/demo_data/item.json
+++ b/erpnext/setup/demo_data/item.json
@@ -36,6 +36,7 @@
     },
     {
         "doctype": "Item",
+        "item_group": "Demo Item Group",
         "item_code": "SKU006",
         "item_name": "Coffee Mug",
         "image": "https://media.istockphoto.com/id/821282266/photo/white-mug-isolated.jpg?s=612x612&w=0&k=20&c=LJCMPk0D83OKmJHahkiLzAB3OsKr83nMbL7KxSgfpfM="
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.json b/erpnext/setup/doctype/global_defaults/global_defaults.json
index 0f57476..6d912ce 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.json
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.json
@@ -14,7 +14,7 @@
   "hide_currency_symbol",
   "disable_rounded_total",
   "disable_in_words",
-  "demo_company"
+  "original_default_company"
  ],
  "fields": [
   {
@@ -82,10 +82,10 @@
    "label": "Disable In Words"
   },
   {
-   "fieldname": "demo_company",
+   "fieldname": "original_default_company",
    "fieldtype": "Link",
    "hidden": 1,
-   "label": "Demo Company",
+   "label": "Original Default Company",
    "options": "Company",
    "read_only": 1
   }
@@ -95,7 +95,7 @@
  "in_create": 1,
  "issingle": 1,
  "links": [],
- "modified": "2023-06-16 13:03:45.016191",
+ "modified": "2023-06-17 13:07:40.074663",
  "modified_by": "Administrator",
  "module": "Setup",
  "name": "Global Defaults",
