diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
index 00a9d72..4f4876a 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.js
@@ -21,4 +21,16 @@
 			}
 		});
 	},
+
+	disabled: function(frm) {
+		frappe.call({
+			method: "erpnext.accounts.doctype.accounting_dimension.accounting_dimension.disable_dimension",
+			args: {
+				doc: frm.doc
+			},
+			callback: function() {
+				frappe.msgprint(_("{0} dimension disabled", [frm.doc.label]));
+			}
+		});
+	}
 });
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json
index 9405e73..1e2bb92 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.json
@@ -9,7 +9,8 @@
   "document_type",
   "label",
   "fieldname",
-  "is_mandatory",
+  "mandatory_for_bs",
+  "mandatory_for_pl",
   "disabled"
  ],
  "fields": [
@@ -35,18 +36,24 @@
   },
   {
    "default": "0",
-   "fieldname": "is_mandatory",
-   "fieldtype": "Check",
-   "label": "Is Mandatory"
-  },
-  {
-   "default": "0",
    "fieldname": "disabled",
    "fieldtype": "Check",
    "label": "Disable"
+  },
+  {
+   "default": "0",
+   "fieldname": "mandatory_for_bs",
+   "fieldtype": "Check",
+   "label": "Mandatory For Balance Sheet"
+  },
+  {
+   "default": "0",
+   "fieldname": "mandatory_for_pl",
+   "fieldtype": "Check",
+   "label": "Mandatory For Profit and Loss Account"
   }
  ],
- "modified": "2019-05-25 19:18:11.718209",
+ "modified": "2019-05-27 18:18:17.792726",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Accounting Dimension",
diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
index d51bd7f..47bdc94 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
@@ -12,9 +12,6 @@
 from frappe.utils.background_jobs import enqueue
 
 class AccountingDimension(Document):
-	def on_update(self):
-		frappe.enqueue(disable_dimension, doc=self)
-
 	def before_insert(self):
 		self.set_fieldname_and_label()
 		frappe.enqueue(make_dimension_in_accounting_doctypes, doc=self)
@@ -33,11 +30,6 @@
 	doclist = get_doclist()
 	doc_count = len(get_accounting_dimensions())
 
-	if doc.is_mandatory:
-		df.update({
-			"reqd": 1
-		})
-
 	for doctype in doclist:
 
 		if (doc_count + 1) % 2 == 0:
@@ -81,7 +73,19 @@
 				}).insert(ignore_permissions=True)
 			frappe.clear_cache(doctype=doctype)
 		else:
-			create_custom_field(doctype, df)
+			if frappe.db.has_column(doctype, doc.fieldname) and (doc.mandatory_for_pl or doc.mandatory_for_bs):
+				frappe.get_doc({
+					"doctype": "Property Setter",
+					"doctype_or_field": "DocField",
+					"doc_type": doctype,
+					"field_name": doc.fieldname,
+					"property": "hidden",
+					"property_type": "Check",
+					"value": 0
+				}).insert(ignore_permissions=True)
+			else:
+				create_custom_field(doctype, df)
+
 			frappe.clear_cache(doctype=doctype)
 
 def delete_accounting_dimension(doc):
@@ -109,8 +113,14 @@
 	for doctype in doclist:
 		frappe.clear_cache(doctype=doctype)
 
+@frappe.whitelist()
 def disable_dimension(doc):
-	if doc.disabled:
+	frappe.enqueue(start_dimension_disabling, doc=doc)
+
+def start_dimension_disabling(doc):
+	doc = json.loads(doc)
+
+	if doc.get('disabled'):
 		df = {"read_only": 1}
 	else:
 		df = {"read_only": 0}
@@ -118,7 +128,7 @@
 	doclist = get_doclist()
 
 	for doctype in doclist:
-		field = frappe.db.get_value("Custom Field", {"dt": doctype, "fieldname": doc.fieldname})
+		field = frappe.db.get_value("Custom Field", {"dt": doctype, "fieldname": doc.get('fieldname')})
 		if field:
 			custom_field = frappe.get_doc("Custom Field", field)
 			custom_field.update(df)
@@ -136,7 +146,10 @@
 
 	return doclist
 
-def get_accounting_dimensions():
-	accounting_dimensions = frappe.get_all("Accounting Dimension", fields=["fieldname"])
+def get_accounting_dimensions(as_list=True):
+	accounting_dimensions = frappe.get_all("Accounting Dimension", fields=["label", "fieldname", "mandatory_for_pl", "mandatory_for_bs", "disabled"])
 
