diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8ea78d6c6187dd518ec9fb389aae2a666ba82c86..bb7d754baa751630b25598e182a30f062e9b6ebd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,13 +15,21 @@ include:
     rules:
       - if: '$CI_COMMIT_REF_NAME == "develop"'
 
+  - project: osl/code/org.etsi.osl.main
+    ref: $CI_COMMIT_REF_NAME
+    file: 
+      - ci-templates/default.yml
+      - ci-templates/build.yml
+    rules:
+      - if: '$CI_COMMIT_REF_PROTECTED && $CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop"'
+
   - project: osl/code/org.etsi.osl.main
     ref: develop
     file: 
       - ci-templates/default.yml
       - ci-templates/build_unprotected.yml
     rules:
-      - if: '$CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop"'
+      - if: '$CI_COMMIT_REF_NAME != "main" && $CI_COMMIT_REF_NAME != "develop" && !$CI_COMMIT_REF_PROTECTED'
 
 maven_build:
   extends: .maven_build
diff --git a/Dockerfile b/Dockerfile
index 335aae1e16060d8deccb3ed305120b5789514452..7480c2bfc2f7a4b68aad66c6be3501d476badae5 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,5 +2,5 @@ FROM ibm-semeru-runtimes:open-17.0.7_7-jdk
 MAINTAINER openslice.io
 RUN mkdir /opt/shareclasses
 RUN mkdir -p /opt/openslice/lib/
-COPY target/org.etsi.osl.manoclient-1.0.0-SNAPSHOT.jar /opt/openslice/lib/
-CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses","-jar", "/opt/openslice/lib/org.etsi.osl.manoclient-1.0.0-SNAPSHOT.jar"]
\ No newline at end of file
+COPY target/org.etsi.osl.manoclient-1.0.0.jar /opt/openslice/lib/
+CMD ["java", "-Xshareclasses:cacheDir=/opt/shareclasses","-jar", "/opt/openslice/lib/org.etsi.osl.manoclient-1.0.0.jar"]
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index c5660ff17ddac621e20260f37ec0548f2932515c..35d5ac7114ee1995a9d87f00ae2956cf1ffeff03 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
 	<parent>
 		<groupId>org.etsi.osl</groupId>
 		<artifactId>org.etsi.osl.main</artifactId>
-		<version>1.0.0-SNAPSHOT</version>
+		<version>1.0.0</version>
 		<relativePath>../org.etsi.osl.main</relativePath>
 	</parent>
 
