diff --git a/src/app/packages/ns-packages/vnf-composer/VNFComposerComponent.ts b/src/app/packages/ns-packages/vnf-composer/VNFComposerComponent.ts
index 081874a..7c3c247 100644
--- a/src/app/packages/ns-packages/vnf-composer/VNFComposerComponent.ts
+++ b/src/app/packages/ns-packages/vnf-composer/VNFComposerComponent.ts
@@ -266,7 +266,7 @@
     if (vnfdPackageDetails['ext-cpd'] !== undefined) {
       vnfdPackageDetails['ext-cpd'].forEach((cp: EXTCPD): void => {
         this.nodes.push({
-          id: cp['int-cpd'] !== undefined ? cp['int-cpd'].cpd : cp.id,
+          id: cp['int-cpd'].cpd !== undefined ? cp['int-cpd'].cpd : cp.id,
           name: cp.id,
           reflexive: false,
           type: 'cp'
@@ -643,32 +643,38 @@
   /** Drop VDU Composer Data @private */
   private vduDropCompose(): void {
     const randomID: string = this.sharedService.randomString();
-    if (this.vnfdPackageDetails.vdu === undefined) {
-      this.vnfdPackageDetails.vdu = [];
+    if (this.vnfdPackageDetails['mgmt-cp'] === undefined) {
+      this.notifierService.notify('error', this.translateService.instant('PAGE.TOPOLOGY.ADDCPBEFOREVDU'));
+    } else {
+      if (this.vnfdPackageDetails.vdu === undefined) {
+        this.vnfdPackageDetails.vdu = [];
+      }
+      this.vnfdPackageDetails.vdu.push({
+        id: 'vdu_' + randomID,
+        name: 'vdu_' + randomID,
+        description: '',
+        'sw-image-desc': 'ubuntu',
+        'int-cpd': [],
+        'monitoring-parameter': [],
+        'virtual-compute-desc': '',
+        'virtual-storage-desc': []
+      });
+      this.addNodes(environment.VNFPACKAGES_URL, this.identifier, this.vnfdPackageDetails);
     }
-    this.vnfdPackageDetails.vdu.push({
-      id: 'vdu_' + randomID,
-      name: 'vdu_' + randomID,
-      description: '',
-      'sw-image-desc': 'ubuntu',
-      'int-cpd': [],
-      'monitoring-parameter': [],
-      'virtual-compute-desc': '',
-      'virtual-storage-desc': []
-    });
-    this.addNodes(environment.VNFPACKAGES_URL, this.identifier, this.vnfdPackageDetails);
   }
   /** Drop CP Composer Data @private */
   private cpDropCompose(): void {
     const randomID: string = this.sharedService.randomString();
     if (this.vnfdPackageDetails['ext-cpd'] === undefined) {
       this.vnfdPackageDetails['ext-cpd'] = [];
-      this.vnfdPackageDetails['mgmt-cp'] = 'cp_' + randomID;
     }
     this.vnfdPackageDetails['ext-cpd'].push({
       id: 'cp_' + randomID,
       'int-cpd': {}
     });
+    if (this.vnfdPackageDetails['mgmt-cp'] === undefined) {
+      this.vnfdPackageDetails['mgmt-cp'] = 'cp_' + randomID;
+    }
     this.addNodes(environment.VNFPACKAGES_URL, this.identifier, this.vnfdPackageDetails);
   }
   /** Drop IntVL Composer Data @private */
@@ -812,25 +818,23 @@
                 if (vdu['int-cpd'] === undefined) {
                   vdu['int-cpd'] = [];
                 }
-                if (extcpd['int-cpd'] === undefined) {
-                  vdu['int-cpd'].push({
-                    id: vduExternalID,
-                    'virtual-network-interface-requirement': [
-                      {
-                        name: vduExternalID,
-                        position: 1,
-                        'virtual-interface': { type: 'PARAVIRT' }
-                      }
-                    ]
-                  });
-                  this.vnfdPackageDetails['ext-cpd'][index] = {
-                    id: extcpd.id,
-                    'int-cpd': {
-                      cpd: vduExternalID,
-                      'vdu-id': vduID
+                vdu['int-cpd'].push({
+                  id: vduExternalID,
+                  'virtual-network-interface-requirement': [
+                    {
+                      name: vduExternalID,
+                      position: 1,
+                      'virtual-interface': { type: 'PARAVIRT' }
                     }
-                  };
-                }
+                  ]
+                });
+                this.vnfdPackageDetails['ext-cpd'][index] = {
+                  id: extcpd.id,
+                  'int-cpd': {
+                    cpd: vduExternalID,
+                    'vdu-id': vduID
+                  }
+                };
               }
             });
           }
@@ -1018,7 +1022,7 @@
             this.vnfdPackageDetails['ext-cpd'].forEach((extCPD: EXTCPD): void => {
               if (extCPD['int-cpd'] !== undefined) {
                 if (extCPD['int-cpd'].cpd === CPDID) {
-                  delete extCPD['int-cpd'];
+                  extCPD['int-cpd'] = {};
                 }
               }
             });
diff --git a/src/app/utilities/compose-packages/ComposePackages.ts b/src/app/utilities/compose-packages/ComposePackages.ts
index be70655..c621215 100644
--- a/src/app/utilities/compose-packages/ComposePackages.ts
+++ b/src/app/utilities/compose-packages/ComposePackages.ts
@@ -239,6 +239,6 @@
         }
       };
     }
