diff --git a/erpnext/setup/demo.py b/erpnext/setup/demo.py
index 41faff2..6947f45 100644
--- a/erpnext/setup/demo.py
+++ b/erpnext/setup/demo.py
@@ -3,8 +3,10 @@
 
 import json
 import os
+from random import randint
 
 import frappe
+from frappe.utils import add_days
 
 import erpnext
 
@@ -18,7 +20,7 @@
 
 @frappe.whitelist()
 def clear_demo_data():
-	company = erpnext.get_default_company()
+	company = frappe.db.get_single_value("Global Defaults", "demo_company")
 	create_transaction_deletion_record(company)
 	clear_masters()
 	delete_company(company)
@@ -39,10 +41,10 @@
 	new_company.chart_of_accounts = company_doc.chart_of_accounts
 	new_company.insert()
 
-	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)
+	frappe.db.set_single_value("Global Defaults", "demo_company", new_company.name)
+	frappe.db.set_default("company", new_company.name)
+
 	return new_company.name
 
 
@@ -59,15 +61,24 @@
 
 
 def make_transactions(company):
+	fiscal_year = frappe.db.get_single_value("Global Defaults", "current_fiscal_year")
+	start_date = frappe.db.get_value("Fiscal Year", fiscal_year, "year_start_date")
+
 	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)
+				create_transaction(item, company, start_date)
 
 
-def create_transaction(doctype, company):
-	doctype.update({"company": company})
+def create_transaction(doctype, company, start_date):
+	doctype.update(
+		{
+			"company": company,
+			"set_posting_time": 1,
+			"posting_date": get_random_date(start_date),
+		}
+	)
 
 	income_account, expense_account = frappe.db.get_value(
 		"Company", company, ["default_income_account", "default_expense_account"]
@@ -87,6 +98,10 @@
 	doc.submit()
 
 
+def get_random_date(start_date):
+	return add_days(start_date, randint(1, 365))
+
+
 def create_transaction_deletion_record(company):
 	transaction_deletion_record = frappe.new_doc("Transaction Deletion Record")
 	transaction_deletion_record.company = company
@@ -110,8 +125,6 @@
 
 
 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)
 
 
