diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/externalapi/servlet/AssetsDataServlet.java b/catalog-be/src/main/java/org/openecomp/sdc/be/externalapi/servlet/AssetsDataServlet.java
index 6e971f2..b995606 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/externalapi/servlet/AssetsDataServlet.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/externalapi/servlet/AssetsDataServlet.java
@@ -243,8 +243,13 @@
 		ComponentTypeEnum componentType = ComponentTypeEnum.findByParamName(assetType);
 		additionalParam.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, instanceIdHeader);
 		additionalParam.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_RESOURCE_URL, requestURI);
-		additionalParam.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, componentType.getValue());
 		additionalParam.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, uuid);
+		if (componentType == null) {
+			log.debug("getMetaData: assetType parameter {} is not valid", assetType);
+			responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT);
+			return buildErrorResponse(responseFormat);
+		}
+		additionalParam.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, componentType.getValue());
 
 		// Mandatory
 		if (instanceIdHeader == null || instanceIdHeader.isEmpty()) {
@@ -331,8 +336,15 @@
 		EnumMap<AuditingFieldsKeysEnum, Object> additionalParam = new EnumMap<AuditingFieldsKeysEnum, Object>(AuditingFieldsKeysEnum.class);
 		additionalParam.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, instanceIdHeader);
 		additionalParam.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_RESOURCE_URL, url);
-		additionalParam.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, componentType.getValue());
 		additionalParam.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, uuid);
+		
+		if (componentType == null) {
+			log.debug("getToscaModel: assetType parameter {} is not valid", assetType);
+			responseFormat = getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT);
+			return buildErrorResponse(responseFormat);
+		}
+		additionalParam.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, componentType.getValue());
+
 
 		if (instanceIdHeader == null || instanceIdHeader.isEmpty()) {
 			log.debug("getToscaModel: Missing X-ECOMP-InstanceID header");
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java
index 68adbd5..22f6730 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/PropertyConvertor.java
@@ -20,11 +20,11 @@
 
 package org.openecomp.sdc.be.tosca;
 
-import com.google.gson.Gson;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParser;
-import com.google.gson.stream.JsonReader;
-import fj.data.Either;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.commons.lang3.StringUtils;
 import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition;
 import org.openecomp.sdc.be.model.Component;
@@ -41,10 +41,12 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.StringReader;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParser;
+import com.google.gson.stream.JsonReader;
+
+import fj.data.Either;
 
 public class PropertyConvertor {
 	private static PropertyConvertor instance;
@@ -72,12 +74,8 @@
 
 				// take only the properties of this resource
 				props.stream().filter(p -> p.getOwnerId() == null || p.getOwnerId().equals(component.getUniqueId())).forEach(property -> {
-					ToscaProperty prop = convertProperty(dataTypes, property, false);
-
-					if (prop != null) {
-					    properties.put(property.getName(), prop);
-                    }
-				});
+                    properties.put(property.getName(), convertProperty(dataTypes, property, false));
+ 				});
 				if (!properties.isEmpty()) {
 					toscaNodeType.setProperties(properties);
 				}
@@ -99,10 +97,9 @@
 			prop.setEntry_schema(eschema);
 		}
 		log.trace("try to convert property {} from type {} with default value [{}]", property.getName(), property.getType(), property.getDefaultValue());
-		prop.setDefaultp(convertToToscaObject(property.getType(), property.getDefaultValue(), innerType, dataTypes));
-		
-		if (prop.getDefaultp() == null) {
-		    return null;
+        Object convertedObj = convertToToscaObject(property.getType(), property.getDefaultValue(), innerType, dataTypes);
+        if (convertedObj != null) {
+            prop.setDefaultp(convertedObj);
         }
 		prop.setType(property.getType());
         prop.setDescription(property.getDescription());
@@ -111,6 +108,7 @@
             prop.setRequired(property.isRequired());
         }
         return prop;
+
 	}
 
 	public Object convertToToscaObject(String propertyType, String value, String innerType, Map<String, DataTypeDefinition> dataTypes) {
@@ -120,7 +118,6 @@
 			if(StringUtils.isEmpty(value)){
 				return null;
 			}
-
 		}
 		try {
 			ToscaMapValueConverter mapConverterInst = ToscaMapValueConverter.getInstance();
diff --git a/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.json b/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.json
new file mode 100644
index 0000000..143f623
--- /dev/null
+++ b/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.json
@@ -0,0 +1,20 @@
+{
+  "payloadName": "allottedResource.yml",
+  "contactId": "jh0003",
+  "name": "AllottedResource",
+  "description": "Allotted Resource base type all other allotted resources node types derive from",
+  "resourceIconPath": "defaulticon",
+  "categories": [
+  {
+    "name": "Allotted Resource",
+    "subcategories": [
+      {
+        "name": "Allotted Resource"
+      }
+    ]
+  }
+],
+  "tags": [
+    "AllottedResource"
+  ]
+}
\ No newline at end of file
diff --git a/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.yml b/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.yml
new file mode 100644
index 0000000..00d3bd2
--- /dev/null
+++ b/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.yml
@@ -0,0 +1,38 @@
+tosca_definitions_version: tosca_simple_yaml_1_0_0
+node_types:
+  org.openecomp.resource.vfc.AllottedResource:
+    derived_from: tosca.nodes.Root
+    description: ECOMP Allotted Resource base type all other allotted resources node types derive from
+    properties:
+      providing_service_uuid:
+        type: string
+        required: true
+        description: The depending service uuid in order to map the allotted resource to the specific service version
+      providing_service_invariant_uuid:
+        type: string
+        required: true
+        description: The depending service invariant uuid in order to map the allotted resource to the specific service version
+      providing_service_name:
+        type: string
+        required: true
+        description: The depending service name in order to map the allotted resource to the specific service version
+      role:
+        type: string
+        required: true
+        description: Unique label that defines the role that this allotted resource performs
+      min_instances:
+        type: integer
+        default: 1
+      max_instances:
+        type: integer
+        default: 1
+      target_network_role:
+        type: string
+        required: true
+        description: Target network role
+    requirements:
+    - service_dependency:
+        capability: org.openecomp.capabilities.AllottedResource
+        relationship: tosca.relationships.DependsOn
+        node: tosca.services.Root
+
diff --git a/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.zip b/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.zip
new file mode 100644
index 0000000..fd3f7e9
--- /dev/null
+++ b/catalog-be/src/main/resources/import/tosca/normative-types/allottedResource/allottedResource.zip
Binary files differ
diff --git a/catalog-be/src/main/resources/scripts/import/tosca/importNormativeTypes.py b/catalog-be/src/main/resources/scripts/import/tosca/importNormativeTypes.py
index d47c0b8..1f52385 100644
--- a/catalog-be/src/main/resources/scripts/import/tosca/importNormativeTypes.py
+++ b/catalog-be/src/main/resources/scripts/import/tosca/importNormativeTypes.py
@@ -84,7 +84,7 @@
 
 def importNormativeTypes(beHost, bePort, adminUser, fileDir, updateversion):
 	
-	normativeTypes = [ "root", "compute", "softwareComponent", "webServer", "webApplication", "DBMS", "database", "objectStorage", "blockStorage", "containerRuntime", "containerApplication", "loadBalancer", "port", "network"]
+	normativeTypes = [ "root", "compute", "softwareComponent", "webServer", "webApplication", "DBMS", "database", "objectStorage", "blockStorage", "containerRuntime", "containerApplication", "loadBalancer", "port", "network", "allottedResource"]
 	#normativeTypes = [ "root" ]
 	responseCodes = [200, 201]
 	
diff --git a/catalog-be/src/main/resources/scripts/import/tosca/importOnapTypes.py b/catalog-be/src/main/resources/scripts/import/tosca/importOnapTypes.py
index 664c5cc..18d2270 100644
--- a/catalog-be/src/main/resources/scripts/import/tosca/importOnapTypes.py
+++ b/catalog-be/src/main/resources/scripts/import/tosca/importOnapTypes.py
@@ -26,12 +26,12 @@
 	              "extZteCP",
 	              "extZteVDU",
 	              "extZteVL",
+	              "NSD",
+				  "VDU",
 	              "vduCompute",
 				  "vduCpd",
 				  "vduVirtualStorage",
-				  "vnfVirtualLinkDesc",
-				  "NSD",
-				  "VDU"
+				  "vnfVirtualLinkDesc"
 				  ]
 		
 	responseCodes = [200, 201]
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/PropertyConvertorTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/PropertyConvertorTest.java
index a987e02..c77c0f1 100644
--- a/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/PropertyConvertorTest.java
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/tosca/PropertyConvertorTest.java
@@ -7,6 +7,7 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -37,7 +38,9 @@
 
     @Test
     public void convertPropertyWhenValueAndDefaultNull() {
-        assertNull(PropertyConvertor.getInstance().convertProperty(dataTypes, property, false));
+        ToscaProperty prop = PropertyConvertor.getInstance().convertProperty(dataTypes, property, false);
+        assertNotNull(prop);
+        assertNull(prop.getDefaultp());
     }
 
     @Test
@@ -63,7 +66,15 @@
         resource.setProperties(properties);
         Either<ToscaNodeType, ToscaError> result = PropertyConvertor.getInstance().convertProperties(resource, new ToscaNodeType(), dataTypes);
         assertTrue(result.isLeft());
-        assertEquals(1, result.left().value().getProperties().size());
+        assertEquals(2, result.left().value().getProperties().size());
+        int cnt = 0;
+        for (Iterator<ToscaProperty> it = result.left().value().getProperties().values().iterator(); it.hasNext(); ) {
+            ToscaProperty prop = it.next();
+            if (prop.getDefaultp() == null) {
+                cnt++;
+            }
+        }
+        assertEquals(1, cnt);
     }
 
     @Test
@@ -82,6 +93,10 @@
         Either<ToscaNodeType, ToscaError> result = PropertyConvertor.getInstance().convertProperties(resource, new ToscaNodeType(), dataTypes);
         assertTrue(result.isLeft());
         assertEquals(2, result.left().value().getProperties().size());
