diff --git a/dox-sequence-diagram-ui/package.json b/dox-sequence-diagram-ui/package.json
index 3aeb057..d469310 100644
--- a/dox-sequence-diagram-ui/package.json
+++ b/dox-sequence-diagram-ui/package.json
@@ -15,10 +15,10 @@
     "d3": "^3.5.16",
     "lodash": "^4.12.0",
     "prop-types": "^15.6.0",
-    "react": "^15.6.2",
-    "react-dnd": "^2.5.4",
-    "react-dnd-html5-backend": "^2.5.4",
-    "react-dom": "^15.6.2",
+    "react": "^15.1.0",
+    "react-dnd": "^2.1.2",
+    "react-dnd-html5-backend": "^2.1.2",
+    "react-dom": "^15.1.0",
     "react-redux": "^4.4.5",
     "react-select": "1.0.0-rc.5",
     "redux": "^3.5.2"
@@ -45,11 +45,11 @@
     "file-loader": "^0.8.5",
     "json-loader": "^0.5.4",
     "node-http-proxy": "^0.2.3",
-    "node-sass": "^4.5.3",
+    "node-sass": "^3.7.0",
     "path": "^0.12.7",
     "raw-loader": "^0.5.1",
     "redux-devtools": "^3.3.1",
-    "sass-loader": "^6.0.6",
+    "sass-loader": "^3.2.0",
     "style-loader": "^0.13.1",
     "svg-sprite-loader": "0.0.19",
     "url-loader": "^0.5.7",
