diff --git a/erpnext/assets/doctype/asset_capitalization/__init__.py b/erpnext/assets/doctype/asset_capitalization/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization/__init__.py
diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js
new file mode 100644
index 0000000..9276d00
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js
@@ -0,0 +1,389 @@
+// Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.provide("erpnext.assets");
+
+
+erpnext.assets.AssetCapitalization = class AssetCapitalization extends erpnext.stock.StockController {
+	setup() {
+		this.setup_posting_date_time_check();
+	}
+
+	onload() {
+		this.setup_queries();
+	}
+
+	refresh() {
+		erpnext.hide_company();
+	}
+
+	setup_queries() {
+		var me = this;
+
+		me.setup_warehouse_query();
+
+		me.frm.set_query("target_item_code", function() {
+			return erpnext.queries.item();
+		});
+
+		me.frm.set_query("target_asset", function() {
+			var filters = {};
+
+			if (me.frm.doc.target_item_code) {
+				filters['item_code'] = me.frm.doc.target_item_code;
+			}
+
+			filters['status'] = ["not in", ["Draft", "Scrapped", "Sold"]]
+			filters['docstatus'] = 1;
+
+			return {
+				filters: filters
+			}
+		});
+
+		me.frm.set_query("asset", "asset_items", function() {
+			var filters = {
+				'status': ["not in", ["Draft", "Scrapped", "Sold"]],
+				'docstatus': 1
+			}
+
+			if (me.frm.doc.target_asset) {
+				filters['name'] = ['!=', me.frm.doc.target_asset]
+			}
+
+			return {
+				filters: filters
+			}
+		});
+
+		me.frm.set_query("item_code", "stock_items", function() {
+			return erpnext.queries.item({"is_stock_item": 1});
+		});
+
+		me.frm.set_query("item_code", "service_items", function() {
+			return erpnext.queries.item({"is_stock_item": 0, "is_fixed_asset": 0});
+		});
+
+		me.frm.set_query('batch_no', 'stock_items', function(doc, cdt, cdn) {
+			var item = locals[cdt][cdn];
+			if(!item.item_code) {
+				frappe.throw(__("Please enter Item Code to get Batch Number"));
+			} else {
+				var filters = {
+					'item_code': item.item_code,
+					'posting_date': me.frm.doc.posting_date || frappe.datetime.nowdate(),
+					'warehouse': item.warehouse
+				}
+
+				return {
+					query : "erpnext.controllers.queries.get_batch_no",
+					filters: filters
+				}
+			}
+		});
+
+		me.frm.set_query('expense_account', 'service_items', function() {
+			return {
+				filters: {
+					"account_type": ['in', ["Tax", "Expense Account", "Income Account", "Expenses Included In Valuation", "Expenses Included In Asset Valuation"]],
+					"is_group": 0,
+					"company": me.frm.doc.company
+				}
+			};
+		});
+	}
+
+	target_item_code() {
+		return this.get_target_item_details();
+	}
+
+	target_asset() {
+		return this.get_target_asset_details();
+	}
+
+	item_code(doc, cdt, cdn) {
+		var row = frappe.get_doc(cdt, cdn);
+		if (cdt === "Asset Capitalization Stock Item") {
+			this.get_consumed_stock_item_details(row);
+		} else if (cdt == "Asset Capitalization Service Item") {
+			this.get_service_item_details(row);
+		}
+	}
+
+	warehouse(doc, cdt, cdn) {
+		var row = frappe.get_doc(cdt, cdn);
+		if (cdt === "Asset Capitalization Stock Item") {
+			this.get_warehouse_details(row);
+		}
+	}
+
+	asset(doc, cdt, cdn) {
+		var row = frappe.get_doc(cdt, cdn);
+		if (cdt === "Asset Capitalization Asset Item") {
+			this.get_consumed_asset_details(row);
+		}
+	}
+
+	posting_date() {
+		if (this.frm.doc.posting_date) {
+			this.get_all_item_warehouse_details();
+		}
+	}
+
+	posting_time() {
+		if (this.frm.doc.posting_time) {
+			this.get_all_item_warehouse_details();
+		}
+	}
+
+	finance_book() {
+		this.get_all_asset_values();
+	}
+
+	stock_qty() {
+		this.calculate_totals();
+	}
+
+	qty() {
+		this.calculate_totals();
+	}
+
+	rate() {
+		this.calculate_totals();
+	}
+
+	company() {
+		var me = this;
+
+		if (me.frm.doc.company) {
+			frappe.call({
+				method: "frappe.client.get_value",
+				args: {
+					doctype: "Company",
+					filters: {"name": me.frm.doc.company},
+					fieldname: "cost_center"
+				},
+				callback: function (r) {
+					if (r.message) {
+						$.each(me.frm.doc.service_items || [], function (i, d) {
+							frappe.model.set_value(d.doctype, d.name, "cost_center", r.message.cost_center);
+						});
+					}
+				}
+			});
+		}
+
+		erpnext.accounts.dimensions.update_dimension(me.frm, me.frm.doctype);
+	}
+
+	serivce_items_add(doc, cdt, cdn) {
+		erpnext.accounts.dimensions.copy_dimension_from_first_row(this.frm, cdt, cdn, 'service_items');
+	}
+
+	get_target_item_details() {
+		var me = this;
+
+		if (me.frm.doc.target_item_code) {
+			return me.frm.call({
+				method: "erpnext.assets.doctype.asset_capitalization.asset_capitalization.get_target_item_details",
+				child: me.frm.doc,
+				args: {
+					item_code: me.frm.doc.target_item_code,
+				},
+				callback: function (r) {
+					if (!r.exc) {
+						me.frm.refresh_fields();
+					}
+				}
+			});
+		}
+	}
+
+	get_target_asset_details() {
+		var me = this;
+
+		if (me.frm.doc.target_asset) {
+			return me.frm.call({
+				method: "erpnext.assets.doctype.asset_capitalization.asset_capitalization.get_target_asset_details",
+				child: me.frm.doc,
+				args: {
+					asset: me.frm.doc.target_asset
+				},
+				callback: function (r) {
+					if (!r.exc) {
+						me.frm.refresh_fields();
+					}
+				}
+			});
+		}
+	}
+
+	get_consumed_stock_item_details(row) {
+		var me = this;
+
+		if (row && row.item_code) {
+			return me.frm.call({
+				method: "erpnext.assets.doctype.asset_capitalization.asset_capitalization.get_consumed_stock_item_details",
+				child: row,
+				args: {
+					args: {
+						item_code: row.item_code,
+						warehouse: row.warehouse,
+						stock_qty: flt(row.stock_qty),
+						doctype: me.frm.doc.doctype,
+						name: me.frm.doc.name,
+						company: me.frm.doc.company,
+						posting_date: me.frm.doc.posting_date,
+						posting_time: me.frm.doc.posting_time,
+					}
+				},
+				callback: function (r) {
+					if (!r.exc) {
+						me.calculate_totals();
+					}
+				}
+			});
+		}
+	}
+
+	get_consumed_asset_details(row) {
+		var me = this;
+
+		if (row && row.asset) {
+			return me.frm.call({
+				method: "erpnext.assets.doctype.asset_capitalization.asset_capitalization.get_consumed_asset_details",
+				child: row,
+				args: {
+					args: {
+						asset: row.asset,
+						doctype: me.frm.doc.doctype,
+						name: me.frm.doc.name,
+						company: me.frm.doc.company,
+						finance_book: me.frm.doc.finance_book,
+						posting_date: me.frm.doc.posting_date,
+						posting_time: me.frm.doc.posting_time,
+					}
+				},
+				callback: function (r) {
+					if (!r.exc) {
+						me.calculate_totals();
+					}
+				}
+			});
+		}
+	}
+
+	get_service_item_details(row) {
+		var me = this;
+
+		if (row && row.item_code) {
+			return me.frm.call({
+				method: "erpnext.assets.doctype.asset_capitalization.asset_capitalization.get_service_item_details",
+				child: row,
+				args: {
+					args: {
+						item_code: row.item_code,
+						qty: flt(row.qty),
+						expense_account: row.expense_account,
+						company: me.frm.doc.company,
+					}
+				},
+				callback: function (r) {
+					if (!r.exc) {
+						me.calculate_totals();
+					}
+				}
+			});
+		}
+	}
+
+	get_warehouse_details(item) {
+		var me = this;
+		if(item.item_code && item.warehouse) {
+			me.frm.call({
+				method: "erpnext.assets.doctype.asset_capitalization.asset_capitalization.get_warehouse_details",
+				child: item,
+				args: {
+					args: {
+						'item_code': item.item_code,
+						'warehouse': cstr(item.warehouse),
+						'qty': flt(item.stock_qty),
+						'serial_no': item.serial_no,
+						'posting_date': me.frm.doc.posting_date,
+						'posting_time': me.frm.doc.posting_time,
+						'company': me.frm.doc.company,
+						'voucher_type': me.frm.doc.doctype,
+						'voucher_no': me.frm.doc.name,
+						'allow_zero_valuation': 1
+					}
+				},
+				callback: function(r) {
+					if (!r.exc) {
+						me.calculate_totals();
+					}
+				}
+			});
+		}
+	}
+
+	get_all_item_warehouse_details() {
+		var me = this;
+		me.frm.call({
+			method: "set_warehouse_details",
+			doc: me.frm.doc,
+			callback: function(r) {
+				if (!r.exc) {
+					me.calculate_totals();
+				}
+			}
+		});
+	}
+
+	get_all_asset_values() {
+		var me = this;
+		me.frm.call({
+			method: "set_asset_values",
+			doc: me.frm.doc,
+			callback: function(r) {
+				if (!r.exc) {
+					me.calculate_totals();
+				}
+			}
+		});
+	}
+
+	calculate_totals() {
+		var me = this;
+
+		me.frm.doc.stock_items_total = 0;
+		me.frm.doc.asset_items_total = 0;
+		me.frm.doc.service_items_total = 0;
+
+		$.each(me.frm.doc.stock_items || [], function (i, d) {
+			d.amount = flt(flt(d.stock_qty) * flt(d.valuation_rate), precision('amount', d));
+			me.frm.doc.stock_items_total += d.amount;
+		});
+
+		$.each(me.frm.doc.asset_items || [], function (i, d) {
+			d.asset_value = flt(flt(d.asset_value), precision('asset_value', d));
+			me.frm.doc.asset_items_total += d.asset_value;
+		});
+
+		$.each(me.frm.doc.service_items || [], function (i, d) {
+			d.amount = flt(flt(d.qty) * flt(d.rate), precision('amount', d));
+			me.frm.doc.service_items_total += d.amount;
+		});
+
+		me.frm.doc.stock_items_total = flt(me.frm.doc.stock_items_total, precision('stock_items_total'));
+		me.frm.doc.asset_items_total = flt(me.frm.doc.asset_items_total, precision('asset_items_total'));
+		me.frm.doc.service_items_total = flt(me.frm.doc.service_items_total, precision('service_items_total'));
+
+		me.frm.doc.total_value = me.frm.doc.stock_items_total + me.frm.doc.asset_items_total + me.frm.doc.service_items_total;
+		me.frm.doc.total_value = flt(me.frm.doc.total_value, precision('total_value'));
+
+		me.frm.refresh_fields();
+	}
+};
+
+//$.extend(cur_frm.cscript, new erpnext.assets.AssetCapitalization({frm: cur_frm}));
+cur_frm.cscript = new erpnext.assets.AssetCapitalization({frm: cur_frm});
diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.json b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.json
new file mode 100644
index 0000000..b697c20
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.json
@@ -0,0 +1,340 @@
+{
+ "actions": [],
+ "autoname": "naming_series:",
+ "creation": "2021-09-04 13:38:04.217187",
+ "doctype": "DocType",
+ "document_type": "Document",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+  "title",
+  "target_item_code",
+  "target_item_name",
+  "target_is_fixed_asset",
+  "target_has_batch_no",
+  "target_has_serial_no",
+  "entry_type",
+  "finance_book",
+  "naming_series",
+  "column_break_9",
+  "company",
+  "posting_date",
+  "posting_time",
+  "set_posting_time",
+  "amended_from",
+  "target_item_details_section",
+  "target_asset",
+  "target_asset_name",
+  "target_warehouse",
+  "target_batch_no",
+  "target_serial_no",
+  "column_break_5",
+  "target_qty",
+  "target_stock_uom",
+  "section_break_16",
+  "stock_items",
+  "stock_items_total",
+  "section_break_26",
+  "asset_items",
+  "asset_items_total",
+  "service_expenses_section",
+  "service_items",
+  "service_items_total",
+  "totals_section",
+  "total_value"
+ ],
+ "fields": [
+  {
+   "fieldname": "title",
+   "fieldtype": "Data",
+   "hidden": 1,
+   "label": "Title"
+  },
+  {
+   "fieldname": "target_item_code",
+   "fieldtype": "Link",
+   "in_standard_filter": 1,
+   "label": "Target Item Code",
+   "options": "Item",
+   "reqd": 1
+  },
+  {
+   "depends_on": "eval:doc.target_item_code && doc.target_item_name != doc.target_item_code",
+   "fetch_from": "target_item_code.item_name",
+   "fieldname": "target_item_name",
+   "fieldtype": "Data",
+   "label": "Target Item Name",
+   "read_only": 1
+  },
+  {
+   "default": "0",
+   "fetch_from": "target_item_code.is_fixed_asset",
+   "fieldname": "target_is_fixed_asset",
+   "fieldtype": "Check",
+   "hidden": 1,
+   "label": "Target Is Fixed Asset",
+   "read_only": 1
+  },
+  {
+   "fieldname": "column_break_5",
+   "fieldtype": "Column Break"
+  },
+  {
+   "depends_on": "eval:!doc.target_item_code || doc.target_is_fixed_asset",
+   "fieldname": "target_asset",
+   "fieldtype": "Link",
+   "in_standard_filter": 1,
+   "label": "Target Asset",
+   "no_copy": 1,
+   "options": "Asset"
+  },
+  {
+   "depends_on": "target_asset",
+   "fetch_from": "target_asset.asset_name",
+   "fieldname": "target_asset_name",
+   "fieldtype": "Data",
+   "label": "Asset Name",
+   "no_copy": 1,
+   "read_only": 1
+  },
+  {
+   "fieldname": "column_break_9",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fetch_from": "asset.company",
+   "fieldname": "company",
+   "fieldtype": "Link",
+   "label": "Company",
+   "options": "Company",
+   "reqd": 1
+  },
+  {
+   "default": "Today",
+   "fieldname": "posting_date",
+   "fieldtype": "Date",
+   "in_list_view": 1,
+   "in_standard_filter": 1,
+   "label": "Posting Date",
+   "no_copy": 1,
+   "reqd": 1,
+   "search_index": 1
+  },
+  {
+   "default": "Now",
+   "fieldname": "posting_time",
+   "fieldtype": "Time",
+   "label": "Posting Time",
+   "no_copy": 1,
+   "reqd": 1
+  },
+  {
+   "default": "0",
+   "depends_on": "eval:doc.docstatus==0",
+   "fieldname": "set_posting_time",
+   "fieldtype": "Check",
+   "label": "Edit Posting Date and Time"
+  },
+  {
+   "fieldname": "naming_series",
+   "fieldtype": "Select",
+   "label": "Series",
+   "options": "ACC-ASC-.YYYY.-",
+   "reqd": 1
+  },
+  {
+   "fieldname": "amended_from",
+   "fieldtype": "Link",
+   "label": "Amended From",
+   "no_copy": 1,
+   "options": "Asset Capitalization",
+   "print_hide": 1,
+   "read_only": 1
+  },
+  {
+   "fieldname": "section_break_16",
+   "fieldtype": "Section Break",
+   "label": "Consumed Stock Items"
+  },
+  {
+   "fieldname": "stock_items",
+   "fieldtype": "Table",
+   "label": "Stock Items",
+   "options": "Asset Capitalization Stock Item"
+  },
+  {
+   "fieldname": "target_item_details_section",
+   "fieldtype": "Section Break",
+   "label": "Target Item Details"
+  },
+  {
+   "depends_on": "eval:!doc.target_is_fixed_asset",
+   "fieldname": "target_warehouse",
+   "fieldtype": "Link",
+   "label": "Target Warehouse",
+   "options": "Warehouse"
+  },
+  {
+   "depends_on": "target_has_batch_no",
+   "fieldname": "target_batch_no",
+   "fieldtype": "Link",
+   "label": "Target Batch No",
+   "options": "Batch"
+  },
+  {
+   "default": "1",
+   "fieldname": "target_qty",
+   "fieldtype": "Float",
+   "label": "Target Qty",
+   "read_only_depends_on": "target_is_fixed_asset"
+  },
+  {
+   "fetch_from": "target_item_code.stock_uom",
+   "fieldname": "target_stock_uom",
+   "fieldtype": "Link",
+   "label": "Stock UOM",
+   "options": "UOM",
+   "read_only": 1
+  },
+  {
+   "default": "0",
+   "fetch_from": "target_item_code.has_batch_no",
+   "fieldname": "target_has_batch_no",
+   "fieldtype": "Check",
+   "hidden": 1,
+   "label": "Target Has Batch No",
+   "read_only": 1
+  },
+  {
+   "default": "0",
+   "fetch_from": "target_item_code.has_serial_no",
+   "fieldname": "target_has_serial_no",
+   "fieldtype": "Check",
+   "hidden": 1,
+   "label": "Target Has Serial No",
+   "read_only": 1
+  },
+  {
+   "depends_on": "target_has_serial_no",
+   "fieldname": "target_serial_no",
+   "fieldtype": "Small Text",
+   "label": "Target Serial No"
+  },
+  {
+   "fieldname": "section_break_26",
+   "fieldtype": "Section Break",
+   "label": "Consumed Asset Items"
+  },
+  {
+   "fieldname": "asset_items",
+   "fieldtype": "Table",
+   "label": "Assets",
+   "options": "Asset Capitalization Asset Item"
+  },
+  {
+   "fieldname": "entry_type",
+   "fieldtype": "Select",
+   "in_list_view": 1,
+   "in_standard_filter": 1,
+   "label": "Entry Type",
+   "options": "\nCapitalization\nDecapitalization",
+   "read_only": 1
+  },
+  {
+   "fieldname": "stock_items_total",
+   "fieldtype": "Currency",
+   "label": "Consumed Stock Total Value",
+   "options": "Company:company:default_currency",
+   "read_only": 1
+  },
+  {
+   "fieldname": "asset_items_total",
+   "fieldtype": "Currency",
+   "label": "Consumed Asset Total Value",
+   "options": "Company:company:default_currency",
+   "read_only": 1
+  },
+  {
+   "fieldname": "finance_book",
+   "fieldtype": "Link",
+   "label": "Finance Book",
+   "options": "Finance Book"
+  },
+  {
+   "fieldname": "service_expenses_section",
+   "fieldtype": "Section Break",
+   "label": "Service Expenses"
+  },
+  {
+   "fieldname": "service_items",
+   "fieldtype": "Table",
+   "label": "Services",
+   "options": "Asset Capitalization Service Item"
+  },
+  {
+   "fieldname": "service_items_total",
+   "fieldtype": "Currency",
+   "label": "Service Expense Total Amount",
+   "options": "Company:company:default_currency",
+   "read_only": 1
+  },
+  {
+   "fieldname": "totals_section",
+   "fieldtype": "Section Break",
+   "label": "Totals"
+  },
+  {
+   "fieldname": "total_value",
+   "fieldtype": "Currency",
+   "label": "Total Value",
+   "options": "Company:company:default_currency",
+   "read_only": 1
+  }
+ ],
+ "index_web_pages_for_search": 1,
+ "is_submittable": 1,
+ "links": [],
+ "modified": "2021-09-06 17:18:31.881006",
+ "modified_by": "Administrator",
+ "module": "Assets",
+ "name": "Asset Capitalization",
+ "naming_rule": "By \"Naming Series\" field",
+ "owner": "Administrator",
+ "permissions": [
+  {
+   "amend": 1,
+   "cancel": 1,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "export": 1,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Manufacturing Manager",
+   "share": 1,
+   "submit": 1,
+   "write": 1
+  },
+  {
+   "amend": 1,
+   "cancel": 1,
+   "create": 1,
+   "delete": 1,
+   "email": 1,
+   "export": 1,
+   "print": 1,
+   "read": 1,
+   "report": 1,
+   "role": "Quality Manager",
+   "share": 1,
+   "submit": 1,
+   "write": 1
+  }
+ ],
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "title_field": "title",
+ "track_changes": 1,
+ "track_seen": 1
+}
\ No newline at end of file
diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
new file mode 100644
index 0000000..586710a
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
@@ -0,0 +1,402 @@
+# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+import frappe
+from frappe import _
+from erpnext.controllers.accounts_controller import AccountsController
+from frappe.utils import cint, flt
+from erpnext.stock.get_item_details import get_item_warehouse, get_default_expense_account, get_default_cost_center
+from erpnext.stock.doctype.item.item import get_item_defaults
+from erpnext.setup.doctype.item_group.item_group import get_item_group_defaults
+from erpnext.setup.doctype.brand.brand import get_brand_defaults
+from erpnext.stock.utils import get_incoming_rate
+from erpnext.stock.stock_ledger import get_previous_sle
+from erpnext.assets.doctype.asset_value_adjustment.asset_value_adjustment import get_current_asset_value
+from six import string_types
+import json
+
+force_fields = ['target_item_name', 'target_asset_name', 'item_name', 'asset_name',
+	'target_is_fixed_asset', 'target_has_serial_no', 'target_has_batch_no',
+	'target_stock_uom', 'stock_uom']
+
+
+class AssetCapitalization(AccountsController):
+	def validate(self):
+		self.validate_posting_time()
+		self.set_missing_values(for_validate=True)
+		self.set_entry_type()
+		self.validate_target_item()
+		self.validate_target_asset()
+		self.validate_consumed_stock_item()
+		self.validate_consumed_asset_item()
+		self.validate_service_item()
+		self.set_warehouse_details()
+		self.set_asset_values()
+		self.calculate_totals()
+		self.set_title()
+
+	def set_entry_type(self):
+		self.entry_type = "Capitalization" if self.target_is_fixed_asset else "Decapitalization"
+
+	def set_title(self):
+		self.title = self.target_asset_name or self.target_item_name or self.target_item_code
+
+	def set_missing_values(self, for_validate=False):
+		target_item_details = get_target_item_details(self.target_item_code)
+		for k, v in target_item_details.items():
+			if self.meta.has_field(k) and (not self.get(k) or k in force_fields):
+				self.set(k, v)
+
+		# Remove asset if item not a fixed asset
+		if not self.target_is_fixed_asset:
+			self.target_asset = None
+
+		target_asset_details = get_target_asset_details(self.target_asset)
+		for k, v in target_asset_details.items():
+			if self.meta.has_field(k) and (not self.get(k) or k in force_fields):
+				self.set(k, v)
+
+		for d in self.stock_items:
+			args = self.as_dict()
+			args.update(d.as_dict())
+			args.doctype = self.doctype
+			args.name = self.name
+			consumed_stock_item_details = get_consumed_stock_item_details(args, get_valuation_rate=False)
+			for k, v in consumed_stock_item_details.items():
+				if d.meta.has_field(k) and (not d.get(k) or k in force_fields):
+					d.set(k, v)
+
+		for d in self.asset_items:
+			args = self.as_dict()
+			args.update(d.as_dict())
+			args.doctype = self.doctype
+			args.name = self.name
+			consumed_asset_details = get_consumed_asset_details(args, get_asset_value=False)
+			for k, v in consumed_asset_details.items():
+				if d.meta.has_field(k) and (not d.get(k) or k in force_fields):
+					d.set(k, v)
+
+		for d in self.service_items:
+			args = self.as_dict()
+			args.update(d.as_dict())
+			args.doctype = self.doctype
+			args.name = self.name
+			service_item_details = get_service_item_details(args)
+			for k, v in service_item_details.items():
+				if d.meta.has_field(k) and (not d.get(k) or k in force_fields):
+					d.set(k, v)
+
+	def validate_target_item(self):
+		target_item = frappe.get_cached_doc("Item", self.target_item_code)
+
+		if not target_item.is_fixed_asset and not target_item.is_stock_item:
+			frappe.throw(_("Target Item {0} is neither a Fixed Asset nor a Stock Item")
+				.format(target_item.name))
+
+		if target_item.is_fixed_asset:
+			self.target_qty = 1
+
+		if not target_item.is_stock_item:
+			self.target_warehouse = None
+		if not target_item.is_fixed_asset:
+			self.target_asset = None
+		if not target_item.has_batch_no:
+			self.target_batch_no = None
+		if not target_item.has_serial_no:
+			self.target_serial_no = ""
+
+		self.validate_item(target_item)
+
+	def validate_target_asset(self):
+		if self.target_is_fixed_asset and not self.target_asset:
+			frappe.throw(_("Target Asset is mandatory for Capitalization"))
+
+		if self.target_asset:
+			target_asset = self.get_asset_for_validation(self.target_asset)
+
+			if target_asset.item_code != self.target_item_code:
+				frappe.throw(_("Asset {0} does not belong to Item {1}").format(self.target_asset, self.target_item_code))
+
+			self.validate_asset(target_asset)
+
+	def validate_consumed_stock_item(self):
+		for d in self.stock_items:
+			if d.item_code:
+				item = frappe.get_cached_doc("Item", d.item_code)
+
+				if not item.is_stock_item:
+					frappe.throw(_("Row #{0}: Item {1} is not a stock item").format(d.idx, d.item_code))
+
+				if flt(d.stock_qty) <= 0:
+					frappe.throw(_("Row #{0}: Qty must be a positive number").format(d.idx))
+
+				self.validate_item(item)
+
+	def validate_consumed_asset_item(self):
+		for d in self.asset_items:
+			if d.asset:
+				if d.asset == self.target_asset:
+					frappe.throw(_("Row #{0}: Consumed Asset {1} cannot be the same as the Target Asset")
+						.format(d.idx, d.asset))
+
+				asset = self.get_asset_for_validation(d.asset)
+				self.validate_asset(asset)
+
+	def validate_service_item(self):
+		for d in self.service_items:
+			if d.item_code:
+				item = frappe.get_cached_doc("Item", d.item_code)
+
+				if item.is_stock_item or item.is_fixed_asset:
+					frappe.throw(_("Row #{0}: Item {1} is not a service item").format(d.idx, d.item_code))
+
+				if flt(d.qty) <= 0:
+					frappe.throw(_("Row #{0}: Qty must be a positive number").format(d.idx))
+
+				if flt(d.amount) <= 0:
+					frappe.throw(_("Row #{0}: Amount must be a positive number").format(d.idx))
+
+				self.validate_item(item)
+
+			if not d.cost_center:
+				d.cost_center = frappe.get_cached_value("Company", self.company, "cost_center")
+
+	def validate_item(self, item):
+		from erpnext.stock.doctype.item.item import validate_end_of_life
+		validate_end_of_life(item.name, item.end_of_life, item.disabled)
+
+	def get_asset_for_validation(self, asset):
+		return frappe.db.get_value("Asset", asset, ["name", "item_code", "company", "status", "docstatus"], as_dict=1)
+
+	def validate_asset(self, asset):
+		if asset.status in ("Draft", "Scrapped", "Sold"):
+			frappe.throw(_("Asset {0} is {1}").format(asset.name, asset.status))
+
+		if asset.docstatus == 0:
+			frappe.throw(_("Asset {0} is Draft").format(asset.name))
+		if asset.docstatus == 2:
+			frappe.throw(_("Asset {0} is cancelled").format(asset.name))
+
+		if asset.company != self.company:
+			frappe.throw(_("Asset {0} does not belong to company {1}").format(self.target_asset, self.company))
+
+	@frappe.whitelist()
+	def set_warehouse_details(self):
+		for d in self.stock_items:
+			if d.item_code and d.warehouse:
+				args = self.get_args_for_incoming_rate(d)
+				warehouse_details = get_warehouse_details(args)
+				d.update(warehouse_details)
+
+	@frappe.whitelist()
+	def set_asset_values(self):
+		for d in self.asset_items:
+			if d.asset:
+				d.asset_value = flt(get_current_asset_value(d.asset, self.finance_book))
+
+	def get_args_for_incoming_rate(self, item):
+		return frappe._dict({
+			"item_code": item.item_code,
+			"warehouse": item.warehouse,
+			"posting_date": self.posting_date,
+			"posting_time": self.posting_time,
+			"qty": -1 * flt(item.stock_qty),
+			"serial_no": item.serial_no,
+			"batch_no": item.batch_no,
+			"voucher_type": self.doctype,
+			"voucher_no": self.name,
+			"company": self.company,
+			"allow_zero_valuation": cint(item.get('allow_zero_valuation_rate')),
+		})
+
+	def calculate_totals(self):
+		self.stock_items_total = 0
+		self.asset_items_total = 0
+		self.service_items_total = 0
+
+		for d in self.stock_items:
+			d.amount = flt(flt(d.stock_qty) * flt(d.valuation_rate), d.precision('amount'))
+			self.stock_items_total += d.amount
+
+		for d in self.asset_items:
+			d.asset_value = flt(flt(d.asset_value), d.precision('asset_value'))
+			self.asset_items_total += d.asset_value
+
+		for d in self.service_items:
+			d.amount = flt(flt(d.qty) * flt(d.rate), d.precision('amount'))
+			self.service_items_total += d.amount
+
+		self.stock_items_total = flt(self.stock_items_total, self.precision('stock_items_total'))
+		self.asset_items_total = flt(self.asset_items_total, self.precision('asset_items_total'))
+		self.service_items_total = flt(self.service_items_total, self.precision('service_items_total'))
+
+		self.total_value = self.stock_items_total + self.asset_items_total + self.service_items_total
+		self.total_value = flt(self.total_value, self.precision('total_value'))
+
+
+@frappe.whitelist()
+def get_target_item_details(item_code=None):
+	out = frappe._dict()
+
+	# Get Item Details
+	item = frappe._dict()
+	if item_code:
+		item = frappe.get_cached_doc("Item", item_code)
+
+	# Set Item Details
+	out.target_item_name = item.item_name
+	out.target_stock_uom = item.stock_uom
+	out.target_is_fixed_asset = cint(item.is_fixed_asset)
+	out.target_has_batch_no = cint(item.has_batch_no)
+	out.target_has_serial_no = cint(item.has_serial_no)
+
+	if out.target_is_fixed_asset:
+		out.target_qty = 1
+		out.target_warehouse = None
+	else:
+		out.target_asset = None
+
+	if not out.target_has_batch_no:
+		out.target_batch_no = None
+	if not out.target_has_serial_no:
+		out.target_serial_no = ""
+
+	# Set Entry Type
+	if not item_code:
+		out.entry_type = ""
+	elif out.target_is_fixed_asset:
+		out.entry_type = "Capitalization"
+	else:
+		out.entry_type = "Decapitalization"
+
+	return out
+
+
+@frappe.whitelist()
+def get_target_asset_details(asset=None):
+	out = frappe._dict()
+
+	# Get Asset Details
+	asset_details = frappe._dict()
+	if asset:
+		asset_details = frappe.db.get_value("Asset", asset, ['asset_name', 'item_code'], as_dict=1)
+		if not asset_details:
+			frappe.throw(_("Asset {0} does not exist").format(asset))
+
+		# Re-set item code from Asset
+		out.target_item_code = asset_details.item_code
+
+	# Set Asset Details
+	out.asset_name = asset_details.asset_name
+
+	return out
+
+
+@frappe.whitelist()
+def get_consumed_stock_item_details(args, get_valuation_rate=True):
+	if isinstance(args, string_types):
+		args = json.loads(args)
+
+	args = frappe._dict(args)
+	out = frappe._dict()
+
+	item = frappe._dict()
+	if args.item_code:
+		item = frappe.get_cached_doc("Item", args.item_code)
+
+	out.item_name = item.item_name
+	out.batch_no = None
+	out.serial_no = ""
+
+	out.stock_qty = flt(args.stock_qty) or 1
+	out.stock_uom = item.stock_uom
+
+	out.warehouse = get_item_warehouse(item, args, overwrite_warehouse=True) if item else None
+
+	if get_valuation_rate:
+		if args.item_code and out.warehouse:
+			incoming_rate_args = frappe._dict({
+				'item_code': args.item_code,
+				'warehouse': out.warehouse,
+				'posting_date': args.posting_date,
+				'posting_time': args.posting_time,
+				'qty': -1 * flt(out.stock_qty),
+				"voucher_type": args.doctype,
+				"voucher_no": args.name,
+				"company": args.company,
+			})
+			out.update(get_warehouse_details(incoming_rate_args))
+		else:
+			out.valuation_rate = 0
+			out.actual_qty = 0
+
+	return out
+
+
+@frappe.whitelist()
+def get_warehouse_details(args):
+	if isinstance(args, string_types):
+		args = json.loads(args)
+
+	args = frappe._dict(args)
+
+	out = {}
+	if args.warehouse and args.item_code:
+		out = {
+			"actual_qty": get_previous_sle(args).get("qty_after_transaction") or 0,
+			"valuation_rate": get_incoming_rate(args, raise_error_if_no_rate=False)
+		}
+	return out
+
+
+@frappe.whitelist()
+def get_consumed_asset_details(args, get_asset_value=True):
+	if isinstance(args, string_types):
+		args = json.loads(args)
+
+	args = frappe._dict(args)
+	out = frappe._dict()
+
+	asset_details = frappe._dict()
+	if args.asset:
+		asset_details = frappe.db.get_value("Asset", args.asset, ['asset_name', 'item_code', 'item_name'], as_dict=1)
+		if not asset_details:
+			frappe.throw(_("Asset {0} does not exist").format(args.asset))
+
+	out.item_code = asset_details.item_code
+	out.asset_name = asset_details.asset_name
+	out.item_name = asset_details.item_name
+
+	if get_asset_value:
+		if args.asset:
+			out.asset_value = flt(get_current_asset_value(args.asset, finance_book=args.finance_book))
+		else:
+			out.asset_value = 0
+
+	return out
+
+
+@frappe.whitelist()
+def get_service_item_details(args):
+	if isinstance(args, string_types):
+		args = json.loads(args)
+
+	args = frappe._dict(args)
+	out = frappe._dict()
+
+	item = frappe._dict()
+	if args.item_code:
+		item = frappe.get_cached_doc("Item", args.item_code)
+
+	out.item_name = item.item_name
+	out.qty = flt(args.qty) or 1
+	out.uom = item.purchase_uom or item.stock_uom
+
+	item_defaults = get_item_defaults(item.name, args.company)
+	item_group_defaults = get_item_group_defaults(item.name, args.company)
+	brand_defaults = get_brand_defaults(item.name, args.company)
+
+	out.expense_account = get_default_expense_account(args, item_defaults, item_group_defaults, brand_defaults)
+	out.cost_center = get_default_cost_center(args, item_defaults, item_group_defaults, brand_defaults)
+
+	return out
diff --git a/erpnext/assets/doctype/asset_capitalization/test_asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/test_asset_capitalization.py
new file mode 100644
index 0000000..d8e22c5
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization/test_asset_capitalization.py
@@ -0,0 +1,8 @@
+# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+
+# import frappe
+import unittest
+
+class TestAssetCapitalization(unittest.TestCase):
+	pass
diff --git a/erpnext/assets/doctype/asset_capitalization_asset_item/__init__.py b/erpnext/assets/doctype/asset_capitalization_asset_item/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization_asset_item/__init__.py
diff --git a/erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json b/erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json
new file mode 100644
index 0000000..a004033
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json
@@ -0,0 +1,85 @@
+{
+ "actions": [],
+ "creation": "2021-09-05 15:52:10.124538",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+  "asset",
+  "asset_name",
+  "column_break_3",
+  "item_code",
+  "item_name",
+  "section_break_6",
+  "asset_value",
+  "column_break_9"
+ ],
+ "fields": [
+  {
+   "fieldname": "asset",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Asset",
+   "options": "Asset",
+   "reqd": 1
+  },
+  {
+   "fetch_from": "asset.asset_name",
+   "fieldname": "asset_name",
+   "fieldtype": "Data",
+   "in_list_view": 1,
+   "label": "Asset Name",
+   "read_only": 1
+  },
+  {
+   "fieldname": "column_break_3",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fetch_from": "asset.item_code",
+   "fieldname": "item_code",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Item Code",
+   "options": "Item",
+   "read_only": 1,
+   "reqd": 1
+  },
+  {
+   "fieldname": "item_name",
+   "fieldtype": "Data",
+   "label": "Item Name",
+   "read_only": 1
+  },
+  {
+   "fieldname": "section_break_6",
+   "fieldtype": "Section Break",
+   "label": "Value"
+  },
+  {
+   "default": "0",
+   "fieldname": "asset_value",
+   "fieldtype": "Currency",
+   "in_list_view": 1,
+   "label": "Asset Value",
+   "options": "Company:company:default_currency",
+   "read_only": 1
+  },
+  {
+   "fieldname": "column_break_9",
+   "fieldtype": "Column Break"
+  }
+ ],
+ "index_web_pages_for_search": 1,
+ "istable": 1,
+ "links": [],
+ "modified": "2021-09-06 13:46:04.892863",
+ "modified_by": "Administrator",
+ "module": "Assets",
+ "name": "Asset Capitalization Asset Item",
+ "owner": "Administrator",
+ "permissions": [],
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1
+}
\ No newline at end of file
diff --git a/erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.py b/erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.py
new file mode 100644
index 0000000..8817317
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.py
@@ -0,0 +1,8 @@
+# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+# import frappe
+from frappe.model.document import Document
+
+class AssetCapitalizationAssetItem(Document):
+	pass
diff --git a/erpnext/assets/doctype/asset_capitalization_service_item/__init__.py b/erpnext/assets/doctype/asset_capitalization_service_item/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization_service_item/__init__.py
diff --git a/erpnext/assets/doctype/asset_capitalization_service_item/asset_capitalization_service_item.json b/erpnext/assets/doctype/asset_capitalization_service_item/asset_capitalization_service_item.json
new file mode 100644
index 0000000..2d3584d
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization_service_item/asset_capitalization_service_item.json
@@ -0,0 +1,129 @@
+{
+ "actions": [],
+ "creation": "2021-09-06 13:32:08.642060",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+  "item_code",
+  "item_name",
+  "column_break_3",
+  "expense_account",
+  "section_break_6",
+  "qty",
+  "uom",
+  "column_break_9",
+  "rate",
+  "amount",
+  "accounting_dimensions_section",
+  "cost_center",
+  "dimension_col_break",
+  "project"
+ ],
+ "fields": [
+  {
+   "bold": 1,
+   "fieldname": "item_code",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Item Code",
+   "options": "Item"
+  },
+  {
+   "fetch_from": "item_code.item_name",
+   "fieldname": "item_name",
+   "fieldtype": "Data",
+   "label": "Item Name",
+   "read_only": 1
+  },
+  {
+   "fieldname": "column_break_3",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "expense_account",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Expense Account",
+   "options": "Account",
+   "reqd": 1
+  },
+  {
+   "fieldname": "section_break_6",
+   "fieldtype": "Section Break",
+   "label": "Qty and Rate"
+  },
+  {
+   "columns": 1,
+   "default": "1",
+   "fieldname": "qty",
+   "fieldtype": "Float",
+   "in_list_view": 1,
+   "label": "Qty",
+   "non_negative": 1
+  },
+  {
+   "columns": 1,
+   "fetch_from": "stock_item_code.stock_uom",
+   "fieldname": "uom",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "UOM",
+   "options": "UOM"
+  },
+  {
+   "fieldname": "column_break_9",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "rate",
+   "fieldtype": "Currency",
+   "in_list_view": 1,
+   "label": "Rate",
+   "options": "Company:company:default_currency"
+  },
+  {
+   "default": "0",
+   "fieldname": "amount",
+   "fieldtype": "Currency",
+   "in_list_view": 1,
+   "label": "Amount",
+   "options": "Company:company:default_currency",
+   "read_only": 1
+  },
+  {
+   "collapsible": 1,
+   "fieldname": "accounting_dimensions_section",
+   "fieldtype": "Section Break",
+   "label": "Accounting Dimensions"
+  },
+  {
+   "fieldname": "cost_center",
+   "fieldtype": "Link",
+   "label": "Cost Center",
+   "options": "Cost Center"
+  },
+  {
+   "fieldname": "dimension_col_break",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "project",
+   "fieldtype": "Link",
+   "label": "Project",
+   "options": "Project"
+  }
+ ],
+ "index_web_pages_for_search": 1,
+ "istable": 1,
+ "links": [],
+ "modified": "2021-09-06 14:06:34.768152",
+ "modified_by": "Administrator",
+ "module": "Assets",
+ "name": "Asset Capitalization Service Item",
+ "owner": "Administrator",
+ "permissions": [],
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1
+}
\ No newline at end of file
diff --git a/erpnext/assets/doctype/asset_capitalization_service_item/asset_capitalization_service_item.py b/erpnext/assets/doctype/asset_capitalization_service_item/asset_capitalization_service_item.py
new file mode 100644
index 0000000..fa15829
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization_service_item/asset_capitalization_service_item.py
@@ -0,0 +1,8 @@
+# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+# import frappe
+from frappe.model.document import Document
+
+class AssetCapitalizationServiceItem(Document):
+	pass
diff --git a/erpnext/assets/doctype/asset_capitalization_stock_item/__init__.py b/erpnext/assets/doctype/asset_capitalization_stock_item/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization_stock_item/__init__.py
diff --git a/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json b/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json
new file mode 100644
index 0000000..19c4558
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json
@@ -0,0 +1,137 @@
+{
+ "actions": [],
+ "creation": "2021-09-05 15:23:23.492310",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+  "item_code",
+  "item_name",
+  "column_break_3",
+  "warehouse",
+  "section_break_6",
+  "stock_qty",
+  "stock_uom",
+  "actual_qty",
+  "column_break_9",
+  "valuation_rate",
+  "amount",
+  "batch_and_serial_no_section",
+  "batch_no",
+  "column_break_13",
+  "serial_no"
+ ],
+ "fields": [
+  {
+   "fieldname": "column_break_3",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "warehouse",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Warehouse",
+   "options": "Warehouse",
+   "reqd": 1
+  },
+  {
+   "fieldname": "batch_no",
+   "fieldtype": "Link",
+   "label": "Batch No",
+   "options": "Batch"
+  },
+  {
+   "fieldname": "section_break_6",
+   "fieldtype": "Section Break",
+   "label": "Qty and Rate"
+  },
+  {
+   "columns": 1,
+   "fieldname": "stock_qty",
+   "fieldtype": "Float",
+   "in_list_view": 1,
+   "label": "Qty",
+   "non_negative": 1
+  },
+  {
+   "columns": 1,
+   "fetch_from": "stock_item_code.stock_uom",
+   "fieldname": "stock_uom",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Stock UOM",
+   "options": "UOM",
+   "read_only": 1,
+   "reqd": 1
+  },
+  {
+   "fieldname": "column_break_9",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "valuation_rate",
+   "fieldtype": "Currency",
+   "in_list_view": 1,
+   "label": "Valuation Rate",
+   "options": "Company:company:default_currency",
+   "read_only": 1
+  },
+  {
+   "default": "0",
+   "fieldname": "amount",
+   "fieldtype": "Currency",
+   "in_list_view": 1,
+   "label": "Amount",
+   "options": "Company:company:default_currency",
+   "read_only": 1
+  },
+  {
+   "fieldname": "batch_and_serial_no_section",
+   "fieldtype": "Section Break",
+   "label": "Batch and Serial No"
+  },
+  {
+   "fieldname": "column_break_13",
+   "fieldtype": "Column Break"
+  },
+  {
+   "fieldname": "serial_no",
+   "fieldtype": "Small Text",
+   "label": "Serial No"
+  },
+  {
+   "fieldname": "item_code",
+   "fieldtype": "Link",
+   "in_list_view": 1,
+   "label": "Item Code",
+   "options": "Item",
+   "reqd": 1
+  },
+  {
+   "fetch_from": "item_code.item_name",
+   "fieldname": "item_name",
+   "fieldtype": "Data",
+   "label": "Item Name",
+   "read_only": 1
+  },
+  {
+   "fieldname": "actual_qty",
+   "fieldtype": "Float",
+   "label": "Actual Qty in Warehouse",
+   "no_copy": 1,
+   "read_only": 1
+  }
+ ],
+ "index_web_pages_for_search": 1,
+ "istable": 1,
+ "links": [],
+ "modified": "2021-09-06 13:46:13.579140",
+ "modified_by": "Administrator",
+ "module": "Assets",
+ "name": "Asset Capitalization Stock Item",
+ "owner": "Administrator",
+ "permissions": [],
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1
+}
\ No newline at end of file
diff --git a/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.py b/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.py
new file mode 100644
index 0000000..4449538
--- /dev/null
+++ b/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.py
@@ -0,0 +1,8 @@
+# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+# import frappe
+from frappe.model.document import Document
+
+class AssetCapitalizationStockItem(Document):
+	pass
diff --git a/erpnext/assets/workspace/assets/assets.json b/erpnext/assets/workspace/assets/assets.json
index dfbf1a3..cf437a8 100644
--- a/erpnext/assets/workspace/assets/assets.json
+++ b/erpnext/assets/workspace/assets/assets.json
@@ -138,6 +138,17 @@
    "type": "Link"
   },
   {
+   "dependencies": "Asset",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Asset Capitalization",
+   "link_count": 0,
+   "link_to": "Asset Capitalization",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
    "hidden": 0,
    "is_query_report": 0,
    "label": "Reports",
@@ -179,7 +190,7 @@
    "type": "Link"
   }
  ],
- "modified": "2021-08-05 12:15:54.839452",
+ "modified": "2021-09-06 16:59:02.668813",
  "modified_by": "Administrator",
  "module": "Assets",
  "name": "Assets",
