diff --git a/erpnext/controllers/item_variant.py b/erpnext/controllers/item_variant.py
index 513b97f..8ca4f70 100644
--- a/erpnext/controllers/item_variant.py
+++ b/erpnext/controllers/item_variant.py
@@ -205,9 +205,10 @@
 
 	if item.variant_based_on=='Item Attribute':
 		if variant.attributes:
-			variant.description += "\n"
-			for d in variant.attributes:
-				variant.description += "<div>" + d.attribute + ": " + cstr(d.attribute_value) + "</div>"
+			if not variant.description:
+				variant.description += "\n"
+				for d in variant.attributes:
+					variant.description += "<div>" + d.attribute + ": " + cstr(d.attribute_value) + "</div>"
 
 def make_variant_item_code(template_item_code, template_item_name, variant):
 	"""Uses template's item code and abbreviations to make variant's item code"""
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 0b9e826..e7c0614 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -450,3 +450,4 @@
 erpnext.patches.v8_9.update_billing_gstin_for_indian_account
 erpnext.patches.v9_0.fix_subscription_next_date
 erpnext.patches.v9_0.add_healthcare_domain
+erpnext.patches.v9_0.set_variant_item_description
diff --git a/erpnext/patches/v9_0/set_variant_item_description.py b/erpnext/patches/v9_0/set_variant_item_description.py
new file mode 100644
index 0000000..8093b04
--- /dev/null
+++ b/erpnext/patches/v9_0/set_variant_item_description.py
@@ -0,0 +1,47 @@
+import frappe
+from frappe.utils import cstr
+
+def execute():
+	'''
+	Issue:
+		While copying data from template item to variant item,
+		the system appending description multiple times to the respective variant.
+
+	Purpose:
+		Check variant description,
+		if variant have user defined description remove all system appended descriptions
+		else replace multiple system generated descriptions with single description
+
+	Steps:
+		1. Get all variant items
+		2. Create system generated variant description
+		3. If variant have user defined description, remove all system generated descriptions
+		4. If variant description only contains system generated description,
+			replace multiple descriptions by new description.
+	'''
+	for item in frappe.db.sql(""" select name from tabItem
+		where ifnull(variant_of, '') != '' """,as_dict=1):
+			variant = frappe.get_doc("Item", item.name)
+			temp_variant_description = '\n'
+
+			if variant.attributes:
+				for d in variant.attributes:
+					temp_variant_description += "<div>" + d.attribute + ": " + cstr(d.attribute_value) + "</div>"
+					
+				variant_description = variant.description.replace(temp_variant_description, '').rstrip()
+				if variant_description:
+					splitted_desc = variant.description.strip().split(temp_variant_description)
+
+					if len(splitted_desc) > 2:
+						if splitted_desc[0] == '':
+							variant_description = temp_variant_description + variant_description
+						elif splitted_desc[1] == '' or splitted_desc[1] == '\n':
+							variant_description += temp_variant_description
+
+					variant.db_set('description', variant_description, update_modified=False)
+
+				else:
+					variant.db_set('description', temp_variant_description, update_modified=False)
+
+				variant.flags.ignore_permissions=True
+				variant.save()
\ No newline at end of file