diff --git a/openecomp-ui/.babelrc b/openecomp-ui/.babelrc
index 378bcda..1545202 100644
--- a/openecomp-ui/.babelrc
+++ b/openecomp-ui/.babelrc
@@ -1,15 +1,13 @@
 {
-    "presets": [["env", {
-		"targets": {
-			"browsers": ["last 2 versions", "Firefox >= 47"]
-		}
-	}],"react"],
+	"presets": [["es2015", { "modules": false }],"stage-0", "react"],
 	"plugins": [
+		"transform-es2015-modules-commonjs",
+		"transform-es2015-destructuring",
+		"transform-es2015-spread",
 		"transform-object-rest-spread",
 		"transform-class-properties",
 		"transform-runtime",
 		"transform-decorators-legacy",
-		"transform-runtime",
 		"react-hot-loader/babel"
 	],
 	"sourceMap": "inline"
diff --git a/openecomp-ui/package.json b/openecomp-ui/package.json
index 4b7fa61..acf7d6f 100644
--- a/openecomp-ui/package.json
+++ b/openecomp-ui/package.json
@@ -34,16 +34,16 @@
     "md5": "^2.1.0",
     "prop-types": "^15.6.0",
     "randomstring": "^1.1.5",
-    "react": "^15.6.2",
-    "react-bootstrap": "^0.31.5",
+    "react": "~15.3.2",
+    "react-bootstrap": "^0.30.1",
     "react-click-outside": "^2.3.1",
-    "react-datepicker": "^0.61.0",
+    "react-datepicker": "^0.48.0",
     "react-dnd": "^2.5.4",
     "react-dnd-html5-backend": "^2.5.4",
-    "react-dom": "^15.6.2",
-    "react-dropzone": "4.2.3",
+    "react-dom": "~15.3.2",
+    "react-dropzone": "3.7.3",
     "react-input-autosize": "^2.2.0",
-    "react-redux": "^4.4.5",
+    "react-redux": "^4.4.1",
     "react-select": "1.0.0-rc.5",
     "react-show-more": "^1.1.1",
     "react-sortable": "^1.2.0",
@@ -67,7 +67,7 @@
     "babel-plugin-transform-es2015-spread": "^6.8.0",
     "babel-plugin-transform-object-rest-spread": "^6.8.0",
     "babel-plugin-transform-runtime": "^6.22.0",
-    "babel-preset-env": "^1.6.1",
+    "babel-preset-es2015": "^6.24.0",
     "babel-preset-react": "^6.23.0",
     "babel-preset-stage-0": "^6.22.0",
     "css-loader": "^0.23.1",
@@ -89,7 +89,7 @@
     "http-proxy-middleware": "^0.17.4",
     "ignore-loader": "^0.1.1",
     "jasmine-core": "^2.5.2",
-    "jest": "^21.2.1",
+    "jest": "^19.0.2",
     "jshint": "^2.9.4",
     "json-loader": "^0.5.4",
     "jsx-loader": "^0.13.2",
@@ -98,10 +98,10 @@
     "node-watch": "^0.3.5",
     "prompt": "^0.2.14",
     "react-addons-test-utils": "~15.3.2",
-    "react-datepicker": "^0.61.0",
+    "react-click-outside": "^2.3.1",
     "react-hot-loader": "^3.1.3",
     "rosie": "^1.6.0",
-    "sass-loader": "^6.0.6",
+    "sass-loader": "^3.2.3",
     "source-map-loader": "^0.1.5",
     "storyshots": "^3.2.2",
     "style-loader": "^0.13.0",
diff --git a/openecomp-ui/pom.xml b/openecomp-ui/pom.xml
index 39193c1..311403e 100644
--- a/openecomp-ui/pom.xml
+++ b/openecomp-ui/pom.xml
@@ -76,8 +76,8 @@
                             <goal>install-node-and-npm</goal>
                         </goals>
                         <configuration>
-                            <nodeVersion>v8.9.2</nodeVersion>
-                            <npmVersion>5.5.1</npmVersion>
+                            <nodeVersion>v6.9.5</nodeVersion>
+                            <npmVersion>3.10.10</npmVersion>
                         </configuration>
                     </execution>
 
diff --git a/openecomp-ui/test-utils/Util.js b/openecomp-ui/test-utils/Util.js
index ee05f13..1614c1e 100644
--- a/openecomp-ui/test-utils/Util.js
+++ b/openecomp-ui/test-utils/Util.js
@@ -17,7 +17,7 @@
 import times from 'lodash/times';
 import pick from 'lodash/pick';
 import intersection from 'lodash/intersection';
-import ReactTestUtils from 'react-dom/test-utils';
+import ReactTestUtils from 'react-addons-test-utils';
 
 export const buildListFromFactory = (factory, quantity = 3, overrides) => {
 	let list = [];
diff --git a/openecomp-ui/test/flows/FlowsListEditor.test.js b/openecomp-ui/test/flows/FlowsListEditor.test.js
index 5b57e8b..8cdea7b 100644
--- a/openecomp-ui/test/flows/FlowsListEditor.test.js
+++ b/openecomp-ui/test/flows/FlowsListEditor.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps} from 'sdc-app/flows/FlowsListEditor.js';
 import FlowsListEditorView from 'sdc-app/flows/FlowsListEditorView.jsx';
 
@@ -113,7 +113,7 @@
 	});
 
 	it('basic view component run with empty flowList and should show the list', () => {
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		let currentFlow = FlowBasicFactory.build();
 		renderer.render(<FlowsListEditorView shouldShowWorkflowsEditor={true} flowList={[currentFlow]}/>);
 		let renderedOutput = renderer.getRenderOutput();
@@ -122,14 +122,14 @@
 
 	it('basic view component run with empty flowList and should show the diagram', () => {
 		const flow = FlowUpdateRequestFactory.build();
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<FlowsListEditorView currentFlow={flow} shouldShowWorkflowsEditor={false} flowList={[flow]}/>);
 		let renderedOutput = renderer.getRenderOutput();
 		expect(renderedOutput).toBeTruthy();
 	});
 
 	it('basic view component run with empty flowList and should show popup modal', () => {
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		let currentFlow = FlowBasicFactory.build();
 		renderer.render(<FlowsListEditorView isDisplayModal={true} shouldShowWorkflowsEditor={true} flowList={[currentFlow]}/>);
 		let renderedOutput = renderer.getRenderOutput();
diff --git a/openecomp-ui/test/flows/flowsEditorModal.test.js b/openecomp-ui/test/flows/flowsEditorModal.test.js
index cc6525f..53506b8 100644
--- a/openecomp-ui/test/flows/flowsEditorModal.test.js
+++ b/openecomp-ui/test/flows/flowsEditorModal.test.js
@@ -15,10 +15,10 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps} from 'sdc-app/flows/FlowsEditorModal.js';
 import FlowsEditorModalView from 'sdc-app/flows/FlowsEditorModalView.jsx';
-import ShallowRenderer from 'react-test-renderer/shallow';
+
 import {FlowBasicFactory} from 'test-utils/factories/flows/FlowsFactories.js';
 
 describe('Flows Editor Modal Mapper and View Classes: ', function () {
@@ -54,7 +54,7 @@
 	});
 
 	it('basic modal view component run with empty artifact', () => {
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<FlowsEditorModalView
 				onCancel={()=>{}}
diff --git a/openecomp-ui/test/licenseModel/creation/LicenseModelCreation.test.js b/openecomp-ui/test/licenseModel/creation/LicenseModelCreation.test.js
index 9c8043b..9537ea2 100644
--- a/openecomp-ui/test/licenseModel/creation/LicenseModelCreation.test.js
+++ b/openecomp-ui/test/licenseModel/creation/LicenseModelCreation.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps } from 'sdc-app/onboarding/licenseModel/creation/LicenseModelCreation.js';
 import LicenseModelCreationView from 'sdc-app/onboarding/licenseModel/creation/LicenseModelCreationView.jsx';
 import {LicenseModelCreationFactory} from 'test-utils/factories/licenseModel/LicenseModelFactories.js';
@@ -66,7 +66,7 @@
 
 	it('simple jsx test', () => {
 		let data = LicenseModelCreationFactory.build();
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<LicenseModelCreationView
 				data={data}
diff --git a/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupEditor.test.js b/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupEditor.test.js
index d0b6ec3..da57b03 100644
--- a/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupEditor.test.js
+++ b/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupEditor.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps} from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditor.js';
 import FeatureGroupEditorView from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupEditorView.jsx';
 import {LicenseModelOverviewFactory} from 'test-utils/factories/licenseModel/LicenseModelFactories.js';
diff --git a/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js b/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js
index 976d988..b9bb656 100644
--- a/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js
+++ b/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps} from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js';
 import FeatureGroupsListEditorView from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx';
 import { FeatureGroupStoreFactory } from 'test-utils/factories/licenseModel/FeatureGroupFactories.js';
diff --git a/openecomp-ui/test/licenseModel/overview/listItems/EntitlementPool.test.js b/openecomp-ui/test/licenseModel/overview/listItems/EntitlementPool.test.js
index 8f9c314..319206f 100644
--- a/openecomp-ui/test/licenseModel/overview/listItems/EntitlementPool.test.js
+++ b/openecomp-ui/test/licenseModel/overview/listItems/EntitlementPool.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import EntitlementPool from 'src/sdc-app/onboarding/licenseModel/overview/listItems/EntitlementPool.jsx';
 import {EntitlementPoolListItemFactory} from 'test-utils/factories/licenseModel/EntitlementPoolFactories.js';
 
diff --git a/openecomp-ui/test/licenseModel/overview/listItems/FeatureGroup.test.js b/openecomp-ui/test/licenseModel/overview/listItems/FeatureGroup.test.js
index 0330e50..e2747e1 100644
--- a/openecomp-ui/test/licenseModel/overview/listItems/FeatureGroup.test.js
+++ b/openecomp-ui/test/licenseModel/overview/listItems/FeatureGroup.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import FeatureGroup from 'src/sdc-app/onboarding/licenseModel/overview/listItems/FeatureGroup.jsx';
 import {scryRenderedDOMComponentsWithTestId} from 'test-utils/Util.js';
 import {FeatureGroupListItemFactory} from 'test-utils/factories/licenseModel/FeatureGroupFactories.js';
diff --git a/openecomp-ui/test/licenseModel/overview/listItems/LicenseAgreement.test.js b/openecomp-ui/test/licenseModel/overview/listItems/LicenseAgreement.test.js
index de05d87..84ce90f 100644
--- a/openecomp-ui/test/licenseModel/overview/listItems/LicenseAgreement.test.js
+++ b/openecomp-ui/test/licenseModel/overview/listItems/LicenseAgreement.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import LicenseAgreement from 'src/sdc-app/onboarding/licenseModel/overview/listItems/LicenseAgreement.jsx';
 import {scryRenderedDOMComponentsWithTestId} from 'test-utils/Util.js';
 import {LicenseAgreementListItemFactory} from 'test-utils/factories/licenseModel/LicenseAgreementFactories.js';
diff --git a/openecomp-ui/test/licenseModel/overview/listItems/LicenseKeyGroup.test.js b/openecomp-ui/test/licenseModel/overview/listItems/LicenseKeyGroup.test.js
index b1c762a..9f0f151 100644
--- a/openecomp-ui/test/licenseModel/overview/listItems/LicenseKeyGroup.test.js
+++ b/openecomp-ui/test/licenseModel/overview/listItems/LicenseKeyGroup.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import LicenseKeyGroup from 'src/sdc-app/onboarding/licenseModel/overview/listItems/LicenseKeyGroup.jsx';
 import {LicenseKeyGroupListItemFactory} from 'test-utils/factories/licenseModel/LicenseKeyGroupFactories.js';
 
diff --git a/openecomp-ui/test/licenseModel/overview/summary/SummaryCountList.test.js b/openecomp-ui/test/licenseModel/overview/summary/SummaryCountList.test.js
index 2f0bbfa..03159f7 100644
--- a/openecomp-ui/test/licenseModel/overview/summary/SummaryCountList.test.js
+++ b/openecomp-ui/test/licenseModel/overview/summary/SummaryCountList.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 
 import {mapStateToProps, SummaryCountList} from 'sdc-app/onboarding/licenseModel/overview/summary/SummaryCountList.js';
 import LicenseModelDescriptionEdit from 'sdc-app/onboarding/licenseModel/overview/summary/LicenseModelDescriptionEdit.jsx';
diff --git a/openecomp-ui/test/licenseModel/overview/summary/VendorDataView.test.js b/openecomp-ui/test/licenseModel/overview/summary/VendorDataView.test.js
index ebf73c3..dd5fa5a 100644
--- a/openecomp-ui/test/licenseModel/overview/summary/VendorDataView.test.js
+++ b/openecomp-ui/test/licenseModel/overview/summary/VendorDataView.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps, VendorDataView} from 'sdc-app/onboarding/licenseModel/overview/summary/VendorDataView.js';
 import {LicenseModelOverviewFactory, LicenseModelStoreFactory} from 'test-utils/factories/licenseModel/LicenseModelFactories.js';
 
diff --git a/openecomp-ui/test/licenseModel/overview/views.test.js b/openecomp-ui/test/licenseModel/overview/views.test.js
index 3d57c93..20b733d 100644
--- a/openecomp-ui/test/licenseModel/overview/views.test.js
+++ b/openecomp-ui/test/licenseModel/overview/views.test.js
@@ -15,8 +15,8 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
-import TestUtils from 'react-dom/test-utils';
+
+import TestUtils from 'react-addons-test-utils';
 import {scryRenderedDOMComponentsWithTestId} from 'test-utils/Util.js';
 import SummaryView from 'sdc-app/onboarding/licenseModel/overview/SummaryView.jsx';
 import LicenseModelOverviewView from 'sdc-app/onboarding/licenseModel/overview/LicenseModelOverviewView.jsx';
@@ -38,7 +38,7 @@
 	const baseLAData =  LicenseAgreementListItemFactory.build({isCollapse: false});
 
 	it('should render SummaryView', () => {
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<SummaryView isReadOnly={false} />
 		);
@@ -61,7 +61,7 @@
 			selectedTab: selectedButton.VLM_LIST_VIEW,
 			onTabSelect: () => {}
 		};
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<LicenseModelOverviewView {...params}/>
 		);
diff --git a/openecomp-ui/test/nfvo-components/SubmitErrorResponse.test.js b/openecomp-ui/test/nfvo-components/SubmitErrorResponse.test.js
index ecb7159..27be13b 100644
--- a/openecomp-ui/test/nfvo-components/SubmitErrorResponse.test.js
+++ b/openecomp-ui/test/nfvo-components/SubmitErrorResponse.test.js
@@ -16,7 +16,7 @@
 
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 
 import SubmitErrorResponse from 'nfvo-components/SubmitErrorResponse.jsx';
 import {SubmitErrorMessageFactory} from 'test-utils/factories/SubnitErrorMessageFactorie.js';
diff --git a/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js b/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js
index 505bc91..7a86933 100644
--- a/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js
+++ b/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js
@@ -16,8 +16,8 @@
 
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
-import TestUtils from 'react-dom/test-utils';
+
+import TestUtils from 'react-addons-test-utils';
 import TabulatedEditor from 'nfvo-components/editor/TabulatedEditor.jsx';
 import { Provider } from 'react-redux';
 import {storeCreator} from 'sdc-app/AppStore.js';
@@ -25,7 +25,7 @@
 describe('Tabulated Editor test: ', function () {
 	const store = storeCreator();
 	it('basic view test', () => {
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<Provider store={store}><TabulatedEditor><button>test</button></TabulatedEditor></Provider>
 		);
diff --git a/openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js b/openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js
index 2df15c6..1af7e44 100644
--- a/openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js
+++ b/openecomp-ui/test/nfvo-components/input/dualListBox/dualListbox.test.js
@@ -15,9 +15,9 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import DualListboxView from 'nfvo-components/input/dualListbox/DualListboxView.jsx';
-import ShallowRenderer from 'react-test-renderer/shallow';
+
 
 const ITEMS = [{id: '1', name: 'aaa'}, {id: '2', name: 'bbb'}, {id: '3', name: 'ccc'}];
 
@@ -25,7 +25,7 @@
 
 
 	it('should render basically', () => {
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<DualListboxView onChange={()=>{}}/>);
 		var renderedOutput = renderer.getRenderOutput();
 		expect(renderedOutput).toBeTruthy();
diff --git a/openecomp-ui/test/nfvo-components/input/validation/input.test.js b/openecomp-ui/test/nfvo-components/input/validation/input.test.js
index 719e01f..f27e206 100644
--- a/openecomp-ui/test/nfvo-components/input/validation/input.test.js
+++ b/openecomp-ui/test/nfvo-components/input/validation/input.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import {scryRenderedDOMComponentsWithTestId} from 'test-utils/Util.js';
 import Input from 'nfvo-components/input/validation/Input.jsx';
 import Overlay from 'react-bootstrap/lib/Overlay.js';
diff --git a/openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js b/openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js
index a0c1c99..bcc72e3 100644
--- a/openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js
+++ b/openecomp-ui/test/nfvo-components/listEditor/listEditor.test.js
@@ -16,7 +16,7 @@
 
 import React from 'react';
 import {mount} from 'enzyme';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import ListEditorView from 'src/nfvo-components/listEditor/ListEditorView.jsx';
 import ListEditorItemView from 'src/nfvo-components/listEditor/ListEditorItemView.jsx';
 
diff --git a/openecomp-ui/test/nfvo-components/modal/globalModal.test.js b/openecomp-ui/test/nfvo-components/modal/globalModal.test.js
index 0636aed..a67f02c 100644
--- a/openecomp-ui/test/nfvo-components/modal/globalModal.test.js
+++ b/openecomp-ui/test/nfvo-components/modal/globalModal.test.js
@@ -16,7 +16,7 @@
 
 import GlobalModal, {GlobalModalView, mapStateToProps} from 'src/nfvo-components/modal/GlobalModal.js';
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import store from 'sdc-app/AppStore.js';
 import {actionTypes, typeEnum} from 'src/nfvo-components/modal/GlobalModalConstants.js';
 
@@ -57,7 +57,7 @@
 
 		expect(store.getState().modal).toBeTruthy();
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<GlobalModal store={store}/>);
 		let renderedOutput = renderer.getRenderOutput();
 		expect(renderedOutput).toBeTruthy();
@@ -69,7 +69,7 @@
 		store.dispatch({type: actionTypes.GLOBAL_MODAL_SHOW, data: {title, msg}});
 
 		expect(store.getState().modal).toBeTruthy();
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<GlobalModal store={store}/>);
 		let renderedOutput = renderer.getRenderOutput();
 		expect(renderedOutput).toBeTruthy();
@@ -81,7 +81,7 @@
 
 	it('checking component default render', ()=> {
 		expect(window.document).toBeTruthy();
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<GlobalModalView show={true} type={typeEnum.WARNING} title={title} msg={msg} onDeclined={()=>{}} />);
 		const globalModalView = renderer.getRenderOutput();
 		expect(globalModalView).toBeTruthy();
diff --git a/openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js b/openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js
index 73dd6b6..5b68319 100644
--- a/openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js
+++ b/openecomp-ui/test/nfvo-components/panel/VersionController/versionController.test.js
@@ -16,8 +16,8 @@
 
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
-import TestUtils from 'react-dom/test-utils';
+
+import TestUtils from 'react-addons-test-utils';
 import VersionController from 'nfvo-components/panel/versionController/VersionController.jsx';
 import {actionsEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
 import {scryRenderedDOMComponentsWithTestId} from 'test-utils/Util.js';
@@ -36,7 +36,7 @@
 	const store = storeCreator();
 
 	it('function does exist', () => {
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 
 		renderer.render(<Provider store={store}><VersionController {...props} /></Provider>);
 		var renderedOutput = renderer.getRenderOutput();
diff --git a/openecomp-ui/test/onboard/onboardingCatalog/views.test.js b/openecomp-ui/test/onboard/onboardingCatalog/views.test.js
index 9b9a0b7..f8cff41 100644
--- a/openecomp-ui/test/onboard/onboardingCatalog/views.test.js
+++ b/openecomp-ui/test/onboard/onboardingCatalog/views.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import {defaultStoreFactory} from 'test-utils/factories/onboard/OnboardingCatalogFactories.js';
 import {FinalizedLicenseModelFactory} from 'test-utils/factories/licenseModel/LicenseModelFactories.js';
 import {VSPEditorFactory} from 'test-utils/factories/softwareProduct/SoftwareProductEditorFactories.js';
diff --git a/openecomp-ui/test/permissions/permissionsManaager.test.js b/openecomp-ui/test/permissions/permissionsManaager.test.js
index d835276..abae39d 100644
--- a/openecomp-ui/test/permissions/permissionsManaager.test.js
+++ b/openecomp-ui/test/permissions/permissionsManaager.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 
 import {UserFactory} from 'test-utils/factories/users/UsersFactories.js';
 import {mapStateToProps} from 'sdc-app/onboarding/permissions/PermissionsManager.js';
diff --git a/openecomp-ui/test/revisions/revisions.test.js b/openecomp-ui/test/revisions/revisions.test.js
index 73650f2..d47c2d2 100644
--- a/openecomp-ui/test/revisions/revisions.test.js
+++ b/openecomp-ui/test/revisions/revisions.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import {scryRenderedDOMComponentsWithTestId} from 'test-utils/Util.js';
 import deepFreeze from 'deep-freeze';
 import mockRest from 'test-utils/MockRest.js';
@@ -31,7 +31,7 @@
 import {UserFactory} from 'test-utils/factories/users/UsersFactories.js';
 import VersionFactory from 'test-utils/factories/common/VersionFactory.js';
 import {screenTypes} from 'sdc-app/onboarding/OnboardingConstants.js';
-import ReactTestUtils from 'react-dom/test-utils';
+import ReactTestUtils from 'react-addons-test-utils';
 import {enums} from 'sdc-app/onboarding/OnboardingConstants.js';
 
 const state = {};
diff --git a/openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js b/openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js
index f610f6d..cebd1ee 100644
--- a/openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js
+++ b/openecomp-ui/test/softwareProduct/attachments/SoftwareProductAttachmentsView.test.js
@@ -15,8 +15,8 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
-import TestUtils from 'react-dom/test-utils';
+
+import TestUtils from 'react-addons-test-utils';
 import {VSPAttachmentTreeNodeWithChildrenFactory, VSPAttachmentDetailedError} from 'test-utils/factories/softwareProduct/SoftwareProductAttachmentsFactories.js';
 import {defaultStoreFactory} from 'test-utils/factories/onboard/OnboardingCatalogFactories.js';
 
@@ -69,7 +69,7 @@
 		let data = defaultStoreFactory.build({softwareProduct: {softwareProductAttachments, softwareProductEditor: {data: {...versionControllerData}}}});
 		var params = mapStateToProps(data);
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<SoftwareProductAttachmentsView {...params}/>);
 		var renderedOutput = renderer.getRenderOutput();
 		expect(renderedOutput).toBeTruthy();
diff --git a/openecomp-ui/test/softwareProduct/attachments/setup/heatSetup.test.js b/openecomp-ui/test/softwareProduct/attachments/setup/heatSetup.test.js
index 97df10f..9d80e58 100644
--- a/openecomp-ui/test/softwareProduct/attachments/setup/heatSetup.test.js
+++ b/openecomp-ui/test/softwareProduct/attachments/setup/heatSetup.test.js
@@ -15,7 +15,7 @@
  */
 import React from 'react';
 
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetup.js';
 import HeatSetupView from 'sdc-app/onboarding/softwareProduct/attachments/setup/HeatSetupView.jsx';
 import {storeCreator} from 'sdc-app/AppStore.js';
diff --git a/openecomp-ui/test/softwareProduct/attachments/validation/HeatValidationView.test.js b/openecomp-ui/test/softwareProduct/attachments/validation/HeatValidationView.test.js
index 8dee07d..3b7c3b7 100644
--- a/openecomp-ui/test/softwareProduct/attachments/validation/HeatValidationView.test.js
+++ b/openecomp-ui/test/softwareProduct/attachments/validation/HeatValidationView.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps}  from 'sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidation.js';
 
 import HeatValidationView from 'sdc-app/onboarding/softwareProduct/attachments/validation/HeatValidationView.jsx';
@@ -165,7 +165,7 @@
 		var onDeSelect = () => { return null; } ;
 		var onToggle = () => { return null; } ;
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<HeatValidationView
 			attachmentsTree={atTree}
 			errorList={errorList}
diff --git a/openecomp-ui/test/softwareProduct/components/compute/SoftwareProductComponentComputeEditor.test.js b/openecomp-ui/test/softwareProduct/components/compute/SoftwareProductComponentComputeEditor.test.js
index f673897..f7ffcf9 100644
--- a/openecomp-ui/test/softwareProduct/components/compute/SoftwareProductComponentComputeEditor.test.js
+++ b/openecomp-ui/test/softwareProduct/components/compute/SoftwareProductComponentComputeEditor.test.js
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps as computeEditorMapStateToProps} from 'sdc-app/onboarding/softwareProduct/components/compute/computeComponents/computeFlavor/ComputeFlavorEditor.js';
 import ComputeEditorView from 'sdc-app/onboarding/softwareProduct/components/compute/computeComponents/computeFlavor/ComputeFlavorEditorView.jsx';
 
@@ -77,7 +77,7 @@
 			onCancel: () => {}
 		};
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<ComputeEditorView {...props}/>);
 		var renderedOutput = renderer.getRenderOutput();
 		expect(renderedOutput).toBeTruthy();
diff --git a/openecomp-ui/test/softwareProduct/components/compute/SoftwareProductComponentsComputes.test.js b/openecomp-ui/test/softwareProduct/components/compute/SoftwareProductComponentsComputes.test.js
index f48a19a..f3801be 100644
--- a/openecomp-ui/test/softwareProduct/components/compute/SoftwareProductComponentsComputes.test.js
+++ b/openecomp-ui/test/softwareProduct/components/compute/SoftwareProductComponentsComputes.test.js
@@ -16,7 +16,7 @@
 
 import deepFreeze from 'deep-freeze';
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {storeCreator} from 'sdc-app/AppStore.js';
 import ComputeFlavors from 'sdc-app/onboarding/softwareProduct/components/compute/computeComponents/ComputeFlavors.js';
 import {ComputeFlavorBaseData} from 'test-utils/factories/softwareProduct/SoftwareProductComponentsComputeFactory.js';
@@ -32,7 +32,7 @@
 
 		const ComputeFlavorsList = ComputeFlavorBaseData.buildList(1);
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<ComputeFlavors
 				store={store}
diff --git a/openecomp-ui/test/softwareProduct/components/general/SoftwareProductComponentsGeneral.test.js b/openecomp-ui/test/softwareProduct/components/general/SoftwareProductComponentsGeneral.test.js
index 09e8ad6..5029f6a 100644
--- a/openecomp-ui/test/softwareProduct/components/general/SoftwareProductComponentsGeneral.test.js
+++ b/openecomp-ui/test/softwareProduct/components/general/SoftwareProductComponentsGeneral.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps}  from 'sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneral.js';
 import SoftwareProductComponentsGeneralView from 'sdc-app/onboarding/softwareProduct/components/general/SoftwareProductComponentsGeneralView.jsx';
 //import {statusEnum as versionStatusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
@@ -73,7 +73,7 @@
 			name: ''
 		};
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<SoftwareProductComponentsGeneralView
 				componentData={componentData}