diff --git a/src/main/java/org/etsi/osl/mano/MANOController.java b/src/main/java/org/etsi/osl/mano/MANOController.java
index 11a1d7410aa698b2bfa5d1ff0f84a4b940b5ce77..a0cfb3f998d086bb4dcc0fa0bea46f76ab81f1fe 100644
--- a/src/main/java/org/etsi/osl/mano/MANOController.java
+++ b/src/main/java/org/etsi/osl/mano/MANOController.java
@@ -1011,18 +1011,20 @@ public class MANOController {
 		try {
 			// Parse the json list of objects
 			org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd[] vnfd_array = (org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd[]) mapper.readValue(vnfds_list_entity.getBody(), org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd[].class);
+			
+			JSONArray array = new JSONArray(vnfds_list_entity.getBody());  
+			
 			// For each object
-			for(org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd vnfd : vnfd_array)
-			{
-				String jsonInString=null;
-				ObjectMapper mapper2 = new ObjectMapper();
-				mapper2.setSerializationInclusion(Include.NON_NULL);
-				try {
-					jsonInString = mapper2.writerWithDefaultPrettyPrinter().writeValueAsString(vnfd);
-				} catch (JsonProcessingException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}	
+			 // For each object
+            for (Object object : array) {
+              
+
+              JSONObject jobj = (JSONObject) object;				
+			    org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd vnfd =
+			        mapper.readValue( jobj.toString() , org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd.class );
+
+	              String jsonInString=jobj.toString();
+	                ObjectMapper mapper2 = new ObjectMapper();
 										
 				// Compare db derived data with osm derived data and update the database.
 				logger.debug("VNFD to JSON:"+jsonInString);
@@ -1072,7 +1074,7 @@ public class MANOController {
 					// Store the requirements in HTML
 					newVxFMetadata.setDescriptorHTML(vnfreq.toHTML());
 					// Store the YAML file
-					newVxFMetadata.setDescriptor(vnfds_list_entity.getBody());
+					newVxFMetadata.setDescriptor(  jobj.toString() );
 					
 					//Add VxFMetadata object to db and get the generated object
 					newVxFMetadata = aMANOClient.addVxFMetadata(newVxFMetadata);
@@ -1128,18 +1130,20 @@ public class MANOController {
 		try {
 			// Parse the json list of objects
 			org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd[] vnfd_array = (org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd[]) mapper.readValue(vnfds_list_entity.getBody(), org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd[].class);
-			// For each object
-			for(org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd vnfd : vnfd_array)
-			{
-				String jsonInString=null;
-				ObjectMapper mapper2 = new ObjectMapper();
-				mapper2.setSerializationInclusion(Include.NON_NULL);
-				try {
-					jsonInString = mapper2.writerWithDefaultPrettyPrinter().writeValueAsString(vnfd);
-				} catch (JsonProcessingException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}	
+JSONArray array = new JSONArray(vnfds_list_entity.getBody());  
+            
+            // For each object
+             // For each object
+            for (Object object : array) {
+              
+
+              JSONObject jobj = (JSONObject) object;                
+                org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd vnfd =
+                    mapper.readValue( jobj.toString() , org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd.class );
+
+                  String jsonInString=jobj.toString();
+                    ObjectMapper mapper2 = new ObjectMapper();
+                                        
 										
 				// Compare db derived data with osm derived data and update the database.
 				logger.debug("VNFD to JSON:"+jsonInString);
@@ -1245,17 +1249,20 @@ public class MANOController {
 			// Parse the json list of objects
 			org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd[] vnfd_array = (org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd[]) mapper.readValue(vnfds_list_entity.getBody(), org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd[].class);
 			// For each object
-			for(org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd vnfd : vnfd_array)
-			{
-				String jsonInString=null;
-				ObjectMapper mapper2 = new ObjectMapper();
-				mapper2.setSerializationInclusion(Include.NON_NULL);
-				try {
-					jsonInString = mapper2.writerWithDefaultPrettyPrinter().writeValueAsString(vnfd);
-				} catch (JsonProcessingException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}	
+			JSONArray array = new JSONArray(vnfds_list_entity.getBody());  
+            
+            // For each object
+             // For each object
+            for (Object object : array) {
+              
+
+              JSONObject jobj = (JSONObject) object;                
+                org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd vnfd =
+                    mapper.readValue( jobj.toString() , org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Vnfd.class );
+
+                  String jsonInString=jobj.toString();
+                    ObjectMapper mapper2 = new ObjectMapper();
+                                        
 										
 				// Compare db derived data with osm derived data and update the database.
 				logger.debug("VNFD to JSON:"+jsonInString);
@@ -1394,20 +1401,18 @@ public class MANOController {
 		try {
 			// Parse the json list of objects
 			org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[] nsd_array = (org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[]) mapper.readValue(nsds_list_entity.getBody(), org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[].class);
-			// For each object
-			for(org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd nsd : nsd_array)
-			{
-				String jsonInString=null;
+			
+  			JSONArray array = new JSONArray(nsds_list_entity.getBody());  
+  			// For each object
+              for (Object object : array) {
+                JSONObject jobj = (JSONObject) object;
+  			  org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd nsd = 
+  			      mapper.readValue( jobj.toString() , org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd.class);
+  			          
+                String jsonInString=jobj.toString();
 				ObjectMapper mapper2 = new ObjectMapper();
-				mapper2.setSerializationInclusion(Include.NON_NULL);
-				try {
-					jsonInString = mapper2.writerWithDefaultPrettyPrinter().writeValueAsString(nsd);
-				} catch (JsonProcessingException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}	
 										
-				// Εδώ θα συγκρίνουμε αυτό που λάβαμε απο τη βάση με αυτό που λάβαμε απο το osm και θα το ανανεώσουμε στη βάση.
+				// compare the one from OSM with the one locally saved
 				logger.debug("NSD to JSON:"+jsonInString);
 				logger.info("NSD " + nsd.getInvariantId() + " added");						
 
@@ -1455,7 +1460,7 @@ public class MANOController {
 					// Store the requirements in HTML
 					newExperimentMetadata.setDescriptorHTML(nsdreq.toHTML());
 					// Store the YAML file
-					newExperimentMetadata.setDescriptor(nsds_list_entity.getBody());
+					newExperimentMetadata.setDescriptor( jobj.toString() );
 					
 					for (Df v : nsd.getDf().values()) {
 						for( VnfProfile q : v.getVnfProfile().values())
@@ -1530,20 +1535,17 @@ public class MANOController {
 		try {
 			// Parse the json list of objects
 			org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[] nsd_array = (org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[]) mapper.readValue(nsds_list_entity.getBody(), org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[].class);
-			// For each object
-			for(org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd nsd : nsd_array)
-			{
-				String jsonInString=null;
+
+			JSONArray array = new JSONArray(nsds_list_entity.getBody());  
+            // For each object
+            for (Object object : array) {
+              JSONObject jobj = (JSONObject) object;
+              org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd nsd = 
+                  mapper.readValue( jobj.toString() , org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd.class);
+
+              String jsonInString=jobj.toString();
 				ObjectMapper mapper2 = new ObjectMapper();
-				mapper2.setSerializationInclusion(Include.NON_NULL);
-				try {
-					jsonInString = mapper2.writerWithDefaultPrettyPrinter().writeValueAsString(nsd);
-				} catch (JsonProcessingException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}	
-										
-				// Compare the received from the osm with the database entry and update the database.
+                // compare the one from OSM with the one locally saved
 				logger.debug("NSD to JSON:"+jsonInString);
 				logger.info("NSD " + nsd.getInvariantId() + " added");						
 
@@ -1591,7 +1593,7 @@ public class MANOController {
 					// Store the requirements in HTML
 					newExperimentMetadata.setDescriptorHTML(nsdreq.toHTML());
 					// Store the YAML file
-					newExperimentMetadata.setDescriptor(nsds_list_entity.getBody());
+                    newExperimentMetadata.setDescriptor( jobj.toString() );
 					
 					for (Df v : nsd.getDf().values()) {
 						for( VnfProfile q : v.getVnfProfile().values())
@@ -1663,20 +1665,20 @@ public class MANOController {
 	{
 		ObjectMapper mapper = new ObjectMapper();
 		try {
-			// Parse the json list of objects
-			org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[] nsd_array = (org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[]) mapper.readValue(nsds_list_entity.getBody(), org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[].class);
-			// For each object
-			for(org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd nsd : nsd_array)
-			{
-				String jsonInString=null;
+          // Parse the json list of objects
+          org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[] nsd_array = (org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[]) mapper.readValue(nsds_list_entity.getBody(), org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd[].class);
+          
+    		  JSONArray array = new JSONArray(nsds_list_entity.getBody());  
+              // For each object
+              for (Object object : array) {
+                JSONObject jobj = (JSONObject) object;
+                org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd nsd = 
+                    mapper.readValue( jobj.toString() , org.opendaylight.yang.gen.v1.urn.etsi.nfv.yang.etsi.nfv.descriptors.rev190425.Nsd.class);
+                        
+                String jsonInString=jobj.toString();
 				ObjectMapper mapper2 = new ObjectMapper();
 				mapper2.setSerializationInclusion(Include.NON_NULL);
-				try {
-					jsonInString = mapper2.writerWithDefaultPrettyPrinter().writeValueAsString(nsd);
-				} catch (JsonProcessingException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}	
+                
 										
 				// Compare the received from the osm with the database entry and update the database.
 				logger.debug("NSD to JSON:"+jsonInString);
@@ -1726,7 +1728,7 @@ public class MANOController {
 					// Store the requirements in HTML
 					newExperimentMetadata.setDescriptorHTML(nsdreq.toHTML());
 					// Store the YAML file
-					newExperimentMetadata.setDescriptor(nsds_list_entity.getBody());
+                    newExperimentMetadata.setDescriptor( jobj.toString() );			
 					
 					for (Df v : nsd.getDf().values()) {
 						for( VnfProfile q : v.getVnfProfile().values())