diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
index edf8ff3..486697b 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
@@ -696,12 +696,12 @@
                 .setModelCustomizationUUID(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID));
         configCustomizationResource.setModelInstanceName(nodeTemplate.getName());
 
-        configCustomizationResource.setNfFunction(toscaResourceStructure.getSdcCsarHelper()
-                .getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFFUNCTION));
-        configCustomizationResource.setNfRole(toscaResourceStructure.getSdcCsarHelper()
-                .getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFROLE));
-        configCustomizationResource.setNfType(toscaResourceStructure.getSdcCsarHelper()
-                .getNodeTemplatePropertyLeafValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_NFTYPE));
+        configCustomizationResource.setFunction(
+                toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, "function"));
+        configCustomizationResource.setRole(
+                toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, "role"));
+        configCustomizationResource.setType(
+                toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(nodeTemplate, "type"));
         configCustomizationResource
                 .setServiceProxyResourceCustomizationUUID(spResourceCustomization.getModelCustomizationUUID());
 
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ConfigurationResourceCustomization.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ConfigurationResourceCustomization.java
index 4599c97..278417c 100644
--- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ConfigurationResourceCustomization.java
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ConfigurationResourceCustomization.java
@@ -64,13 +64,13 @@
     private String modelInstanceName;
 
     @Column(name = "CONFIGURATION_FUNCTION")
-    private String nfFunction;
+    private String function;
 
     @Column(name = "CONFIGURATION_TYPE")
-    private String nfType;
+    private String type;
 
     @Column(name = "CONFIGURATION_ROLE")
-    private String nfRole;
+    private String role;
 
     @Column(name = "CREATION_TIMESTAMP", updatable = false)
     @Temporal(TemporalType.TIMESTAMP)
@@ -120,28 +120,28 @@
         this.modelInstanceName = modelInstanceName;
     }
 
-    public String getNfFunction() {
-        return nfFunction;
+    public String getFunction() {
+        return function;
     }
 
-    public void setNfFunction(String nfFunction) {
-        this.nfFunction = nfFunction;
+    public void setFunction(String function) {
+        this.function = function;
     }
 
-    public String getNfType() {
-        return nfType;
+    public String getType() {
+        return type;
     }
 
-    public void setNfType(String nfType) {
-        this.nfType = nfType;
+    public void setType(String type) {
+        this.type = type;
     }
 
-    public String getNfRole() {
-        return nfRole;
+    public String getRole() {
+        return role;
     }
 
-    public void setNfRole(String nfRole) {
-        this.nfRole = nfRole;
+    public void setRole(String role) {
+        this.role = role;
     }
 
     public Date getCreated() {
@@ -186,8 +186,8 @@
     @Override
     public String toString() {
         return new ToStringBuilder(this).append("id", id).append("modelCustomizationUUID", modelCustomizationUUID)
-                .append("modelInstanceName", modelInstanceName).append("nfFunction", nfFunction)
-                .append("nfType", nfType).append("nfRole", nfRole).append("created", created)
+                .append("modelInstanceName", modelInstanceName).append("function", function).append("type", type)
+                .append("role", role).append("created", created)
                 // .append("serviceProxyResourceCustomization", serviceProxyResourceCustomization)
                 .append("configResourceCustomization", configResourceCustomization)
                 .append("configurationResource", configurationResource).append("service", service).toString();
