diff --git a/extra/sql/bulkload/create-tables.sql b/extra/sql/bulkload/create-tables.sql
index 0e15d4d..dafd800 100644
--- a/extra/sql/bulkload/create-tables.sql
+++ b/extra/sql/bulkload/create-tables.sql
@@ -23,9 +23,9 @@
         dcae_deployment_status_url varchar(255),
         global_properties_json json,
         last_computed_state varchar(255) not null,
-        model_properties_json json,
         operational_policy_schema json,
         svg_representation MEDIUMTEXT,
+        service_uuid varchar(255),
         primary key (name)
     ) engine=InnoDB;
 
@@ -52,11 +52,24 @@
         primary key (name)
     ) engine=InnoDB;
 
+    create table services (
+       service_uuid varchar(255) not null,
+        name varchar(255) not null,
+        resource_details json,
+        service_details json,
+        primary key (service_uuid)
+    ) engine=InnoDB;
+
     alter table loop_logs 
        add constraint FK1j0cda46aickcaoxqoo34khg2 
        foreign key (loop_id) 
        references loops (name);
 
+    alter table loops 
+       add constraint FK4b9wnqopxogwek014i1shqw7w 
+       foreign key (service_uuid) 
+       references services (service_uuid);
+
     alter table loops_microservicepolicies 
        add constraint FKem7tp1cdlpwe28av7ef91j1yl 
        foreign key (microservicepolicy_id) 
diff --git a/pom.xml b/pom.xml
index 06231a0..83bc1d0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1164,7 +1164,7 @@
 						</goals>
 						<phase>deploy</phase>
 						<configuration>
-							<arguments>run-script publish</arguments>
+							<arguments>publish</arguments>
 						</configuration>
 					</execution>
 				</executions>
@@ -1174,10 +1174,15 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>3.8.1</version>
 				<configuration>
-					<source>13</source>
-					<target>13</target>
+					<source>11</source>
+					<target>11</target>
 				</configuration>
 			</plugin>
+			<plugin>
+				<groupId>org.sonarsource.scanner.maven</groupId>
+				<artifactId>sonar-maven-plugin</artifactId>
+				<version>3.7.0.1746</version>
+			</plugin>
 		</plugins>
 	</build>
 </project>
diff --git a/src/main/docker/backend/Dockerfile b/src/main/docker/backend/Dockerfile
index 625d5a9..c2b76b0 100644
--- a/src/main/docker/backend/Dockerfile
+++ b/src/main/docker/backend/Dockerfile
@@ -21,7 +21,7 @@
 #
 ###
 
-FROM openjdk:13-alpine3.10
+FROM alpine:3.10.3
 
 MAINTAINER "The Onap Team"
 LABEL Description="This immage contains alpine, openjdk 11 and clamp"
@@ -33,6 +33,8 @@
 ENV http_proxy=$HTTP_PROXY
 ENV https_proxy=$HTTPS_PROXY
 
+RUN apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
+
 RUN addgroup onap && adduser -D -G onap clamp
 VOLUME /opt/clamp/config
 RUN mkdir /var/log/onap
diff --git a/src/main/java/org/onap/clamp/loop/Loop.java b/src/main/java/org/onap/clamp/loop/Loop.java
index 37d597e..ef70ba8 100644
--- a/src/main/java/org/onap/clamp/loop/Loop.java
+++ b/src/main/java/org/onap/clamp/loop/Loop.java
@@ -48,6 +48,7 @@
 import javax.persistence.JoinColumn;
 import javax.persistence.JoinTable;
 import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
 import javax.persistence.Transient;
@@ -61,6 +62,7 @@
 import org.onap.clamp.loop.components.external.ExternalComponent;
 import org.onap.clamp.loop.components.external.PolicyComponent;
 import org.onap.clamp.loop.log.LoopLog;
+import org.onap.clamp.loop.service.Service;
 import org.onap.clamp.policy.microservice.MicroServicePolicy;
 import org.onap.clamp.policy.operational.OperationalPolicy;
 import org.onap.clamp.policy.operational.OperationalPolicyRepresentationBuilder;
@@ -109,9 +111,9 @@
     private JsonObject globalPropertiesJson;
 
     @Expose
-    @Type(type = "json")
-    @Column(columnDefinition = "json", name = "model_properties_json")
-    private JsonObject modelPropertiesJson;
+    @ManyToOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
+    @JoinColumn(name = "service_uuid")
+    private Service modelService;
 
     @Column(columnDefinition = "MEDIUMTEXT", nullable = false, name = "blueprint_yaml")
     private String blueprint;
@@ -266,15 +268,15 @@
         this.dcaeBlueprintId = dcaeBlueprintId;
     }
 