diff --git a/openecomp-ui/test/softwareProduct/components/loadBalancing/softwareProductComponentLoadbalancing.test.js b/openecomp-ui/test/softwareProduct/components/loadBalancing/softwareProductComponentLoadbalancing.test.js
index b78a96e..5ccee32 100644
--- a/openecomp-ui/test/softwareProduct/components/loadBalancing/softwareProductComponentLoadbalancing.test.js
+++ b/openecomp-ui/test/softwareProduct/components/loadBalancing/softwareProductComponentLoadbalancing.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps}  from 'sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancing.js';
 import SoftwareProductComponentLoadBalancingView from 'sdc-app/onboarding/softwareProduct/components/loadBalancing/SoftwareProductComponentLoadBalancingRefView.jsx';
 
@@ -65,7 +65,7 @@
 
 		const versionControllerData = VSPComponentsVersionControllerFactory.build();
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<SoftwareProductComponentLoadBalancingView
 				softwareProductComponents={softwareProductComponents}
diff --git a/openecomp-ui/test/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.test.js b/openecomp-ui/test/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.test.js
index 5447fc0..2428f2a 100644
--- a/openecomp-ui/test/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.test.js
+++ b/openecomp-ui/test/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.test.js
@@ -15,8 +15,8 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
-import TestUtils from 'react-dom/test-utils';
+
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoring.js';
 import SoftwareProductComponentsMonitoringView from 'sdc-app/onboarding/softwareProduct/components/monitoring/SoftwareProductComponentsMonitoringView.jsx';
 
