diff --git a/models/openmano/src/openmano2rift.py b/models/openmano/src/openmano2rift.py
index 8b91910..0d990af 100755
--- a/models/openmano/src/openmano2rift.py
+++ b/models/openmano/src/openmano2rift.py
@@ -176,7 +176,6 @@
                                 ))
                             if key != 'control-net':
                                 vld.provider_network.physical_network = 'physnet_sriov'
-                                vld.provider_network.overlay_type = 'VLAN'
 
         vnf_member_index_dict = create_consituent_vnfds()
         create_connections(vnf_member_index_dict)
diff --git a/models/plugins/yang/mano-rift-groupings.yang b/models/plugins/yang/mano-rift-groupings.yang
index 1f684b2..7788724 100644
--- a/models/plugins/yang/mano-rift-groupings.yang
+++ b/models/plugins/yang/mano-rift-groupings.yang
@@ -22,22 +22,10 @@
   namespace "urn:ietf:params:xml:ns:yang:nfvo:mano-rift-groupings";
   prefix "mano-rift";
 
-  import vnfd {
-    prefix "vnfd";
-  }
-
   import mano-types {
     prefix "manotypes";
   }
 
-  import nsd {
-    prefix "nsd";
-  }
-
-  import project-vnfd {
-    prefix "project-vnfd";
-  }
-
   grouping custom-meta-data {
     description "Grouping for instance-specific meta data";
     list custom-meta-data {
diff --git a/models/plugins/yang/mano-types.yang b/models/plugins/yang/mano-types.yang
index a58492e..8950c7a 100644
--- a/models/plugins/yang/mano-types.yang
+++ b/models/plugins/yang/mano-types.yang
@@ -191,8 +191,8 @@
       }
     }
   }
