diff --git a/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.js b/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.js
index 3e880d3..c8c32d5 100644
--- a/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.js
+++ b/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.js
@@ -3,16 +3,48 @@
 
 frappe.ui.form.on('Accounting Dimension Filter', {
 	onload: function(frm) {
+		frm.set_query('applicable_on_account', 'accounts', function() {
+			return {
+				filters : {
+					'company': frm.doc.company
+				}
+			}
+		});
+
 		frappe.db.get_list('Accounting Dimension',
-			{fields: ['name']}).then((res) => {
+			{fields: ['document_type']}).then((res) => {
 			let options = ['Cost Center', 'Project'];
 
 			res.forEach((dimension) => {
-				options.push(dimension.name);
+				options.push(dimension.document_type);
 			});
 
 			frm.set_df_property('accounting_dimension', 'options', options);
 		});
+
+		frm.trigger('setup_filters');
+	},
+
+	setup_filters: function(frm) {
+		let filters = {};
+
+		frappe.model.with_doctype(frm.doc.accounting_dimension, function() {
+			if (frm.doc.accounting_dimension) {
+				if (frappe.model.is_tree(frm.doc.accounting_dimension)) {
+					filters['is_group'] = 0;
+				}
+
+				if (frappe.meta.has_field(frm.doc.accounting_dimension, 'company')) {
+					filters['company'] = frm.doc.company;
+				}
+
+				frm.set_query('dimension_value', 'dimensions', function() {
+					return {
+						filters: filters
+					}
+				});
+			}
+		});
 	},
 
 	accounting_dimension: function(frm) {
@@ -20,6 +52,7 @@
 		let row = frm.add_child("dimensions");
 		row.accounting_dimension = frm.doc.accounting_dimension;
 		frm.refresh_field("dimensions");
+		frm.trigger('setup_filters');
 	},
 });
 
diff --git a/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.json b/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.json
index e626a09..c1190a3 100644
--- a/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.json
+++ b/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.json
@@ -7,8 +7,10 @@
  "engine": "InnoDB",
  "field_order": [
   "accounting_dimension",
-  "column_break_2",
   "allow_or_restrict",
+  "column_break_2",
+  "company",
+  "disabled",
   "section_break_4",
   "accounts",
   "column_break_6",
@@ -70,11 +72,28 @@
    "reqd": 1,
    "show_days": 1,
    "show_seconds": 1
+  },
+  {
+   "default": "0",
+   "fieldname": "disabled",
+   "fieldtype": "Check",
+   "label": "Disabled",
+   "show_days": 1,
+   "show_seconds": 1
+  },
+  {
+   "fieldname": "company",
+   "fieldtype": "Link",
+   "label": "Company",
+   "options": "Company",
+   "reqd": 1,
+   "show_days": 1,
+   "show_seconds": 1
   }
  ],
  "index_web_pages_for_search": 1,
  "links": [],