@@ -66,7 +66,7 @@
 		expect(results.filenames[trap]).toEqual(undefined);
 		expect(results.filenames[ves]).toEqual(undefined);
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<SoftwareProductComponentsMonitoringView {...results} />);
 		let renderedOutput = renderer.getRenderOutput();
 		expect(renderedOutput).toBeTruthy();
@@ -80,7 +80,7 @@
 		expect(results.filenames[trap]).toEqual(monitoring[trap]);
 		expect(results.filenames[ves]).toEqual(monitoring[ves]);
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<SoftwareProductComponentsMonitoringView {...results} />);
 		let renderedOutput = renderer.getRenderOutput();
 		expect(renderedOutput).toBeTruthy();
diff --git a/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNICEditor.test.js b/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNICEditor.test.js
index ff0371a..1a1aacf 100644
--- a/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNICEditor.test.js
+++ b/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNICEditor.test.js
@@ -15,8 +15,8 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
-import TestUtils from 'react-dom/test-utils';
+
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps}  from 'sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditor.js';
 import SoftwareProductComponentsNICEditorView from 'sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNICEditorView.jsx';
 
@@ -82,7 +82,7 @@
 			protocols: []
 		};
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<SoftwareProductComponentsNICEditorView {...props}/>);
 		var renderedOutput = renderer.getRenderOutput();
 		expect(renderedOutput).toBeTruthy();
