diff --git a/openecomp-ui/pom.xml b/openecomp-ui/pom.xml
index 02c3ac2..311403e 100644
--- a/openecomp-ui/pom.xml
+++ b/openecomp-ui/pom.xml
@@ -141,7 +141,8 @@
                         <configuration>
                             <arguments>run test-build</arguments>
                         </configuration>
-                        <phase>test</phase>
+                        <!-- for some reason does not fail on test phase -->
+                        <phase>install</phase>
                     </execution>
                 </executions>
             </plugin>
diff --git a/openecomp-ui/src/nfvo-utils/ErrorResponseHandler.js b/openecomp-ui/src/nfvo-utils/ErrorResponseHandler.js
index 146d528..e7f37e3 100644
--- a/openecomp-ui/src/nfvo-utils/ErrorResponseHandler.js
+++ b/openecomp-ui/src/nfvo-utils/ErrorResponseHandler.js
@@ -1,17 +1,17 @@
-/*
- * Copyright © 2016-2017 European Support Limited
+/*!
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
  */
 import store from 'sdc-app/AppStore.js';
 import React from 'react';
@@ -29,7 +29,7 @@
 	return msg;
 }
 
-function parseATTExceptionObject(responseJSON) {
+function parseCatalogExceptionObject(responseJSON) {
 	let title, msg;
 	if (responseJSON.requestError && responseJSON.requestError.policyException) {
 		title = 'Error: ' + responseJSON.requestError.policyException.messageId;
@@ -57,7 +57,7 @@
 var errorResponseHandler = (error) => {
 	let errorData;
 	if (error.data) {
-		errorData = parseATTExceptionObject(error.data);
+		errorData = parseCatalogExceptionObject(error.data);
 	}
 	else {
 		errorData = {
diff --git a/openecomp-ui/src/nfvo-utils/RestAPIUtil.js b/openecomp-ui/src/nfvo-utils/RestAPIUtil.js
index 0181984..bd08cbb 100644
--- a/openecomp-ui/src/nfvo-utils/RestAPIUtil.js
+++ b/openecomp-ui/src/nfvo-utils/RestAPIUtil.js
@@ -48,10 +48,10 @@
 		headers[AUTHORIZATION_HEADER] = authToken;
 	}
 
-	let attApiHeaders = Configuration.get('ATTApiHeaders'),
-		attUidHeader = attApiHeaders && attApiHeaders.userId;
-	if (attUidHeader) {
-		headers[attUidHeader.name] = attUidHeader.value;
+	let catalogApiHeaders = Configuration.get('CatalogApiHeaders'),
+		catalogUidHeader = catalogApiHeaders && catalogApiHeaders.userId;
+	if (catalogUidHeader) {
+		headers[catalogUidHeader.name] = catalogUidHeader.value;
 	}
 
 	headers[REQUEST_ID_HEADER] = uuid.create().toString();
diff --git a/openecomp-ui/src/sdc-app/common/merge/MergeEditorActionHelper.js b/openecomp-ui/src/sdc-app/common/merge/MergeEditorActionHelper.js
index 3885ee4..92ec60b 100644
--- a/openecomp-ui/src/sdc-app/common/merge/MergeEditorActionHelper.js
+++ b/openecomp-ui/src/sdc-app/common/merge/MergeEditorActionHelper.js
@@ -32,8 +32,8 @@
 import ScreensHelper from 'sdc-app/common/helpers/ScreensHelper.js';
 
 function softwareProductCategoriesUrl() {
-	const restATTPrefix = Configuration.get('restATTPrefix');
-	return `${restATTPrefix}/v1/categories/resources/`;
+	const restCatalogPrefix = Configuration.get('restCatalogPrefix');
+	return `${restCatalogPrefix}/v1/categories/resources/`;
 }
 
 function versionUrl(itemId, versionId) {
diff --git a/openecomp-ui/src/sdc-app/config/Configuration.js b/openecomp-ui/src/sdc-app/config/Configuration.js
index 3d9ab8b..8444e3f 100644
--- a/openecomp-ui/src/sdc-app/config/Configuration.js
+++ b/openecomp-ui/src/sdc-app/config/Configuration.js
@@ -27,18 +27,18 @@
 		return prev;
 	}
 
-	setATTApiRoot(ATTApiRoot) {
-		let restATTPrefix = ATTApiRoot,
-			restPrefix = ATTApiRoot.replace(/\/feProxy\b[^:]*$/, '/feProxy/onboarding-api');
+	setCatalogApiRoot(CatalogApiRoot) {
+		let restCatalogPrefix = CatalogApiRoot,
+			restPrefix = CatalogApiRoot.replace(/\/feProxy\b[^:]*$/, '/feProxy/onboarding-api');
 
 		this.set('restPrefix', restPrefix);
-		this.set('restATTPrefix', restATTPrefix);
+		this.set('restCatalogPrefix', restCatalogPrefix);
 	}
 
-	setATTApiHeaders(ATTApiHeaders) {
-		this.set('ATTApiHeaders', ATTApiHeaders);
+	setCatalogApiHeaders(CatalogApiHeaders) {
+		this.set('CatalogApiHeaders', CatalogApiHeaders);
 
-		let {userId: {value: UserID} = {}} = ATTApiHeaders;
+		let {userId: {value: UserID} = {}} = CatalogApiHeaders;
 		this.set('UserID', UserID);
 	}
 }
@@ -47,7 +47,7 @@
 
 (function setDefaultRestPrefixes(configuration) {
 	configuration.set('restPrefix', configuration.get('defaultRestPrefix'));
-	configuration.set('restATTPrefix', configuration.get('defaultRestATTPrefix'));
+	configuration.set('restCatalogPrefix', configuration.get('defaultRestCatalogPrefix'));
 	configuration.set('appContextPath', configuration.get('appContextPath'));
 })(configuration);
 (function setDefaultWebsocketConfig(configuration) {
diff --git a/openecomp-ui/src/sdc-app/config/config.json b/openecomp-ui/src/sdc-app/config/config.json
index e73856e..fbfaf1d 100644
--- a/openecomp-ui/src/sdc-app/config/config.json
+++ b/openecomp-ui/src/sdc-app/config/config.json
@@ -4,7 +4,7 @@
 	"build": "dev",
 	"appContextPath" : "/onboarding",
 	"defaultRestPrefix": "/onboarding-api",
-	"defaultRestATTPrefix": "/sdc1/feProxy/rest",
+	"defaultRestCatalogPrefix": "/sdc1/feProxy/rest",
 	"defaultWebsocketPort" : "8181",
 	"defaultDebugWebsocketPort" : "9000",
 	"defaultWebsocketPath" : "notification-api/ws/notificationHandler"
diff --git a/openecomp-ui/src/sdc-app/flows/FlowsActions.js b/openecomp-ui/src/sdc-app/flows/FlowsActions.js
index 5a75106..61a419b 100644
--- a/openecomp-ui/src/sdc-app/flows/FlowsActions.js
+++ b/openecomp-ui/src/sdc-app/flows/FlowsActions.js
@@ -20,8 +20,8 @@
 
 
 function baseUrl(serviceId, artifactId = '') {
-	const restATTPrefix = Configuration.get('restATTPrefix');
-	return `${restATTPrefix}/v1/catalog/services/${serviceId}/artifacts/${artifactId}`;
+	const restCatalogPrefix = Configuration.get('restCatalogPrefix');
+	return `${restCatalogPrefix}/v1/catalog/services/${serviceId}/artifacts/${artifactId}`;
 }
 
 function encodeDataToBase64(dataAsString) {
diff --git a/openecomp-ui/src/sdc-app/flows/FlowsPunchOut.jsx b/openecomp-ui/src/sdc-app/flows/FlowsPunchOut.jsx
index 8730034..a2a5554 100644
--- a/openecomp-ui/src/sdc-app/flows/FlowsPunchOut.jsx
+++ b/openecomp-ui/src/sdc-app/flows/FlowsPunchOut.jsx
@@ -45,8 +45,8 @@
 	render({options: {data, apiRoot, apiHeaders}, onEvent}, element) {
 
 		if (!this.isConfigSet) {
-			Configuration.setATTApiRoot(apiRoot);
-			Configuration.setATTApiHeaders(apiHeaders);
+			Configuration.setCatalogApiRoot(apiRoot);
+			Configuration.setCatalogApiHeaders(apiHeaders);
 			this.isConfigSet = true;
 		}
 
diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx b/openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx
index 06c95b0..e576bb3 100644
--- a/openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx
+++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingPunchOut.jsx
@@ -205,8 +205,8 @@
 		}
 
 		if (!this.isConfigSet) {
-			Configuration.setATTApiRoot(apiRoot);
-			Configuration.setATTApiHeaders(apiHeaders);
+			Configuration.setCatalogApiRoot(apiRoot);
+			Configuration.setCatalogApiHeaders(apiHeaders);
 			this.isConfigSet = true;
 		}
 
diff --git a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js
index 355c823..ebd660f 100644
--- a/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js
+++ b/openecomp-ui/src/sdc-app/onboarding/softwareProduct/SoftwareProductActionHelper.js
@@ -58,8 +58,8 @@
 	return `${restPrefix}/v1.0/vendor-software-products/`;
 }
 function softwareProductCategoriesUrl() {
-	const restATTPrefix = Configuration.get('restATTPrefix');
-	return `${restATTPrefix}/v1/categories/resources/`;
+	const restCatalogPrefix = Configuration.get('restCatalogPrefix');
+	return `${restCatalogPrefix}/v1/categories/resources/`;
 }
 
 function uploadFile(vspId, formData, version) {
diff --git a/openecomp-ui/src/sdc-app/onboarding/users/UsersActionHelper.js b/openecomp-ui/src/sdc-app/onboarding/users/UsersActionHelper.js
index 8a9ff42..a2e92fe 100644
--- a/openecomp-ui/src/sdc-app/onboarding/users/UsersActionHelper.js
+++ b/openecomp-ui/src/sdc-app/onboarding/users/UsersActionHelper.js
@@ -19,15 +19,15 @@
 import {actionTypes} from './UsersConstants.js';
 
 function getUserId() {
-	let attApiHeaders = Configuration.get('ATTApiHeaders');
-	let User = attApiHeaders && attApiHeaders.userId;
+	let catalogApiHeaders = Configuration.get('CatalogApiHeaders');
+	let User = catalogApiHeaders && catalogApiHeaders.userId;
 	let userId = User && User.value ? User.value : '';
 	return userId;
 }
 
 function baseUrl() {
-	const restATTPrefix = Configuration.get('restATTPrefix');
-	return `${restATTPrefix}`;
+	const restCatalogPrefix = Configuration.get('restCatalogPrefix');
+	return `${restCatalogPrefix}`;
 }
 
 