+        for (Iterator<ToscaProperty> it = result.left().value().getProperties().values().iterator(); it.hasNext(); ) {
+            ToscaProperty prop = it.next();
+            assertNotNull(prop.getDefaultp());
+        }
     }
 
     @Test
@@ -97,6 +112,10 @@
         resource.setProperties(properties);
         Either<ToscaNodeType, ToscaError> result = PropertyConvertor.getInstance().convertProperties(resource, new ToscaNodeType(), dataTypes);
         assertTrue(result.isLeft());
-        assertNull(result.left().value().getProperties());
-    }
-}
\ No newline at end of file
+        assertEquals(2, result.left().value().getProperties().size());
+        for (Iterator<ToscaProperty> it = result.left().value().getProperties().values().iterator(); it.hasNext(); ) {
+            ToscaProperty prop = it.next();
+            assertNull(prop.getDefaultp());
+        }
+     }
+}
diff --git a/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp-heat/data.yml b/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp-heat/data.yml
index f320a98..c9dda19 100644
--- a/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp-heat/data.yml
+++ b/common/openecomp-tosca-datatype/src/main/resources/globalTypes/openecomp-heat/data.yml
@@ -562,6 +562,12 @@
         type: string
         status: SUPPORTED
         required: false
+      subnet_id:
+        type: string
+        description: Subnet in which to allocate the IP address for this port
+        required: false
+        status: SUPPORTED
+
 
   org.openecomp.datatypes.heat.contrailV2.virtual.machine.interface.Properties:
     derived_from: tosca.datatypes.Root
diff --git a/docs/configuration.rst b/docs/configuration.rst
index 085f9c6..281f07d 100644
--- a/docs/configuration.rst
+++ b/docs/configuration.rst
@@ -1,27 +1,1179 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. http://creativecommons.org/licenses/by/4.0
 
+=============
 Configuration
 =============
 
-.. note::
-   * This section is used to describe the options a software component offers for configuration.
+.. contents::
+   :depth: 3
+..
 