-    public JsonObject getModelPropertiesJson() {
-        return modelPropertiesJson;
+    public Service getModelService() {
+        return modelService;
     }
 
-    void setModelPropertiesJson(JsonObject modelPropertiesJson) {
-        this.modelPropertiesJson = modelPropertiesJson;
+    void setModelService(Service modelService) {
+        this.modelService = modelService;
         try {
             this.operationalPolicySchema = OperationalPolicyRepresentationBuilder
-                    .generateOperationalPolicySchema(this.getModelPropertiesJson());
+                    .generateOperationalPolicySchema(this.getModelService());
         } catch (JsonSyntaxException | IOException | NullPointerException e) {
             logger.error("Unable to generate the operational policy Schema ... ", e);
             this.operationalPolicySchema = new JsonObject();
diff --git a/src/main/java/org/onap/clamp/loop/LoopCsarInstaller.java b/src/main/java/org/onap/clamp/loop/LoopCsarInstaller.java
index b8bc1f5..55009bc 100644
--- a/src/main/java/org/onap/clamp/loop/LoopCsarInstaller.java
+++ b/src/main/java/org/onap/clamp/loop/LoopCsarInstaller.java
@@ -46,6 +46,7 @@
 import org.onap.clamp.clds.sdc.controller.installer.MicroService;
 import org.onap.clamp.clds.util.JsonUtils;
 import org.onap.clamp.clds.util.drawing.SvgFacade;
+import org.onap.clamp.loop.service.Service;
 import org.onap.clamp.policy.Policy;
 import org.onap.clamp.policy.microservice.MicroServicePolicy;
 import org.onap.clamp.policy.operational.OperationalPolicy;
@@ -138,7 +139,7 @@
         if (microServicesChain.isEmpty()) {
             microServicesChain = blueprintParser.fallbackToOneMicroService(blueprintArtifact.getDcaeBlueprint());
         }
-        newLoop.setModelPropertiesJson(createModelPropertiesJson(csar));
+        newLoop.setModelService(createServiceModel(csar));
         newLoop.setMicroServicePolicies(
                 createMicroServicePolicies(microServicesChain, csar, blueprintArtifact, newLoop));
         newLoop.setOperationalPolicies(createOperationalPolicies(csar, blueprintArtifact, newLoop));
@@ -219,16 +220,17 @@
         return resourcesProp;
     }
 
-    private static JsonObject createModelPropertiesJson(CsarHandler csar) {
-        JsonObject modelProperties = new JsonObject();
-        // Add service details
-        modelProperties.add("serviceDetails", JsonUtils.GSON.fromJson(
-                JsonUtils.GSON.toJson(csar.getSdcCsarHelper().getServiceMetadataAllProperties()), JsonObject.class));
+    private Service createServiceModel(CsarHandler csar) {
+        JsonObject serviceDetails = JsonUtils.GSON.fromJson(
+                JsonUtils.GSON.toJson(csar.getSdcCsarHelper().getServiceMetadataAllProperties()), JsonObject.class);
+
         // Add properties details for each type, VfModule, VF, VFC, ....
         JsonObject resourcesProp = createServicePropertiesByType(csar);
         resourcesProp.add("VFModule", createVfModuleProperties(csar));
-        modelProperties.add("resourceDetails", resourcesProp);
-        return modelProperties;
+
+        Service modelService = new Service(serviceDetails, resourcesProp);
+
+        return modelService;
     }
 
     private JsonObject getAllBlueprintParametersInJson(BlueprintArtifact blueprintArtifact, Loop newLoop) {
diff --git a/src/main/java/org/onap/clamp/loop/service/Service.java b/src/main/java/org/onap/clamp/loop/service/Service.java
new file mode 100644
index 0000000..ac1216b
--- /dev/null
+++ b/src/main/java/org/onap/clamp/loop/service/Service.java
@@ -0,0 +1,137 @@
+/*-
+ * ============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============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.clamp.loop.service;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.google.gson.JsonObject;
+import com.google.gson.annotations.Expose;
+
+import java.io.Serializable;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.hibernate.annotations.Type;
+import org.hibernate.annotations.TypeDef;
+import org.hibernate.annotations.TypeDefs;
+import org.onap.clamp.dao.model.jsontype.StringJsonUserType;
+
+
+@Entity
+@Table(name = "services")
+@TypeDefs({ @TypeDef(name = "json", typeClass = StringJsonUserType.class) })
+public class Service implements Serializable {
+
+    /**
+     * The serial version id.
+     */
+    private static final long serialVersionUID = 1331119060272760758L;
+
+    @Transient
+    private static final EELFLogger logger = EELFManager.getInstance().getLogger(Service.class);
+
+    @Id
+    @Column(name = "service_uuid", unique = true)
+    private String serviceUuid;
+
+    @Column(nullable = false, name = "name")
+    private String name;
+
+    @Expose
+    @Type(type = "json")
+    @Column(columnDefinition = "json", name = "service_details")
+    private JsonObject serviceDetails;
+
+    @Expose
+    @Type(type = "json")
+    @Column(columnDefinition = "json", name = "resource_details")
+    private JsonObject resourceDetails;
+
+    /**
+     * Public constructor.
+     */
+    public Service() {
+    }
+
+    /**
+     * Constructor.
+     */
+    public Service(JsonObject serviceDetails, JsonObject resourceDetails) {
+        this.name = serviceDetails.get("name").getAsString();
+        this.serviceUuid = serviceDetails.get("UUID").getAsString();
+        this.serviceDetails = serviceDetails;
+        this.resourceDetails = resourceDetails;
+    }
+
+    public String getServiceUuid() {
+        return serviceUuid;
+    }
+
+    public JsonObject getServiceDetails() {
+        return serviceDetails;
+    }
+
+    public JsonObject getResourceDetails() {
+        return resourceDetails;
+    }
+
+    public JsonObject getResourceByType(String type) {
+        return (JsonObject) resourceDetails.get(type);
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((serviceUuid == null) ? 0 : serviceUuid.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        Service other = (Service) obj;
+        if (serviceUuid == null) {
+            if (other.serviceUuid != null) {
+                return false;
+            }
+        } else if (!serviceUuid.equals(other.serviceUuid)) {
+            return false;
+        }
+        return true;
+    }
+
+}
diff --git a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java
index f6f3f49..1d0d990 100644
--- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java
+++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java
@@ -33,6 +33,7 @@
 
 import org.onap.clamp.clds.util.JsonUtils;
 import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.onap.clamp.loop.service.Service;
 
 public class OperationalPolicyRepresentationBuilder {
 
@@ -47,7 +48,7 @@
      * @throws JsonSyntaxException If the schema template cannot be parsed
      * @throws IOException         In case of issue when opening the schema template
      */
-    public static JsonObject generateOperationalPolicySchema(JsonObject modelJson)
+    public static JsonObject generateOperationalPolicySchema(Service modelJson)
             throws JsonSyntaxException, IOException {
         JsonObject jsonSchema = JsonUtils.GSON.fromJson(
                 ResourceFileUtil.getResourceAsString("clds/json-schema/operational_policies/operational_policy.json"),
@@ -78,9 +79,9 @@
         return property;
     }
 
-    private static JsonArray createVnfSchema(JsonObject modelJson) {
+    private static JsonArray createVnfSchema(Service modelService) {
         JsonArray vnfSchemaArray = new JsonArray();
-        JsonObject modelVnfs = modelJson.get("resourceDetails").getAsJsonObject().get("VF").getAsJsonObject();
+        JsonObject modelVnfs = modelService.getResourceByType("VF");
 
         for (Entry<String, JsonElement> entry : modelVnfs.entrySet()) {
             JsonObject vnfOneOfSchema = new JsonObject();
@@ -96,10 +97,9 @@
         return vnfSchemaArray;
     }
 
-    private static JsonArray createVfModuleSchema(JsonObject modelJson) {
+    private static JsonArray createVfModuleSchema(Service modelService) {
         JsonArray vfModuleOneOfSchemaArray = new JsonArray();
-        JsonObject modelVfModules = modelJson.get("resourceDetails").getAsJsonObject().get("VFModule")
-                .getAsJsonObject();
+        JsonObject modelVfModules = modelService.getResourceByType("VFModule");
 
         for (Entry<String, JsonElement> entry : modelVfModules.entrySet()) {
             JsonObject vfModuleOneOfSchema = new JsonObject();
@@ -137,7 +137,7 @@
         return vfModuleOneOfSchemaArray;
     }
 
-    private static JsonArray createAnyOfArray(JsonObject modelJson) {
+    private static JsonArray createAnyOfArray(Service modelJson) {
         JsonArray targetOneOfStructure = new JsonArray();
         targetOneOfStructure.addAll(createVnfSchema(modelJson));
         targetOneOfStructure.addAll(createVfModuleSchema(modelJson));
diff --git a/src/main/script/SelectNpmRepo.groovy b/src/main/script/SelectNpmRepo.groovy
index 08a2cb0..92371cf 100644
--- a/src/main/script/SelectNpmRepo.groovy
+++ b/src/main/script/SelectNpmRepo.groovy
@@ -28,7 +28,7 @@
 if ( project.properties['clamp.project.version'].endsWith("-SNAPSHOT") ) {
     project.properties['npm.publish.url']="https://nexus3.onap.org/repository/npm.snapshot/"
 } else {
-    project.properties['npm.publish.url']="https://nexus3.onap.org/repository/npm.release/"
+    project.properties['npm.publish.url']="https://nexus3.onap.org/repository/npm.snapshot/"
 } 
 
-println 'NPM repository: ' + project.properties['npm.publish.url'];
\ No newline at end of file
+println 'NPM repository: ' + project.properties['npm.publish.url'];
diff --git a/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java b/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java
index 072d577..40cc065 100644
--- a/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java
+++ b/src/test/java/org/onap/clamp/clds/it/CldsServiceItCase.java
@@ -104,7 +104,6 @@
 
     @Test
     public void testCldsInfoAuthorized() throws Exception {
-        Authentication authentication;
         List<GrantedAuthority> authList = new LinkedList<GrantedAuthority>();
         authList.add(new SimpleGrantedAuthority("permission-type-cl-manage|dev|*"));
         authList.add(new SimpleGrantedAuthority("permission-type-cl|dev|read"));
@@ -113,6 +112,7 @@
         authList.add(new SimpleGrantedAuthority("permission-type-template|dev|update"));
         authList.add(new SimpleGrantedAuthority("permission-type-filter-vf|dev|*"));
         authList.add(new SimpleGrantedAuthority("permission-type-cl-event|dev|*"));
+        Authentication authentication;
         authentication = new UsernamePasswordAuthenticationToken(new User("admin", "", authList), "", authList);
 
         Mockito.when(securityContext.getAuthentication()).thenReturn(authentication);
diff --git a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java
index fbf1f20..e3271c7 100644
--- a/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java
+++ b/src/test/java/org/onap/clamp/loop/CsarInstallerItCase.java
@@ -202,10 +202,13 @@
         assertThat(loop.getGlobalPropertiesJson().get("dcaeDeployParameters")).isNotNull();
         assertThat(loop.getMicroServicePolicies()).hasSize(1);
         assertThat(loop.getOperationalPolicies()).hasSize(1);
-        assertThat(loop.getModelPropertiesJson().get("serviceDetails")).isNotNull();
-        assertThat(loop.getModelPropertiesJson().get("resourceDetails")).isNotNull();
+        assertThat(loop.getModelService().getServiceUuid()).isEqualTo("63cac700-ab9a-4115-a74f-7eac85e3fce0");
         JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/model-properties.json"),
-                JsonUtils.GSON.toJson(loop.getModelPropertiesJson()), true);
+            JsonUtils.GSON_JPA_MODEL.toJson(loop.getModelService()), true);
+        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/service-details.json"),
+                JsonUtils.GSON_JPA_MODEL.toJson(loop.getModelService().getServiceDetails()), true);
+        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/resource-details.json"),
+                JsonUtils.GSON_JPA_MODEL.toJson(loop.getModelService().getResourceDetails()), true);
         assertThat(((MicroServicePolicy) (loop.getMicroServicePolicies().toArray()[0])).getModelType()).isNotEmpty();
 
         loop = loopsRepo
diff --git a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java
index 1fedc9a..28a92e3 100644
--- a/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java
+++ b/src/test/java/org/onap/clamp/loop/LoopServiceTestItCase.java
@@ -347,8 +347,8 @@
         saveTestLoopToDb();
         assertThat(microServicePolicyService.isExisting("policyName")).isFalse();
         MicroServicePolicy microServicePolicy = new MicroServicePolicy("policyName", "",
-                                                                       "tosca_definitions_version: tosca_simple_yaml_1_0_0", false,
-                                                                       JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
+            "tosca_definitions_version: tosca_simple_yaml_1_0_0", false,
+            JsonUtils.GSON.fromJson(EXAMPLE_JSON, JsonObject.class), null);
         loopService.updateMicroservicePolicy(EXAMPLE_LOOP_NAME, microServicePolicy);
         assertThat(microServicePolicyService.isExisting("policyName")).isTrue();
     }
diff --git a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
index 3010fe5..b68bf48 100644
--- a/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
+++ b/src/test/java/org/onap/clamp/loop/LoopToJsonTest.java
@@ -29,7 +29,9 @@
 import static org.junit.Assert.assertNotNull;
 
 import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 import com.google.gson.JsonObject;
+import com.google.gson.JsonSyntaxException;
 
 import java.io.IOException;
 import java.util.HashSet;
@@ -41,6 +43,7 @@
 import org.onap.clamp.loop.components.external.PolicyComponent;
 import org.onap.clamp.loop.log.LogType;
 import org.onap.clamp.loop.log.LoopLog;
+import org.onap.clamp.loop.service.Service;
 import org.onap.clamp.policy.microservice.MicroServicePolicy;
 import org.onap.clamp.policy.operational.OperationalPolicy;
 import org.skyscreamer.jsonassert.JSONAssert;
@@ -54,7 +57,7 @@
     }
 
     private Loop getLoop(String name, String svgRepresentation, String blueprint, String globalPropertiesJson,
-            String dcaeId, String dcaeUrl, String dcaeBlueprintId) {
+            String dcaeId, String dcaeUrl, String dcaeBlueprintId) throws JsonSyntaxException, IOException {
         Loop loop = new Loop(name, blueprint, svgRepresentation);
         loop.setGlobalPropertiesJson(new Gson().fromJson(globalPropertiesJson, JsonObject.class));
         loop.setLastComputedState(LoopState.DESIGN);
@@ -116,6 +119,29 @@
     }
 
     @Test
+    public void loopServiceTest() throws IOException {
+        Loop loopTest2 = getLoop("ControlLoopTest", "<xml></xml>", "yamlcontent", "{\"testname\":\"testvalue\"}",
+                "123456789", "https://dcaetest.org", "UUID-blueprint");
+
+        JsonObject jsonModel = new GsonBuilder().create()
+                .fromJson(ResourceFileUtil.getResourceAsString("tosca/model-properties.json"), JsonObject.class);
+        Service service = new Service(jsonModel.get("serviceDetails").getAsJsonObject(),
+                jsonModel.get("resourceDetails").getAsJsonObject());
+        loopTest2.setModelService(service);
+
+        String jsonSerialized = JsonUtils.GSON_JPA_MODEL.toJson(loopTest2);
+        assertThat(jsonSerialized).isNotNull().isNotEmpty();
+        System.out.println(jsonSerialized);
+        JSONAssert.assertEquals(ResourceFileUtil.getResourceAsString("tosca/loop.json"),
+                jsonSerialized, true);
+
+        Loop loopTestDeserialized = JsonUtils.GSON_JPA_MODEL.fromJson(jsonSerialized, Loop.class);
+        assertNotNull(loopTestDeserialized);
+        assertThat(loopTestDeserialized).isEqualToIgnoringGivenFields(loopTest2, "modelService", 
+            "svgRepresentation", "blueprint", "components");
+    }
+
+    @Test
     public void createPoliciesPayloadPdpGroupTest() throws IOException {
         Loop loopTest = getLoop("ControlLoopTest", "<xml></xml>", "yamlcontent", "{\"testname\":\"testvalue\"}",
                 "123456789", "https://dcaetest.org", "UUID-blueprint");
diff --git a/src/test/java/org/onap/clamp/loop/ServiceTest.java b/src/test/java/org/onap/clamp/loop/ServiceTest.java
new file mode 100644
index 0000000..45de538
--- /dev/null
+++ b/src/test/java/org/onap/clamp/loop/ServiceTest.java
@@ -0,0 +1,55 @@
+/*-
+ * ============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============================================
+ * ===================================================================
+ *
+ */
+
+package org.onap.clamp.loop;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.google.gson.JsonObject;
+
+import org.junit.Test;
+import org.onap.clamp.clds.util.JsonUtils;
+import org.onap.clamp.loop.service.Service;
+
+public class ServiceTest {
+
+    @Test
+    public void equalMethodTest() {
+        String serviceStr1 = "{\"name\": \"vLoadBalancerMS\", \"UUID\": \"63cac700-ab9a-4115-a74f-7eac85e3fce0\"}";
+        String serviceStr2 = "{\"name\": \"vLoadBalancerMS2\", \"UUID\": \"63cac700-ab9a-4115-a74f-7eac85e3fce0\"}";
+        String serviceStr3 = "{\"name\": \"vLoadBalancerMS\",\"UUID\": \"63cac700-ab9a-4115-a74f-7eac85e3fc11\"}";
+        String resourceStr = "{\"CP\": {}}";
+
+        Service service1 = new Service(JsonUtils.GSON.fromJson(serviceStr1, JsonObject.class), 
+                JsonUtils.GSON.fromJson(resourceStr, JsonObject.class));
+
+        Service service2 = new Service(JsonUtils.GSON.fromJson(serviceStr2, JsonObject.class), null);
+
+        Service service3 = new Service(JsonUtils.GSON.fromJson(serviceStr3, JsonObject.class), 
+                JsonUtils.GSON.fromJson(resourceStr, JsonObject.class));
+
+        assertThat(service1.equals(service2)).isEqualTo(true);
+        assertThat(service1.equals(service3)).isEqualTo(false);
+    }
+
+}
diff --git a/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java b/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
index 904525b..673ac32 100644
--- a/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
+++ b/src/test/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilderTest.java
@@ -32,6 +32,7 @@
 
 import org.junit.Test;
 import org.onap.clamp.clds.util.ResourceFileUtil;
+import org.onap.clamp.loop.service.Service;
 import org.skyscreamer.jsonassert.JSONAssert;
 
 public class OperationalPolicyRepresentationBuilderTest {
@@ -40,8 +41,10 @@
     public void testOperationalPolicyPayloadConstruction() throws IOException {
         JsonObject jsonModel = new GsonBuilder().create()
                 .fromJson(ResourceFileUtil.getResourceAsString("tosca/model-properties.json"), JsonObject.class);
+        Service service = new Service(jsonModel.get("serviceDetails").getAsJsonObject(),
+                jsonModel.get("resourceDetails").getAsJsonObject());
 
-        JsonObject jsonSchema = OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(jsonModel);
+        JsonObject jsonSchema = OperationalPolicyRepresentationBuilder.generateOperationalPolicySchema(service);
 
         assertThat(jsonSchema).isNotNull();
 
diff --git a/src/test/resources/tosca/loop.json b/src/test/resources/tosca/loop.json
new file mode 100644
index 0000000..557fa6f
--- /dev/null
+++ b/src/test/resources/tosca/loop.json
@@ -0,0 +1,704 @@
+{
+  "name": "ControlLoopTest",
+  "dcaeDeploymentId": "123456789",
+  "dcaeDeploymentStatusUrl": "https://dcaetest.org",
+  "dcaeBlueprintId": "UUID-blueprint",
+  "operationalPolicySchema": {
+    "schema": {
+      "uniqueItems": "true",
+      "format": "tabs",
+      "type": "array",
+      "minItems": 1,
+      "maxItems": 1,
+      "title": "Operational policies",
+      "items": {
+        "type": "object",
+        "title": "Operational Policy Item",
+        "id": "operational_policy_item",
+        "headerTemplate": "{{self.name}}",
+        "required": [
+          "name",
+          "configurationsJson"
+        ],
+        "properties": {
+          "name": {
+            "type": "string",
+            "title": "Operational policy name",
+            "readOnly": "True"
+          },
+          "configurationsJson": {
+            "type": "object",
+            "title": "Configuration",
+            "required": [
+              "operational_policy",
+              "guard_policies"
+            ],
+            "properties": {
+              "operational_policy": {
+                "type": "object",
+                "title": "Related Parameters",
+                "required": [
+                  "controlLoop",
+                  "policies"
+                ],
+                "properties": {
+                  "controlLoop": {
+                    "type": "object",
+                    "title": "Control Loop details",
+                    "required": [
+                      "timeout",
+                      "abatement",
+                      "trigger_policy",
+                      "controlLoopName"
+                    ],
+                    "properties": {
+                      "timeout": {
+                        "type": "string",
+                        "title": "Overall Time Limit",
+                        "default": "0",
+                        "format": "number"
+                      },
+                      "abatement": {
+                        "type": "string",
+                        "title": "Abatement",
+                        "enum": [
+                          "True",
+                          "False"
+                        ]
+                      },
+                      "trigger_policy": {
+                        "type": "string",
+                        "title": "Policy Decision Entry"
+                      },
+                      "controlLoopName": {
+                        "type": "string",
+                        "title": "Control loop name",
+                        "readOnly": "True"
+                      }
+                    }
+                  },
+                  "policies": {
+                    "uniqueItems": "true",
+                    "id": "policies_array",
+                    "type": "array",
+                    "title": "Policy Decision Tree",
+                    "format": "tabs-top",
+                    "items": {
+                      "title": "Policy Decision",
+                      "type": "object",
+                      "id": "policy_item",
+                      "headerTemplate": "{{self.id}} - {{self.recipe}}",
+                      "format": "categories",
+                      "basicCategoryTitle": "recipe",
+                      "required": [
+                        "id",
+                        "recipe",
+                        "retry",
+                        "timeout",
+                        "actor",
+                        "success",
+                        "failure",
+                        "failure_timeout",
+                        "failure_retries",
+                        "failure_exception",
+                        "failure_guard",
+                        "target"
+                      ],
+                      "properties": {
+                        "id": {
+                          "default": "Policy 1",
+                          "title": "Policy ID",
+                          "type": "string"
+                        },
+                        "recipe": {
+                          "title": "Recipe",
+                          "type": "string",
+                          "enum": [
+                            "Restart",
+                            "Rebuild",
+                            "Migrate",
+                            "Health-Check",
+                            "ModifyConfig",
+                            "VF Module Create",
+                            "VF Module Delete",
+                            "Reroute"
+                          ]
+                        },
+                        "retry": {
+                          "default": "0",
+                          "title": "Number of Retry",
+                          "type": "string",
+                          "format": "number"
+                        },
+                        "timeout": {
+                          "default": "0",
+                          "title": "Timeout",
+                          "type": "string",
+                          "format": "number"
+                        },
+                        "actor": {
+                          "title": "Actor",
+                          "type": "string",
+                          "enum": [
+                            "APPC",
+                            "SO",
+                            "VFC",
+                            "SDNC",
+                            "SDNR"
+                          ]
+                        },
+                        "payload": {
+                          "title": "Payload (YAML)",
+                          "type": "string",
+                          "format": "textarea"
+                        },
+                        "success": {
+                          "default": "final_success",
+                          "title": "When Success",
+                          "type": "string"
+                        },
+                        "failure": {
+                          "default": "final_failure",
+                          "title": "When Failure",
+                          "type": "string"
+                        },
+                        "failure_timeout": {
+                          "default": "final_failure_timeout",
+                          "title": "When Failure Timeout",
+                          "type": "string"
+                        },
+                        "failure_retries": {
+                          "default": "final_failure_retries",
+                          "title": "When Failure Retries",
+                          "type": "string"
+                        },
+                        "failure_exception": {
+                          "default": "final_failure_exception",
+                          "title": "When Failure Exception",
+                          "type": "string"
+                        },
+                        "failure_guard": {
+                          "default": "final_failure_guard",
+                          "title": "When Failure Guard",
+                          "type": "string"
+                        },
+                        "target": {
+                          "type": "object",
+                          "required": [
+                            "type",
+                            "resourceID"
+                          ],
+                          "anyOf": [
+                            {
+                              "title": "User Defined",
+                              "additionalProperties": "True",
+                              "properties": {
+                                "type": {
+                                  "title": "Target type",
+                                  "type": "string",
+                                  "default": "",
+                                  "enum": [
+                                    "VNF",
+                                    "VFMODULE",
+                                    "VM"
+                                  ]
+                                },
+                                "resourceID": {
+                                  "title": "Target type",
+                                  "type": "string",
+                                  "default": ""
+                                }
+                              }
+                            },
+                            {
+                              "title": "VNF-vLoadBalancerMS 0",
+                              "properties": {
+                                "type": {
+                                  "title": "Type",
+                                  "type": "string",
+                                  "default": "VNF",
+                                  "readOnly": "True"
+                                },
+                                "resourceID": {
+                                  "title": "Resource ID",
+                                  "type": "string",
+                                  "default": "vLoadBalancerMS",
+                                  "readOnly": "True"
+                                }
+                              }
+                            },
+                            {
+                              "title": "VFMODULE-Vloadbalancerms..vpkg..module-1",
+                              "properties": {
+                                "type": {
+                                  "title": "Type",
+                                  "type": "string",
+                                  "default": "VFMODULE",
+                                  "readOnly": "True"
+                                },
+                                "resourceID": {
+                                  "title": "Resource ID",
+                                  "type": "string",
+                                  "default": "Vloadbalancerms..vpkg..module-1",
+                                  "readOnly": "True"
+                                },
+                                "modelInvariantId": {
+                                  "title": "Model Invariant Id (ModelInvariantUUID)",
+                                  "type": "string",
+                                  "default": "ca052563-eb92-4b5b-ad41-9111768ce043",
+                                  "readOnly": "True"
+                                },
+                                "modelVersionId": {
+                                  "title": "Model Version Id (ModelUUID)",
+                                  "type": "string",
+                                  "default": "1e725ccc-b823-4f67-82b9-4f4367070dbc",
+                                  "readOnly": "True"
+                                },
+                                "modelName": {
+                                  "title": "Model Name",
+                                  "type": "string",
+                                  "default": "Vloadbalancerms..vpkg..module-1",
+                                  "readOnly": "True"
+                                },
+                                "modelVersion": {
+                                  "title": "Model Version",
+                                  "type": "string",
+                                  "default": "1",
+                                  "readOnly": "True"
+                                },
+                                "modelCustomizationId": {
+                                  "title": "Customization ID",
+                                  "type": "string",
+                                  "default": "1bffdc31-a37d-4dee-b65c-dde623a76e52",
+                                  "readOnly": "True"
+                                }
+                              }
+                            },
+                            {
+                              "title": "VFMODULE-Vloadbalancerms..vdns..module-3",
+                              "properties": {
+                                "type": {
+                                  "title": "Type",
+                                  "type": "string",
+                                  "default": "VFMODULE",
+                                  "readOnly": "True"
+                                },
+                                "resourceID": {
+                                  "title": "Resource ID",
+                                  "type": "string",
+                                  "default": "Vloadbalancerms..vdns..module-3",
+                                  "readOnly": "True"
+                                },
+                                "modelInvariantId": {
+                                  "title": "Model Invariant Id (ModelInvariantUUID)",
+                                  "type": "string",
+                                  "default": "4c10ba9b-f88f-415e-9de3-5d33336047fa",
+                                  "readOnly": "True"
+                                },
+                                "modelVersionId": {
+                                  "title": "Model Version Id (ModelUUID)",
+                                  "type": "string",
+                                  "default": "4fa73b49-8a6c-493e-816b-eb401567b720",
+                                  "readOnly": "True"
+                                },
+                                "modelName": {
+                                  "title": "Model Name",
+                                  "type": "string",
+                                  "default": "Vloadbalancerms..vdns..module-3",
+                                  "readOnly": "True"
+                                },
+                                "modelVersion": {
+                                  "title": "Model Version",
+                                  "type": "string",
+                                  "default": "1",
+                                  "readOnly": "True"
+                                },
+                                "modelCustomizationId": {
+                                  "title": "Customization ID",
+                                  "type": "string",
+                                  "default": "bafcdab0-801d-4d81-9ead-f464640a38b1",
+                                  "readOnly": "True"
+                                }
+                              }
+                            },
+                            {
+                              "title": "VFMODULE-Vloadbalancerms..base_template..module-0",
+                              "properties": {
+                                "type": {
+                                  "title": "Type",
+                                  "type": "string",
+                                  "default": "VFMODULE",
+                                  "readOnly": "True"
+                                },
+                                "resourceID": {
+                                  "title": "Resource ID",
+                                  "type": "string",
+                                  "default": "Vloadbalancerms..base_template..module-0",
+                                  "readOnly": "True"
+                                },
+                                "modelInvariantId": {
+                                  "title": "Model Invariant Id (ModelInvariantUUID)",
+                                  "type": "string",
+                                  "default": "921f7c96-ebdd-42e6-81b9-1cfc0c9796f3",
+                                  "readOnly": "True"
+                                },
+                                "modelVersionId": {
+                                  "title": "Model Version Id (ModelUUID)",
+                                  "type": "string",
+                                  "default": "63734409-f745-4e4d-a38b-131638a0edce",
+                                  "readOnly": "True"
+                                },
+                                "modelName": {
+                                  "title": "Model Name",
+                                  "type": "string",
+                                  "default": "Vloadbalancerms..base_template..module-0",
+                                  "readOnly": "True"
+                                },
+                                "modelVersion": {
+                                  "title": "Model Version",
+                                  "type": "string",
+                                  "default": "1",
+                                  "readOnly": "True"
+                                },
+                                "modelCustomizationId": {
+                                  "title": "Customization ID",
+                                  "type": "string",
+                                  "default": "86baddea-c730-4fb8-9410-cd2e17fd7f27",
+                                  "readOnly": "True"
+                                }
+                              }
+                            },
+                            {
+                              "title": "VFMODULE-Vloadbalancerms..vlb..module-2",
+                              "properties": {
+                                "type": {
+                                  "title": "Type",
+                                  "type": "string",
+                                  "default": "VFMODULE",
+                                  "readOnly": "True"
+                                },
+                                "resourceID": {
+                                  "title": "Resource ID",
+                                  "type": "string",
+                                  "default": "Vloadbalancerms..vlb..module-2",
+                                  "readOnly": "True"
+                                },
+                                "modelInvariantId": {
+                                  "title": "Model Invariant Id (ModelInvariantUUID)",
+                                  "type": "string",
+                                  "default": "a772a1f4-0064-412c-833d-4749b15828dd",
+                                  "readOnly": "True"
+                                },
+                                "modelVersionId": {
+                                  "title": "Model Version Id (ModelUUID)",
+                                  "type": "string",
+                                  "default": "0f5c3f6a-650a-4303-abb6-fff3e573a07a",
+                                  "readOnly": "True"
+                                },
+                                "modelName": {
+                                  "title": "Model Name",
+                                  "type": "string",
+                                  "default": "Vloadbalancerms..vlb..module-2",
+                                  "readOnly": "True"
+                                },
+                                "modelVersion": {
+                                  "title": "Model Version",
+                                  "type": "string",
+                                  "default": "1",
+                                  "readOnly": "True"
+                                },
+                                "modelCustomizationId": {
+                                  "title": "Customization ID",
+                                  "type": "string",
+                                  "default": "96a78aad-4ffb-4ef0-9c4f-deb03bf1d806",
+                                  "readOnly": "True"
+                                }
+                              }
+                            }
+                          ]
+                        }
+                      }
+                    }
+                  }
+                }
+              },
+              "guard_policies": {
+                "type": "array",
+                "format": "tabs-top",
+                "title": "Associated Guard policies",
+                "items": {
+                  "headerTemplate": "{{self.policy-id}} - {{self.content.recipe}}",
+                  "anyOf": [
+                    {
+                      "title": "Guard MinMax",
+                      "type": "object",
+                      "properties": {
+                        "policy-id": {
+                          "type": "string",
+                          "default": "guard.minmax.new",
+                          "pattern": "^(guard.minmax\\..*)$"
+                        },
+                        "content": {
+                          "properties": {
+                            "actor": {
+                              "type": "string",
+                              "enum": [
+                                "APPC",
+                                "SO",
+                                "VFC",
+                                "SDNC",
+                                "SDNR"
+                              ]
+                            },
+                            "recipe": {
+                              "type": "string",
+                              "enum": [
+                                "Restart",
+                                "Rebuild",
+                                "Migrate",
+                                "Health-Check",
+                                "ModifyConfig",
+                                "VF Module Create",
+                                "VF Module Delete",
+                                "Reroute"
+                              ]
+                            },
+                            "targets": {
+                              "type": "string",
+                              "default": ".*"
+                            },
+                            "clname": {
+                              "type": "string",
+                              "template": "{{loopName}}",
+                              "watch": {
+                                "loopName": "operational_policy_item.configurationsJson.operational_policy.controlLoop.controlLoopName"
+                              }
+                            },
+                            "guardActiveStart": {
+                              "type": "string",
+                              "default": "00:00:00Z"
+                            },
+                            "guardActiveEnd": {
+                              "type": "string",
+                              "default": "10:00:00Z"
+                            },
+                            "min": {
+                              "type": "string",
+                              "default": "0"
+                            },
+                            "max": {
+                              "type": "string",
+                              "default": "1"
+                            }
+                          }
+                        }
+                      }
+                    },
+                    {
+                      "title": "Guard Frequency",
+                      "type": "object",
+                      "properties": {
+                        "policy-id": {
+                          "type": "string",
+                          "default": "guard.frequency.new",
+                          "pattern": "^(guard.frequency\\..*)$"
+                        },
+                        "content": {
+                          "properties": {
+                            "actor": {
+                              "type": "string",
+                              "enum": [
+                                "APPC",
+                                "SO",
+                                "VFC",
+                                "SDNC",
+                                "SDNR"
+                              ]
+                            },
+                            "recipe": {
+                              "type": "string",
+                              "enum": [
+                                "Restart",
+                                "Rebuild",
+                                "Migrate",
+                                "Health-Check",
+                                "ModifyConfig",
+                                "VF Module Create",
+                                "VF Module Delete",
+                                "Reroute"
+                              ]
+                            },
+                            "targets": {
+                              "type": "string",
+                              "default": ".*"
+                            },
+                            "clname": {
+                              "type": "string",
+                              "template": "{{loopName}}",
+                              "watch": {
+                                "loopName": "operational_policy_item.configurationsJson.operational_policy.controlLoop.controlLoopName"
+                              }
+                            },
+                            "guardActiveStart": {
+                              "type": "string",
+                              "default": "00:00:00Z"
+                            },
+                            "guardActiveEnd": {
+                              "type": "string",
+                              "default": "10:00:00Z"
+                            },
+                            "limit": {
+                              "type": "string"
+                            },
+                            "timeWindow": {
+                              "type": "string"
+                            },
+                            "timeUnits": {
+                              "type": "string",
+                              "enum": [
+                                "minute",
+                                "hour",
+                                "day",
+                                "week",
+                                "month",
+                                "year"
+                              ]
+                            }
+                          }
+                        }
+                      }
+                    }
+                  ]
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  },
+  "globalPropertiesJson": {
+    "testname": "testvalue"
+  },
+  "modelService": {
+    "serviceDetails": {
+      "serviceType": "",
+      "namingPolicy": "",
+      "environmentContext": "General_Revenue-Bearing",
+      "serviceEcompNaming": "true",
+      "serviceRole": "",
+      "name": "vLoadBalancerMS",
+      "description": "vLBMS",
+      "invariantUUID": "30ec5b59-4799-48d8-ac5f-1058a6b0e48f",
+      "ecompGeneratedNaming": "true",
+      "category": "Network L4+",
+      "type": "Service",
+      "UUID": "63cac700-ab9a-4115-a74f-7eac85e3fce0",
+      "instantiationType": "A-la-carte"
+    },
+    "resourceDetails": {
+      "CP": {},
+      "VL": {},
+      "VF": {
+        "vLoadBalancerMS 0": {
+          "resourceVendor": "Test",
+          "resourceVendorModelNumber": "",
+          "name": "vLoadBalancerMS",
+          "description": "vLBMS",
+          "invariantUUID": "1a31b9f2-e50d-43b7-89b3-a040250cf506",
+          "subcategory": "Load Balancer",
+          "category": "Application L4+",
+          "type": "VF",
+          "UUID": "b4c4f3d7-929e-4b6d-a1cd-57e952ddc3e6",
+          "version": "1.0",
+          "resourceVendorRelease": "1.0",
+          "customizationUUID": "465246dc-7748-45f4-a013-308d92922552"
+        }
+      },
+      "CR": {},
+      "VFC": {},
+      "PNF": {},
+      "Service": {},
+      "CVFC": {},
+      "Service Proxy": {},
+      "Configuration": {},
+      "AllottedResource": {},
+      "VFModule": {
+        "Vloadbalancerms..vpkg..module-1": {
+          "vfModuleModelInvariantUUID": "ca052563-eb92-4b5b-ad41-9111768ce043",
+          "vfModuleModelVersion": "1",
+          "vfModuleModelName": "Vloadbalancerms..vpkg..module-1",
+          "vfModuleModelUUID": "1e725ccc-b823-4f67-82b9-4f4367070dbc",
+          "vfModuleModelCustomizationUUID": "1bffdc31-a37d-4dee-b65c-dde623a76e52",
+          "min_vf_module_instances": 0,
+          "vf_module_label": "vpkg",
+          "max_vf_module_instances": 1,
+          "vf_module_type": "Expansion",
+          "isBase": false,
+          "initial_count": 0,
+          "volume_group": false
+        },
+        "Vloadbalancerms..vdns..module-3": {
+          "vfModuleModelInvariantUUID": "4c10ba9b-f88f-415e-9de3-5d33336047fa",
+          "vfModuleModelVersion": "1",
+          "vfModuleModelName": "Vloadbalancerms..vdns..module-3",
+          "vfModuleModelUUID": "4fa73b49-8a6c-493e-816b-eb401567b720",
+          "vfModuleModelCustomizationUUID": "bafcdab0-801d-4d81-9ead-f464640a38b1",
+          "min_vf_module_instances": 0,
+          "vf_module_label": "vdns",
+          "max_vf_module_instances": 50,
+          "vf_module_type": "Expansion",
+          "isBase": false,
+          "initial_count": 0,
+          "volume_group": false
+        },
+        "Vloadbalancerms..base_template..module-0": {
+          "vfModuleModelInvariantUUID": "921f7c96-ebdd-42e6-81b9-1cfc0c9796f3",
+          "vfModuleModelVersion": "1",
+          "vfModuleModelName": "Vloadbalancerms..base_template..module-0",
+          "vfModuleModelUUID": "63734409-f745-4e4d-a38b-131638a0edce",
+          "vfModuleModelCustomizationUUID": "86baddea-c730-4fb8-9410-cd2e17fd7f27",
+          "min_vf_module_instances": 1,
+          "vf_module_label": "base_template",
+          "max_vf_module_instances": 1,
+          "vf_module_type": "Base",
+          "isBase": true,
+          "initial_count": 1,
+          "volume_group": false
+        },
+        "Vloadbalancerms..vlb..module-2": {
+          "vfModuleModelInvariantUUID": "a772a1f4-0064-412c-833d-4749b15828dd",
+          "vfModuleModelVersion": "1",
+          "vfModuleModelName": "Vloadbalancerms..vlb..module-2",
+          "vfModuleModelUUID": "0f5c3f6a-650a-4303-abb6-fff3e573a07a",
+          "vfModuleModelCustomizationUUID": "96a78aad-4ffb-4ef0-9c4f-deb03bf1d806",
+          "min_vf_module_instances": 0,
+          "vf_module_label": "vlb",
+          "max_vf_module_instances": 1,
+          "vf_module_type": "Expansion",
+          "isBase": false,
+          "initial_count": 0,
+          "volume_group": false
+        }
+      }
+    }
+  },
+  "lastComputedState": "DESIGN",
+  "components": {
+    "POLICY": {
+      "componentState": {
+        "stateName": "UNKNOWN",
+        "description": "The current status is not clear. Need to regresh the status to get the current status."
+      }
+    },
+    "DCAE": {
+      "componentState": {
+        "stateName": "BLUEPRINT_DEPLOYED",
+        "description": "The DCAE blueprint has been found in the DCAE inventory but not yet instancianted for this loop"
+      }
+    }
+  },
+  "operationalPolicies": [],
+  "microServicePolicies": [],
+  "loopLogs": []
+}
diff --git a/src/test/resources/tosca/model-properties.json b/src/test/resources/tosca/model-properties.json
index 9e7db8e..e41471b 100644
--- a/src/test/resources/tosca/model-properties.json
+++ b/src/test/resources/tosca/model-properties.json
@@ -16,10 +16,8 @@
 	},
 	"resourceDetails": {
 		"CP": {
-			
 		},
 		"VL": {
-			
 		},
 		"VF": {
 			"vLoadBalancerMS 0": {
@@ -38,28 +36,20 @@
 			}
 		},
 		"CR": {
-			
 		},
 		"VFC": {
-			
 		},
 		"PNF": {
-			
 		},
 		"Service": {
-			
 		},
 		"CVFC": {
-			
 		},
 		"Service Proxy": {
-			
 		},
 		"Configuration": {
-			
 		},
 		"AllottedResource": {
-			
 		},
 		"VFModule": {
 			"Vloadbalancerms..vpkg..module-1": {
diff --git a/src/test/resources/tosca/resource-details.json b/src/test/resources/tosca/resource-details.json
new file mode 100644
index 0000000..7b53f39
--- /dev/null
+++ b/src/test/resources/tosca/resource-details.json
@@ -0,0 +1,96 @@
+{
+	"CP": {
+	},
+	"VL": {
+	},
+	"VF": {
+		"vLoadBalancerMS 0": {
+			"resourceVendor": "Test",
+			"resourceVendorModelNumber": "",
+			"name": "vLoadBalancerMS",
+			"description": "vLBMS",
+			"invariantUUID": "1a31b9f2-e50d-43b7-89b3-a040250cf506",
+			"subcategory": "Load Balancer",
+			"category": "Application L4+",
+			"type": "VF",
+			"UUID": "b4c4f3d7-929e-4b6d-a1cd-57e952ddc3e6",
+			"version": "1.0",
+			"resourceVendorRelease": "1.0",
+			"customizationUUID": "465246dc-7748-45f4-a013-308d92922552"
+		}
+	},
+	"CR": {
+	},
+	"VFC": {
+	},
+	"PNF": {
+	},
+	"Service": {
+	},
+	"CVFC": {
+	},
+	"Service Proxy": {
+	},
+	"Configuration": {
+	},
+	"AllottedResource": {
+	},
+	"VFModule": {
+		"Vloadbalancerms..vpkg..module-1": {
+			"vfModuleModelInvariantUUID": "ca052563-eb92-4b5b-ad41-9111768ce043",
+			"vfModuleModelVersion": "1",
+			"vfModuleModelName": "Vloadbalancerms..vpkg..module-1",
+			"vfModuleModelUUID": "1e725ccc-b823-4f67-82b9-4f4367070dbc",
+			"vfModuleModelCustomizationUUID": "1bffdc31-a37d-4dee-b65c-dde623a76e52",
+			"min_vf_module_instances": 0,
+			"vf_module_label": "vpkg",
+			"max_vf_module_instances": 1,
+			"vf_module_type": "Expansion",
+			"isBase": false,
+			"initial_count": 0,
+			"volume_group": false
+		},
+		"Vloadbalancerms..vdns..module-3": {
+			"vfModuleModelInvariantUUID": "4c10ba9b-f88f-415e-9de3-5d33336047fa",
+			"vfModuleModelVersion": "1",
+			"vfModuleModelName": "Vloadbalancerms..vdns..module-3",
+			"vfModuleModelUUID": "4fa73b49-8a6c-493e-816b-eb401567b720",
+			"vfModuleModelCustomizationUUID": "bafcdab0-801d-4d81-9ead-f464640a38b1",
+			"min_vf_module_instances": 0,
+			"vf_module_label": "vdns",
+			"max_vf_module_instances": 50,
+			"vf_module_type": "Expansion",
+			"isBase": false,
+			"initial_count": 0,
+			"volume_group": false
+		},
+		"Vloadbalancerms..base_template..module-0": {
+			"vfModuleModelInvariantUUID": "921f7c96-ebdd-42e6-81b9-1cfc0c9796f3",
+			"vfModuleModelVersion": "1",
+			"vfModuleModelName": "Vloadbalancerms..base_template..module-0",
+			"vfModuleModelUUID": "63734409-f745-4e4d-a38b-131638a0edce",
+			"vfModuleModelCustomizationUUID": "86baddea-c730-4fb8-9410-cd2e17fd7f27",
+			"min_vf_module_instances": 1,
+			"vf_module_label": "base_template",
+			"max_vf_module_instances": 1,
+			"vf_module_type": "Base",
+			"isBase": true,
+			"initial_count": 1,
+			"volume_group": false
+		},
+		"Vloadbalancerms..vlb..module-2": {
+			"vfModuleModelInvariantUUID": "a772a1f4-0064-412c-833d-4749b15828dd",
+			"vfModuleModelVersion": "1",
+			"vfModuleModelName": "Vloadbalancerms..vlb..module-2",
+			"vfModuleModelUUID": "0f5c3f6a-650a-4303-abb6-fff3e573a07a",
+			"vfModuleModelCustomizationUUID": "96a78aad-4ffb-4ef0-9c4f-deb03bf1d806",
+			"min_vf_module_instances": 0,
+			"vf_module_label": "vlb",
+			"max_vf_module_instances": 1,
+			"vf_module_type": "Expansion",
+			"isBase": false,
+			"initial_count": 0,
+			"volume_group": false
+		}
+	}
+}
\ No newline at end of file
diff --git a/src/test/resources/tosca/service-details.json b/src/test/resources/tosca/service-details.json
new file mode 100644
index 0000000..f41eec1
--- /dev/null
+++ b/src/test/resources/tosca/service-details.json
@@ -0,0 +1,15 @@
+{
+	"serviceType": "",
+	"namingPolicy": "",
+	"environmentContext": "General_Revenue-Bearing",
+	"serviceEcompNaming": "true",
+	"serviceRole": "",
+	"name": "vLoadBalancerMS",
+	"description": "vLBMS",
+	"invariantUUID": "30ec5b59-4799-48d8-ac5f-1058a6b0e48f",
+	"ecompGeneratedNaming": "true",
+	"category": "Network L4+",
+	"type": "Service",
+	"UUID": "63cac700-ab9a-4115-a74f-7eac85e3fce0",
+	"instantiationType": "A-la-carte"
+}
\ No newline at end of file
diff --git a/ui-react/package.json b/ui-react/package.json
index 2d70e27..73598ec 100644
--- a/ui-react/package.json
+++ b/ui-react/package.json
@@ -15,8 +15,7 @@
 		"test": "jest",
 		"test:watch": "jest --watch",
 		"test:coverage": "jest --coverage",
-		"eject": "react-scripts eject",
-		"publish": "npm publish"
+		"eject": "react-scripts eject"
 	},
 	"files": [
 		"src/*.js",
diff --git a/ui-react/src/LoopUI.js b/ui-react/src/LoopUI.js
index f767da9..58fbce6 100644
--- a/ui-react/src/LoopUI.js
+++ b/ui-react/src/LoopUI.js
@@ -36,17 +36,17 @@
 import LoopActionService from './api/LoopActionService';
 
 import { Route } from 'react-router-dom'
-import OpenLoopModal from './components/dialogs/OpenLoop/OpenLoopModal';
+import OpenLoopModal from './components/dialogs/Loop/OpenLoopModal';
 import OperationalPolicyModal from './components/dialogs/OperationalPolicy/OperationalPolicyModal';
 import ConfigurationPolicyModal from './components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal';
-import LoopProperties from './components/dialogs/LoopProperties';
-import UserInfo from './components/dialogs/UserInfo';
+import LoopPropertiesModal from './components/dialogs/Loop/LoopPropertiesModal';
+import UserInfoModal from './components/dialogs/UserInfoModal';
 import LoopService from './api/LoopService';
 import ViewToscaPolicyModal from './components/dialogs/Tosca/ViewToscaPolicyModal';
 import ViewBlueprintMicroServiceTemplatesModal from './components/dialogs/Tosca/ViewBlueprintMicroServiceTemplatesModal';
 import PerformAction from './components/dialogs/PerformActions';
 import RefreshStatus from './components/dialogs/RefreshStatus';
-import DeployLoop from './components/dialogs/DeployLoop';
+import DeployLoopModal from './components/dialogs/Loop/DeployLoopModal';
 import Alert from 'react-bootstrap/Alert';
 
 import { Link } from 'react-router-dom';
@@ -255,15 +255,15 @@
 					render={(routeProps) => (<OperationalPolicyModal {...routeProps} loopCache={this.getLoopCache()} loadLoopFunction={this.loadLoop} showAlert={this.showAlert}/>)} />
 				<Route path="/configurationPolicyModal/:componentName" render={(routeProps) => (<ConfigurationPolicyModal {...routeProps} loopCache={this.getLoopCache()} loadLoopFunction={this.loadLoop}/>)} />
 				<Route path="/openLoop" render={(routeProps) => (<OpenLoopModal {...routeProps} loadLoopFunction={this.loadLoop} />)} />
-				<Route path="/loopProperties" render={(routeProps) => (<LoopProperties {...routeProps} loopCache={this.getLoopCache()} loadLoopFunction={this.loadLoop}/>)} />
-				<Route path="/userInfo" render={(routeProps) => (<UserInfo {...routeProps} />)} />
+				<Route path="/loopProperties" render={(routeProps) => (<LoopPropertiesModal {...routeProps} loopCache={this.getLoopCache()} loadLoopFunction={this.loadLoop}/>)} />
+				<Route path="/userInfo" render={(routeProps) => (<UserInfoModal {...routeProps} />)} />
 				<Route path="/closeLoop" render={this.closeLoop} />
 				<Route path="/submit" render={(routeProps) => (<PerformAction {...routeProps} loopAction="submit" loopCache={this.getLoopCache()} updateLoopFunction={this.updateLoopCache} showAlert={this.showAlert}/>)} />
 				<Route path="/stop" render={(routeProps) => (<PerformAction {...routeProps} loopAction="stop" loopCache={this.getLoopCache()} updateLoopFunction={this.updateLoopCache} showAlert={this.showAlert}/>)} />
 				<Route path="/restart" render={(routeProps) => (<PerformAction {...routeProps} loopAction="restart" loopCache={this.getLoopCache()} updateLoopFunction={this.updateLoopCache} showAlert={this.showAlert}/>)} />
 				<Route path="/delete" render={(routeProps) => (<PerformAction {...routeProps} loopAction="delete" loopCache={this.getLoopCache()} updateLoopFunction={this.updateLoopCache} showAlert={this.showAlert}/>)} />
 				<Route path="/undeploy" render={(routeProps) => (<PerformAction {...routeProps} loopAction="undeploy" loopCache={this.getLoopCache()} updateLoopFunction={this.updateLoopCache} showAlert={this.showAlert}/>)} />
-				<Route path="/deploy" render={(routeProps) => (<DeployLoop {...routeProps} loopCache={this.getLoopCache()} updateLoopFunction={this.updateLoopCache} showAlert={this.showAlert}/>)} />
+				<Route path="/deploy" render={(routeProps) => (<DeployLoopModal {...routeProps} loopCache={this.getLoopCache()} updateLoopFunction={this.updateLoopCache} showAlert={this.showAlert}/>)} />
 				<Route path="/refreshStatus" render={(routeProps) => (<RefreshStatus {...routeProps} loopCache={this.getLoopCache()} updateLoopFunction={this.updateLoopCache} showAlert={this.showAlert}/>)} />
 				<Route path="/logout" render={this.logout} />
 				<GlobalClampStyle />
diff --git a/ui-react/src/api/LoopCache.js b/ui-react/src/api/LoopCache.js
index dd8c5b5..95eb931 100644
--- a/ui-react/src/api/LoopCache.js
+++ b/ui-react/src/api/LoopCache.js
@@ -99,11 +99,11 @@
 	}
 
 	getResourceDetailsVfProperty() {
-		return this.loopJsonCache["modelPropertiesJson"]["resourceDetails"]["VF"];
+		return this.loopJsonCache["modelService"]["resourceDetails"]["VF"];
 	}
 
 	getResourceDetailsVfModuleProperty() {
-		return this.loopJsonCache["modelPropertiesJson"]["resourceDetails"]["VFModule"];
+		return this.loopJsonCache["modelService"]["resourceDetails"]["VFModule"];
 	}
 
 	getLoopLogsArray() {
diff --git a/ui-react/src/api/LoopCache_mokeLoopJsonCache.json b/ui-react/src/api/LoopCache_mokeLoopJsonCache.json
index 184eaf7..c84b5b6 100644
--- a/ui-react/src/api/LoopCache_mokeLoopJsonCache.json
+++ b/ui-react/src/api/LoopCache_mokeLoopJsonCache.json
@@ -8,7 +8,7 @@
       "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca"
     }
   },
-  "modelPropertiesJson": {
+  "modelService": {
     "serviceDetails": {
       "serviceType": "",
       "namingPolicy": "",
diff --git a/ui-react/src/api/example.json b/ui-react/src/api/example.json
index 108cf78..7b9a95a 100644
--- a/ui-react/src/api/example.json
+++ b/ui-react/src/api/example.json
@@ -8,7 +8,7 @@
       "policy_id": "TCA_h2NMX_v1_0_ResourceInstanceName1_tca"
     }
   },
-  "modelPropertiesJson": {
+  "modelService": {
     "serviceDetails": {
       "serviceType": "",
       "namingPolicy": "",
diff --git a/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.test.js b/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.test.js
index e0aa8c6..4fa08e6 100644
--- a/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.test.js
+++ b/ui-react/src/components/dialogs/ConfigurationPolicy/ConfigurationPolicyModal.test.js
@@ -26,7 +26,7 @@
 import LoopCache from '../../../api/LoopCache';
 
 
-describe('Verify DeployLoop', () => {
+describe('Verify ConfigurationPolicyModal', () => {
     beforeEach(() => {
         fetch.resetMocks();
         fetch.mockImplementation(() => {
diff --git a/ui-react/src/components/dialogs/DeployLoop.js b/ui-react/src/components/dialogs/Loop/DeployLoopModal.js
similarity index 95%
rename from ui-react/src/components/dialogs/DeployLoop.js
rename to ui-react/src/components/dialogs/Loop/DeployLoopModal.js
index d71af92..34304d6 100644
--- a/ui-react/src/components/dialogs/DeployLoop.js
+++ b/ui-react/src/components/dialogs/Loop/DeployLoopModal.js
@@ -21,8 +21,8 @@
  *
  */
 import React from 'react';
-import LoopActionService from '../../api/LoopActionService';
-import LoopService from '../../api/LoopService';
+import LoopActionService from '../../../api/LoopActionService';
+import LoopService from '../../../api/LoopService';
 import Button from 'react-bootstrap/Button';
 import Modal from 'react-bootstrap/Modal';
 import Form from 'react-bootstrap/Form';
@@ -34,7 +34,7 @@
 const FormStyled = styled(Form.Group)`
 	padding: .25rem 1.5rem;
 `
-export default class DeployLoop extends React.Component {
+export default class DeployLoopModal extends React.Component {
 	state = {
 		loopCache: this.props.loopCache,
 		temporaryPropertiesJson: JSON.parse(JSON.stringify(this.props.loopCache.getGlobalProperties())),
diff --git a/ui-react/src/components/dialogs/DeployLoop.test.js b/ui-react/src/components/dialogs/Loop/DeployLoopModal.test.js
similarity index 82%
rename from ui-react/src/components/dialogs/DeployLoop.test.js
rename to ui-react/src/components/dialogs/Loop/DeployLoopModal.test.js
index 44bc783..2ebb8c0 100644
--- a/ui-react/src/components/dialogs/DeployLoop.test.js
+++ b/ui-react/src/components/dialogs/Loop/DeployLoopModal.test.js
@@ -22,12 +22,12 @@
  */
 import React from 'react';
 import { shallow } from 'enzyme';
-import DeployLoop from './DeployLoop';
-import LoopCache from '../../api/LoopCache';
-import LoopActionService from '../../api/LoopActionService';
-import LoopService from '../../api/LoopService';
+import DeployLoopModal from './DeployLoopModal';
+import LoopCache from '../../../api/LoopCache';
+import LoopActionService from '../../../api/LoopActionService';
+import LoopService from '../../../api/LoopService';
 
-describe('Verify DeployLoop', () => {
+describe('Verify DeployLoopModal', () => {
 	const loopCache = new LoopCache({
 		"name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca",
 		"globalPropertiesJson": {
@@ -40,7 +40,7 @@
 
 	it('Test the render method', () => {
 		const component = shallow(
-			<DeployLoop loopCache={loopCache}/>
+			<DeployLoopModal loopCache={loopCache}/>
 		)
 
 	expect(component).toMatchSnapshot();
@@ -48,8 +48,8 @@
 	
 	it('Test handleClose', () => {
 		const historyMock = { push: jest.fn() };
-		const handleClose = jest.spyOn(DeployLoop.prototype,'handleClose');
-		const component = shallow(<DeployLoop history={historyMock} loopCache={loopCache}/>)
+		const handleClose = jest.spyOn(DeployLoopModal.prototype,'handleClose');
+		const component = shallow(<DeployLoopModal history={historyMock} loopCache={loopCache}/>)
 
 		component.find('[variant="secondary"]').prop('onClick')();
 
@@ -62,7 +62,7 @@
 		const historyMock = { push: jest.fn() };
 		const updateLoopFunction = jest.fn();
 		const showAlert = jest.fn();
-		const handleSave = jest.spyOn(DeployLoop.prototype,'handleSave');
+		const handleSave = jest.spyOn(DeployLoopModal.prototype,'handleSave');
 		LoopService.updateGlobalProperties = jest.fn().mockImplementation(() => {
 			return Promise.resolve({
 				ok: true,
@@ -85,7 +85,7 @@
 			});
 		});
 
-		const component = shallow(<DeployLoop history={historyMock} 
+		const component = shallow(<DeployLoopModal history={historyMock} 
 						loopCache={loopCache} updateLoopFunction={updateLoopFunction} showAlert={showAlert} />)
 
 		component.find('[variant="primary"]').prop('onClick')();
@@ -100,7 +100,7 @@
 
 	it('Onchange event', () => {
 		const event = { target: { name: "location_id", value: "testLocation"} };
-		const component = shallow(<DeployLoop loopCache={loopCache}/>);
+		const component = shallow(<DeployLoopModal loopCache={loopCache}/>);
 		const forms = component.find('StateManager');
 
 		component.find('[name="location_id"]').simulate('change', event);
diff --git a/ui-react/src/components/dialogs/LoopProperties.js b/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.js
similarity index 96%
rename from ui-react/src/components/dialogs/LoopProperties.js
rename to ui-react/src/components/dialogs/Loop/LoopPropertiesModal.js
index 990fe77..73946f4 100644
--- a/ui-react/src/components/dialogs/LoopProperties.js
+++ b/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.js
@@ -25,12 +25,12 @@
 import Modal from 'react-bootstrap/Modal';
 import Form from 'react-bootstrap/Form';
 import styled from 'styled-components';
-import LoopService from '../../api/LoopService';
+import LoopService from '../../../api/LoopService';
 
 const ModalStyled = styled(Modal)`
 	background-color: transparent;
 `
-export default class LoopProperties extends React.Component {
+export default class LoopPropertiesModal extends React.Component {
 
 	state = {
 		show: true,
diff --git a/ui-react/src/components/dialogs/LoopProperties.test.js b/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.test.js
similarity index 82%
rename from ui-react/src/components/dialogs/LoopProperties.test.js
rename to ui-react/src/components/dialogs/Loop/LoopPropertiesModal.test.js
index 9b74fe7..5bbefe2 100644
--- a/ui-react/src/components/dialogs/LoopProperties.test.js
+++ b/ui-react/src/components/dialogs/Loop/LoopPropertiesModal.test.js
@@ -22,11 +22,11 @@
  */
 import React from 'react';
 import { shallow } from 'enzyme';
-import LoopProperties from './LoopProperties';
-import LoopCache from '../../api/LoopCache';
-import LoopService from '../../api/LoopService';
+import LoopPropertiesModal from './LoopPropertiesModal';
+import LoopCache from '../../../api/LoopCache';
+import LoopService from '../../../api/LoopService';
 
-describe('Verify LoopProperties', () => {
+describe('Verify LoopPropertiesModal', () => {
 	const loopCache = new LoopCache({
 		"name": "LOOP_Jbv1z_v1_0_ResourceInstanceName1_tca",
 		"globalPropertiesJson": {
@@ -39,7 +39,7 @@
 
 	it('Test the render method', () => {
 		const component = shallow(
-			<LoopProperties loopCache={loopCache}/>
+			<LoopPropertiesModal loopCache={loopCache}/>
 		)
 		component.setState({ show: true,
 			temporaryPropertiesJson: {
@@ -62,8 +62,8 @@
 
 	it('Test handleClose', () => {
 		const historyMock = { push: jest.fn() };
-		const handleClose = jest.spyOn(LoopProperties.prototype,'handleClose');
-		const component = shallow(<LoopProperties history={historyMock} loopCache={loopCache}/>)
+		const handleClose = jest.spyOn(LoopPropertiesModal.prototype,'handleClose');
+		const component = shallow(<LoopPropertiesModal history={historyMock} loopCache={loopCache}/>)
 
 		component.find('[variant="secondary"]').prop('onClick')();
 
@@ -75,7 +75,7 @@
 		const flushPromises = () => new Promise(setImmediate);
 		const historyMock = { push: jest.fn() };
 		const loadLoopFunction = jest.fn();
-		const handleSave = jest.spyOn(LoopProperties.prototype,'handleSave');
+		const handleSave = jest.spyOn(LoopPropertiesModal.prototype,'handleSave');
 		LoopService.updateGlobalProperties = jest.fn().mockImplementation(() => {
 			return Promise.resolve({
 				ok: true,
@@ -84,7 +84,7 @@
 			});
 		});
 
-		const component = shallow(<LoopProperties history={historyMock} 
+		const component = shallow(<LoopPropertiesModal history={historyMock} 
 						loopCache={loopCache} loadLoopFunction={loadLoopFunction} />)
 
 		component.find('[variant="primary"]').prop('onClick')();
@@ -98,7 +98,7 @@
 
 	it('Onchange event', () => {
 		const event = {target:{name:"dcaeDeployParameters", value:"{\"location_id\": \"testLocation\",\"policy_id\": \"TCA_h2NMX_v1_0_ResourceInstanceName1_tca\"}"}};
-		const component = shallow(<LoopProperties loopCache={loopCache}/>);
+		const component = shallow(<LoopPropertiesModal loopCache={loopCache}/>);
 
 		component.find('FormControl').simulate('change', event);
 		component.update();
diff --git a/ui-react/src/components/dialogs/OpenLoop/OpenLoopModal.js b/ui-react/src/components/dialogs/Loop/OpenLoopModal.js
similarity index 100%
rename from ui-react/src/components/dialogs/OpenLoop/OpenLoopModal.js
rename to ui-react/src/components/dialogs/Loop/OpenLoopModal.js
diff --git a/ui-react/src/components/dialogs/OpenLoop/OpenLoopModal.test.js b/ui-react/src/components/dialogs/Loop/OpenLoopModal.test.js
similarity index 100%
rename from ui-react/src/components/dialogs/OpenLoop/OpenLoopModal.test.js
rename to ui-react/src/components/dialogs/Loop/OpenLoopModal.test.js
diff --git a/ui-react/src/components/dialogs/__snapshots__/DeployLoop.test.js.snap b/ui-react/src/components/dialogs/Loop/__snapshots__/DeployLoopModal.test.js.snap
similarity index 94%
rename from ui-react/src/components/dialogs/__snapshots__/DeployLoop.test.js.snap
rename to ui-react/src/components/dialogs/Loop/__snapshots__/DeployLoopModal.test.js.snap
index 1fd4b10..bf06965 100644
--- a/ui-react/src/components/dialogs/__snapshots__/DeployLoop.test.js.snap
+++ b/ui-react/src/components/dialogs/Loop/__snapshots__/DeployLoopModal.test.js.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`Verify DeployLoop Test the render method 1`] = `
+exports[`Verify DeployLoopModal Test the render method 1`] = `
 <Styled(Bootstrap(Modal))
   onHide={[Function]}
   show={true}
diff --git a/ui-react/src/components/dialogs/__snapshots__/LoopProperties.test.js.snap b/ui-react/src/components/dialogs/Loop/__snapshots__/LoopPropertiesModal.test.js.snap
similarity index 93%
rename from ui-react/src/components/dialogs/__snapshots__/LoopProperties.test.js.snap
rename to ui-react/src/components/dialogs/Loop/__snapshots__/LoopPropertiesModal.test.js.snap
index c7e81c3..fe9aee2 100644
--- a/ui-react/src/components/dialogs/__snapshots__/LoopProperties.test.js.snap
+++ b/ui-react/src/components/dialogs/Loop/__snapshots__/LoopPropertiesModal.test.js.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`Verify LoopProperties Test the render method 1`] = `
+exports[`Verify LoopPropertiesModal Test the render method 1`] = `
 <Styled(Bootstrap(Modal))
   onHide={[Function]}
   show={true}
diff --git a/ui-react/src/components/dialogs/OpenLoop/__snapshots__/OpenLoopModal.test.js.snap b/ui-react/src/components/dialogs/Loop/__snapshots__/OpenLoopModal.test.js.snap
similarity index 100%
rename from ui-react/src/components/dialogs/OpenLoop/__snapshots__/OpenLoopModal.test.js.snap
rename to ui-react/src/components/dialogs/Loop/__snapshots__/OpenLoopModal.test.js.snap
diff --git a/ui-react/src/components/dialogs/UserInfo.js b/ui-react/src/components/dialogs/UserInfoModal.js
similarity index 98%
rename from ui-react/src/components/dialogs/UserInfo.js
rename to ui-react/src/components/dialogs/UserInfoModal.js
index 7d81b38..1273d87 100644
--- a/ui-react/src/components/dialogs/UserInfo.js
+++ b/ui-react/src/components/dialogs/UserInfoModal.js
@@ -33,7 +33,7 @@
 	background-color: transparent;
 `
 
-export default class UserInfo extends React.Component {
+export default class UserInfoModal extends React.Component {
 
 	constructor(props, context) {
 		super(props, context);
diff --git a/ui-react/src/components/dialogs/UserInfo.test.js b/ui-react/src/components/dialogs/UserInfoModal.test.js
similarity index 91%
rename from ui-react/src/components/dialogs/UserInfo.test.js
rename to ui-react/src/components/dialogs/UserInfoModal.test.js
index beddde1..b5a2b27 100644
--- a/ui-react/src/components/dialogs/UserInfo.test.js
+++ b/ui-react/src/components/dialogs/UserInfoModal.test.js
@@ -22,9 +22,9 @@
  */
 import React from 'react';
 import { shallow } from 'enzyme';
-import UserInfo from './UserInfo';
+import UserInfoModal from './UserInfoModal';
 
-describe('Verify UserInfo', () => {
+describe('Verify UserInfoModal', () => {
 
 	beforeEach(() => {
 		fetch.resetMocks();
@@ -42,7 +42,7 @@
 	})
 
 	it('Test the render method full permission', () => {
-		const component = shallow(<UserInfo />)
+		const component = shallow(<UserInfoModal />)
 		component.setState({ userInfo: {
 			"userName": "test",
 			"cldsVersion": "1.0.0",
@@ -57,7 +57,7 @@
 	});
 
 	it('Test the render method no permission', () => {
-		const component = shallow(<UserInfo />)
+		const component = shallow(<UserInfoModal />)
 		component.setState({ userInfo: {}
 		});
 
@@ -65,7 +65,7 @@
 	});
 
 	it('Test the render method read permission', () => {
-		const component = shallow(<UserInfo />)
+		const component = shallow(<UserInfoModal />)
 		component.setState({ userInfo: {
 			"userName": "test",
 			"cldsVersion": "1.0.0",
diff --git a/ui-react/src/components/dialogs/__snapshots__/UserInfo.test.js.snap b/ui-react/src/components/dialogs/__snapshots__/UserInfoModal.test.js.snap
similarity index 97%
rename from ui-react/src/components/dialogs/__snapshots__/UserInfo.test.js.snap
rename to ui-react/src/components/dialogs/__snapshots__/UserInfoModal.test.js.snap
index 1ae567a..fdb24a4 100644
--- a/ui-react/src/components/dialogs/__snapshots__/UserInfo.test.js.snap
+++ b/ui-react/src/components/dialogs/__snapshots__/UserInfoModal.test.js.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`Verify UserInfo Test the render method full permission 1`] = `
+exports[`Verify UserInfoModal Test the render method full permission 1`] = `
 <Styled(Bootstrap(Modal))
   onHide={[Function]}
   show={true}