diff --git a/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetwork.test.js b/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetwork.test.js
index 129bd42..816f615 100644
--- a/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetwork.test.js
+++ b/openecomp-ui/test/softwareProduct/components/network/SoftwareProductComponentsNetwork.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps}  from 'sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkList.js';
 import SoftwareProductComponentsNetworkListView from 'sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkListView.jsx';
 
@@ -71,7 +71,7 @@
 
 		const nicList = VSPComponentsNicWithIdFactory.buildList(1);
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<SoftwareProductComponentsNetworkListView
 				versionControllerData={versionControllerData}
diff --git a/openecomp-ui/test/softwareProduct/components/processes/SoftwareProductComponentsProcessesEditor.test.js b/openecomp-ui/test/softwareProduct/components/processes/SoftwareProductComponentsProcessesEditor.test.js
index 22be28e..a59c629 100644
--- a/openecomp-ui/test/softwareProduct/components/processes/SoftwareProductComponentsProcessesEditor.test.js
+++ b/openecomp-ui/test/softwareProduct/components/processes/SoftwareProductComponentsProcessesEditor.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps}  from 'sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditor.js';
 import SoftwareProductComponentProcessesEditorView from 'sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesEditorView.jsx';
 
diff --git a/openecomp-ui/test/softwareProduct/components/processes/SoftwareProductComponentsProcessesView.test.js b/openecomp-ui/test/softwareProduct/components/processes/SoftwareProductComponentsProcessesView.test.js
index 5a4dc61..8396f79 100644
--- a/openecomp-ui/test/softwareProduct/components/processes/SoftwareProductComponentsProcessesView.test.js
+++ b/openecomp-ui/test/softwareProduct/components/processes/SoftwareProductComponentsProcessesView.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesList.js';
 import SoftwareProductComponentsProcessesView from 'sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentsProcessesListView.jsx';
 
