Map<String, Object> category = (Map<String, Object>) entry.getValue();
             catName = (String) category.get("name");
             catDef.setName(catName);
+            catDef.setDisplayName((String) category.get("displayName"));
             icons = (List<String>) category.get("icons");
             catDef.setIcons(icons);
             String normalizedName = ValidationUtils.normalizeCategoryName4Uniqueness(catName);
 
 
 package org.openecomp.sdc.be.components.impl;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.when;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.datatypes.category.MetadataKeyDataDefinition;
 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
 import org.openecomp.sdc.be.impl.ComponentsUtils;
 import org.openecomp.sdc.be.model.category.CategoryDefinition;
 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
 import org.openecomp.sdc.exception.ResponseFormat;
 
-public class CategoriesImportManagerTest {
+class CategoriesImportManagerTest {
     @InjectMocks
     static CategoriesImportManager importManager = new CategoriesImportManager();
     public static final IElementOperation elementOperation = Mockito.mock(IElementOperation.class);
     public static final ComponentsUtils componentsUtils = Mockito.mock(ComponentsUtils.class);
     private static SubCategoryDefinition subcategory;
 
-    @BeforeClass
+    @BeforeAll
     public static void beforeClass() throws IOException {
         subcategory = new SubCategoryDefinition();
         subcategory.setUniqueId("123");
         // when(Mockito.any(SubCategoryDefinition.class).getUniqueId()).thenReturn("123");
     }
 
-    @Before
+    @BeforeEach
     public void initMocks() {
         MockitoAnnotations.openMocks(this);
     }
 
     @Test
-    public void importCategoriesTest() throws IOException {
+    void importCategoriesTest() throws IOException {
         String ymlContent = getYmlContent();
         Either<Map<String, List<CategoryDefinition>>, ResponseFormat> createCapabilityTypes = importManager.createCategories(ymlContent);
         
         assertFalse(categoryWithServiceSubstitutionFalse.get().isUseServiceSubstitutionForNestedServices());
     }
 
+    @Test
+    void categoriesNameAndDisplayNameTest() throws IOException {
+        final String categoryName = "Category With DisplayName And metadata";
+        final String expectedCategoryDisplayName = "Display Name For Category";
+        final String ymlContent = getYmlContent();
+        final Either<Map<String, List<CategoryDefinition>>, ResponseFormat> createCapabilityTypes = importManager.createCategories(ymlContent);
+        final Map<String, List<CategoryDefinition>> categories = createCapabilityTypes.left().value();
+
+        final Optional<CategoryDefinition> categoryWithNameAndDisplayName = categories.get("services").stream().filter(category -> category.getName().equals(categoryName)).findAny();
+        final String categoryDisplayName = categoryWithNameAndDisplayName.get().getDisplayName();
+
+        assertTrue(categoryWithNameAndDisplayName.isPresent());
+        assertEquals(expectedCategoryDisplayName, categoryDisplayName);
+    }
+
+    @Test
+    void getMetadataKeysTest() throws IOException {
+        final String categoryName = "Category With DisplayName And metadata";
+        final String expectedMetadataName = "ETSI Version";
+        final String expectedEtsiVersion = "2.5.1";
+        final String ymlContent = getYmlContent();
+        final Either<Map<String, List<CategoryDefinition>>, ResponseFormat> createCapabilityTypes = importManager.createCategories(ymlContent);
+        final Map<String, List<CategoryDefinition>> categories = createCapabilityTypes.left().value();
+
+        final Optional<CategoryDefinition> categoryWithMetadata = categories.get("services").stream().filter(category -> category.getName().equals(categoryName)).findAny();
+        final List<MetadataKeyDataDefinition> categoryMetadataList = categoryWithMetadata.get().getMetadataKeys();
+        final MetadataKeyDataDefinition categoryMetadata = categoryMetadataList.get(0);
+
+        assertEquals(expectedMetadataName, categoryMetadata.getName());
+        assertEquals(expectedEtsiVersion, categoryMetadata.getValidValues().get(0));
+        assertEquals(expectedEtsiVersion, categoryMetadata.getDefaultValue());
+        assertTrue(categoryMetadata.isMandatory());
+    }
+
     private String getYmlContent() throws IOException {
         Path filePath = Paths.get("src/test/resources/types/categoryTypes.yml");
         byte[] fileContent = Files.readAllBytes(filePath);
 
       name: "Category With Service Substitution False"
       icons: ['network_l_4']
       useServiceSubstitutionForNestedServices: false
+    Category_With_DisplayName_And_metadata:
+      name: "Category With DisplayName And metadata"
+      displayName: "Display Name For Category"
+      icons: [ 'etsi_nfv_network_service' ]
+      metadataKeys:
+        etsiVersion:
+          name: "ETSI Version"
+          validValues: [ '2.5.1' ]
+          default: '2.5.1'
+          mandatory: true
 resources:
   NetworkLayer23:
     name: "Network Layer 2-3"
 
     HEALTH_CHECK               ("healthcheckis",                       String.class,                           true,           true),
     // Resource
     NAME                               ("name",                                        String.class,                           false,          true),
+    DISPLAY_NAME        ("displayName",            String.class,               false,       true),
     TOSCA_RESOURCE_NAME        ("toscaResourceName",           String.class,                           false,          true),
     CATEGORY_NAME              ("categoryName",                        String.class,                           false,          true),
     VERSION                            ("version",                                     String.class,                           false,          true),
 
         this(NodeTypeEnum.getByName((String) properties.get(GraphPropertiesDictionary.LABEL.getProperty())));
         categoryDataDefinition.setUniqueId((String) properties.get(GraphPropertiesDictionary.UNIQUE_ID.getProperty()));
         categoryDataDefinition.setNormalizedName((String) properties.get(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty()));
+        categoryDataDefinition.setDisplayName((String) properties.get(GraphPropertiesDictionary.DISPLAY_NAME.getProperty()));
         categoryDataDefinition.setName((String) properties.get(GraphPropertiesDictionary.NAME.getProperty()));
         final Object useServiceSubstitutionForNestedServicesProperty = properties
             .get(GraphPropertiesDictionary.USE_SERVICE_SUBSTITUTION_FOR_NESTED_SERVICES.getProperty());
         Map<String, Object> map = new HashMap<>();
         addIfExists(map, GraphPropertiesDictionary.UNIQUE_ID, categoryDataDefinition.getUniqueId());
         addIfExists(map, GraphPropertiesDictionary.NAME, categoryDataDefinition.getName());
+        addIfExists(map, GraphPropertiesDictionary.DISPLAY_NAME, categoryDataDefinition.getDisplayName());
         addIfExists(map, GraphPropertiesDictionary.NORMALIZED_NAME, categoryDataDefinition.getNormalizedName());
         addIfExists(map, GraphPropertiesDictionary.MODEL, categoryDataDefinition.getModels());
         addIfExists(map, GraphPropertiesDictionary.ICONS, categoryDataDefinition.getIcons());
 
 export interface ICategoryBase {
     //server properties
     name:string;
+    displayName:string;
     normalizedName:string;
     uniqueId:string;
     models:Array<string>;
 
             }
         };
 
+        this.$scope.getCategoryDisplayNameOrName = (mainCategory: any): string => {
+            return mainCategory.displayName ? mainCategory.displayName : mainCategory.name ;
+        }
+
         this.$scope.onBaseTypeChange = (): void => {
             if (!this.$scope.component.derivedFromGenericType) {
                 this.$scope.component.derivedFromGenericVersion = undefined;
 
                                     <option ng-if="component.isService()" data-ng-repeat="mainCategory in categories | orderBy:['name']"
                                             data-ng-selected="component.selectedCategory===mainCategory.name"
                                             value="{{mainCategory.name}}"
-                                            data-tests-id="{{mainCategory.name}}">{{mainCategory.name}}</option>
+                                            data-tests-id="{{mainCategory.name}}">{{getCategoryDisplayNameOrName(mainCategory)}}</option>
                                 </select>
 
                                 <div class="input-error" data-ng-show="validateField(editForm.category)">
 
 public class CategoryDataDefinition extends ToscaDataDefinition {
 
     private String name;
+    private String displayName;
     private String normalizedName;
     private List<String> models;
     private String uniqueId;
 
     public CategoryDataDefinition(CategoryDataDefinition c) {
         this.name = c.name;
+        this.displayName = c.displayName;
         this.normalizedName = c.normalizedName;
         this.models = c.models;
         this.uniqueId = c.uniqueId;
 
 
 package org.openecomp.sdc.be.datatypes.category;
 
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.jupiter.api.Test;
 
 
+class CategoryDataDefinitionTest {
 
-public class CategoryDataDefinitionTest {
-
-       private CategoryDataDefinition createTestSubject() {
-               return new CategoryDataDefinition();
-       }
-       
        @Test
-       public void testCopyConstructor() throws Exception {
-               CategoryDataDefinition testSubject;
+       void testCategoryDataDefinition() {
+               CategoryDataDefinition categoryDataDefinitionForTest = new CategoryDataDefinition();
+               categoryDataDefinitionForTest.setName("Category name");
+               categoryDataDefinitionForTest.setDisplayName("Category displayName");
+               categoryDataDefinitionForTest.setNormalizedName("Category normalizedName");
+               List modelsList = new ArrayList();
+               modelsList.add("Category models list item");
+               categoryDataDefinitionForTest.setModels(modelsList);
+               categoryDataDefinitionForTest.setUniqueId("Category uniqueId");
+               List iconList = new ArrayList();
+               iconList.add("Category icon list item");
+               categoryDataDefinitionForTest.setIcons(iconList);
+               categoryDataDefinitionForTest.setUseServiceSubstitutionForNestedServices(true);
+               List metadataKeysList = new ArrayList();
+               metadataKeysList.add("Category metadataKeys list item");
+               categoryDataDefinitionForTest.setMetadataKeys(metadataKeysList);
+
+               CategoryDataDefinition categoryDataDefinitionActual = new CategoryDataDefinition(categoryDataDefinitionForTest);
 
-               // default test
-               testSubject = createTestSubject();
-               CategoryDataDefinition categoryDataDefinition = new CategoryDataDefinition(testSubject);
+               assertEquals(categoryDataDefinitionForTest.getName(), categoryDataDefinitionActual.getName());
+               assertEquals(categoryDataDefinitionForTest.getDisplayName(), categoryDataDefinitionActual.getDisplayName());
+               assertEquals(categoryDataDefinitionForTest.getNormalizedName(), categoryDataDefinitionActual.getNormalizedName());
+               assertEquals(categoryDataDefinitionForTest.getModels(), categoryDataDefinitionActual.getModels());
+               assertEquals(categoryDataDefinitionForTest.getUniqueId(), categoryDataDefinitionActual.getUniqueId());
+               assertEquals(categoryDataDefinitionForTest.getIcons(), categoryDataDefinitionActual.getIcons());
+               assertEquals(categoryDataDefinitionForTest.isUseServiceSubstitutionForNestedServices(), categoryDataDefinitionActual.isUseServiceSubstitutionForNestedServices());
+               assertEquals(categoryDataDefinitionForTest.getMetadataKeys(), categoryDataDefinitionActual.getMetadataKeys());
        }
-       
 }