- "modified": "2020-11-14 18:02:02.616932",
+ "modified": "2020-11-16 17:27:40.292860",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Accounting Dimension Filter",
diff --git a/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py b/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py
index 0dcf116..210b2c8 100644
--- a/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py
+++ b/erpnext/accounts/doctype/accounting_dimension_filter/accounting_dimension_filter.py
@@ -32,12 +32,13 @@
 	filters = frappe.db.sql(
 		""" SELECT
 				a.applicable_on_account, d.dimension_value, p.accounting_dimension,
-				p.allow_or_restrict, ad.fieldname
+				p.allow_or_restrict, ad.fieldname, a.is_mandatory
 			FROM
 				`tabApplicable On Account` a, `tabAllowed Dimension` d,
 				`tabAccounting Dimension Filter` p, `tabAccounting Dimension` ad
 			WHERE
 				p.name = a.parent
+				AND p.disabled = 0
 				AND p.name = d.parent
 				AND (p.accounting_dimension = ad.name
 				OR p.accounting_dimension in ('Cost Center', 'Project'))
@@ -50,13 +51,14 @@
 			f.fieldname = scrub(f.accounting_dimension)
 
 		build_map(dimension_filter_map, f.fieldname, f.applicable_on_account, f.dimension_value,
-			f.allow_or_restrict)
+			f.allow_or_restrict, f.is_mandatory)
 
 	return dimension_filter_map
 
-def build_map(map_object, dimension, account, filter_value, allow_or_restrict):
+def build_map(map_object, dimension, account, filter_value, allow_or_restrict, is_mandatory):
 	map_object.setdefault((dimension, account), {
 		'allowed_dimensions': [],
+		'is_mandatory': is_mandatory,
 		'allow_or_restrict': allow_or_restrict
 	})
 	map_object[(dimension, account)]['allowed_dimensions'].append(filter_value)
diff --git a/erpnext/accounts/doctype/allowed_dimension/allowed_dimension.json b/erpnext/accounts/doctype/allowed_dimension/allowed_dimension.json
index 20024b0..c2d34b3 100644
--- a/erpnext/accounts/doctype/allowed_dimension/allowed_dimension.json
+++ b/erpnext/accounts/doctype/allowed_dimension/allowed_dimension.json
@@ -22,6 +22,7 @@
    "fieldname": "dimension_value",
    "fieldtype": "Dynamic Link",
    "in_list_view": 1,
+   "label": "Applicable Dimension",
    "options": "accounting_dimension",
    "show_days": 1,
    "show_seconds": 1
@@ -30,7 +31,7 @@
  "index_web_pages_for_search": 1,
  "istable": 1,
  "links": [],
- "modified": "2020-11-14 19:54:03.269016",
+ "modified": "2020-11-16 17:41:50.422843",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Allowed Dimension",
diff --git a/erpnext/accounts/doctype/applicable_on_account/applicable_on_account.json b/erpnext/accounts/doctype/applicable_on_account/applicable_on_account.json
index 8305da2..5c80951 100644
--- a/erpnext/accounts/doctype/applicable_on_account/applicable_on_account.json
+++ b/erpnext/accounts/doctype/applicable_on_account/applicable_on_account.json
@@ -5,7 +5,8 @@
  "editable_grid": 1,
  "engine": "InnoDB",
  "field_order": [
-  "applicable_on_account"
+  "applicable_on_account",
+  "is_mandatory"
  ],
  "fields": [
   {
@@ -17,12 +18,22 @@
    "reqd": 1,
    "show_days": 1,
    "show_seconds": 1
+  },
+  {
+   "columns": 2,
+   "default": "0",
+   "fieldname": "is_mandatory",
+   "fieldtype": "Check",
+   "in_list_view": 1,
+   "label": "Is Mandatory",
+   "show_days": 1,
+   "show_seconds": 1
   }
  ],
  "index_web_pages_for_search": 1,
  "istable": 1,
  "links": [],
- "modified": "2020-11-14 16:54:06.756883",
+ "modified": "2020-11-16 13:36:59.129672",
  "modified_by": "Administrator",
  "module": "Accounts",
  "name": "Applicable On Account",
diff --git a/erpnext/accounts/doctype/gl_entry/gl_entry.py b/erpnext/accounts/doctype/gl_entry/gl_entry.py
index 1ac6079..b3caf6a 100644
--- a/erpnext/accounts/doctype/gl_entry/gl_entry.py
+++ b/erpnext/accounts/doctype/gl_entry/gl_entry.py
@@ -77,11 +77,9 @@
 					.format(self.voucher_type, self.voucher_no, self.account))
 
 	def validate_dimensions_for_pl_and_bs(self):
-
 		account_type = frappe.db.get_value("Account", self.account, "report_type")
 
 		for dimension in get_checks_for_pl_and_bs_accounts():
-
 			if account_type == "Profit and Loss" \
 				and self.company == dimension.company and dimension.mandatory_for_pl and not dimension.disabled:
 				if not self.get(dimension.fieldname):
@@ -101,6 +99,10 @@
 			account = key[1]
 
 			if self.account == account:
+				if value['is_mandatory'] and not self.get(dimension):
+					frappe.throw(_("{0} is mandatory for account {1}").format(
+						frappe.bold(frappe.unscrub(dimension)), frappe.bold(self.account)))
+
 				if value['allow_or_restrict'] == 'Allow':
 					if self.get(dimension) and self.get(dimension) not in value['allowed_dimensions']:
 						frappe.throw(_("Invalid value {0} for account {1}").format(