@@ -57,7 +57,7 @@
 		const currentSoftwareProductComponent = VSPComponentsFactory.build();
 		const processesList = VSPProcessStoreFactory.buildList(2);
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<SoftwareProductComponentsProcessesView
 				processesList={processesList}
diff --git a/openecomp-ui/test/softwareProduct/creation/SoftwareProductCreation.test.js b/openecomp-ui/test/softwareProduct/creation/SoftwareProductCreation.test.js
index da23d12..695f24d 100644
--- a/openecomp-ui/test/softwareProduct/creation/SoftwareProductCreation.test.js
+++ b/openecomp-ui/test/softwareProduct/creation/SoftwareProductCreation.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps, mapActionsToProps} from 'sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreation.js';
 import SoftwareProductCreationView from 'sdc-app/onboarding/softwareProduct/creation/SoftwareProductCreationView.jsx';
 import {SoftwareProductCreationFactory, SoftwareProductCreationFactoryWithSelectedVendor} from 'test-utils/factories/softwareProduct/SoftwareProductCreationFactories.js';
@@ -83,7 +83,7 @@
 			}
 		};
 		let props = Object.assign({}, mapStateToProps(state), mapActionsToProps(dispatch));
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<SoftwareProductCreationView {...props}/>
 			);
@@ -107,7 +107,7 @@
 			}
 		};
 		let props = Object.assign({}, mapStateToProps(state), mapActionsToProps(dispatch));
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<SoftwareProductCreationView {...props}/>
 		);