-
-  grouping image-properties {
+  
+ grouping image-properties {
     leaf image {
       description
             "Image name for the software image.
@@ -214,117 +214,139 @@
     }
   }
 
-  grouping vnf-configuration {
-    container vnf-configuration {
+
+  grouping vca-relationships {
+    container vca-relationships {
+      list relation {
+        description "List of relations between VCA componets.";
+
+        key "requires provides";
+
+        leaf requires {
+          description
+            "Name of the required relation.";
+          type string;
+        }
+
+        leaf provides {
+          description
+            "Name of the provided relation.";
+          type string;
+        }
+      }
+    }
+  }
+
+  grouping vca-configuration {
+    description
+        "Information about the VNF or VDU configuration. Note:
+         If the NS contains multiple instances of the
+         same VNF or VDU, each instance could have a different
+         configuration.";
+
+    choice config-method {
       description
-          "Information about the VNF configuration. Note:
-           If the NS contains multiple instances of the
-           same VNF, each instance could have a different
-           configuration.";
-
-      choice config-method {
+          "Defines the configuration method for the VNF or VDU.";
+      case script {
         description
-            "Defines the configuration method for the VNF.";
-        case script {
-          description
-              "Use custom script for configuring the VNF.
-               This script is executed in the context of
-               Orchestrator (The same system and environment
-               as the Launchpad).";
-          container script {
-            leaf script-type {
-              description
-                  "Script type - currently supported - Scripts confirming to Rift CA plugin";
-              type enumeration {
-                enum rift;
-              }
-            }
-          }
-        }
-
-        case juju {
-          description
-            "Configure the VNF through Juju.";
-          container juju {
-            leaf charm {
-              description "Juju charm to use with the VNF.";
-              type string;
+            "Use custom script for configuring the VNF or VDU.
+             This script is executed in the context of
+             Orchestrator (The same system and environment
+             as the Launchpad).";
+        container script {
+          leaf script-type {
+            description
+                "Script type - currently supported - Scripts confirming to Rift CA plugin";
+            type enumeration {
+              enum rift;
             }
           }
         }
       }
 
-      list config-primitive {
+      case juju {
         description
-          "List of config primitives supported by the
-          configuration agent for this VNF.";
+          "Configure the VNF or VDU through Juju.";
+        container juju {
+          leaf charm {
+            description "Juju charm to use with the VNF or VDU.";
+            type string;
+          }
+          uses manotypes:vca-relationships;
+        }
+      }
+    }
+
+    list config-primitive {
+      description
+        "List of config primitives supported by the
+        configuration agent for this VNF or VDU.";
+      key "name";
+
+      leaf name {
+        description
+          "Name of the config primitive.";
+        type string;
+      }
+
+      list parameter {
+        description
+          "List of parameters to the config primitive.";
         key "name";
-
-        leaf name {
-          description
-            "Name of the config primitive.";
-          type string;
-        }
-
-        list parameter {
-          description
-            "List of parameters to the config primitive.";
-          key "name";
-          uses primitive-parameter;
-        }
-
-        leaf user-defined-script {
-          description
-            "A user defined script. If user defined script is defined,
-             the script will be executed using bash";
-          type string;
-        }
+        uses primitive-parameter;
       }
 
-      list initial-config-primitive {
+      leaf user-defined-script {
         description
-          "Initial set of configuration primitives.";
-        key "seq";
-        leaf seq {
-          description
-              "Sequence number for the configuration primitive.";
-          type uint64;
-        }
+          "A user defined script. If user defined script is defined,
+           the script will be executed using bash";
+        type string;
+      }
+    }
 
-        choice primitive-type {
-          case primitive-definition {
-            leaf name {
-              description
-                "Name of the configuration primitive.";
-              type string;
-            }
+    list initial-config-primitive {
+      description
+        "Initial set of configuration primitives.";
+      key "seq";
+      leaf seq {
+        description
+          "Sequence number for the configuration primitive.";
+        type uint64;
+      }
 
-            uses primitive-parameter-value;
+      choice primitive-type {
+        case primitive-definition {
+          leaf name {
+            description
+              "Name of the configuration primitive.";
+            type string;
+          }
 
-            leaf user-defined-script {
-              description
-                "A user defined script.";
-              type string;
-            }
+          uses primitive-parameter-value;
+
+          leaf user-defined-script {
+            description
+              "A user defined script.";
+            type string;
           }
         }
       }
     }
-  } // END - grouping vnf-configuration
+  } // END - grouping vca-configuration
 
   typedef virtual-link-type {
     description
         "Type of virtual link
          ELAN: A multipoint service connecting a set of VNFs
-         // ELINE: For a simple point to point connection
+         ELINE: For a simple point to point connection
          //        between a VNF and the existing network.
          // ETREE: A multipoint service connecting one or
          //        more roots and a set of leaves, but
          //        preventing inter-leaf communication.";
     type enumeration {
       enum ELAN;
+      enum ELINE;
       // enum ETREE;
-      // enum ELINE;
     }
   }
 
@@ -981,24 +1003,6 @@
         type string;
       }
 
-      leaf overlay-type {
-        description
-            "Type of the overlay network.
-             LOCAL - Provider network implemented in a single compute node
-             FLAT - Provider network shared by all tenants
-             VLAN - Provider network implemented using 802.1Q tagging
-             VXLAN - Provider networks implemented using RFC 7348
-             GRE - Provider networks implemented using GRE tunnels
-             PORTGROUP - Provider networks implemented for VIO support";
-        type enumeration {
-          enum LOCAL;
-          enum FLAT;
-          enum VLAN;
-          enum VXLAN;
-          enum GRE;
-          enum PORTGROUP;
-        }
-      }
       leaf segmentation_id {
         description
             "ID of segregated virtual networks";
diff --git a/models/plugins/yang/nsd-base.yang b/models/plugins/yang/nsd-base.yang
index 05903e2..c332869 100644
--- a/models/plugins/yang/nsd-base.yang
+++ b/models/plugins/yang/nsd-base.yang
@@ -23,22 +23,10 @@
   namespace "http://riftio.com/ns/riftware-1.0/nsd-base";
   prefix "nsd-base";
 
-  import vld {
-    prefix "vld";
-  }
-
-  import vnfd-base {
-    prefix "vnfd-base";
-  }
-
   import ietf-inet-types {
     prefix "inet";
   }
 
-  import ietf-yang-types {
-    prefix "yang";
-  }
-
   import mano-types {
     prefix "manotypes";
   }
diff --git a/models/plugins/yang/nsr.yang b/models/plugins/yang/nsr.yang
index ef293fb..12cf850 100644
--- a/models/plugins/yang/nsr.yang
+++ b/models/plugins/yang/nsr.yang
@@ -27,10 +27,6 @@
     prefix "vlr";
   }
 
-  import vld {
-    prefix "vld";
-  }
-
   import nsd-base {
     prefix "nsd-base";
   }
@@ -59,10 +55,6 @@
     prefix "manotypes";
   }
 
-  import rw-sdn {
-    prefix "rw-sdn";
-  }
-
   import rw-project {
     prefix "rw-project";
   }
@@ -393,9 +385,7 @@
         description
             "The SDN account to use when requesting resources for
             this vnffgr";
-        type leafref {
-          path "../../../../rw-sdn:sdn/rw-sdn:account/rw-sdn:name";
-        }
+        type string;
       }
 
       leaf cloud-account {
diff --git a/models/plugins/yang/project-nsd.yang b/models/plugins/yang/project-nsd.yang
index 33d8241..ae79d96 100644
--- a/models/plugins/yang/project-nsd.yang
+++ b/models/plugins/yang/project-nsd.yang
@@ -23,10 +23,6 @@
   namespace "http://riftio.com/ns/riftware-1.0/project-nsd";
   prefix "project-nsd";
 
-  import ietf-yang-types {
-    prefix "yang";
-  }
-
   import mano-types {
     prefix "manotypes";
   }
diff --git a/models/plugins/yang/vlr.yang b/models/plugins/yang/vlr.yang
index 6b8139f..6a9b591 100644
--- a/models/plugins/yang/vlr.yang
+++ b/models/plugins/yang/vlr.yang
@@ -23,10 +23,6 @@
   namespace "urn:ietf:params:xml:ns:yang:nfvo:vlr";
   prefix "vlr";
 
-  import ietf-inet-types {
-    prefix "inet";
-  }
-
   import ietf-yang-types {
     prefix "yang";
   }
@@ -35,14 +31,6 @@
     prefix "manotypes";
   }
 
-  import vld {
-    prefix "vld";
-  }
-
-  import vnfd-base {
-    prefix "vnfd-base";
-  }
-
   import rw-project {
     prefix "rw-project";
   }
diff --git a/models/plugins/yang/vnfd-base.yang b/models/plugins/yang/vnfd-base.yang
index 389bc69..c2eae35 100644
--- a/models/plugins/yang/vnfd-base.yang
+++ b/models/plugins/yang/vnfd-base.yang
@@ -160,7 +160,10 @@
         type string;
       }
 
-      uses manotypes:vnf-configuration;
+
+      container vnf-configuration {
+        uses manotypes:vca-configuration;
+      }
 
       container mgmt-interface {
         description
@@ -356,8 +359,19 @@
         uses manotypes:vswitch-epa;
         uses manotypes:hypervisor-epa;
         uses manotypes:host-epa;
+
+        list alarm {
+          key "alarm-id";
+
+          uses manotypes:alarm;
+        }
+
         uses manotypes:image-properties;
 
+        container vdu-configuration {
+          uses manotypes:vca-configuration;
+        }
+
         choice cloud-init-input {
           description
             "Indicates how the contents of cloud-init script are provided.
diff --git a/models/plugins/yang/vnfd.yang b/models/plugins/yang/vnfd.yang
index 7d487ca..d1c9df6 100644
--- a/models/plugins/yang/vnfd.yang
+++ b/models/plugins/yang/vnfd.yang
@@ -39,7 +39,6 @@
     reference
       "Derived from earlier versions of base YANG files";
   }
-
   container vnfd-catalog {
     description
       "Virtual Network Function Descriptor (VNFD).";
diff --git a/models/plugins/yang/vnffgd.yang b/models/plugins/yang/vnffgd.yang
index 254bca2..652ee81 100644
--- a/models/plugins/yang/vnffgd.yang
+++ b/models/plugins/yang/vnffgd.yang
@@ -23,18 +23,10 @@
   namespace "urn:ietf:params:xml:ns:yang:nfvo:vnffgd";
   prefix "vnffgd";
 
-  import ietf-inet-types {
-    prefix "inet";
-  }
-
   import ietf-yang-types {
     prefix "yang";
   }
 
-  import mano-types {
-    prefix "manotypes";
-  }
-
   import rw-project {
     prefix "rw-project";
   }
diff --git a/models/plugins/yang/vnfr.role.xml b/models/plugins/yang/vnfr.role.xml
index c61751f..6197e18 100644
--- a/models/plugins/yang/vnfr.role.xml
+++ b/models/plugins/yang/vnfr.role.xml
@@ -5,8 +5,6 @@
     <key-set>
       <name>project-name</name>
       <path>/rw-project:project/rw-project:name</path>
-      <path>/vnfr:create-alarm/vnfr:project-name</path>
-      <path>/vnfr:destroy-alarm/vnfr:project-name</path>
     </key-set>
   </key-definition>
 
@@ -25,8 +23,6 @@
     <authorize>
       <permissions>create read update delete execute</permissions>
       <path>/rw-project:project/vnfr:vnfr-catalog</path>
-      <path>/vnfr:create-alarm</path>
-      <path>/vnfr:destroy-alarm</path>
     </authorize>
   </role-definition>
 
@@ -35,8 +31,6 @@
     <keys-role>rw-project-mano:vnfr-role</keys-role>
     <authorize>
       <permissions>create read update delete execute</permissions>
-      <path>/vnfr:create-alarm</path>
-      <path>/vnfr:destroy-alarm</path>
     </authorize>
   </role-definition>
 </config>
diff --git a/models/plugins/yang/vnfr.tailf.yang b/models/plugins/yang/vnfr.tailf.yang
index ef266a1..d0b45dd 100644
--- a/models/plugins/yang/vnfr.tailf.yang
+++ b/models/plugins/yang/vnfr.tailf.yang
@@ -38,12 +38,4 @@
   tailf:annotate "/rw-project:project/vnfr:vnfr-catalog" {
     tailf:callpoint rw_callpoint;
   }
-
-  tailf:annotate "/vnfr:create-alarm" {
-    tailf:actionpoint rw_actionpoint;
-  }
-
-  tailf:annotate "/vnfr:destroy-alarm" {
-    tailf:actionpoint rw_actionpoint;
-  }
 }
diff --git a/models/plugins/yang/vnfr.yang b/models/plugins/yang/vnfr.yang
index 9e12032..ebccf12 100644
--- a/models/plugins/yang/vnfr.yang
+++ b/models/plugins/yang/vnfr.yang
@@ -55,10 +55,6 @@
     prefix "rw-project";
   }
 
-  import rw-cloud {
-    prefix "rw-cloud";
-  }
-
   revision 2017-02-28 {
     description
       "Update model to support projects.";
@@ -285,7 +281,9 @@
         }
 
         // Use parameters provided here to configure this VNF
-        uses manotypes:vnf-configuration;
+      container vnf-configuration {
+        uses manotypes:vca-configuration;
+      }
 
         // Mainly used by Mon-params & dashboard url
         container mgmt-interface {
@@ -437,6 +435,10 @@
 
           uses manotypes:supplemental-boot-data;
 
+        container vdu-configuration {
+          uses manotypes:vca-configuration;
+        }
+
           list volumes {
             key "name";
 
@@ -485,57 +487,56 @@
             uses associated-virtual-cps;
           }
 
-          list interface {
+        list interface {
+          description
+              "List of interfaces (internal and external) for the VNF";
+          key name;
+
+          leaf name {
             description
-                "List of interfaces (internal and external) for the VNF";
-            key name;
-
-            leaf name {
-              description
-                  "Name of the interface. Note that this
-                  name has only local significance to the VDU.";
-              type string;
-            }
-
-            leaf position {
-              description
-                  "Explicit Position of the interface within the list";
-              type uint32;
-            }
-
-            leaf type {
-              description
-                  "Type of the Interface";
-
-              type vnfd-base:interface-type;
-
-              default "EXTERNAL";
-            }
-
-            choice connection-point-type {
-              case internal {
-                leaf internal-connection-point-ref {
-                  description
-                      "Leaf Ref to the particular internal connection point";
-                  type leafref {
-                    path "../../internal-connection-point/id";
-                  }
-                }
-              }
-              case external {
-                leaf external-connection-point-ref {
-                  description
-                      "Leaf Ref to the particular external connection point";
-                  type leafref {
-                    path "../../../connection-point/name";
-                  }
-                }
-              }
-            }
-            uses virtual-interface;
+                "Name of the interface. Note that this
+                name has only local significance to the VDU.";
+            type string;
           }
 
-          leaf operational-status {
+          leaf position {
+            description
+                "Explicit Position of the interface within the list";
+            type uint32;
+          }
+
+          leaf type {
+            description
+                "Type of the Interface";
+
+            type vnfd-base:interface-type;
+
+            default "EXTERNAL";
+          }
+          choice connection-point-type {
+            case internal {
+              leaf internal-connection-point-ref {
+                description
+                    "Leaf Ref to the particular internal connection point";
+                type leafref {
+                  path "../../internal-connection-point/id";
+                }
+              }
+            }
+            case external {
+              leaf external-connection-point-ref {
+                description
+                    "Leaf Ref to the particular external connection point";
+                type leafref {
+                  path "../../../connection-point/name";
+                }
+              }
+            }
+          }
+          uses virtual-interface;
+        }
+
+         leaf operational-status {
             description
               "The operational status of the VDU
                 init                : The VDU has just started.
@@ -548,7 +549,8 @@
                 failed              : The VDU  instantiation failed.
               ";
             type vdu-operational-status;
-          }
+         }
+
           uses placement-group-info;
         }
 
@@ -601,54 +603,4 @@
       }
     }
   }
-
-  rpc create-alarm {
-    description "Create an alert for a running VDU";
-    input {
-      uses manotypes:rpc-project-name;
-
-      leaf cloud-account {
-        mandatory true;
-        type leafref {
-          path "/rw-project:project[rw-project:name=current()/../project-name]" +
-            "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
-        }
-      }
-
-      leaf vdur-id {
-        mandatory true;
-        type string;
-      }
-
-      container alarm {
-        uses manotypes:alarm;
-      }
-    }
-
-    output {
-      leaf alarm-id {
-        type string;
-      }
-    }
-  }
-
-  rpc destroy-alarm {
-    description "Destroy an alert that is associated with a running VDU";
-    input {
-      uses manotypes:rpc-project-name;
-
-      leaf cloud-account {
-        mandatory true;
-        type leafref {
-          path "/rw-project:project[rw-project:name=current()/../project-name]" +
-            "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
-        }
-      }
-
-      leaf alarm-id {
-        mandatory true;
-        type string;
-      }
-    }
-  }
 }