-   * Configuration is typically: provided for platform-component and sdk projects;
-     and referenced in developer and user guides.
-   
-   * This note must be removed after content has been added.
+Global Configuration
+====================
+
+environment.json
+----------------
+
+::
+
+    {
+        # Environment name
+        "name": "xxx",
+        
+        # Environment description
+        "description": "OpenSource-xxx",
+        
+        # Chef properties
+        "cookbook_versions": {
+            "Deploy-SDandC": "= 1.0.0"
+        },
+        "json_class": "Chef::Environment",
+        "chef_type": "environment",
+        
+        "default_attributes": {
+        
+            # IPs used for docker configuration
+            "CS_VIP": "yyy",
+            "BE_VIP": "yyy",
+            "FE_VIP": "yyy",
+            "ES_VIP": "yyy",
+            "interfaces": {
+                "application": "eth0",
+                "private": "eth1"
+            },
+            
+            # Configuration parameters used in portal properties 
+            "ECompP": {
+                "ecomp_rest_url": "http://portal.api.simpledemo.onap.org:8989/ONAPPORTAL/auxapi",
+                "ueb_url_list": "10.0.11.1,10.0.11.1",
+                "app_secret": "XftIATw9Jr3VzAcPqt3NnJOu",
+                "app_key": "x9UfO7JsDn8BESVX",
+                "inbox_name": "ECOMP-PORTAL-INBOX",
+                "ecomp_redirect_url": "http://portal.api.simpledemo.openecomp.org:8989/ECOMPPORTAL/login.htm",
+                "app_topic_name": "ECOMP-PORTAL-OUTBOX-SDC1",
+                "decryption_key": "AGLDdG4D04BKm2IxIWEr8o=="
+            },
+            
+            # Configuration parameters used by SDC to work with Dmaap
+            "UEB": {
+                "PublicKey": "iPIxkpAMI8qTcQj8",
+                "SecretKey": "Ehq3WyT4bkif4zwgEbvshGal",
+                "fqdn": ["10.0.11.1", "10.0.11.1"]
+            },
+            
+            # IPs used for docker configuration
+            "Nodes": {
+                "CS": "yyy",
+                "BE": "yyy",
+                "FE": "yyy",
+                "ES": "yyy"
+            }
+        },
+        "override_attributes": {
+             
+            # FE and BE listening ports
+            "FE": {
+                "http_port": "8181",
+                "https_port": "9443"
+            },
+            "BE": {
+                "http_port": "8080",
+                "https_port": "8443"
+            },
+            
+            # Elasticsearch configuration
+            "elasticsearch": {
+                "cluster_name": "SDC-ES-",
+                "ES_path_home": "/usr/share/elasticsearch",
+                "ES_path_data": "/usr/share/elasticsearch/data",
+                "num_of_replicas": "0",
+                "num_of_shards": "1"
+            },
+            
+            # Cassandra configuration
+            "cassandra": {
+                "concurrent_reads": "32",
+                "num_tokens": "256",
+                "data_dir": "/var/lib/cassandra/data",
+                "hinted_handoff_enabled": "true",
+                "cassandra_user": "asdc_user",
+                "cassandra_password": "Aa1234%^!",
+                "concurrent_writes": "32",
+                "cluster_name": "SDC-CS-",
+                "multithreaded_compaction": "false",
+                "cache_dir": "/var/lib/cassandra/saved_caches",
+                "log_file": "/var/lib/cassandra/log/system.log",
+                "phi_convict_threshold": "8",
+                "commitlog_dir": "/var/lib/cassandra/commitlog"
+            }
+        }
+    }
+
+Backend Configurations
+======================
+
+BE-configuration.yaml
+---------------------
+
+::
+
+    # Request headers for identification of the user that made the request
+    identificationHeaderFields:
+    - HTTP_IV_USER
+    - HTTP_CSP_FIRSTNAME
+    - HTTP_CSP_LASTNAME
+    - HTTP_IV_REMOTE_ADDRESS
+    - HTTP_CSP_WSTYPE
+    
+    # Catalog backend hostname
+    beFqdn: <%= @host_ip %>
+    
+    # Catalog backend http port
+    beHttpPort: <%= @catalog_port %>
+    
+    # Catalog backend http context
+    beContext: /sdc/rest/config/get
+    
+    # Catalog backend protocol
+    beProtocol: http
+    
+    # Catalog backend ssl port
+    beSslPort: <%= @ssl_port %>
+    
+    # Catalog backend configuration vesrion
+    version: 1.0
+    
+    # Catalog backend configuration release date
+    released: 2012-11-30
+    
+    # Catalog tosca current conformance version
+    toscaConformanceLevel: 4.0
+    
+    # Catalog minimum tosca conformance version
+    minToscaConformanceLevel: 3.0
+    
+    # Titan configuration file location
+    titanCfgFile: /var/lib/jetty/config/catalog-be/titan.properties
+    
+    # Does titan holds the persistency data in memory
+    titanInMemoryGraph: false
+    
+    # The timeout for titan to lock on an object in a transaction
+    titanLockTimeout: 1800
+    
+    # The interval to try and reconnect to titan DB when it is down during SDC startup
+    titanReconnectIntervalInSeconds: 3
+    
+    # The read timeout towards Titan DB when health check is invoked
+    titanHealthCheckReadTimeout: 1
+    
+    # The interval to try and reconnect to Elasticsearch when it is down during SDC startup
+    esReconnectIntervalInSeconds: 3
+    
+    # The interval to try and reconnect to UEB health check when it is down during SDC startup
+    uebHealthCheckReconnectIntervalInSeconds: 15
+    
+    # The read timeout towards UEB when helath check is invoked
+    uebHealthCheckReadTimeout: 4
+    
+    # Protocols being used in SDC
+    protocols:
+        - http
+        - https
+    
+    # Default imports
+    # Under each import there is the file the data will be imported from
+    defaultImports:
+        - nodes:
+            file: nodes.yml
+        - datatypes:
+            file: data.yml
+        - capabilities:
+            file: capabilities.yml
+        - relationships:
+            file: relationships.yml
+        - groups:
+            file: groups.yml
+        - policies:
+            file: policies.yml
+    
+    # Users
+    # Deprecated. Will be removed in future releases
+    users:
+        tom: passwd
+        bob: passwd
+    
+    cassandraConfig:
+        # Cassandra hostname
+        cassandraHosts: <%= @cassandra_ip %>
+        
+        # Cassandra local data center name
+        localDataCenter: <%= @DC_NAME %>
+        
+        # The read timeout towards Cassandra when health check is invoked
+        reconnectTimeout : 30000
+        
+        # Should an authentication be used when accessing Cassandra
+        authenticate: true
+        
+        # Username for accessing Cassandra
+        username: asdc_user
+        
+        # Password for accessing Cassnadra
+        password: {{cassandra_password}}
+        
+        # Does an ssl should be used
+        ssl: false
+        
+        # Location of .truststore file
+        truststorePath : /config/.truststore
+        
+        # The .truststore file password
+        truststorePassword : Aa123456
+        
+        # Keyspaces configuration for Cassandra
+        keySpaces:
+            - { name: dox, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
+            - { name: sdcaudit, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
+            - { name: sdcartifact, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
+            - { name: sdccomponent, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
+            - { name: sdcrepository, replicationStrategy: NetworkTopologyStrategy, replicationInfo: ['<%= @DC_NAME %>','<%= @rep_factor %>']}
+    
+    # Application-specific settings of ES
+    elasticSearch:
+        
+        # Mapping of index prefix to time-based frame. For example, if below is configured:
+        #
+        # - indexPrefix: auditingevents
+        #    creationPeriod: minute
+        #
+        # then ES object of type which is mapped to "auditingevents-*" template, and created on 2015-12-23 13:24:54, will enter "auditingevents-2015-12-23-13-24" index.
+        # Another object created on 2015-12-23 13:25:54, will enter "auditingevents-2015-12-23-13-25" index.
+        # If creationPeriod: month, both of the above will enter "auditingevents-2015-12" index.
+        #
+        # PLEASE NOTE: the timestamps are created in UTC/GMT timezone! This is needed so that timestamps will be correctly presented in Kibana.
+        #
+        # Legal values for creationPeriod - year, month, day, hour, minute, none (meaning no time-based behaviour).
+        #
+        # If no creationPeriod is configured for indexPrefix, default behavour is creationPeriod: month.
+        indicesTimeFrequency:
+            - indexPrefix: auditingevents
+              creationPeriod: month
+            - indexPrefix: monitoring_events
+              creationPeriod: month
+    
+    # Artifact types placeholder
+    artifactTypes:
+        - CHEF
+        - PUPPET
+        - SHELL
+        - YANG
+        - YANG_XML
+        - HEAT
+        - BPEL
+        - DG_XML
+        - MURANO_PKG
+        - WORKFLOW
+        - NETWORK_CALL_FLOW
+        - TOSCA_TEMPLATE
+        - TOSCA_CSAR
+        - AAI_SERVICE_MODEL
+        - AAI_VF_MODEL
+        - AAI_VF_MODULE_MODEL
+        - AAI_VF_INSTANCE_MODEL
+        - OTHER
+        - SNMP_POLL
+        - SNMP_TRAP
+        - GUIDE
+        - PLAN
+    
+    # License types placeholder
+    licenseTypes:
+        - User
+        - Installation
+        - CPU
+    
+    # Resource types placeholder
+    resourceTypes: &allResourceTypes
+        - VFC
+        - CP
+        - VL
+        - VF
+        - VFCMT
+        - Abstract
+        - CVFC
+    
+    #Deployment resource artifacts placeHolder
+    deploymentResourceArtifacts:
+    
+    # Deployment resource instance artifacts placeholders
+    # For each artifact the following properties exists:
+    # 
+    # displayName - The display name of the artifact
+    # type - The type of the artifact
+    # description - The description of the artifact
+    # fileExtension - The file extension of the artifact file for uploading
+    deploymentResourceInstanceArtifacts:
+        heatEnv:
+            displayName: "HEAT ENV"
+            type: HEAT_ENV
+            description: "Auto-generated HEAT Environment deployment artifact"
+            fileExtension: "env"
+        VfHeatEnv:
+            displayName: "VF HEAT ENV"
+            type: HEAT_ENV
+            description: "VF Auto-generated HEAT Environment deployment artifact"
+            fileExtension: "env"
+    
+    # Tosca artifacts placeholders
+    # For each artifact there is a template and a scar.
+    # For each one the following properties exists:
+    # 
+    # artifactName - The suffix of the artifact file
+    # displayName - The display name of the artifact
+    # type - The type of the artifact
+    # description - The description of the artifact
+    toscaArtifacts:
+        assetToscaTemplate:
+            artifactName: -template.yml
+            displayName: Tosca Template
+            type: TOSCA_TEMPLATE
+            description: TOSCA representation of the asset
+        assetToscaCsar:
+            artifactName: -csar.csar
+            displayName: Tosca Model
+            type: TOSCA_CSAR
+            description: TOSCA definition package of the asset
+    
+    # Resource category to exclude
+    excludeResourceCategory:
+        - Generic
+    
+    # Resource type to exclude
+    excludeResourceType:
+        - PNF
+    
+    # Informational resource artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # displayName - The display name of the artifact
+    # type - The type of the artifact
+    informationalResourceArtifacts:
+        features:
+            displayName: Features
+            type: OTHER
+    capacity:
+        displayName: Capacity
+        type: OTHER
+    vendorTestResult:
+        displayName: Vendor Test Result
+        type: OTHER
+    testScripts:
+        displayName: Test Scripts
+        type: OTHER
+    CloudQuestionnaire:
+        displayName: Cloud Questionnaire (completed)
+        type: OTHER
+    HEATTemplateFromVendor:
+        displayName: HEAT Template from Vendor
+        type: HEAT
+    resourceSecurityTemplate:
+        displayName: Resource Security Template
+        type: OTHER
+    
+    # Service category to exclude
+    excludeServiceCategory:
+    
+    # Informational service artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # displayName - The display name of the artifact
+    # type - The type of the artifact
+    informationalServiceArtifacts:
+        serviceArtifactPlan:
+            displayName: Service Artifact Plan
+            type: OTHER
+        summaryOfImpactsToECOMPElements:
+            displayName: Summary of impacts to ECOMP elements,OSSs, BSSs
+            type: OTHER
+        controlLoopFunctions:
+            displayName: Control Loop Functions
+            type: OTHER
+        dimensioningInfo:
+            displayName: Dimensioning Info
+            type: OTHER
+        affinityRules:
+            displayName: Affinity Rules
+            type: OTHER
+        operationalPolicies:
+            displayName: Operational Policies
+            type: OTHER
+        serviceSpecificPolicies:
+            displayName: Service-specific Policies
+            type: OTHER
+        engineeringRules:
+            displayName: Engineering Rules (ERD)
+            type: OTHER
+        distributionInstructions:
+            displayName: Distribution Instructions
+            type: OTHER
+        certificationTestResults:
+            displayName: TD Certification Test Results
+            type: OTHER
+        deploymentVotingRecord:
+            displayName: Deployment Voting Record
+            type: OTHER
+        serviceQuestionnaire:
+            displayName: Service Questionnaire
+            type: OTHER
+        serviceSecurityTemplate:
+            displayName: Service Security Template
+            type: OTHER
+    
+    # Service api artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # displayName - The display name of the artifact
+    # type - The type of the artifact
+    serviceApiArtifacts:
+        configuration:
+            displayName: Configuration
+            type: OTHER
+        instantiation:
+            displayName: Instantiation
+            type: OTHER
+        monitoring:
+            displayName: Monitoring
+            type: OTHER
+        reporting:
+            displayName: Reporting
+            type: OTHER
+        logging:
+            displayName: Logging
+            type: OTHER
+        testing:
+            displayName: Testing
+            type: OTHER
+    
+    # The maximum number of keys permited for additional information on service
+    additionalInformationMaxNumberOfKeys: 50
+    
+    # Collect process statistics
+    systemMonitoring:
+        
+        # Should monitoring be enabled
+        enabled: false
+        
+        # In case of going through the FE server proxy the information to the BE
+        isProxy: false
+        
+        # What is the interval of the statistics collection
+        probeIntervalInSeconds: 15
+    
+    defaultHeatArtifactTimeoutMinutes: 60
+    
+    # Service deployment artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # acceptedTypes - File types that can be uploaded as each artifact
+    serviceDeploymentArtifacts:
+        YANG_XML:
+            acceptedTypes:
+                - xml
+        VNF_CATALOG:
+            acceptedTypes:
+                - xml
+        MODEL_INVENTORY_PROFILE:
+            acceptedTypes:
+                - xml
+        MODEL_QUERY_SPEC:
+            acceptedTypes:
+                - xml
+        UCPE_LAYER_2_CONFIGURATION:
+            acceptedTypes:
+                - xml
+    
+    #AAI Artifacts
+        AAI_SERVICE_MODEL:
+            acceptedTypes:
+                - xml
+        AAI_VF_MODULE_MODEL:
+            acceptedTypes:
+                - xml
+        AAI_VF_INSTANCE_MODEL:
+            acceptedTypes:
+                - xml
+        OTHER:
+            acceptedTypes:
+    
+    #PLAN
+        PLAN:
+            acceptedTypes:
+                - xml
+    
+    # Resource deployment artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # acceptedTypes - File types that can be uploaded as each artifact
+    # validForRespurceTypes - Resource types that support each artifact. 
+    # If left empty it means all resource types are valid
+    resourceDeploymentArtifacts:
+        HEAT:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes: *allResourceTypes
+        HEAT_VOL:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes: *allResourceTypes
+        HEAT_NET:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes: *allResourceTypes
+        HEAT_NESTED:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes: *allResourceTypes
+        HEAT_ARTIFACT:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        YANG_XML:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        VNF_CATALOG:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        VF_LICENSE:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        VENDOR_LICENSE:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        MODEL_INVENTORY_PROFILE:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        MODEL_QUERY_SPEC:
+            acceptedTypes:
+                - xml
+            validForResourceTypes: *allResourceTypes
+        LIFECYCLE_OPERATIONS:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes:
+                - VF
+                - VFC
+        VES_EVENTS:
+            acceptedTypes:
+                - yaml
+                - yml
+            validForResourceTypes: *allResourceTypes
+        PERFORMANCE_COUNTER:
+            acceptedTypes:
+                - csv
+            validForResourceTypes: *allResourceTypes
+        APPC_CONFIG:
+            acceptedTypes:
+            validForResourceTypes:
+                - VF
+        DCAE_TOSCA:
+            acceptedTypes:
+                - yml
+                - yaml
+            validForResourceTypes:
+                - VF
+                - VFCMT
+        DCAE_JSON:
+            acceptedTypes:
+                - json
+            validForResourceTypes:
+                - VF
+                - VFCMT
+        DCAE_POLICY:
+            acceptedTypes:
+                - emf
+            validForResourceTypes:
+                - VF
+                - VFCMT
+        DCAE_DOC:
+            acceptedTypes:
+            validForResourceTypes:
+                - VF
+                - VFCMT
+        DCAE_EVENT:
+            acceptedTypes:
+            validForResourceTypes:
+                - VF
+                - VFCMT
+        AAI_VF_MODEL:
+            acceptedTypes:
+                - xml
+            validForResourceTypes:
+                - VF
+        AAI_VF_MODULE_MODEL:
+            acceptedTypes:
+                - xml
+            validForResourceTypes:
+                - VF
+        OTHER:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        SNMP_POLL:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        SNMP_TRAP:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+    
+    #PLAN
+        PLAN:
+            acceptedTypes:
+                - xml
+            validForResourceTypes:
+                - VF
+                - VFC
+    
+    # Resource instance deployment artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # acceptedTypes - File types that can be uploaded as each artifact
+    # validForRespurceTypes - Resource types that support each artifact. 
+    # If left empty it means all resource types are valid
+    resourceInstanceDeploymentArtifacts:
+        HEAT_ENV:
+            acceptedTypes:
+                - env
+        VF_MODULES_METADATA:
+            acceptedTypes:
+                - json
+        VES_EVENTS:
+            acceptedTypes:
+                - yaml
+                - yml
+        PERFORMANCE_COUNTER:
+            acceptedTypes:
+                - csv
+        DCAE_INVENTORY_TOSCA:
+            acceptedTypes:
+                - yml
+                - yaml
+        DCAE_INVENTORY_JSON:
+            acceptedTypes:
+                - json
+        DCAE_INVENTORY_POLICY:
+          acceptedTypes:
+                - emf
+        DCAE_INVENTORY_DOC:
+          acceptedTypes:
+        DCAE_INVENTORY_BLUEPRINT:
+          acceptedTypes:
+        DCAE_INVENTORY_EVENT:
+          acceptedTypes:
+        SNMP_POLL:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        SNMP_TRAP:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+    
+    #PLAN
+        PLAN:
+            acceptedTypes:
+                - xml
+    
+    # Resource informational artifacts placeHolder
+    # For each artifact the following properties exists:
+    # 
+    # acceptedTypes - File types that can be uploaded as each artifact
+    # validForRespurceTypes - Resource types that support each artifact. 
+    # If left empty it means all resource types are valid
+    resourceInformationalArtifacts:
+        CHEF:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        PUPPET:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        SHELL:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        YANG:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        YANG_XML:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        HEAT:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        BPEL:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        DG_XML:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        MURANO_PKG:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        OTHER:
+            acceptedTypes:
+            validForResourceTypes:
+                - VFC
+                - CVFC
+                - CP
+                - VL
+                - VF
+                - VFCMT
+                - Abstract
+                - PNF
+        SNMP_POLL:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        SNMP_TRAP:
+            acceptedTypes:
+            validForResourceTypes: *allResourceTypes
+        GUIDE:
+            acceptedTypes:
+            validForResourceTypes:
+                - VF
+                - VFC
+                - CVFC
+    
+    # Resource informational deployment artifact placeholder
+    resourceInformationalDeployedArtifacts:
+    
+    # Requirements needed to be fulfilled before certificattion
+    requirementsToFulfillBeforeCert:
+    
+    # Capabillities needed to be fulfilled before certificattion
+    capabilitiesToConsumeBeforeCert:
+    
+    # Urls that should not be logged
+    unLoggedUrls:
+       - /sdc2/rest/healthCheck
+    
+    # When component is being set as deleted those are the clean configurations
+    cleanComponentsConfiguration:
+        
+        # The interval to check for deleted components to clean
+        cleanIntervalInMinutes: 1440
+        
+        # The components types to delete
+        componentsToClean:
+           - Resource
+           - Service
+    
+    # Deprecated. Will be removed in future releases
+    artifactsIndex: resources
+    
+    # Used to add header and footer to heatENV files generated by SDC
+    heatEnvArtifactHeader: ""
+    heatEnvArtifactFooter: ""
+    
+    onboarding:
+        
+        # Onboarding protocol
+        protocol: http
+        
+        # Onboarding backend hostname
+        host: <%= @host_ip %>
+        
+        # Onboarding backend http port
+        port: <%= @catalog_port %>
+        
+        # The url that being used when downloading CSARs
+        downloadCsarUri: "/onboarding-api/v1.0/vendor-software-products/packages"
+        
+        # Url for onboarding health check
+        healthCheckUri: "/onboarding-api/v1.0/healthcheck"
+    
+    
+    #GSS IDNS
+    # Switchover configuration is used for geo redundency to provide automatic failovers
+    switchoverDetector:
+        gBeFqdn:
+        gFeFqdn:
+        beVip: 1.2.3.4
+        feVip: 1.2.3.4
+        beResolveAttempts: 3
+        feResolveAttempts: 3
+        enabled: false
+        interval: 60
+        changePriorityUser: ecompasdc
+        changePriorityPassword: ecompasdc123
+        publishNetworkUrl:
+        publishNetworkBody: '{"note":"comment"}'
+        groups:
+          beSet: { changePriorityUrl: "", changePriorityBody: '{"name":"","uri":"","no_ad_redirection":false,"v4groups":{"failover_groups":["","","failover_policy":["FAILALL"]},"comment":"","intended_app_proto":"DNS"}'}
+          feSet: { changePriorityUrl: "", changePriorityBody: '{"name":"","uri":"","no_ad_redirection":false,"v4groups":{"failover_groups":["",""],"failover_policy":["FAILALL"]},"comment":"","intended_app_proto":"DNS"}'}
+    
+    # Cache for datatypes. Improving run times for data type search
+    applicationL1Cache:
+        datatypes:
+            enabled: true
+            firstRunDelay: 10
+            pollIntervalInSec: 60
+    
+    # Deprecated. Will be removed in future releases
+    applicationL2Cache:
+        enabled: false
+        catalogL1Cache:
+            enabled: false
+            resourcesSizeInCache: 300
+            servicesSizeInCache: 200
+            productsSizeInCache: 100
+        queue:
+            syncIntervalInSecondes: 43200
+            waitOnShutDownInMinutes: 10
+            numberOfCacheWorkers: 4
+    
+    # Validators for tosca properties
+    toscaValidators:
+        stringMaxLength: 2500
+    
+    # Should audit be disabled
+    disableAudit: false
+    
+    # VF module validations properties
+    vfModuleProperties:
+        min_vf_module_instances:
+            forBaseModule: 1
+            forNonBaseModule: 0
+        max_vf_module_instances:
+            forBaseModule: 1
+            forNonBaseModule:
+        initial_count:
+            forBaseModule: 1
+            forNonBaseModule: 0
+        vf_module_type:
+            forBaseModule: Base
+            forNonBaseModule: Expansion
+    
+    # For each generic node type defining it's coresponding class
+    genericAssetNodeTypes:
+        VFC: org.openecomp.resource.abstract.nodes.VFC
+        CVFC: org.openecomp.resource.abstract.nodes.VFC
+        VF : org.openecomp.resource.abstract.nodes.VF
+        PNF: org.openecomp.resource.abstract.nodes.PNF
+        Service: org.openecomp.resource.abstract.nodes.service
 
 
+BE-distribution-engine-configuration.yaml
+-----------------------------------------
 
-Example ...
+::
 
-You can provide the following in ``basic.conf``
+    # UEB servers list
+    uebServers:
+        <% node['UEB']['fqdn'].each do |conn| -%>
+            - <%= conn %>
+        <% end -%>
+    
+    # UEB public key
+    uebPublicKey: <%= node['UEB']['PublicKey'] %>
+    
+    # UEB secret key
+    uebSecretKey: <%= node['UEB']['SecretKey'] %>
+    
+    # Topic name for receiving distribution notification
+    distributionNotifTopicName:  SDC-DISTR-NOTIF-TOPIC
+    
+    # Topic name for distribution status
+    distributionStatusTopicName: SDC-DISTR-STATUS-TOPIC
+    
+    # Distibution initializtion retry interval time
+    initRetryIntervalSec: 5
+    
+    # Distribution initializtion maximum interval time
+    initMaxIntervalSec: 60
+    
+    # Deprecated. Will be removed in future releases
+    distribNotifServiceArtifactTypes:
+        info:
+            - MURANO-PKG
+    
+    # Deprecated. Will be removed in future releases
+    distribNotifResourceArtifactTypes:
+        lifecycle:
+            - HEAT
+            - DG-XML
+    
+    # Distribution environments
+    environments:
+        - <%= node.chef_environment %>
+    
+    distributionStatusTopic:
+        
+        # Distribution status polling interval
+        pollingIntervalSec: 60
+        
+        # Distribution status fetch time
+        fetchTimeSec: 15
+        
+        # Distribution status consumer group
+        consumerGroup: sdc-<%= node.chef_environment %>
+        
+        # Distribution status consumer id
+        consumerId: sdc-<%= node.chef_environment %>1
+    
+    distributionNotificationTopic:
+        
+        # Minimum pool size for distribution notifications
+        minThreadPoolSize: 0
+        
+        # Maximum pool size for distribution notifications
+        maxThreadPoolSize: 10
+        
+        # Maximum waiting time after sending a notification
+        maxWaitingAfterSendingSeconds: 5
+    
+    # Deprecated. Will be removed in future releases
+    createTopic:
+        partitionCount: 1
+        replicationCount: 1
+    
+    # STarting the distribution engine
+    startDistributionEngine: true
+    
+    #This is false by default, since ONAP Dmaap currently doesn't support https
+    # Does https should be used with Dmaap
+    useHttpsWithDmaap: false
 
-``host=ADDRESS``
-  The address of the host
 
-``port=PORT``
-  The port used for signaling
+BE-onboarding-configuration.yaml
+--------------------------------
 
-  Optional. Default: ``8080``
+::
+
+    notifications:
+        
+        # Backend onboarding notifications polling interval in milliseconds
+        pollingIntervalMsec: 2000
+        
+        # Backend onboarding notifications selection size
+        selectionSize: 100
+        
+        # Backend onboarding norifications backend hostname
+        beHost: <%= @catalog_ip %>
+        
+        # Backend onboarding notifications backend http port
+        beHttpPort: <%= @catalog_port %>
+
+
+BE-titan.properties
+-------------------
+
+::
+
+    # Titan storage backend
+    storage.backend=cassandra
+    
+    # Titan storage hostname
+    storage.hostname=<%= @CASSANDRA_IP %>
+    
+    # Titan storage port]
+    storage.port=9160
+    
+    # Titan storage username
+    storage.username=<%= @CASSANDRA_USR %>
+    
+    # Titan storage password
+    storage.password=<%= @CASSANDRA_PWD %>
+    
+    # Titan storage connection timeout
+    storage.connection-timeout=10000
+    
+    # Titan cassandra keyspace name
+    storage.cassandra.keyspace=sdctitan
+    
+    # Is Titan cassandra ssl is enabled
+    storage.cassandra.ssl.enabled=false
+    
+    # Titan cassandra ssl truststore file location
+    storage.cassandra.ssl.truststore.location=/var/lib/jetty/config/.truststore
+    
+    # Titan cassandra ssl truststore file password
+    storage.cassandra.ssl.truststore.password=Aa123456
+    
+    # Does titan should use cache
+    cache.db-cache = false
+    
+    # How long in milliseconds should the cache keep entries before flushing them
+    cache.db-cache-clean-wait = 20
+    
+    # Default experation time in milliseconds for entries in the cache
+    cache.db-cache-time = 180000
+    
+    # Size of titan database cache
+    cache.db-cache-size = 0.5
+    
+    # Titan cassandra read consistency level
+    storage.cassandra.read-consistency-level=LOCAL_QUORUM
+    
+    # Titan cassandra write consistency level
+    storage.cassandra.write-consistency-level=LOCAL_QUORUM
+    
+    # Titan cassandra replication strategy class name
+    storage.cassandra.replication-strategy-class=org.apache.cassandra.locator.NetworkTopologyStrategy
+    
+    # Titan cassandra replication startegy options
+    storage.cassandra.replication-strategy-options=<%= @DC_NAME %>,<%= @rep_factor %>
+    
+    # Titan cassandra local data center name
+    storage.cassandra.astyanax.local-datacenter=<%= @DC_NAME %>
+    
+    # Number of times the system attempts to acquire a lock before giving up and throwing an exception
+    storage.lock.retries=5
+    
+    # Number of milliseconds the system waits for a lock application to be acknowledged by the storage backend
+    storage.lock.wait-time=500
+
+
+Frontend Configuration
+======================
+
+FE-configuration.yaml
+---------------------
+
+::
+
+    # Catalog frontend hostname
+    feFqdn: <%= @fe_host_ip %>
+    
+    # Catalog backend hostname
+    beHost: <%= @be_host_ip %>
+    
+    # Catalog backend http port
+    beHttpPort: <%= @catalog_port %>
+    
+    # Catalog backend http context
+    beContext: /sdc2/rest/v1/catalog/upload/resources
+    
+    # Catalog backend protocol
+    beProtocol: http
+    
+    # Catalog backend ssl port
+    beSslPort: <%= @ssl_port %>
+    
+    # Threadpool size for handling requests
+    threadpoolSize: 50
+    
+    # Request processing timeout (seconds)
+    requestTimeout: 10
+    
+    # Health check timeout in milliseconds
+    healthCheckSocketTimeoutInMs: 5000
+    
+    # Health check inteval in seconds
+    healthCheckIntervalInSeconds: 5
+    
+    onboarding:
+        
+        # Onboarding protocol
+        protocol: http
+        
+        # Onboarding frontend hostname
+        host: <%= @fe_host_ip %>
+        
+        # Onboarding frontend port
+        port: 8181
+        
+        # Onboarding frontend health check url
+        healthCheckUri: "/onboarding/v1.0/healthcheck"
+    
+    # Request headers for identification of the user that made the request
+    identificationHeaderFields: 
+        -
+            - &HTTP_IV_USER HTTP_IV_USER
+            - &iv-user iv-user
+        -
+            - &USER_ID USER_ID
+            - &user-id user-id
+        -
+            - &HTTP_CSP_ATTUID HTTP_CSP_ATTUID
+            - &csp-attuid csp-attuid
+        -
+            - &HTTP_CSP_WSTYPE HTTP_CSP_WSTYPE
+            - &csp-wstype csp-wstype
+    
+    # Optional request headers
+    optionalHeaderFields:
+        -
+            - &HTTP_CSP_FIRSTNAME HTTP_CSP_FIRSTNAME
+            - &csp-firstname csp-firstname
+        -
+            - &HTTP_CSP_LASTNAME HTTP_CSP_LASTNAME
+            - &csp-lastname csp-lastname
+        -
+            - &HTTP_IV_REMOTE_ADDRESS HTTP_IV_REMOTE_ADDRESS
+            - &iv-remote-address iv-remote-address
+        -
+            - &HTTP_CSP_EMAIL HTTP_CSP_EMAIL
+            - &csp-email csp-email
+    
+    # Frontend configuration version
+    version: 1.0
+    
+    # Frontend configuration release date
+    released: 2012-11-30
+    
+    # Connection parameters
+    connection:
+        url: jdbc:mysql://localhost:3306/db
+        poolSize: 17
+    
+    # Protocols being used in SDC
+    protocols:
+        - http
+        - https
+    
+    # Collect process statistics
+    systemMonitoring:
+        
+        # Should monitoring be enabled
+        enabled: false
+        
+        # In case of going through the FE server proxy the information to the BE
+        isProxy: true
+        
+        # What is the interval of the statistics collection
+        probeIntervalInSeconds: 15
+    
+    # Kibana hostname
+    kibanaHost: localhost
+    
+    # Kibana http port
+    kibanaPort: 5601
+    
+    # Kibana usage protocol
+    kibanaProtocol: http
+
+
+FE-onboarding-configuration.yaml
+--------------------------------
+
+::
+
+    notifications:
+        
+        # Frontend onboarding notifications polling interval in milliseconds
+        pollingIntervalMsec: 2000
+        
+        # Frontend onboarding notifications selection size
+        selectionSize: 100
+        
+        # Frontend onboarding norifications backend hostname
+        beHost: <%= @catalog_ip %>
+        
+        # Frontend onboarding notifications backend http port
+        beHttpPort: <%= @catalog_port %>
diff --git a/docs/consumedapis.rst b/docs/consumedapis.rst
index 099442d..2379d75 100644
--- a/docs/consumedapis.rst
+++ b/docs/consumedapis.rst
@@ -1,7 +1,8 @@
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. http://creativecommons.org/licenses/by/4.0
 
+=============
 Consumed APIs
 =============
 
-SDC Project does not consume any APIs form other sources therfore this section is currently empty
+SDC Project does not consume any APIs from other sources therefore this section is currently empty
diff --git a/docs/logging.rst b/docs/logging.rst
index a6cca5b..9e82e15 100644
--- a/docs/logging.rst
+++ b/docs/logging.rst
@@ -5,16 +5,6 @@
 Logging
 =======
 
-.. note::
-   * This section is used to describe the informational or diagnostic messages emitted from 
-     a software component and the methods or collecting them.
-   
-   * This section is typically: provided for a platform-component and sdk; and
-     referenced in developer and user guides
-   
-   * This note must be removed after content has been added.
-
-
 Where to Access Information
 ---------------------------
 
diff --git a/docs/offeredapis.rst b/docs/offeredapis.rst
index 349e7ba..e9decd1 100644
--- a/docs/offeredapis.rst
+++ b/docs/offeredapis.rst
@@ -17,7 +17,7 @@
 Version information
 -------------------
 
-*Version* : 1.0.0
+*Version* : 1.1.0
 
 URI scheme
 ----------
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
index a0034a3..ddbcaf7 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java
@@ -25,14 +25,12 @@
 import org.openecomp.core.utilities.CommonMethods;
 import org.openecomp.core.utilities.file.FileContentHandler;
 import org.openecomp.sdc.common.errors.CoreException;
-import org.openecomp.sdc.common.errors.ErrorCode;
 import org.openecomp.sdc.common.utils.SdcCommon;
 import org.openecomp.sdc.datatypes.configuration.ImplementationConfiguration;
 import org.openecomp.sdc.heat.datatypes.manifest.FileData;
 import org.openecomp.sdc.heat.datatypes.manifest.ManifestFile;
 import org.openecomp.sdc.heat.datatypes.model.Resource;
 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
-import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
 import org.openecomp.sdc.tosca.services.ToscaUtil;
 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslatedHeatResource;
@@ -42,6 +40,7 @@
 import org.openecomp.sdc.translator.services.heattotosca.ConfigConstants;
 import org.openecomp.sdc.translator.services.heattotosca.Constants;
 import org.openecomp.sdc.translator.services.heattotosca.NameExtractor;
+import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
 import org.openecomp.sdc.translator.services.heattotosca.globaltypes.GlobalTypesGenerator;
 
 import java.io.InputStream;
@@ -385,10 +384,7 @@
     }
 
     if(nodeAbstractNodeTemplateIdMap.containsKey(originalNodeTemplateId)){
-      throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-          .withMessage("Resource with id "
-              + originalNodeTemplateId + " occures more than once in different addOn files")
-          .build());
+      throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(originalNodeTemplateId).build());
     }
     nodeAbstractNodeTemplateIdMap.put(originalNodeTemplateId, abstractNodeTemplateId);
     this.getUnifiedSubstitutionData().get(serviceTemplateFileName).setNodesRelatedAbstractNode(
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
index b86038d..5d1bb1c 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationDataUtil.java
@@ -31,6 +31,7 @@
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
+import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -154,10 +155,7 @@
 
     if(isNestedResourceIdOccuresInDifferentNestedFiles(context, nestedHeatFileName,
         nestedNodeTemplateId)){
-      throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-          .withMessage("Resource with id "
-              + nestedNodeTemplateId + " occures more than once in different addOn "
-              + "files").build());
+      throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
     }
 
     ConsolidationData consolidationData = context.getConsolidationData();
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
index 16a6301..d3f2a72 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/ConsolidationService.java
@@ -24,6 +24,7 @@
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.PortTemplateConsolidationData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.RequirementAssignmentData;
 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation.TypeComputeConsolidationData;
+import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -637,20 +638,16 @@
     NodeTemplate startingPortNodeTemplate = nodeTemplates.get(portNodeTemplateIdList.get(0));
 
     if (Objects.isNull(startingPortNodeTemplate)) {
-      throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-          .withMessage("Resource with id "
-              + portNodeTemplateIdList.get(0) + " occures more than once in different addOn files")
-          .build());
+      throw new CoreException(
+          new DuplicateResourceIdsInDifferentFilesErrorBuilder(portNodeTemplateIdList.get(0)).build());
     }
 
     for (int i = 1; i < portNodeTemplateIdList.size(); i++) {
       NodeTemplate portNodeTemplate = nodeTemplates.get(portNodeTemplateIdList.get(i));
 
       if (Objects.isNull(portNodeTemplate)) {
-        throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-            .withMessage("Resource with id "
-                + portNodeTemplateIdList.get(i) + " occures more than once in different addOn "
-                + "files").build());
+        throw new CoreException(
+            new DuplicateResourceIdsInDifferentFilesErrorBuilder(portNodeTemplateIdList.get(i)).build());
       }
 
       if (!isPropertySimilarBetweenNodeTemplates(propertyToCheck, portNodeTemplateIdList, nodeTemplates)) {
@@ -695,9 +692,8 @@
     for (int i = 1; i < entityNodeTemplateIds.size(); i++) {
       NodeTemplate currentNodeTemplate = idToNodeTemplate.get(entityNodeTemplateIds.get(i));
       if (Objects.isNull(currentNodeTemplate)) {
-        throw new CoreException((new ErrorCode.ErrorCodeBuilder())
-            .withMessage("Resource with id "
-                + entityNodeTemplateIds.get(i) + " occures more than once in different addOn files").build());
+        throw new CoreException(
+            new DuplicateResourceIdsInDifferentFilesErrorBuilder(entityNodeTemplateIds.get(i)).build());
       }
       if(propertyExistCondition != isPropertyExistInNodeTemplate(propertyToCheck, currentNodeTemplate)){
         return false;
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/errors/DuplicateResourceIdsInDifferentFilesErrorBuilder.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/errors/DuplicateResourceIdsInDifferentFilesErrorBuilder.java
new file mode 100644
index 0000000..a75e8b3
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/errors/DuplicateResourceIdsInDifferentFilesErrorBuilder.java
@@ -0,0 +1,16 @@
+package org.openecomp.sdc.translator.services.heattotosca.errors;
+
+import org.openecomp.sdc.common.errors.BaseErrorBuilder;
+import org.openecomp.sdc.common.errors.ErrorCategory;
+
+public final class DuplicateResourceIdsInDifferentFilesErrorBuilder extends BaseErrorBuilder {
+
+  private static final String DUPLICATE_RESOURCE_ID_MSG = "Resource with id %s occurs more than once in " +
+      "different addOn files";
+
+  public DuplicateResourceIdsInDifferentFilesErrorBuilder(String resourceId) {
+    getErrorCodeBuilder().withId(TranslatorErrorCodes.DUPLICATE_RESOURCE_ID_IN_DIFFERENT_FILES)
+    .withCategory(ErrorCategory.APPLICATION)
+    .withMessage(String.format(DUPLICATE_RESOURCE_ID_MSG, resourceId));
+  }
+}
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/errors/TranslatorErrorCodes.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/errors/TranslatorErrorCodes.java
index bfcf834..5afb1ae 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/errors/TranslatorErrorCodes.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/errors/TranslatorErrorCodes.java
@@ -29,4 +29,5 @@
       "REFERENCE_TO_UNSUPPORTED_RESOURCE";
   public static final String NOT_IN_SYNC_NUMBER_OF_INTERFACES = "NOT_IN_SYNC_NUMBER_OF_INTERFACES";
   public static final String INVALID_PROPERTY_VALUE = "INVALID_PROPERTY_VALUE";
+  public static final String DUPLICATE_RESOURCE_ID_IN_DIFFERENT_FILES = "DUPLICATE_RESOURCE_ID_IN_DIFFERENT_FILES";
 }
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionMixPatternFullTest.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionMixPatternFullTest.java
index b1946b3..9399b91 100644
--- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionMixPatternFullTest.java
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/test/java/org/openecomp/sdc/translator/services/heattotosca/impl/fulltest/UnifiedCompositionMixPatternFullTest.java
@@ -2,7 +2,10 @@
 
 import org.junit.Assert;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.openecomp.sdc.common.errors.CoreException;
 import org.openecomp.sdc.logging.api.Logger;
 import org.openecomp.sdc.logging.api.LoggerFactory;
 import org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslation.BaseFullTranslationTest;
@@ -19,6 +22,9 @@
     // do not delete this function. it prevents the superclass setup from running
   }
 
+  @Rule
+  public ExpectedException exception = ExpectedException.none();
+
   @Test
   public void testMixPatterns() throws IOException {
     inputFilesPath =
@@ -52,16 +58,13 @@
 
   @Test
   public void testDuplicateResourceIdsInDiffAddOnFiles() throws IOException {
+    exception.expect(CoreException.class);
+    exception.expectMessage("Resource with id lb_0_int_oam_int_0_port occurs more " +
+        "than once in different addOn files");
+
     inputFilesPath =
         "/mock/services/heattotosca/fulltest/mixPatterns/duplicateResourceIdsInDiffAddOnFiles/in";
-
-    try {
-      testTranslationWithInit();
-    }catch(Exception e){
-      log.debug("",e);
-      Assert.assertEquals(e.getMessage(), "Resource with id lb_0_int_oam_int_0_port occures more " +
-          "than once in different addOn files");
-    }
+    testTranslationWithInit();
   }
 
   @Test
diff --git a/pom.xml b/pom.xml
index 6a7d39d..b633606 100644
--- a/pom.xml
+++ b/pom.xml
@@ -85,7 +85,7 @@
 		<extentreports.version>3.0.3</extentreports.version>
 		
 		<!-- parser-->
-		<sdc-tosca-parser.version>1.1.34</sdc-tosca-parser.version>
+		<sdc-tosca-parser.version>1.1.32</sdc-tosca-parser.version>
 		
 		<!--JaCoCO -->
 		<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
@@ -408,7 +408,7 @@
 				<artifact-generator-api.version>1710.0.0</artifact-generator-api.version>
 				<artifact-generator-core.version>1710.0.0</artifact-generator-core.version>
 				<dox-common-lib.version>1710.0.0</dox-common-lib.version>
-				<sdc-tosca-parser.version>1.1.14</sdc-tosca-parser.version>
+				<sdc-tosca-parser.version>1.1.32</sdc-tosca-parser.version>
 			</properties>
 		</profile>
 
diff --git a/sdc-os-chef/pom.xml b/sdc-os-chef/pom.xml
index 21deaf4..9fec52d 100644
--- a/sdc-os-chef/pom.xml
+++ b/sdc-os-chef/pom.xml
@@ -305,9 +305,11 @@
                             <apiVersion>1.23</apiVersion>
                             <registry>nexus3.onap.org:10003</registry>
                             <authConfig>
-     							<username>docker</username>
-      							<password>docker</password>
-    						</authConfig>
+                                <pull>
+     					<username>docker</username>
+      					<password>docker</password>
+     				</pull>
+    			    </authConfig>
 
                             <images>
 
@@ -428,7 +430,6 @@
                                 <id>push-images</id>
                                 <phase>deploy</phase>
                                 <goals>
-                                    <goal>build</goal>
                                     <goal>push</goal>
                                 </goals>
                                 <configuration>
diff --git a/sdc-os-chef/scripts/docker_run.sh b/sdc-os-chef/scripts/docker_run.sh
index 417db09..963b2fc 100755
--- a/sdc-os-chef/scripts/docker_run.sh
+++ b/sdc-os-chef/scripts/docker_run.sh
@@ -17,16 +17,16 @@
 
 
 function dir_perms {
-	mkdir -p /data/logs/BE/ASDC/ASDC-BE
-	mkdir -p /data/logs/FE/ASDC/ASDC-FE
+	mkdir -p /data/logs/BE/SDC/SDC-BE
+	mkdir -p /data/logs/FE/SDC/SDC-FE
 	chmod -R 777 /data/logs
 }
 
 function monitor_docker {
 
 echo monitor $1 Docker
-
-TIME_OUT=180
+sleep 5
+TIME_OUT=600
 INTERVAL=20
 TIME=0
 while [ "$TIME" -lt "$TIME_OUT" ]; do
@@ -201,9 +201,9 @@
 
 /data/scripts/docker_health.sh
 
-if [ $? -ne 0 ]; then
-    exit 1
-fi
+#if [ $? -ne 0 ]; then
+#    exit 1
+#fi
 
 # sanityDocker
 echo "docker run sdc-frontend..."
diff --git a/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_5_jetty_Modules.rb b/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_4_jetty_Modules.rb
similarity index 100%
rename from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_5_jetty_Modules.rb
rename to sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_4_jetty_Modules.rb
diff --git a/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_6_setup_elasticsearch.rb b/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_5_setup_elasticsearch.rb
similarity index 100%
rename from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_6_setup_elasticsearch.rb
rename to sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_5_setup_elasticsearch.rb
diff --git a/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_7_setup_portal_properties.rb b/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_6_setup_portal_properties.rb
similarity index 100%
rename from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_7_setup_portal_properties.rb
rename to sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_6_setup_portal_properties.rb
diff --git a/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_8_logback.rb b/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_7_logback.rb
similarity index 100%
rename from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_8_logback.rb
rename to sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_7_logback.rb
diff --git a/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_9_errors_config.rb b/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_8_errors_config.rb
similarity index 100%
rename from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_9_errors_config.rb
rename to sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_8_errors_config.rb
diff --git a/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_4_create_DMaaP_keys.rb b/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_Number_create_DMaaP_keys.rb-NotUsed
similarity index 100%
rename from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_4_create_DMaaP_keys.rb
rename to sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_Number_create_DMaaP_keys.rb-NotUsed
diff --git a/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_10_import_Normatives.rb b/sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_Number_import_Normatives.rb
similarity index 100%
rename from sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_10_import_Normatives.rb
rename to sdc-os-chef/sdc-backend/chef-repo/cookbooks/sdc-catalog-be/recipes/BE_Number_import_Normatives.rb
diff --git a/sdc-os-chef/sdc-backend/chef-solo/roles/catalog-be.json b/sdc-os-chef/sdc-backend/chef-solo/roles/catalog-be.json
index a05a283..220eee7 100644
--- a/sdc-os-chef/sdc-backend/chef-solo/roles/catalog-be.json
+++ b/sdc-os-chef/sdc-backend/chef-solo/roles/catalog-be.json
@@ -13,11 +13,11 @@
     "recipe[sdc-catalog-be::BE_1_cleanup_jettydir]",
     "recipe[sdc-catalog-be::BE_2_setup_configuration]",
     "recipe[sdc-catalog-be::BE_3_locate_keystore]",
-    "recipe[sdc-catalog-be::BE_5_jetty_Modules]",
-    "recipe[sdc-catalog-be::BE_6_setup_elasticsearch]",
-    "recipe[sdc-catalog-be::BE_7_setup_portal_properties]",
-    "recipe[sdc-catalog-be::BE_8_logback]",
-    "recipe[sdc-catalog-be::BE_9_errors_config]"
+    "recipe[sdc-catalog-be::BE_4_jetty_Modules]",
+    "recipe[sdc-catalog-be::BE_5_setup_elasticsearch]",
+    "recipe[sdc-catalog-be::BE_6_setup_portal_properties]",
+    "recipe[sdc-catalog-be::BE_7_logback]",
+    "recipe[sdc-catalog-be::BE_8_errors_config]"
   ],
   "env_run_lists": {
   }
diff --git a/sdc-os-chef/sdc-backend/startup.sh b/sdc-os-chef/sdc-backend/startup.sh
index 87f4ae6..8e5926c 100644
--- a/sdc-os-chef/sdc-backend/startup.sh
+++ b/sdc-os-chef/sdc-backend/startup.sh
@@ -37,7 +37,9 @@
    chef-solo -c normatives.rb
 fi
 
+echo "###### DOCKER STARTED #####"
+
 while true; do sleep 2; done
 
-echo "###### DOCKER STARTED #####"
+
 
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vHSS.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vHSS.csar
new file mode 100644
index 0000000..ea5c128
--- /dev/null
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vHSS.csar
Binary files differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vMME.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vMME.csar
new file mode 100644
index 0000000..f921f46
--- /dev/null
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vMME.csar
Binary files differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vPCRF_aligned_fixed.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vPCRF_aligned_fixed.csar
new file mode 100644
index 0000000..6f997bc
--- /dev/null
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vPCRF_aligned_fixed.csar
Binary files differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vSPGW.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vSPGW.csar
new file mode 100644
index 0000000..8beae6e
--- /dev/null
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/Huawei_vSPGW.csar
Binary files differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ZteEpcSpgwVf-csar.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ZteEpcSpgwVf-csar.csar
new file mode 100644
index 0000000..0eacd74
--- /dev/null
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ZteEpcSpgwVf-csar.csar
Binary files differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/cscf_si_fixed.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/cscf_si_fixed.csar
new file mode 100644
index 0000000..bc8397a
--- /dev/null
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/cscf_si_fixed.csar
Binary files differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ntas.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ntas.csar
new file mode 100644
index 0000000..6b6f7c4
--- /dev/null
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/ntas.csar
Binary files differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/resource-ZteEpcMmeVf-csar_fix.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/resource-ZteEpcMmeVf-csar_fix.csar
new file mode 100644
index 0000000..bf0e775
--- /dev/null
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/resource-ZteEpcMmeVf-csar_fix.csar
Binary files differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_aligned.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_aligned.csar
index ea977be..347b8bc 100644
--- a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_aligned.csar
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_aligned.csar
Binary files differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_v3.0.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_v3.0.csar
new file mode 100644
index 0000000..1c52cca
--- /dev/null
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vCSCF_v3.0.csar
Binary files differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vSBC_aligned.csar b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vSBC_aligned.csar
new file mode 100644
index 0000000..ee60eed
--- /dev/null
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/files/default/Files/VNFs/vSBC_aligned.csar
Binary files differ
diff --git a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/recipes/sanityTests_3_sanity_execution.rb b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/recipes/sanityTests_3_sanity_execution.rb
index 690559a..c4323c2 100644
--- a/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/recipes/sanityTests_3_sanity_execution.rb
+++ b/sdc-os-chef/sdc-sanity/chef-repo/cookbooks/sdc-sanity/recipes/sanityTests_3_sanity_execution.rb
@@ -6,7 +6,7 @@
 code <<-EOH
    cd "#{tests_base}"
    jar_file=`ls test-apis*-jar-with-dependencies.jar`
-   nohup ./startTest.sh $jar_file #{ci_test_suite} &
+   ./startTest.sh $jar_file #{ci_test_suite} > #{tests_base}/target/startTest.out 2>&1
    echo "return code from startTest.sh = [$?]"
 EOH
 timeout 72000
diff --git a/sdc-os-chef/sdc-sanity/startup.sh b/sdc-os-chef/sdc-sanity/startup.sh
index d4316c3..e4edfc6 100644
--- a/sdc-os-chef/sdc-sanity/startup.sh
+++ b/sdc-os-chef/sdc-sanity/startup.sh
@@ -14,7 +14,7 @@
 #   exit 0
 #fi
 
-while true; do sleep 2; done
+#while true; do sleep 2; done
 
 ##/docker-entrypoint.sh
 
diff --git a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java
index 6b0dc56..01fad09 100644
--- a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java
+++ b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/api/ComponentBaseTest.java
@@ -28,6 +28,7 @@
 import com.thinkaurelius.titan.core.TitanGraph;
 import com.thinkaurelius.titan.core.TitanVertex;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.commons.lang3.tuple.ImmutableTriple;
 import org.apache.log4j.Logger;
@@ -48,6 +49,7 @@
 import org.openecomp.sdc.ci.tests.utils.cassandra.CassandraUtils;
 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
+import org.openecomp.sdc.ci.tests.utils.general.FileHandling;
 import org.openecomp.sdc.ci.tests.utils.rest.*;
 import org.slf4j.LoggerFactory;
 import org.testng.ITestContext;
@@ -186,6 +188,10 @@
 		
 		performClean();
 		shutdownTitanLogic();
+		String basePath = FileHandling.getBasePath();
+		String csarDir = FileHandling.getCreateDirByName("outputCsar");
+		FileUtils.cleanDirectory(new File(csarDir));
+
 
 	}
 
diff --git a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/sanity/Onboard.java b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/sanity/Onboard.java
index 44e386a..4db35a2 100644
--- a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/sanity/Onboard.java
+++ b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/sanity/Onboard.java
@@ -24,8 +24,10 @@
 
 
 
+import org.apache.http.HttpResponse;
 import org.junit.Rule;
 import org.junit.rules.TestName;
+import org.openecomp.sdc.be.datatypes.enums.AssetTypeEnum;
 import org.openecomp.sdc.be.model.ComponentInstance;
 import org.openecomp.sdc.be.model.Resource;
 import org.openecomp.sdc.be.model.Service;
@@ -39,9 +41,14 @@
 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
+import org.openecomp.sdc.ci.tests.utils.CsarToscaTester;
 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
 import org.openecomp.sdc.ci.tests.utils.general.OnboardingUtillViaApis;
+import org.openecomp.sdc.ci.tests.utils.rest.AssetRestUtils;
+import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
+import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Optional;
 import org.testng.annotations.Parameters;
@@ -52,9 +59,10 @@
 
 import fj.data.Either;
 
-
-
-
+import java.io.File;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
 
 
 public class Onboard extends ComponentBaseTest {
@@ -68,6 +76,8 @@
 	}
 
 	protected String makeDistributionValue;
+	protected ISdcCsarHelper fdntCsarHelper;
+	protected SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
 
 
 
@@ -115,12 +125,30 @@
 		ExtentTestActions.log(Status.INFO, String.format("Certify Service"));
 		service = (Service) AtomicOperationUtils.changeComponentState(service, UserRoleEnum.DESIGNER, LifeCycleStatesEnum.CERTIFY, true).getLeft();
 
+
 //		ExtentTestActions.log(Status.INFO, String.format("Distribute Service"));
 //		AtomicOperationUtils.distributeService(service, true);
-		
-		ExtentTestActions.log(Status.INFO, String.format("The onboarding %s test is passed ! ", vnfFile));
+		try{
+//			HttpResponse assetResponse = AssetRestUtils.getComponentToscaModel(AssetTypeEnum.SERVICES, service.getUUID());
+//			InputStream inputStream = assetResponse.getEntity().getContent();
+			File csarFile = AssetRestUtils.getToscaModelCsarFile(AssetTypeEnum.SERVICES, service.getUUID());
+
+			ExtentTestActions.log(Status.INFO, "Tosca parser is going to convert service csar file to ISdcCsarHelper object...");
+			fdntCsarHelper = factory.getSdcCsarHelper(csarFile.getAbsolutePath());
+            CsarToscaTester.processCsar(fdntCsarHelper);
+
+			ExtentTestActions.log(Status.INFO, String.format("Tosca parser successfully parsed service CSAR"));
+
+			ExtentTestActions.log(Status.INFO, String.format("The onboarding %s test is passed ! ", vnfFile));
+
+		}catch(Exception e){
+			ExtentTestActions.log(Status.ERROR, "Tosca parser FAILED to convert service csar file to ISdcCsarHelper object...");
+			ExtentTestActions.log(Status.FAIL, e);
+
+		}
+
+
+
 	}
 
