diff --git a/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js b/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js
new file mode 100644
index 0000000..4cd21fd
--- /dev/null
+++ b/ui-react/src/components/dialogs/Loop/ModifyLoopModal.js
@@ -0,0 +1,187 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2020 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
+ *
+ * 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.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ *
+ */
+
+import React, { forwardRef } from 'react'
+import MaterialTable from "material-table";
+import Button from 'react-bootstrap/Button';
+import Modal from 'react-bootstrap/Modal';
+import styled from 'styled-components';
+import PolicyToscaService from '../../../api/PolicyToscaService';
+import ArrowUpward from '@material-ui/icons/ArrowUpward';
+import ChevronLeft from '@material-ui/icons/ChevronLeft';
+import ChevronRight from '@material-ui/icons/ChevronRight';
+import Clear from '@material-ui/icons/Clear';
+import FirstPage from '@material-ui/icons/FirstPage';
+import LastPage from '@material-ui/icons/LastPage';
+import Search from '@material-ui/icons/Search';
+import LoopService from '../../../api/LoopService';
+
+
+const ModalStyled = styled(Modal)`
+	background-color: transparent;
+`
+const TextModal = styled.textarea`
+	margin-top: 20px;
+	white-space:pre;
+	background-color: ${props => props.theme.toscaTextareaBackgroundColor};
+	text-align: justify;
+	font-size: ${props => props.theme.toscaTextareaFontSize};
+	width: 100%;
+	height: 300px;
+`
+const cellStyle = { border: '1px solid black' };
+const headerStyle = { backgroundColor: '#ddd',	border: '2px solid black'	};
+const rowHeaderStyle = {backgroundColor:'#ddd',  fontSize: '15pt', text: 'bold', border: '1px solid black'};
+
+export default class ModifyLoopModal extends React.Component {
+
+	state = {
+		show: true,
+		loopCache: this.props.loopCache,
+		content: 'Please select Tosca model to view the details',
+		selectedRowData: {},
+		toscaPolicyModelsData: [],
+		toscaColumns: [
+			{ title: "#", field: "index", render: rowData => rowData.tableData.id + 1,
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
+			},
+			{ title: "Policy Model Type", field: "policyModelType",
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
+			},
+			{ title: "Policy Acronym", field: "policyAcronym",
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
+			},
+			{ title: "Version", field: "version",
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
+			},
+			{ title: "Uploaded By", field: "updatedBy",
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
+			},
+			{ title: "Uploaded Date", field: "updatedDate", editable: 'never',
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
+			},
+             { title: "Add", field: "updatedDate", editable: 'never',
+             	cellStyle: cellStyle,
+             	headerStyle: headerStyle
+             }
+		],
+		tableIcons: {
+		    FirstPage: forwardRef((props, ref) => <FirstPage {...props} ref={ref} />),
+		    LastPage: forwardRef((props, ref) => <LastPage {...props} ref={ref} />),
+		    NextPage: forwardRef((props, ref) => <ChevronRight {...props} ref={ref} />),
+		    PreviousPage: forwardRef((props, ref) => <ChevronLeft {...props} ref={ref} />),
+		    ResetSearch: forwardRef((props, ref) => <Clear {...props} ref={ref} />),
+		    Search: forwardRef((props, ref) => <Search {...props} ref={ref} />),
+		    SortArrow: forwardRef((props, ref) => <ArrowUpward {...props} ref={ref} />)
+		}
+	};
+
+	constructor(props, context) {
+		super(props, context);
+		this.handleClose = this.handleClose.bind(this);
+		this.getPolicyToscaModels = this.getToscaPolicyModels.bind(this);
+		this.handleYamlContent = this.handleYamlContent.bind(this);
+		this.getToscaPolicyModelYaml = this.getToscaPolicyModelYaml.bind(this);
+		this.handleAdd = this.handleAdd.bind(this);
+		this.getToscaPolicyModels();
+	}
+
+	componentWillReceiveProps(newProps) {
+		this.setState({
+			loopCache: newProps.loopCache,
+			temporaryPropertiesJson: JSON.parse(JSON.stringify(newProps.loopCache.getGlobalProperties()))
+		});
+	}
+
+	getToscaPolicyModels() {
+	    PolicyToscaService.getToscaPolicyModels().then(allToscaModels => {
+			this.setState({ toscaPolicyModelsData: allToscaModels});
+		});
+	}
+
+	getToscaPolicyModelYaml(policyModelType, policyModelVersion) {
+		if (typeof policyModelType !== "undefined") {
+			PolicyToscaService.getToscaPolicyModelYaml(policyModelType, policyModelVersion).then(toscaYaml => {
+				if (toscaYaml.length !== 0) {
+					this.setState({content: toscaYaml})
+				} else {
+					this.setState({ content: 'No Tosca model Yaml available' })
+				}
+			});
+		} else {
+			this.setState({ content: 'Please select Tosca model to view the details' })
+		}
+	}
+
+	handleYamlContent(event) {
+		this.setState({ content: event.target.value });
+	}
+
+	handleClose() {
+		this.setState({ show: false });
+		this.props.history.push('/');
+	}
+
+	handleAdd() {
+        LoopService.addOperationalPolicyType(this.state.loopCache.getLoopName(),this.state.selectedRowData.policyModelType,this.state.selectedRowData.version);
+        this.handleClose();
+        this.props.loadLoopFunction(this.state.loopCache.getLoopName());
+	}
+
+	render() {
+		return (
+			<ModalStyled size="xl" show={this.state.show} onHide={this.handleClose}>
+				<Modal.Header closeButton>
+				</Modal.Header>
+				<Modal.Body>
+					<MaterialTable
+					title={"View Tosca Policy Models"}
+					data={this.state.toscaPolicyModelsData}
+					columns={this.state.toscaColumns}
+					icons={this.state.tableIcons}
+					onRowClick={(event, rowData) => {this.getToscaPolicyModelYaml(rowData.policyModelType, rowData.version);this.setState({selectedRowData: rowData})}}
+					options={{
+						headerStyle: rowHeaderStyle,
+						rowStyle: rowData => ({
+							backgroundColor: (this.state.selectedRowData !== {} && this.state.selectedRowData.id === rowData.tableData.id) ? '#EEE' : '#FFF'
+						})
+					}}
+					/>
+					<div>
+						<TextModal value={this.state.content} onChange={this.handleYamlContent}/>
+					</div>
+				</Modal.Body>
+				<Modal.Footer>
+					<Button variant="secondary" type="null" onClick={this.handleClose}>Cancel</Button>
+					<Button variant="primary"  type="submit" onClick={this.handleAdd}>Add</Button>
+				</Modal.Footer>
+			</ModalStyled>
+		);
+	}
+}
diff --git a/ui-react/src/components/dialogs/Loop/OpenLoopModal.js b/ui-react/src/components/dialogs/Loop/OpenLoopModal.js
index fbfc727..4e8d978 100644
--- a/ui-react/src/components/dialogs/Loop/OpenLoopModal.js
+++ b/ui-react/src/components/dialogs/Loop/OpenLoopModal.js
@@ -68,15 +68,16 @@
 
 	getLoopNames() {
 		LoopService.getLoopNames().then(loopNames => {
-			const loopOptions = loopNames.map((loopName) => { return { label: loopName, value: loopName } });
-			this.setState({ loopNames: loopOptions })
+		    if (Object.entries(loopNames).length !== 0) {
+		        const loopOptions = loopNames.filter(loopName => loopName!=='undefined').map((loopName) => { return { label: loopName, value: loopName } });
+            	this.setState({ loopNames: loopOptions })
+		    }
 		});
 	}
 
 	handleOpen() {
 		console.info("Loop " + this.state.chosenLoopName + " is chosen");
-		this.setState({ show: false });
-		this.props.history.push('/');
+        this.handleClose();
 		this.props.loadLoopFunction(this.state.chosenLoopName);
 	}
 
