diff --git a/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.js b/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.js
index 1a8b6e2..453ca6b 100644
--- a/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.js
+++ b/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.js
@@ -24,24 +24,26 @@
 import React from 'react'
 import Button from 'react-bootstrap/Button';
 import Modal from 'react-bootstrap/Modal';
-import { LOOP_CACHE } from '../../../api/LoopCache'
 import styled from 'styled-components';
 
+import JSONEditor from '@json-editor/json-editor';
+
 const ModalStyled = styled(Modal)`
 	background-color: transparent;
 `
 
 export default class ConfigurationPolicyModal extends React.Component {
 
+	state = {
+		show: true,
+		loopCache: this.props.loopCache,
+		jsonEditor: null,
+	};
+
 	constructor(props, context) {
 		super(props, context);
-
 		this.handleClose = this.handleClose.bind(this);
-
-		this.state = {
-			show: true,
-		};
-
+		this.renderJsonEditor = this.renderJsonEditor.bind(this);
 	}
 
 	handleClose() {
@@ -49,7 +51,31 @@
 		this.props.history.push('/')
 	}
 
+	componentDidMount() {
+		this.renderJsonEditor();
+	}
 
+	renderJsonEditor() {
+		var toscaModel = this.state.loopCache.getMicroServiceJsonRepresentationForType("TCA_Jbv1z_v1_0_ResourceInstanceName1_tca");
+		if (toscaModel == null) {
+			return;
+		}
+		var editorData = this.state.loopCache.getMicroServiceProperties("TCA_Jbv1z_v1_0_ResourceInstanceName1_tca");
+
+		JSONEditor.defaults.options.theme = 'bootstrap4';
+		//JSONEditor.defaults.options.iconlib = 'bootstrap2';
+		JSONEditor.defaults.options.object_layout = 'grid';
+		JSONEditor.defaults.options.disable_properties = true;
+		JSONEditor.defaults.options.disable_edit_json = false;
+		JSONEditor.defaults.options.disable_array_reorder = true;
+		JSONEditor.defaults.options.disable_array_delete_last_row = true;
+		JSONEditor.defaults.options.disable_array_delete_all_rows = false;
+		JSONEditor.defaults.options.show_errors = 'always';
+
+		this.state.jsonEditor = new JSONEditor(document.getElementById("editor"),
+			{ schema: toscaModel.schema, startval: editorData });
+
+	}
 
 	render() {
 		return (
@@ -58,8 +84,7 @@
 					<Modal.Title>Configuration policies</Modal.Title>
 				</Modal.Header>
 				<Modal.Body>
-
-
+					<div id="editor" />
 
 				</Modal.Body>
 				<Modal.Footer>
diff --git a/ui-react/src/components/dialogs/OpenLoop/OpenLoopModal.js b/ui-react/src/components/dialogs/OpenLoop/OpenLoopModal.js
index 6986209..f3bdeb6 100644
--- a/ui-react/src/components/dialogs/OpenLoop/OpenLoopModal.js
+++ b/ui-react/src/components/dialogs/OpenLoop/OpenLoopModal.js
@@ -54,7 +54,7 @@
 		};
 	}
 
-	componentDidMount() {
+	componentWillMount() {
 		this.getLoopNames();
 	}
 
diff --git a/ui-react/src/components/loop_viewer/svg/LoopSvg.js b/ui-react/src/components/loop_viewer/svg/LoopSvg.js
index 2858ccd..44356c1 100644
--- a/ui-react/src/components/loop_viewer/svg/LoopSvg.js
+++ b/ui-react/src/components/loop_viewer/svg/LoopSvg.js
@@ -61,10 +61,6 @@
 		this.getSvg();
 	}
 
-	componentDidMount() {
-		this.getSvg();
-	}
-
 	getSvg() {
 		LoopService.getSvg(this.state.loopCache.getLoopName()).then(svgXml => {
 			if (svgXml.length != 0) {
diff --git a/ui-react/src/components/menu/MenuBar.js b/ui-react/src/components/menu/MenuBar.js
index 1a7c5d4..64aa6bc 100644
--- a/ui-react/src/components/menu/MenuBar.js
+++ b/ui-react/src/components/menu/MenuBar.js
@@ -42,7 +42,7 @@
 		      <NavDropdown title="Closed Loop" id="basic-nav-dropdown">
 		        <StyledNavDropdownItem href="/openLoop">Open CL</StyledNavDropdownItem>
 		        <StyledNavDropdownItem href="#action/3.2">Properties CL</StyledNavDropdownItem>
-		        <StyledNavDropdownItem href="#action/3.3">Close Model</StyledNavDropdownItem>
+		        <StyledNavDropdownItem href="/closeLoop">Close Model</StyledNavDropdownItem>
 		      </NavDropdown>
 					<NavDropdown title="Manage" id="basic-nav-dropdown">
 						<StyledNavDropdownItem href="/operationalPolicyModal">Submit</StyledNavDropdownItem>