-
-
 }
diff --git a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/CsarToscaTester.java b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/CsarToscaTester.java
new file mode 100644
index 0000000..afdfa43
--- /dev/null
+++ b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/CsarToscaTester.java
@@ -0,0 +1,137 @@
+package org.openecomp.sdc.ci.tests.utils;
+
+import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
+import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
+import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory;
+import org.openecomp.sdc.tosca.parser.impl.SdcTypes;
+import org.openecomp.sdc.toscaparser.api.Group;
+import org.openecomp.sdc.toscaparser.api.NodeTemplate;
+import org.openecomp.sdc.toscaparser.api.elements.Metadata;
+import org.openecomp.sdc.toscaparser.api.parameters.Input;
+import org.openecomp.sdc.toscaparser.api.utils.ThreadLocalsHolder;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+public class CsarToscaTester {
+	public static void main(String[] args) throws Exception {
+		System.out.println("CsarToscaParser - path to CSAR's Directory is " + Arrays.toString(args));
+		SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
+
+		File folder = new File(args[0]);
+		File[] listOfFiles = folder.listFiles();
+		Date now = new Date();
+		SimpleDateFormat dateFormat = new SimpleDateFormat("d-MM-y-HH_mm_ss");
+		String time = dateFormat.format(now);
+		String csarsDir = args[1] + "/csar-reports-" + time;
+		File dir = new File(csarsDir);
+		dir.mkdir();
+
+
+		for (File file : listOfFiles) {
+			if (file.isFile()) {  
+				System.out.println("File  " + file.getAbsolutePath());
+				String name = file.getName();
+				String currentCsarDir = csarsDir+"/"+name+"-"+time;
+				dir = new File(currentCsarDir);
+				dir.mkdir();
+				try {
+					processCsar(factory, file);
+				} catch (SdcToscaParserException e){
+					System.out.println("SdcToscaParserException caught. Code: "+e.getCode()+", message: "+ e.getMessage());
+				}
+				List<String> notAnalyzedReport = ThreadLocalsHolder.getCollector().getNotAnalyzedExceptionsReport();
+				System.out.println("NOT ANALYZED during CSAR parsing are: " + (notAnalyzedReport != null ? notAnalyzedReport.toString() : "none"));
+				List<String> warningsReport = ThreadLocalsHolder.getCollector().getWarningsReport();
+				//System.out.println("WARNINGS during CSAR parsing are: " + (warningsReport != null ? warningsReport.toString() : "none"));
+				List<String> criticalsReport = ThreadLocalsHolder.getCollector().getCriticalsReport();
+				System.out.println("CRITICALS during CSAR parsing are: " + (criticalsReport != null ? criticalsReport.toString() : "none"));
+
+				try {
+					generateReport(time, name, currentCsarDir, criticalsReport, "critical");
+					generateReport(time, name, currentCsarDir, warningsReport, "warning");
+					generateReport(time, name, currentCsarDir, notAnalyzedReport, "notAnalyzed");
+
+				} catch (IOException ex) {
+					ex.printStackTrace();
+				}
+			}
+
+		}		
+	}
+
+	public static void processCsar(SdcToscaParserFactory factory, File file) throws SdcToscaParserException {
+		ISdcCsarHelper sdcCsarHelper = factory.getSdcCsarHelper(file.getAbsolutePath());
+		processCsarImpl(sdcCsarHelper);
+		
+	}
+
+	public static void processCsar(ISdcCsarHelper sdcCsarHelper) throws SdcToscaParserException {
+		processCsarImpl(sdcCsarHelper);
+
+	}
+
+	private static void processCsarImpl(ISdcCsarHelper sdcCsarHelper) {
+
+		//Service level
+		System.out.println("Invoking sdc-tosca methods on this CSAR....");
+		String conformanceLevel = sdcCsarHelper.getConformanceLevel();
+		System.out.println("getConformanceLevel() - conformance level is "+conformanceLevel);
+		String serviceSubstitutionMappingsTypeName = sdcCsarHelper.getServiceSubstitutionMappingsTypeName();
+		System.out.println("serviceSubstitutionMappingsTypeName() - subst mappings type of service is "+serviceSubstitutionMappingsTypeName);
+		List<Input> serviceInputs = sdcCsarHelper.getServiceInputs();
+		System.out.println("getServiceInputs() - service inputs are "+serviceInputs);
+		Metadata serviceMetadata = sdcCsarHelper.getServiceMetadata();
+		System.out.println("getServiceMetadata() - service metadata is "+serviceMetadata);
+		Map<String, Object> serviceMetadataProperties = sdcCsarHelper.getServiceMetadataProperties();
+		System.out.println("getServiceMetadataProperties() - service metadata properties is "+serviceMetadataProperties);
+		List<NodeTemplate> allottedResources = sdcCsarHelper.getAllottedResources();
+		System.out.println("getAllottedResources() - service allotted resources are "+allottedResources);
+		List<NodeTemplate> serviceVfList = sdcCsarHelper.getServiceVfList();
+		System.out.println("getServiceVfList() - VF list is "+serviceVfList);
+		List<NodeTemplate> serviceNodeTemplateBySdcType = sdcCsarHelper.getServiceNodeTemplateBySdcType(SdcTypes.VF);
+		System.out.println("getServiceNodeTemplateBySdcType() - VF list is "+serviceNodeTemplateBySdcType);
+		List<NodeTemplate> serviceNodeTemplates = sdcCsarHelper.getServiceNodeTemplates();
+		System.out.println("getServiceNodeTemplates() - all node templates list of service is "+serviceNodeTemplates);
+
+		serviceVfList.forEach(x -> {
+			String nodeTemplateCustomizationUuid = sdcCsarHelper.getNodeTemplateCustomizationUuid(x);
+			System.out.println("getNodeTemplateCustomizationUuid() - VF ID is "+nodeTemplateCustomizationUuid);
+			String typeOfNodeTemplate = sdcCsarHelper.getTypeOfNodeTemplate(x);
+			System.out.println("getTypeOfNodeTemplate() - VF tosca type is "+typeOfNodeTemplate);
+			List<Group> vfModulesByVf = sdcCsarHelper.getVfModulesByVf(nodeTemplateCustomizationUuid);
+			System.out.println("getVfModulesByVf() - VF modules list is "+vfModulesByVf);
+			vfModulesByVf.forEach(y -> {
+				List<NodeTemplate> membersOfVfModule = sdcCsarHelper.getMembersOfVfModule(x, y);
+				System.out.println("getMembersOfVfModule() - members of VfModule are "+membersOfVfModule);
+			});
+			List<NodeTemplate> vfcListByVf = sdcCsarHelper.getVfcListByVf(nodeTemplateCustomizationUuid);
+			System.out.println("getVfcListByVf() - VFC list is "+vfcListByVf);
+			vfcListByVf.forEach(z -> {
+				List<NodeTemplate> nodeTemplateBySdcType = sdcCsarHelper.getNodeTemplateBySdcType(z, SdcTypes.CP);
+				System.out.println("getNodeTemplateBySdcType() - CP children node templates of this VFC are "+nodeTemplateBySdcType);
+				Map<String, Map<String, Object>> cpPropertiesFromVfcAsObject = sdcCsarHelper.getCpPropertiesFromVfcAsObject(z);
+				System.out.println("getCpPropertiesFromVfcAsObject() - consolidated CP properties for this VFC are "+cpPropertiesFromVfcAsObject);
+				boolean hasTopology = sdcCsarHelper.hasTopology(z);
+				System.out.println("hasTopology() - this VFC is "+(hasTopology ? "nested" : "not nested"));
+			});
+		});
+	}
+
+	private static void generateReport(String time, String name, String currentCsarDir, List<String> criticalsReport, String type)
+			throws IOException {
+		FileWriter fw;
+		fw = new FileWriter(new File(currentCsarDir + "/" + criticalsReport.size() + "-"+type+"-" + name +"-"+time + ".txt"));
+		for (String exception : criticalsReport) {
+			fw.write(exception);
+			fw.write("\r\n");
+		}
+		fw.close();
+	}
+}
diff --git a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/FileHandling.java b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/FileHandling.java
index c8f9ee4..2c5d985 100644
--- a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/FileHandling.java
+++ b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/general/FileHandling.java
@@ -390,6 +390,15 @@
 //
 //		}
 //	}