diff --git a/ui-react/src/components/dialogs/Tosca/UploadToscaPolicyModal.js b/ui-react/src/components/dialogs/Tosca/UploadToscaPolicyModal.js
index 76beca7..2e0460f 100644
--- a/ui-react/src/components/dialogs/Tosca/UploadToscaPolicyModal.js
+++ b/ui-react/src/components/dialogs/Tosca/UploadToscaPolicyModal.js
@@ -28,7 +28,7 @@
 import Col from 'react-bootstrap/Col';
 import styled from 'styled-components';
 import Alert from 'react-bootstrap/Alert';
-import TemplateMenuService from '../../../api/TemplateMenuService';
+import PolicyToscaService from '../../../api/PolicyToscaService';
 
 const ModalStyled = styled(Modal)`
 	background-color: transparent;
@@ -37,7 +37,7 @@
 	constructor(props, context) {
 		super(props, context);
 
-		this.handleUploadToscaPolicyModel = this.handleUploadToscaPolicyModel.bind(this);
+		this.handleCreateFromToscaPolicyModel = this.handleCreateFromToscaPolicyModel.bind(this);
 		this.handleClose = this.handleClose.bind(this);
 		this.handlePolicyModelType = this.handlePolicyModelType.bind(this);
 		this.fileSelectedHandler = this.fileSelectedHandler.bind(this);
@@ -55,16 +55,10 @@
 		fileSelectedHandler = (event) => {
 				if (event.target.files && event.target.files[0]) {
 					const scope = this;
-  				let reader = new FileReader();
+  				    let reader = new FileReader();
 					this.setState({policyModelType: '', policyModelTosca: '' });
 					reader.onload = function(e) {
-					 	var lines = reader.result.split('\n');
-					 	for (var line = 0; line < lines.length; line++) {
-							if(lines[line].trim().slice(0, 24) === 'onap.policies.monitoring') {
-								var microsvc = lines[line].trim().slice(0, -1);
-								scope.setState({ policyModelType: microsvc, policyModelTosca:  reader.result});
-							}
-					  }
+					    scope.setState({ policyModelTosca:  reader.result});
 					};
 					console.log("Filename is", event.target.files[0]);
 					reader.readAsText(event.target.files[0]);
@@ -77,11 +71,11 @@
 		this.props.history.push('/');
 	}
 
-	handleUploadToscaPolicyModel(e) {
-    e.preventDefault();
+	handleCreateFromToscaPolicyModel(e) {
+        e.preventDefault();
 		console.log("Policy Model Type is", this.state.policyModelType);
 		if(this.state.policyModelType && this.state.policyModelTosca) {
- 		TemplateMenuService.uploadToscaPolicyModal(this.state.policyModelType, this.state.policyModelTosca).then(resp => {
+ 		PolicyToscaService.createPolicyModelFromToscaModel(this.state.policyModelType, this.state.policyModelTosca).then(resp => {
 			if(resp.status === 200) {
 			this.setState({apiResponseStatus: resp.status, apiResponseMessage: resp.message, upldBtnClicked: true});
 		} else {
@@ -103,7 +97,7 @@
 		return (
 			<ModalStyled size="lg" show={this.state.show} onHide={this.handleClose}>
 				<Modal.Header closeButton>
-					<Modal.Title>Upload Tosca Modal</Modal.Title>
+					<Modal.Title>Upload Tosca Model</Modal.Title>
 				</Modal.Header>
 				<Modal.Body>
 					<Form.Group as={Row} controlId="formPlaintextEmail">
@@ -114,7 +108,7 @@
 							<Alert variant="secondary">
 								<p>{this.state.selectedFile.name}</p>
 							</Alert>
-							<Form.Label column sm="2">Micro Service Name:</Form.Label>
+							<Form.Label column sm="2">Policy Model Type:</Form.Label>
 							<input type="text" style={{width: '50%'}}
 								value={this.state.policyModelType}
 								onChange={this.handlePolicyModelType}
@@ -124,7 +118,7 @@
 				</Modal.Body>
 				<Modal.Footer>
 					{!this.state.apiResponseStatus?<Button variant="secondary" type="null" onClick={this.handleClose}>Cancel</Button>:""}
-				  {!this.state.apiResponseStatus?<Button disabled={!this.state.selectedFile.name || this.state.upldBtnClicked} variant="primary" type="submit" onClick={this.handleUploadToscaPolicyModel.bind(this)}>Upload</Button>:""}
+				  {!this.state.apiResponseStatus?<Button disabled={!this.state.selectedFile.name || this.state.upldBtnClicked} variant="primary" type="submit" onClick={this.handleCreateFromToscaPolicyModel.bind(this)}>Create</Button>:""}
 					{this.state.apiResponseStatus?<Alert variant={this.state.apiResponseStatus === 200?"success":"danger"}>
 							<p>{this.state.apiResponseMessage}</p>
 								<Button onClick={this.handleClose} variant={this.state.apiResponseStatus === 200?"outline-success":"danger"}>
diff --git a/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.js b/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.js
index a78d454..89e5697 100644
--- a/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.js
+++ b/ui-react/src/components/dialogs/Tosca/ViewLoopTemplatesModal.js
@@ -25,7 +25,7 @@
 import Button from 'react-bootstrap/Button';
 import Modal from 'react-bootstrap/Modal';
 import styled from 'styled-components';
-import TemplateMenuService from '../../../api/TemplateMenuService';
+import TemplateService from '../../../api/TemplateService';
 import ArrowUpward from '@material-ui/icons/ArrowUpward';
 import ChevronLeft from '@material-ui/icons/ChevronLeft';
 import ChevronRight from '@material-ui/icons/ChevronRight';
@@ -103,7 +103,7 @@
 	}
 
 	getBlueprintMicroServiceTemplates() {
-		TemplateMenuService.getBlueprintMicroServiceTemplates().then(loopTemplateData => {
+		TemplateService.getBlueprintMicroServiceTemplates().then(loopTemplateData => {
 		this.setState({ loopTemplateData: loopTemplateData })
 		});
 	}
diff --git a/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.js b/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.js
index 5b66a25..6500805 100644
--- a/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.js
+++ b/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.js
@@ -26,7 +26,7 @@
 import Button from 'react-bootstrap/Button';
 import Modal from 'react-bootstrap/Modal';
 import styled from 'styled-components';
-import TemplateMenuService from '../../../api/TemplateMenuService';
+import PolicyToscaService from '../../../api/PolicyToscaService';
 import ArrowUpward from '@material-ui/icons/ArrowUpward';
 import ChevronLeft from '@material-ui/icons/ChevronLeft';
 import ChevronRight from '@material-ui/icons/ChevronRight';
@@ -109,14 +109,14 @@
 	}
 
 	getToscaPolicyModels() {
-	    TemplateMenuService.getToscaPolicyModels().then(toscaPolicyModelNames => {
+	    PolicyToscaService.getToscaPolicyModels().then(toscaPolicyModelNames => {
 			this.setState({ toscaPolicyModelNames: toscaPolicyModelNames });
 		});
 	}
 
-	getToscaPolicyModelYaml(policyModelType) {
+	getToscaPolicyModelYaml(policyModelType, policyModelVersion) {
 		if (typeof policyModelType !== "undefined") {
-			TemplateMenuService.getToscaPolicyModelYaml(policyModelType).then(toscaYaml => {
+			PolicyToscaService.getToscaPolicyModelYaml(policyModelType, policyModelVersion).then(toscaYaml => {
 				if (toscaYaml.length !== 0) {
 					this.setState({content: toscaYaml})
 				} else {
@@ -148,7 +148,7 @@
 					data={this.state.toscaPolicyModelNames}
 					columns={this.state.toscaColumns}
 					icons={this.state.tableIcons}
-					onRowClick={(event, rowData) => {this.getToscaPolicyModelYaml(rowData.policyModelType);this.setState({selectedRow: rowData.tableData.id})}}
+					onRowClick={(event, rowData) => {this.getToscaPolicyModelYaml(rowData.policyModelType,rowData.version);this.setState({selectedRow: rowData.tableData.id})}}
 					options={{
 						headerStyle: rowHeaderStyle,
 						rowStyle: rowData => ({
diff --git a/ui-react/src/components/dialogs/Tosca/__snapshots__/UploadToscaPolicyModal.test.js.snap b/ui-react/src/components/dialogs/Tosca/__snapshots__/UploadToscaPolicyModal.test.js.snap
index 1b5cd82..8e80136 100644
--- a/ui-react/src/components/dialogs/Tosca/__snapshots__/UploadToscaPolicyModal.test.js.snap
+++ b/ui-react/src/components/dialogs/Tosca/__snapshots__/UploadToscaPolicyModal.test.js.snap
@@ -11,7 +11,7 @@
     closeLabel="Close"
   >
     <ModalTitle>
-      Upload Tosca Modal
+      Upload Tosca Model
     </ModalTitle>
   </ModalHeader>
   <ModalBody>
@@ -72,7 +72,7 @@
           sm="2"
           srOnly={false}
         >
-          Micro Service Name:
+          Policy Model Type:
         </FormLabel>
         <input
           onChange={[Function]}
@@ -104,7 +104,7 @@
       type="submit"
       variant="primary"
     >
-      Upload
+      Create
     </Button>
   </ModalFooter>
 </Styled(Bootstrap(Modal))>
diff --git a/ui-react/src/components/menu/MenuBar.js b/ui-react/src/components/menu/MenuBar.js
index 98c7bff..c1a7ac3 100644
--- a/ui-react/src/components/menu/MenuBar.js
+++ b/ui-react/src/components/menu/MenuBar.js
@@ -87,27 +87,28 @@
 		return (
 
 				<Navbar.Collapse>
-					<StyledNavDropdown title="Template">
-					<NavDropdown.Item as={StyledLink} to="/uploadToscaPolicyModal">Upload Tosca Policy Model</NavDropdown.Item>
-					<NavDropdown.Item as={StyledLink} to="/viewToscaPolicyModal">View Tosca Policy Models</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/ViewLoopTemplatesModal">View Loop Templates</NavDropdown.Item>
+					<StyledNavDropdown title="Loop Templates">
+							<NavDropdown.Item as={StyledLink} to="/ViewLoopTemplatesModal">View All Templates</NavDropdown.Item>
 					</StyledNavDropdown>
-					<StyledNavDropdown title="Closed Loop">
-							<NavDropdown.Item as={StyledLink} to="/openLoop">Open CL</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/loopProperties" disabled={this.state.disabled}>Properties CL</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/closeLoop" disabled={this.state.disabled}>Close Model</NavDropdown.Item>
-					</StyledNavDropdown>
-					<StyledNavDropdown title="Manage">
-							<NavDropdown.Item as={StyledLink} to="/submit" disabled={this.state.disabled}>Submit</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/stop" disabled={this.state.disabled}>Stop</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/restart" disabled={this.state.disabled}>Restart</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/delete" disabled={this.state.disabled}>Delete</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/deploy" disabled={this.state.disabled}>Deploy</NavDropdown.Item>
-							<NavDropdown.Item as={StyledLink} to="/undeploy" disabled={this.state.disabled}>UnDeploy</NavDropdown.Item>
-					</StyledNavDropdown>
-					<StyledNavDropdown title="View">
+					<StyledNavDropdown title="Policy Models">
+                    	    <NavDropdown.Item as={StyledLink} to="/uploadToscaPolicyModal">Upload Tosca Model</NavDropdown.Item>
+                    		<NavDropdown.Item as={StyledLink} to="/viewToscaPolicyModal">View Tosca Models</NavDropdown.Item>
+                    </StyledNavDropdown>
+					<StyledNavDropdown title="Loop Instance">
+							<NavDropdown.Item as={StyledLink} to="/openLoop">Open Loop</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/loopProperties" disabled={this.state.disabled}>Properties</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/closeLoop" disabled={this.state.disabled}>Close</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/modifyLoop" >Modify</NavDropdown.Item>
 							<NavDropdown.Item as={StyledLink} to="/refreshStatus" disabled={this.state.disabled}>Refresh Status</NavDropdown.Item>
 					</StyledNavDropdown>
+					<StyledNavDropdown title="Loop Operations">
+							<NavDropdown.Item as={StyledLink} to="/submit" disabled={this.state.disabled}>Create and deploy to Policy Engine(SUBMIT)</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/stop" disabled={this.state.disabled}>Undeploy from Policy Engine (STOP)</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/restart" disabled={this.state.disabled}>ReDeploy to Policy Engine (RESTART)</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/delete" disabled={this.state.disabled}>Delete loop instance (DELETE)</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/deploy" disabled={this.state.disabled}>Deploy to DCAE (DEPLOY)</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/undeploy" disabled={this.state.disabled}>UnDeploy to DCAE (UNDEPLOY)</NavDropdown.Item>
+					</StyledNavDropdown>
 					<StyledNavDropdown title="Help">
 							<StyledNavLink href="https://wiki.onap.org/" target="_blank">Wiki</StyledNavLink>
 							<StyledNavLink href="mailto:onap-discuss@lists.onap.org?subject=CLAMP&body=Please send us suggestions or feature enhancements or defect. If possible, please send us the steps to replicate any defect.">Contact Us</StyledNavLink>
diff --git a/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap b/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap
index 14030f0..a7e66ed 100644
--- a/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap
+++ b/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap
@@ -3,7 +3,62 @@
 exports[`Verify MenuBar Test the render method 1`] = `
 <NavbarCollapse>
   <Styled(NavDropdown)