-    return jsyaml.dump(packageYaml);
+    return jsyaml.dump(packageYaml, { sortKeys: true });
   }
 }
diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json
index 79cf07f..8e24408 100644
--- a/src/assets/i18n/de.json
+++ b/src/assets/i18n/de.json
@@ -307,7 +307,8 @@
             "VDU": "VDU",
             "INTVL": "IntVL",
             "INTCP": "IntCP",
-            "DATAEMPTY": "Bitte ändere etwas"
+            "DATAEMPTY": "Bitte ändere etwas",
+            "ADDCPBEFOREVDU": "Fügen Sie CP hinzu, bevor Sie VDU hinzufügen"
         },
         "PROJECT": {
             "NEWPROJECT": "Nieuw project",
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index 164d465..11cbc54 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -307,7 +307,8 @@
             "VDU": "VDU",
             "INTVL": "IntVL",
             "INTCP": "IntCP",
-            "DATAEMPTY": "Please change something"
+            "DATAEMPTY": "Please change something",
+            "ADDCPBEFOREVDU": "Add CP before adding VDU"
         },
         "PROJECT": {
             "NEWPROJECT": "New Project",
diff --git a/src/assets/i18n/es.json b/src/assets/i18n/es.json
index 9592c8d..a74a931 100644
--- a/src/assets/i18n/es.json
+++ b/src/assets/i18n/es.json
@@ -307,7 +307,8 @@
             "VDU": "VDU",
             "INTVL": "IntVL",
             "INTCP": "IntCP",
-            "DATAEMPTY": "Por favor, cambia algo"
+            "DATAEMPTY": "Por favor, cambia algo",
+            "ADDCPBEFOREVDU": "Agregue CP antes de agregar VDU"
         },
         "PROJECT": {
             "NEWPROJECT": "Nuevo proyecto",
diff --git a/src/assets/i18n/pt.json b/src/assets/i18n/pt.json
index 67db90a..d4ebbfc 100644
--- a/src/assets/i18n/pt.json
+++ b/src/assets/i18n/pt.json
@@ -307,7 +307,8 @@
             "VDU": "VDU",
             "INTVL": "IntVL",
             "INTCP": "IntCP",
-            "DATAEMPTY": "Por favor mude algo"
+            "DATAEMPTY": "Por favor mude algo",
+            "ADDCPBEFOREVDU": "Adicione CP antes de adicionar VDU"
         },
         "PROJECT": {
             "NEWPROJECT": "Novo projeto",