diff --git a/openecomp-ui/test/softwareProduct/deployment/SoftwareProductDeploymentEditor.test.js b/openecomp-ui/test/softwareProduct/deployment/SoftwareProductDeploymentEditor.test.js
index 79b041c..3d0f7fc 100644
--- a/openecomp-ui/test/softwareProduct/deployment/SoftwareProductDeploymentEditor.test.js
+++ b/openecomp-ui/test/softwareProduct/deployment/SoftwareProductDeploymentEditor.test.js
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
-import TestUtils from 'react-dom/test-utils';
+
+import TestUtils from 'react-addons-test-utils';
 import { mapStateToProps }  from 'sdc-app/onboarding/softwareProduct/deployment/editor/SoftwareProductDeploymentEditor.js';
 import SoftwareProductDeploymentEditorView from 'sdc-app/onboarding/softwareProduct/deployment/editor/SoftwareProductDeploymentEditorView.jsx';
 import { VSPComponentsFactory } from 'test-utils/factories/softwareProduct/SoftwareProductComponentsFactories.js';
@@ -67,7 +67,7 @@
 
 	it('jsx view test', () => {
 		const componentsList = VSPComponentsFactory.buildList(1);
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<SoftwareProductDeploymentEditorView
 				isReadOnlyMode={true}
diff --git a/openecomp-ui/test/softwareProduct/deployment/SoftwareProductDeploymentView.test.js b/openecomp-ui/test/softwareProduct/deployment/SoftwareProductDeploymentView.test.js
index 4b7f846..dff52ed 100644
--- a/openecomp-ui/test/softwareProduct/deployment/SoftwareProductDeploymentView.test.js
+++ b/openecomp-ui/test/softwareProduct/deployment/SoftwareProductDeploymentView.test.js
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps}  from 'sdc-app/onboarding/softwareProduct/deployment/SoftwareProductDeployment.js';
 import SoftwareProductDeploymentView from 'sdc-app/onboarding/softwareProduct/deployment/SoftwareProductDeploymentView.jsx';
 
@@ -60,7 +60,7 @@
 
 		const deploymentFlavors = VSPDeploymentStoreFactory.buildList(2);
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<SoftwareProductDeploymentView
 				deploymentFlavors={deploymentFlavors}
diff --git a/openecomp-ui/test/softwareProduct/details/detailsView.test.js b/openecomp-ui/test/softwareProduct/details/detailsView.test.js
index 1a5c5ef..5516f9e 100644
--- a/openecomp-ui/test/softwareProduct/details/detailsView.test.js
+++ b/openecomp-ui/test/softwareProduct/details/detailsView.test.js
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
+
 import {mapStateToProps} from 'sdc-app/onboarding/softwareProduct/details/SoftwareProductDetails.js';
 import SoftwareProductDetailsView from 'sdc-app/onboarding/softwareProduct/details/SoftwareProductDetailsView.jsx';
 import {VSPEditorFactory} from 'test-utils/factories/softwareProduct/SoftwareProductEditorFactories.js';
@@ -189,7 +189,7 @@
 			genericFieldInfo,
 			qGenericFieldInfo,
 		};
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<SoftwareProductDetailsView
 				{...params}