-    title="Template"
+    title="Loop Templates"
+  >
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-bdVaJa",
+            "isStatic": false,
+            "rules": Array [
+              "
+	color: ",
+              [Function],
+              ";
+	background-color: ",
+              [Function],
+              ";
+	font-weight: normal;
+	display: block;
+	width: 100%;
+	padding: .25rem 1.5rem;
+	clear: both;
+	text-align: inherit;
+	white-space: nowrap;
+	border: 0;
+	:hover {
+		text-decoration: none;
+		background-color: ",
+              [Function],
+              ";
+		color:  ",
+              [Function],
+              ";
+	}
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-bdVaJa",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={false}
+      to="/ViewLoopTemplatesModal"
+    >
+      View All Templates
+    </DropdownItem>
+  </Styled(NavDropdown)>
+  <Styled(NavDropdown)
+    title="Policy Models"
   >
     <DropdownItem
       as={
@@ -54,7 +109,7 @@
       disabled={false}
       to="/uploadToscaPolicyModal"
     >
-      Upload Tosca Policy Model
+      Upload Tosca Model
     </DropdownItem>
     <DropdownItem
       as={
@@ -105,62 +160,11 @@
       disabled={false}
       to="/viewToscaPolicyModal"
     >
-      View Tosca Policy Models
-    </DropdownItem>
-    <DropdownItem
-      as={
-        Object {
-          "$$typeof": Symbol(react.forward_ref),
-          "attrs": Array [],
-          "componentStyle": ComponentStyle {
-            "componentId": "sc-bdVaJa",
-            "isStatic": false,
-            "rules": Array [
-              "
-	color: ",
-              [Function],
-              ";
-	background-color: ",
-              [Function],
-              ";
-	font-weight: normal;
-	display: block;
-	width: 100%;
-	padding: .25rem 1.5rem;
-	clear: both;
-	text-align: inherit;
-	white-space: nowrap;
-	border: 0;
-	:hover {
-		text-decoration: none;
-		background-color: ",
-              [Function],
-              ";
-		color:  ",
-              [Function],
-              ";
-	}
-",
-            ],
-          },
-          "displayName": "Styled(Link)",
-          "foldedComponentIds": Array [],
-          "render": [Function],
-          "styledComponentId": "sc-bdVaJa",
-          "target": [Function],
-          "toString": [Function],
-          "warnTooManyClasses": [Function],
-          "withComponent": [Function],
-        }
-      }
-      disabled={false}
-      to="/ViewLoopTemplatesModal"
-    >
-      View Loop Templates
+      View Tosca Models
     </DropdownItem>
   </Styled(NavDropdown)>
   <Styled(NavDropdown)
-    title="Closed Loop"
+    title="Loop Instance"
   >
     <DropdownItem
       as={
@@ -211,7 +215,7 @@
       disabled={false}
       to="/openLoop"
     >
-      Open CL
+      Open Loop
     </DropdownItem>
     <DropdownItem
       as={
@@ -262,7 +266,7 @@
       disabled={true}
       to="/loopProperties"
     >
-      Properties CL
+      Properties
     </DropdownItem>
     <DropdownItem
       as={
@@ -313,62 +317,7 @@
       disabled={true}
       to="/closeLoop"
     >
-      Close Model
-    </DropdownItem>
-  </Styled(NavDropdown)>
-  <Styled(NavDropdown)
-    title="Manage"
-  >
-    <DropdownItem
-      as={
-        Object {
-          "$$typeof": Symbol(react.forward_ref),
-          "attrs": Array [],
-          "componentStyle": ComponentStyle {
-            "componentId": "sc-bdVaJa",
-            "isStatic": false,
-            "rules": Array [
-              "
-	color: ",
-              [Function],
-              ";
-	background-color: ",
-              [Function],
-              ";
-	font-weight: normal;
-	display: block;
-	width: 100%;
-	padding: .25rem 1.5rem;
-	clear: both;
-	text-align: inherit;
-	white-space: nowrap;
-	border: 0;
-	:hover {
-		text-decoration: none;
-		background-color: ",
-              [Function],
-              ";
-		color:  ",
-              [Function],
-              ";
-	}
-",
-            ],
-          },
-          "displayName": "Styled(Link)",
-          "foldedComponentIds": Array [],
-          "render": [Function],
-          "styledComponentId": "sc-bdVaJa",
-          "target": [Function],
-          "toString": [Function],
-          "warnTooManyClasses": [Function],
-          "withComponent": [Function],
-        }
-      }
-      disabled={true}
-      to="/submit"
-    >
-      Submit
+      Close
     </DropdownItem>
     <DropdownItem
       as={
@@ -416,10 +365,10 @@
           "withComponent": [Function],
         }
       }
-      disabled={true}
-      to="/stop"
+      disabled={false}
+      to="/modifyLoop"
     >
-      Stop
+      Modify
     </DropdownItem>
     <DropdownItem
       as={
@@ -468,220 +417,322 @@
         }
       }
       disabled={true}
-      to="/restart"
-    >
-      Restart
-    </DropdownItem>
-    <DropdownItem
-      as={
-        Object {
-          "$$typeof": Symbol(react.forward_ref),
-          "attrs": Array [],
-          "componentStyle": ComponentStyle {
-            "componentId": "sc-bdVaJa",
-            "isStatic": false,
-            "rules": Array [
-              "
-	color: ",
-              [Function],
-              ";
-	background-color: ",
-              [Function],
-              ";
-	font-weight: normal;
-	display: block;
-	width: 100%;
-	padding: .25rem 1.5rem;
-	clear: both;
-	text-align: inherit;
-	white-space: nowrap;
-	border: 0;
-	:hover {
-		text-decoration: none;
-		background-color: ",
-              [Function],
-              ";
-		color:  ",
-              [Function],
-              ";
-	}
-",
-            ],
-          },
-          "displayName": "Styled(Link)",
-          "foldedComponentIds": Array [],
-          "render": [Function],
-          "styledComponentId": "sc-bdVaJa",
-          "target": [Function],
-          "toString": [Function],
-          "warnTooManyClasses": [Function],
-          "withComponent": [Function],
-        }
-      }
-      disabled={true}
-      to="/delete"
-    >
-      Delete
-    </DropdownItem>
-    <DropdownItem
-      as={
-        Object {
-          "$$typeof": Symbol(react.forward_ref),
-          "attrs": Array [],
-          "componentStyle": ComponentStyle {
-            "componentId": "sc-bdVaJa",
-            "isStatic": false,
-            "rules": Array [
-              "
-	color: ",
-              [Function],
-              ";
-	background-color: ",
-              [Function],
-              ";
-	font-weight: normal;
-	display: block;
-	width: 100%;
-	padding: .25rem 1.5rem;
-	clear: both;
-	text-align: inherit;
-	white-space: nowrap;
-	border: 0;
-	:hover {
-		text-decoration: none;
-		background-color: ",
-              [Function],
-              ";
-		color:  ",
-              [Function],
-              ";
-	}
-",
-            ],
-          },
-          "displayName": "Styled(Link)",
-          "foldedComponentIds": Array [],
-          "render": [Function],
-          "styledComponentId": "sc-bdVaJa",
-          "target": [Function],
-          "toString": [Function],
-          "warnTooManyClasses": [Function],
-          "withComponent": [Function],
-        }
-      }
-      disabled={true}
-      to="/deploy"
-    >
-      Deploy
-    </DropdownItem>
-    <DropdownItem
-      as={
-        Object {
-          "$$typeof": Symbol(react.forward_ref),
-          "attrs": Array [],
-          "componentStyle": ComponentStyle {
-            "componentId": "sc-bdVaJa",
-            "isStatic": false,
-            "rules": Array [
-              "
-	color: ",
-              [Function],
-              ";
-	background-color: ",
-              [Function],
-              ";
-	font-weight: normal;
-	display: block;
-	width: 100%;
-	padding: .25rem 1.5rem;
-	clear: both;
-	text-align: inherit;
-	white-space: nowrap;
-	border: 0;
-	:hover {
-		text-decoration: none;
-		background-color: ",
-              [Function],
-              ";
-		color:  ",
-              [Function],
-              ";
-	}
-",
-            ],
-          },
-          "displayName": "Styled(Link)",
-          "foldedComponentIds": Array [],
-          "render": [Function],
-          "styledComponentId": "sc-bdVaJa",
-          "target": [Function],
-          "toString": [Function],
-          "warnTooManyClasses": [Function],
-          "withComponent": [Function],
-        }
-      }
-      disabled={true}
-      to="/undeploy"
-    >
-      UnDeploy
-    </DropdownItem>
-  </Styled(NavDropdown)>
-  <Styled(NavDropdown)
-    title="View"
-  >
-    <DropdownItem
-      as={
-        Object {
-          "$$typeof": Symbol(react.forward_ref),
-          "attrs": Array [],
-          "componentStyle": ComponentStyle {
-            "componentId": "sc-bdVaJa",
-            "isStatic": false,
-            "rules": Array [
-              "
-	color: ",
-              [Function],
-              ";
-	background-color: ",
-              [Function],
-              ";
-	font-weight: normal;
-	display: block;
-	width: 100%;
-	padding: .25rem 1.5rem;
-	clear: both;
-	text-align: inherit;
-	white-space: nowrap;
-	border: 0;
-	:hover {
-		text-decoration: none;
-		background-color: ",
-              [Function],
-              ";
-		color:  ",
-              [Function],
-              ";
-	}
-",
-            ],
-          },
-          "displayName": "Styled(Link)",
-          "foldedComponentIds": Array [],
-          "render": [Function],
-          "styledComponentId": "sc-bdVaJa",
-          "target": [Function],
-          "toString": [Function],
-          "warnTooManyClasses": [Function],
-          "withComponent": [Function],
-        }
-      }
-      disabled={true}
       to="/refreshStatus"
     >
       Refresh Status
     </DropdownItem>
   </Styled(NavDropdown)>
   <Styled(NavDropdown)
+    title="Loop Operations"
+  >
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-bdVaJa",
+            "isStatic": false,
+            "rules": Array [
+              "
+	color: ",
+              [Function],
+              ";
+	background-color: ",
+              [Function],
+              ";
+	font-weight: normal;
+	display: block;
+	width: 100%;
+	padding: .25rem 1.5rem;
+	clear: both;
+	text-align: inherit;
+	white-space: nowrap;
+	border: 0;
+	:hover {
+		text-decoration: none;
+		background-color: ",
+              [Function],
+              ";
+		color:  ",
+              [Function],
+              ";
+	}
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-bdVaJa",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/submit"
+    >
+      Create and deploy to Policy Engine(SUBMIT)
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-bdVaJa",
+            "isStatic": false,
+            "rules": Array [
+              "
+	color: ",
+              [Function],
+              ";
+	background-color: ",
+              [Function],
+              ";
+	font-weight: normal;
+	display: block;
+	width: 100%;
+	padding: .25rem 1.5rem;
+	clear: both;
+	text-align: inherit;
+	white-space: nowrap;
+	border: 0;
+	:hover {
+		text-decoration: none;
+		background-color: ",
+              [Function],
+              ";
+		color:  ",
+              [Function],
+              ";
+	}
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-bdVaJa",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/stop"
+    >
+      Undeploy from Policy Engine (STOP)
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-bdVaJa",
+            "isStatic": false,
+            "rules": Array [
+              "
+	color: ",
+              [Function],
+              ";
+	background-color: ",
+              [Function],
+              ";
+	font-weight: normal;
+	display: block;
+	width: 100%;
+	padding: .25rem 1.5rem;
+	clear: both;
+	text-align: inherit;
+	white-space: nowrap;
+	border: 0;
+	:hover {
+		text-decoration: none;
+		background-color: ",
+              [Function],
+              ";
+		color:  ",
+              [Function],
+              ";
+	}
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-bdVaJa",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/restart"
+    >
+      ReDeploy to Policy Engine (RESTART)
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-bdVaJa",
+            "isStatic": false,
+            "rules": Array [
+              "
+	color: ",
+              [Function],
+              ";
+	background-color: ",
+              [Function],
+              ";
+	font-weight: normal;
+	display: block;
+	width: 100%;
+	padding: .25rem 1.5rem;
+	clear: both;
+	text-align: inherit;
+	white-space: nowrap;
+	border: 0;
+	:hover {
+		text-decoration: none;
+		background-color: ",
+              [Function],
+              ";
+		color:  ",
+              [Function],
+              ";
+	}
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-bdVaJa",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/delete"
+    >
+      Delete loop instance (DELETE)
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-bdVaJa",
+            "isStatic": false,
+            "rules": Array [
+              "
+	color: ",
+              [Function],
+              ";
+	background-color: ",
+              [Function],
+              ";
+	font-weight: normal;
+	display: block;
+	width: 100%;
+	padding: .25rem 1.5rem;
+	clear: both;
+	text-align: inherit;
+	white-space: nowrap;
+	border: 0;
+	:hover {
+		text-decoration: none;
+		background-color: ",
+              [Function],
+              ";
+		color:  ",
+              [Function],
+              ";
+	}
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-bdVaJa",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/deploy"
+    >
+      Deploy to DCAE (DEPLOY)
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-bdVaJa",
+            "isStatic": false,
+            "rules": Array [
+              "
+	color: ",
+              [Function],
+              ";
+	background-color: ",
+              [Function],
+              ";
+	font-weight: normal;
+	display: block;
+	width: 100%;
+	padding: .25rem 1.5rem;
+	clear: both;
+	text-align: inherit;
+	white-space: nowrap;
+	border: 0;
+	:hover {
+		text-decoration: none;
+		background-color: ",
+              [Function],
+              ";
+		color:  ",
+              [Function],
+              ";
+	}
+",
+            ],
+          },
+          "displayName": "Styled(Link)",
+          "foldedComponentIds": Array [],
+          "render": [Function],
+          "styledComponentId": "sc-bdVaJa",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={true}
+      to="/undeploy"
+    >
+      UnDeploy to DCAE (UNDEPLOY)
+    </DropdownItem>
+  </Styled(NavDropdown)>
+  <Styled(NavDropdown)
     title="Help"
   >
     <Styled(NavLink)