+
+	public static String getCreateDirByName(String dirName) {
+		File dir = new File(dirName);
+		dir.mkdir();
+		if(!dir.exists()) {
+		}
+
+		return dir.getPath();
+	}
 	
 	public static boolean isFileDownloaded(String downloadPath, String fileName) {
 		boolean flag = false;
diff --git a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/rest/AssetRestUtils.java b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/rest/AssetRestUtils.java
index 13a5641..7bcf338 100644
--- a/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/rest/AssetRestUtils.java
+++ b/test-apis-ci/src/main/java/org/openecomp/sdc/ci/tests/utils/rest/AssetRestUtils.java
@@ -26,10 +26,7 @@
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.Map.Entry;
 
 import org.apache.http.HttpEntity;
@@ -62,6 +59,7 @@
 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
 import org.openecomp.sdc.ci.tests.utils.Utils;
 import org.openecomp.sdc.ci.tests.utils.general.AtomicOperationUtils;
+import org.openecomp.sdc.ci.tests.utils.general.FileHandling;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -105,7 +103,9 @@
 		String url = String.format(Urls.GET_TOSCA_MODEL, config.getCatalogBeHost(), config.getCatalogBePort(),
 				assetType.getValue(), uuid);
 		HttpGet httpGet = new HttpGet(url);
-		File myFile = new File("tmpCSAR");
+
+		String csarDir = FileHandling.getCreateDirByName("outputCsar");
+		File myFile = new File(csarDir+ File.separator + "tmpCSAR" + getShortUUID()+".csar");
 
 		
 		httpGet.addHeader(HttpHeaderEnum.X_ECOMP_INSTANCE_ID.getValue(), "ci");
@@ -123,7 +123,9 @@
 	    }
 		return myFile;
 	}
-	
+
+
+
 	public static RestResponse getRestResponseComponentToscaModel(AssetTypeEnum assetType, String uuid) throws IOException {
 		Config config = Utils.getConfig();
 		
@@ -622,5 +624,8 @@
 		}
 		return null;
 	}
+	private static String getShortUUID() {
+		return UUID.randomUUID().toString().split("-")[0];
+	}
 	
 }
diff --git a/test-apis-ci/src/main/resources/ci/testSuites/onap.xml b/test-apis-ci/src/main/resources/ci/testSuites/onap.xml
index c075f10..1d5bc4b 100644
--- a/test-apis-ci/src/main/resources/ci/testSuites/onap.xml
+++ b/test-apis-ci/src/main/resources/ci/testSuites/onap.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<suite name="externalApis" configfailurepolicy="continue" verbose="2" parallel="methods" thread-count="2" data-provider-thread-count="2">
+<suite name="externalApis" configfailurepolicy="continue" verbose="2" parallel="methods" thread-count="1" data-provider-thread-count="1">
 	<test name="ExternalApis"> 
 		<classes>	
 			