diff --git a/openecomp-ui/test/softwareProduct/landingPage/landingPage.test.js b/openecomp-ui/test/softwareProduct/landingPage/landingPage.test.js
index 85e86a6..33a0985 100644
--- a/openecomp-ui/test/softwareProduct/landingPage/landingPage.test.js
+++ b/openecomp-ui/test/softwareProduct/landingPage/landingPage.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 
 import {Provider} from 'react-redux';
 import {storeCreator} from 'sdc-app/AppStore.js';
diff --git a/openecomp-ui/test/softwareProduct/networks/SoftwareProductNetworksView.test.js b/openecomp-ui/test/softwareProduct/networks/SoftwareProductNetworksView.test.js
index 3822991..e4b1ef5 100644
--- a/openecomp-ui/test/softwareProduct/networks/SoftwareProductNetworksView.test.js
+++ b/openecomp-ui/test/softwareProduct/networks/SoftwareProductNetworksView.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps}  from 'sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworks.js';
 import SoftwareProductNetworksView from 'sdc-app/onboarding/softwareProduct/networks/SoftwareProductNetworksView.jsx';
 //import {statusEnum as versionStatusEnum} from 'nfvo-components/panel/versionController/VersionControllerConstants.js';
@@ -57,7 +57,7 @@
 		const networksList = VSPNetworkFactory.buildList(2);
 
 		const versionControllerData = VSPComponentsVersionControllerFactory.build();
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<SoftwareProductNetworksView isReadOnlyMode={true} networksList={networksList} versionControllerData={versionControllerData} currentSoftwareProduct={currentSoftwareProduct}/>);
 		var renderedOutput = renderer.getRenderOutput();
 		expect(renderedOutput).toBeTruthy();
diff --git a/openecomp-ui/test/softwareProduct/processes/SoftwareProductEditor.test.js b/openecomp-ui/test/softwareProduct/processes/SoftwareProductEditor.test.js
index 3ff092d..e61f267 100644
--- a/openecomp-ui/test/softwareProduct/processes/SoftwareProductEditor.test.js
+++ b/openecomp-ui/test/softwareProduct/processes/SoftwareProductEditor.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import TestUtils from 'react-dom/test-utils';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps}  from 'sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditor.js';
 import SoftwareProductProcessesEditorView from 'sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesEditorView.jsx';
 import {VSPEditorFactory} from 'test-utils/factories/softwareProduct/SoftwareProductEditorFactories.js';
diff --git a/openecomp-ui/test/softwareProduct/processes/SoftwareProductProcessesView.test.js b/openecomp-ui/test/softwareProduct/processes/SoftwareProductProcessesView.test.js
index 7e8ff90..345c469 100644
--- a/openecomp-ui/test/softwareProduct/processes/SoftwareProductProcessesView.test.js
+++ b/openecomp-ui/test/softwareProduct/processes/SoftwareProductProcessesView.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps}  from 'sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcesses.js';
 import SoftwareProductProcessesView from 'sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesView.jsx';
 
@@ -56,7 +56,7 @@
 		const versionControllerData = VSPComponentsVersionControllerFactory.build();
 
 
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(
 			<SoftwareProductProcessesView
 				processesList={processesList}
diff --git a/openecomp-ui/test/versionsPage/VersionsPage.test.js b/openecomp-ui/test/versionsPage/VersionsPage.test.js
index e066b37..b7e4071 100644
--- a/openecomp-ui/test/versionsPage/VersionsPage.test.js
+++ b/openecomp-ui/test/versionsPage/VersionsPage.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import deepFreeze from 'deep-freeze';
 import mockRest from 'test-utils/MockRest.js';
 import Configuration from 'sdc-app/config/Configuration.js';
@@ -72,7 +72,7 @@
 		const additionalProps = VersionsPageAdditionalPropsFactory.build();
 
 		const props = Object.assign({}, mapStateToProps(state), mapActionsToProps(dispatch, additionalProps));
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<VersionsPageView {...props} />);
 
 		const renderedOutput = renderer.getRenderOutput();
diff --git a/openecomp-ui/test/versionsPage/creation/VersionsPageCreation.test.js b/openecomp-ui/test/versionsPage/creation/VersionsPageCreation.test.js
index b6c7b09..78e8124 100644
--- a/openecomp-ui/test/versionsPage/creation/VersionsPageCreation.test.js
+++ b/openecomp-ui/test/versionsPage/creation/VersionsPageCreation.test.js
@@ -15,7 +15,7 @@
  */
 
 import React from 'react';
-import ShallowRenderer from 'react-test-renderer/shallow';
+import TestUtils from 'react-addons-test-utils';
 import {mapStateToProps, mapActionsToProps} from 'sdc-app/onboarding/versionsPage/creation/VersionsPageCreation.js';
 import {VERSION_CREATION_FORM_NAME} from 'sdc-app/onboarding/versionsPage/creation/VersionsPageCreationConstants.js';
 import VersionsPageCreationActionHelper from 'sdc-app/onboarding/versionsPage/creation/VersionsPageCreationActionHelper.js';
@@ -92,7 +92,7 @@
 		};
 
 		const props = Object.assign({}, mapStateToProps(state), mapActionsToProps(dispatch, additionalProps), additionalProps);
-		const renderer = new ShallowRenderer();
+		var renderer = TestUtils.createRenderer();
 		renderer.render(<VersionsPageCreationView {...props} />);
 
 		const renderedOutput = renderer.getRenderOutput();