-	return [d.fieldname for d in accounting_dimensions]
+	if as_list:
+		return [d.fieldname for d in accounting_dimensions]
+	else:
+		return accounting_dimensions
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index 3ced9a3..cd4f794 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -12,6 +12,7 @@
 from erpnext.accounts.utils import get_account_currency
 from erpnext.accounts.utils import get_fiscal_year
 from erpnext.exceptions import InvalidAccountCurrency
+from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_accounting_dimensions
 
 exclude_from_linked_with = True
 class GLEntry(Document):
@@ -28,6 +29,7 @@
 		self.validate_and_set_fiscal_year()
 		self.pl_must_have_cost_center()
 		self.validate_cost_center()
+		self.validate_dimensions_for_pl_and_bs()
 
 		if not self.flags.from_repost:
 			self.check_pl_account()
@@ -80,6 +82,23 @@
 			if self.project:
 				self.project = None
 
+	def validate_dimensions_for_pl_and_bs(self):
+
+		for dimension in get_accounting_dimensions(as_list=False):
+
+			if frappe.db.get_value("Account", self.account, "report_type") == "Profit and Loss" \
+				and dimension.mandatory_for_pl and not dimension.disabled:
+				if not self.get(dimension.fieldname):
+					frappe.throw(_("{0} is required for 'Profit and Loss' account {1}.")
+						.format(dimension.label, self.account))
+
+			if frappe.db.get_value("Account", self.account, "report_type") == "Balance Sheet" \
+				and dimension.mandatory_for_bs and not dimension.disabled:
+				if not self.get(dimension.fieldname):
+					frappe.throw(_("{0} is required for 'Balance Sheet' account {1}.")
+						.format(dimension.label, self.account))
+
+
 	def check_pl_account(self):
 		if self.is_opening=='Yes' and \
 				frappe.db.get_value("Account", self.account, "report_type")=="Profit and Loss" and \
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js
index d999a1b..4235b7f 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.js
+++ b/erpnext/accounts/report/general_ledger/general_ledger.js
@@ -57,67 +57,6 @@
 			}
 		},
 		{
-			"fieldname":"cost_center",
-			"label": __("Cost Center"),
-			"fieldtype": "MultiSelect",
-			get_data: function() {
-				var cost_centers = frappe.query_report.get_filter_value("cost_center") || "";
-
-				const values = cost_centers.split(/\s*,\s*/).filter(d => d);
-				const txt = cost_centers.match(/[^,\s*]*$/)[0] || '';
-				let data = [];
-
-				frappe.call({
-					type: "GET",
-					method:'frappe.desk.search.search_link',
-					async: false,
-					no_spinner: true,
-					args: {
-						doctype: "Cost Center",
-						txt: txt,
-						filters: {
-							"company": frappe.query_report.get_filter_value("company"),
-							"name": ["not in", values]
-						}
-					},
-					callback: function(r) {
-						data = r.results;
-					}
-				});
-				return data;
-			}
-		},
-		{
-			"fieldname":"project",
-			"label": __("Project"),
-			"fieldtype": "MultiSelect",
-			get_data: function() {
-				var projects = frappe.query_report.get_filter_value("project") || "";
-
-				const values = projects.split(/\s*,\s*/).filter(d => d);
-				const txt = projects.match(/[^,\s*]*$/)[0] || '';
-				let data = [];
-
-				frappe.call({
-					type: "GET",
-					method:'frappe.desk.search.search_link',
-					async: false,
-					no_spinner: true,
-					args: {
-						doctype: "Project",
-						txt: txt,
-						filters: {
-							"name": ["not in", values]
-						}
-					},
-					callback: function(r) {
-						data = r.results;
-					}
-				});
-				return data;
-			}
-		},
-		{
 			"fieldtype": "Break",
 		},
 		{
@@ -213,10 +152,71 @@
 			"options": erpnext.get_presentation_currency_list()
 		},
 		{
+			"fieldname":"cost_center",
+			"label": __("Cost Center"),
+			"fieldtype": "MultiSelect",
+			get_data: function() {
+				var cost_centers = frappe.query_report.get_filter_value("cost_center") || "";
+
+				const values = cost_centers.split(/\s*,\s*/).filter(d => d);
+				const txt = cost_centers.match(/[^,\s*]*$/)[0] || '';
+				let data = [];
+
+				frappe.call({
+					type: "GET",
+					method:'frappe.desk.search.search_link',
+					async: false,
+					no_spinner: true,
+					args: {
+						doctype: "Cost Center",
+						txt: txt,
+						filters: {
+							"company": frappe.query_report.get_filter_value("company"),
+							"name": ["not in", values]
+						}
+					},
+					callback: function(r) {
+						data = r.results;
+					}
+				});
+				return data;
+			}
+		},
+		{
+			"fieldname":"project",
+			"label": __("Project"),
+			"fieldtype": "MultiSelect",
+			get_data: function() {
+				var projects = frappe.query_report.get_filter_value("project") || "";
+
+				const values = projects.split(/\s*,\s*/).filter(d => d);
+				const txt = projects.match(/[^,\s*]*$/)[0] || '';
+				let data = [];
+
+				frappe.call({
+					type: "GET",
+					method:'frappe.desk.search.search_link',
+					async: false,
+					no_spinner: true,
+					args: {
+						doctype: "Project",
+						txt: txt,
+						filters: {
+							"name": ["not in", values]
+						}
+					},
+					callback: function(r) {
+						data = r.results;
+					}
+				});
+				return data;
+			}
+		},
+		{
 			"fieldname": "show_opening_entries",
 			"label": __("Show Opening Entries"),
 			"fieldtype": "Check"
-		}
+		},
 	]
 }
 
