diff --git a/ui-react/src/components/dialogs/Tosca/ViewBlueprintMicroServiceTemplatesModal.js b/ui-react/src/components/dialogs/Tosca/ViewBlueprintMicroServiceTemplatesModal.js
new file mode 100644
index 0000000..adacbc8
--- /dev/null
+++ b/ui-react/src/components/dialogs/Tosca/ViewBlueprintMicroServiceTemplatesModal.js
@@ -0,0 +1,154 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 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 Button from 'react-bootstrap/Button';
+import Modal from 'react-bootstrap/Modal';
+import styled from 'styled-components';
+import TemplateMenuService from '../../../api/TemplateMenuService';
+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 MaterialTable from "material-table";
+
+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 ViewBlueprintMicroServiceTemplatesModal extends React.Component {
+  state = {
+    show: true,
+		content: 'Please select Blue print template to view the details',
+		selectedRow: -1,
+		bpTemplNames: [],
+		bpTemplColumns: [
+			{ title: "#", field: "index", render: rowData => rowData.tableData.id + 1,
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
+			},
+			{ title: "Template Name", field: "templateName",
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
+			},
+			{ title: "Policy Model", field: "templatePolicy[0].policyModelId",
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
+			},
+			{ title: "Template ID", field: "templateId",
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
+			},
+			{ title: "Uploaded By", field: "updatedBy",
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
+			},
+			{ title: "Uploaded Date", field: "timestamp", 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.getBlueprintMicroServiceTemplates = this.getBlueprintMicroServiceTemplates.bind(this);
+		this.handleYamlContent = this.handleYamlContent.bind(this);
+	}
+
+	componentWillMount() {
+		this.getBlueprintMicroServiceTemplates();
+	}
+
+	getBlueprintMicroServiceTemplates() {
+		TemplateMenuService.getBlueprintMicroServiceTemplates().then(bpTemplNames => {
+		this.setState({ bpTemplNames: bpTemplNames })
+		});
+	}
+
+	handleYamlContent = event => {
+		this.setState({
+			content: event.target.value
+		});
+	}
+
+	handleClose() {
+		this.setState({ show: false });
+		this.props.history.push('/')
+	}
+
+	render() {
+    return (
+      <ModalStyled size="xl" show={this.state.show} onHide={this.handleClose}>
+        <Modal.Header closeButton>
+				</Modal.Header>
+				<Modal.Body>
+          <MaterialTable
+            title={"View Blueprint MicroService Templates"}
+            data={this.state.bpTemplNames}
+					  columns={this.state.bpTemplColumns}
+					  icons={this.state.tableIcons}
+					  onRowClick={(event, rowData) => {this.setState({content: rowData.templateYaml, selectedRow: rowData.tableData.id})}}
+					  options={{
+					  headerStyle:rowHeaderStyle,
+					  rowStyle: rowData => ({
+					  backgroundColor: (this.state.selectedRow !== -1 && this.state.selectedRow === rowData.tableData.id) ? '#EEE' : '#FFF'
+            })
+          }}
+          />
+          <div>
+            <TextModal value={this.state.content} onChange={this.handleYamlContent} />
+          </div>
+        </Modal.Body>
+        <Modal.Footer>
+          <Button variant="secondary" onClick={this.handleClose}>Close</Button>
+        </Modal.Footer>
+      </ModalStyled>
+      );
+    }
+  }
diff --git a/ui-react/src/components/dialogs/Tosca/ViewBlueprintMicroServiceTemplatesModal.test.js b/ui-react/src/components/dialogs/Tosca/ViewBlueprintMicroServiceTemplatesModal.test.js
new file mode 100644
index 0000000..4a8d9c3
--- /dev/null
+++ b/ui-react/src/components/dialogs/Tosca/ViewBlueprintMicroServiceTemplatesModal.test.js
@@ -0,0 +1,193 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 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 from 'react';
+import { shallow } from 'enzyme';
+import ViewBlueprintMicroServiceTemplatesModal from './ViewBlueprintMicroServiceTemplatesModal';
+import { mount } from 'enzyme';
+
+describe('Verify ViewBlueprintMicroServiceTemplatesModal', () => {
+	beforeEach(() => {
+		fetch.resetMocks();
+		}
+	);
+
+	it('Test API Successful', () => {
+		fetch.mockImplementationOnce(() => {
+			return Promise.resolve({
+				ok: true,
+				status: 200,
+				json: () => {
+					return Promise.resolve({
+						"index": "1",
+						"content": "MTCA version 1",
+						"templateName": "MTCA",
+						"templatePolicy.policyModelId" : "onap.policies.monitoring.docker.mtca.app",
+						"updatedBy":"tester",
+						"templateId":"aaaa_bbbb_cccc",
+						"timestamp":"2019-09-06 19:09:42"
+					});
+				}
+			});
+		});
+		const component = shallow(<ViewBlueprintMicroServiceTemplatesModal/>);
+	});
+  	
+	it('Test API Exception', () => {
+		fetch.mockImplementationOnce(() => {
+			return Promise.resolve({
+				ok: false,
+				status: 500,
+				json: () => {
+					return Promise.resolve({
+						"index": "1",
+						"content": "MTCA version 1",
+						"templateName": "MTCA",
+						"templatePolicy.policyModelId" : "onap.policies.monitoring.docker.mtca.app",
+						"updatedBy":"tester",
+						"templateId":"aaaa_bbbb_cccc",
+						"timestamp":"2019-09-06 19:09:42"
+					});
+				}
+			});
+		});
+		const component = shallow(<ViewBlueprintMicroServiceTemplatesModal/>);
+	});
+
+	it('Test API Rejection', () => {
+		const myMockFunc  = fetch.mockImplementationOnce(() => Promise.reject('error'));
+		setTimeout( () => myMockFunc().catch(e => {
+			console.log(e);
+		}),
+		100
+		);
+		new Promise(resolve => setTimeout(resolve, 200));
+		const component = shallow(<ViewBlueprintMicroServiceTemplatesModal/>);
+		expect(myMockFunc.mock.calls.length).toBe(1);
+	});
+
+	it('Test the tosca model view render method', () => {
+		fetch.mockImplementationOnce(() => {
+			return Promise.resolve({
+				ok: true,
+				status: 200,
+				json: () => {
+					return Promise.resolve({
+						"index": "1",
+						"content": "MTCA version 1",
+						"templateName": "MTCA",
+						"templatePolicy.policyModelId" : "onap.policies.monitoring.docker.mtca.app",
+						"updatedBy":"tester",
+						"templateId":"aaaa_bbbb_cccc",
+						"timestamp":"2019-09-06 19:09:42"
+					});
+				}
+			});
+		});
+		const component = shallow(<ViewBlueprintMicroServiceTemplatesModal/>);
+		component.setState({ bpTemplNames: {
+			"index": "1",
+			"content": "MTCA version 1",
+			"templateName": "MTCA",
+			"templatePolicy.policyModelId" : "onap.policies.monitoring.docker.mtca.app",
+			"updatedBy":"tester",
+			"templateId":"aaaa_bbbb_cccc",
+			"timestamp":"2019-09-06 19:09:42"
+		  }
+		});
+		expect(component).toMatchSnapshot();
+	});
+
+	it('Test Table icons', () => {
+			fetch.mockImplementationOnce(() => {
+				return Promise.resolve({
+					ok: true,
+					status: 200,
+					json: () => {
+						return Promise.resolve({
+							"index": "1",
+							"content": "MTCA version 1",
+							"templateName": "MTCA",
+							"templatePolicy.policyModelId" : "onap.policies.monitoring.docker.mtca.app",
+							"updatedBy":"tester",
+							"templateId":"aaaa_bbbb_cccc",
+							"timestamp":"2019-09-06 19:09:42"
+						});
+					}
+				});
+			});
+			const component = mount(<ViewBlueprintMicroServiceTemplatesModal/>);
+			expect(component.find('[className="MuiSelect-icon MuiTablePagination-selectIcon"]')).toBeTruthy();
+		});
+
+		it('Test handleYamlContent', () => {
+			fetch.mockImplementationOnce(() => {
+				return Promise.resolve({
+					ok: true,
+					status: 200,
+					json: () => {
+						return Promise.resolve({
+							"index": "1",
+							"content": "MTCA version 1",
+							"templateName": "MTCA",
+							"templatePolicy.policyModelId" : "onap.policies.monitoring.docker.mtca.app",
+							"updatedBy":"tester",
+							"templateId":"aaaa_bbbb_cccc",
+							"timestamp":"2019-09-06 19:09:42"
+						});
+					}
+				});
+			});
+			const yamlContent = 'MTCA Tosca model details';
+			const component = shallow(<ViewBlueprintMicroServiceTemplatesModal/>);
+			component.find('[value="Please select Blue print template to view the details"]').prop('onChange')({ target: { value: yamlContent }});
+			expect(component.state('content')).toEqual(yamlContent);
+		});
+		
+		it('Test handleClose', () => {
+			fetch.mockImplementationOnce(() => {
+				return Promise.resolve({
+					ok: true,
+					status: 200,
+					json: () => {
+						return Promise.resolve({
+							"index": "1",
+							"content": "MTCA version 1",
+							"templateName": "MTCA",
+							"templatePolicy.policyModelId" : "onap.policies.monitoring.docker.mtca.app",
+							"updatedBy":"tester",
+							"templateId":"aaaa_bbbb_cccc",
+							"timestamp":"2019-09-06 19:09:42"
+						});
+					}
+				});
+			});
+			const historyMock = { push: jest.fn() };
+			const handleClose = jest.spyOn(ViewBlueprintMicroServiceTemplatesModal.prototype,'handleClose');
+			const component = shallow(<ViewBlueprintMicroServiceTemplatesModal history={historyMock} />)
+			component.find('[variant="secondary"]').prop('onClick')();
+			expect(handleClose).toHaveBeenCalledTimes(1);
+			expect(component.state('show')).toEqual(false);
+			expect(historyMock.push.mock.calls[0]).toEqual([ '/']);
+			handleClose.mockClear();
+		});
+	});
\ No newline at end of file
diff --git a/ui-react/src/components/dialogs/ViewToscaModal/ViewToscaModal.js b/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.js
similarity index 75%
rename from ui-react/src/components/dialogs/ViewToscaModal/ViewToscaModal.js
rename to ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.js
index fbfb4a7..6a93d4d 100644
--- a/ui-react/src/components/dialogs/ViewToscaModal/ViewToscaModal.js
+++ b/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.js
@@ -39,12 +39,20 @@
 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'};
 
-const vtmCellStyle = { border: '1px solid black' };
-const vtmHeaderStyle = { backgroundColor: '#ddd',	border: '2px solid black'	};
-const vtmRowHeaderStyle = {backgroundColor:'#ddd',  fontSize: '15pt', text: 'bold', border: '1px solid black'};
-
-export default class ViewToscalModal extends React.Component {
+export default class ViewToscalPolicyModal extends React.Component {
 
 	state = {
 		show: true,
@@ -53,28 +61,28 @@
 		toscaNames: [],
 		toscaColumns: [
 			{ title: "#", field: "index", render: rowData => rowData.tableData.id + 1,
-				cellStyle: vtmCellStyle,
-				headerStyle: vtmHeaderStyle
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
 			},
 			{ title: "Micro Service Name", field: "toscaModelName",
-				cellStyle: vtmCellStyle,
-				headerStyle: vtmHeaderStyle
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
 			},
 			{ title: "PolicyType", field: "policyType",
-				cellStyle: vtmCellStyle,
-				headerStyle: vtmHeaderStyle
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
 			},
-			{ title: "Version", field: "version",
-				cellStyle: vtmCellStyle,
-				headerStyle: vtmHeaderStyle
+			{ title: "Version", field: "toscaModelRevisions[0].version",
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
 			},
 			{ title: "Uploaded By", field: "userId",
-				cellStyle: vtmCellStyle,
-				headerStyle: vtmHeaderStyle
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
 			},
 			{ title: "Uploaded Date", field: "lastUpdatedDate", editable: 'never',
-				cellStyle: vtmCellStyle,
-				headerStyle: vtmHeaderStyle
+				cellStyle: cellStyle,
+				headerStyle: headerStyle
 			}
 		],
 		tableIcons: {
@@ -91,16 +99,16 @@
 	constructor(props, context) {
 		super(props, context);
 		this.handleClose = this.handleClose.bind(this);
-		this.getToscaModels = this.getToscaModels.bind(this);
+		this.getPolicyToscaModels = this.getToscaPolicyModels.bind(this);
 		this.handleYamlContent = this.handleYamlContent.bind(this);
 	}
 
 	componentWillMount() {
-		this.getToscaModels();
+		this.getToscaPolicyModels();
 	}
 
-	getToscaModels() {
-	    TemplateMenuService.getToscaModels().then(toscaNames => {
+	getToscaPolicyModels() {
+	    TemplateMenuService.getToscaPolicyModels().then(toscaNames => {
 			this.setState({ toscaNames: toscaNames });
 		});
 	}
@@ -118,24 +126,23 @@
 		return (
 			<ModalStyled size="xl" show={this.state.show} onHide={this.handleClose}>
 				<Modal.Header closeButton>
-					<Modal.Title className="title">View Tosca Model</Modal.Title>
 				</Modal.Header>
 				<Modal.Body>
 					<MaterialTable
-					title={"View ToscaModel"}
+					title={"View Tosca Policy Models"}
 					data={this.state.toscaNames}
 					columns={this.state.toscaColumns}
 					icons={this.state.tableIcons}
 					onRowClick={(event, rowData) => {this.setState({content: rowData.toscaModelRevisions[0].toscaModelYaml, selectedRow: rowData.tableData.id})}}
 					options={{
-						headerStyle: vtmRowHeaderStyle,
+						headerStyle: rowHeaderStyle,
 						rowStyle: rowData => ({
 							backgroundColor: (this.state.selectedRow !== -1 && this.state.selectedRow === rowData.tableData.id) ? '#EEE' : '#FFF'
 						})
 					}}
 					/>
 					<div>
-						<textarea value={this.state.content} onChange={this.handleYamlContent}/>
+						<TextModal value={this.state.content} onChange={this.handleYamlContent}/>
 					</div>
 				</Modal.Body>
 				<Modal.Footer>
diff --git a/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.test.js b/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.test.js
new file mode 100644
index 0000000..1445e88
--- /dev/null
+++ b/ui-react/src/components/dialogs/Tosca/ViewToscaPolicyModal.test.js
@@ -0,0 +1,195 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2019 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 from 'react';
+import { shallow } from 'enzyme';
+import ViewToscaPolicyModal from './ViewToscaPolicyModal';
+import { mount } from 'enzyme';
+
+
+describe('Verify ViewToscaPolicyModal', () => {
+	beforeEach(() => {
+		fetch.resetMocks();
+	});
+
+	it('Test API Successful', () => {
+		fetch.mockImplementationOnce(() => {
+			return Promise.resolve({
+				ok: true,
+				status: 200,
+				json: () => {
+					return Promise.resolve({
+						"index": "1",
+						"toscaModelYaml":"MTCA",
+						"toscaModelName":"DCAE_MTCAConfig",
+						"version":"16",
+						"userId":"aj928f",
+						"policyType":"mtca",
+						"lastUpdatedDate":"05-07-2019 19:09:42"
+					});
+				}
+			});
+		});
+		const component = shallow(<ViewToscaPolicyModal/>);
+	});
+
+  it('Test API Exception', () => {
+		fetch.mockImplementationOnce(() => {
+			return Promise.resolve({
+				ok: false,
+				status: 500,
+				json: () => {
+					return Promise.resolve({
+						"index": "1",
+						"toscaModelName":"DCAE_MTCAConfig",
+						"version":"16",
+						"userId":"aj928f",
+						"policyType":"mtca",
+						"lastUpdatedDate":"05-07-2019 19:09:42"
+					});
+				}
+			});
+		});
+		const component = shallow(<ViewToscaPolicyModal/>);
+	});
+
+	it('Test API Rejection', () => {
+		const myMockFunc  = fetch.mockImplementationOnce(() => Promise.reject('error'));
+		setTimeout(
+    () =>
+      myMockFunc().catch(e => {
+        console.log(e);
+      }),
+    100
+  );
+	new Promise(resolve => setTimeout(resolve, 200));
+	const component = shallow(<ViewToscaPolicyModal/>);
+	expect(myMockFunc.mock.calls.length).toBe(1);
+	});
+
+
+	it('Test the tosca model view render method', () => {
+		fetch.mockImplementationOnce(() => {
+			return Promise.resolve({
+				ok: true,
+				status: 200,
+				json: () => {
+					return Promise.resolve({
+						"index": "1",
+						"toscaModelYaml":"MTCA",
+						"toscaModelName":"DCAE_MTCAConfig",
+						"version":"16",
+						"userId":"aj928f",
+						"policyType":"mtca",
+						"lastUpdatedDate":"05-07-2019 19:09:42"
+					});
+				}
+			});
+		});
+		const component = shallow(<ViewToscaPolicyModal/>);
+		component.setState({ toscaNames: {
+			"index": "1",
+			"toscaModelYaml": "MTCA",
+			"toscaModelName": "DCAE_MTCAConfig",
+			"version" : "16",
+			"userId" : "aj928f",
+			"policyType" : "mtca",
+			"lastUpdatedDate" : "05-07-2019 19:09:42"
+		}
+	});
+  expect(component).toMatchSnapshot();
+  });
+
+	it('Test Table icons', () => {
+		fetch.mockImplementationOnce(() => {
+			return Promise.resolve({
+				ok: true,
+				status: 200,
+				json: () => {
+					return Promise.resolve({
+						"index": "1",
+						"toscaModelYaml":"MTCA",
+						"toscaModelName":"DCAE_MTCAConfig",
+						"version":"16",
+						"userId":"aj928f",
+						"policyType":"mtca",
+						"lastUpdatedDate":"05-07-2019 19:09:42"
+					});
+				}
+			});
+		});
+		const component = mount(<ViewToscaPolicyModal/>);
+		expect(component.find('[className="MuiSelect-icon MuiTablePagination-selectIcon"]')).toBeTruthy();
+  });
+
+	it('Test handleYamlContent', () => {
+		fetch.mockImplementationOnce(() => {
+			return Promise.resolve({
+				ok: true,
+				status: 200,
+				json: () => {
+					return Promise.resolve({
+						"index": "1",
+						"toscaModelYaml":"MTCA",
+						"toscaModelName":"DCAE_MTCAConfig",
+						"version":"16",
+						"userId":"aj928f",
+						"policyType":"mtca",
+						"lastUpdatedDate":"05-07-2019 19:09:42"
+					});
+				}
+			});
+		});
+		const yamlContent = 'MTCA Tosca model details';
+		const component = shallow(<ViewToscaPolicyModal/>);
+		component.find('[value="Please select Tosca model to view the details"]').prop('onChange')({ target: { value: yamlContent }});
+    expect(component.state('content')).toEqual(yamlContent);
+  });
+
+	it('Test handleClose', () => {
+		fetch.mockImplementationOnce(() => {
+			return Promise.resolve({
+				ok: true,
+				status: 200,
+				json: () => {
+					return Promise.resolve({
+						"index": "1",
+						"toscaModelYaml":"MTCA",
+						"toscaModelName":"DCAE_MTCAConfig",
+						"version":"16",
+						"userId":"aj928f",
+						"policyType":"mtca",
+						"lastUpdatedDate":"05-07-2019 19:09:42"
+					});
+				}
+			});
+		});
+		const historyMock = { push: jest.fn() };
+		const handleClose = jest.spyOn(ViewToscaPolicyModal.prototype,'handleClose');
+		const component = shallow(<ViewToscaPolicyModal history={historyMock} />)
+		component.find('[variant="secondary"]').prop('onClick')();
+		expect(handleClose).toHaveBeenCalledTimes(1);
+		expect(component.state('show')).toEqual(false);
+		expect(historyMock.push.mock.calls[0]).toEqual([ '/']);
+		handleClose.mockClear();
+	});
+});
\ No newline at end of file
diff --git a/ui-react/src/components/dialogs/ViewToscaModal/__snapshots__/ViewToscaModal.test.js.snap b/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewBlueprintMicroServiceTemplatesModal.test.js.snap
similarity index 80%
copy from ui-react/src/components/dialogs/ViewToscaModal/__snapshots__/ViewToscaModal.test.js.snap
copy to ui-react/src/components/dialogs/Tosca/__snapshots__/ViewBlueprintMicroServiceTemplatesModal.test.js.snap
index 3523ada..7dd4ee0 100644
--- a/ui-react/src/components/dialogs/ViewToscaModal/__snapshots__/ViewToscaModal.test.js.snap
+++ b/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewBlueprintMicroServiceTemplatesModal.test.js.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`Verify ViewToscaModal Test the tosca model view render method 1`] = `
+exports[`Verify ViewBlueprintMicroServiceTemplatesModal Test the tosca model view render method 1`] = `
 <Styled(Bootstrap(Modal))
   onHide={[Function]}
   show={true}
@@ -9,13 +9,7 @@
   <ModalHeader
     closeButton={true}
     closeLabel="Close"
-  >
-    <ModalTitle
-      className="title"
-    >
-      View Tosca Model
-    </ModalTitle>
-  </ModalHeader>
+  />
   <ModalBody>
     <WithStyles(Component)
       columns={
@@ -36,40 +30,40 @@
             "cellStyle": Object {
               "border": "1px solid black",
             },
-            "field": "toscaModelName",
+            "field": "templateName",
             "headerStyle": Object {
               "backgroundColor": "#ddd",
               "border": "2px solid black",
             },
-            "title": "Micro Service Name",
+            "title": "Template Name",
           },
           Object {
             "cellStyle": Object {
               "border": "1px solid black",
             },
-            "field": "policyType",
+            "field": "templatePolicy[0].policyModelId",
             "headerStyle": Object {
               "backgroundColor": "#ddd",
               "border": "2px solid black",
             },
-            "title": "PolicyType",
+            "title": "Policy Model",
           },
           Object {
             "cellStyle": Object {
               "border": "1px solid black",
             },
-            "field": "version",
+            "field": "templateId",
             "headerStyle": Object {
               "backgroundColor": "#ddd",
               "border": "2px solid black",
             },
-            "title": "Version",
+            "title": "Template ID",
           },
           Object {
             "cellStyle": Object {
               "border": "1px solid black",
             },
-            "field": "userId",
+            "field": "updatedBy",
             "headerStyle": Object {
               "backgroundColor": "#ddd",
               "border": "2px solid black",
@@ -81,7 +75,7 @@
               "border": "1px solid black",
             },
             "editable": "never",
-            "field": "lastUpdatedDate",
+            "field": "timestamp",
             "headerStyle": Object {
               "backgroundColor": "#ddd",
               "border": "2px solid black",
@@ -92,13 +86,13 @@
       }
       data={
         Object {
+          "content": "MTCA version 1",
           "index": "1",
-          "lastUpdatedDate": "05-07-2019 19:09:42",
-          "policyType": "mtca",
-          "toscaModelName": "DCAE_MTCAConfig",
-          "toscaModelYaml": "MTCA",
-          "userId": "aj928f",
-          "version": "16",
+          "templateId": "aaaa_bbbb_cccc",
+          "templateName": "MTCA",
+          "templatePolicy.policyModelId": "onap.policies.monitoring.docker.mtca.app",
+          "timestamp": "2019-09-06 19:09:42",
+          "updatedBy": "tester",
         }
       }
       icons={
@@ -145,12 +139,12 @@
           "rowStyle": [Function],
         }
       }
-      title="View ToscaModel"
+      title="View Blueprint MicroService Templates"
     />
     <div>
-      <textarea
+      <styled.textarea
         onChange={[Function]}
-        value="Please select Tosca model to view the details"
+        value="Please select Blue print template to view the details"
       />
     </div>
   </ModalBody>
diff --git a/ui-react/src/components/dialogs/ViewToscaModal/__snapshots__/ViewToscaModal.test.js.snap b/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewToscaPolicyModal.test.js.snap
similarity index 93%
rename from ui-react/src/components/dialogs/ViewToscaModal/__snapshots__/ViewToscaModal.test.js.snap
rename to ui-react/src/components/dialogs/Tosca/__snapshots__/ViewToscaPolicyModal.test.js.snap
index 3523ada..e7294c0 100644
--- a/ui-react/src/components/dialogs/ViewToscaModal/__snapshots__/ViewToscaModal.test.js.snap
+++ b/ui-react/src/components/dialogs/Tosca/__snapshots__/ViewToscaPolicyModal.test.js.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`Verify ViewToscaModal Test the tosca model view render method 1`] = `
+exports[`Verify ViewToscaPolicyModal Test the tosca model view render method 1`] = `
 <Styled(Bootstrap(Modal))
   onHide={[Function]}
   show={true}
@@ -9,13 +9,7 @@
   <ModalHeader
     closeButton={true}
     closeLabel="Close"
-  >
-    <ModalTitle
-      className="title"
-    >
-      View Tosca Model
-    </ModalTitle>
-  </ModalHeader>
+  />
   <ModalBody>
     <WithStyles(Component)
       columns={
@@ -58,7 +52,7 @@
             "cellStyle": Object {
               "border": "1px solid black",
             },
-            "field": "version",
+            "field": "toscaModelRevisions[0].version",
             "headerStyle": Object {
               "backgroundColor": "#ddd",
               "border": "2px solid black",
@@ -145,10 +139,10 @@
           "rowStyle": [Function],
         }
       }
-      title="View ToscaModel"
+      title="View Tosca Policy Models"
     />
     <div>
-      <textarea
+      <styled.textarea
         onChange={[Function]}
         value="Please select Tosca model to view the details"
       />
diff --git a/ui-react/src/components/dialogs/ViewToscaModal/ViewToscaModal.test.js b/ui-react/src/components/dialogs/ViewToscaModal/ViewToscaModal.test.js
deleted file mode 100644
index 4dbe376..0000000
--- a/ui-react/src/components/dialogs/ViewToscaModal/ViewToscaModal.test.js
+++ /dev/null
@@ -1,89 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2019 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 from 'react';
-import { shallow } from 'enzyme';
-import ViewToscaModal from './ViewToscaModal';
-import { mount } from 'enzyme';
-
-
-describe('Verify ViewToscaModal', () => {
-	beforeEach(() => {
-		fetch.resetMocks();
-		fetch.mockImplementation(() => {
-			return Promise.resolve({
-				ok: true,
-				status: 200,
-				json: () => {
-					return Promise.resolve({
-						"index": "1",
-  					"toscaModelYaml":"MTCA",
-						"toscaModelName":"DCAE_MTCAConfig",
-						"version":"16",
-						"userId":"aj928f",
-						"policyType":"mtca",
-						"lastUpdatedDate":"05-07-2019 19:09:42"
-					});
-				}
-			});
-		});
-	});
-
-	it('Test the tosca model view render method', () => {
-		const component = shallow(<ViewToscaModal/>);
-		component.setState({ toscaNames: {
-			"index": "1",
-			"toscaModelYaml": "MTCA",
-			"toscaModelName": "DCAE_MTCAConfig",
-			"version" : "16",
-			"userId" : "aj928f",
-			"policyType" : "mtca",
-			"lastUpdatedDate" : "05-07-2019 19:09:42"
-		}
-	});
-    expect(component).toMatchSnapshot();
-  });
-
-	it('Test Table icons', () => {
-		const component = mount(<ViewToscaModal/>);
-		expect(component.find('[className="MuiSelect-icon MuiTablePagination-selectIcon"]')).toBeTruthy();
-
-  });
-
-	it('Test handleYamlContent', () => {
-		const yamlContent = 'MTCA Tosca model details';
-		const component = shallow(<ViewToscaModal/>);
-		component.find('[value="Please select Tosca model to view the details"]').prop('onChange')({ target: { value: yamlContent }});
-    expect(component.state('content')).toEqual(yamlContent);
-  });
-
-	it('Test handleClose', () => {
-		const historyMock = { push: jest.fn() };
-    const handleClose = jest.spyOn(ViewToscaModal.prototype,'handleClose');
-    const component = shallow(<ViewToscaModal history={historyMock} />)
-    component.find('[variant="secondary"]').prop('onClick')();
-    expect(handleClose).toHaveBeenCalledTimes(1);
-    expect(component.state('show')).toEqual(false);
-    expect(historyMock.push.mock.calls[0]).toEqual([ '/']);
-    handleClose.mockClear();
-  });
-});
diff --git a/ui-react/src/components/menu/MenuBar.js b/ui-react/src/components/menu/MenuBar.js
index bbfa82a..e211b0e 100644
--- a/ui-react/src/components/menu/MenuBar.js
+++ b/ui-react/src/components/menu/MenuBar.js
@@ -88,7 +88,8 @@
 
 				<Navbar.Collapse>
 					<StyledNavDropdown title="Template">
-							<NavDropdown.Item as={StyledLink} to="/viewToscaModal">View Tosca Model</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/viewToscaPolicyModal">View Tosca Policy Models</NavDropdown.Item>
+							<NavDropdown.Item as={StyledLink} to="/viewBlueprintMicroServiceTemplatesModal">View Blueprint MicroService Templates</NavDropdown.Item>
 					</StyledNavDropdown>
 					<StyledNavDropdown title="Closed Loop">
 							<NavDropdown.Item as={StyledLink} to="/openLoop">Open CL</NavDropdown.Item>
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 9082ecc..1670124 100644
--- a/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap
+++ b/ui-react/src/components/menu/__snapshots__/MenuBar.test.js.snap
@@ -11,7 +11,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -44,7 +44,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
@@ -52,9 +52,60 @@
         }
       }
       disabled={false}
-      to="/viewToscaModal"
+      to="/viewToscaPolicyModal"
     >
-      View Tosca Model
+      View Tosca Policy Models
+    </DropdownItem>
+    <DropdownItem
+      as={
+        Object {
+          "$$typeof": Symbol(react.forward_ref),
+          "attrs": Array [],
+          "componentStyle": ComponentStyle {
+            "componentId": "sc-eNQAEJ",
+            "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-eNQAEJ",
+          "target": [Function],
+          "toString": [Function],
+          "warnTooManyClasses": [Function],
+          "withComponent": [Function],
+        }
+      }
+      disabled={false}
+      to="/viewBlueprintMicroServiceTemplatesModal"
+    >
+      View Blueprint MicroService Templates
     </DropdownItem>
   </Styled(NavDropdown)>
   <Styled(NavDropdown)
@@ -66,7 +117,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -99,7 +150,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
@@ -117,7 +168,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -150,7 +201,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
@@ -168,7 +219,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -201,7 +252,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
@@ -223,7 +274,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -256,7 +307,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
@@ -274,7 +325,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -307,7 +358,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
@@ -325,7 +376,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -358,7 +409,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
@@ -376,7 +427,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -409,7 +460,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
@@ -427,7 +478,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -460,7 +511,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
@@ -478,7 +529,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -511,7 +562,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
@@ -533,7 +584,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -566,7 +617,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
@@ -599,7 +650,7 @@
           "$$typeof": Symbol(react.forward_ref),
           "attrs": Array [],
           "componentStyle": ComponentStyle {
-            "componentId": "sc-dxgOiQ",
+            "componentId": "sc-eNQAEJ",
             "isStatic": false,
             "rules": Array [
               "
@@ -632,7 +683,7 @@
           "displayName": "Styled(Link)",
           "foldedComponentIds": Array [],
           "render": [Function],
-          "styledComponentId": "sc-dxgOiQ",
+          "styledComponentId": "sc-eNQAEJ",
           "target": [Function],
           "toString": [Function],
           "warnTooManyClasses": [Function],