@@ -224,7 +224,7 @@
 
 dimension_filters.then((dimensions) => {
 	dimensions.forEach((dimension) => {
-		frappe.query_reports["General Ledger"].filters.push({
+		frappe.query_reports["General Ledger"].filters.splice(15, 0 ,{
 			"fieldname": dimension["fieldname"],
 			"label": __(dimension["label"]),
 			"fieldtype": "Link",
diff --git a/erpnext/public/js/financial_statements.js b/erpnext/public/js/financial_statements.js
index 2e4b8f2..e1ce9bc 100644
--- a/erpnext/public/js/financial_statements.js
+++ b/erpnext/public/js/financial_statements.js
@@ -79,37 +79,6 @@
 			"options": "Finance Book"
 		},
 		{
-			"fieldname":"cost_center",
-			"label": __("Cost Center"),
-			"fieldtype": "MultiSelect",
-			get_data: function() {
-				var cost_centers = frappe.query_report.get_filter_value("cost_center") || "";
-
-				const values = cost_centers.split(/\s*,\s*/).filter(d => d);
-				const txt = cost_centers.match(/[^,\s*]*$/)[0] || '';
-				let data = [];
-
-				frappe.call({
-					type: "GET",
-					method:'frappe.desk.search.search_link',
-					async: false,
-					no_spinner: true,
-					args: {
-						doctype: "Cost Center",
-						txt: txt,
-						filters: {
-							"company": frappe.query_report.get_filter_value("company"),
-							"name": ["not in", values]
-						}
-					},
-					callback: function(r) {
-						data = r.results;
-					}
-				});
-				return data;
-			}
-		},
-		{
 			"fieldname":"from_fiscal_year",
 			"label": __("Start Year"),
 			"fieldtype": "Link",
@@ -147,6 +116,37 @@
 			"label": __("Currency"),
 			"fieldtype": "Select",
 			"options": erpnext.get_presentation_currency_list()
+		},
+		{
+			"fieldname":"cost_center",
+			"label": __("Cost Center"),
+			"fieldtype": "MultiSelect",
+			get_data: function() {
+				var cost_centers = frappe.query_report.get_filter_value("cost_center") || "";
+
+				const values = cost_centers.split(/\s*,\s*/).filter(d => d);
+				const txt = cost_centers.match(/[^,\s*]*$/)[0] || '';
+				let data = [];
+
+				frappe.call({
+					type: "GET",
+					method:'frappe.desk.search.search_link',
+					async: false,
+					no_spinner: true,
+					args: {
+						doctype: "Cost Center",
+						txt: txt,
+						filters: {
+							"company": frappe.query_report.get_filter_value("company"),
+							"name": ["not in", values]
+						}
+					},
+					callback: function(r) {
+						data = r.results;
+					}
+				});
+				return data;
+			}
 		}
 	]
 
