Merge "Update YANG models for OpenFronthaul M-Plane."
diff --git a/ntsimulator/.env b/ntsimulator/.env
index 3369ad9..83669b1 100644
--- a/ntsimulator/.env
+++ b/ntsimulator/.env
@@ -1,6 +1,6 @@
 DOCKER_REPO=o-ran-sc/
 NTS_MANAGER_PORT=8300
-NTS_BUILD_VERSION=1.6.1
+NTS_BUILD_VERSION=1.6.2
 
 IPv6_ENABLED=false
 SSH_CONNECTIONS=1
diff --git a/ntsimulator/deploy/blank/container-tag.yaml b/ntsimulator/deploy/blank/container-tag.yaml
index d478e62..0ea3b49 100644
--- a/ntsimulator/deploy/blank/container-tag.yaml
+++ b/ntsimulator/deploy/blank/container-tag.yaml
@@ -1,2 +1,2 @@
 ---
-tag: 1.6.1
+tag: 1.6.2
diff --git a/ntsimulator/deploy/nts-manager/container-tag.yaml b/ntsimulator/deploy/nts-manager/container-tag.yaml
index d478e62..0ea3b49 100644
--- a/ntsimulator/deploy/nts-manager/container-tag.yaml
+++ b/ntsimulator/deploy/nts-manager/container-tag.yaml
@@ -1,2 +1,2 @@
 ---
-tag: 1.6.1
+tag: 1.6.2
diff --git a/ntsimulator/deploy/o-ran-du/container-tag.yaml b/ntsimulator/deploy/o-ran-du/container-tag.yaml
index d478e62..0ea3b49 100644
--- a/ntsimulator/deploy/o-ran-du/container-tag.yaml
+++ b/ntsimulator/deploy/o-ran-du/container-tag.yaml
@@ -1,2 +1,2 @@
 ---
-tag: 1.6.1
+tag: 1.6.2
diff --git a/ntsimulator/deploy/o-ran-ru-fh/.env b/ntsimulator/deploy/o-ran-ru-fh/.env
new file mode 100644
index 0000000..83669b1
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/.env
@@ -0,0 +1,35 @@
+DOCKER_REPO=o-ran-sc/
+NTS_MANAGER_PORT=8300
+NTS_BUILD_VERSION=1.6.2
+
+IPv6_ENABLED=false
+SSH_CONNECTIONS=1
+TLS_CONNECTIONS=0
+NTS_HOST_IP=10.20.11.121
+NTS_HOST_BASE_PORT=50000
+NTS_HOST_NETCONF_SSH_BASE_PORT=0
+NTS_HOST_NETCONF_TLS_BASE_PORT=1000
+NTS_HOST_TRANSFER_FTP_BASE_PORT=2000
+NTS_HOST_TRANSFER_SFTP_BASE_PORT=2000
+
+NTS_NF_MOUNT_POINT_ADDRESSING_METHOD=host-mapping
+NTS_NF_STANDALONE_START_FEATURES="datastore-populate ves-heartbeat ves-file-ready ves-pnf-registration web-cut-through netconf-call-home"
+
+SDN_CONTROLLER_PROTOCOL=http
+SDN_CONTROLLER_IP=172.40.0.21
+SDN_CONTROLLER_PORT=8181
+SDN_CONTROLLER_CALLHOME_IP=172.40.0.22
+SDN_CONTROLLER_CALLHOME_PORT=6666
+SDN_CONTROLLER_USERNAME=admin
+SDN_CONTROLLER_PASSWORD=admin
+
+VES_COMMON_HEADER_VERSION=7.2.1
+VES_ENDPOINT_PROTOCOL=https
+VES_ENDPOINT_IP=172.40.0.90
+VES_ENDPOINT_PORT=8443
+VES_ENDPOINT_AUTH_METHOD=no-auth
+VES_ENDPOINT_USERNAME=sample1
+VES_ENDPOINT_PASSWORD=sample1
+
+CURL_CONNECT_TIMEOUT=1
+CURL_OPERATION_TIMEOUT=1
diff --git a/ntsimulator/deploy/o-ran-ru-fh/container-tag.yaml b/ntsimulator/deploy/o-ran-ru-fh/container-tag.yaml
index d478e62..0ea3b49 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/container-tag.yaml
+++ b/ntsimulator/deploy/o-ran-ru-fh/container-tag.yaml
@@ -1,2 +1,2 @@
 ---
-tag: 1.6.1
+tag: 1.6.2
diff --git a/ntsimulator/deploy/o-ran-ru-fh/docker-compose.yaml b/ntsimulator/deploy/o-ran-ru-fh/docker-compose.yaml
new file mode 100644
index 0000000..a1ccb3e
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/docker-compose.yaml
@@ -0,0 +1,43 @@
+version: '3.7'
+services:
+  ntsim-ng:
+    image: "${DOCKER_REPO}nts-ng-base:latest"
+    command: ["/opt/dev/ntsim-ng/ntsim-ng", "-w/opt/dev/ntsim-ng", "--supervisor"]
+    container_name: nts-ng-debug
+    stop_grace_period: 5m
+    volumes:
+     - "./yang:/opt/dev/deploy/yang"
+     - "./data:/opt/dev/deploy/data"
+     - "./config.json:/opt/dev/ntsim-ng/config/config.json"
+    environment:
+      IPv6_ENABLED: ${IPv6_ENABLED}
+      SSH_CONNECTIONS: ${SSH_CONNECTIONS}
+      TLS_CONNECTIONS: ${TLS_CONNECTIONS}
+      NTS_NF_STANDALONE_START_FEATURES: ${NTS_NF_STANDALONE_START_FEATURES}
+      NTS_NF_MOUNT_POINT_ADDRESSING_METHOD: ${NTS_NF_MOUNT_POINT_ADDRESSING_METHOD}
+
+      NTS_HOST_IP: ${NTS_HOST_IP}
+      NTS_HOST_BASE_PORT: ${NTS_HOST_BASE_PORT}
+      NTS_HOST_NETCONF_SSH_BASE_PORT: ${NTS_HOST_NETCONF_SSH_BASE_PORT}
+      NTS_HOST_NETCONF_TLS_BASE_PORT: ${NTS_HOST_NETCONF_TLS_BASE_PORT}
+      NTS_HOST_TRANSFER_FTP_BASE_PORT: ${NTS_HOST_TRANSFER_FTP_BASE_PORT}
+      NTS_HOST_TRANSFER_SFTP_BASE_PORT: ${NTS_HOST_TRANSFER_SFTP_BASE_PORT}
+
+      SDN_CONTROLLER_PROTOCOL: ${SDN_CONTROLLER_PROTOCOL}
+      SDN_CONTROLLER_IP: ${SDN_CONTROLLER_IP}
+      SDN_CONTROLLER_PORT: ${SDN_CONTROLLER_PORT}
+      SDN_CONTROLLER_CALLHOME_IP: ${SDN_CONTROLLER_CALLHOME_IP}
+      SDN_CONTROLLER_CALLHOME_PORT: ${SDN_CONTROLLER_CALLHOME_PORT}
+      SDN_CONTROLLER_USERNAME: ${SDN_CONTROLLER_USERNAME}
+      SDN_CONTROLLER_PASSWORD: ${SDN_CONTROLLER_PASSWORD}
+
+      VES_COMMON_HEADER_VERSION: ${VES_COMMON_HEADER_VERSION}
+      VES_ENDPOINT_PROTOCOL: ${VES_ENDPOINT_PROTOCOL}
+      VES_ENDPOINT_IP: ${VES_ENDPOINT_IP}
+      VES_ENDPOINT_PORT: ${VES_ENDPOINT_PORT}
+      VES_ENDPOINT_AUTH_METHOD: ${VES_ENDPOINT_AUTH_METHOD}
+      VES_ENDPOINT_USERNAME: ${VES_ENDPOINT_USERNAME}
+      VES_ENDPOINT_PASSWORD: ${VES_ENDPOINT_PASSWORD}
+
+      CURL_CONNECT_TIMEOUT: ${CURL_CONNECT_TIMEOUT}
+      CURL_OPERATION_TIMEOUT: ${CURL_OPERATION_TIMEOUT}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/iana-crypt-hash.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/iana-crypt-hash.yang
new file mode 100644
index 0000000..44c4674
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/iana-crypt-hash.yang
@@ -0,0 +1,120 @@
+module iana-crypt-hash {
+  namespace "urn:ietf:params:xml:ns:yang:iana-crypt-hash";
+  prefix ianach;
+
+  organization "IANA";
+  contact
+    "        Internet Assigned Numbers Authority
+
+     Postal: ICANN
+             12025 Waterfront Drive, Suite 300
+             Los Angeles, CA  90094-2536
+             United States
+
+     Tel:    +1 310 301 5800
+     E-Mail: iana@iana.org>";
+  description
+    "This YANG module defines a type for storing passwords
+     using a hash function and features to indicate which hash
+     functions are supported by an implementation.
+
+     The latest revision of this YANG module can be obtained from
+     the IANA web site.
+
+     Requests for new values should be made to IANA via
+     email (iana@iana.org).
+
+     Copyright (c) 2014 IETF Trust and the persons identified as
+     authors of the code.  All rights reserved.
+
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject
+     to the license terms contained in, the Simplified BSD License
+     set forth in Section 4.c of the IETF Trust's Legal Provisions
+     Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+
+     The initial version of this YANG module is part of RFC 7317;
+     see the RFC itself for full legal notices.";
+
+  revision 2014-08-06 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 7317: A YANG Data Model for System Management";
+  }
+
+  typedef crypt-hash {
+    type string {
+      pattern
+        '$0$.*'
+      + '|$1$[a-zA-Z0-9./]{1,8}$[a-zA-Z0-9./]{22}'
+      + '|$5$(rounds=\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{43}'
+      + '|$6$(rounds=\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{86}';
+    }
+    description
+      "The crypt-hash type is used to store passwords using
+       a hash function.  The algorithms for applying the hash
+       function and encoding the result are implemented in
+       various UNIX systems as the function crypt(3).
+
+       A value of this type matches one of the forms:
+
+         $0$<clear text password>
+         $<id>$<salt>$<password hash>
+         $<id>$<parameter>$<salt>$<password hash>
+
+       The '$0$' prefix signals that the value is clear text.  When
+       such a value is received by the server, a hash value is
+       calculated, and the string '$<id>$<salt>$' or
+       $<id>$<parameter>$<salt>$ is prepended to the result.  This
+       value is stored in the configuration data store.
+       If a value starting with '$<id>$', where <id> is not '0', is
+       received, the server knows that the value already represents a
+       hashed value and stores it 'as is' in the data store.
+
+       When a server needs to verify a password given by a user, it
+       finds the stored password hash string for that user, extracts
+       the salt, and calculates the hash with the salt and given
+       password as input.  If the calculated hash value is the same
+       as the stored value, the password given by the client is
+       accepted.
+
+       This type defines the following hash functions:
+
+         id | hash function | feature
+         ---+---------------+-------------------
+          1 | MD5           | crypt-hash-md5
+          5 | SHA-256       | crypt-hash-sha-256
+          6 | SHA-512       | crypt-hash-sha-512
+
+       The server indicates support for the different hash functions
+       by advertising the corresponding feature.";
+    reference
+      "IEEE Std 1003.1-2008 - crypt() function
+       RFC 1321: The MD5 Message-Digest Algorithm
+       FIPS.180-4.2012: Secure Hash Standard (SHS)";
+  }
+
+  feature crypt-hash-md5 {
+    description
+      "Indicates that the device supports the MD5
+       hash function in 'crypt-hash' values.";
+    reference "RFC 1321: The MD5 Message-Digest Algorithm";
+  }
+
+  feature crypt-hash-sha-256 {
+    description
+      "Indicates that the device supports the SHA-256
+       hash function in 'crypt-hash' values.";
+    reference "FIPS.180-4.2012: Secure Hash Standard (SHS)";
+  }
+
+  feature crypt-hash-sha-512 {
+    description
+      "Indicates that the device supports the SHA-512
+       hash function in 'crypt-hash' values.";
+    reference "FIPS.180-4.2012: Secure Hash Standard (SHS)";
+  }
+
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/iana-hardware@2018-03-13.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/iana-hardware.yang
old mode 100644
new mode 100755
similarity index 100%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/iana-hardware@2018-03-13.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/iana-hardware.yang
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/iana-if-type@2017-01-19.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/iana-if-type.yang
similarity index 100%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/iana-if-type@2017-01-19.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/iana-if-type.yang
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ieee802-dot1x-types.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ieee802-dot1x-types.yang
new file mode 100644
index 0000000..46e9d4d
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ieee802-dot1x-types.yang
@@ -0,0 +1,247 @@
+module ieee802-dot1x-types {
+
+  namespace "urn:ieee:std:802.1X:yang:ieee802-dot1x-types";
+  prefix "dot1x-types";
+
+  organization
+    "Institute of Electrical and Electronics Engineers";
+
+  contact
+    "WG-URL: http://www.ieee802.org/1
+    WG-EMail: stds-802-1-L@ieee.org
+
+    Contact: IEEE 802.1 Working Group Chair
+    Postal: C/O IEEE 802.1 Working Group
+            IEEE Standards Association
+            445 Hoes Lane
+            Piscataway
+            NJ 08854
+            USA
+
+    E-mail: STDS-802-1-L@LISTSERV.IEEE.ORG";
+
+  description
+    "Port-based network access control allows a network administrator
+    to restrict the use of IEEE 802 LAN service access points (ports)
+    to secure communication between authenticated and authorized
+    devices. IEEE Std 802.1X specifies an architecture, functional
+    elements, and protocols that support mutual authentication
+    between the clients of ports attached to the same LAN and secure
+    communication between the ports. The following control allows a
+    port to be reinitialized, terminating (and potentially
+    restarting) authentication exchanges and MKA operation, based on
+    a data model described in a set of YANG modules.";
+
+  revision 2020-02-18 {
+    description
+      "Updated Contact information.";
+  }
+
+  revision 2019-05-28 {
+    description
+      "Updates based upon comment resolution on draft
+      D1.0 of P802.1X-Rev.";
+    reference
+      "IEEE Std 802.1X-2020, Port-Based Network Access Control.";
+  }
+
+  /* ----------------------------------------------
+   * Type definitions used by dot1X YANG module
+   * ----------------------------------------------
+   */
+
+  typedef pae-nid {
+    type string {
+      length "0..100";
+    }
+    description
+      "Network Identity, which is a UTF-8 string identifying a
+      network or network service.";
+    reference
+      "IEEE 802.1X-2020 Clause 3, Clause 10.1, Clause 12.6";
+  }
+
+  typedef pae-session-user-name {
+    type string {
+      length "0..253";
+    }
+    description
+      "Session user name, which is a UTF-8 string, representing the
+      identity of the peer Supplicant.";
+    reference
+      "IEEE 802.1X-2020 Clause 12.5.1";
+  }
+
+  typedef pae-session-id {
+    type string {
+      length "3..253";
+    }
+    description
+      "Session Identifier, which is a UTF-8 string, uniquely
+      identifying the session within the context of the PAE's
+      system.";
+    reference
+      "IEEE 802.1X-2020 Clause 12.5.1";
+  }
+
+  typedef pae-nid-capabilities {
+    type bits {
+      bit eap {
+        position 0;
+        description
+          "EAP";
+      }
+      bit eapMka {
+        position 1;
+        description
+          "EAP + MKA";
+      }
+      bit eapMkaMacSec {
+        position 2;
+        description
+          "EAP + MKA + MACsec";
+      }
+      bit mka {
+        position 3;
+        description
+          "MKA";
+      }
+      bit mkaMacSec {
+        position 4;
+        description
+          "MKA + MACsec";
+      }
+      bit higherLayer {
+        position 5;
+        description
+          "Higher Layer (WebAuth)";
+      }
+      bit higherLayerFallback {
+        position 6;
+        description
+          "Higher Layer Fallback (WebAuth)";
+      }
+      bit vendorSpecific {
+        position 7;
+        description
+          "Vendor specific authentication mechanisms";
+      }
+    }
+    description
+      "Authentication and protection capabilities supported for the
+      NID. Indicates the combinations of authentication and
+      protection capabilities supported for the NID. Any set of these
+      combinations can be supported.";
+    reference
+      "IEEE 802.1X-2020 Clause 10.1, Clause 11.12.3";
+  }
+
+  typedef pae-access-status {
+    type enumeration {
+      enum no-access {
+        description
+          "Other than to authentication services, and to services
+          announced as available in the absence of authentication
+          (unauthenticated).";
+      }
+      enum remedial-access {
+        description
+          "The access granted is severely limited, possibly to
+          remedial services.";
+      }
+      enum restricted-access {
+        description
+          "The Controlled Port is operational, but restrictions have
+          been applied by the network that can limit access to some
+          resources.";
+      }
+      enum expected-access {
+        description
+          "The Controlled Port is operational, and access provided is
+          as expected for successful authentication and authorization
+          for the NID.";
+      }
+    }
+    description
+      "Indicates the transmitter's Controlled Port operational status
+      and current level of access resulting from authentication and
+      the consequent authorization controls applied by that port's
+      clients.";
+    reference
+      "IEEE 802.1X-2020 Clause 10.4, Clause 12.5";
+  }
+
+  typedef mka-kn {
+    type uint32;
+    description
+      "Indicates a Key Number (KN) used in MKA. It is assigned by
+      the Key Server (sequentially beginning with 1).";
+    reference
+      "IEEE 802.1X-2020 Clause 9.8, Clause 9.16";
+  }
+
+  typedef mka-an {
+    type uint32;
+    description
+      "A number that is concatenated with a MACsec Secure Channel
+      Identifier to identify a Secure Association. Indicates an
+      Association Number (AN) assigned by the Key Server for use with
+      the key number for transmission.";
+    reference
+      "IEEE 802.1X-2020 Clause 9.8, Clause 9.16";
+  }
+
+  typedef pae-ckn {
+    type string {
+      length "1..32";
+    }
+    description
+      "Indicates the CAK name to identify the Connectivity
+      Association Key (CAK) which is the root key in the MACsec Key
+      Agreement key hierarchy. All potential members of the CA use
+      the same CKN.";
+    reference
+      "IEEE 802.1X-2020 Clause 9.3.1, Clause 6.2";
+  }
+
+  typedef pae-kmd {
+    type string {
+      length "0..253";
+    }
+    description
+      "A Key Management Domain (KMD). A string of up to 253 UTF-8
+      characters that names the transmitting authenticator's key
+      management domain.";
+    reference
+      "IEEE Clause 12.6";
+  }
+
+  typedef pae-auth-data {
+    type string;
+    description
+      "Authorization data associated with the CAK.";
+    reference
+      "IEEE 802.1X-2020 Clause 9.16";
+  }
+
+  typedef sci-list-entry {
+    type string {
+      length "8";
+    }
+    description
+      "8 octet string, where the first 6 octets represents the MAC
+      Address (in canonical format), and the next 2 octets represents
+      the Port Identifier.";
+    reference
+      "IEEE 802.1AE Clause 7.1.2, Clause 10.7.1";
+  }
+
+  typedef pae-if-index {
+    type int32 {
+      range "1..2147483647";
+    }
+    description
+        "The interface index value represented by this interface.";
+  }
+
+} // ieee802-dot1x-types
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ieee802-dot1x.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ieee802-dot1x.yang
new file mode 100644
index 0000000..ffb3e69
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ieee802-dot1x.yang
@@ -0,0 +1,1753 @@
+module ieee802-dot1x {

+

+  namespace "urn:ieee:std:802.1X:yang:ieee802-dot1x";

+  prefix "dot1x";

+

+  import ieee802-types { prefix "ieee"; }

+  import ietf-yang-types { prefix "yang"; }

+  import ietf-interfaces { prefix "if"; }

+  import ietf-system { prefix "sys"; }

+  import iana-if-type { prefix "ianaift"; }

+  import ieee802-dot1x-types { prefix "dot1x-types"; }

+

+  organization

+    "Institute of Electrical and Electronics Engineers";

+

+  contact

+    "WG-URL: http://www.ieee802.org/1

+    WG-EMail: stds-802-1-L@ieee.org

+

+    Contact: IEEE 802.1 Working Group Chair

+    Postal: C/O IEEE 802.1 Working Group

+            IEEE Standards Association

+            445 Hoes Lane

+            Piscataway

+            NJ 08854

+            USA

+

+    E-mail: STDS-802-1-L@LISTSERV.IEEE.ORG";

+

+  description

+    "Port-based network access control allows a network administrator

+    to restrict the use of IEEE 802 LAN service access points (ports)

+    to secure communication between authenticated and authorized

+    devices. IEEE Std 802.1X specifies an architecture, functional

+    elements, and protocols that support mutual authentication

+    between the clients of ports attached to the same LAN and secure

+    communication between the ports. The following control allows a

+    port to be reinitialized, terminating (and potentially

+    restarting) authentication exchanges and MKA operation, based on

+    a data model described in a set of YANG modules.";

+

+  revision 2020-02-18 {

+    description

+      "Updated Contact information.";

+  }

+

+  revision 2019-06-12 {

+    description

+      "Updates based on comment resolution of the WG ballot of

+      P802.1X-Rev/D1.0.";

+    reference

+      "IEEE Std 802.1X-2020, Port-Based Network Access Control.";

+  }

+

+  grouping nid-group {

+    description

+      "The PAE NID Group configuration and operational information.";

+    list pae-nid-group {

+      key "nid";

+      description

+        "A list that contains the configuration and operational

+        nodes for the network announcement information for the

+        Logon Process.";

+      leaf nid {

+        type dot1x-types:pae-nid;

+        description

+          "Identification of the network or network service.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.5";

+      }

+      leaf use-eap {

+        type enumeration {

+          enum never {

+            description

+              "Never.";

+          }

+          enum immediate {

+            description

+              "Immediately, concurrently with the use of MKA with any

+              cached CAK(s).";

+          }

+          enum mka-fail {

+            description

+              "Not until MKA has failed, if a prior CAK has been

+              cached.";

+          }

+        }

+        default "immediate";

+        description

+          "Determines when the Logon Process will initiate EAP, if

+          the Supplicant and or Authenticator are enabled, and takes

+          one of the above values.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.5";

+      }

+      leaf unauth-allowed {

+        type enumeration {

+          enum never {

+            description

+              "Never.";

+          }

+          enum immediate {

+            description

+              "Immediately, independently of any current or future

+              attempts to authenticate using the PAE or MKA.";

+          }

+          enum auth-fail {

+            description

+              "Not until an attempt has been made to authenticate

+              using EAP, unless neither the supplicant nor the

+              authenticator is enabled, and MKA has attempted to use

+              any cached CAK (unless the KaY is not enabled).";

+          }

+        }

+        default "immediate";

+        description

+          "Determines when the Logon Process will tell the CP state

+          machine to provide unauthenticated connectivity, and takes

+          one of the above values.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.5";

+      }

+      leaf unsecure-allowed {

+        type enumeration {

+          enum never {

+            description

+              "Never.";

+          }

+          enum immediate {

+            description

+              "Immediately, to provide connectivity concurrently with

+              the use of MKA with any CAK acquired through EAP.";

+          }

+          enum mka-fail {

+            description

+              "Not until MKA has failed, or is not enabled.";

+          }

+          enum mka-server {

+            description

+              "Only if directed by the MKA server.";

+          }

+        }

+        default "immediate";

+        description

+          "Determines when the Logon Process will tell the CP state

+          machine to provide authenticated but unsecured

+          connectivity, takes one of the above values.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.5";

+      }

+      leaf unauthenticated-access {

+        type enumeration {

+          enum no-access {

+            description

+              "Other than to authentication services.";

+          }

+          enum fallback-access {

+            description

+              "Limited access can be provided after authentication

+              failure.";

+          }

+          enum limited-access {

+            description

+              "Immediate limited access is available without

+              authentication.";

+          }

+          enum open-access {

+            description

+              "Immediate access is available without

+              authentication.";

+          }

+        }

+        default "no-access";

+        description

+          "Unauthenticated access capabilities provided by the NID.";

+        reference

+          "IEEE 802.1X-2020 Clause 10.1";

+      }

+      leaf access-capabilities {

+        type dot1x-types:pae-nid-capabilities;

+        description

+          "Authentication and protection capabilities supported for

+          the NID.";

+        reference

+          "IEEE 802.1X-2020 Clause 10.1";

+      }

+

+      leaf kmd {

+        type dot1x-types:pae-kmd;

+        config false;

+        description

+          "The Key Management Domain for the NID.";

+        reference

+          "IEEE 802.1X-2020 Clause 10.4";

+      }

+    }

+  }

+

+  grouping port-capabilities {

+    description

+      "Per port PAE feature capabilities.";

+    leaf supp {

+      type boolean;

+      description

+        "Indicates if PACP EAP Supplicant is supported.";

+      reference

+        "IEEE 802.1X-2020 Clause 12.9.2";

+    }

+    leaf auth {

+      type boolean;

+      description

+        "Indicates if PACP EAP Authenticator is supported.";

+      reference

+        "IEEE 802.1X-2020 Clause 12.9.2";

+    }

+    leaf mka {

+      type boolean;

+      description

+        "Indicates if MKA is supported.";

+      reference

+        "IEEE 802.1X-2020 Clause 12.9.2";

+    }

+    leaf macsec {

+      type boolean;

+      description

+        "Indicates if MACsec on the Controlled port is supported.";

+      reference

+        "IEEE 802.1X-2020 Clause 12.9.2";

+    }

+    leaf announcements {

+      type boolean;

+      description

+        "Indicates if the ability to send EAPOL announcements is

+        supported.";

+      reference

+        "IEEE 802.1X-2020 Clause 12.9.2";

+    }

+    leaf listener {

+      type boolean;

+      description

+        "Indicates if the ability to use received EAPOL

+        announcements is supported.";

+      reference

+        "IEEE 802.1X-2020 Clause 12.9.2";

+    }

+    leaf virtual-ports {

+      type boolean;

+      description

+        "Indicates if virtual ports for a real port is supported.";

+      reference

+        "IEEE 802.1X-2020 Clause 12.9.2";

+    }

+    leaf in-service-upgrades {

+      type boolean;

+      description

+        "Indicates if MKA in-service upgrades is supported.";

+      reference

+        "IEEE 802.1X-2020 Clause 12.9.2";

+    }

+  }

+

+  /* ---------------------------------------------------

+   * Configuration objects used by 802.1X YANG module

+   * ---------------------------------------------------

+   */

+  augment "/sys:system" {

+    description

+      "Augment system with 802.1X PAE System specific configuration

+      nodes.";

+    container pae-system {

+      description

+        "Contains all 802.1X PAE System specific related

+        configuration and operational data.";

+      leaf name {

+        type string {

+          length "1..255";

+        }

+        description

+          "The name which uniquely identifies the PAE System.";

+      }

+      leaf system-access-control {

+        type enumeration {

+          enum disabled {

+            description

+              "Deletes any virtual ports previously instantiated, and

+              terminates authentication exchanges and MKA

+              operation.";

+          }

+          enum enabled {

+            description

+              "Enables PAE system access control.";

+          }

+        }

+        description

+          "Setting this control to disabled deletes any virtual ports

+          previously instantiated, and terminates authentication

+          exchanges and MKA operation. Each real port PAE behaves as

+          if enabledVirtualPorts was clear, the PAEs Supplicant,

+          Authenticator, and KaY as if their enabled controls were

+          clear, and Logon Process(es) as if unauthAllowed was

+          Immediate. Announcements can be transmitted (subject to

+          other controls), both periodically and in response to

+          announcement requests (conveyed by EAPOL-Starts or

+          EAPOL-Announcement-Reqs) but are sent with a single NID

+          Set, with a null NID, and the Access Information TLV (and

+          no other) with an pae-access-status of No Access,

+          accessRequested false, OpenAccess, and no

+          accessCapabilities. The control variable settings for each

+          real port PAE are unaffected, and will be used once

+          systemAccessControl is set to enabled.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.9.1";

+      }

+      leaf system-announcements {

+        type enumeration {

+          enum disabled {

+            description

+              "Causes each PAE to behave as if enabled were clear

+              for the PAE's Announcement functionality.";

+          }

+          enum enabled {

+            description

+              "Enables PAE system announcements.";

+          }

+        }

+        description

+          "Setting this control to Disabled causes each PAE to behave

+          as if enabled were clear for the PAE's Announcement

+          functionality. The independent controls for each PAE apply

+          if systemAnnouncements is Enabled.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.9.1";

+      }

+      leaf eapol-protocol-version {

+        type uint8;

+        config false;

+        description

+          "The EAPOL protocol version for this system.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.9.1, Clause 11.3";

+      }

+      leaf mka-version {

+        type uint8;

+        config false;

+        description

+          "The MKA protocol version for this system.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.9.1, Clause 11.3";

+      }

+      leaf-list pae {

+        type if:interface-ref;

+        config false;

+        description

+          "List of PAE references.";

+      }

+    }

+  }

+

+  /*

+   *  Port Authentication Entity (PAE) Nodes

+   */

+  augment "/if:interfaces/if:interface" {

+    when "if:type = 'ianaift:ethernetCsmacd' or

+          if:type = 'ianaift:ilan' or

+          if:type = 'ianaift:macSecControlledIF' or

+          if:type = 'ianaift:ptm' or

+          if:type = 'ianaift:bridge'" {

+      description

+        "Applies to the Controlled Port of SecY or PAC shim or

+        Ethernet related Interface.";

+    }

+    description

+      "Augment interface model with PAE configuration and

+        operational nodes.";

+    reference

+      "IEEE 802.1AE Clause 11.7 and IEEE 802.1X-2020 Clause 6.5 and

+      Clause 13.3.2";

+    container pae {

+      description

+        "Contains PAE configuration and operational related nodes.";

+      leaf pae-system {

+        type leafref {

+          path "/sys:system/dot1x:pae-system/dot1x:name";

+        }

+        description

+          "The PAE system that this PAE is a member of.";

+      }

+      leaf vp-enable {

+        when "../port-type = 'real-port' and

+              ../port-capabilities/virtual-ports = 'true'" {

+          description

+            "Applies when port is Real Port and virtual port

+            capabilities are supported.";

+        }

+        type boolean;

+        default "false";

+        description

+          "A real port's PAE may be configured to create virtual

+          ports to support multi-access LANs provided that MKA and

+          MACsec operation is enabled for that port.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.7";

+      }

+      container port-capabilities {

+        description

+          "Per port PAE feature capabilities.";

+        uses port-capabilities;

+      }

+

+      leaf port-name {

+        type if:interface-ref;

+        config false;

+        description

+          "Each PAE is uniquely identified by a port name.";

+        }

+      leaf port-number {

+        type dot1x-types:pae-if-index;

+        config false;

+        description

+          "Each PAE is uniquely identified by a port number. The

+          port number used is unique amongst all port names for the

+          system, and directly or indirectly identifies the

+          Uncontrolled Port that supports the PAE. If the PAE has

+          been dynamically instantiated to support an existing or

+          potential virtual port, this portNumber, the

+          uncontrolledPortNumber and the controlledPortNumber are

+          allocated by the real ports PAE, and this portNumber is the

+          uncontrolledPortNumber. If the PAE supports a real port,

+          this portNumber is the commonPortNumber for the associated

+          PAC or SecY.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.9.2";

+        }

+      leaf controlled-port-name {

+        type if:interface-ref;

+        config false;

+        description

+          "Each PAE is uniquely identified by a port name.";

+      }

+      leaf controlled-port-number {

+        type dot1x-types:pae-if-index;

+        config false;

+        description

+          "The port for the associated PAC or SecYs Controlled

+          Port.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.9.2";

+      }

+      leaf uncontrolled-port-name {

+        type if:interface-ref;

+        config false;

+        description

+          "The uncontrolled port name reference.";

+      }

+      leaf uncontrolled-port-number {

+        type dot1x-types:pae-if-index;

+        config false;

+        description

+          "The port for the associated PAC or SecYs Uncontrolled

+          Port.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.9.2";

+      }

+      leaf common-port-name {

+        type if:interface-ref;

+        config false;

+        description

+          "The common port name reference.";

+      }

+      leaf common-port-number {

+        type dot1x-types:pae-if-index;

+        config false;

+        description

+          "The port for the associated PAC or SecYs Common Port. All

+          the virtual ports created for a given real port share the

+          same Common Port and commonPortNumber.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.9.2";

+      }

+      leaf port-type {

+        type enumeration {

+          enum real-port {

+            description

+              "Real Port type.";

+          }

+          enum virtual-port {

+            description

+              "Virtual Port type.";

+          }

+        }

+        //config false;

+        description

+          "The port type of the PAE.";

+        reference

+          "IEEE 802.1X-2020 Clause 12.9.2";

+      }

+      container virtual-port {

+        when "../port-capabilities/virtual-ports = 'true'" {

+          description

+            "Applies when the virtual ports port capability is

+            supported.";

+        }

+        config false;

+        description

+          "Contains Virtual Port operational state information.";

+        leaf max {

+          when "../../port-type = 'real-port'" {

+            description

+              "Applies when Port is a Real Port.";

+          }

+          type uint32;

+          description

+            "The guaranteed maximum number of virtual ports.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.9.2";

+        }

+        leaf current {

+          when "../../port-type = 'real-port'" {

+            description

+              "Applies when Port is a Real Port.";

+          }

+          type yang:gauge32;

+          description

+            "The current number of virtual ports.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.9.2";

+        }

+        leaf start {

+          when "../../port-type = 'virtual-port'" {

+            description

+              "Applies when Port is a Virtual Port.";

+          }

+          type boolean;

+          description

+            "Set if the virtual port was created by receipt of an

+            EAPOL-Start frame.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.9.7";

+        }

+        leaf peer-address {

+          when "../../port-type = 'virtual-port'" {

+            description

+              "Applies when Port is a Virtual Port.";

+          }

+          type ieee:mac-address;

+          description

+            "The source MAC Address of the EAPOL-Start (if vpStart is

+            set).";

+          reference

+            "IEEE 802.1X-2020 Clause 12.9.7";

+        }

+      }

+

+      container supplicant {

+        when "../port-type = 'real-port' and

+              ../port-capabilities/supp = 'true'" {

+          description

+            "Applies to Real Port when supplicant port capabilities

+            are supported.";

+        }

+        description

+          "Contains the configuration nodes for the Supplicant PAE

+          associated with each port.";

+        leaf held-period {

+          type uint16;

+          units seconds;

+          default "60";

+          description

+            "The initial value of the timer used to impose a wait

+            period after a failed authentication attempt, before

+            another attempt is permitted.";

+          reference

+            "IEEE 802.1X-2020 Clause 8.6";

+        }

+        leaf retry-max {

+          type uint32;

+          default "2";

+          description

+            "Specifies the maximum number of re-authentication

+            attempts on an authenticator port before port is

+            unauthorized.";

+          reference

+            "IEEE 802.1X-2020 Clause 8.7";

+        }

+

+        leaf enabled {

+          type boolean;

+          config false;

+          description

+            "Set by PACP if the PAE can provide authentication. Will

+            be FALSE if the Port is not enabled, if the functionality

+            provided by the PAE is not available, or not implemented,

+            or the control variable enable has been cleared by

+            management, e.g. because the application scenario

+            authenticates a user and there is no user logged on.";

+          reference

+            "IEEE 802.1X-2020 Clause 8.4";

+        }

+        leaf authenticate {

+          type boolean;

+          config false;

+          description

+            "Set by the PAE client to request authentication, and

+            allows reauthentication while set. Cleared by the client

+            to revoke authentication. To enable authentication the

+            client also needs to clear failed (if set).";

+          reference

+            "IEEE 802.1X-2020 Clause 8.4";

+        }

+        leaf authenticated {

+          type boolean;

+          config false;

+          description

+            "Set by PACP if the PAE is currently authenticated, and

+            cleared if the authentication fails or is revoked.";

+          reference

+            "IEEE 802.1X-2020 Clause 8.4";

+        }

+        leaf failed {

+          type boolean;

+          config false;

+          description

+            "Set by PACP if the authentication has failed or has been

+            terminated. The cause could be a Fail returned by EAP,

+            either immediately or following a reauthentication, an

+            excessive number of attempts to authenticate (either

+            immediately or upon reauthentication), or the client

+            deasserting authenticate. The PACP will clear

+            authenticated as well as setting failed. Any ongoing

+            authentication exchange will be terminated (by the state

+            machines) if enable becomes FALSE and enabled will be

+            cleared, but failed will not be set.";

+          reference

+            "IEEE 802.1X-2020 Clause 8.4";

+        }

+      }

+

+      container authenticator {

+        when "../port-capabilities/auth = 'true'" {

+          description

+            "Applies when the Authenticator is supported.";

+        }

+        description

+          "Contains configuration nodes for the Authenticator PAE

+          associated with each port.";

+        leaf quiet-period {

+          type uint16;

+          units seconds;

+          default "60";

+          description

+            "Number of seconds that the authenticator remains in the quiet

+            state following a failed authentication exchange with the

+            supplicant.";

+          reference

+            "IEEE 802.1X-2020 Clause 8.6, Figure 12-3";

+        }

+        leaf reauth-period {

+          type uint32;

+          units seconds;

+          default "3600";

+          description

+            "This object indicates the time period of the

+            reauthentication to the supplicant.";

+          reference

+            "IEEE 802.1X-2020 Clause 8.6, Figure 12-3";

+        }

+        leaf reauth-enable {

+          type boolean;

+          default "false";

+          description

+            "Re-authentication is enabled or not.";

+          reference

+            "IEEE 802.1X-2020 Clause 5.8 and 8.9";

+        }

+        leaf retry-max {

+          type uint32;

+          default "2";

+          description

+            "Specifies the maximum number of re-authentication

+            attempts on an authenticator port before port is

+            unauthorized.";

+          reference

+            "IEEE 802.1X-2020 Clause 8.9";

+        }

+

+        leaf enabled {

+          type boolean;

+          config false;

+          description

+            "Set by PACP if the PAE can provide authentication. Will

+            be FALSE if the Port is not enabled, if the functionality

+            provided by the PAE is not available, or not implemented,

+            or the control variable enable has been cleared by

+            management, e.g. because the application scenario

+            authenticates a user and there is no user logged on.";

+          reference

+            "IEEE 802.1X-2020 Clause 8.4";

+        }

+        leaf authenticate {

+          type boolean;

+          config false;

+          description

+            "Set by the PAE client to request authentication, and

+            allows reauthentication while set. Cleared by the client

+            to revoke authentication. To enable authentication the

+            client also needs to clear failed (if set).";

+          reference

+            "IEEE 802.1X-2020 Clause 8.4";

+        }

+        leaf authenticated {

+          type boolean;

+          config false;

+          description

+            "Set by PACP if the PAE is currently authenticated, and

+            cleared if the authentication fails or is revoked.";

+          reference

+            "IEEE 802.1X-2020 Clause 8.4";

+        }

+        leaf failed {

+          type boolean;

+          config false;

+          description

+            "Set by PACP if the authentication has failed or has been

+            terminated. The cause could be a Fail returned by EAP,

+            either immediately or following a reauthentication, an

+            excessive number of attempts to authenticate (either

+            immediately or upon reauthentication), or the client

+            deasserting authenticate. The PACP will clear

+            authenticated as well as setting failed. Any ongoing

+            authentication exchange will be terminated (by the state

+            machines) if enable becomes FALSE and enabled will be

+            cleared, but failed will not be set.";

+          reference

+            "IEEE 802.1X-2020 Clause 8.4";

+        }

+      }

+

+      container kay {

+        when "../port-capabilities/mka = 'true'" {

+          description

+            "Applies when the MKA port capability is supported.";

+        }

+        description

+          "Contains configuration system level information for each

+          Interface supported by the KaY (Key Aggreement Entity).";

+        leaf enable {

+          type boolean;

+          default "false";

+          description

+            "Set by management to enable (clear to disable) the use

+            of MKA.";

+          reference

+            "IEEE 802.1X-2020 Clause 9.16";

+        }

+        container actor {

+          description

+            "Contains configuration and operational nodes

+            associated with the actor";

+          leaf priority {

+            type uint8;

+            description

+              "The Key Server Priority for all the ports actors.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf sci {

+            type dot1x-types:sci-list-entry;

+            config false;

+            description

+              "The SCI assigned by the system to the port (applies

+              to all the ports actors).";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+        }

+        container key-server {

+          description

+            "Contains configuration and operational nodes

+            associated with the key

+            server.";

+          leaf priority {

+            type uint8;

+            description

+              "The Key Server Priority for the Key Server for the

+              principal actor. Matches the actorPriority if the

+              actor is the Key Server";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf sci {

+            type dot1x-types:sci-list-entry;

+            config false;

+            description

+              "The SCI for Key Server for the principal actor. Null

+              if there is no principal actor, or that actor has no

+              live peers. Matches the actorSCI if the actor is the

+              Key Server.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+        }

+        container group {

+          description

+            "Contains configuration nodes associated with the

+            group.";

+          leaf join {

+            type boolean;

+            default "true";

+            description

+              "Set if the KaY will accept Group CAKs distributed by

+              MKA.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf form {

+            type boolean;

+            default "false";

+            description

+              "Set if the KaY will attempt to use point-to-point CAs

+              to distribute a Group CAK, if its principal actor is

+              the Key Server for all the point-to-point CAs.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf new {

+            type boolean;

+            default "false";

+            description

+              "Set by management if a new Group CAK is to be

+              distributed, if the principal actor is the Key Server

+              for all point-to-point CAs. Cleared by the KaY when

+              distribution is complete.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+        }

+

+        container macsec {

+          when "../../port-capabilities/macsec = 'true'" {

+            description

+              "Applies when the MACsec port capability is

+              supported.";

+          }

+          description

+            "Contains configuration and operational nodes

+            associated with macsec.";

+          leaf capable {

+            type boolean;

+            description

+              "Set if MACsec is implemented.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf desired {

+            type boolean;

+            default "true";

+            description

+              "Set if the participant desires MACsec frame protection.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+

+          leaf protect {

+            type boolean;

+            config false;

+            description

+              "As used by the CP state machine, see 12.4.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf validate {

+            type boolean;

+            config false;

+            description

+              "As used by the CP state machine, see 12.4.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf replay-protect {

+            type boolean;

+            config false;

+            description

+              "As used by the CP state machine, see 12.4.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+        }

+        leaf suspend-on-request {

+          type boolean;

+          default "true";

+          description

+            "Set by management to allow the KaYs principal actor to

+            initiate a suspension if it is the Key Server and another

+            participant has requested a suspension.";

+        }

+        leaf suspend-for {

+          type uint8;

+          default "0";

+          description

+            "Set by management to a non-zero number of seconds

+            between 1 and MKA Suspension Limit to initiate a

+            suspension (9.18) of that duration (if the KaYs principal

+            actor is the Key Server) or to request a suspension

+            (otherwise).";

+          reference

+            "IEEE 802.1X-2020 Clause 9.18";

+        }

+

+        leaf suspended-while {

+          type uint8;

+          config false;

+          description

+            "Read by management to determine if a suspension is in

+            progress and (when available) to discover the remaining

+            duration of that suspension";

+          reference

+            "IEEE 802.1X-2020 Clause 9.18";

+        }

+        leaf active {

+          type boolean;

+          config false;

+          description

+            "Set if there is at least one active actor, transmitting

+            MKPDUs.";

+          reference

+            "IEEE 802.1X-2020 Clause 9.16";

+        }

+        leaf authenticated {

+          type boolean;

+          config false;

+          description

+            "Set if the principal actor, i.e. the participant that

+            has the highest priority Key Server and one or more live

+            peers, has determined that Controlled Port communication

+            should proceed without MACsec.";

+          reference

+            "IEEE 802.1X-2020 Clause 9.16";

+        }

+        leaf secured {

+          type boolean;

+          config false;

+          description

+            "Set if the principal actor has determined that

+            communication should use MACsec.";

+          reference

+            "IEEE 802.1X-2020 Clause 9.16";

+        }

+        leaf failed {

+          type boolean;

+          config false;

+          description

+            "Cleared when authenticated or secured are set, set if

+            the latter are clear and MKA Life Time has elapsed since

+            an MKA participant was last created.";

+          reference

+            "IEEE 802.1X-2020 Clause 9.16";

+        }

+        container key-number {

+            config false;

+          description

+            "Contains operation state nodes for Key Numbers.";

+          leaf tx {

+            type dot1x-types:mka-kn;

+            description

+              "The Key Number assigned by the Key Server to the SAK

+              currently being used for transmission. Null if MACsec

+              is not being used.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf rx {

+            type dot1x-types:mka-kn;

+            description

+              "The Key Number assigned by the Key Server to the

+              oldest SAK currently being used for reception. The same

+              as txKN if a single SAK is currently in use (as will

+              most often be the case). Null if MACsec is not being

+              used.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+        }

+        container association-number {

+            config false;

+          description

+            "Contains operation state nodes for Association

+            Numbers.";

+          leaf tx {

+            type dot1x-types:mka-an;

+            description

+              "The Association Number assigned by the Key Server for

+              use with txKN. Zero if MACsec is not in use.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf rx {

+            type dot1x-types:mka-an;

+            description

+              "The Association Number assigned by the Key Server for

+              use with rxKN. The same as txAN if a single SAK is

+              currently in use. Zero if MACsec is not in use.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+        }

+

+        list participants {

+          key "participant";

+          description

+            "Contains list of configuration and operational nodes

+            for each MKA participant supported by the KaY MKA

+            entity.";

+          leaf participant {

+            type uint32;

+            description

+              "Key into Participants list.";

+          }

+          leaf cached {

+            type boolean;

+            description

+              "Set by the KaY if the participants parameters are

+              cached. If set, cached can be cleared by management to

+              remove the participant from the cache.";

+          }

+          leaf active {

+            type boolean;

+            default "false";

+            description

+              "Set if the participant is active, i.e., is currently

+              transmitting periodic MKPDUs.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf retain {

+            type boolean;

+            default "false";

+            description

+              "Set by management to retain the participant in the

+              cache, even if the KaY would normally remove it (due to

+              lack of use for example).";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf activate {

+            type enumeration {

+              enum default {

+                description

+                  "The participant is from cached entries created by

+                  the KaY as part of normal operation, without

+                  explicit management, and is activated according to

+                  the implementation dependent policies of the KaY.";

+              }

+              enum disabled {

+                description

+                  "The participant allows the cache information to be

+                  retained, but disabled for indefinite period.";

+                  }

+              enum on-oper-up {

+                description

+                  "Causing the participant to be activated when the

+                  PAEs part is activated, and therefore when the SecY

+                  or PACs Common Port becomes operational.";

+              }

+              enum always {

+                description

+                  "Causing the participant to remain active all the

+                  time, even in the continued absence of partners.";

+              }

+            }

+            default "default";

+            description

+              "Controls when the participant is activated. Cached

+              entries created by the KaY as part of normal operation,

+              without explicit management, have the value Default,

+              and are activated according to the implementation

+              dependent policies of the KaY. This variable can be

+              set to any of its values by management. Disabled allows

+              the cache entry to be retained, but disabled for an

+              indefinite period. OnOperUp causes the participant to

+              be activated when the PAEs port (and therefore when the

+              SecY or PACs Common Port becomes MAC_Operational).

+              Always causes the participant to remain active all the

+              time, even in the continued absence of partners. If the

+              value is changed to Disabled or OnOperUp, the

+              participant ceases operation immediately and receipt of

+              MKPDUs with a matching CKN during a subsequent period

+              of twice MKA Life Time will not cause the participant

+              to become active once more.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+

+          container peers {

+            config false;

+            description

+              "Contains operational state nodes associated with the

+              Peers.";

+            leaf-list live {

+              type dot1x-types:sci-list-entry;

+                description

+                  "A list of the SCIs of the participants live

+                  peers.";

+                reference

+                  "IEEE 802.1X-2020 Clause 9.16";

+            }

+            leaf-list potential {

+              type dot1x-types:sci-list-entry;

+              description

+                "A list of the SCIs of the participants potential

+                peers.";

+              reference

+                "IEEE 802.1X-2020 Clause 9.16";

+            }

+          }

+          leaf ckn {

+            type dot1x-types:pae-ckn;

+            config false;

+            description

+              "The secure Connectivity Association Key Name for the

+              participant.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf kmd {

+            type dot1x-types:pae-kmd;

+            config false;

+            description

+              "The Key Management Domain for the participant.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf nid {

+            type dot1x-types:pae-nid;

+            config false;

+            description

+              "The NID for the participant.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf auth-data {

+            type dot1x-types:pae-auth-data;

+            config false;

+            description

+              "Authorization data associated with the secure

+              Connectivity Association Key.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf principal {

+            type boolean;

+            config false;

+            description

+              "Set if the participant is currently the principal

+              actor.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+          leaf dist-ckn {

+            type dot1x-types:pae-ckn;

+            config false;

+            description

+              "The CKN for the last CAK distributed (either by the

+              actor or one of its partners). Null if this participant

+              has not been used to distribute a CAK.";

+            reference

+              "IEEE 802.1X-2020 Clause 9.16";

+          }

+        }

+      }

+

+      container logon-nid {

+        description

+          "Contains the configuration and operational related NID

+            information for the Logon Process. The Logon Process may

+            use Network Identifiers (NIDs) to manage its use of

+            authentication credentials, cached CAKs, and

+            announcements.";

+        leaf selected {

+          type dot1x-types:pae-nid;

+          description

+            "The NID currently configured for use by an access

+            controlled port when transmitting EAPOL-Start frames.

+            Defaults to the null NID.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.5";

+        }

+        uses nid-group;

+

+        leaf connected {

+          type dot1x-types:pae-nid;

+          config false;

+          description

+            "The NID associated with the current connectivity

+            (possibly unauthenticated) provided by the operation of

+            the CP state machine.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.5";

+        }

+        leaf requested {

+          type dot1x-types:pae-nid;

+          config false;

+          description

+            "The NID marked as Access requested in announcements, as

+            determined from EAPOL-Start frames. Defaults to the

+            selectedNID.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.5";

+        }

+      }

+

+      container announcer {

+        when "../port-capabilities/announcements = 'true'" {

+          description

+            "Applies when the Announcements port capabilities are

+            supported.";

+        }

+        description

+          "Contains the configuration related Announcer

+          information.";

+        leaf enable {

+          type boolean;

+          default "false";

+          description

+            "A boolean indicating if the announcer is enabled or

+            not.";

+          reference

+            "IEEE 802.1X-2020 Clause 10.4";

+        }

+        list announce {

+          key "announces";

+          description

+            "Contains the configuration related status information

+            that the Announcers announce in the network announcement

+            of the PAE system.";

+          leaf announces {

+            type uint32;

+            description

+              "Key into Announce list.";

+          }

+          uses nid-group;

+

+          leaf nid {

+            type dot1x-types:pae-nid;

+            config false;

+            description

+              "The NID information to identify a received network

+              announcement for the PAE.";

+            reference

+              "IEEE 802.1X-2020 Clause 10.4";

+          }

+          leaf access-status {

+            type dot1x-types:pae-access-status;

+            config false;

+            description

+              "Access Status reflects connectivity as a result of

+              authentication attempts, and might be set directly by

+              the system or configured by AAA protocols.";

+            reference

+              "IEEE 802.1X-2020 Clause 10.4, Clause 12.5";

+          }

+        }

+      }

+

+      container listener {

+        when "../port-capabilities/listener = 'true'" {

+          description

+            "Applies when the Listener port capability is

+            supported.";

+        }

+        description

+          "Contains the configuration and operational Listener

+            node related information.";

+        leaf enable {

+          type boolean;

+          default "false";

+          description

+            "A boolean indicating if the listener is enabled or

+            not.";

+          reference

+            "IEEE 802.1X-2020 Clause 10.4";

+        }

+

+        list announcement {

+          key "announcements";

+          config false;

+          description

+            "A list containing the operational status information

+            that the Listeners receive in the network announcement of

+            the PAE system.";

+          leaf announcements {

+            type uint32;

+            description

+              "The key into the list of Announce nodes.";

+          }

+          leaf nid {

+            type dot1x-types:pae-nid;

+            description

+              "The NID information to identify a received network

+              announcement for the PAE.";

+            reference

+              "IEEE 802.1X-2020 Clause 10.4";

+          }

+          leaf kmd {

+            type dot1x-types:pae-kmd;

+            description

+              "The KMD information for this received network

+              announcement of the PAE.";

+            reference

+              "IEEE 802.1X-2020 Clause 10.4";

+          }

+          leaf specific {

+            type boolean;

+            description

+              "This object indicates the received announcement

+              information was specific to the receiving PAE, not

+              generic for all systems attached to the LAN.";

+            reference

+              "IEEE 802.1X-2020 Clause 10.4";

+          }

+          leaf access-status {

+            type dot1x-types:pae-access-status;

+            description

+              "The object information reflects connectivity as a

+              result of authentication attempts for this received

+              network announcement of the PAE.";

+            reference

+              "IEEE 802.1X-2020 Clause 10.4";

+          }

+          leaf requested-nid {

+            type boolean;

+            description

+              "The authenticated access has been requested for this

+              particular NID or not.";

+            reference

+              "IEEE 802.1X-2020 Clause 10.4";

+          }

+          leaf unauthenticated-access {

+            type dot1x-types:pae-access-status;

+            description

+              "The access capability of the ports clients without

+              authentication in this received network announcement of

+              the PAE";

+            reference

+              "IEEE 802.1X-2020 Clause 10.4";

+          }

+          leaf access-capabilities {

+            type dot1x-types:pae-nid-capabilities;

+            description

+              "The authentication and protection capabilities

+              supported for the NID.";

+            reference

+              "IEEE 802.1X-2020 Clause 10.4";

+          }

+          list cipher-suites {

+            key "index";

+            description

+              "A table contains the Cipher Suites information that

+              the Listeners receive in the network announcement of

+              the PAE system.";

+            reference

+              "IEEE 802.1X-2020 Clause 10.4";

+            leaf index {

+              type uint16;

+              description

+                "Key into cipher suite entry.";

+            }

+            leaf cipherSuite {

+              type string;

+              description

+                "cipher Suite identifier.";

+            }

+            leaf cipherSuiteCapability {

+              type uint32;

+              description

+                "Cipher Suite capability.";

+            }

+          }

+        }

+      }

+

+      container eapol-statistics {

+        config false;

+        description

+          "Contains operational EAPOL statistics.";

+        leaf invalid-eapol-frame-rx {

+          when "../../port-type = 'real-port'" {

+            description

+              "Applies when port is Real Port.";

+          }

+          type yang:counter32;

+          description

+            "The number of invalid EAPOL frames of any type that

+            have been received by this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.1";

+        }

+        leaf eap-length-error-frames-rx {

+          when "../../port-type = 'real-port'" {

+            description

+              "Applies when port is Real Port.";

+          }

+          type yang:counter32;

+          description

+            "The number of EAPOL frames that the Packet Body Length

+            does not match a Packet Body that is contained within the

+            octets of the received EAPOL MPDU in this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.1";

+        }

+        leaf eapol-announcements-rx {

+          when "../../port-type = 'real-port'" {

+            description

+              "Applies when port is Real Port.";

+          }

+          type yang:counter32;

+          description

+            "The number of EAPOL-Announcement frames that have been

+            received by this PAE";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.1";

+        }

+        leaf eapol-announce-reqs-rx {

+          when "../../port-type = 'real-port'" {

+            description

+              "Applies when port is Real Port.";

+          }

+          type yang:counter32;

+          description

+            "The number of EAPOL-Announcement-Req frames that have

+            been received by this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.1";

+        }

+        leaf eapol-port-unavailable {

+          when "../../port-type = 'real-port' and

+                ../../port-capabilities/virtual-ports = 'true'" {

+            description

+              "Applies when port is Real Port and when the virtual

+              ports capability is supported.";

+          }

+          type yang:counter32;

+          description

+            "The number of EAPOL frames that are discarded because

+            their processing would require the creation of a virtual

+            port, for which there are inadequate or constrained

+            resources, or an existing virtual port and no such port

+            currently exists. If virtual port is not supported, this

+            object should be always 0.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.1";

+        }

+        leaf eapol-start-frames-rx {

+          type yang:counter32;

+          description

+            "The number of EAPOL-Start frames that have been received

+            by this PAE";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.1";

+        }

+        leaf eapol-eap-frames-rx {

+          type yang:counter32;

+          description

+            "The number of EAPOL-EAP frames that have been received

+            by this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.1";

+        }

+        leaf eapol-logoff-frames-rx {

+          type yang:counter32;

+          description

+            "The number of EAPOL-Logoff frames that have been

+            received by this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.1";

+        }

+        leaf eapol-mk-no-cfn {

+          type yang:counter32;

+          description

+            "The number of MKPDUs received with MKA not enabled or

+            CKN not recognized in this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.1";

+        }

+        leaf eapol-mk-invalid-frames-rx {

+          type yang:counter32;

+          description

+            "The number of MKPDUs failing in message authentication

+            on receipt process in this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.1";

+        }

+        leaf last-eapol-frame-source {

+          when "../../port-type = 'real-port'" {

+            description

+              "Applies when port is Real Port.";

+          }

+          type ieee:mac-address;

+          description

+            "The source MAC address of last received EAPOL frame by

+            this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.2";

+        }

+        leaf last-eapol-frame-version {

+          type uint8;

+          description

+            "The version of last received EAPOL frame by this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.2";

+        }

+        leaf eapol-supp-eap-frames-tx {

+          when "../../port-type = 'real-port'" {

+            description

+              "Applies when port is Real Port.";

+          }

+          type yang:counter32;

+          description

+            "The number of EAPOL-EAP frames that have been

+            transmitted by the supplicant of this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.3";

+        }

+        leaf eapol-logoff-frames-tx {

+          when "../../port-type = 'real-port'" {

+            description

+              "Applies when port is Real Port.";

+          }

+          type yang:counter32;

+          description

+            "The number of EAPOL-Logoff frames that have been

+            transmitted by this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.3";

+        }

+        leaf eapol-announcements-tx {

+          when "../../port-type = 'real-port'" {

+            description

+              "Applies when port is Real Port.";

+          }

+          type yang:counter32;

+          description

+            "The number of EAPOL-Announcement frames that have been

+            transmitted by this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.3";

+        }

+        leaf eapol-announce-reqs-tx {

+          when "../../port-type = 'real-port'" {

+            description

+              "Applies when port is Real Port.";

+          }

+          type yang:counter32;

+          description

+            "The number of EAPOL-Announcement-Req frames that have

+            been transmitted by this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.3";

+        }

+        leaf eapol-start-frames-tx {

+          type yang:counter32;

+          description

+            "The number of EAPOL-Start frames that have been

+            transmitted by this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.3";

+        }

+        leaf eapol-auth-eap-frames-tx {

+          type yang:counter32;

+          description

+            "The number of EAPOL-EAP frames that have been

+            transmitted by the authenticator of this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.3";

+        }

+        leaf eapol-mka-frames-tx {

+          type yang:counter32;

+          description

+            "The number of EAPOL-MKA frames with no CKN information

+            that have been transmitted by this PAE.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.8.3";

+        }

+      }

+

+      container logon-process {

+        description

+          "Contains configuration and operational system level

+            information for each port to support the Logon Process(es)

+            status information.";

+        leaf logon {

+          type boolean;

+          default "false";

+          description

+            "A boolean indicating if the logon-process is enabled or

+            not.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.5";

+        }

+

+        leaf connect {

+          type enumeration {

+            enum pending {

+              description

+                "Prevent connectivity by clearing the

+                controlledPortEnabled parameter.";

+            }

+            enum unauthenticated {

+              description

+                "Provide unsecured connectivity, setting

+                controlledPortEnabled.";

+            }

+            enum authenticated {

+              description

+                "Provide unsecured connectivity with authorization

+                data, setting controlledPortEnabled.";

+            }

+            enum secure {

+              description

+                "Provide secure connectivity, using SAKs provided by

+                the KaY (when available) and setting

+                controlledPortEnabled when those keys are installed

+                and in use, as specified in detail by the CP state

+                machine.";

+            }

+          }

+          config false;

+          description

+            "The Logon Process sets this variable to one of the

+            above values.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.3";

+        }

+        leaf port-valid {

+          type boolean;

+          config false;

+          description

+            "Set if Controlled Port communication is secured as

+            specified by the MACsec control macsecProtect.";

+          reference

+            "IEEE 802.1X-2020 Clause 12.3";

+        }

+        list session-statistics {

+          key "session-id";

+          config false;

+          description

+            "Contains operational state nodes associated with the

+            session statistics.";

+          leaf session-id {

+            type dot1x-types:pae-session-id;

+            description

+              "Key into list of session statistics.";

+            reference

+              "IEEE 802.1X-2020 Clause 12.5.1";

+          }

+          leaf user-name {

+            type dot1x-types:pae-session-user-name;

+            description

+              "User name of the session.";

+            reference

+              "IEEE 802.1X-2020 Clause 12.5.1";

+          }

+          leaf octets-rx {

+            type yang:counter64;

+            description

+              "The number of octets received in this session of this

+              PAE.";

+            reference

+              "IEEE 802.1X-2020 Clause 12.5.1";

+          }

+          leaf octets-tx {

+            type yang:counter64;

+            description

+              "The number of octets transmitted in this session of

+              this PAE.";

+            reference

+              "IEEE 802.1X-2020 Clause 12.5.1";

+          }

+          leaf frames-rx {

+            type yang:counter64;

+            description

+              "The number of packets received in this session of

+              this PAE.";

+            reference

+              "IEEE 802.1X-2020 Clause 12.5.1";

+          }

+          leaf frames-tx {

+            type yang:counter64;

+            description

+              "The number of packets transmitted in this session of

+              this PAE.";

+            reference

+              "IEEE 802.1X-2020 Clause 12.5.1";

+          }

+          leaf time {

+            type uint32;

+            units "seconds";

+            description

+              "Session Time. The duration of the session in

+              seconds.";

+            reference

+              "IEEE 802.1X-2020 Clause 12.5.1";

+          }

+          leaf terminate-cause {

+            type enumeration {

+              enum common_port_MAC_operational_false {

+                description

+                  "Common Port for this PAE is not operational.";

+              }

+              enum system_access_control_disabled {

+                description

+                  "The system-access-control node of the pae-system

+                  is disabled or initialization process of this PAE

+                  is invoked.";

+              }

+              enum eapol_logoff_rx {

+                description

+                  "The PAE has received EAPOL-Logoff frame.";

+              }

+              enum eap_reauthentication_failure {

+                description

+                  "EAP reauthentication has failed.";

+              }

+              enum mka-failure_termination {

+                description

+                  "MKA failure or other MKA termination.";

+              }

+              enum new_session-beginning {

+                description

+                  "New session beginning.";

+              }

+              enum not_terminated_yet {

+                description

+                  "Not Terminated Yet.";

+              }

+            }

+            description

+              "The reason for the session termination.";

+            reference

+              "IEEE 802.1X-2020 Clause 12.5.1";

+          }

+        }

+      }

+    }

+  }

+

+  container nid-group {

+    description

+      "Contains both configuration and operational state nodes

+      associated with the PAE NID group.";

+    uses nid-group;

+  }

+

+}

diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ieee802-types.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ieee802-types.yang
new file mode 100644
index 0000000..791287a
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ieee802-types.yang
@@ -0,0 +1,273 @@
+module ieee802-types {
+  namespace urn:ieee:std:802.1Q:yang:ieee802-types;
+  prefix ieee;
+  organization
+    "IEEE 802.1 Working Group";
+  contact
+    "WG-URL: http://ieee802.org/1/
+    WG-EMail: stds-802-1-l@ieee.org
+
+    Contact: IEEE 802.1 Working Group Chair
+    Postal: C/O IEEE 802.1 Working Group
+            IEEE Standards Association
+            445 Hoes Lane
+            Piscataway, NJ 08854
+            USA
+
+    E-mail: stds-802-1-chairs@ieee.org";
+  description
+    "This module contains a collection of generally useful derived
+    data types for IEEE YANG models.";
+  revision 2020-06-04 {
+    description
+      "Published as part of IEEE Std 802.1Qcx-2020.
+      Second version.";
+    reference
+      "IEEE Std 802.1Qcx-2020, Bridges and Bridged Networks -
+      YANG Data Model for Connectivity Fault Management.";
+  }
+  revision 2018-03-07 {
+    description
+      "Published as part of IEEE Std 802.1Q-2018.
+      Initial version.";
+    reference
+      "IEEE Std 802.1Q-2018, Bridges and Bridged Networks.";
+  }
+
+  typedef mac-address {
+    type string {
+      pattern "[0-9a-fA-F]{2}(-[0-9a-fA-F]{2}){5}";
+    }
+    description
+      "The mac-address type represents a MAC address in the canonical
+      format and hexadecimal format specified by IEEE Std 802. The
+      hexidecimal representation uses uppercase characters.";
+    reference
+      "3.1 of IEEE Std 802-2014
+      8.1 of IEEE Std 802-2014";
+  }
+
+  typedef chassis-id-subtype-type {
+    type enumeration {
+      enum chassis-component {
+        value 1;
+        description
+          "Represents a chassis identifier based on the value of
+          entPhysicalAlias object (defined in IETF RFC 2737) for a
+          chassis component (i.e., an entPhysicalClass value of
+          chassis(3))";
+      }
+      enum interface-alias {
+        value 2;
+        description
+          "Represents a chassis identifier based on the value of
+          ifAlias object (defined in IETF RFC 2863) for an interface
+          on the containing chassis.";
+      }
+      enum port-component {
+        value 3;
+        description
+          "Represents a chassis identifier based on the value of
+          entPhysicalAlias object (defined in IETF RFC 2737) for a
+          port or backplane component (i.e., entPhysicalClass value of
+          port(10) or backplane(4)), within the containing chassis.";
+      }
+      enum mac-address {
+        value 4;
+        description
+          "Represents a chassis identifier based on the value of a
+          unicast source address (encoded in network byte order and
+          IEEE 802.3 canonical bit order), of a port on the containing
+          chassis as defined in IEEE Std 802-2001.";
+      }
+      enum network-address {
+        value 5;
+        description
+          "Represents a chassis identifier based on a network address,
+          associated with a particular chassis.  The encoded address is
+          actually composed of two fields.  The first field is a
+          single octet, representing the IANA AddressFamilyNumbers
+          value for the specific address type, and the second field is
+          the network address value.";
+      }
+      enum interface-name {
+        value 6;
+        description
+          "Represents a chassis identifier based on the value of
+          ifName object (defined in IETF RFC 2863) for an interface
+          on the containing chassis.";
+      }
+      enum local {
+        value 7;
+        description
+          "Represents a chassis identifier based on a locally defined
+          value.";
+      }
+    }
+    description
+      "The source of a chassis identifier.";
+    reference
+      "LLDP MIB 20050506";
+  }
+
+  typedef chassis-id-type {
+    type string {
+      length "1..255";
+    }
+    description
+      "The format of a chassis identifier string. Objects of this type
+      are always used with an associated lldp-chassis-is-subtype
+      object, which identifies the format of the particular
+      lldp-chassis-id object instance.
+
+      If the associated lldp-chassis-id-subtype object has a value of
+      chassis-component, then the octet string identifies
+      a particular instance of the entPhysicalAlias object
+      (defined in IETF RFC 2737) for a chassis component (i.e.,
+      an entPhysicalClass value of chassis(3)).
+
+      If the associated lldp-chassis-id-subtype object has a value
+      of interface-alias, then the octet string identifies
+      a particular instance of the ifAlias object (defined in
+      IETF RFC 2863) for an interface on the containing chassis.
+      If the particular ifAlias object does not contain any values,
+      another chassis identifier type should be used.
+
+      If the associated lldp-chassis-id-subtype object has a value
+      of port-component, then the octet string identifies a
+      particular instance of the entPhysicalAlias object (defined
+      in IETF RFC 2737) for a port or backplane component within
+      the containing chassis.
+
+      If the associated lldp-chassis-id-subtype object has a value of
+      mac-address, then this string identifies a particular
+      unicast source address (encoded in network byte order and
+      IEEE 802.3 canonical bit order), of a port on the containing
+      chassis as defined in IEEE Std 802-2001.
+
+      If the associated lldp-chassis-id-subtype object has a value of
+      network-address, then this string identifies a particular
+      network address, encoded in network byte order, associated
+      with one or more ports on the containing chassis.  The first
+      octet contains the IANA Address Family Numbers enumeration
+      value for the specific address type, and octets 2 through
+      N contain the network address value in network byte order.
+
+      If the associated lldp-chassis-id-subtype object has a value
+      of interface-name, then the octet string identifies
+      a particular instance of the ifName object (defined in
+      IETF RFC 2863) for an interface on the containing chassis.
+      If the particular ifName object does not contain any values,
+      another chassis identifier type should be used.
+
+      If the associated lldp-chassis-id-subtype object has a value of
+      local, then this string identifies a locally assigned
+      Chassis ID.";
+    reference
+      "LLDP MIB 20050506";
+  }
+
+  typedef port-id-subtype-type {
+    type enumeration {
+      enum interface-alias {
+        value 1;
+        description
+          "Represents a port identifier based on the ifAlias
+          MIB object, defined in IETF RFC 2863.";
+      }
+      enum port-component {
+        value 2;
+        description
+          "Represents a port identifier based on the value of
+          entPhysicalAlias (defined in IETF RFC 2737) for a port
+          component (i.e., entPhysicalClass value of port(10)),
+          within the containing chassis.";
+      }
+      enum mac-address {
+        value 3;
+        description
+          "Represents a port identifier based on a unicast source
+          address (encoded in network byte order and IEEE 802.3
+          canonical bit order), which has been detected by the agent
+          and associated with a particular port (IEEE Std 802-2001).";
+      }
+      enum network-address {
+        value 4;
+        description
+          "Represents a port identifier based on a network address,
+          detected by the agent and associated with a particular
+          port.";
+      }
+      enum interface-name {
+        value 5;
+        description
+          "Represents a port identifier based on the ifName MIB object,
+          defined in IETF RFC 2863.";
+      }
+      enum agent-circuit-id {
+        value 6;
+        description
+          "Represents a port identifier based on the agent-local
+          identifier of the circuit (defined in RFC 3046), detected by
+          the agent and associated with a particular port.";
+      }
+      enum local {
+        value 7;
+        description
+          "Represents a port identifier based on a value locally
+          assigned.";
+      }
+    }
+    description
+      "The source of a particular type of port identifier used
+      in the LLDP YANG module.";
+  }
+
+  typedef port-id-type {
+    type string {
+      length "8";
+    }
+    description
+      "The format of a port identifier string. Objects of this type
+      are always used with an associated lldp-port-id-subtype object,
+      which identifies the format of the particular lldp-port-id
+      object instance.
+
+      If the associated lldp-port-id-subtype object has a value of
+      interface-alias, then the octet string identifies a
+      particular instance of the ifAlias object (defined in IETF
+      RFC 2863).  If the particular ifAlias object does not contain
+      any values, another port identifier type should be used.
+
+      If the associated lldp-port-id-subtype object has a value of
+      port-component, then the octet string identifies a
+      particular instance of the entPhysicalAlias object (defined
+      in IETF RFC 2737) for a port or backplane component.
+
+      If the associated lldp-port-id-subtype object has a value of
+      mac-address, then this string identifies a particular
+      unicast source address (encoded in network byte order
+      and IEEE 802.3 canonical bit order) associated with the port
+      (IEEE Std 802-2001).
+
+      If the associated lldp-port-id-subtype object has a value of
+      network-address, then this string identifies a network
+      address associated with the port.  The first octet contains
+      the IANA AddressFamilyNumbers enumeration value for the
+      specific address type, and octets 2 through N contain the
+      networkAddress address value in network byte order.
+
+      If the associated lldp-port-id-subtype object has a value of
+      interface-name, then the octet string identifies a
+      particular instance of the ifName object (defined in IETF
+      RFC 2863).  If the particular ifName object does not contain
+      any values, another port identifier type should be used.
+
+      If the associated lldp-port-id-subtype object has a value of
+      agent-circuit-id, then this string identifies a agent-local
+      identifier of the circuit (defined in RFC 3046).
+
+      If the associated lldp-port-id-subtype object has a value of
+      local, then this string identifies a locally assigned port ID.";
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-alarms@2019-09-11.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-alarms@2019-09-11.yang
deleted file mode 100644
index a1c195f..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-alarms@2019-09-11.yang
+++ /dev/null
@@ -1,1526 +0,0 @@
-module ietf-alarms {
-  yang-version 1.1;
-  namespace "urn:ietf:params:xml:ns:yang:ietf-alarms";
-  prefix al;
-
-  import ietf-yang-types {
-    prefix yang;
-    reference
-      "RFC 6991: Common YANG Data Types.";
-  }
-
-  organization
-    "IETF CCAMP Working Group";
-  contact
-    "WG Web:   <https://trac.ietf.org/trac/ccamp>
-     WG List:  <mailto:ccamp@ietf.org>
-
-     Editor:   Stefan Vallin
-               <mailto:stefan@wallan.se>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>";
-  description
-    "This module defines an interface for managing alarms.  Main
-     inputs to the module design are the 3GPP Alarm Integration
-     Reference Point (IRP), ITU-T X.733, and ANSI/ISA-18.2 alarm
-     standards.
-     Main features of this module include:
-
-       * Alarm list:
-                 A list of all alarms.  Cleared alarms stay in
-                 the list until explicitly purged.
-
-       * Operator actions on alarms:
-                 Acknowledging and closing alarms.
-
-       * Administrative actions on alarms:
-                 Purging alarms from the list according to specific
-                 criteria.
-
-       * Alarm inventory:
-                 A management application can read all
-                 alarm types implemented by the system.
-
-       * Alarm shelving:
-                 Shelving (blocking) alarms according
-                 to specific criteria.
-
-       * Alarm profiles:
-                 A management system can attach further
-                 information to alarm types, for example,
-                 overriding system-default severity
-                 levels.
-
-     This module uses a stateful view on alarms.  An alarm is a state
-     for a specific resource (note that an alarm is not a
-     notification).  An alarm type is a possible alarm state for a
-     resource.  For example, the tuple:
-
-       ('link-alarm', 'GigabitEthernet0/25')
-
-     is an alarm of type 'link-alarm' on the resource
-     'GigabitEthernet0/25'.
-
-     Alarm types are identified using YANG identities and an optional
-     string-based qualifier.  The string-based qualifier allows for
-     dynamic extension of the statically defined alarm types.  Alarm
-     types identify a possible alarm state and not the individual
-     notifications.  For example, the traditional 'link-down' and
-     'link-up' notifications are two notifications referring to the
-     same alarm type 'link-alarm'.
-
-     With this design, there is no ambiguity about how alarm and
-     alarm clear correlation should be performed; notifications that
-     report the same resource and alarm type are considered updates
-     of the same alarm, e.g., clearing an active alarm or changing
-     the severity of an alarm.  The instrumentation can update the
-     severity and alarm text on an existing alarm.  The above alarm
-     example can therefore look like the following:
-
-       (('link-alarm', 'GigabitEthernet0/25'),
-        warning,
-        'interface down while interface admin state is up')
-
-     There is a clear separation between updates on the alarm from
-     the underlying resource, like clear, and updates from an
-     operator, like acknowledging or closing an alarm:
-
-       (('link-alarm', 'GigabitEthernet0/25'),
-        warning,
-        'interface down while interface admin state is up',
-        cleared,
-        closed)
-
-     Administrative actions like removing closed alarms older than a
-     given time is supported.
-
-     This YANG module does not define how the underlying
-     instrumentation detects and clears the specific alarms.  That
-     belongs to the Standards Development Organization (SDO) or
-     enterprise that owns that specific technology.
-
-     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
-     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
-     'MAY', and 'OPTIONAL' in this document are to be interpreted as
-     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
-     they appear in all capitals, as shown here.
-
-     Copyright (c) 2019 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject to
-     the license terms contained in, the Simplified BSD License set
-     forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (https://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 8632; see
-     the RFC itself for full legal notices.";
-
-  revision 2019-09-11 {
-    description
-      "Initial revision.";
-    reference
-      "RFC 8632: A YANG Data Model for Alarm Management";
-  }
-
-  /*
-   * Features
-   */
-
-  feature operator-actions {
-    description
-      "This feature indicates that the system supports operator
-       states on alarms.";
-  }
-
-  feature alarm-shelving {
-    description
-      "This feature indicates that the system supports shelving
-       (blocking) alarms.
-
-       Alarm shelving may have an impact on server processing
-       resources in order to match alarms against shelf
-       criteria.";
-  }
-
-  feature alarm-history {
-    description
-      "This feature indicates that the server maintains a history
-       of state changes for each alarm.  For example, if an alarm
-       toggles between cleared and active 10 times, these state
-       changes are present in a separate list in the alarm.
-
-       Keeping the alarm history may have an impact on server
-       memory resources.";
-  }
-
-  feature alarm-summary {
-    description
-      "This feature indicates that the server summarizes the number
-       of alarms per severity and operator state.";
-  }
-
-  feature alarm-profile {
-    description
-      "The system enables clients to configure further information
-       to each alarm type.";
-  }
-
-  feature severity-assignment {
-    description
-      "The system supports configurable alarm severity levels.";
-    reference
-      "ITU-T Recommendation M.3100:
-         Generic network information model
-       ITU-T Recommendation M.3160:
-         Generic, protocol-neutral management information model";
-  }
-
-  feature root-cause-analysis {
-    description
-      "The system supports identifying candidate root-cause
-       resources for an alarm, for example, a disk partition
-       root cause for a logger failure alarm.";
-  }
-
-  feature service-impact-analysis {
-    description
-      "The system supports identifying candidate-impacted
-       resources for an alarm, for example, an interface state change
-       resulting in a link alarm, which can refer to a link as being
-       impacted.";
-  }
-
-  feature alarm-correlation {
-    description
-      "The system supports correlating/grouping alarms
-       that belong together.";
-  }
-
-  /*
-   * Identities
-   */
-
-  identity alarm-type-id {
-    description
-      "Base identity for alarm types.  A unique identification of
-       the alarm, not including the resource.  Different resources
-       can share alarm types.  If the resource reports the same
-       alarm type, it is considered to be the same alarm.  The alarm
-       type is a simplification of the different X.733 and 3GPP Alarm
-       IRP correlation mechanisms, and it allows for
-       hierarchical extensions.
-
-       A string-based qualifier can be used in addition to the
-       identity in order to have different alarm types based on
-       information not known at design time, such as values in
-       textual SNMP Notification varbinds.
-
-       Standards and vendors can define sub-identities to clearly
-       identify specific alarm types.
-
-       This identity is abstract and MUST NOT be used for alarms.";
-  }
-
-  /*
-   * Common types
-   */
-
-  typedef resource {
-    type union {
-      type instance-identifier {
-        require-instance false;
-      }
-      type yang:object-identifier;
-      type string;
-      type yang:uuid;
-    }
-    description
-      "This is an identification of the alarming resource, such as an
-       interface.  It should be as fine-grained as possible to both
-       guide the operator and guarantee uniqueness of the alarms.
-
-       If the alarming resource is modeled in YANG, this type will
-       be an instance-identifier.
-
-       If the resource is an SNMP object, the type will be an
-       'object-identifier'.
-
-       If the resource is anything else, for example, a distinguished
-       name or a Common Information Model (CIM) path, this type will
-       be a string.
-
-       If the alarming object is identified by a Universally Unique
-       Identifier (UUID), use the uuid type.  Be cautious when using
-       this type, since a UUID is hard to use for an operator.
-
-       If the server supports several models, the precedence should
-       be in the order as given in the union definition.";
-  }
-
-  typedef resource-match {
-    type union {
-      type yang:xpath1.0;
-      type yang:object-identifier;
-      type string;
-    }
-    description
-      "This type is used to match resources of type 'resource'.
-       Since the type 'resource' is a union of different types, the
-       'resource-match' type is also a union of corresponding types.
-
-       If the type is given as an XPath 1.0 expression, a resource
-       of type 'instance-identifier' matches if the instance is part
-       of the node set that is the result of evaluating the XPath 1.0
-       expression.  For example, the XPath 1.0 expression:
-
-        /ietf-interfaces:interfaces/ietf-interfaces:interface
-            [ietf-interfaces:type='ianaift:ethernetCsmacd']
-
-       would match the resource instance-identifier:
-
-        /if:interfaces/if:interface[if:name='eth1'],
-
-       assuming that the interface 'eth1' is of type
-       'ianaift:ethernetCsmacd'.
-
-       If the type is given as an object identifier, a resource of
-       type 'object-identifier' matches if the match object
-       identifier is a prefix of the resource's object identifier.
-       For example, the value:
-
-        1.3.6.1.2.1.2.2
-
-       would match the resource object identifier:
-
-        1.3.6.1.2.1.2.2.1.1.5
-
-       If the type is given as an UUID or a string, it is interpreted
-       as an XML Schema regular expression, which matches a resource
-       of type 'yang:uuid' or 'string' if the given regular
-       expression matches the resource string.
-
-       If the type is given as an XPath expression, it is evaluated
-       in the following XPath context:
-
-         o  The set of namespace declarations is the set of prefix
-            and namespace pairs for all YANG modules implemented by
-            the server, where the prefix is the YANG module name and
-            the namespace is as defined by the 'namespace' statement
-            in the YANG module.
-
-            If a leaf of this type is encoded in XML, all namespace
-            declarations in scope on the leaf element are added to
-            the set of namespace declarations.  If a prefix found in
-            the XML is already present in the set of namespace
-            declarations, the namespace in the XML is used.
-
-         o  The set of variable bindings is empty.
-
-         o  The function library is the core function library, and
-            the functions are defined in Section 10 of RFC 7950.
-
-         o  The context node is the root node in the data tree.";
-    reference
-      "XML Schema Part 2: Datatypes Second Edition,
-         World Wide Web Consortium Recommendation
-         REC-xmlschema-2-20041028";
-  }
-
-  typedef alarm-text {
-    type string;
-    description
-      "The string used to inform operators about the alarm.  This
-       MUST contain enough information for an operator to be able to
-       understand the problem and how to resolve it.  If this string
-       contains structure, this format should be clearly documented
-       for programs to be able to parse that information.";
-  }
-
-  typedef severity {
-    type enumeration {
-      enum indeterminate {
-        value 2;
-        description
-          "Indicates that the severity level could not be
-           determined.  This level SHOULD be avoided.";
-      }
-      enum warning {
-        value 3;
-        description
-          "The 'warning' severity level indicates the detection of a
-           potential or impending service-affecting fault, before any
-           significant effects have been felt.  Action should be
-           taken to further diagnose (if necessary) and correct the
-           problem in order to prevent it from becoming a more
-           serious service-affecting fault.";
-      }
-      enum minor {
-        value 4;
-        description
-          "The 'minor' severity level indicates the existence of a
-           non-service-affecting fault condition and that corrective
-           action should be taken in order to prevent a more serious
-           (for example, service-affecting) fault.  Such a severity
-           can be reported, for example, when the detected alarm
-           condition is not currently degrading the capacity of the
-           resource.";
-      }
-      enum major {
-        value 5;
-        description
-          "The 'major' severity level indicates that a service-
-           affecting condition has developed and an urgent corrective
-           action is required.  Such a severity can be reported, for
-           example, when there is a severe degradation in the
-           capability of the resource and its full capability must be
-           restored.";
-      }
-      enum critical {
-        value 6;
-        description
-          "The 'critical' severity level indicates that a service-
-           affecting condition has occurred and an immediate
-           corrective action is required.  Such a severity can be
-           reported, for example, when a resource becomes totally out
-           of service and its capability must be restored.";
-      }
-    }
-    description
-      "The severity level of the alarm.  Note well that the value
-       'clear' is not included.  Whether or not an alarm is cleared
-       is a separate boolean flag.";
-    reference
-      "ITU-T Recommendation X.733: Information Technology
-         - Open Systems Interconnection
-         - System Management: Alarm Reporting Function";
-  }
-
-  typedef severity-with-clear {
-    type union {
-      type enumeration {
-        enum cleared {
-          value 1;
-          description
-            "The alarm is cleared by the instrumentation.";
-        }
-      }
-      type severity;
-    }
-    description
-      "The severity level of the alarm including clear.  This is used
-       only in notifications reporting state changes for an alarm.";
-  }
-
-  typedef writable-operator-state {
-    type enumeration {
-      enum none {
-        value 1;
-        description
-          "The alarm is not being taken care of.";
-      }
-      enum ack {
-        value 2;
-        description
-          "The alarm is being taken care of.  Corrective action not
-           taken yet or has failed";
-      }
-      enum closed {
-        value 3;
-        description
-          "Corrective action taken successfully.";
-      }
-    }
-    description
-      "Operator states on an alarm.  The 'closed' state indicates
-       that an operator considers the alarm being resolved.  This is
-       separate from the alarm's 'is-cleared' leaf.";
-  }
-
-  typedef operator-state {
-    type union {
-      type writable-operator-state;
-      type enumeration {
-        enum shelved {
-          value 4;
-          description
-            "The alarm is shelved.  Alarms in /alarms/shelved-alarms/
-             MUST be assigned this operator state by the server as
-             the last entry in the 'operator-state-change' list.  The
-             text for that entry SHOULD include the shelf name.";
-        }
-        enum un-shelved {
-          value 5;
-          description
-            "The alarm is moved back to 'alarm-list' from a shelf.
-             Alarms that are moved from /alarms/shelved-alarms/ to
-             /alarms/alarm-list MUST be assigned this state by the
-             server as the last entry in the 'operator-state-change'
-             list.  The text for that entry SHOULD include the shelf
-             name.";
-        }
-      }
-    }
-    description
-      "Operator states on an alarm.  The 'closed' state indicates
-       that an operator considers the alarm being resolved.  This is
-       separate from the alarm's 'is-cleared' leaf.";
-  }
-
-  /* Alarm type */
-
-  typedef alarm-type-id {
-    type identityref {
-      base alarm-type-id;
-    }
-    description
-      "Identifies an alarm type.  The description of the alarm type
-       id MUST indicate whether or not the alarm type is abstract.
-       An abstract alarm type is used as a base for other alarm type
-       ids and will not be used as a value for an alarm or be present
-       in the alarm inventory.";
-  }
-
-  typedef alarm-type-qualifier {
-    type string;
-    description
-      "If an alarm type cannot be fully specified at design time by
-       'alarm-type-id', this string qualifier is used in addition to
-       fully define a unique alarm type.
-
-       The definition of alarm qualifiers is considered to be part of
-       the instrumentation and is out of scope for this module.  An
-       empty string is used when this is part of a key.";
-  }
-
-  /*
-   * Groupings
-   */
-
-  grouping common-alarm-parameters {
-    description
-      "Common parameters for an alarm.
-
-       This grouping is used both in the alarm list and in the
-       notification representing an alarm-state change.";
-    leaf resource {
-      type resource;
-      mandatory true;
-      description
-        "The alarming resource.  See also 'alt-resource'.  This could
-         be, for example, a reference to the alarming interface";
-    }
-    leaf alarm-type-id {
-      type alarm-type-id;
-      mandatory true;
-      description
-        "This leaf and the leaf 'alarm-type-qualifier' together
-         provide a unique identification of the alarm type.";
-    }
-    leaf alarm-type-qualifier {
-      type alarm-type-qualifier;
-      description
-        "This leaf is used when the 'alarm-type-id' leaf cannot
-         uniquely identify the alarm type.  Normally, this is not the
-         case, and this leaf is the empty string.";
-    }
-    leaf-list alt-resource {
-      type resource;
-      description
-        "Used if the alarming resource is available over other
-         interfaces.  This field can contain SNMP OIDs, CIM paths, or
-         3GPP distinguished names, for example.";
-    }
-    list related-alarm {
-      if-feature "alarm-correlation";
-      key "resource alarm-type-id alarm-type-qualifier";
-      description
-        "References to related alarms.  Note that the related alarm
-         might have been purged from the alarm list.";
-      leaf resource {
-        type leafref {
-          path "/alarms/alarm-list/alarm/resource";
-          require-instance false;
-        }
-        description
-          "The alarming resource for the related alarm.";
-      }
-      leaf alarm-type-id {
-        type leafref {
-          path "/alarms/alarm-list/alarm"
-             + "[resource=current()/../resource]"
-             + "/alarm-type-id";
-          require-instance false;
-        }
-        description
-          "The alarm type identifier for the related alarm.";
-      }
-      leaf alarm-type-qualifier {
-        type leafref {
-          path "/alarms/alarm-list/alarm"
-             + "[resource=current()/../resource]"
-             + "[alarm-type-id=current()/../alarm-type-id]"
-             + "/alarm-type-qualifier";
-          require-instance false;
-        }
-        description
-          "The alarm qualifier for the related alarm.";
-      }
-    }
-    leaf-list impacted-resource {
-      if-feature "service-impact-analysis";
-      type resource;
-      description
-        "Resources that might be affected by this alarm.  If the
-         system creates an alarm on a resource and also has a mapping
-         to other resources that might be impacted, these resources
-         can be listed in this leaf-list.  In this way, the system
-         can create one alarm instead of several.  For example, if an
-         interface has an alarm, the 'impacted-resource' can
-         reference the aggregated port channels.";
-    }
-    leaf-list root-cause-resource {
-      if-feature "root-cause-analysis";
-      type resource;
-      description
-        "Resources that are candidates for causing the alarm.  If the
-         system has a mechanism to understand the candidate root
-         causes of an alarm, this leaf-list can be used to list the
-         root-cause candidate resources.  In this way, the system can
-         create one alarm instead of several.  An example might be a
-         logging system (alarm resource) that fails; the alarm can
-         reference the file system in the 'root-cause-resource'
-         leaf-list.  Note that the intended use is not to also send
-         an alarm with the 'root-cause-resource' as an alarming
-         resource.  The 'root-cause-resource' leaf-list is a hint and
-         should not also generate an alarm for the same problem.";
-    }
-  }
-
-  grouping alarm-state-change-parameters {
-    description
-      "Parameters for an alarm-state change.
-
-       This grouping is used both in the alarm list's status-change
-       list and in the notification representing an alarm-state
-       change.";
-    leaf time {
-      type yang:date-and-time;
-      mandatory true;
-      description
-        "The time the status of the alarm changed.  The value
-         represents the time the real alarm-state change appeared in
-         the resource and not when it was added to the alarm
-         list.  The /alarm-list/alarm/last-changed MUST be set to the
-         same value.";
-    }
-    leaf perceived-severity {
-      type severity-with-clear;
-      mandatory true;
-      description
-        "The severity of the alarm as defined by X.733.  Note that
-         this may not be the original severity since the alarm may
-         have changed severity.";
-      reference
-        "ITU-T Recommendation X.733: Information Technology
-           - Open Systems Interconnection
-           - System Management: Alarm Reporting Function";
-    }
-    leaf alarm-text {
-      type alarm-text;
-      mandatory true;
-      description
-        "A user-friendly text describing the alarm-state change.";
-      reference
-        "ITU-T Recommendation X.733: Information Technology
-           - Open Systems Interconnection
-           - System Management: Alarm Reporting Function";
-    }
-  }
-
-  grouping operator-parameters {
-    description
-      "This grouping defines parameters that can be changed by an
-       operator.";
-    leaf time {
-      type yang:date-and-time;
-      mandatory true;
-      description
-        "Timestamp for operator action on the alarm.";
-    }
-    leaf operator {
-      type string;
-      mandatory true;
-      description
-        "The name of the operator that has acted on this alarm.";
-    }
-    leaf state {
-      type operator-state;
-      mandatory true;
-      description
-        "The operator's view of the alarm state.";
-    }
-    leaf text {
-      type string;
-      description
-        "Additional optional textual information provided by the
-         operator.";
-    }
-  }
-
-  grouping resource-alarm-parameters {
-    description
-      "Alarm parameters that originate from the resource view.";
-    leaf is-cleared {
-      type boolean;
-      mandatory true;
-      description
-        "Indicates the current clearance state of the alarm.  An
-         alarm might toggle from active alarm to cleared alarm and
-         back to active again.";
-    }
-    leaf last-raised {
-      type yang:date-and-time;
-      mandatory true;
-      description
-        "An alarm may change severity level and toggle between
-         active and cleared during its lifetime.  This leaf indicates
-         the last time it was raised ('is-cleared' = 'false').";
-    }
-    leaf last-changed {
-      type yang:date-and-time;
-      mandatory true;
-      description
-        "A timestamp when the 'status-change' or
-         'operator-state-change' list was last changed.";
-    }
-    leaf perceived-severity {
-      type severity;
-      mandatory true;
-      description
-        "The last severity of the alarm.
-
-         If an alarm was raised with severity 'warning' but later
-         changed to 'major', this leaf will show 'major'.";
-    }
-    leaf alarm-text {
-      type alarm-text;
-      mandatory true;
-      description
-        "The last reported alarm text.  This text should contain
-         information for an operator to be able to understand the
-         problem and how to resolve it.";
-    }
-    list status-change {
-      if-feature "alarm-history";
-      key "time";
-      min-elements 1;
-      description
-        "A list of status-change events for this alarm.
-
-         The entry with latest timestamp in this list MUST
-         correspond to the leafs 'is-cleared', 'perceived-severity',
-         and 'alarm-text' for the alarm.
-
-         This list is ordered according to the timestamps of alarm
-         state changes.  The first item corresponds to the latest
-         state change.
-
-         The following state changes create an entry in this
-         list:
-         - changed severity (warning, minor, major, critical)
-         - clearance status; this also updates the 'is-cleared'
-           leaf
-         - alarm-text update";
-      uses alarm-state-change-parameters;
-    }
-  }
-
-  grouping filter-input {
-    description
-      "Grouping to specify a filter construct on alarm information.";
-    leaf alarm-clearance-status {
-      type enumeration {
-        enum any {
-          description
-            "Ignore alarm-clearance status.";
-        }
-        enum cleared {
-          description
-            "Filter cleared alarms.";
-        }
-        enum not-cleared {
-          description
-            "Filter not-cleared alarms.";
-        }
-      }
-      mandatory true;
-      description
-        "The clearance status of the alarm.";
-    }
-    container older-than {
-      presence "Age specification";
-      description
-        "Matches the 'last-status-change' leaf in the alarm.";
-      choice age-spec {
-        description
-          "Filter using date and time age.";
-        case seconds {
-          leaf seconds {
-            type uint16;
-            description
-              "Age expressed in seconds.";
-          }
-        }
-        case minutes {
-          leaf minutes {
-            type uint16;
-            description
-              "Age expressed in minutes.";
-          }
-        }
-        case hours {
-          leaf hours {
-            type uint16;
-            description
-              "Age expressed in hours.";
-          }
-        }
-        case days {
-          leaf days {
-            type uint16;
-            description
-              "Age expressed in days.";
-          }
-        }
-        case weeks {
-          leaf weeks {
-            type uint16;
-            description
-              "Age expressed in weeks.";
-          }
-        }
-      }
-    }
-    container severity {
-      presence "Severity filter";
-      choice sev-spec {
-        description
-          "Filter based on severity level.";
-        leaf below {
-          type severity;
-          description
-            "Severity less than this leaf.";
-        }
-        leaf is {
-          type severity;
-          description
-            "Severity level equal to this leaf.";
-        }
-        leaf above {
-          type severity;
-          description
-            "Severity level higher than this leaf.";
-        }
-      }
-      description
-        "Filter based on severity.";
-    }
-    container operator-state-filter {
-      if-feature "operator-actions";
-      presence "Operator state filter";
-      leaf state {
-        type operator-state;
-        description
-          "Filter on operator state.";
-      }
-      leaf user {
-        type string;
-        description
-          "Filter based on which operator.";
-      }
-      description
-        "Filter based on operator state.";
-    }
-  }
-
-  /*
-   * The /alarms data tree
-   */
-
-  container alarms {
-    description
-      "The top container for this module.";
-    container control {
-      description
-        "Configuration to control the alarm behavior.";
-      leaf max-alarm-status-changes {
-        type union {
-          type uint16;
-          type enumeration {
-            enum infinite {
-              description
-                "The status-change entries are accumulated
-                 infinitely.";
-            }
-          }
-        }
-        default "32";
-        description
-          "The 'status-change' entries are kept in a circular list
-           per alarm.  When this number is exceeded, the oldest
-           status change entry is automatically removed.  If the
-           value is 'infinite', the status-change entries are
-           accumulated infinitely.";
-      }
-      leaf notify-status-changes {
-        type enumeration {
-          enum all-state-changes {
-            description
-              "Send notifications for all status changes.";
-          }
-          enum raise-and-clear {
-            description
-              "Send notifications only for raise, clear, and
-               re-raise.  Notifications for severity-level changes or
-               alarm-text changes are not sent.";
-          }
-          enum severity-level {
-            description
-              "Only send notifications for alarm-state changes
-               crossing the level specified in
-               'notify-severity-level'.  Always send clear
-               notifications.";
-          }
-        }
-        must '. != "severity-level" or ../notify-severity-level' {
-          description
-            "When notify-status-changes is 'severity-level', a value
-             must be given for 'notify-severity-level'.";
-        }
-        default "all-state-changes";
-        description
-          "This leaf controls the notifications sent for alarm status
-           updates.  There are three options:
-
-           1.  Notifications are sent for all updates, severity-level
-               changes, and alarm-text changes.
-
-           2.  Notifications are only sent for alarm raise and clear.
-
-           3.  Notifications are sent for status changes equal to or
-               above the specified severity level.  Clear
-               notifications shall always be sent.  Notifications
-               shall also be sent for state changes that make an
-               alarm less severe than the specified level.
-
-           For example, in option 3, assume that the severity level
-           is set to major and that the alarm has the following state
-           changes:
-
-           [(Time, severity, clear)]:
-           [(T1, major, -), (T2, minor, -), (T3, warning, -),
-            (T4, minor, -), (T5, major, -), (T6, critical, -),
-            (T7, major.  -), (T8, major, clear)]
-
-           In that case, notifications will be sent at times
-           T1, T2, T5, T6, T7, and T8.";
-      }
-      leaf notify-severity-level {
-        when '../notify-status-changes = "severity-level"';
-        type severity;
-        description
-          "Only send notifications for alarm-state changes crossing
-           the specified level.  Always send clear notifications.";
-      }
-      container alarm-shelving {
-        if-feature "alarm-shelving";
-        description
-          "The 'alarm-shelving/shelf' list is used to shelve
-           (block/filter) alarms.  The conditions in the shelf
-           criteria are logically ANDed.  The first matching shelf is
-           used, and an alarm is shelved only for this first match.
-           Matching alarms MUST appear in the
-           /alarms/shelved-alarms/shelved-alarm list, and
-           non-matching /alarms MUST appear in the
-           /alarms/alarm-list/alarm list.  The server does not send
-           any notifications for shelved alarms.
-
-           The server MUST maintain states (e.g., severity
-           changes) for the shelved alarms.
-
-           Alarms that match the criteria shall have an
-           operator state 'shelved'.  When the shelf
-           configuration removes an alarm from the shelf, the server
-           shall add the operator state 'un-shelved'.";
-        list shelf {
-          key "name";
-          ordered-by user;
-          leaf name {
-            type string;
-            description
-              "An arbitrary name for the alarm shelf.";
-          }
-          description
-            "Each entry defines the criteria for shelving alarms.
-             Criteria are ANDed.  If no criteria are specified,
-             all alarms will be shelved.";
-          leaf-list resource {
-            type resource-match;
-            description
-              "Shelve alarms for matching resources.";
-          }
-          list alarm-type {
-            key "alarm-type-id alarm-type-qualifier-match";
-            description
-              "Any alarm matching the combined criteria of
-               'alarm-type-id' and 'alarm-type-qualifier-match'
-               MUST be matched.";
-            leaf alarm-type-id {
-              type alarm-type-id;
-              description
-                "Shelve all alarms that have an 'alarm-type-id' that
-                 is equal to or derived from the given
-                 'alarm-type-id'.";
-            }
-            leaf alarm-type-qualifier-match {
-              type string;
-              description
-                "An XML Schema regular expression that is used to
-                 match an alarm type qualifier.  Shelve all alarms
-                 that match this regular expression for the alarm
-                 type qualifier.";
-              reference
-                "XML Schema Part 2: Datatypes Second Edition,
-                   World Wide Web Consortium Recommendation
-                   REC-xmlschema-2-20041028";
-            }
-          }
-          leaf description {
-            type string;
-            description
-              "An optional textual description of the shelf.  This
-               description should include the reason for shelving
-               these alarms.";
-          }
-        }
-      }
-    }
-    container alarm-inventory {
-      config false;
-      description
-        "The 'alarm-inventory/alarm-type' list contains all possible
-         alarm types for the system.
-
-         If the system knows for which resources a specific alarm
-         type can appear, it is also identified in the inventory.
-         The list also tells if each alarm type has a corresponding
-         clear state.  The inventory shall only contain concrete
-         alarm types.
-
-         The alarm inventory MUST be updated by the system when new
-         alarms can appear.  This can be the case when installing new
-         software modules or inserting new card types.  A
-         notification 'alarm-inventory-changed' is sent when the
-         inventory is changed.";
-      list alarm-type {
-        key "alarm-type-id alarm-type-qualifier";
-        description
-          "An entry in this list defines a possible alarm.";
-        leaf alarm-type-id {
-          type alarm-type-id;
-          description
-            "The statically defined alarm type identifier for this
-             possible alarm.";
-        }
-        leaf alarm-type-qualifier {
-          type alarm-type-qualifier;
-          description
-            "The optionally dynamically defined alarm type identifier
-             for this possible alarm.";
-        }
-        leaf-list resource {
-          type resource-match;
-          description
-            "Optionally, specifies for which resources the alarm type
-             is valid.";
-        }
-        leaf will-clear {
-          type boolean;
-          mandatory true;
-          description
-            "This leaf tells the operator if the alarm will be
-             cleared when the correct corrective action has been
-             taken.  Implementations SHOULD strive for detecting the
-             cleared state for all alarm types.
-
-             If this leaf is 'true', the operator can monitor the
-             alarm until it becomes cleared after the corrective
-             action has been taken.
-
-             If this leaf is 'false', the operator needs to validate
-             that the alarm is no longer active using other
-             mechanisms.  Alarms can lack a corresponding clear due
-             to missing instrumentation or no logical
-             corresponding clear state.";
-        }
-        leaf-list severity-level {
-          type severity;
-          description
-            "This leaf-list indicates the possible severity levels of
-             this alarm type.  Note well that 'clear' is not part of
-             the severity type.  In general, the severity level
-             should be defined by the instrumentation based on the
-             dynamic state, rather than being defined statically by
-             the alarm type, in order to provide a relevant severity
-             level based on dynamic state and context.  However, most
-             alarm types have a defined set of possible severity
-             levels, and this should be provided here.";
-        }
-        leaf description {
-          type string;
-          mandatory true;
-          description
-            "A description of the possible alarm.  It SHOULD include
-             information on possible underlying root causes and
-             corrective actions.";
-        }
-      }
-    }
-    container summary {
-      if-feature "alarm-summary";
-      config false;
-      description
-        "This container gives a summary of the number of alarms.";
-      list alarm-summary {
-        key "severity";
-        description
-          "A global summary of all alarms in the system.  The summary
-           does not include shelved alarms.";
-        leaf severity {
-          type severity;
-          description
-            "Alarm summary for this severity level.";
-        }
-        leaf total {
-          type yang:gauge32;
-          description
-            "Total number of alarms of this severity level.";
-        }
-        leaf not-cleared {
-          type yang:gauge32;
-          description
-            "Total number of alarms of this severity level
-             that are not cleared.";
-        }
-        leaf cleared {
-          type yang:gauge32;
-          description
-            "For this severity level, the number of alarms that are
-             cleared.";
-        }
-        leaf cleared-not-closed {
-          if-feature "operator-actions";
-          type yang:gauge32;
-          description
-            "For this severity level, the number of alarms that are
-             cleared but not closed.";
-        }
-        leaf cleared-closed {
-          if-feature "operator-actions";
-          type yang:gauge32;
-          description
-            "For this severity level, the number of alarms that are
-             cleared and closed.";
-        }
-        leaf not-cleared-closed {
-          if-feature "operator-actions";
-          type yang:gauge32;
-          description
-            "For this severity level, the number of alarms that are
-             not cleared but closed.";
-        }
-        leaf not-cleared-not-closed {
-          if-feature "operator-actions";
-          type yang:gauge32;
-          description
-            "For this severity level, the number of alarms that are
-             not cleared and not closed.";
-        }
-      }
-      leaf shelves-active {
-        if-feature "alarm-shelving";
-        type empty;
-        description
-          "This is a hint to the operator that there are active
-           alarm shelves.  This leaf MUST exist if the
-           /alarms/shelved-alarms/number-of-shelved-alarms is > 0.";
-      }
-    }
-    container alarm-list {
-      config false;
-      description
-        "The alarms in the system.";
-      leaf number-of-alarms {
-        type yang:gauge32;
-        description
-          "This object shows the total number of
-           alarms in the system, i.e., the total number
-           of entries in the alarm list.";
-      }
-      leaf last-changed {
-        type yang:date-and-time;
-        description
-          "A timestamp when the alarm list was last
-           changed.  The value can be used by a manager to
-           initiate an alarm resynchronization procedure.";
-      }
-      list alarm {
-        key "resource alarm-type-id alarm-type-qualifier";
-        description
-          "The list of alarms.  Each entry in the list holds one
-           alarm for a given alarm type and resource.  An alarm can
-           be updated from the underlying resource or by the user.
-           The following leafs are maintained by the resource:
-           'is-cleared', 'last-change', 'perceived-severity', and
-           'alarm-text'.  An operator can change 'operator-state' and
-           'operator-text'.
-
-           Entries appear in the alarm list the first time an alarm
-           becomes active for a given alarm type and resource.
-           Entries do not get deleted when the alarm is cleared.
-           Clear status is represented as a boolean flag.
-
-           Alarm entries are removed, i.e., purged, from the list by
-           an explicit purge action.  For example, purge all alarms
-           that are cleared and in closed operator state that are
-           older than 24 hours.  Purged alarms are removed from the
-           alarm list.  If the alarm resource state changes after a
-           purge, the alarm will reappear in the alarm list.
-
-           Systems may also remove alarms based on locally configured
-           policies; this is out of scope for this module.";
-        uses common-alarm-parameters;
-        leaf time-created {
-          type yang:date-and-time;
-          mandatory true;
-          description
-            "The timestamp when this alarm entry was created.  This
-             represents the first time the alarm appeared; it can
-             also represent that the alarm reappeared after a purge.
-             Further state changes of the same alarm do not change
-             this leaf; these changes will update the 'last-changed'
-             leaf.";
-        }
-        uses resource-alarm-parameters;
-        list operator-state-change {
-          if-feature "operator-actions";
-          key "time";
-          description
-            "This list is used by operators to indicate the state of
-             human intervention on an alarm.  For example, if an
-             operator has seen an alarm, the operator can add a new
-             item to this list indicating that the alarm is
-             acknowledged.";
-          uses operator-parameters;
-        }
-        action set-operator-state {
-          if-feature "operator-actions";
-          description
-            "This is a means for the operator to indicate the level
-             of human intervention on an alarm.";
-          input {
-            leaf state {
-              type writable-operator-state;
-              mandatory true;
-              description
-                "Set this operator state.";
-            }
-            leaf text {
-              type string;
-              description
-                "Additional optional textual information.";
-            }
-          }
-        }
-        notification operator-action {
-          if-feature "operator-actions";
-          description
-            "This notification is used to report that an operator
-             acted upon an alarm.";
-          uses operator-parameters;
-        }
-      }
-      action purge-alarms {
-        description
-          "This operation requests that the server delete entries
-           from the alarm list according to the supplied criteria.
-
-           Typically, this operation is used to delete alarms that
-           are in closed operator state and older than a specified
-           time.
-
-           The number of purged alarms is returned as an output
-           parameter.";
-        input {
-          uses filter-input;
-        }
-        output {
-          leaf purged-alarms {
-            type uint32;
-            description
-              "Number of purged alarms.";
-          }
-        }
-      }
-      action compress-alarms {
-        if-feature "alarm-history";
-        description
-          "This operation requests that the server compress
-           entries in the alarm list by removing all but the
-           latest 'status-change' entry for all matching alarms.
-           Conditions in the input are logically ANDed.  If no
-           input condition is given, all alarms are compressed.";
-        input {
-          leaf resource {
-            type resource-match;
-            description
-              "Compress the alarms matching this resource.";
-          }
-          leaf alarm-type-id {
-            type leafref {
-              path "/alarms/alarm-list/alarm/alarm-type-id";
-              require-instance false;
-            }
-            description
-              "Compress alarms with this 'alarm-type-id'.";
-          }
-          leaf alarm-type-qualifier {
-            type leafref {
-              path "/alarms/alarm-list/alarm/alarm-type-qualifier";
-              require-instance false;
-            }
-            description
-              "Compress the alarms with this
-               'alarm-type-qualifier'.";
-          }
-        }
-        output {
-          leaf compressed-alarms {
-            type uint32;
-            description
-              "Number of compressed alarm entries.";
-          }
-        }
-      }
-    }
-    container shelved-alarms {
-      if-feature "alarm-shelving";
-      config false;
-      description
-        "The shelved alarms.  Alarms appear here if they match the
-         criteria in /alarms/control/alarm-shelving.  This list does
-         not generate any notifications.  The list represents alarms
-         that are considered not relevant by the operator.  Alarms in
-         this list have an 'operator-state' of 'shelved'.  This
-         cannot be changed.";
-      leaf number-of-shelved-alarms {
-        type yang:gauge32;
-        description
-          "This object shows the total number of current
-           alarms, i.e., the total number of entries
-           in the alarm list.";
-      }
-      leaf shelved-alarms-last-changed {
-        type yang:date-and-time;
-        description
-          "A timestamp when the shelved-alarm list was last changed.
-           The value can be used by a manager to initiate an alarm
-           resynchronization procedure.";
-      }
-      list shelved-alarm {
-        key "resource alarm-type-id alarm-type-qualifier";
-        description
-          "The list of shelved alarms.  Shelved alarms can only be
-           updated from the underlying resource; no operator actions
-           are supported.";
-        uses common-alarm-parameters;
-        leaf shelf-name {
-          type leafref {
-            path "/alarms/control/alarm-shelving/shelf/name";
-            require-instance false;
-          }
-          description
-            "The name of the shelf.";
-        }
-        uses resource-alarm-parameters;
-        list operator-state-change {
-          if-feature "operator-actions";
-          key "time";
-          description
-            "This list is used by operators to indicate the state of
-             human intervention on an alarm.  For shelved alarms, the
-             system has set the list item in the list to 'shelved'.";
-          uses operator-parameters;
-        }
-      }
-      action purge-shelved-alarms {
-        description
-          "This operation requests that the server delete entries from
-           the shelved-alarm list according to the supplied criteria.
-           In the shelved-alarm list, it makes sense to delete alarms
-           that are not relevant anymore.
-
-           The number of purged alarms is returned as an output
-           parameter.";
-        input {
-          uses filter-input;
-        }
-        output {
-          leaf purged-alarms {
-            type uint32;
-            description
-              "Number of purged alarms.";
-          }
-        }
-      }
-      action compress-shelved-alarms {
-        if-feature "alarm-history";
-        description
-          "This operation requests that the server compress entries
-           in the shelved-alarm list by removing all but the latest
-           'status-change' entry for all matching shelved alarms.
-           Conditions in the input are logically ANDed.  If no input
-           condition is given, all alarms are compressed.";
-        input {
-          leaf resource {
-            type leafref {
-              path "/alarms/shelved-alarms/shelved-alarm/resource";
-              require-instance false;
-            }
-            description
-              "Compress the alarms with this resource.";
-          }
-          leaf alarm-type-id {
-            type leafref {
-              path "/alarms/shelved-alarms/shelved-alarm"
-                 + "/alarm-type-id";
-              require-instance false;
-            }
-            description
-              "Compress alarms with this 'alarm-type-id'.";
-          }
-          leaf alarm-type-qualifier {
-            type leafref {
-              path "/alarms/shelved-alarms/shelved-alarm"
-                 + "/alarm-type-qualifier";
-              require-instance false;
-            }
-            description
-              "Compress the alarms with this
-               'alarm-type-qualifier'.";
-          }
-        }
-        output {
-          leaf compressed-alarms {
-            type uint32;
-            description
-              "Number of compressed alarm entries.";
-          }
-        }
-      }
-    }
-    list alarm-profile {
-      if-feature "alarm-profile";
-      key "alarm-type-id alarm-type-qualifier-match resource";
-      ordered-by user;
-      description
-        "This list is used to assign further information or
-         configuration for each alarm type.  This module supports a
-         mechanism where the client can override the system-default
-         alarm severity levels.  The 'alarm-profile' is also a useful
-         augmentation point for specific additions to alarm types.";
-      leaf alarm-type-id {
-        type alarm-type-id;
-        description
-          "The alarm type identifier to match.";
-      }
-      leaf alarm-type-qualifier-match {
-        type string;
-        description
-          "An XML Schema regular expression that is used to match the
-           alarm type qualifier.";
-        reference
-          "XML Schema Part 2: Datatypes Second Edition,
-             World Wide Web Consortium Recommendation
-             REC-xmlschema-2-20041028";
-      }
-      leaf resource {
-        type resource-match;
-        description
-          "Specifies which resources to match.";
-      }
-      leaf description {
-        type string;
-        mandatory true;
-        description
-          "A description of the alarm profile.";
-      }
-      container alarm-severity-assignment-profile {
-        if-feature "severity-assignment";
-        description
-          "The client can override the system-default severity
-           level.";
-        reference
-          "ITU-T Recommendation M.3100:
-             Generic network information model
-           ITU-T Recommendation M.3160:
-             Generic, protocol-neutral management information model";
-        leaf-list severity-level {
-          type severity;
-          ordered-by user;
-          description
-            "Specifies the configured severity level(s) for the
-             matching alarm.  If the alarm has several severity
-             levels, the leaf-list shall be given in rising severity
-             order.  The original M3100/M3160 ASAP function only
-             allows for a one-to-one mapping between alarm type and
-             severity, but since YANG module supports stateful
-             alarms, the mapping must allow for several severity
-             levels.
-
-             Assume a high-utilization alarm type with two thresholds
-             with the system-default severity levels of threshold1 =
-             warning and threshold2 = minor.  Setting this leaf-list
-             to (minor, major) will assign the severity levels as
-             threshold1 = minor and threshold2 = major";
-        }
-      }
-    }
-  }
-
-  /*
-   * Notifications
-   */
-
-  notification alarm-notification {
-    description
-      "This notification is used to report a state change for an
-       alarm.  The same notification is used for reporting a newly
-       raised alarm, a cleared alarm, or changing the text and/or
-       severity of an existing alarm.";
-    uses common-alarm-parameters;
-    uses alarm-state-change-parameters;
-  }
-
-  notification alarm-inventory-changed {
-    description
-      "This notification is used to report that the list of possible
-       alarms has changed.  This can happen when, for example, a new
-       software module is installed or a new physical card is
-       inserted.";
-  }
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-crypto-types.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-crypto-types.yang
new file mode 100644
index 0000000..1b94b03
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-crypto-types.yang
@@ -0,0 +1,1783 @@
+module ietf-crypto-types {
+  yang-version 1.1;
+  namespace "urn:ietf:params:xml:ns:yang:ietf-crypto-types";
+  prefix ct;
+
+  import ietf-yang-types {
+    prefix yang;
+    reference
+      "RFC 6991: Common YANG Data Types";
+  }
+
+  import ietf-netconf-acm {
+    prefix nacm;
+    reference
+      "RFC 8341: Network Configuration Access Control Model";
+  }
+
+  organization
+    "IETF NETCONF (Network Configuration) Working Group";
+
+  contact
+    "WG Web:   <http://datatracker.ietf.org/wg/netconf/>
+     WG List:  <mailto:netconf@ietf.org>
+     Author:   Kent Watsen <mailto:kent+ietf@watsen.net>
+     Author:   Wang Haiguang <wang.haiguang.shieldlab@huawei.com>";
+
+  description
+    "This module defines common YANG types for cryptographic
+     applications.
+
+     Copyright (c) 2019 IETF Trust and the persons identified
+     as authors of the code. All rights reserved.
+
+     Redistribution and use in source and binary forms, with
+     or without modification, is permitted pursuant to, and
+     subject to the license terms contained in, the Simplified
+     BSD License set forth in Section 4.c of the IETF Trust's
+     Legal Provisions Relating to IETF Documents
+     (https://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC XXXX
+     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC
+     itself for full legal notices.;
+
+     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
+     'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
+     'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
+     are to be interpreted as described in BCP 14 (RFC 2119)
+     (RFC 8174) when, and only when, they appear in all
+     capitals, as shown here.";
+
+  revision 2019-04-29 {
+    description
+      "Initial version";
+    reference
+      "RFC XXXX: Common YANG Data Types for Cryptography";
+  }
+
+  /**************************************/
+  /*   Identities for Hash Algorithms   */
+  /**************************************/
+
+  identity hash-algorithm {
+    description
+      "A base identity for hash algorithm verification.";
+  }
+
+  identity sha-224 {
+    base hash-algorithm;
+    description
+      "The SHA-224 algorithm.";
+    reference
+      "RFC 6234: US Secure Hash Algorithms.";
+  }
+  identity sha-256 {
+    base hash-algorithm;
+    description
+      "The SHA-256 algorithm.";
+    reference
+      "RFC 6234: US Secure Hash Algorithms.";
+  }
+
+  identity sha-384 {
+    base hash-algorithm;
+    description
+      "The SHA-384 algorithm.";
+    reference
+      "RFC 6234: US Secure Hash Algorithms.";
+  }
+
+  identity sha-512 {
+    base hash-algorithm;
+    description
+      "The SHA-512 algorithm.";
+    reference
+      "RFC 6234: US Secure Hash Algorithms.";
+  }
+
+  /***********************************************/
+  /*  Identities for Asymmetric Key Algorithms   */
+  /***********************************************/
+
+  identity asymmetric-key-algorithm {
+    description
+      "Base identity from which all asymmetric key
+       encryption Algorithm.";
+  }
+
+  identity rsa1024 {
+    base asymmetric-key-algorithm;
+    description
+      "The RSA algorithm using a 1024-bit key.";
+    reference
+      "RFC 8017:
+         PKCS #1: RSA Cryptography Specifications Version 2.2.";
+  }
+
+  identity rsa2048 {
+    base asymmetric-key-algorithm;
+    description
+      "The RSA algorithm using a 2048-bit key.";
+    reference
+      "RFC 8017:
+         PKCS #1: RSA Cryptography Specifications Version 2.2.";
+  }
+
+  identity rsa3072 {
+    base asymmetric-key-algorithm;
+    description
+      "The RSA algorithm using a 3072-bit key.";
+    reference
+      "RFC 8017:
+         PKCS #1: RSA Cryptography Specifications Version 2.2.";
+  }
+
+  identity rsa4096 {
+    base asymmetric-key-algorithm;
+    description
+      "The RSA algorithm using a 4096-bit key.";
+    reference
+      "RFC 8017:
+         PKCS #1: RSA Cryptography Specifications Version 2.2.";
+  }
+
+  identity rsa7680 {
+    base asymmetric-key-algorithm;
+    description
+      "The RSA algorithm using a 7680-bit key.";
+    reference
+      "RFC 8017:
+         PKCS #1: RSA Cryptography Specifications Version 2.2.";
+  }
+
+  identity rsa15360 {
+    base asymmetric-key-algorithm;
+    description
+      "The RSA algorithm using a 15360-bit key.";
+    reference
+      "RFC 8017:
+         PKCS #1: RSA Cryptography Specifications Version 2.2.";
+  }
+
+  identity secp192r1 {
+    base asymmetric-key-algorithm;
+    description
+      "The ECDSA algorithm using a NIST P256 Curve.";
+    reference
+      "RFC 6090:
+         Fundamental Elliptic Curve Cryptography Algorithms.";
+  }
+  identity secp224r1 {
+    base asymmetric-key-algorithm;
+    description
+      "The ECDSA algorithm using a NIST P256 Curve.";
+    reference
+      "RFC 6090:
+         Fundamental Elliptic Curve Cryptography Algorithms.";
+  }
+
+  identity secp256r1 {
+    base asymmetric-key-algorithm;
+    description
+      "The ECDSA algorithm using a NIST P256 Curve.";
+    reference
+      "RFC 6090:
+         Fundamental Elliptic Curve Cryptography Algorithms.";
+  }
+
+  identity secp384r1 {
+    base asymmetric-key-algorithm;
+    description
+      "The ECDSA algorithm using a NIST P256 Curve.";
+    reference
+      "RFC 6090:
+         Fundamental Elliptic Curve Cryptography Algorithms.";
+  }
+
+  identity secp521r1 {
+    base asymmetric-key-algorithm;
+    description
+      "The ECDSA algorithm using a NIST P256 Curve.";
+    reference
+      "RFC 6090:
+         Fundamental Elliptic Curve Cryptography Algorithms.";
+  }
+
+  /*************************************/
+  /*   Identities for MAC Algorithms   */
+  /*************************************/
+
+  identity mac-algorithm {
+    description
+      "A base identity for mac generation.";
+  }
+
+  identity hmac-sha1 {
+    base mac-algorithm;
+    description
+      "Generating MAC using SHA1 hash function";
+    reference
+      "RFC 3174: US Secure Hash Algorithm 1 (SHA1)";
+  }
+
+  identity hmac-sha1-96 {
+    base mac-algorithm;
+    description
+      "Generating MAC using SHA1 hash function";
+    reference
+      "RFC 2404: The Use of HMAC-SHA-1-96 within ESP and AH";
+  }
+
+  identity hmac-sha2-224 {
+    base mac-algorithm;
+    description
+      "Generating MAC using SHA2 hash function";
+    reference
+      "RFC 6234:
+         US Secure Hash Algorithms (SHA and SHA-based HMAC and
+         HKDF)";
+  }
+
+  identity hmac-sha2-256 {
+    base mac-algorithm;
+    description
+      "Generating MAC using SHA2 hash function";
+    reference
+      "RFC 6234:
+         US Secure Hash Algorithms (SHA and SHA-based HMAC and
+         HKDF)";
+  }
+
+  identity hmac-sha2-256-128 {
+    base mac-algorithm;
+    description
+      "Generating a 256 bits MAC using SHA2 hash function and
+       truncate it to 128 bits";
+    reference
+      "RFC 4868:
+         Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512
+         with IPsec";
+  }
+
+  identity hmac-sha2-384 {
+    base mac-algorithm;
+    description
+      "Generating MAC using SHA2 hash function";
+    reference
+      "RFC 6234:
+         US Secure Hash Algorithms (SHA and SHA-based HMAC and
+         HKDF)";
+  }
+
+  identity hmac-sha2-384-192 {
+    base mac-algorithm;
+    description
+      "Generating a 384 bits MAC using SHA2 hash function and
+       truncate it to 192 bits";
+    reference
+      "RFC 4868:
+         Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 with
+         IPsec";
+  }
+
+  identity hmac-sha2-512 {
+    base mac-algorithm;
+    description
+      "Generating MAC using SHA2 hash function";
+    reference
+      "RFC 6234:
+         US Secure Hash Algorithms (SHA and SHA-based HMAC and
+         HKDF)";
+  }
+
+  identity hmac-sha2-512-256 {
+    base mac-algorithm;
+    description
+      "Generating a 512 bits MAC using SHA2 hash function and
+       truncating it to 256 bits";
+    reference
+      "RFC 4868:
+         Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 with
+         IPsec";
+  }
+
+  identity aes-128-gmac {
+    base mac-algorithm;
+    description
+      "Generating MAC using the Advanced Encryption Standard (AES)
+       Galois Message Authentication Code (GMAC) as a mechanism to
+       provide data origin authentication";
+    reference
+      "RFC 4543:
+         The Use of Galois Message Authentication Code (GMAC) in
+         IPsec ESP and AH";
+  }
+
+  identity aes-192-gmac {
+    base mac-algorithm;
+    description
+      "Generating MAC using the Advanced Encryption Standard (AES)
+       Galois Message Authentication Code (GMAC) as a mechanism to
+       provide data origin authentication";
+    reference
+      "RFC 4543:
+         The Use of Galois Message Authentication Code (GMAC) in
+         IPsec ESP and AH";
+  }
+
+  identity aes-256-gmac {
+    base mac-algorithm;
+    description
+      "Generating MAC using the Advanced Encryption Standard (AES)
+       Galois Message Authentication Code (GMAC) as a mechanism to
+       provide data origin authentication";
+    reference
+      "RFC 4543:
+         The Use of Galois Message Authentication Code (GMAC) in
+         IPsec ESP and AH";
+  }
+
+  identity aes-cmac-96 {
+    base mac-algorithm;
+    description
+      "Generating MAC using Advanced Encryption Standard (AES)
+       Cipher-based Message Authentication Code (CMAC)";
+    reference
+      "RFC 4494: The AES-CMAC-96 Algorithm and its Use with IPsec";
+  }
+
+  identity aes-cmac-128 {
+    base mac-algorithm;
+    description
+      "Generating MAC using Advanced Encryption Standard (AES)
+       Cipher-based Message Authentication Code (CMAC)";
+    reference
+      "RFC 4493: The AES-CMAC Algorithm";
+  }
+
+  /********************************************/
+  /*   Identities for Encryption Algorithms   */
+  /********************************************/
+
+  identity encryption-algorithm {
+    description
+      "A base identity for encryption algorithm.";
+  }
+
+  identity aes-128-cbc {
+    base encryption-algorithm;
+    description
+      "Encrypt message with AES algorithm in CBC mode with a key
+       length of 128 bits";
+    reference
+      "RFC 3565:
+         Use of the Advanced Encryption Standard (AES) Encryption
+         Algorithm in Cryptographic Message Syntax (CMS)";
+  }
+
+  identity aes-192-cbc {
+    base encryption-algorithm;
+    description
+      "Encrypt message with AES algorithm in CBC mode with a key
+       length of 192 bits";
+    reference
+      "RFC 3565:
+         Use of the Advanced Encryption Standard (AES) Encryption
+         Algorithm in Cryptographic Message Syntax (CMS)";
+  }
+
+  identity aes-256-cbc {
+    base encryption-algorithm;
+    description
+      "Encrypt message with AES algorithm in CBC mode with a key
+       length of 256 bits";
+    reference
+      "RFC 3565:
+         Use of the Advanced Encryption Standard (AES) Encryption
+         Algorithm in Cryptographic Message Syntax (CMS)";
+  }
+
+  identity aes-128-ctr {
+    base encryption-algorithm;
+    description
+      "Encrypt message with AES algorithm in CTR mode with a key
+       length of 128 bits";
+    reference
+      "RFC 3686:
+         Using Advanced Encryption Standard (AES) Counter Mode with
+         IPsec Encapsulating Security Payload (ESP)";
+  }
+  identity aes-192-ctr {
+    base encryption-algorithm;
+    description
+      "Encrypt message with AES algorithm in CTR mode with a key
+       length of 192 bits";
+    reference
+      "RFC 3686:
+         Using Advanced Encryption Standard (AES) Counter Mode with
+         IPsec Encapsulating Security Payload (ESP)";
+  }
+
+  identity aes-256-ctr {
+    base encryption-algorithm;
+    description
+      "Encrypt message with AES algorithm in CTR mode with a key
+       length of 256 bits";
+    reference
+      "RFC 3686:
+         Using Advanced Encryption Standard (AES) Counter Mode with
+         IPsec Encapsulating Security Payload (ESP)";
+  }
+
+  /****************************************************/
+  /*   Identities for Encryption and MAC Algorithms   */
+  /****************************************************/
+
+  identity encryption-and-mac-algorithm {
+    description
+      "A base identity for encryption and MAC algorithm.";
+  }
+
+  identity aes-128-ccm {
+    base encryption-and-mac-algorithm;
+    description
+      "Encrypt message with AES algorithm in CCM mode with a key
+       length of 128 bits; it can also be used for generating MAC";
+    reference
+      "RFC 4309:
+         Using Advanced Encryption Standard (AES) CCM Mode with
+         IPsec Encapsulating Security Payload (ESP)";
+  }
+
+  identity aes-192-ccm {
+    base encryption-and-mac-algorithm;
+    description
+      "Encrypt message with AES algorithm in CCM mode with a key
+       length of 192 bits; it can also be used for generating MAC";
+    reference
+      "RFC 4309:
+         Using Advanced Encryption Standard (AES) CCM Mode with
+         IPsec Encapsulating Security Payload (ESP)";
+  }
+
+  identity aes-256-ccm {
+    base encryption-and-mac-algorithm;
+    description
+      "Encrypt message with AES algorithm in CCM mode with a key
+       length of 256 bits; it can also be used for generating MAC";
+    reference
+      "RFC 4309:
+         Using Advanced Encryption Standard (AES) CCM Mode with
+         IPsec Encapsulating Security Payload (ESP)";
+  }
+
+  identity aes-128-gcm {
+    base encryption-and-mac-algorithm;
+    description
+      "Encrypt message with AES algorithm in GCM mode with a key
+       length of 128 bits; it can also be used for generating MAC";
+    reference
+      "RFC 4106:
+         The Use of Galois/Counter Mode (GCM) in IPsec Encapsulating
+         Security Payload (ESP)";
+  }
+
+  identity aes-192-gcm {
+    base encryption-and-mac-algorithm;
+    description
+      "Encrypt message with AES algorithm in GCM mode with a key
+       length of 192 bits; it can also be used for generating MAC";
+    reference
+      "RFC 4106:
+         The Use of Galois/Counter Mode (GCM) in IPsec Encapsulating
+         Security Payload (ESP)";
+  }
+
+  identity mac-aes-256-gcm {
+    base encryption-and-mac-algorithm;
+    description
+      "Encrypt message with AES algorithm in GCM mode with a key
+       length of 128 bits; it can also be used for generating MAC";
+    reference
+      "RFC 4106:
+         The Use of Galois/Counter Mode (GCM) in IPsec Encapsulating
+         Security Payload (ESP)";
+  }
+  identity chacha20-poly1305 {
+    base encryption-and-mac-algorithm;
+    description
+      "Encrypt message with chacha20 algorithm and generate MAC with
+       POLY1305; it can also be used for generating MAC";
+    reference
+      "RFC 8439: ChaCha20 and Poly1305 for IETF Protocols";
+  }
+
+  /******************************************/
+  /*   Identities for signature algorithm   */
+  /******************************************/
+
+  identity signature-algorithm {
+    description
+      "A base identity for asymmetric key encryption algorithm.";
+  }
+
+  identity dsa-sha1 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using DSA algorithm with SHA1 hash
+       algorithm";
+    reference
+      "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol";
+  }
+
+  identity rsassa-pkcs1-sha1 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using RSASSA-PKCS1-v1_5 with the SHA1
+       hash algorithm.";
+    reference
+      "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol";
+  }
+
+  identity rsassa-pkcs1-sha256 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using RSASSA-PKCS1-v1_5 with the
+       SHA256 hash algorithm.";
+    reference
+      "RFC 8332:
+         Use of RSA Keys with SHA-256 and SHA-512 in the Secure Shell
+         (SSH) Protocol
+       RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+  identity rsassa-pkcs1-sha384 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using RSASSA-PKCS1-v1_5 with the
+       SHA384 hash algorithm.";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity rsassa-pkcs1-sha512 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using RSASSA-PKCS1-v1_5 with the
+       SHA512 hash algorithm.";
+    reference
+      "RFC 8332:
+         Use of RSA Keys with SHA-256 and SHA-512 in the Secure Shell
+         (SSH) Protocol
+       RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity rsassa-pss-rsae-sha256 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using RSASSA-PSS with mask generation
+       function 1 and SHA256 hash algorithm. If the public key is
+       carried in an X.509 certificate, it MUST use the rsaEncryption
+       OID";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity rsassa-pss-rsae-sha384 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using RSASSA-PSS with mask generation
+       function 1 and SHA384 hash algorithm. If the public key is
+       carried in an X.509 certificate, it MUST use the rsaEncryption
+       OID";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity rsassa-pss-rsae-sha512 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using RSASSA-PSS with mask generation
+       function 1 and SHA512 hash algorithm. If the public key is
+       carried in an X.509 certificate, it MUST use the rsaEncryption
+       OID";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity rsassa-pss-pss-sha256 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using RSASSA-PSS with mask generation
+       function 1 and SHA256 hash algorithm. If the public key is
+       carried in an X.509 certificate, it MUST use the RSASSA-PSS
+       OID";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity rsassa-pss-pss-sha384 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using RSASSA-PSS with mask generation
+       function 1 and SHA256 hash algorithm. If the public key is
+       carried in an X.509 certificate, it MUST use the RSASSA-PSS
+       OID";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity rsassa-pss-pss-sha512 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using RSASSA-PSS with mask generation
+       function 1 and SHA256 hash algorithm. If the public key is
+       carried in an X.509 certificate, it MUST use the RSASSA-PSS
+       OID";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity ecdsa-secp256r1-sha256 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using ECDSA with curve name secp256r1
+       and SHA256 hash algorithm.";
+    reference
+      "RFC 5656: Elliptic Curve Algorithm Integration in the
+         Secure Shell Transport Layer
+       RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity ecdsa-secp384r1-sha384 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using ECDSA with curve name secp384r1
+       and SHA384 hash algorithm.";
+    reference
+      "RFC 5656: Elliptic Curve Algorithm Integration in the
+         Secure Shell Transport Layer
+       RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity ecdsa-secp521r1-sha512 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using ECDSA with curve name secp521r1
+       and SHA512 hash algorithm.";
+    reference
+      "RFC 5656: Elliptic Curve Algorithm Integration in the
+         Secure Shell Transport Layer
+       RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity ed25519 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using EdDSA as defined in RFC 8032 or
+       its successors.";
+    reference
+      "RFC 8032: Edwards-Curve Digital Signature Algorithm (EdDSA)";
+  }
+
+  identity ed448 {
+    base signature-algorithm;
+    description
+      "The signature algorithm using EdDSA as defined in RFC 8032 or
+       its successors.";
+    reference
+      "RFC 8032: Edwards-Curve Digital Signature Algorithm (EdDSA)";
+  }
+
+  identity eccsi {
+    base signature-algorithm;
+    description
+      "The signature algorithm using ECCSI signature as defined in
+       RFC 6507.";
+    reference
+      "RFC 6507:
+         Elliptic Curve-Based Certificateless Signatures for
+         Identity-based Encryption (ECCSI)";
+  }
+
+  /**********************************************/
+  /*   Identities for key exchange algorithms   */
+  /**********************************************/
+
+  identity key-exchange-algorithm {
+    description
+      "A base identity for Diffie-Hellman based key exchange
+       algorithm.";
+  }
+
+  identity psk-only {
+    base key-exchange-algorithm;
+    description
+      "Using Pre-shared key for authentication and key exchange";
+    reference
+      "RFC 4279:
+         Pre-Shared Key cipher suites for Transport Layer Security
+        (TLS)";
+  }
+
+  identity dhe-ffdhe2048 {
+    base key-exchange-algorithm;
+    description
+      "Ephemeral Diffie Hellman key exchange with 2048 bit
+       finite field";
+    reference
+      "RFC 7919:
+         Negotiated Finite Field Diffie-Hellman Ephemeral Parameters
+         for Transport Layer Security (TLS)";
+  }
+
+  identity dhe-ffdhe3072 {
+    base key-exchange-algorithm;
+    description
+      "Ephemeral Diffie Hellman key exchange with 3072 bit finite
+       field";
+    reference
+      "RFC 7919:
+         Negotiated Finite Field Diffie-Hellman Ephemeral Parameters
+         for Transport Layer Security (TLS)";
+  }
+
+  identity dhe-ffdhe4096 {
+    base key-exchange-algorithm;
+    description
+      "Ephemeral Diffie Hellman key exchange with 4096 bit
+       finite field";
+    reference
+      "RFC 7919:
+         Negotiated Finite Field Diffie-Hellman Ephemeral Parameters
+         for Transport Layer Security (TLS)";
+  }
+
+  identity dhe-ffdhe6144 {
+    base key-exchange-algorithm;
+    description
+      "Ephemeral Diffie Hellman key exchange with 6144 bit
+       finite field";
+    reference
+      "RFC 7919:
+         Negotiated Finite Field Diffie-Hellman Ephemeral Parameters
+         for Transport Layer Security (TLS)";
+  }
+
+  identity dhe-ffdhe8192 {
+    base key-exchange-algorithm;
+    description
+      "Ephemeral Diffie Hellman key exchange with 8192 bit
+       finite field";
+    reference
+      "RFC 7919:
+         Negotiated Finite Field Diffie-Hellman Ephemeral Parameters
+         for Transport Layer Security (TLS)";
+  }
+
+  identity psk-dhe-ffdhe2048 {
+    base key-exchange-algorithm;
+    description
+      "Key exchange using pre-shared key with Diffie-Hellman key
+       generation mechanism, where the DH group is FFDHE2048";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity psk-dhe-ffdhe3072 {
+    base key-exchange-algorithm;
+    description
+      "Key exchange using pre-shared key with Diffie-Hellman key
+       generation mechanism, where the DH group is FFDHE3072";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity psk-dhe-ffdhe4096 {
+    base key-exchange-algorithm;
+    description
+      "Key exchange using pre-shared key with Diffie-Hellman key
+       generation mechanism, where the DH group is FFDHE4096";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity psk-dhe-ffdhe6144 {
+    base key-exchange-algorithm;
+    description
+      "Key exchange using pre-shared key with Diffie-Hellman key
+       generation mechanism, where the DH group is FFDHE6144";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity psk-dhe-ffdhe8192 {
+    base key-exchange-algorithm;
+    description
+      "Key exchange using pre-shared key with Diffie-Hellman key
+       generation mechanism, where the DH group is FFDHE8192";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity ecdhe-secp256r1 {
+    base key-exchange-algorithm;
+    description
+      "Ephemeral Diffie Hellman key exchange with elliptic group
+       over curve secp256r1";
+    reference
+      "RFC 8422:
+         Elliptic Curve Cryptography (ECC) Cipher Suites for
+         Transport Layer Security (TLS) Versions 1.2 and Earlier";
+  }
+
+  identity ecdhe-secp384r1 {
+    base key-exchange-algorithm;
+    description
+      "Ephemeral Diffie Hellman key exchange with elliptic group
+       over curve secp384r1";
+    reference
+      "RFC 8422:
+         Elliptic Curve Cryptography (ECC) Cipher Suites for
+         Transport Layer Security (TLS) Versions 1.2 and Earlier";
+  }
+
+  identity ecdhe-secp521r1 {
+    base key-exchange-algorithm;
+    description
+      "Ephemeral Diffie Hellman key exchange with elliptic group
+       over curve secp521r1";
+    reference
+      "RFC 8422:
+         Elliptic Curve Cryptography (ECC) Cipher Suites for
+         Transport Layer Security (TLS) Versions 1.2 and Earlier";
+  }
+
+  identity ecdhe-x25519 {
+    base key-exchange-algorithm;
+    description
+      "Ephemeral Diffie Hellman key exchange with elliptic group
+       over curve x25519";
+    reference
+      "RFC 8422:
+         Elliptic Curve Cryptography (ECC) Cipher Suites for
+         Transport Layer Security (TLS) Versions 1.2 and Earlier";
+  }
+
+  identity ecdhe-x448 {
+    base key-exchange-algorithm;
+    description
+      "Ephemeral Diffie Hellman key exchange with elliptic group
+       over curve x448";
+    reference
+      "RFC 8422:
+         Elliptic Curve Cryptography (ECC) Cipher Suites for
+         Transport Layer Security (TLS) Versions 1.2 and Earlier";
+  }
+
+  identity psk-ecdhe-secp256r1 {
+    base key-exchange-algorithm;
+    description
+      "Key exchange using pre-shared key with elliptic group-based
+       Ephemeral Diffie Hellman key exchange over curve secp256r1";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity psk-ecdhe-secp384r1 {
+    base key-exchange-algorithm;
+    description
+      "Key exchange using pre-shared key with elliptic group-based
+       Ephemeral Diffie Hellman key exchange over curve secp384r1";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity psk-ecdhe-secp521r1 {
+    base key-exchange-algorithm;
+    description
+      "Key exchange using pre-shared key with elliptic group-based
+       Ephemeral Diffie Hellman key exchange over curve secp521r1";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity psk-ecdhe-x25519 {
+    base key-exchange-algorithm;
+    description
+      "Key exchange using pre-shared key with elliptic group-based
+       Ephemeral Diffie Hellman key exchange over curve x25519";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity psk-ecdhe-x448 {
+    base key-exchange-algorithm;
+    description
+      "Key exchange using pre-shared key with elliptic group-based
+       Ephemeral Diffie Hellman key exchange over curve x448";
+    reference
+      "RFC 8446:
+         The Transport Layer Security (TLS) Protocol Version 1.3";
+  }
+
+  identity diffie-hellman-group14-sha1 {
+    base key-exchange-algorithm;
+    description
+      "Using DH group14 and SHA1 for key exchange";
+    reference
+      "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol";
+  }
+
+  identity diffie-hellman-group14-sha256 {
+    base key-exchange-algorithm;
+    description
+      "Using DH group14 and SHA256 for key exchange";
+    reference
+      "RFC 8268:
+         More Modular Exponentiation (MODP) Diffie-Hellman (DH)
+         Key Exchange (KEX) Groups for Secure Shell (SSH)";
+  }
+
+  identity diffie-hellman-group15-sha512 {
+    base key-exchange-algorithm;
+    description
+      "Using DH group15 and SHA512 for key exchange";
+    reference
+      "RFC 8268:
+         More Modular Exponentiation (MODP) Diffie-Hellman (DH)
+         Key Exchange (KEX) Groups for Secure Shell (SSH)";
+  }
+
+  identity diffie-hellman-group16-sha512 {
+    base key-exchange-algorithm;
+    description
+      "Using DH group16 and SHA512 for key exchange";
+    reference
+      "RFC 8268:
+         More Modular Exponentiation (MODP) Diffie-Hellman (DH)
+         Key Exchange (KEX) Groups for Secure Shell (SSH)";
+  }
+
+  identity diffie-hellman-group17-sha512 {
+    base key-exchange-algorithm;
+    description
+      "Using DH group17 and SHA512 for key exchange";
+
+    reference
+      "RFC 8268:
+         More Modular Exponentiation (MODP) Diffie-Hellman (DH)
+         Key Exchange (KEX) Groups for Secure Shell (SSH)";
+  }
+
+  identity diffie-hellman-group18-sha512 {
+    base key-exchange-algorithm;
+    description
+      "Using DH group18 and SHA512 for key exchange";
+    reference
+      "RFC 8268:
+         More Modular Exponentiation (MODP) Diffie-Hellman (DH)
+         Key Exchange (KEX) Groups for Secure Shell (SSH)";
+  }
+
+  identity ecdh-sha2-secp256r1 {
+    base key-exchange-algorithm;
+    description
+      "Elliptic curve-based Diffie Hellman key exchange over curve
+       secp256r1 and using SHA2 for MAC generation";
+    reference
+      "RFC 6239: Suite B Cryptographic Suites for Secure Shell
+       (SSH)";
+  }
+
+  identity ecdh-sha2-secp384r1 {
+    base key-exchange-algorithm;
+    description
+      "Elliptic curve-based Diffie Hellman key exchange over curve
+       secp384r1 and using SHA2 for MAC generation";
+    reference
+      "RFC 6239: Suite B Cryptographic Suites for Secure Shell
+       (SSH)";
+  }
+
+  identity rsaes-oaep {
+    base key-exchange-algorithm;
+    description
+      "RSAES-OAEP combines the RSAEP and RSADP primitives with the
+       EME-OAEP encoding method";
+    reference
+      "RFC 8017:
+         PKCS #1: RSA Cryptography Specifications Version 2.2.";
+  }
+
+  identity rsaes-pkcs1-v1_5 {
+    base key-exchange-algorithm;
+    description
+      " RSAES-PKCS1-v1_5 combines the RSAEP and RSADP primitives
+        with the EME-PKCS1-v1_5 encoding method";
+    reference
+      "RFC 8017:
+         PKCS #1: RSA Cryptography Specifications Version 2.2.";
+  }
+
+  /**********************************************************/
+  /*   Typedefs for identityrefs to above base identities   */
+  /**********************************************************/
+
+  typedef hash-algorithm-ref {
+    type identityref {
+      base hash-algorithm;
+    }
+    description
+      "This typedef enables importing modules to easily define an
+       identityref to the 'hash-algorithm' base identity.";
+  }
+
+  typedef signature-algorithm-ref {
+    type identityref {
+      base signature-algorithm;
+    }
+    description
+      "This typedef enables importing modules to easily define an
+       identityref to the 'signature-algorithm' base identity.";
+  }
+
+  typedef mac-algorithm-ref {
+    type identityref {
+      base mac-algorithm;
+    }
+    description
+      "This typedef enables importing modules to easily define an
+       identityref to the 'mac-algorithm' base identity.";
+  }
+
+  typedef encryption-algorithm-ref {
+    type identityref {
+      base encryption-algorithm;
+    }
+    description
+      "This typedef enables importing modules to easily define an
+       identityref to the 'encryption-algorithm'
+       base identity.";
+  }
+
+  typedef encryption-and-mac-algorithm-ref {
+    type identityref {
+      base encryption-and-mac-algorithm;
+    }
+    description
+      "This typedef enables importing modules to easily define an
+       identityref to the 'encryption-and-mac-algorithm'
+       base identity.";
+  }
+
+  typedef asymmetric-key-algorithm-ref {
+    type identityref {
+      base asymmetric-key-algorithm;
+    }
+    description
+      "This typedef enables importing modules to easily define an
+       identityref to the 'asymmetric-key-algorithm'
+       base identity.";
+  }
+
+  typedef key-exchange-algorithm-ref {
+    type identityref {
+      base key-exchange-algorithm;
+    }
+    description
+      "This typedef enables importing modules to easily define an
+       identityref to the 'key-exchange-algorithm' base identity.";
+  }
+
+  /***************************************************/
+  /*   Typedefs for ASN.1 structures from RFC 5280   */
+  /***************************************************/
+
+  typedef x509 {
+    type binary;
+    description
+      "A Certificate structure, as specified in RFC 5280,
+       encoded using ASN.1 distinguished encoding rules (DER),
+       as specified in ITU-T X.690.";
+    reference
+      "RFC 5280:
+         Internet X.509 Public Key Infrastructure Certificate
+         and Certificate Revocation List (CRL) Profile
+       ITU-T X.690:
+         Information technology - ASN.1 encoding rules:
+         Specification of Basic Encoding Rules (BER),
+         Canonical Encoding Rules (CER) and Distinguished
+         Encoding Rules (DER).";
+  }
+
+  typedef crl {
+    type binary;
+    description
+      "A CertificateList structure, as specified in RFC 5280,
+       encoded using ASN.1 distinguished encoding rules (DER),
+       as specified in ITU-T X.690.";
+    reference
+      "RFC 5280:
+         Internet X.509 Public Key Infrastructure Certificate
+         and Certificate Revocation List (CRL) Profile
+       ITU-T X.690:
+         Information technology - ASN.1 encoding rules:
+         Specification of Basic Encoding Rules (BER),
+         Canonical Encoding Rules (CER) and Distinguished
+         Encoding Rules (DER).";
+  }
+
+  /***********************************************/
+  /*   Typedefs for ASN.1 structures from 5652   */
+  /***********************************************/
+
+  typedef cms {
+    type binary;
+    description
+      "A ContentInfo structure, as specified in RFC 5652,
+       encoded using ASN.1 distinguished encoding rules (DER),
+       as specified in ITU-T X.690.";
+    reference
+      "RFC 5652:
+         Cryptographic Message Syntax (CMS)
+       ITU-T X.690:
+         Information technology - ASN.1 encoding rules:
+         Specification of Basic Encoding Rules (BER),
+         Canonical Encoding Rules (CER) and Distinguished
+         Encoding Rules (DER).";
+  }
+
+  typedef data-content-cms {
+    type cms;
+    description
+      "A CMS structure whose top-most content type MUST be the
+       data content type, as described by Section 4 in RFC 5652.";
+    reference
+      "RFC 5652: Cryptographic Message Syntax (CMS)";
+  }
+
+  typedef signed-data-cms {
+    type cms;
+    description
+      "A CMS structure whose top-most content type MUST be the
+       signed-data content type, as described by Section 5 in
+       RFC 5652.";
+    reference
+      "RFC 5652: Cryptographic Message Syntax (CMS)";
+  }
+
+  typedef enveloped-data-cms {
+    type cms;
+    description
+      "A CMS structure whose top-most content type MUST be the
+       enveloped-data content type, as described by Section 6
+       in RFC 5652.";
+    reference
+      "RFC 5652: Cryptographic Message Syntax (CMS)";
+  }
+
+  typedef digested-data-cms {
+    type cms;
+    description
+      "A CMS structure whose top-most content type MUST be the
+       digested-data content type, as described by Section 7
+       in RFC 5652.";
+    reference
+      "RFC 5652: Cryptographic Message Syntax (CMS)";
+  }
+
+  typedef encrypted-data-cms {
+    type cms;
+    description
+      "A CMS structure whose top-most content type MUST be the
+       encrypted-data content type, as described by Section 8
+       in RFC 5652.";
+    reference
+      "RFC 5652: Cryptographic Message Syntax (CMS)";
+  }
+
+  typedef authenticated-data-cms {
+    type cms;
+    description
+      "A CMS structure whose top-most content type MUST be the
+       authenticated-data content type, as described by Section 9
+       in RFC 5652.";
+    reference
+      "RFC 5652: Cryptographic Message Syntax (CMS)";
+  }
+
+  /***************************************************/
+  /*   Typedefs for structures related to RFC 4253   */
+  /***************************************************/
+
+  typedef ssh-host-key {
+    type binary;
+    description
+      "The binary public key data for this SSH key, as
+       specified by RFC 4253, Section 6.6, i.e.:
+
+         string    certificate or public key format
+                   identifier
+         byte[n]   key/certificate data.";
+    reference
+      "RFC 4253: The Secure Shell (SSH) Transport Layer
+                 Protocol";
+  }
+
+  /*********************************************************/
+  /*   Typedefs for ASN.1 structures related to RFC 5280   */
+  /*********************************************************/
+
+  typedef trust-anchor-cert-x509 {
+    type x509;
+    description
+      "A Certificate structure that MUST encode a self-signed
+       root certificate.";
+  }
+
+  typedef end-entity-cert-x509 {
+    type x509;
+    description
+      "A Certificate structure that MUST encode a certificate
+       that is neither self-signed nor having Basic constraint
+       CA true.";
+  }
+
+  /*********************************************************/
+  /*   Typedefs for ASN.1 structures related to RFC 5652   */
+  /*********************************************************/
+
+  typedef trust-anchor-cert-cms {
+    type signed-data-cms;
+    description
+      "A CMS SignedData structure that MUST contain the chain of
+       X.509 certificates needed to authenticate the certificate
+       presented by a client or end-entity.
+
+       The CMS MUST contain only a single chain of certificates.
+       The client or end-entity certificate MUST only authenticate
+       to last intermediate CA certificate listed in the chain.
+
+       In all cases, the chain MUST include a self-signed root
+       certificate.  In the case where the root certificate is
+       itself the issuer of the client or end-entity certificate,
+       only one certificate is present.
+
+       This CMS structure MAY (as applicable where this type is
+       used) also contain suitably fresh (as defined by local
+       policy) revocation objects with which the device can
+       verify the revocation status of the certificates.
+
+       This CMS encodes the degenerate form of the SignedData
+       structure that is commonly used to disseminate X.509
+       certificates and revocation objects (RFC 5280).";
+    reference
+      "RFC 5280:
+         Internet X.509 Public Key Infrastructure Certificate
+         and Certificate Revocation List (CRL) Profile.";
+  }
+
+  typedef end-entity-cert-cms {
+    type signed-data-cms;
+    description
+      "A CMS SignedData structure that MUST contain the end
+       entity certificate itself, and MAY contain any number
+       of intermediate certificates leading up to a trust
+       anchor certificate.  The trust anchor certificate
+       MAY be included as well.
+
+       The CMS MUST contain a single end entity certificate.
+       The CMS MUST NOT contain any spurious certificates.
+
+       This CMS structure MAY (as applicable where this type is
+       used) also contain suitably fresh (as defined by local
+       policy) revocation objects with which the device can
+       verify the revocation status of the certificates.
+
+       This CMS encodes the degenerate form of the SignedData
+       structure that is commonly used to disseminate X.509
+       certificates and revocation objects (RFC 5280).";
+    reference
+      "RFC 5280:
+         Internet X.509 Public Key Infrastructure Certificate
+         and Certificate Revocation List (CRL) Profile.";
+  }
+
+  /**********************************************/
+  /*   Groupings for keys and/or certificates   */
+  /**********************************************/
+
+  grouping public-key-grouping {
+    description
+      "A public key.
+
+       The 'algorithm' and 'public-key' nodes are not
+       mandatory because they MAY be defined in <operational>.
+       Implementations SHOULD assert that these values are
+       either configured or that they exist in <operational>.";
+    leaf algorithm {
+      nacm:default-deny-write;
+      type asymmetric-key-algorithm-ref;
+      must '../public-key';
+      description
+        "Identifies the key's algorithm.  More specifically,
+         this leaf specifies how the 'public-key' binary leaf
+         is encoded.";
+      reference
+        "RFC CCCC: Common YANG Data Types for Cryptography";
+    }
+    leaf public-key {
+      nacm:default-deny-write;
+      type binary;
+      must '../algorithm';
+      description
+        "A binary that contains the value of the public key.  The
+         interpretation of the content is defined by the key
+         algorithm.  For example, a DSA key is an integer, an RSA
+         key is represented as RSAPublicKey as defined in
+         RFC 8017, and an Elliptic Curve Cryptography (ECC) key
+         is represented using the 'publicKey' described in
+         RFC 5915.";
+      reference
+        "RFC 8017: Public-Key Cryptography Standards (PKCS) #1:
+                   RSA Cryptography Specifications Version 2.2.
+         RFC 5915: Elliptic Curve Private Key Structure.";
+    }
+  }
+
+  grouping asymmetric-key-pair-grouping {
+    description
+      "A private/public key pair.
+       The 'algorithm', 'public-key', and 'private-key'  nodes are
+       not mandatory because they MAY be defined in <operational>.
+       Implementations SHOULD assert that these values are either
+       configured or that they exist in <operational>.";
+    uses public-key-grouping;
+    leaf private-key {
+      nacm:default-deny-all;
+      type union {
+        type binary;
+        type enumeration {
+          enum permanently-hidden {
+            description
+              "The private key is inaccessible due to being
+               protected by the system (e.g., a cryptographic
+               hardware module).
+
+               How such keys are backed-up and restored, if
+               at all, is implementation specific.
+
+               Servers MUST fail any attempt by a client to
+               configure this value directly.  This value is
+               not set by clients, but rather is set by the
+               'generate-hidden-key' and 'install-hidden-key'
+               actions.";
+          }
+        }
+      }
+      must '../public-key';
+      description
+        "A binary that contains the value of the private key.  The
+         interpretation of the content is defined by the key
+         algorithm.  For example, a DSA key is an integer, an RSA
+         key is represented as RSAPrivateKey as defined in
+         RFC 8017, and an Elliptic Curve Cryptography (ECC) key
+         is represented as ECPrivateKey as defined in RFC 5915.";
+      reference
+        "RFC 8017: Public-Key Cryptography Standards (PKCS) #1:
+                   RSA Cryptography Specifications Version 2.2.
+         RFC 5915: Elliptic Curve Private Key Structure.";
+    } // private-key
+
+    action generate-hidden-key {
+      nacm:default-deny-all;
+      description
+        "Requests the device to generate a hidden key using the
+         specified asymmetric key algorithm.  This action is
+         used to request the system to generate a key that is
+         'permanently-hidden', perhaps protected by a cryptographic
+         hardware module.  The resulting asymmetric key values are
+         considered operational state and hence present only in
+         <operational> and bound to the lifetime of the parent
+         'config true' node.  Subsequent invocations of this or
+         the 'install-hidden-key' action are denied with error-tag
+         'data-exists'.";
+      input {
+        leaf algorithm {
+          type asymmetric-key-algorithm-ref;
+          mandatory true;
+          description
+            "The algorithm to be used when generating the
+             asymmetric key.";
+          reference
+            "RFC CCCC: Common YANG Data Types for Cryptography";
+        }
+      }
+    } // generate-hidden-key
+
+    action install-hidden-key {
+      nacm:default-deny-all;
+      description
+        "Requests the device to load the specified values into
+         a hidden key.  The resulting asymmetric key values are
+         considered operational state and hence present only in
+         <operational> and bound to the lifetime of the parent
+         'config true' node.  Subsequent invocations of this
+         or the 'generate-hidden-key' action are denied with
+         error-tag 'data-exists'.";
+      input {
+        leaf algorithm {
+          type asymmetric-key-algorithm-ref;
+          mandatory true;
+          description
+            "The algorithm to be used when generating the
+             asymmetric key.";
+          reference
+            "RFC CCCC: Common YANG Data Types for Cryptography";
+        }
+        leaf public-key {
+          type binary;
+          description
+            "A binary that contains the value of the public key.
+             The interpretation of the content is defined by the key
+             algorithm.  For example, a DSA key is an integer, an
+             RSA key is represented as RSAPublicKey as defined in
+             RFC 8017, and an Elliptic Curve Cryptography (ECC) key
+             is represented using the 'publicKey' described in
+             RFC 5915.";
+          reference
+            "RFC 8017: Public-Key Cryptography Standards (PKCS) #1:
+                       RSA Cryptography Specifications Version 2.2.
+             RFC 5915: Elliptic Curve Private Key Structure.";
+        }
+        leaf private-key {
+          type binary;
+          description
+            "A binary that contains the value of the private key.
+             The interpretation of the content is defined by the key
+             algorithm.  For example, a DSA key is an integer, an RSA
+             key is represented as RSAPrivateKey as defined in
+             RFC 8017, and an Elliptic Curve Cryptography (ECC) key
+             is represented as ECPrivateKey as defined in RFC 5915.";
+          reference
+            "RFC 8017: Public-Key Cryptography Standards (PKCS) #1:
+                       RSA Cryptography Specifications Version 2.2.
+             RFC 5915: Elliptic Curve Private Key Structure.";
+        }
+      }
+    } // install-hidden-key
+  } // asymmetric-key-pair-grouping
+
+
+  grouping trust-anchor-cert-grouping {
+    description
+      "A trust anchor certificate, and a notification for when
+       it is about to (or already has) expire.";
+    leaf cert {
+      nacm:default-deny-write;
+      type trust-anchor-cert-cms;
+      description
+        "The binary certificate data for this certificate.";
+      reference
+        "RFC YYYY: Common YANG Data Types for Cryptography";
+    }
+    notification certificate-expiration {
+      description
+        "A notification indicating that the configured certificate
+         is either about to expire or has already expired.  When to
+         send notifications is an implementation specific decision,
+         but it is RECOMMENDED that a notification be sent once a
+         month for 3 months, then once a week for four weeks, and
+         then once a day thereafter until the issue is resolved.";
+      leaf expiration-date {
+        type yang:date-and-time;
+        mandatory true;
+        description
+          "Identifies the expiration date on the certificate.";
+      }
+    }
+  }
+
+  grouping trust-anchor-certs-grouping {
+    description
+      "A list of trust anchor certificates, and a notification
+       for when one is about to (or already has) expire.";
+    leaf-list cert {
+      nacm:default-deny-write;
+      type trust-anchor-cert-cms;
+      description
+        "The binary certificate data for this certificate.";
+      reference
+        "RFC YYYY: Common YANG Data Types for Cryptography";
+    }
+    notification certificate-expiration {
+      description
+        "A notification indicating that the configured certificate
+         is either about to expire or has already expired.  When to
+         send notifications is an implementation specific decision,
+         but it is RECOMMENDED that a notification be sent once a
+         month for 3 months, then once a week for four weeks, and
+         then once a day thereafter until the issue is resolved.";
+      leaf expiration-date {
+        type yang:date-and-time;
+        mandatory true;
+        description
+          "Identifies the expiration date on the certificate.";
+      }
+    }
+  }
+
+  grouping end-entity-cert-grouping {
+    description
+      "An end entity certificate, and a notification for when
+       it is about to (or already has) expire.";
+    leaf cert {
+      nacm:default-deny-write;
+      type end-entity-cert-cms;
+      description
+        "The binary certificate data for this certificate.";
+      reference
+        "RFC YYYY: Common YANG Data Types for Cryptography";
+    }
+    notification certificate-expiration {
+      description
+        "A notification indicating that the configured certificate
+         is either about to expire or has already expired.  When to
+         send notifications is an implementation specific decision,
+         but it is RECOMMENDED that a notification be sent once a
+         month for 3 months, then once a week for four weeks, and
+         then once a day thereafter until the issue is resolved.";
+      leaf expiration-date {
+        type yang:date-and-time;
+        mandatory true;
+        description
+          "Identifies the expiration date on the certificate.";
+      }
+    }
+  }
+
+  grouping end-entity-certs-grouping {
+    description
+      "A list of end entity certificates, and a notification for
+       when one is about to (or already has) expire.";
+    leaf-list cert {
+      nacm:default-deny-write;
+      type end-entity-cert-cms;
+      description
+        "The binary certificate data for this certificate.";
+      reference
+        "RFC YYYY: Common YANG Data Types for Cryptography";
+    }
+    notification certificate-expiration {
+      description
+        "A notification indicating that the configured certificate
+         is either about to expire or has already expired.  When to
+         send notifications is an implementation specific decision,
+         but it is RECOMMENDED that a notification be sent once a
+         month for 3 months, then once a week for four weeks, and
+         then once a day thereafter until the issue is resolved.";
+      leaf expiration-date {
+        type yang:date-and-time;
+        mandatory true;
+        description
+          "Identifies the expiration date on the certificate.";
+      }
+    }
+  }
+
+  grouping asymmetric-key-pair-with-cert-grouping {
+    description
+      "A private/public key pair and an associated certificate.";
+    uses asymmetric-key-pair-grouping;
+    uses end-entity-cert-grouping;
+
+    action generate-certificate-signing-request {
+      nacm:default-deny-all;
+      description
+        "Generates a certificate signing request structure for
+         the associated asymmetric key using the passed subject
+         and attribute values.  The specified assertions need
+         to be appropriate for the certificate's use.  For
+         example, an entity certificate for a TLS server
+         SHOULD have values that enable clients to satisfy
+         RFC 6125 processing.";
+      input {
+        leaf subject {
+          type binary;
+          mandatory true;
+          description
+            "The 'subject' field per the CertificationRequestInfo
+              structure as specified by RFC 2986, Section 4.1
+              encoded using the ASN.1 distinguished encoding
+              rules (DER), as specified in ITU-T X.690.";
+          reference
+            "RFC 2986:
+               PKCS #10: Certification Request Syntax
+                         Specification Version 1.7.
+             ITU-T X.690:
+               Information technology - ASN.1 encoding rules:
+               Specification of Basic Encoding Rules (BER),
+               Canonical Encoding Rules (CER) and Distinguished
+               Encoding Rules (DER).";
+        }
+        leaf attributes {
+          type binary;
+          description
+            "The 'attributes' field from the structure
+             CertificationRequestInfo as specified by RFC 2986,
+             Section 4.1 encoded using the ASN.1 distinguished
+             encoding rules (DER), as specified in ITU-T X.690.";
+          reference
+            "RFC 2986:
+               PKCS #10: Certification Request Syntax
+                         Specification Version 1.7.
+             ITU-T X.690:
+               Information technology - ASN.1 encoding rules:
+               Specification of Basic Encoding Rules (BER),
+               Canonical Encoding Rules (CER) and Distinguished
+               Encoding Rules (DER).";
+        }
+      }
+      output {
+        leaf certificate-signing-request {
+          type binary;
+          mandatory true;
+          description
+            "A CertificationRequest structure as specified by
+             RFC 2986, Section 4.2 encoded using the ASN.1
+             distinguished encoding rules (DER), as specified
+             in ITU-T X.690.";
+          reference
+            "RFC 2986:
+               PKCS #10: Certification Request Syntax
+                         Specification Version 1.7.
+             ITU-T X.690:
+               Information technology - ASN.1 encoding rules:
+               Specification of Basic Encoding Rules (BER),
+               Canonical Encoding Rules (CER) and Distinguished
+               Encoding Rules (DER).";
+        }
+      }
+    } // generate-certificate-signing-request
+  } // asymmetric-key-pair-with-cert-grouping
+
+
+  grouping asymmetric-key-pair-with-certs-grouping {
+    description
+      "A private/public key pair and associated certificates.";
+    uses asymmetric-key-pair-grouping;
+    container certificates {
+      nacm:default-deny-write;
+      description
+        "Certificates associated with this asymmetric key.
+         More than one certificate supports, for instance,
+         a TPM-protected asymmetric key that has both IDevID
+         and LDevID certificates associated.";
+      list certificate {
+        key "name";
+        description
+          "A certificate for this asymmetric key.";
+        leaf name {
+          type string;
+          description
+            "An arbitrary name for the certificate.  If the name
+             matches the name of a certificate that exists
+             independently in <operational> (i.e., an IDevID),
+             then the 'cert' node MUST NOT be configured.";
+        }
+        uses end-entity-cert-grouping;
+      }
+    } // certificates
+
+    action generate-certificate-signing-request {
+      nacm:default-deny-all;
+      description
+        "Generates a certificate signing request structure for
+         the associated asymmetric key using the passed subject
+         and attribute values.  The specified assertions need
+         to be appropriate for the certificate's use.  For
+         example, an entity certificate for a TLS server
+         SHOULD have values that enable clients to satisfy
+         RFC 6125 processing.";
+      input {
+        leaf subject {
+          type binary;
+          mandatory true;
+          description
+            "The 'subject' field per the CertificationRequestInfo
+              structure as specified by RFC 2986, Section 4.1
+              encoded using the ASN.1 distinguished encoding
+              rules (DER), as specified in ITU-T X.690.";
+          reference
+            "RFC 2986:
+               PKCS #10: Certification Request Syntax
+                         Specification Version 1.7.
+             ITU-T X.690:
+               Information technology - ASN.1 encoding rules:
+               Specification of Basic Encoding Rules (BER),
+               Canonical Encoding Rules (CER) and Distinguished
+               Encoding Rules (DER).";
+        }
+        leaf attributes {
+          type binary;
+          description
+            "The 'attributes' field from the structure
+             CertificationRequestInfo as specified by RFC 2986,
+             Section 4.1 encoded using the ASN.1 distinguished
+             encoding rules (DER), as specified in ITU-T X.690.";
+          reference
+            "RFC 2986:
+               PKCS #10: Certification Request Syntax
+                         Specification Version 1.7.
+             ITU-T X.690:
+               Information technology - ASN.1 encoding rules:
+               Specification of Basic Encoding Rules (BER),
+               Canonical Encoding Rules (CER) and Distinguished
+               Encoding Rules (DER).";
+        }
+      }
+      output {
+        leaf certificate-signing-request {
+          type binary;
+          mandatory true;
+          description
+            "A CertificationRequest structure as specified by
+             RFC 2986, Section 4.2 encoded using the ASN.1
+             distinguished encoding rules (DER), as specified
+             in ITU-T X.690.";
+          reference
+            "RFC 2986:
+               PKCS #10: Certification Request Syntax
+                         Specification Version 1.7.
+             ITU-T X.690:
+               Information technology - ASN.1 encoding rules:
+               Specification of Basic Encoding Rules (BER),
+               Canonical Encoding Rules (CER) and Distinguished
+               Encoding Rules (DER).";
+        }
+      }
+    } // generate-certificate-signing-request
+  } // asymmetric-key-pair-with-certs-grouping
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-crypto-types@2019-10-18.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-crypto-types@2019-10-18.yang
deleted file mode 100644
index c620734..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-crypto-types@2019-10-18.yang
+++ /dev/null
@@ -1,2173 +0,0 @@
-module ietf-crypto-types {
-  yang-version 1.1;
-  namespace "urn:ietf:params:xml:ns:yang:ietf-crypto-types";
-  prefix ct;
-
-  import ietf-yang-types {
-    prefix yang;
-    reference
-      "RFC 6991: Common YANG Data Types";
-  }
-
-  import ietf-netconf-acm {
-    prefix nacm;
-    reference
-      "RFC 8341: Network Configuration Access Control Model";
-  }
-
-  organization
-    "IETF NETCONF (Network Configuration) Working Group";
-  contact
-    "WG Web:   <http://datatracker.ietf.org/wg/netconf/>
-     WG List:  <mailto:netconf@ietf.org>
-     Author:   Kent Watsen <mailto:kent+ietf@watsen.net>
-     Author:   Wang Haiguang <wang.haiguang.shieldlab@huawei.com>";
-
-  description
-    "This module defines common YANG types for cryptographic
-     applications.
-
-     Copyright (c) 2019 IETF Trust and the persons identified
-     as authors of the code. All rights reserved.
-
-     Redistribution and use in source and binary forms, with
-     or without modification, is permitted pursuant to, and
-     subject to the license terms contained in, the Simplified
-     BSD License set forth in Section 4.c of the IETF Trust's
-     Legal Provisions Relating to IETF Documents
-     (https://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC XXXX
-     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC
-     itself for full legal notices.;
-
-     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL',
-     'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED',
-     'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document
-     are to be interpreted as described in BCP 14 (RFC 2119)
-     (RFC 8174) when, and only when, they appear in all
-     capitals, as shown here.";
-
-  revision 2019-10-18 {
-    description
-      "Initial version";
-    reference
-      "RFC XXXX: Common YANG Data Types for Cryptography";
-  }
-
-  /**************************************/
-  /*   Identities for Hash Algorithms   */
-  /**************************************/
-
-  typedef hash-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Hash algorithm is NULL.";
-        }
-        enum sha1 {
-          value 1;
-          status obsolete;
-          description
-            "The SHA1 algorithm.";
-          reference
-            "RFC 3174: US Secure Hash Algorithms 1 (SHA1).";
-        }
-        enum sha-224 {
-          value 2;
-          description
-            "The SHA-224 algorithm.";
-          reference
-            "RFC 6234: US Secure Hash Algorithms.";
-        }
-        enum sha-256 {
-          value 3;
-          description
-            "The SHA-256 algorithm.";
-          reference
-            "RFC 6234: US Secure Hash Algorithms.";
-        }
-        enum sha-384 {
-          value 4;
-          description
-            "The SHA-384 algorithm.";
-          reference
-            "RFC 6234: US Secure Hash Algorithms.";
-        }
-        enum sha-512 {
-          value 5;
-          description
-            "The SHA-512 algorithm.";
-          reference
-            "RFC 6234: US Secure Hash Algorithms.";
-        }
-        enum shake-128 {
-          value 6;
-          description
-            "The SHA3 algorithm with 128-bits output.";
-          reference
-            "National Institute of Standards and Technology,
-            SHA-3 Standard: Permutation-Based Hash and
-            Extendable-Output Functions, FIPS PUB 202, DOI
-            10.6028/NIST.FIPS.202, August 2015.";
-        }
-        enum shake-224 {
-          value 7;
-          description
-            "The SHA3 algorithm with 224-bits output.";
-          reference
-            "National Institute of Standards and Technology,
-            SHA-3 Standard: Permutation-Based Hash and
-            Extendable-Output Functions, FIPS PUB 202, DOI
-            10.6028/NIST.FIPS.202, August 2015.";
-        }
-        enum shake-256 {
-          value 8;
-          description
-            "The SHA3 algorithm with 256-bits output.";
-          reference
-            "National Institute of Standards and Technology,
-            SHA-3 Standard: Permutation-Based Hash and
-            Extendable-Output Functions, FIPS PUB 202, DOI
-            10.6028/NIST.FIPS.202, August 2015.";
-        }
-        enum shake-384 {
-          value 9;
-          description
-            "The SHA3 algorithm with 384-bits output.";
-          reference
-            "National Institute of Standards and Technology,
-            SHA-3 Standard: Permutation-Based Hash and
-            Extendable-Output Functions, FIPS PUB 202, DOI
-            10.6028/NIST.FIPS.202, August 2015.";
-        }
-        enum shake-512 {
-          value 10;
-          description
-            "The SHA3 algorithm with 384-bits output.";
-          reference
-            "National Institute of Standards and Technology,
-            SHA-3 Standard: Permutation-Based Hash and
-            Extendable-Output Functions, FIPS PUB 202, DOI
-            10.6028/NIST.FIPS.202, August 2015.";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol families
-       according to the hash algorithm value assigned by IANA. The
-       setting is optional and by default is 0.  The enumeration
-       filed is set to the selected hash algorithm.";
-  }
-
-  /***********************************************/
-  /*  Identities for Asymmetric Key Algorithms   */
-  /***********************************************/
-
-  typedef asymmetric-key-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Asymetric key algorithm is NULL.";
-        }
-        enum rsa1024 {
-          value 1;
-          description
-            "The RSA algorithm using a 1024-bit key.";
-          reference
-            "RFC 8017: PKCS #1: RSA Cryptography
-             Specifications Version 2.2.";
-        }
-        enum rsa2048 {
-          value 2;
-          description
-            "The RSA algorithm using a 2048-bit key.";
-          reference
-            "RFC 8017:
-             PKCS #1: RSA Cryptography Specifications Version 2.2.";
-        }
-        enum rsa3072 {
-          value 3;
-          description
-            "The RSA algorithm using a 3072-bit key.";
-          reference
-            "RFC 8017:
-             PKCS #1: RSA Cryptography Specifications Version 2.2.";
-        }
-        enum rsa4096 {
-          value 4;
-          description
-            "The RSA algorithm using a 4096-bit key.";
-          reference
-            "RFC 8017:
-             PKCS #1: RSA Cryptography Specifications Version 2.2.";
-        }
-        enum rsa7680 {
-          value 5;
-          description
-            "The RSA algorithm using a 7680-bit key.";
-          reference
-            "RFC 8017:
-             PKCS #1: RSA Cryptography Specifications Version 2.2.";
-        }
-        enum rsa15360 {
-          value 6;
-          description
-            "The RSA algorithm using a 15360-bit key.";
-          reference
-            "RFC 8017:
-             PKCS #1: RSA Cryptography Specifications Version 2.2.";
-        }
-        enum secp192r1 {
-          value 7;
-          description
-            "The asymmetric algorithm using a NIST P192 Curve.";
-          reference
-            "RFC 6090:
-               Fundamental Elliptic Curve Cryptography Algorithms.
-             RFC 5480:
-                Elliptic Curve Cryptography Subject Public Key
-                Information.";
-        }
-        enum secp224r1 {
-          value 8;
-          description
-            "The asymmetric algorithm using a NIST P224 Curve.";
-          reference
-            "RFC 6090:
-               Fundamental Elliptic Curve Cryptography Algorithms.
-             RFC 5480:
-               Elliptic Curve Cryptography Subject Public Key
-               Information.";
-        }
-        enum secp256r1 {
-          value 9;
-          description
-            "The asymmetric algorithm using a NIST P256 Curve.";
-          reference
-            "RFC 6090:
-               Fundamental Elliptic Curve Cryptography Algorithms.
-             RFC 5480:
-               Elliptic Curve Cryptography Subject Public Key
-               Information.";
-        }
-        enum secp384r1 {
-          value 10;
-          description
-            "The asymmetric algorithm using a NIST P384 Curve.";
-          reference
-            "RFC 6090:
-               Fundamental Elliptic Curve Cryptography Algorithms.
-             RFC 5480:
-               Elliptic Curve Cryptography Subject Public Key
-               Information.";
-        }
-        enum secp521r1 {
-          value 11;
-          description
-            "The asymmetric algorithm using a NIST P521 Curve.";
-          reference
-            "RFC 6090:
-               Fundamental Elliptic Curve Cryptography Algorithms.
-             RFC 5480:
-               Elliptic Curve Cryptography Subject Public Key
-               Information.";
-        }
-        enum x25519 {
-          value 12;
-          description
-            "The asymmetric algorithm using a x.25519 Curve.";
-          reference
-            "RFC 7748:
-               Elliptic Curves for Security.";
-        }
-        enum x448 {
-          value 13;
-          description
-            "The asymmetric algorithm using a x.448 Curve.";
-          reference
-            "RFC 7748:
-               Elliptic Curves for Security.";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the asymmetric key algorithm value
-       assigned by IANA. The setting is optional and by default
-       is 0.  The enumeration filed is set to the selected
-       asymmetric key algorithm.";
-  }
-
-  /*************************************/
-  /*   Identities for MAC Algorithms   */
-  /*************************************/
-
-  typedef mac-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "mac algorithm is NULL.";
-        }
-        enum hmac-sha1 {
-          value 1;
-          description
-            "Generating MAC using SHA1 hash function";
-          reference
-            "RFC 3174: US Secure Hash Algorithm 1 (SHA1)";
-        }
-        enum hmac-sha1-96 {
-          value 2;
-          description
-            "Generating MAC using SHA1 hash function";
-          reference
-            "RFC 2404: The Use of HMAC-SHA-1-96 within ESP and AH";
-        }
-        enum hmac-sha2-224 {
-          value 3;
-          description
-            "Generating MAC using SHA2 hash function";
-          reference
-            "RFC 6234: US Secure Hash Algorithms
-             (SHA and SHA-based HMAC and HKDF)";
-        }
-        enum hmac-sha2-256 {
-          value 4;
-          description
-            "Generating MAC using SHA2 hash function";
-          reference
-            "RFC 6234: US Secure Hash Algorithms
-             (SHA and SHA-based HMAC and HKDF)";
-        }
-        enum hmac-sha2-256-128 {
-          value 5;
-          description
-            "Generating a 256 bits MAC using SHA2 hash function and
-             truncate it to 128 bits";
-          reference
-            "RFC 4868: Using HMAC-SHA-256, HMAC-SHA-384,
-             and HMAC-SHA-512 with IPsec";
-        }
-        enum hmac-sha2-384 {
-          value 6;
-          description
-            "Generating a 384 bits MAC using SHA2 hash function";
-          reference
-            "RFC 6234: US Secure Hash Algorithms
-             (SHA and SHA-based HMAC and HKDF)";
-        }
-        enum hmac-sha2-384-192 {
-          value 7;
-          description
-            "Generating a 384 bits MAC using SHA2 hash function and
-             truncate it to 192 bits";
-          reference
-            "RFC 4868: Using HMAC-SHA-256, HMAC-SHA-384,
-             and HMAC-SHA-512 with IPsec";
-        }
-        enum hmac-sha2-512 {
-          value 8;
-          description
-            "Generating a 512 bits MAC using SHA2 hash function";
-          reference
-            "RFC 6234: US Secure Hash Algorithms
-             (SHA and SHA-based HMAC and HKDF)";
-        }
-        enum hmac-sha2-512-256 {
-          value 9;
-          description
-            "Generating a 512 bits MAC using SHA2 hash function and
-             truncate it to 256 bits";
-          reference
-            "RFC 4868: Using HMAC-SHA-256, HMAC-SHA-384,
-             and HMAC-SHA-512 with IPsec";
-        }
-        enum aes-128-gmac {
-          value 10;
-          description
-            "Generating 128-bit MAC using the Advanced Encryption
-             Standard (AES) Galois Message Authentication Code
-             (GMAC) as a mechanism to provide data origin
-             authentication.";
-          reference
-            "RFC 4543:
-               The Use of Galois Message Authentication Code (GMAC)
-               in IPsec ESP and AH";
-        }
-        enum aes-192-gmac {
-          value 11;
-          description
-            "Generating 192-bit MAC using the Advanced Encryption
-             Standard (AES) Galois Message Authentication Code
-             (GMAC) as a mechanism to provide data origin
-             authentication.";
-          reference
-            "RFC 4543:
-               The Use of Galois Message Authentication Code (GMAC)
-               in IPsec ESP and AH";
-        }
-        enum aes-256-gmac {
-          value 12;
-          description
-            "Generating 256-bit MAC using the Advanced Encryption
-             Standard (AES) Galois Message Authentication Code
-             (GMAC) as a mechanism to provide data origin
-             authentication.";
-          reference
-            "RFC 4543:
-               The Use of Galois Message Authentication Code (GMAC)
-               in IPsec ESP and AH";
-        }
-        enum aes-cmac-96 {
-          value 13;
-          description
-            "Generating 96-bit MAC using Advanced Encryption
-             Standard (AES) Cipher-based Message Authentication
-             Code (CMAC)";
-          reference
-            "RFC 4494:
-               The AES-CMAC Algorithm and its Use with IPsec";
-        }
-        enum aes-cmac-128 {
-          value 14;
-          description
-            "Generating 128-bit MAC using Advanced Encryption
-             Standard (AES) Cipher-based Message Authentication
-             Code (CMAC)";
-          reference
-            "RFC 4494:
-               The AES-CMAC Algorithm and its Use with IPsec";
-        }
-        enum sha1-des3-kd {
-          value 15;
-          description
-            "Generating MAC using triple DES encryption function";
-          reference
-            "RFC 3961:
-               Encryption and Checksum Specifications for Kerberos
-               5";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the mac algorithm value assigned by
-       IANA. The setting is optional and by default is 0.  The
-       enumeration filed is set to the selected mac algorithm.";
-  }
-
-  /********************************************/
-  /*   Identities for Encryption Algorithms   */
-  /********************************************/
-
-  typedef encryption-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Encryption algorithm is NULL.";
-        }
-        enum aes-128-cbc {
-          value 1;
-          description
-            "Encrypt message with AES algorithm in CBC mode with
-             a key length of 128 bits.";
-          reference
-            "RFC 3565: Use of the Advanced Encryption Standard (AES)
-             Encryption Algorithm in Cryptographic Message Syntax
-             (CMS)";
-        }
-        enum aes-192-cbc {
-          value 2;
-          description
-            "Encrypt message with AES algorithm in CBC mode with
-             a key length of 192 bits";
-          reference
-            "RFC 3565: Use of the Advanced Encryption Standard (AES)
-             Encryption Algorithm in Cryptographic Message Syntax
-             (CMS)";
-        }
-        enum aes-256-cbc {
-          value 3;
-          description
-            "Encrypt message with AES algorithm in CBC mode with
-             a key length of 256 bits";
-          reference
-            "RFC 3565: Use of the Advanced Encryption Standard (AES)
-             Encryption Algorithm in Cryptographic Message Syntax
-             (CMS)";
-        }
-        enum aes-128-ctr {
-          value 4;
-          description
-            "Encrypt message with AES algorithm in CTR mode with
-             a key length of 128 bits";
-          reference
-            "RFC 3686:
-               Using Advanced Encryption Standard (AES) Counter
-               Mode with IPsec Encapsulating Security Payload
-               (ESP)";
-        }
-        enum aes-192-ctr {
-          value 5;
-          description
-            "Encrypt message with AES algorithm in CTR mode with
-             a key length of 192 bits";
-          reference
-            "RFC 3686:
-               Using Advanced Encryption Standard (AES) Counter
-               Mode with IPsec Encapsulating Security Payload
-               (ESP)";
-        }
-        enum aes-256-ctr {
-          value 6;
-          description
-            "Encrypt message with AES algorithm in CTR mode with
-             a key length of 256 bits";
-          reference
-            "RFC 3686:
-               Using Advanced Encryption Standard (AES) Counter
-               Mode with IPsec Encapsulating Security Payload
-               (ESP)";
-        }
-        enum des3-cbc-sha1-kd {
-          value 7;
-          description
-            "Encrypt message with 3DES algorithm in CBC mode
-             with sha1 function for key derivation";
-          reference
-            "RFC 3961:
-               Encryption and Checksum Specifications for
-               Kerberos 5";
-        }
-        enum rc4-hmac {
-          value 8;
-          description
-            "Encrypt message with rc4 algorithm";
-          reference
-            "RFC 4757:
-               The RC4-HMAC Kerberos Encryption Types Used by
-               Microsoft Windows";
-        }
-        enum rc4-hmac-exp {
-          value 9;
-          description
-            "Encrypt message with rc4 algorithm that is exportable";
-          reference
-            "RFC 4757:
-               The RC4-HMAC Kerberos Encryption Types Used by
-               Microsoft Windows";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the encryption algorithm value
-       assigned by IANA. The setting is optional and by default
-       is 0.  The enumeration filed is set to the selected
-       encryption algorithm.";
-  }
-
-  /****************************************************/
-  /*   Identities for Encryption and MAC Algorithms   */
-  /****************************************************/
-
-  typedef encryption-and-mac-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Encryption and MAC algorithm is NULL.";
-          reference
-            "None";
-        }
-        enum aes-128-ccm {
-          value 1;
-          description
-            "Encrypt message with AES algorithm in CCM
-             mode with a key length of 128 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4309: Using Advanced Encryption Standard
-             (AES) CCM Mode with IPsec Encapsulating Security
-             Payload (ESP)";
-        }
-        enum aes-192-ccm {
-          value 2;
-          description
-            "Encrypt message with AES algorithm in CCM
-             mode with a key length of 192 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4309: Using Advanced Encryption Standard
-             (AES) CCM Mode with IPsec Encapsulating Security
-             Payload (ESP)";
-        }
-        enum aes-256-ccm {
-          value 3;
-          description
-            "Encrypt message with AES algorithm in CCM
-             mode with a key length of 256 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4309: Using Advanced Encryption Standard
-             (AES) CCM Mode with IPsec Encapsulating Security
-             Payload (ESP)";
-        }
-        enum aes-128-gcm {
-          value 4;
-          description
-            "Encrypt message with AES algorithm in GCM
-             mode with a key length of 128 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4106: The Use of Galois/Counter Mode (GCM)
-             in IPsec Encapsulating Security Payload (ESP)";
-        }
-        enum aes-192-gcm {
-          value 5;
-          description
-            "Encrypt message with AES algorithm in GCM
-             mode with a key length of 192 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4106: The Use of Galois/Counter Mode (GCM)
-             in IPsec Encapsulating Security Payload (ESP)";
-        }
-        enum aes-256-gcm {
-          value 6;
-          description
-            "Encrypt message with AES algorithm in GCM
-             mode with a key length of 256 bits; it can
-             also be used for generating MAC";
-          reference
-            "RFC 4106: The Use of Galois/Counter Mode (GCM)
-             in IPsec Encapsulating Security Payload (ESP)";
-        }
-        enum chacha20-poly1305 {
-          value 7;
-          description
-            "Encrypt message with chacha20 algorithm and generate
-             MAC with POLY1305; it can also be used for generating
-             MAC";
-          reference
-            "RFC 8439: ChaCha20 and Poly1305 for IETF Protocols";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the encryption and mac algorithm value
-       assigned by IANA. The setting is optional and by default is
-       0.  The enumeration filed is set to the selected encryption
-       and mac algorithm.";
-  }
-
-  /******************************************/
-  /*   Identities for signature algorithm   */
-  /******************************************/
-
-  typedef signature-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Signature algorithm is NULL";
-        }
-        enum dsa-sha1 {
-          value 1;
-          description
-            "The signature algorithm using DSA algorithm with SHA1
-             hash algorithm";
-          reference
-            "RFC 4253:
-               The Secure Shell (SSH) Transport Layer Protocol";
-        }
-        enum rsassa-pkcs1-sha1 {
-          value 2;
-          description
-            "The signature algorithm using RSASSA-PKCS1-v1_5 with
-             the SHA1 hash algorithm.";
-          reference
-            "RFC 4253:
-               The Secure Shell (SSH) Transport Layer Protocol";
-        }
-        enum rsassa-pkcs1-sha256 {
-          value 3;
-          description
-            "The signature algorithm using RSASSA-PKCS1-v1_5 with
-             the SHA256 hash algorithm.";
-          reference
-            "RFC 8332:
-               Use of RSA Keys with SHA-256 and SHA-512 in the
-               Secure Shell (SSH) Protocol
-             RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pkcs1-sha384 {
-          value 4;
-          description
-            "The signature algorithm using RSASSA-PKCS1-v1_5 with
-             the SHA384 hash algorithm.";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pkcs1-sha512 {
-          value 5;
-          description
-            "The signature algorithm using RSASSA-PKCS1-v1_5 with
-             the SHA512 hash algorithm.";
-          reference
-            "RFC 8332:
-               Use of RSA Keys with SHA-256 and SHA-512 in the
-               Secure Shell (SSH) Protocol
-             RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-rsae-sha256 {
-          value 6;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA256 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-rsae-sha384 {
-          value 7;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA384 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-rsae-sha512 {
-          value 8;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA512 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-pss-sha256 {
-          value 9;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA256 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-pss-sha384 {
-          value 10;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA384 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum rsassa-pss-pss-sha512 {
-          value 11;
-          description
-            "The signature algorithm using RSASSA-PSS with mask
-             generation function 1 and SHA512 hash algorithm. If
-             the public key is carried in an X.509 certificate,
-             it MUST use the rsaEncryption OID";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum ecdsa-secp256r1-sha256 {
-          value 12;
-          description
-            "The signature algorithm using ECDSA with curve name
-             secp256r1 and SHA256 hash algorithm.";
-          reference
-            "RFC 5656:
-               Elliptic Curve Algorithm Integration in the Secure
-               Shell Transport Layer
-             RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum ecdsa-secp384r1-sha384 {
-          value 13;
-          description
-            "The signature algorithm using ECDSA with curve name
-             secp384r1 and SHA384 hash algorithm.";
-          reference
-            "RFC 5656:
-               Elliptic Curve Algorithm Integration in the Secure
-               Shell Transport Layer
-             RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum ecdsa-secp521r1-sha512 {
-          value 14;
-          description
-            "The signature algorithm using ECDSA with curve name
-             secp521r1 and SHA512 hash algorithm.";
-          reference
-            "RFC 5656:
-               Elliptic Curve Algorithm Integration in the Secure
-               Shell Transport Layer
-             RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum ed25519 {
-          value 15;
-          description
-            "The signature algorithm using EdDSA with curve x25519";
-          reference
-            "RFC 8032:
-               Edwards-Curve Digital Signature Algorithm (EdDSA)";
-        }
-        enum ed25519-cts {
-          value 16;
-          description
-            "The signature algorithm using EdDSA with curve x25519
-             with phflag = 0";
-          reference
-            "RFC 8032:
-               Edwards-Curve Digital Signature Algorithm (EdDSA)";
-        }
-        enum ed25519-ph {
-          value 17;
-          description
-            "The signature algorithm using EdDSA with curve x25519
-             with phflag = 1";
-          reference
-            "RFC 8032:
-               Edwards-Curve Digital Signature Algorithm (EdDSA)";
-        }
-        enum ed25519-sha512 {
-          value 18;
-          description
-            "The signature algorithm using EdDSA with curve x25519
-            and SHA-512 function";
-          reference
-            "RFC 8419:
-               Use of Edwards-Curve Digital Signature Algorithm
-               (EdDSA) Signatures in the Cryptographic Message
-               Syntax (CMS)";
-        }
-        enum ed448 {
-          value 19;
-          description
-            "The signature algorithm using EdDSA with curve x448";
-          reference
-            "RFC 8032:
-               Edwards-Curve Digital Signature Algorithm (EdDSA)";
-        }
-        enum ed448-ph {
-          value 20;
-          description
-            "The signature algorithm using EdDSA with curve x448
-             and with PH being SHAKE256(x, 64) and phflag being 1";
-          reference
-            "RFC 8032:
-               Edwards-Curve Digital Signature Algorithm (EdDSA)";
-        }
-        enum ed448-shake256 {
-          value 21;
-          description
-            "The signature algorithm using EdDSA with curve x448
-            and SHAKE-256 function";
-          reference
-            "RFC 8419:
-               Use of Edwards-Curve Digital Signature Algorithm
-               (EdDSA) Signatures in the Cryptographic Message
-               Syntax (CMS)";
-        }
-        enum ed448-shake256-len {
-          value 22;
-          description
-            "The signature algorithm using EdDSA with curve x448
-            and SHAKE-256 function and a customized hash output";
-          reference
-            "RFC 8419:
-               Use of Edwards-Curve Digital Signature Algorithm
-               (EdDSA) Signatures in the Cryptographic Message
-               Syntax (CMS)";
-        }
-        enum rsa-sha2-256 {
-          value 23;
-          description
-            "The signature algorithm using RSA with SHA2 function
-             for SSH protocol";
-          reference
-            "RFC 8332:
-             Use of RSA Keys with SHA-256 and SHA-512
-             in the Secure Shell (SSH) Protocol";
-        }
-        enum rsa-sha2-512 {
-          value 24;
-          description
-            "The signature algorithm using RSA with SHA2 function
-             for SSH protocol";
-          reference
-            "RFC 8332:
-             Use of RSA Keys with SHA-256 and SHA-512
-             in the Secure Shell (SSH) Protocol";
-        }
-        enum eccsi {
-          value 25;
-          description
-            "The signature algorithm using ECCSI signature as
-             defined in RFC 6507.";
-          reference
-            "RFC 6507:
-               Elliptic Curve-Based Certificateless Signatures
-               for Identity-based Encryption (ECCSI)";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the signature algorithm value
-       assigned by IANA. The setting is optional and by default
-       is 0.  The enumeration filed is set to the selected
-       signature algorithm.";
-  }
-
-  /**********************************************/
-  /*   Identities for key exchange algorithms   */
-  /**********************************************/
-
-  typedef key-exchange-algorithm-t {
-    type union {
-      type uint16;
-      type enumeration {
-        enum NONE {
-          value 0;
-          description
-            "Key exchange algorithm is NULL.";
-        }
-        enum psk-only {
-          value 1;
-          description
-            "Using Pre-shared key for authentication and key
-             exchange";
-          reference
-            "RFC 4279:
-               Pre-Shared Key cipher suites for Transport Layer
-               Security (TLS)";
-        }
-        enum dhe-ffdhe2048 {
-          value 2;
-          description
-            "Ephemeral Diffie Hellman key exchange with 2048 bit
-             finite field";
-          reference
-            "RFC 7919:
-               Negotiated Finite Field Diffie-Hellman Ephemeral
-               Parameters for Transport Layer Security (TLS)";
-        }
-        enum dhe-ffdhe3072 {
-          value 3;
-          description
-            "Ephemeral Diffie Hellman key exchange with 3072 bit
-             finite field";
-          reference
-            "RFC 7919:
-               Negotiated Finite Field Diffie-Hellman Ephemeral
-               Parameters for Transport Layer Security (TLS)";
-        }
-        enum dhe-ffdhe4096 {
-          value 4;
-          description
-            "Ephemeral Diffie Hellman key exchange with 4096 bit
-             finite field";
-          reference
-            "RFC 7919:
-               Negotiated Finite Field Diffie-Hellman Ephemeral
-               Parameters for Transport Layer Security (TLS)";
-        }
-        enum dhe-ffdhe6144 {
-          value 5;
-          description
-            "Ephemeral Diffie Hellman key exchange with 6144 bit
-             finite field";
-          reference
-            "RFC 7919:
-               Negotiated Finite Field Diffie-Hellman Ephemeral
-               Parameters for Transport Layer Security (TLS)";
-        }
-        enum dhe-ffdhe8192 {
-          value 6;
-          description
-            "Ephemeral Diffie Hellman key exchange with 8192 bit
-             finite field";
-          reference
-            "RFC 7919:
-               Negotiated Finite Field Diffie-Hellman Ephemeral
-               Parameters for Transport Layer Security (TLS)";
-        }
-        enum psk-dhe-ffdhe2048 {
-          value 7;
-          description
-            "Key exchange using pre-shared key with Diffie-Hellman
-             key generation mechanism, where the DH group is
-             FFDHE2048";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-dhe-ffdhe3072 {
-          value 8;
-          description
-            "Key exchange using pre-shared key with Diffie-Hellman
-             key generation mechanism, where the DH group is
-             FFDHE3072";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-dhe-ffdhe4096 {
-          value 9;
-          description
-            "Key exchange using pre-shared key with Diffie-Hellman
-             key generation mechanism, where the DH group is
-             FFDHE4096";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-dhe-ffdhe6144 {
-          value 10;
-          description
-            "Key exchange using pre-shared key with Diffie-Hellman
-             key generation mechanism, where the DH group is
-             FFDHE6144";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-dhe-ffdhe8192 {
-          value 11;
-          description
-            "Key exchange using pre-shared key with Diffie-Hellman
-             key generation mechanism, where the DH group is
-             FFDHE8192";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum ecdhe-secp256r1 {
-          value 12;
-          description
-            "Ephemeral Diffie Hellman key exchange with elliptic
-             group over curve secp256r1";
-          reference
-            "RFC 8422:
-               Elliptic Curve Cryptography (ECC) Cipher Suites
-               for Transport Layer Security (TLS) Versions 1.2
-               and Earlier";
-        }
-        enum ecdhe-secp384r1 {
-          value 13;
-          description
-            "Ephemeral Diffie Hellman key exchange with elliptic
-             group over curve secp384r1";
-          reference
-            "RFC 8422:
-               Elliptic Curve Cryptography (ECC) Cipher Suites
-               for Transport Layer Security (TLS) Versions 1.2
-               and Earlier";
-        }
-        enum ecdhe-secp521r1 {
-          value 14;
-          description
-            "Ephemeral Diffie Hellman key exchange with elliptic
-             group over curve secp521r1";
-          reference
-            "RFC 8422:
-               Elliptic Curve Cryptography (ECC) Cipher Suites
-               for Transport Layer Security (TLS) Versions 1.2
-               and Earlier";
-        }
-        enum ecdhe-x25519 {
-          value 15;
-          description
-            "Ephemeral Diffie Hellman key exchange with elliptic
-             group over curve x25519";
-          reference
-            "RFC 8422:
-               Elliptic Curve Cryptography (ECC) Cipher Suites
-               for Transport Layer Security (TLS) Versions 1.2
-               and Earlier";
-        }
-        enum ecdhe-x448 {
-          value 16;
-          description
-            "Ephemeral Diffie Hellman key exchange with elliptic
-             group over curve x448";
-          reference
-            "RFC 8422:
-               Elliptic Curve Cryptography (ECC) Cipher Suites
-               for Transport Layer Security (TLS) Versions 1.2
-               and Earlier";
-        }
-        enum psk-ecdhe-secp256r1 {
-          value 17;
-          description
-            "Key exchange using pre-shared key with elliptic
-             group-based Ephemeral Diffie Hellman key exchange
-             over curve secp256r1";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-ecdhe-secp384r1 {
-          value 18;
-          description
-            "Key exchange using pre-shared key with elliptic
-             group-based Ephemeral Diffie Hellman key exchange
-             over curve secp384r1";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-ecdhe-secp521r1 {
-          value 19;
-          description
-            "Key exchange using pre-shared key with elliptic
-             group-based Ephemeral Diffie Hellman key exchange
-             over curve secp521r1";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-ecdhe-x25519 {
-          value 20;
-          description
-            "Key exchange using pre-shared key with elliptic
-             group-based Ephemeral Diffie Hellman key exchange
-             over curve x25519";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum psk-ecdhe-x448 {
-          value 21;
-          description
-            "Key exchange using pre-shared key with elliptic
-             group-based Ephemeral Diffie Hellman key exchange
-             over curve x448";
-          reference
-            "RFC 8446:
-               The Transport Layer Security (TLS) Protocol
-               Version 1.3";
-        }
-        enum diffie-hellman-group14-sha1 {
-          value 22;
-          description
-            "Using DH group14 and SHA1 for key exchange";
-          reference
-            "RFC 4253:
-               The Secure Shell (SSH) Transport Layer Protocol";
-        }
-        enum diffie-hellman-group14-sha256 {
-          value 23;
-          description
-            "Using DH group14 and SHA-256 for key exchange";
-          reference
-            "RFC 8268:
-              More Modular Exponentiation (MODP) Diffie-Hellman (DH)
-              Key Exchange (KEX) Groups for Secure Shell (SSH)";
-        }
-        enum diffie-hellman-group15-sha512 {
-          value 24;
-          description
-            "Using DH group15 and SHA-512 for key exchange";
-          reference
-            "RFC 8268:
-              More Modular Exponentiation (MODP) Diffie-Hellman (DH)
-              Key Exchange (KEX) Groups for Secure Shell (SSH)";
-        }
-        enum diffie-hellman-group16-sha512 {
-          value 25;
-          description
-            "Using DH group16 and SHA-512 for key exchange";
-          reference
-            "RFC 8268:
-              More Modular Exponentiation (MODP) Diffie-Hellman (DH)
-              Key Exchange (KEX) Groups for Secure Shell (SSH)";
-        }
-        enum diffie-hellman-group17-sha512 {
-          value 26;
-          description
-            "Using DH group17 and SHA-512 for key exchange";
-          reference
-            "RFC 8268:
-              More Modular Exponentiation (MODP) Diffie-Hellman (DH)
-              Key Exchange (KEX) Groups for Secure Shell (SSH)";
-        }
-        enum diffie-hellman-group18-sha512 {
-          value 27;
-          description
-            "Using DH group18 and SHA-512 for key exchange";
-          reference
-            "RFC 8268:
-              More Modular Exponentiation (MODP) Diffie-Hellman (DH)
-              Key Exchange (KEX) Groups for Secure Shell (SSH)";
-        }
-        enum ecdh-sha2-secp256r1 {
-          value 28;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve ecp256r1 and using SHA2 for MAC generation";
-          reference
-            "RFC 6239:
-               Suite B Cryptographic Suites for Secure Shell (SSH)";
-        }
-        enum ecdh-sha2-secp384r1 {
-          value 29;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve ecp384r1 and using SHA2 for MAC generation";
-          reference
-            "RFC 6239:
-               Suite B Cryptographic Suites for Secure Shell (SSH)";
-        }
-        enum ecdh-x25519-x9.63-sha256 {
-          value 30;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using ANSI x9.63 with SHA256 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x25519-x9.63-sha384 {
-          value 31;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using ANSI x9.63 with SHA384 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x25519-x9.63-sha512 {
-          value 32;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using ANSI x9.63 with SHA512 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x25519-hkdf-sha256 {
-          value 33;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using HKDF with SHA256 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x25519-hkdf-sha384 {
-          value 34;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using HKDF with SHA384 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x25519-hkdf-sha512 {
-          value 35;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.25519 and using HKDF with SHA512 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-x9.63-sha256 {
-          value 36;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using ANSI x9.63 with SHA256 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-x9.63-sha384 {
-          value 37;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using ANSI x9.63 with SHA384 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-x9.63-sha512 {
-          value 38;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using ANSI x9.63 with SHA512 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-hkdf-sha256 {
-          value 39;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using HKDF with SHA256 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-hkdf-sha384 {
-          value 40;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using HKDF with SHA384 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-        enum ecdh-x448-hkdf-sha512 {
-          value 41;
-          description
-            "Elliptic curve-based Diffie Hellman key exchange over
-             curve x.448 and using HKDF with SHA512 as KDF";
-          reference
-            "RFC 8418:
-               Use of the Elliptic Curve Diffie-Hellman Key Agreement
-               Algorithm with X25519 and X448 in the Cryptographic
-               Message Syntax (CMS)";
-        }
-
-        enum rsaes-oaep {
-          value 42;
-          description
-            "RSAES-OAEP combines the RSAEP and RSADP primitives with
-             the EME-OAEP encoding method";
-          reference
-            "RFC 8017:
-               PKCS #1:
-                 RSA Cryptography Specifications Version 2.2.";
-        }
-        enum rsaes-pkcs1-v1_5 {
-          value 43;
-          description
-            "RSAES-PKCS1-v1_5 combines the RSAEP and RSADP
-             primitives with the EME-PKCS1-v1_5 encoding method";
-          reference
-            "RFC 8017:
-               PKCS #1:
-                 RSA Cryptography Specifications Version 2.2.";
-        }
-      }
-    }
-    default "0";
-    description
-      "The uint16 filed shall be set by individual protocol
-       families according to the key exchange algorithm value
-       assigned by IANA. The setting is optional and by default
-       is 0.  The enumeration filed is set to the selected key
-       exchange algorithm.";
-  }
-
-  /********************************************/
-  /*   Identities for Key Format Structures   */
-  /********************************************/
-
-  /*** all key format types ****/
-
-  identity key-format-base {
-    description "Base key-format identity for all keys.";
-  }
-
-  identity public-key-format {
-    base "key-format-base";
-    description "Base key-format identity for public keys.";
-  }
-
-  identity private-key-format {
-    base "key-format-base";
-    description "Base key-format identity for private keys.";
-  }
-
-  identity symmetric-key-format {
-    base "key-format-base";
-    description "Base key-format identity for symmetric keys.";
-  }
-
-  /**** for private keys ****/
-
-  identity rsa-private-key-format {
-      base "private-key-format";
-      description "An RSAPrivateKey (from RFC 3447).";
-  }
-
-  identity ec-private-key-format {
-      base "private-key-format";
-      description "An ECPrivateKey (from RFC 5915)";
-  }
-
-  identity one-asymmetric-key-format {
-      base "private-key-format";
-      description "A OneAsymmetricKey (from RFC 5958).";
-  }
-
-  identity encrypted-private-key-format {
-      base "private-key-format";
-      description
-        "A CMS EncryptedData structure (RFC 5652)
-         containing a OneAsymmetricKey (RFC 5958).";
-   }
-
-  /**** for public keys ****/
-
-  identity ssh-public-key-format {
-      base "public-key-format";
-      description
-        "The public key format described by RFC 4716.";
-  }
-
-  identity subject-public-key-info-format {
-      base "public-key-format";
-      description
-        "A SubjectPublicKeyInfo (from RFC 5280).";
-  }
-
-  /**** for symmetric keys ****/
-
-  identity octet-string-key-format {
-      base "symmetric-key-format";
-      description "An OctetString from ASN.1.";
-        /*
-        // Knowing that it is an "OctetString" isn't really helpful.
-        // Knowing the length of the octet string would be helpful,
-        // as it relates to the algorithm's block size.  We may want
-        // to only (for now) use "one-symmetric-key-format" for
-        // symmetric keys...were the usability issues Juergen
-        // mentioned before only apply to asymmetric keys?
-        */
-  }
-
-  identity one-symmetric-key-format {
-      base "symmetric-key-format";
-      description "A OneSymmetricKey (from RFC6031).";
-  }
-
-  identity encrypted-symmetric-key-format {
-      base "symmetric-key-format";
-      description
-        "A CMS EncryptedData structure (RFC 5652)
-         containing a OneSymmetricKey (RFC 6031).";
-  }
-
-  /***************************************************/
-  /*   Typedefs for ASN.1 structures from RFC 5280   */
-  /***************************************************/
-
-  typedef x509 {
-    type binary;
-    description
-      "A Certificate structure, as specified in RFC 5280,
-       encoded using ASN.1 distinguished encoding rules (DER),
-       as specified in ITU-T X.690.";
-    reference
-      "RFC 5280:
-         Internet X.509 Public Key Infrastructure Certificate
-         and Certificate Revocation List (CRL) Profile
-       ITU-T X.690:
-         Information technology - ASN.1 encoding rules:
-         Specification of Basic Encoding Rules (BER),
-         Canonical Encoding Rules (CER) and Distinguished
-         Encoding Rules (DER).";
-  }
-
-  typedef crl {
-    type binary;
-    description
-      "A CertificateList structure, as specified in RFC 5280,
-       encoded using ASN.1 distinguished encoding rules (DER),
-       as specified in ITU-T X.690.";
-    reference
-      "RFC 5280:
-         Internet X.509 Public Key Infrastructure Certificate
-         and Certificate Revocation List (CRL) Profile
-       ITU-T X.690:
-         Information technology - ASN.1 encoding rules:
-         Specification of Basic Encoding Rules (BER),
-         Canonical Encoding Rules (CER) and Distinguished
-         Encoding Rules (DER).";
-  }
-
-  /***********************************************/
-  /*   Typedefs for ASN.1 structures from 5652   */
-  /***********************************************/
-
-  typedef cms {
-    type binary;
-    description
-      "A ContentInfo structure, as specified in RFC 5652,
-       encoded using ASN.1 distinguished encoding rules (DER),
-       as specified in ITU-T X.690.";
-    reference
-      "RFC 5652:
-         Cryptographic Message Syntax (CMS)
-       ITU-T X.690:
-         Information technology - ASN.1 encoding rules:
-         Specification of Basic Encoding Rules (BER),
-         Canonical Encoding Rules (CER) and Distinguished
-         Encoding Rules (DER).";
-  }
-  typedef data-content-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       data content type, as described by Section 4 in RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-
-  typedef signed-data-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       signed-data content type, as described by Section 5 in
-       RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-
-  typedef enveloped-data-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       enveloped-data content type, as described by Section 6
-       in RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-
-  typedef digested-data-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       digested-data content type, as described by Section 7
-       in RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-
-  typedef encrypted-data-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       encrypted-data content type, as described by Section 8
-       in RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-  typedef authenticated-data-cms {
-    type cms;
-    description
-      "A CMS structure whose top-most content type MUST be the
-       authenticated-data content type, as described by Section 9
-       in RFC 5652.";
-    reference
-      "RFC 5652: Cryptographic Message Syntax (CMS)";
-  }
-
-  /***************************************************/
-  /*   Typedefs for structures related to RFC 4253   */
-  /***************************************************/
-
-  typedef ssh-host-key {
-    type binary;
-    description
-      "The binary public key data for this SSH key, as
-       specified by RFC 4253, Section 6.6, i.e.:
-
-         string    certificate or public key format
-                   identifier
-         byte[n]   key/certificate data.";
-    reference
-      "RFC 4253: The Secure Shell (SSH) Transport Layer
-                 Protocol";
-  }
-
-  /*********************************************************/
-  /*   Typedefs for ASN.1 structures related to RFC 5280   */
-  /*********************************************************/
-
-  typedef trust-anchor-cert-x509 {
-    type x509;
-    description
-      "A Certificate structure that MUST encode a self-signed
-       root certificate.";
-  }
-
-  typedef end-entity-cert-x509 {
-    type x509;
-    description
-      "A Certificate structure that MUST encode a certificate
-       that is neither self-signed nor having Basic constraint
-       CA true.";
-  }
-
-  /*********************************************************/
-  /*   Typedefs for ASN.1 structures related to RFC 5652   */
-  /*********************************************************/
-
-  typedef trust-anchor-cert-cms {
-    type signed-data-cms;
-    description
-      "A CMS SignedData structure that MUST contain the chain of
-       X.509 certificates needed to authenticate the certificate
-       presented by a client or end-entity.
-
-       The CMS MUST contain only a single chain of certificates.
-       The client or end-entity certificate MUST only authenticate
-       to last intermediate CA certificate listed in the chain.
-
-       In all cases, the chain MUST include a self-signed root
-       certificate.  In the case where the root certificate is
-       itself the issuer of the client or end-entity certificate,
-       only one certificate is present.
-
-       This CMS structure MAY (as applicable where this type is
-       used) also contain suitably fresh (as defined by local
-       policy) revocation objects with which the device can
-       verify the revocation status of the certificates.
-
-       This CMS encodes the degenerate form of the SignedData
-       structure that is commonly used to disseminate X.509
-       certificates and revocation objects (RFC 5280).";
-    reference
-      "RFC 5280:
-         Internet X.509 Public Key Infrastructure Certificate
-         and Certificate Revocation List (CRL) Profile.";
-  }
-
-  typedef end-entity-cert-cms {
-    type signed-data-cms;
-    description
-      "A CMS SignedData structure that MUST contain the end
-       entity certificate itself, and MAY contain any number
-       of intermediate certificates leading up to a trust
-       anchor certificate.  The trust anchor certificate
-       MAY be included as well.
-
-       The CMS MUST contain a single end entity certificate.
-       The CMS MUST NOT contain any spurious certificates.
-
-       This CMS structure MAY (as applicable where this type is
-       used) also contain suitably fresh (as defined by local
-       policy) revocation objects with which the device can
-       verify the revocation status of the certificates.
-
-       This CMS encodes the degenerate form of the SignedData
-       structure that is commonly used to disseminate X.509
-       certificates and revocation objects (RFC 5280).";
-    reference
-      "RFC 5280:
-         Internet X.509 Public Key Infrastructure Certificate
-         and Certificate Revocation List (CRL) Profile.";
-  }
-
-  typedef ssh-public-key-type {  // DELETE?
-     type binary;
-     description
-       "The binary public key data for this SSH key, as
-        specified by RFC 4253, Section 6.6, i.e.:
-
-          string    certificate or public key format
-                    identifier
-          byte[n]   key/certificate data.";
-     reference
-       "RFC 4253: The Secure Shell (SSH) Transport
-                  Layer Protocol";
-  }
-
-  /**********************************************/
-  /*   Groupings for keys and/or certificates   */
-  /**********************************************/
-
-  grouping symmetric-key-grouping {
-    description
-      "A symmetric key and algorithm.";
-    leaf algorithm {
-      type encryption-algorithm-t;
-      mandatory true;
-      description
-        "The algorithm to be used when generating the key.";
-      reference
-        "RFC CCCC: Common YANG Data Types for Cryptography";
-    }
-    leaf key-format {
-      nacm:default-deny-write;
-      when "../key";
-      type identityref {
-        base symmetric-key-format;
-      }
-      description "Identifies the symmetric key's format.";
-    }
-    choice key-type {
-      mandatory true;
-      description
-        "Choice between key types.";
-      leaf key {
-        nacm:default-deny-all;
-        type binary;
-        //must "../key-format";  FIXME: remove comment if approach ok
-        description
-          "The binary value of the key.  The interpretation of
-           the value is defined by 'key-format'.  For example,
-           FIXME.";
-        reference
-          "RFC XXXX: FIXME";
-      }
-      leaf hidden-key {
-        nacm:default-deny-write;
-        type empty;
-        description
-          "A permanently hidden key.  How such keys are created
-           is outside the scope of this module.";
-      }
-    }
-  }
-
-  grouping public-key-grouping {
-    description
-      "A public key and its associated algorithm.";
-    leaf algorithm {
-      nacm:default-deny-write;
-      type asymmetric-key-algorithm-t;
-      mandatory true;
-      description
-        "Identifies the key's algorithm.";
-      reference
-        "RFC CCCC: Common YANG Data Types for Cryptography";
-    }
-    leaf public-key-format {
-      nacm:default-deny-write;
-      when "../public-key";
-      type identityref {
-        base public-key-format;
-      }
-      description "Identifies the key's format.";
-    }
-    leaf public-key {
-      nacm:default-deny-write;
-      type binary;
-      //must "../public-key-format"; FIXME: rm comment if approach ok
-      mandatory true;
-      description
-        "The binary value of the public key.  The interpretation
-         of the value is defined by 'public-key-format' field.";
-    }
-  }
-
-  grouping asymmetric-key-pair-grouping {
-    description
-      "A private key and its associated public key and algorithm.";
-    uses public-key-grouping;
-    leaf private-key-format {
-      nacm:default-deny-write;
-      when "../private-key";
-      type identityref {
-        base private-key-format;
-      }
-      description "Identifies the key's format.";
-    }
-    choice private-key-type {
-      mandatory true;
-      description
-        "Choice between key types.";
-      leaf private-key {
-        nacm:default-deny-all;
-        type binary;
-        //must "../private-key-format"; FIXME: rm comment if ok
-        description
-          "The value of the binary key.  The key's value is
-           interpreted by the 'private-key-format' field.";
-      }
-      leaf hidden-private-key {
-        nacm:default-deny-write;
-        type empty;
-        description
-          "A permanently hidden key.  How such keys are created
-           is outside the scope of this module.";
-      }
-    }
-  }
-
-  grouping trust-anchor-cert-grouping {
-    description
-      "A trust anchor certificate, and a notification for when
-       it is about to (or already has) expire.";
-    leaf cert {
-      nacm:default-deny-write;
-      type trust-anchor-cert-cms;
-      description
-        "The binary certificate data for this certificate.";
-      reference
-        "RFC YYYY: Common YANG Data Types for Cryptography";
-    }
-    notification certificate-expiration {
-      description
-        "A notification indicating that the configured certificate
-         is either about to expire or has already expired.  When to
-         send notifications is an implementation specific decision,
-         but it is RECOMMENDED that a notification be sent once a
-         month for 3 months, then once a week for four weeks, and
-         then once a day thereafter until the issue is resolved.";
-      leaf expiration-date {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "Identifies the expiration date on the certificate.";
-      }
-    }
-  }
-
-  grouping trust-anchor-certs-grouping {
-    description
-      "A list of trust anchor certificates, and a notification
-       for when one is about to (or already has) expire.";
-    leaf-list cert {
-      nacm:default-deny-write;
-      type trust-anchor-cert-cms;
-      description
-        "The binary certificate data for this certificate.";
-      reference
-        "RFC YYYY: Common YANG Data Types for Cryptography";
-    }
-    notification certificate-expiration {
-      description
-        "A notification indicating that the configured certificate
-         is either about to expire or has already expired.  When to
-         send notifications is an implementation specific decision,
-         but it is RECOMMENDED that a notification be sent once a
-         month for 3 months, then once a week for four weeks, and
-         then once a day thereafter until the issue is resolved.";
-      leaf expiration-date {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "Identifies the expiration date on the certificate.";
-      }
-    }
-  }
-
-  grouping end-entity-cert-grouping {
-    description
-      "An end entity certificate, and a notification for when
-       it is about to (or already has) expire.  Implementations
-       SHOULD assert that, where used, the end entity certificate
-       contains the expected public key.";
-    leaf cert {
-      nacm:default-deny-write;
-      type end-entity-cert-cms;
-      description
-        "The binary certificate data for this certificate.";
-      reference
-        "RFC YYYY: Common YANG Data Types for Cryptography";
-    }
-    notification certificate-expiration {
-      description
-        "A notification indicating that the configured certificate
-         is either about to expire or has already expired.  When to
-         send notifications is an implementation specific decision,
-         but it is RECOMMENDED that a notification be sent once a
-         month for 3 months, then once a week for four weeks, and
-         then once a day thereafter until the issue is resolved.";
-      leaf expiration-date {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "Identifies the expiration date on the certificate.";
-      }
-    }
-  }
-
-  grouping end-entity-certs-grouping {
-    description
-      "A list of end entity certificates, and a notification for
-       when one is about to (or already has) expire.";
-    leaf-list cert {
-      nacm:default-deny-write;
-      type end-entity-cert-cms;
-      description
-        "The binary certificate data for this certificate.";
-      reference
-        "RFC YYYY: Common YANG Data Types for Cryptography";
-    }
-    notification certificate-expiration {
-      description
-        "A notification indicating that the configured certificate
-         is either about to expire or has already expired.  When to
-         send notifications is an implementation specific decision,
-         but it is RECOMMENDED that a notification be sent once a
-         month for 3 months, then once a week for four weeks, and
-         then once a day thereafter until the issue is resolved.";
-      leaf expiration-date {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "Identifies the expiration date on the certificate.";
-      }
-    }
-  }
-
-  grouping asymmetric-key-pair-with-cert-grouping {
-    description
-      "A private/public key pair and an associated certificate.
-       Implementations SHOULD assert that certificates contain
-       the matching public key.";
-    uses asymmetric-key-pair-grouping;
-    uses end-entity-cert-grouping;
-    action generate-certificate-signing-request {
-      nacm:default-deny-all;
-      description
-        "Generates a certificate signing request structure for
-         the associated asymmetric key using the passed subject
-         and attribute values.  The specified assertions need
-         to be appropriate for the certificate's use.  For
-         example, an entity certificate for a TLS server
-         SHOULD have values that enable clients to satisfy
-         RFC 6125 processing.";
-      input {
-        leaf subject {
-          type binary;
-          mandatory true;
-          description
-            "The 'subject' field per the CertificationRequestInfo
-              structure as specified by RFC 2986, Section 4.1
-              encoded using the ASN.1 distinguished encoding
-              rules (DER), as specified in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-        leaf attributes {
-          type binary; // FIXME: does this need to be mandatory?
-          description
-            "The 'attributes' field from the structure
-             CertificationRequestInfo as specified by RFC 2986,
-             Section 4.1 encoded using the ASN.1 distinguished
-             encoding rules (DER), as specified in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-      }
-      output {
-        leaf certificate-signing-request {
-          type binary;
-          mandatory true;
-          description
-            "A CertificationRequest structure as specified by
-             RFC 2986, Section 4.2 encoded using the ASN.1
-             distinguished encoding rules (DER), as specified
-             in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-      }
-    } // generate-certificate-signing-request
-  } // asymmetric-key-pair-with-cert-grouping
-
-  grouping asymmetric-key-pair-with-certs-grouping {
-    description
-      "A private/public key pair and associated certificates.
-       Implementations SHOULD assert that certificates contain
-       the matching public key.";
-    uses asymmetric-key-pair-grouping;
-    container certificates {
-      nacm:default-deny-write;
-      description
-        "Certificates associated with this asymmetric key.
-         More than one certificate supports, for instance,
-         a TPM-protected asymmetric key that has both IDevID
-         and LDevID certificates associated.";
-      list certificate {
-        key "name";
-        description
-          "A certificate for this asymmetric key.";
-        leaf name {
-          type string;
-          description
-            "An arbitrary name for the certificate.  If the name
-             matches the name of a certificate that exists
-             independently in <operational> (i.e., an IDevID),
-             then the 'cert' node MUST NOT be configured.";
-        }
-        uses end-entity-cert-grouping;
-      }
-    } // certificates
-    action generate-certificate-signing-request {
-      nacm:default-deny-all;
-      description
-        "Generates a certificate signing request structure for
-         the associated asymmetric key using the passed subject
-         and attribute values.  The specified assertions need
-         to be appropriate for the certificate's use.  For
-         example, an entity certificate for a TLS server
-         SHOULD have values that enable clients to satisfy
-         RFC 6125 processing.";
-      input {
-        leaf subject {
-          type binary;
-          mandatory true;
-          description
-            "The 'subject' field per the CertificationRequestInfo
-              structure as specified by RFC 2986, Section 4.1
-              encoded using the ASN.1 distinguished encoding
-              rules (DER), as specified in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-        leaf attributes {
-          type binary; // FIXME: does this need to be mandatory?
-          description
-            "The 'attributes' field from the structure
-             CertificationRequestInfo as specified by RFC 2986,
-             Section 4.1 encoded using the ASN.1 distinguished
-             encoding rules (DER), as specified in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-      }
-      output {
-        leaf certificate-signing-request {
-          type binary;
-          mandatory true;
-          description
-            "A CertificationRequest structure as specified by
-             RFC 2986, Section 4.2 encoded using the ASN.1
-             distinguished encoding rules (DER), as specified
-             in ITU-T X.690.";
-          reference
-            "RFC 2986:
-               PKCS #10: Certification Request Syntax
-                         Specification Version 1.7.
-             ITU-T X.690:
-               Information technology - ASN.1 encoding rules:
-               Specification of Basic Encoding Rules (BER),
-               Canonical Encoding Rules (CER) and Distinguished
-               Encoding Rules (DER).";
-        }
-      }
-    } // generate-certificate-signing-request
-  } // asymmetric-key-pair-with-certs-grouping
-}
\ No newline at end of file
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-datastores.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-datastores.yang
new file mode 100644
index 0000000..1ad1666
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-datastores.yang
@@ -0,0 +1,108 @@
+module ietf-datastores {
+  yang-version 1.1;
+  namespace "urn:ietf:params:xml:ns:yang:ietf-datastores";
+  prefix ds;
+
+  organization
+    "IETF Network Modeling (NETMOD) Working Group";
+
+  contact
+    "WG Web:   <https://datatracker.ietf.org/wg/netmod/>
+     WG List:  <mailto:netmod@ietf.org>
+     Author:   Martin Bjorklund
+               <mailto:mbj@tail-f.com>
+     Author:   Juergen Schoenwaelder
+               <mailto:j.schoenwaelder@jacobs-university.de>
+     Author:   Phil Shafer
+               <mailto:phil@juniper.net>
+     Author:   Kent Watsen
+               <mailto:kwatsen@juniper.net>
+     Author:   Rob Wilton
+               <rwilton@cisco.com>";
+
+  description
+    "This YANG module defines a set of identities for identifying
+     datastores.
+     Copyright (c) 2018 IETF Trust and the persons identified as
+     authors of the code.  All rights reserved.
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject to
+     the license terms contained in, the Simplified BSD License set
+     forth in Section 4.c of the IETF Trust's Legal Provisions
+     Relating to IETF Documents
+     (https://trustee.ietf.org/license-info).
+     This version of this YANG module is part of RFC 8342
+     (https://www.rfc-editor.org/info/rfc8342); see the RFC itself
+     for full legal notices.";
+
+  revision 2018-02-14 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 8342: Network Management Datastore Architecture (NMDA)";
+  }
+
+  /*
+   * Identities
+   */
+
+  identity datastore {
+    description
+      "Abstract base identity for datastore identities.";
+  }
+
+  identity conventional {
+    base datastore;
+    description
+      "Abstract base identity for conventional configuration
+       datastores.";
+  }
+
+  identity running {
+    base conventional;
+    description
+      "The running configuration datastore.";
+  }
+
+  identity candidate {
+    base conventional;
+    description
+      "The candidate configuration datastore.";
+  }
+
+  identity startup {
+    base conventional;
+    description
+      "The startup configuration datastore.";
+  }
+
+  identity intended {
+    base conventional;
+    description
+      "The intended configuration datastore.";
+  }
+
+  identity dynamic {
+    base datastore;
+    description
+      "Abstract base identity for dynamic configuration datastores.";
+  }
+
+  identity operational {
+    base datastore;
+    description
+      "The operational state datastore.";
+  }
+
+  /*
+   * Type definitions
+   */
+
+  typedef datastore-ref {
+    type identityref {
+      base datastore;
+    }
+    description
+      "A datastore identity reference.";
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-dhcpv6-common.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-dhcpv6-common.yang
new file mode 100644
index 0000000..8e35a05
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-dhcpv6-common.yang
@@ -0,0 +1,316 @@
+module ietf-dhcpv6-common {
+  yang-version 1.1;
+  namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-common";
+  prefix "dhcpv6-common";
+
+  import ietf-yang-types {
+    prefix yang;
+    reference
+      "RFC 6991: Common YANG Data Types";
+  }
+
+  organization "DHC WG";
+  contact
+    "yong@csnet1.cs.tsinghua.edu.cn
+    lh.sunlinh@gmail.com
+    ian.farrer@telekom.de
+    sladjana.zechlin@telekom.de
+    hezihao9512@gmail.com";
+
+  description "This YANG module defines common components
+    used for the configuration and management of DHCPv6.
+
+    Copyright (c) 2021 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 8513; see
+    the RFC itself for full legal notices.";
+
+  revision 2021-01-29 {
+    description "Version update for draft -17 publication.";
+    reference "I-D: draft-ietf-dhc-dhcpv6-yang-17";
+  }
+
+  revision 2021-01-06 {
+    description "Version update for draft -16 publication.";
+    reference "I-D: draft-ietf-dhc-dhcpv6-yang-16";
+  }
+
+  revision 2020-12-22 {
+    description "Version update for draft -13 publication.";
+    reference "I-D: draft-ietf-dhc-dhcpv6-yang-15";
+  }
+
+  revision 2020-12-10 {
+    description "Version update for draft -13 publication.";
+    reference "I-D: draft-ietf-dhc-dhcpv6-yang-13";
+  }
+
+  revision 2020-12-01 {
+    description "Version update for draft -12 publication.";
+    reference "I-D: draft-ietf-dhc-dhcpv6-yang-12";
+  }
+
+  revision 2020-05-26 {
+    description "Version update for draft -11 publication and
+      to align revisions across the different modules.";
+    reference "I-D: draft-ietf-dhc-dhcpv6-yang-11";
+  }
+
+  revision 2018-09-04 {
+    description "";
+    reference "I-D: draft-ietf-dhc-dhcpv6-yang";
+  }
+
+  revision 2018-01-30 {
+    description "Initial revision";
+    reference "I-D: draft-ietf-dhc-dhcpv6-yang";
+  }
+
+  typedef threshold {
+    type union {
+      type uint16 {
+        range 0..100;
+      }
+      type enumeration {
+        enum "disabled" {
+          description "No threshold";
+        }
+      }
+    }
+    description "Threshold value in percent";
+  }
+
+  typedef timer-seconds32 {
+    type uint32 {
+      range "1..4294967295";
+    }
+    units "seconds";
+    description
+      "Timer value type, in seconds (32-bit range).";
+  }
+
+/*
+* Groupings
+*/
+
+  grouping duid {
+    description "Each server and client has only one DUID (DHCP
+      Unique Identifier). The DUID here identifies a unique
+      DHCPv6 server for clients.  DUID consists of a two-octet
+      type field and an arbitrary length (no more than 128 bytes)
+      content field.  Currently there are four defined types of
+      DUIDs in RFC8415 and RFC6355 - DUID-LLT, DUID-EN, DUID-LL
+      and DUID-UUID.  DUID-unstructured represents DUIDs which
+      do not follow any of the defined formats.";
+    reference "RFC8415: Section 11 and RFC6355: Section 4";
+    leaf type-code {
+      type uint16;
+      default 65535;
+      description "Type code of this DUID.";
+    }
+    choice duid-type {
+      default duid-unstructured;
+      description "Selects the format of the DUID.";
+      case duid-llt {
+        description "DUID Based on Link-layer Address Plus Time
+          (Type 1 - DUID-LLT).";
+        reference "RFC8415 Section 11.2";
+        leaf duid-llt-hardware-type {
+          type uint16;
+          description "Hardware type as assigned by IANA (RFC826).";
+        }
+        leaf duid-llt-time {
+          type yang:timeticks;
+          description "The time that the DUID is generated
+            represented in seconds since midnight (UTC),
+            January 1, 2000, modulo 2^32.";
+        }
+        leaf duid-llt-link-layer-address {
+          type yang:mac-address;
+          description "Link-layer address as described in RFC2464.";
+        }
+      }
+      case duid-en {
+        description "DUID Assigned by Vendor Based on Enterprise
+          Number (Type 2 - DUID-EN).";
+        reference "RFC8415 Section 11.3";
+        leaf duid-en-enterprise-number {
+          type uint32;
+          description "Vendor's registered Private Enterprise Number
+            as maintained by IANA.";
+        }
+        leaf duid-en-identifier {
+          type string;
+          description "Identifier, unique to the device.";
+        }
+      }
+      case duid-ll {
+        description "DUID Based on Link-layer Address
+          (Type 3 - DUID-LL).";
+        reference "RFC8415 Section 11.4";
+        leaf duid-ll-hardware-type {
+          type uint16;
+          description "Hardware type, as assigned by IANA (RFC826).";
+        }
+        leaf duid-ll-link-layer-address {
+          type yang:mac-address;
+          description "Link-layer address, as described in RFC2464";
+        }
+      }
+      case duid-uuid {
+        description "DUID Based on Universally Unique Identifier
+          (Type 4 - DUID-UUID).";
+        reference "RFC6335 Definition of the UUID-Based Unique
+          Identifier";
+        leaf uuid {
+          type yang:uuid;
+          description "A Universally Unique Identifier in the string
+            representation, defined in RFC4122. The canonical
+            representation uses lowercase characters.";
+        }
+      }
+      case duid-unstructured {
+        description "DUID which does not follow any of the other
+          structures, expressed as bytes.";
+        leaf data {
+          type binary;
+          description "The bits to be used as the identifier.";
+        }
+      }
+    }
+    leaf active-duid {
+      type binary;
+      config "false";
+      description "The DUID which is currently in use.";
+    }
+  }
+
+  grouping auth-option-group {
+    description "OPTION_AUTH (11) Authentication Option.";
+    reference "RFC8415: Dynamic Host Configuration Protocol
+      for IPv6 (DHCPv6)";
+    container auth-option {
+      description "OPTION_AUTH (11) Authentication Option
+        container.";
+      leaf protocol {
+        type uint8;
+        description "The authentication protocol used in this
+          Authentication option.";
+      }
+      leaf algorithm {
+        type uint8;
+        description "The algorithm used in the authentication
+          protocol.";
+      }
+      leaf rdm {
+        type uint8;
+        description "The replay detection method used
+          in this Authentication option.";
+      }
+      leaf replay-detection {
+        type uint64;
+        description "The replay detection information for the RDM.";
+      }
+      leaf auth-information {
+        type string;
+        description "The authentication information, as specified
+          by the protocol and algorithm used in this Authentication
+          option.";
+      }
+    }
+  }
+  grouping status-code-option-group {
+    description "OPTION_STATUS_CODE (13) Status Code Option.";
+    reference "RFC8415: Dynamic Host Configuration Protocol
+      for IPv6 (DHCPv6)";
+    container status-code-option {
+      description "OPTION_STATUS_CODE (13) Status Code Option
+        container.";
+      leaf status-code {
+        type uint16;
+        description "The numeric code for the status encoded
+          in this option. See the Status Codes registry at
+          <https://www.iana.org/assignments/dhcpv6-parameters>
+          for the current list of status codes.";
+      }
+      leaf status-message {
+        type string;
+        description "A UTF-8 encoded text string suitable for
+          display to an end user. MUST NOT be null-terminated.";
+      }
+    }
+  }
+
+  grouping rapid-commit-option-group {
+    description "OPTION_RAPID_COMMIT (14) Rapid Commit Option.";
+    reference "RFC8415: Dynamic Host Configuration Protocol for
+      IPv6 (DHCPv6)";
+    container rapid-commit-option {
+      presence "Enable sending of this option";
+      description "OPTION_RAPID_COMMIT (14) Rapid Commit Option
+        container.";
+    }
+  }
+
+  grouping vendor-specific-information-option-group {
+    description "OPTION_VENDOR_OPTS (17) Vendor-specific
+      Information Option.";
+    reference "RFC8415: Dynamic Host Configuration Protocol
+      for IPv6 (DHCPv6)";
+    container vendor-specific-information-option {
+      description "OPTION_VENDOR_OPTS (17) Vendor-specific
+        Information Option container.";
+      list vendor-specific-information-option-instances {
+        key enterprise-number;
+        description "The vendor specific information option allows
+          for multiple instances in a single message. Each list entry
+          defines the contents of an instance of the option.";
+        leaf enterprise-number {
+          type uint32;
+          description "The vendor's registered Enterprise Number,
+            as maintained by IANA.";
+        }
+        list vendor-option-data {
+          key sub-option-code;
+          description "Vendor options, interpreted by vendor-specific
+            client/server functions.";
+          leaf sub-option-code {
+            type uint16;
+            description "The code for the sub-option.";
+          }
+          leaf sub-option-data {
+            type string;
+            description "The data area for the sub-option.";
+          }
+        }
+      }
+    }
+  }
+
+  grouping reconfigure-accept-option-group {
+    description "OPTION_RECONF_ACCEPT (20)  Reconfigure Accept
+      Option.
+      A client uses the Reconfigure Accept option to announce to
+      the server whether the client is willing to accept Reconfigure
+      messages, and a server uses this option to tell the client
+      whether or not to accept Reconfigure messages.  In the absence
+      of this option, the default behavior is that the client is
+      unwilling to accept Reconfigure messages.  The presence node
+      is used to enable the option.";
+    reference "RFC8415: Dynamic Host Configuration Protocol
+      for IPv6 (DHCPv6)";
+    container reconfigure-accept-option {
+      presence "Enable sending of this option";
+      description "OPTION_RECONF_ACCEPT (20)  Reconfigure Accept
+        Option container.";
+    }
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-dhcpv6-types.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-dhcpv6-types.yang
new file mode 100644
index 0000000..67bb1f1
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-dhcpv6-types.yang
@@ -0,0 +1,211 @@
+module ietf-dhcpv6-types {
+  yang-version 1.1;
+  namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-types";
+  prefix "dhcpv6-types";
+
+  import ietf-inet-types {
+    prefix inet;
+  }
+  import ietf-yang-types {
+    prefix yang;
+  }
+
+  organization "DHC WG";
+  contact
+   "cuiyong@tsinghua.edu.cn
+    lh.sunlinh@gmail.com
+    ian.farrer@telekom.de
+    sladjana.zechlin@telekom.de
+    hezihao9512@gmail.com";
+
+  description "This model defines a YANG data model that can be
+    used to define some commonly used DHCPv6 types";
+
+  revision 2018-09-04 {
+    description "";
+    reference "I-D: draft-ietf-dhc-dhcpv6-yang";
+  }
+
+  revision 2018-01-30 {
+    description "Initial revision";
+    reference "I-D: draft-ietf-dhc-dhcpv6-yang";
+  }
+
+  /*
+  * Grouping
+  */
+  grouping vendor-infor {
+    description "Vendor information.";
+    container vendor-info {
+      description "";
+      leaf ent-num {
+        type uint32;
+        mandatory true;
+        description "enterprise number";
+      }
+      leaf-list data {
+        type string;
+        description "specific vendor info";
+      }
+    }
+  }
+
+  grouping duid {
+    description
+      "Each server and client has only one DUID (DHCP Unique Identifier).
+      The DUID here identifies a unique DHCPv6 server for clients. DUID
+      consists of a two-octet type field and an arbitrary length (no more
+      than 128 bytes) content field. Currently there are four defined types
+      of DUIDs in RFC3315 and RFC6355 - DUID-LLT, DUID-EN, DUID-LL and
+      DUID-UUID. DUID-Unknown represents those unconventional DUIDs.";
+    reference "RFC3315: Section 9 and RFC6355: Section 4";
+    leaf type-code {
+      type uint16;
+      default 65535;
+      description "Type code of this DUID";
+    }
+    choice duid-type {
+    default duid-unknown;
+      description "Selects the format for the DUID.";
+      case duid-llt {
+        description "DUID Based on Link-layer Address Plus Time
+          (Type 1 - DUID-LLT)";
+        reference "RFC3315 Section 9.2";
+        leaf duid-llt-hardware-type {
+          type uint16;
+          description "Hardware type as assigned by IANA (RFC826).";
+        }
+        leaf duid-llt-time {
+          type yang:timeticks;
+          description "The time value is the time that the DUID is
+          generated represented in seconds since midnight (UTC),
+          January 1, 2000, modulo 2^32.";
+        }
+        leaf duid-llt-link-layer-addr {
+          type yang:mac-address;
+          description "Link-layer address as described in RFC2464";
+        }
+      }
+      case duid-en {
+        description "DUID Assigned by Vendor Based on Enterprise Number
+          (Type 2 - DUID-EN)";
+        reference "RFC3315 Section 9.3";
+        leaf duid-en-enterprise-number {
+          type uint32;
+          description "Vendor's registered Private Enterprise Number as
+            maintained by IANA";
+        }
+        leaf duid-en-identifier {
+          type string;
+          description "Identifier, unique to the device that is
+          using it";
+        }
+      }
+      case duid-ll {
+          description "DUID Based on Link-layer Address (Type 3 - DUID-LL)";
+          reference "RFC3315 Section 9.4";
+          leaf duid-ll-hardware-type {
+            type uint16;
+            description "Hardware type as assigned by IANA (RFC826).";
+          }
+          leaf duid-ll-link-layer-addr {
+            type yang:mac-address;
+            description "Link-layer address as described in RFC2464";
+        }
+      }
+      case duid-uuid {
+        description "DUID Based on Universally Unique Identifier
+          (Type 4 - DUID-UUID)";
+        reference "RFC6335 Definition of the UUID-Based Unique Identifier";
+        leaf uuid {
+          type yang:uuid;
+          description "A Universally Unique IDentifier in the string
+            representation defined in RFC 4122. The canonical
+            representation uses lowercase characters";
+        }
+      }
+      case duid-unknown {
+        description "DUID based on free raw bytes";
+        leaf data {
+          type binary;
+          description "The bits to be used as the identifier";
+        }
+      }
+    }
+  }
+
+  grouping portset-param {
+    description "portset parameters";
+    container port-parameter {
+      description "port parameter";
+      leaf offset {
+        type uint8;
+        mandatory true;
+        description "offset in a port set";
+      }
+      leaf psid-len {
+        type uint8;
+        mandatory true;
+        description "length of a psid";
+      }
+      leaf psid {
+        type uint16;
+        mandatory true;
+        description "psid value";
+      }
+    }
+  }
+
+  grouping iaid {
+    description "IA is a construct through which a server and a
+        client can identify, group, and manage a set of related IPv6
+        addresses. The key of the list is a 4-byte number IAID defined
+        in [RFC3315].";
+    list identity-association {
+      config "false";
+      description "IA";
+      leaf iaid {
+        type uint32;
+        mandatory true;
+        description "IAID";
+      }
+      leaf ia-type {
+        type string;
+        mandatory true;
+        description "IA type";
+      }
+      leaf-list ipv6-addr {
+        type inet:ipv6-address;
+        description "ipv6 address";
+      }
+      leaf-list ipv6-prefix {
+        type inet:ipv6-prefix;
+        description "ipv6 prefix";
+      }
+      leaf-list prefix-length {
+        type uint8;
+        description "ipv6 prefix length";
+      }
+      leaf t1-time {
+        type yang:timeticks;
+        mandatory true;
+        description "t1 time";
+      }
+      leaf t2-time {
+        type yang:timeticks;
+        mandatory true;
+        description "t2 time";
+      }
+      leaf preferred-lifetime {
+        type yang:timeticks;
+        mandatory true;
+        description "preferred lifetime";
+      }
+      leaf valid-lifetime {
+        type yang:timeticks;
+        mandatory true;
+        description "valid lifetime";
+      }
+    }
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-dhcpv6-types@2018-01-30.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-dhcpv6-types@2018-01-30.yang
deleted file mode 100644
index c0d7193..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-dhcpv6-types@2018-01-30.yang
+++ /dev/null
@@ -1,207 +0,0 @@
-module ietf-dhcpv6-types {
-	yang-version 1.1;
-  namespace "urn:ietf:params:xml:ns:yang:ietf-dhcpv6-types";
-  prefix "dhcpv6-types";
-
-  import ietf-inet-types {
-		prefix inet;
-  }
-	import ietf-yang-types {
- 		prefix yang;
- 	}
-
-  organization "DHC WG";
-	contact
-   "cuiyong@tsinghua.edu.cn
-    lh.sunlinh@gmail.com
-    ian.farrer@telekom.de
-    sladjana.zechlin@telekom.de
-    hezihao9512@gmail.com";
-
-  description "This model defines a YANG data model that can be
-    used to define some commonly used DHCPv6 types";
-
-  revision 2018-01-30 {
-    description "Initial revision";
-    reference "I-D: draft-ietf-dhc-dhcpv6-yang";
-  }
-
-  /*
- 	* Grouping
- 	*/
-	grouping vendor-infor {
-   	description "Vendor information.";
-		container vendor-info {
-			description "";
-  		leaf ent-num {
-     		type uint32;
-     		mandatory true;
-     		description "enterprise number";
-   		}
-   		leaf-list data {
-     		type string;
-     		description "specific vendor info";
-  		}
-   	}
-  }
-
-	grouping duid {
-    description
-      "Each server and client has only one DUID (DHCP Unique Identifier).
-      The DUID here identifies a unique DHCPv6 server for clients. DUID
-      consists of a two-octet type field and an arbitrary length (no more
-      than 128 bytes) content field. Currently there are four defined types
-      of DUIDs in RFC3315 and RFC6355 - DUID-LLT, DUID-EN, DUID-LL and
-      DUID-UUID. DUID-Uknown represents those unconventional DUIDs.";
-    reference "RFC3315: Section 9 and RFC6355: Section 4";
-    leaf type-code {
-  		type uint16;
-  		default 65535;
-  		description "Type code of this DUID";
-  	}
-    choice duid-type {
-		default duid-unknown;
-      description "Selects the format for the DUID.";
-    	case duid-llt {
-      	description "DUID Based on Link-layer Address Plus Time
-      		(Type 1 - DUID-LLT)";
-     		reference "RFC3315 Section 9.2";
-      	leaf duid-llt-hardware-type {
-        	type uint16;
-      		description "Hardware type as assigned by IANA (RFC826).";
-      	}
-      	leaf duid-llt-time {
-      		type yang:timeticks;
-      		description "The time value is the time that the DUID is
-      		generated represented in seconds since midnight (UTC),
-      		January 1, 2000, modulo 2^32.";
-      	}
-      	leaf duid-llt-link-layer-addr {
-       		type yang:mac-address;
-        	description "Link-layer address as described in RFC2464";
-     		}
-  		}
-    	case duid-en {
-      	description "DUID Assigned by Vendor Based on Enterprise Number
-      		(Type 2 - DUID-EN)";
-  			reference "RFC3315 Section 9.3";
-    		leaf duid-en-enterprise-number {
-    			type uint32;
-    			description "Vendor's registered Private Enterprise Number as
-        		maintained by IANA";
-    		}
-      	leaf duid-en-identifier {
-      		type string;
-      		description "Indentifier, unique to the device that is
-      		using it";
-      	}
-  		}
-    	case duid-ll {
-        	description "DUID Based on Link-layer Address (Type 3 - DUID-LL)";
-        	reference "RFC3315 Section 9.4";
-        	leaf duid-ll-hardware-type {
-        		type uint16;
-          	description "Hardware type as assigned by IANA (RFC826).";
-        	}
-        	leaf duid-ll-link-layer-addr {
-	        	type yang:mac-address;
-	        	description "Link-layer address as described in RFC2464";
-	    	}
-    	}
-    	case duid-uuid {
-    		description "DUID Based on Universally Unique Identifier
-    			(Type 4 - DUID-UUID)";
-    		reference "RFC6335 Defination of the UUID-Based Unique Identifier";
-    		leaf uuid {
-    			type yang:uuid;
-  		  	description "A Universally Unique IDentifier in the string
-  		  		representation defined in RFC 4122. The canonical
-  		  		representation uses lowercase characters";
-    	 	}
-    	}
-    	case duid-unknown {
-	  		description "DUID based on free raw bytes";
-	  		leaf data {
-	  			type binary;
-	  			description "The bits to be used as the identifier";
-	  		}
-    	}
-    }
-	}
-
-  grouping portset-para {
-    description "portset parameters";
-    container port-parameter {
-      description "port parameter";
-      leaf offset {
-        type uint8;
-        mandatory true;
-        description "offset in a port set";
-      }
-      leaf psid-len {
-        type uint8;
-        mandatory true;
-        description "length of a psid";
-      }
-      leaf psid {
-        type uint16;
-        mandatory true;
-        description "psid value";
-      }
-    }
-  }
-
-  grouping iaid {
-	  description "IA is a construct through which a server and a
-	      client can identify, group, and manage a set of related IPv6
-	      addresses. The key of the list is a 4-byte number IAID defined
-	      in [RFC3315].";
-    list identity-association {
-      config "false";
-      description "IA";
-      leaf iaid {
-        type uint32;
-        mandatory true;
-        description "IAID";
-      }
-      leaf ia-type {
-        type string;
-        mandatory true;
-        description "IA type";
-      }
-      leaf-list ipv6-addr {
-        type inet:ipv6-address;
-        description "ipv6 address";
-      }
-      leaf-list ipv6-prefix {
-        type inet:ipv6-prefix;
-        description "ipv6 prefix";
-      }
-      leaf-list prefix-length {
-        type uint8;
-        description "ipv6 prefix length";
-      }
-      leaf t1-time {
-        type yang:timeticks;
-        mandatory true;
-        description "t1 time";
-      }
-      leaf t2-time {
-        type yang:timeticks;
-        mandatory true;
-        description "t2 time";
-      }
-      leaf preferred-lifetime {
-        type yang:timeticks;
-        mandatory true;
-        description "preferred lifetime";
-      }
-      leaf valid-lifetime {
-        type yang:timeticks;
-        mandatory true;
-        description "valid lifetime";
-      }
-    }
-  }
-
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-hardware@2018-03-13.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-hardware.yang
old mode 100644
new mode 100755
similarity index 100%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/ietf-hardware@2018-03-13.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/ietf-hardware.yang
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-inet-types@2013-07-15.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-inet-types.yang
old mode 100644
new mode 100755
similarity index 100%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/ietf-inet-types@2013-07-15.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/ietf-inet-types.yang
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-interfaces@2018-02-20.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-interfaces.yang
similarity index 100%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/ietf-interfaces@2018-02-20.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/ietf-interfaces.yang
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-ip@2018-02-22.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-ip.yang
similarity index 100%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/ietf-ip@2018-02-22.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/ietf-ip.yang
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-netconf-acm@2018-02-14.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-netconf-acm.yang
similarity index 100%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/ietf-netconf-acm@2018-02-14.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/ietf-netconf-acm.yang
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-netconf-monitoring.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-netconf-monitoring.yang
new file mode 100644
index 0000000..3995988
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-netconf-monitoring.yang
@@ -0,0 +1,542 @@
+module ietf-netconf-monitoring {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring";
+  prefix "ncm";
+
+  import ietf-yang-types { prefix yang; }
+  import ietf-inet-types { prefix inet; }
+
+  organization
+    "IETF NETCONF (Network Configuration) Working Group";
+
+  contact
+    "WG Web:   <http://tools.ietf.org/wg/netconf/>
+     WG List:  <mailto:netconf@ietf.org>
+     WG Chair: Mehmet Ersue
+               <mailto:mehmet.ersue@nsn.com>
+     WG Chair: Bert Wijnen
+               <mailto:bertietf@bwijnen.net>
+     Editor:   Mark Scott
+               <mailto:mark.scott@ericsson.com>
+     Editor:   Martin Bjorklund
+               <mailto:mbj@tail-f.com>";
+
+  description
+    "NETCONF Monitoring Module.
+     All elements in this module are read-only.
+     Copyright (c) 2010 IETF Trust and the persons identified as
+     authors of the code. All rights reserved.
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject
+     to the license terms contained in, the Simplified BSD
+     License set forth in Section 4.c of the IETF Trust's
+     Legal Provisions Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+     This version of this YANG module is part of RFC 6022; see
+     the RFC itself for full legal notices.";
+
+  revision 2010-10-04 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 6022: YANG Module for NETCONF Monitoring";
+  }
+
+  typedef netconf-datastore-type {
+    type enumeration {
+      enum running;
+      enum candidate;
+      enum startup;
+    }
+    description
+      "Enumeration of possible NETCONF datastore types.";
+    reference
+      "RFC 4741: NETCONF Configuration Protocol";
+  }
+
+  identity transport {
+    description
+      "Base identity for NETCONF transport types.";
+  }
+
+  identity netconf-ssh {
+    base transport;
+    description
+      "NETCONF over Secure Shell (SSH).";
+    reference
+      "RFC 4742: Using the NETCONF Configuration Protocol
+                 over Secure SHell (SSH)";
+  }
+
+  identity netconf-soap-over-beep {
+    base transport;
+    description
+      "NETCONF over Simple Object Access Protocol (SOAP) over
+       Blocks Extensible Exchange Protocol (BEEP).";
+
+    reference
+      "RFC 4743: Using NETCONF over the Simple Object
+                 Access Protocol (SOAP)";
+  }
+
+  identity netconf-soap-over-https {
+    base transport;
+    description
+      "NETCONF over Simple Object Access Protocol (SOAP)
+      over Hypertext Transfer Protocol Secure (HTTPS).";
+    reference
+      "RFC 4743: Using NETCONF over the Simple Object
+                 Access Protocol (SOAP)";
+  }
+
+  identity netconf-beep {
+    base transport;
+    description
+      "NETCONF over Blocks Extensible Exchange Protocol (BEEP).";
+    reference
+      "RFC 4744: Using the NETCONF Protocol over the
+                 Blocks Extensible Exchange Protocol (BEEP)";
+  }
+
+  identity netconf-tls {
+    base transport;
+    description
+      "NETCONF over Transport Layer Security (TLS).";
+    reference
+      "RFC 5539: NETCONF over Transport Layer Security (TLS)";
+  }
+
+  identity schema-format {
+    description
+      "Base identity for data model schema languages.";
+  }
+
+  identity xsd {
+    base schema-format;
+    description
+      "W3C XML Schema Definition.";
+    reference
+      "W3C REC REC-xmlschema-1-20041028:
+         XML Schema Part 1: Structures";
+  }
+
+  identity yang {
+    base schema-format;
+    description
+      "The YANG data modeling language for NETCONF.";
+    reference
+      "RFC 6020:  YANG - A Data Modeling Language for the
+                  Network Configuration Protocol (NETCONF)";
+  }
+
+  identity yin {
+    base schema-format;
+    description
+      "The YIN syntax for YANG.";
+    reference
+      "RFC 6020:  YANG - A Data Modeling Language for the
+                  Network Configuration Protocol (NETCONF)";
+  }
+
+  identity rng {
+    base schema-format;
+    description
+      "Regular Language for XML Next Generation (RELAX NG).";
+    reference
+      "ISO/IEC 19757-2:2008: RELAX NG";
+  }
+
+  identity rnc {
+    base schema-format;
+    description
+      "Relax NG Compact Syntax";
+    reference
+      "ISO/IEC 19757-2:2008: RELAX NG";
+  }
+
+  grouping common-counters {
+    description
+      "Counters that exist both per session, and also globally,
+       accumulated from all sessions.";
+
+    leaf in-rpcs {
+      type yang:zero-based-counter32;
+      description
+        "Number of correct <rpc> messages received.";
+    }
+    leaf in-bad-rpcs {
+      type yang:zero-based-counter32;
+
+      description
+        "Number of messages received when an <rpc> message was expected,
+         that were not correct <rpc> messages.  This includes XML parse
+         errors and errors on the rpc layer.";
+    }
+    leaf out-rpc-errors {
+      type yang:zero-based-counter32;
+      description
+        "Number of <rpc-reply> messages sent that contained an
+         <rpc-error> element.";
+    }
+    leaf out-notifications {
+      type yang:zero-based-counter32;
+      description
+        "Number of <notification> messages sent.";
+    }
+  }
+
+  container netconf-state {
+    config false;
+    description
+      "The netconf-state container is the root of the monitoring
+       data model.";
+
+    container capabilities {
+      description
+        "Contains the list of NETCONF capabilities supported by the
+         server.";
+
+      leaf-list capability {
+        type inet:uri;
+        description
+          "List of NETCONF capabilities supported by the server.";
+      }
+    }
+
+    container datastores {
+      description
+        "Contains the list of NETCONF configuration datastores.";
+
+      list datastore {
+        key name;
+        description
+          "List of NETCONF configuration datastores supported by
+           the NETCONF server and related information.";
+
+        leaf name {
+          type netconf-datastore-type;
+          description
+            "Name of the datastore associated with this list entry.";
+        }
+        container locks {
+          presence
+            "This container is present only if the datastore
+             is locked.";
+          description
+            "The NETCONF <lock> and <partial-lock> operations allow
+             a client to lock specific resources in a datastore.  The
+             NETCONF server will prevent changes to the locked
+             resources by all sessions except the one that acquired
+             the lock(s).
+             Monitoring information is provided for each datastore
+             entry including details such as the session that acquired
+             the lock, the type of lock (global or partial) and the
+             list of locked resources.  Multiple locks per datastore
+             are supported.";
+
+          grouping lock-info {
+            description
+              "Lock related parameters, common to both global and
+               partial locks.";
+
+            leaf locked-by-session {
+              type uint32;
+              mandatory true;
+              description
+                "The session ID of the session that has locked
+                 this resource.  Both a global lock and a partial
+                 lock MUST contain the NETCONF session-id.
+                 If the lock is held by a session that is not managed
+                 by the NETCONF server (e.g., a CLI session), a session
+                 id of 0 (zero) is reported.";
+              reference
+                "RFC 4741: NETCONF Configuration Protocol";
+            }
+            leaf locked-time {
+              type yang:date-and-time;
+              mandatory true;
+              description
+                "The date and time of when the resource was
+                 locked.";
+            }
+          }
+
+          choice lock-type {
+            description
+              "Indicates if a global lock or a set of partial locks
+               are set.";
+
+            container global-lock {
+              description
+                "Present if the global lock is set.";
+              uses lock-info;
+            }
+
+            list partial-lock {
+              key lock-id;
+              description
+                "List of partial locks.";
+              reference
+                "RFC 5717: Partial Lock Remote Procedure Call (RPC) for
+                           NETCONF";
+
+              leaf lock-id {
+                type uint32;
+                description
+                  "This is the lock id returned in the <partial-lock>
+                   response.";
+              }
+              uses lock-info;
+              leaf-list select {
+                type yang:xpath1.0;
+                min-elements 1;
+                description
+                  "The xpath expression that was used to request
+                   the lock.  The select expression indicates the
+                   original intended scope of the lock.";
+              }
+              leaf-list locked-node {
+                type instance-identifier;
+                description
+                  "The list of instance-identifiers (i.e., the
+                   locked nodes).
+                   The scope of the partial lock is defined by the list
+                   of locked nodes.";
+              }
+            }
+          }
+        }
+      }
+    }
+    container schemas {
+      description
+        "Contains the list of data model schemas supported by the
+         server.";
+
+      list schema {
+        key "identifier version format";
+
+        description
+          "List of data model schemas supported by the server.";
+
+        leaf identifier {
+          type string;
+          description
+            "Identifier to uniquely reference the schema.  The
+             identifier is used in the <get-schema> operation and may
+             be used for other purposes such as file retrieval.
+             For modeling languages that support or require a data
+             model name (e.g., YANG module name) the identifier MUST
+             match that name.  For YANG data models, the identifier is
+             the name of the module or submodule.  In other cases, an
+             identifier such as a filename MAY be used instead.";
+        }
+        leaf version {
+          type string;
+          description
+            "Version of the schema supported.  Multiple versions MAY be
+             supported simultaneously by a NETCONF server.  Each
+             version MUST be reported individually in the schema list,
+             i.e., with same identifier, possibly different location,
+             but different version.
+             For YANG data models, version is the value of the most
+             recent YANG 'revision' statement in the module or
+             submodule, or the empty string if no 'revision' statement
+             is present.";
+        }
+        leaf format {
+          type identityref {
+            base schema-format;
+          }
+          description
+            "The data modeling language the schema is written
+             in (currently xsd, yang, yin, rng, or rnc).
+             For YANG data models, 'yang' format MUST be supported and
+             'yin' format MAY also be provided.";
+        }
+        leaf namespace {
+          type inet:uri;
+          mandatory true;
+          description
+            "The XML namespace defined by the data model.
+             For YANG data models, this is the module's namespace.
+             If the list entry describes a submodule, this field
+             contains the namespace of the module to which the
+             submodule belongs.";
+        }
+        leaf-list location {
+          type union {
+            type enumeration {
+              enum "NETCONF";
+            }
+            type inet:uri;
+          }
+          description
+            "One or more locations from which the schema can be
+             retrieved.  This list SHOULD contain at least one
+             entry per schema.
+             A schema entry may be located on a remote file system
+             (e.g., reference to file system for ftp retrieval) or
+             retrieved directly from a server supporting the
+             <get-schema> operation (denoted by the value 'NETCONF').";
+        }
+      }
+    }
+
+    container sessions {
+      description
+        "The sessions container includes session-specific data for
+         NETCONF management sessions.  The session list MUST include
+         all currently active NETCONF sessions.";
+
+      list session {
+        key session-id;
+        description
+          "All NETCONF sessions managed by the NETCONF server
+           MUST be reported in this list.";
+
+        leaf session-id {
+          type uint32 {
+            range "1..max";
+          }
+          description
+            "Unique identifier for the session.  This value is the
+             NETCONF session identifier, as defined in RFC 4741.";
+          reference
+            "RFC 4741: NETCONF Configuration Protocol";
+        }
+        leaf transport {
+          type identityref {
+            base transport;
+          }
+          mandatory true;
+          description
+            "Identifies the transport for each session, e.g.,
+            'netconf-ssh', 'netconf-soap', etc.";
+        }
+        leaf username  {
+          type string;
+          mandatory true;
+          description
+            "The username is the client identity that was authenticated
+            by the NETCONF transport protocol.  The algorithm used to
+            derive the username is NETCONF transport protocol specific
+            and in addition specific to the authentication mechanism
+            used by the NETCONF transport protocol.";
+        }
+        leaf source-host {
+          type inet:host;
+          description
+            "Host identifier of the NETCONF client.  The value
+             returned is implementation specific (e.g., hostname,
+             IPv4 address, IPv6 address)";
+        }
+        leaf login-time {
+          type yang:date-and-time;
+          mandatory true;
+          description
+            "Time at the server at which the session was established.";
+        }
+        uses common-counters {
+          description
+            "Per-session counters.  Zero based with following reset
+             behaviour:
+               - at start of a session
+               - when max value is reached";
+        }
+      }
+    }
+
+    container statistics {
+      description
+        "Statistical data pertaining to the NETCONF server.";
+
+      leaf netconf-start-time {
+        type yang:date-and-time;
+        description
+          "Date and time at which the management subsystem was
+           started.";
+      }
+      leaf in-bad-hellos {
+        type yang:zero-based-counter32;
+        description
+          "Number of sessions silently dropped because an
+          invalid <hello> message was received.  This includes <hello>
+          messages with a 'session-id' attribute, bad namespace, and
+          bad capability declarations.";
+      }
+      leaf in-sessions {
+        type yang:zero-based-counter32;
+        description
+          "Number of sessions started.  This counter is incremented
+           when a <hello> message with a <session-id> is sent.
+          'in-sessions' - 'in-bad-hellos' =
+              'number of correctly started netconf sessions'";
+      }
+      leaf dropped-sessions {
+        type yang:zero-based-counter32;
+
+        description
+          "Number of sessions that were abnormally terminated, e.g.,
+           due to idle timeout or transport close.  This counter is not
+           incremented when a session is properly closed by a
+           <close-session> operation, or killed by a <kill-session>
+           operation.";
+      }
+      uses common-counters {
+        description
+          "Global counters, accumulated from all sessions.
+           Zero based with following reset behaviour:
+             - re-initialization of NETCONF server
+             - when max value is reached";
+      }
+    }
+  }
+
+  rpc get-schema {
+    description
+      "This operation is used to retrieve a schema from the
+       NETCONF server.
+       Positive Response:
+         The NETCONF server returns the requested schema.
+       Negative Response:
+         If requested schema does not exist, the <error-tag> is
+         'invalid-value'.
+         If more than one schema matches the requested parameters, the
+         <error-tag> is 'operation-failed', and <error-app-tag> is
+         'data-not-unique'.";
+
+    input {
+      leaf identifier {
+        type string;
+        mandatory true;
+        description
+          "Identifier for the schema list entry.";
+      }
+      leaf version {
+        type string;
+        description
+          "Version of the schema requested.  If this parameter is not
+           present, and more than one version of the schema exists on
+           the server, a 'data-not-unique' error is returned, as
+           described above.";
+      }
+      leaf format {
+        type identityref {
+          base schema-format;
+        }
+        description
+           "The data modeling language of the schema.  If this
+            parameter is not present, and more than one formats of
+            the schema exists on the server, a 'data-not-unique' error
+            is returned, as described above.";
+      }
+    }
+    output {
+        anyxml data {
+          description
+            "Contains the schema content.";
+      }
+    }
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-netconf-notifications.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-netconf-notifications.yang
new file mode 100644
index 0000000..30865c3
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-netconf-notifications.yang
@@ -0,0 +1,328 @@
+module ietf-netconf-notifications {
+
+   namespace
+     "urn:ietf:params:xml:ns:yang:ietf-netconf-notifications";
+
+   prefix ncn;
+
+   import ietf-inet-types { prefix inet; }
+   import ietf-netconf { prefix nc; }
+
+   organization
+     "IETF NETCONF (Network Configuration Protocol) Working Group";
+
+   contact
+     "WG Web:   <http://tools.ietf.org/wg/netconf/>
+      WG List:  <mailto:netconf@ietf.org>
+      WG Chair: Bert Wijnen
+                <mailto:bertietf@bwijnen.net>
+      WG Chair: Mehmet Ersue
+                <mailto:mehmet.ersue@nsn.com>
+      Editor:   Andy Bierman
+                <mailto:andy@netconfcentral.org>";
+
+   description
+     "This module defines a YANG data model for use with the
+      NETCONF protocol that allows the NETCONF client to
+      receive common NETCONF base event notifications.
+      Copyright (c) 2012 IETF Trust and the persons identified as
+      the document authors.  All rights reserved.
+      Redistribution and use in source and binary forms, with or
+      without modification, is permitted pursuant to, and subject
+      to the license terms contained in, the Simplified BSD License
+      set forth in Section 4.c of the IETF Trust's Legal Provisions
+      Relating to IETF Documents
+      (http://trustee.ietf.org/license-info).
+      This version of this YANG module is part of RFC 6470; see
+      the RFC itself for full legal notices.";
+
+   revision "2012-02-06" {
+     description
+       "Initial version.";
+     reference
+       "RFC 6470: NETCONF Base Notifications";
+   }
+
+  grouping common-session-parms {
+    description
+      "Common session parameters to identify a
+       management session.";
+
+    leaf username {
+      type string;
+      mandatory true;
+      description
+        "Name of the user for the session.";
+    }
+
+    leaf session-id {
+      type nc:session-id-or-zero-type;
+      mandatory true;
+      description
+        "Identifier of the session.
+         A NETCONF session MUST be identified by a non-zero value.
+         A non-NETCONF session MAY be identified by the value zero.";
+    }
+
+    leaf source-host {
+      type inet:ip-address;
+      description
+        "Address of the remote host for the session.";
+    }
+  }
+
+   grouping changed-by-parms {
+    description
+      "Common parameters to identify the source
+       of a change event, such as a configuration
+       or capability change.";
+
+    container changed-by {
+      description
+        "Indicates the source of the change.
+         If caused by internal action, then the
+         empty leaf 'server' will be present.
+         If caused by a management session, then
+         the name, remote host address, and session ID
+         of the session that made the change will be reported.";
+      choice server-or-user {
+        mandatory true;
+        leaf server {
+          type empty;
+          description
+            "If present, the change was caused
+             by the server.";
+        }
+
+        case by-user {
+          uses common-session-parms;
+        }
+      } // choice server-or-user
+    } // container changed-by-parms
+  }
+
+  notification netconf-config-change {
+    description
+      "Generated when the NETCONF server detects that the
+       <running> or <startup> configuration datastore
+       has been changed by a management session.
+       The notification summarizes the edits that
+       have been detected.
+       The server MAY choose to also generate this
+       notification while loading a datastore during the
+       boot process for the device.";
+
+    uses changed-by-parms;
+
+    leaf datastore {
+      type enumeration {
+        enum running {
+          description "The <running> datastore has changed.";
+        }
+        enum startup {
+          description "The <startup> datastore has changed";
+        }
+      }
+      default "running";
+      description
+        "Indicates which configuration datastore has changed.";
+    }
+
+    list edit {
+      description
+        "An edit record SHOULD be present for each distinct
+         edit operation that the server has detected on
+         the target datastore.  This list MAY be omitted
+         if the detailed edit operations are not known.
+         The server MAY report entries in this list for
+         changes not made by a NETCONF session (e.g., CLI).";
+
+      leaf target {
+        type instance-identifier;
+        description
+          "Topmost node associated with the configuration change.
+           A server SHOULD set this object to the node within
+           the datastore that is being altered.  A server MAY
+           set this object to one of the ancestors of the actual
+           node that was changed, or omit this object, if the
+           exact node is not known.";
+      }
+
+      leaf operation {
+        type nc:edit-operation-type;
+        description
+          "Type of edit operation performed.
+           A server MUST set this object to the NETCONF edit
+           operation performed on the target datastore.";
+      }
+    } // list edit
+  } // notification netconf-config-change
+
+  notification netconf-capability-change {
+    description
+      "Generated when the NETCONF server detects that
+       the server capabilities have changed.
+       Indicates which capabilities have been added, deleted,
+       and/or modified.  The manner in which a server
+       capability is changed is outside the scope of this
+       document.";
+
+    uses changed-by-parms;
+
+    leaf-list added-capability {
+      type inet:uri;
+      description
+        "List of capabilities that have just been added.";
+    }
+
+    leaf-list deleted-capability {
+      type inet:uri;
+      description
+        "List of capabilities that have just been deleted.";
+    }
+
+    leaf-list modified-capability {
+      type inet:uri;
+      description
+        "List of capabilities that have just been modified.
+         A capability is considered to be modified if the
+         base URI for the capability has not changed, but
+         one or more of the parameters encoded at the end of
+         the capability URI have changed.
+         The new modified value of the complete URI is returned.";
+    }
+  } // notification netconf-capability-change
+
+  notification netconf-session-start {
+    description
+      "Generated when a NETCONF server detects that a
+       NETCONF session has started.  A server MAY generate
+       this event for non-NETCONF management sessions.
+       Indicates the identity of the user that started
+       the session.";
+    uses common-session-parms;
+  } // notification netconf-session-start
+
+  notification netconf-session-end {
+    description
+      "Generated when a NETCONF server detects that a
+       NETCONF session has terminated.
+       A server MAY optionally generate this event for
+       non-NETCONF management sessions.  Indicates the
+       identity of the user that owned the session,
+       and why the session was terminated.";
+
+    uses common-session-parms;
+
+    leaf killed-by {
+      when "../termination-reason = 'killed'";
+      type nc:session-id-type;
+      description
+        "The ID of the session that directly caused this session
+         to be abnormally terminated.  If this session was abnormally
+         terminated by a non-NETCONF session unknown to the server,
+         then this leaf will not be present.";
+    }
+
+    leaf termination-reason {
+      type enumeration {
+        enum "closed" {
+          description
+            "The session was terminated by the client in normal
+             fashion, e.g., by the NETCONF <close-session>
+             protocol operation.";
+        }
+        enum "killed" {
+          description
+            "The session was terminated in abnormal
+             fashion, e.g., by the NETCONF <kill-session>
+             protocol operation.";
+        }
+        enum "dropped" {
+          description
+            "The session was terminated because the transport layer
+             connection was unexpectedly closed.";
+        }
+        enum "timeout" {
+          description
+            "The session was terminated because of inactivity,
+             e.g., waiting for the <hello> message or <rpc>
+             messages.";
+        }
+
+        enum "bad-hello" {
+          description
+            "The client's <hello> message was invalid.";
+        }
+        enum "other" {
+          description
+            "The session was terminated for some other reason.";
+        }
+      }
+      mandatory true;
+      description
+        "Reason the session was terminated.";
+    }
+  } // notification netconf-session-end
+
+  notification netconf-confirmed-commit {
+    description
+      "Generated when a NETCONF server detects that a
+       confirmed-commit event has occurred.  Indicates the event
+       and the current state of the confirmed-commit procedure
+       in progress.";
+    reference
+      "RFC 6241, Section 8.4";
+
+    uses common-session-parms {
+      when "../confirm-event != 'timeout'";
+    }
+
+    leaf confirm-event {
+      type enumeration {
+        enum "start" {
+          description
+            "The confirmed-commit procedure has started.";
+        }
+        enum "cancel" {
+          description
+            "The confirmed-commit procedure has been canceled,
+             e.g., due to the session being terminated, or an
+             explicit <cancel-commit> operation.";
+        }
+        enum "timeout" {
+          description
+            "The confirmed-commit procedure has been canceled
+             due to the confirm-timeout interval expiring.
+             The common session parameters will not be present
+             in this sub-mode.";
+        }
+        enum "extend" {
+          description
+            "The confirmed-commit timeout has been extended,
+             e.g., by a new <confirmed-commit> operation.";
+        }
+        enum "complete" {
+          description
+            "The confirmed-commit procedure has been completed.";
+        }
+      }
+      mandatory true;
+      description
+        "Indicates the event that caused the notification.";
+    }
+
+    leaf timeout {
+      when
+        "../confirm-event = 'start' or ../confirm-event = 'extend'";
+      type uint32;
+      units "seconds";
+      description
+        "The configured timeout value if the event type
+         is 'start' or 'extend'.  This value represents
+         the approximate number of seconds from the event
+         time when the 'timeout' event might occur.";
+    }
+  } // notification netconf-confirmed-commit
+
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-network-instance@2019-01-21.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-network-instance.yang
similarity index 98%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/ietf-network-instance@2019-01-21.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/ietf-network-instance.yang
index fe92ca1..586d4bd 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-network-instance@2019-01-21.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-network-instance.yang
@@ -24,9 +24,8 @@
   organization
     "IETF Routing Area (rtgwg) Working Group";
   contact
-    "WG Web:   <https://datatracker.ietf.org/wg/rtgwg>
+    "WG Web:   <http://tools.ietf.org/wg/rtgwg/>
      WG List:  <mailto:rtgwg@ietf.org>
-
      Author:   Lou Berger
                <mailto:lberger@labn.net>
      Author:   Christian Hopps
@@ -46,17 +45,14 @@
      are to be interpreted as described in BCP 14 (RFC 2119)
      (RFC 8174) when, and only when, they appear in all capitals,
       as shown here.
-
      Copyright (c) 2019 IETF Trust and the persons identified as
      authors of the code.  All rights reserved.
-
      Redistribution and use in source and binary forms, with or
      without modification, is permitted pursuant to, and subject
      to the license terms contained in, the Simplified BSD
      License set forth in Section 4.c of the IETF Trust's Legal
      Provisions Relating to IETF Documents
      (https://trustee.ietf.org/license-info).
-
      This version of this YANG module is part of RFC 8529; see
      the RFC itself for full legal notices.";
 
@@ -152,7 +148,6 @@
       "Add a node for the identification of the network
        instance associated with the information configured
        on a interface.
-
        Note that a standard error will be returned if the
        identified leafref isn't present.  If an interface cannot
        be assigned for any other reason, the operation SHALL fail
@@ -173,7 +168,6 @@
       "Add a node for the identification of the network
        instance associated with the information configured
        on an IPv4 interface.
-
        Note that a standard error will be returned if the
        identified leafref isn't present.  If an interface cannot
        be assigned for any other reason, the operation SHALL fail
@@ -194,7 +188,6 @@
       "Add a node for the identification of the network
        instance associated with the information configured
        on an IPv6 interface.
-
        Note that a standard error will be returned if the
        identified leafref isn't present.  If an interface cannot
        be assigned for any other reason, the operation SHALL fail
@@ -218,11 +211,9 @@
       "Indicates an error in the association of an interface to an
        NI.  Only generated after success is initially returned when
        bind-ni-name is set.
-
        Note: Some errors may need to be reported for multiple
        associations, e.g., a single error may need to be reported
        for an IPv4 and an IPv6 bind-ni-name.
-
        At least one container with a bind-ni-name leaf MUST be
        included in this notification.";
     leaf name {
@@ -279,4 +270,4 @@
          failure.";
     }
   }
-}
\ No newline at end of file
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-restconf@2017-01-26.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-restconf.yang
similarity index 99%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/ietf-restconf@2017-01-26.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/ietf-restconf.yang
index 44dac71..9ced955 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-restconf@2017-01-26.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-restconf.yang
@@ -30,6 +30,8 @@
      provides a normative syntax for XML and JSON
      message-encoding purposes.
 
+
+
      Copyright (c) 2017 IETF Trust and the persons identified as
      authors of the code.  All rights reserved.
 
@@ -78,6 +80,7 @@
        An instance of a YANG data template can thus be translated
        into an XML instance document, whose top-level element
        corresponds to the top-level container.
+
        The module name and namespace values for the YANG module using
        the extension statement are assigned to instance document data
        conforming to the data definition statements within
@@ -260,6 +263,7 @@
              { 'ietf-system:system-restart' : [null] }
           ";
       }
+
       leaf yang-library-version {
         type string {
           pattern '\d{4}-\d{2}-\d{2}';
@@ -275,4 +279,4 @@
     }
   }
 
-}
\ No newline at end of file
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-subscribed-notifications@2019-09-09.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-subscribed-notifications.yang
similarity index 99%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/ietf-subscribed-notifications@2019-09-09.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/ietf-subscribed-notifications.yang
index 14df349..5c08cc0 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-subscribed-notifications@2019-09-09.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-subscribed-notifications.yang
@@ -39,41 +39,32 @@
   contact
     "WG Web:  <https:/datatracker.ietf.org/wg/netconf/>
      WG List: <mailto:netconf@ietf.org>
-
      Author:  Alexander Clemm
               <mailto:ludwig@clemm.org>
-
      Author:  Eric Voit
               <mailto:evoit@cisco.com>
-
      Author:  Alberto Gonzalez Prieto
               <mailto:alberto.gonzalez@microsoft.com>
-
      Author:  Einar Nilsen-Nygaard
               <mailto:einarnn@cisco.com>
-
      Author:  Ambika Prasad Tripathy
               <mailto:ambtripa@cisco.com>";
   description
     "This module defines a YANG data model for subscribing to event
      records and receiving matching content in notification messages.
-
      The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
      NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
      'MAY', and 'OPTIONAL' in this document are to be interpreted as
      described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
      they appear in all capitals, as shown here.
-
      Copyright (c) 2019 IETF Trust and the persons identified as
      authors of the code.  All rights reserved.
-
      Redistribution and use in source and binary forms, with or
      without modification, is permitted pursuant to, and subject to
      the license terms contained in, the Simplified BSD License set
      forth in Section 4.c of the IETF Trust's Legal Provisions
      Relating to IETF Documents
      (https://trustee.ietf.org/license-info).
-
      This version of this YANG module is part of RFC 8639; see the
      RFC itself for full legal notices.";
 
@@ -416,11 +407,9 @@
         description
           "Event stream evaluation criteria encoded in the syntax of
            a subtree filter as defined in RFC 6241, Section 6.
-
            The subtree filter is applied to the representation of
            individual, delineated event records as contained in the
            event stream.
-
            If the subtree filter returns a non-empty node set, the
            filter matches the event record, and the event record is
            included in the notification message sent to the
@@ -435,39 +424,31 @@
         description
           "Event stream evaluation criteria encoded in the syntax of
            an XPath 1.0 expression.
-
            The XPath expression is evaluated on the representation of
            individual, delineated event records as contained in
            the event stream.
-
            The result of the XPath expression is converted to a
            boolean value using the standard XPath 1.0 rules.  If the
            boolean value is 'true', the filter matches the event
            record, and the event record is included in the
            notification message sent to the receivers.
-
            The expression is evaluated in the following XPath
            context:
-
               o  The set of namespace declarations is the set of
                  prefix and namespace pairs for all YANG modules
                  implemented by the server, where the prefix is the
                  YANG module name and the namespace is as defined by
                  the 'namespace' statement in the YANG module.
-
                  If the leaf is encoded in XML, all namespace
                  declarations in scope on the 'stream-xpath-filter'
                  leaf element are added to the set of namespace
                  declarations.  If a prefix found in the XML is
                  already present in the set of namespace
                  declarations, the namespace in the XML is used.
-
               o  The set of variable bindings is empty.
-
               o  The function library is comprised of the core
                  function library and the XPath functions defined in
                  Section 10 in RFC 7950.
-
               o  The context node is the root node.";
         reference
           "XML Path Language (XPath) Version 1.0
@@ -517,7 +498,6 @@
          In other words, there should be no streaming of objects from
          the current subscription if the parent has something ready
          to push.
-
          If a dependency is asserted via configuration or via an RPC
          but the referenced 'subscription-id' does not exist, the
          dependency is silently discarded.  If a referenced
@@ -791,7 +771,6 @@
       "This RPC allows a subscriber to delete a subscription that
        was previously created by that same subscriber using the
        'establish-subscription' RPC.
-
        If an error occurs, the server replies with an 'rpc-error'
        where the 'error-info' field MAY contain a
        'delete-subscription-error-info' structure.";
@@ -814,7 +793,6 @@
       "This RPC allows an operator to delete a dynamic subscription
        without restrictions on the originating subscriber or
        underlying transport session.
-
        If an error occurs, the server replies with an 'rpc-error'
        where the 'error-info' field MAY contain a
        'delete-subscription-error-info' structure.";
@@ -971,7 +949,6 @@
              prior to 'replay-start-time', this gives the time of
              the event generated immediately prior to the
              'replay-start-time'.
-
              If a receiver previously received event records for
              this configured subscription, it can compare this time
              to the last event record previously received.  If the
@@ -1122,7 +1099,6 @@
         "The identity and specific parameters of a subscription.
          Subscriptions in this list can be created using a control
          channel or RPC or can be established through configuration.
-
          If the 'kill-subscription' RPC or configuration operations
          are used to delete a subscription, a
          'subscription-terminated' message is sent to any active or
@@ -1303,7 +1279,6 @@
                    'subscription-started' subscription state change
                    notification needs to be successfully received
                    before notification messages are sent.
-
                    If the 'reset' action is invoked for a receiver of
                    an active configured subscription, the state
                    must be moved to 'connecting'.";
@@ -1347,4 +1322,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-system.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-system.yang
index 141ddba..1618242 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-system.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-system.yang
@@ -155,7 +155,6 @@
        any port other than the default port.";
   }
 
-
   /*
    * Identities
    */
@@ -754,7 +753,6 @@
           "The current system date and time.";
       }
 
-
       leaf boot-datetime {
         type yang:date-and-time;
         description
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-x509-cert-to-name.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-x509-cert-to-name.yang
new file mode 100644
index 0000000..cbc9be2
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-x509-cert-to-name.yang
@@ -0,0 +1,303 @@
+module ietf-x509-cert-to-name {
+
+  namespace "urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name";
+  prefix x509c2n;
+
+  import ietf-yang-types {
+    prefix yang;
+  }
+
+  organization
+    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+  contact
+    "WG Web:   <http://tools.ietf.org/wg/netmod/>
+     WG List:  <mailto:netmod@ietf.org>
+
+     WG Chair: Thomas Nadeau
+               <mailto:tnadeau@lucidvision.com>
+
+     WG Chair: Juergen Schoenwaelder
+               <mailto:j.schoenwaelder@jacobs-university.de>
+
+     Editor:   Martin Bjorklund
+               <mailto:mbj@tail-f.com>
+
+     Editor:   Juergen Schoenwaelder
+               <mailto:j.schoenwaelder@jacobs-university.de>";
+
+  description
+    "This module contains a collection of YANG definitions for
+     extracting a name from an X.509 certificate.
+     The algorithm used to extract a name from an X.509 certificate
+     was first defined in RFC 6353.
+
+     Copyright (c) 2014 IETF Trust and the persons identified as
+     authors of the code.  All rights reserved.
+
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject
+     to the license terms contained in, the Simplified BSD License
+     set forth in Section 4.c of the IETF Trust's Legal Provisions
+     Relating to IETF Documents
+     (http://trustee.ietf.org/license-info).
+
+     This version of this YANG module is part of RFC 7407; see
+     the RFC itself for full legal notices.";
+
+  reference
+    "RFC 6353: Transport Layer Security (TLS) Transport Model for
+       the Simple Network Management Protocol (SNMP)";
+
+  revision 2014-12-10 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 7407: A YANG Data Model for SNMP Configuration";
+
+  }
+
+  typedef tls-fingerprint {
+    type yang:hex-string {
+      pattern '([0-9a-fA-F]){2}(:([0-9a-fA-F]){2}){0,254}';
+    }
+    description
+     "A fingerprint value that can be used to uniquely reference
+      other data of potentially arbitrary length.
+
+      A tls-fingerprint value is composed of a 1-octet hashing
+      algorithm identifier followed by the fingerprint value.  The
+      first octet value identifying the hashing algorithm is taken
+      from the IANA 'TLS HashAlgorithm Registry' (RFC 5246).  The
+      remaining octets are filled using the results of the hashing
+      algorithm.";
+    reference
+     "RFC 6353: Transport Layer Security (TLS) Transport Model
+        for the Simple Network Management Protocol (SNMP).
+        SNMP-TLS-TM-MIB.SnmpTLSFingerprint";
+  }
+
+  /* Identities */
+
+  identity cert-to-name {
+    description
+      "Base identity for algorithms to derive a name from a
+       certificate.";
+  }
+
+  identity specified {
+    base cert-to-name;
+    description
+      "Directly specifies the name to be used for the certificate.
+       The value of the leaf 'name' in the cert-to-name list is
+       used.";
+    reference
+      "RFC 6353: Transport Layer Security (TLS) Transport Model
+         for the Simple Network Management Protocol (SNMP).
+         SNMP-TLS-TM-MIB.snmpTlstmCertSpecified";
+  }
+
+  identity san-rfc822-name {
+    base cert-to-name;
+    description
+      "Maps a subjectAltName's rfc822Name to a name.  The local part
+       of the rfc822Name is passed unaltered, but the host-part of
+       the name must be passed in lowercase.  For example, the
+       rfc822Name field FooBar@Example.COM is mapped to name
+       FooBar@example.com.";
+    reference
+      "RFC 6353: Transport Layer Security (TLS) Transport Model
+         for the Simple Network Management Protocol (SNMP).
+         SNMP-TLS-TM-MIB.snmpTlstmCertSANRFC822Name";
+  }
+
+  identity san-dns-name {
+    base cert-to-name;
+    description
+      "Maps a subjectAltName's dNSName to a name after first
+       converting it to all lowercase (RFC 5280 does not specify
+       converting to lowercase, so this involves an extra step).
+       This mapping results in a 1:1 correspondence between
+       subjectAltName dNSName values and the name values.";
+    reference
+      "RFC 6353: Transport Layer Security (TLS) Transport Model
+         for the Simple Network Management Protocol (SNMP).
+         SNMP-TLS-TM-MIB.snmpTlstmCertSANDNSName";
+  }
+
+  identity san-ip-address {
+    base cert-to-name;
+    description
+      "Maps a subjectAltName's iPAddress to a name by
+       transforming the binary-encoded address as follows:
+
+         1) for IPv4, the value is converted into a
+            decimal-dotted quad address (e.g., '192.0.2.1').
+
+         2) for IPv6 addresses, the value is converted into a
+            32-character, all-lowercase hexadecimal string
+            without any colon separators.
+
+       This mapping results in a 1:1 correspondence between
+       subjectAltName iPAddress values and the name values.";
+    reference
+      "RFC 6353: Transport Layer Security (TLS) Transport Model
+         for the Simple Network Management Protocol (SNMP).
+         SNMP-TLS-TM-MIB.snmpTlstmCertSANIpAddress";
+  }
+
+  identity san-any {
+    base cert-to-name;
+    description
+      "Maps any of the following fields using the corresponding
+       mapping algorithms:
+
+         +------------+-----------------+
+         | Type       | Algorithm       |
+         |------------+-----------------|
+         | rfc822Name | san-rfc822-name |
+         | dNSName    | san-dns-name    |
+         | iPAddress  | san-ip-address  |
+         +------------+-----------------+
+
+       The first matching subjectAltName value found in the
+       certificate of the above types MUST be used when deriving
+       the name.  The mapping algorithm specified in the
+       'Algorithm' column MUST be used to derive the name.
+
+       This mapping results in a 1:1 correspondence between
+       subjectAltName values and name values.  The three sub-mapping
+       algorithms produced by this combined algorithm cannot produce
+       conflicting results between themselves.";
+    reference
+      "RFC 6353: Transport Layer Security (TLS) Transport Model
+         for the Simple Network Management Protocol (SNMP).
+         SNMP-TLS-TM-MIB.snmpTlstmCertSANAny";
+  }
+
+  identity common-name {
+    base cert-to-name;
+    description
+      "Maps a certificate's CommonName to a name after converting
+       it to a UTF-8 encoding.  The usage of CommonNames is
+       deprecated, and users are encouraged to use subjectAltName
+       mapping methods instead.  This mapping results in a 1:1
+       correspondence between certificate CommonName values and name
+       values.";
+    reference
+      "RFC 6353: Transport Layer Security (TLS) Transport Model
+         for the Simple Network Management Protocol (SNMP).
+         SNMP-TLS-TM-MIB.snmpTlstmCertCommonName";
+  }
+
+  /*
+   * Groupings
+   */
+
+  grouping cert-to-name {
+    description
+      "Defines nodes for mapping certificates to names.  Modules
+       that use this grouping should describe how the resulting
+       name is used.";
+
+    list cert-to-name {
+      key id;
+      description
+        "This list defines how certificates are mapped to names.
+         The name is derived by considering each cert-to-name
+         list entry in order.  The cert-to-name entry's fingerprint
+         determines whether the list entry is a match:
+
+         1) If the cert-to-name list entry's fingerprint value
+            matches that of the presented certificate, then consider
+            the list entry a successful match.
+
+         2) If the cert-to-name list entry's fingerprint value
+            matches that of a locally held copy of a trusted CA
+            certificate, and that CA certificate was part of the CA
+            certificate chain to the presented certificate, then
+            consider the list entry a successful match.
+
+        Once a matching cert-to-name list entry has been found, the
+        map-type is used to determine how the name associated with
+        the certificate should be determined.  See the map-type
+        leaf's description for details on determining the name value.
+        If it is impossible to determine a name from the cert-to-name
+        list entry's data combined with the data presented in the
+        certificate, then additional cert-to-name list entries MUST
+        be searched to look for another potential match.
+
+        Security administrators are encouraged to make use of
+        certificates with subjectAltName fields that can be mapped to
+        names so that a single root CA certificate can allow all
+        child certificates' subjectAltName fields to map directly to
+        a name via a 1:1 transformation.";
+      reference
+       "RFC 6353: Transport Layer Security (TLS) Transport Model
+          for the Simple Network Management Protocol (SNMP).
+          SNMP-TLS-TM-MIB.snmpTlstmCertToTSNEntry";
+
+      leaf id {
+        type uint32;
+        description
+          "The id specifies the order in which the entries in the
+           cert-to-name list are searched.  Entries with lower
+           numbers are searched first.";
+        reference
+          "RFC 6353: Transport Layer Security (TLS) Transport Model
+             for the Simple Network Management Protocol
+             (SNMP).
+             SNMP-TLS-TM-MIB.snmpTlstmCertToTSNID";
+      }
+
+      leaf fingerprint {
+        type x509c2n:tls-fingerprint;
+        mandatory true;
+        description
+          "Specifies a value with which the fingerprint of the
+           full certificate presented by the peer is compared.  If
+           the fingerprint of the full certificate presented by the
+           peer does not match the fingerprint configured, then the
+           entry is skipped, and the search for a match continues.";
+        reference
+          "RFC 6353: Transport Layer Security (TLS) Transport Model
+             for the Simple Network Management Protocol
+             (SNMP).
+             SNMP-TLS-TM-MIB.snmpTlstmCertToTSNFingerprint";
+      }
+
+      leaf map-type {
+        type identityref {
+          base cert-to-name;
+        }
+        mandatory true;
+        description
+          "Specifies the algorithm used to map the certificate
+           presented by the peer to a name.
+
+           Mappings that need additional configuration objects should
+           use the 'when' statement to make them conditional based on
+           the map-type.";
+        reference
+          "RFC 6353: Transport Layer Security (TLS) Transport Model
+             for the Simple Network Management Protocol
+             (SNMP).
+             SNMP-TLS-TM-MIB.snmpTlstmCertToTSNMapType";
+      }
+
+      leaf name {
+        when "../map-type = 'x509c2n:specified'";
+        type string;
+        mandatory true;
+        description
+          "Directly specifies the NETCONF username when the
+           map-type is 'specified'.";
+        reference
+          "RFC 6353: Transport Layer Security (TLS) Transport Model
+             for the Simple Network Management Protocol
+             (SNMP).
+             SNMP-TLS-TM-MIB.snmpTlstmCertToTSNData";
+      }
+    }
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-library.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-library.yang
new file mode 100644
index 0000000..a16e298
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-library.yang
@@ -0,0 +1,523 @@
+module ietf-yang-library {
+  yang-version 1.1;
+  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
+  prefix yanglib;
+
+  import ietf-yang-types {
+    prefix yang;
+    reference
+      "RFC 6991: Common YANG Data Types";
+  }
+  import ietf-inet-types {
+    prefix inet;
+    reference
+      "RFC 6991: Common YANG Data Types";
+  }
+  import ietf-datastores {
+    prefix ds;
+    reference
+      "RFC 8342: Network Management Datastore Architecture
+                 (NMDA)";
+  }
+
+  organization
+    "IETF NETCONF (Network Configuration) Working Group";
+  contact
+    "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
+     WG List:  <mailto:netconf@ietf.org>
+     Author:   Andy Bierman
+               <mailto:andy@yumaworks.com>
+     Author:   Martin Bjorklund
+               <mailto:mbj@tail-f.com>
+     Author:   Juergen Schoenwaelder
+               <mailto:j.schoenwaelder@jacobs-university.de>
+     Author:   Kent Watsen
+               <mailto:kent+ietf@watsen.net>
+     Author:   Robert Wilton
+               <mailto:rwilton@cisco.com>";
+  description
+    "This module provides information about the YANG modules,
+     datastores, and datastore schemas used by a network
+     management server.
+     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+     'MAY', and 'OPTIONAL' in this document are to be interpreted as
+     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+     they appear in all capitals, as shown here.
+     Copyright (c) 2019 IETF Trust and the persons identified as
+     authors of the code.  All rights reserved.
+     Redistribution and use in source and binary forms, with or
+     without modification, is permitted pursuant to, and subject
+     to the license terms contained in, the Simplified BSD License
+     set forth in Section 4.c of the IETF Trust's Legal Provisions
+     Relating to IETF Documents
+     (https://trustee.ietf.org/license-info).
+     This version of this YANG module is part of RFC 8525; see
+     the RFC itself for full legal notices.";
+
+  revision 2019-01-04 {
+    description
+      "Added support for multiple datastores according to the
+       Network Management Datastore Architecture (NMDA).";
+    reference
+      "RFC 8525: YANG Library";
+  }
+  revision 2016-04-09 {
+    description
+      "Initial revision.";
+    reference
+      "RFC 7895: YANG Module Library";
+  }
+
+  /*
+   * Typedefs
+   */
+
+  typedef revision-identifier {
+    type string {
+      pattern '\d{4}-\d{2}-\d{2}';
+    }
+    description
+      "Represents a specific date in YYYY-MM-DD format.";
+  }
+
+  /*
+   * Groupings
+   */
+  grouping module-identification-leafs {
+    description
+      "Parameters for identifying YANG modules and submodules.";
+    leaf name {
+      type yang:yang-identifier;
+      mandatory true;
+      description
+        "The YANG module or submodule name.";
+    }
+    leaf revision {
+      type revision-identifier;
+      description
+        "The YANG module or submodule revision date.  If no revision
+         statement is present in the YANG module or submodule, this
+         leaf is not instantiated.";
+    }
+  }
+
+  grouping location-leaf-list {
+    description
+      "Common leaf-list parameter for the locations of modules and
+       submodules.";
+    leaf-list location {
+      type inet:uri;
+      description
+        "Contains a URL that represents the YANG schema
+         resource for this module or submodule.
+         This leaf will only be present if there is a URL
+         available for retrieval of the schema for this entry.";
+    }
+  }
+
+  grouping module-implementation-parameters {
+    description
+      "Parameters for describing the implementation of a module.";
+    leaf-list feature {
+      type yang:yang-identifier;
+      description
+        "List of all YANG feature names from this module that are
+         supported by the server, regardless whether they are defined
+         in the module or any included submodule.";
+    }
+    leaf-list deviation {
+      type leafref {
+        path "../../module/name";
+      }
+
+      description
+        "List of all YANG deviation modules used by this server to
+         modify the conformance of the module associated with this
+         entry.  Note that the same module can be used for deviations
+         for multiple modules, so the same entry MAY appear within
+         multiple 'module' entries.
+         This reference MUST NOT (directly or indirectly)
+         refer to the module being deviated.
+         Robust clients may want to make sure that they handle a
+         situation where a module deviates itself (directly or
+         indirectly) gracefully.";
+    }
+  }
+
+  grouping module-set-parameters {
+    description
+      "A set of parameters that describe a module set.";
+    leaf name {
+      type string;
+      description
+        "An arbitrary name of the module set.";
+    }
+    list module {
+      key "name";
+      description
+        "An entry in this list represents a module implemented by the
+         server, as per Section 5.6.5 of RFC 7950, with a particular
+         set of supported features and deviations.";
+      reference
+        "RFC 7950: The YANG 1.1 Data Modeling Language";
+      uses module-identification-leafs;
+      leaf namespace {
+        type inet:uri;
+        mandatory true;
+        description
+          "The XML namespace identifier for this module.";
+      }
+      uses location-leaf-list;
+      list submodule {
+        key "name";
+        description
+          "Each entry represents one submodule within the
+           parent module.";
+        uses module-identification-leafs;
+        uses location-leaf-list;
+      }
+      uses module-implementation-parameters;
+    }
+    list import-only-module {
+      key "name revision";
+      description
+        "An entry in this list indicates that the server imports
+         reusable definitions from the specified revision of the
+         module but does not implement any protocol-accessible
+         objects from this revision.
+         Multiple entries for the same module name MAY exist.  This
+         can occur if multiple modules import the same module but
+         specify different revision dates in the import statements.";
+      leaf name {
+        type yang:yang-identifier;
+        description
+          "The YANG module name.";
+      }
+      leaf revision {
+        type union {
+          type revision-identifier;
+          type string {
+            length "0";
+          }
+        }
+        description
+          "The YANG module revision date.
+           A zero-length string is used if no revision statement
+           is present in the YANG module.";
+      }
+      leaf namespace {
+        type inet:uri;
+        mandatory true;
+        description
+          "The XML namespace identifier for this module.";
+      }
+      uses location-leaf-list;
+      list submodule {
+        key "name";
+        description
+          "Each entry represents one submodule within the
+           parent module.";
+        uses module-identification-leafs;
+        uses location-leaf-list;
+      }
+    }
+  }
+
+  grouping yang-library-parameters {
+    description
+      "The YANG library data structure is represented as a grouping
+       so it can be reused in configuration or another monitoring
+       data structure.";
+    list module-set {
+      key "name";
+      description
+        "A set of modules that may be used by one or more schemas.
+         A module set does not have to be referentially complete,
+         i.e., it may define modules that contain import statements
+         for other modules not included in the module set.";
+      uses module-set-parameters;
+    }
+    list schema {
+      key "name";
+      description
+        "A datastore schema that may be used by one or more
+         datastores.
+         The schema must be valid and referentially complete, i.e.,
+         it must contain modules to satisfy all used import
+         statements for all modules specified in the schema.";
+      leaf name {
+        type string;
+        description
+          "An arbitrary name of the schema.";
+      }
+      leaf-list module-set {
+        type leafref {
+          path "../../module-set/name";
+        }
+        description
+          "A set of module-sets that are included in this schema.
+           If a non-import-only module appears in multiple module
+           sets, then the module revision and the associated features
+           and deviations must be identical.";
+      }
+    }
+    list datastore {
+      key "name";
+      description
+        "A datastore supported by this server.
+         Each datastore indicates which schema it supports.
+         The server MUST instantiate one entry in this list per
+         specific datastore it supports.
+         Each datastore entry with the same datastore schema SHOULD
+         reference the same schema.";
+      leaf name {
+        type ds:datastore-ref;
+        description
+          "The identity of the datastore.";
+      }
+      leaf schema {
+        type leafref {
+          path "../../schema/name";
+        }
+        mandatory true;
+        description
+          "A reference to the schema supported by this datastore.
+           All non-import-only modules of the schema are implemented
+           with their associated features and deviations.";
+      }
+    }
+  }
+
+  /*
+   * Top-level container
+   */
+
+  container yang-library {
+    config false;
+    description
+      "Container holding the entire YANG library of this server.";
+    uses yang-library-parameters;
+    leaf content-id {
+      type string;
+      mandatory true;
+      description
+        "A server-generated identifier of the contents of the
+         '/yang-library' tree.  The server MUST change the value of
+         this leaf if the information represented by the
+         '/yang-library' tree, except '/yang-library/content-id', has
+         changed.";
+    }
+  }
+
+  /*
+   * Notifications
+   */
+
+  notification yang-library-update {
+    description
+      "Generated when any YANG library information on the
+       server has changed.";
+    leaf content-id {
+      type leafref {
+        path "/yanglib:yang-library/yanglib:content-id";
+      }
+      mandatory true;
+      description
+        "Contains the YANG library content identifier for the updated
+         YANG library at the time the notification is generated.";
+    }
+  }
+
+  /*
+   * Legacy groupings
+   */
+
+  grouping module-list {
+    status deprecated;
+    description
+      "The module data structure is represented as a grouping
+       so it can be reused in configuration or another monitoring
+       data structure.";
+
+    grouping common-leafs {
+      status deprecated;
+      description
+        "Common parameters for YANG modules and submodules.";
+      leaf name {
+        type yang:yang-identifier;
+        status deprecated;
+        description
+          "The YANG module or submodule name.";
+      }
+      leaf revision {
+        type union {
+          type revision-identifier;
+          type string {
+            length "0";
+          }
+        }
+        status deprecated;
+        description
+          "The YANG module or submodule revision date.
+           A zero-length string is used if no revision statement
+           is present in the YANG module or submodule.";
+      }
+    }
+
+    grouping schema-leaf {
+      status deprecated;
+      description
+        "Common schema leaf parameter for modules and submodules.";
+      leaf schema {
+        type inet:uri;
+        description
+          "Contains a URL that represents the YANG schema
+           resource for this module or submodule.
+           This leaf will only be present if there is a URL
+           available for retrieval of the schema for this entry.";
+      }
+    }
+    list module {
+      key "name revision";
+      status deprecated;
+      description
+        "Each entry represents one revision of one module
+         currently supported by the server.";
+      uses common-leafs {
+        status deprecated;
+      }
+      uses schema-leaf {
+        status deprecated;
+      }
+      leaf namespace {
+        type inet:uri;
+        mandatory true;
+        status deprecated;
+        description
+          "The XML namespace identifier for this module.";
+      }
+      leaf-list feature {
+        type yang:yang-identifier;
+        status deprecated;
+        description
+          "List of YANG feature names from this module that are
+           supported by the server, regardless of whether they are
+           defined in the module or any included submodule.";
+      }
+      list deviation {
+        key "name revision";
+        status deprecated;
+
+        description
+          "List of YANG deviation module names and revisions
+           used by this server to modify the conformance of
+           the module associated with this entry.  Note that
+           the same module can be used for deviations for
+           multiple modules, so the same entry MAY appear
+           within multiple 'module' entries.
+           The deviation module MUST be present in the 'module'
+           list, with the same name and revision values.
+           The 'conformance-type' value will be 'implement' for
+           the deviation module.";
+        uses common-leafs {
+          status deprecated;
+        }
+      }
+      leaf conformance-type {
+        type enumeration {
+          enum implement {
+            description
+              "Indicates that the server implements one or more
+               protocol-accessible objects defined in the YANG module
+               identified in this entry.  This includes deviation
+               statements defined in the module.
+               For YANG version 1.1 modules, there is at most one
+               'module' entry with conformance type 'implement' for a
+               particular module name, since YANG 1.1 requires that
+               at most one revision of a module is implemented.
+               For YANG version 1 modules, there SHOULD NOT be more
+               than one 'module' entry for a particular module
+               name.";
+          }
+          enum import {
+            description
+              "Indicates that the server imports reusable definitions
+               from the specified revision of the module but does
+               not implement any protocol-accessible objects from
+               this revision.
+               Multiple 'module' entries for the same module name MAY
+               exist.  This can occur if multiple modules import the
+               same module but specify different revision dates in
+               the import statements.";
+          }
+        }
+        mandatory true;
+        status deprecated;
+        description
+          "Indicates the type of conformance the server is claiming
+           for the YANG module identified by this entry.";
+      }
+      list submodule {
+        key "name revision";
+        status deprecated;
+        description
+          "Each entry represents one submodule within the
+           parent module.";
+        uses common-leafs {
+          status deprecated;
+        }
+        uses schema-leaf {
+          status deprecated;
+        }
+      }
+    }
+  }
+
+  /*
+   * Legacy operational state data nodes
+   */
+
+  container modules-state {
+    config false;
+    status deprecated;
+    description
+      "Contains YANG module monitoring information.";
+    leaf module-set-id {
+      type string;
+      mandatory true;
+      status deprecated;
+      description
+        "Contains a server-specific identifier representing
+         the current set of modules and submodules.  The
+         server MUST change the value of this leaf if the
+         information represented by the 'module' list instances
+         has changed.";
+    }
+    uses module-list {
+      status deprecated;
+    }
+  }
+
+  /*
+   * Legacy notifications
+   */
+
+  notification yang-library-change {
+    status deprecated;
+    description
+      "Generated when the set of modules and submodules supported
+       by the server has changed.";
+    leaf module-set-id {
+      type leafref {
+        path "/yanglib:modules-state/yanglib:module-set-id";
+      }
+      mandatory true;
+      status deprecated;
+      description
+        "Contains the module-set-id value representing the
+         set of modules and submodules supported at the server
+         at the time the notification is generated.";
+    }
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-schema-mount@2019-01-14.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-schema-mount.yang
similarity index 99%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-schema-mount@2019-01-14.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-schema-mount.yang
index 1f4f242..679d944 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-schema-mount@2019-01-14.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-schema-mount.yang
@@ -73,6 +73,7 @@
        The 'mount-point' statement MUST NOT be used in a YANG
        version 1 module, neither explicitly nor via a 'uses'
        statement.
+
        The 'mount-point' statement MAY be present as a substatement
        of 'container' and 'list' and MUST NOT be present elsewhere.
        There MUST NOT be more than one 'mount-point' statement in a
@@ -119,7 +120,6 @@
     }
     list mount-point {
       key "module label";
-
       description
         "Each entry of this list specifies a schema for a particular
          mount point.
@@ -167,7 +167,6 @@
           presence
             "The mounted schema together with the 'parent-reference'
              make up the schema for this mount point.";
-
           description
             "This node indicates that the server has mounted at least
              the module 'ietf-yang-library' at the mount point, and
@@ -221,4 +220,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-types@2013-07-15.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-types.yang
old mode 100644
new mode 100755
similarity index 100%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-types@2013-07-15.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/ietf-yang-types.yang
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald-port@2019-07-03.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald-port.yang
similarity index 89%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald-port@2019-07-03.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald-port.yang
index 2cafb9e..728611a 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald-port@2019-07-03.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald-port.yang
@@ -12,7 +12,7 @@
     "This module defines the input state and output configuration for
     the Antenna Line Device capability.
 
-    Copyright 2019 the O-RAN Alliance.
+    Copyright 2021 the O-RAN Alliance.
 
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -38,6 +38,24 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2021-12-01" {
+    description
+      "version 1.3.0
+
+      1) Typographical corrections for british english.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 1.2.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
   revision "2019-07-03" {
     description
       "version 1.1.0
@@ -67,11 +85,12 @@
 // Groupings
 
   grouping aldport-group {
+    description "a port grouping ";
     leaf over-current-supported {
       type boolean;
       config false;
       description
-        "Set to TRUE when the equipment supports over curent notifications";
+        "Set to TRUE when the equipment supports over-current notifications";
     }
 
     list ald-port {
@@ -125,11 +144,11 @@
         type enumeration {
               enum ANTENNA_CONNECTOR {
                 description
-                    "This ald port is related to antenna connector";
+                    "This ALD port is related to antenna connector";
               }
               enum RS485_PORT {
                 description
-                    "This ald port is related to RS485 port";
+                    "This ALD port is related to RS485 port";
               }
             }
         config false;
@@ -170,6 +189,7 @@
   }
 
   grouping overcurrent-group {
+    description "overcurrent group";
     container overload-condition {
       description
         "Container used in notification";
@@ -185,6 +205,7 @@
   }
 
   grouping dc-enabled-group {
+    description "dc enabled group";
     list ald-port {
       key name;
       description
@@ -199,7 +220,7 @@
         type leafref {
           path "/ald-ports-io/ald-port/dc-enabled-status";
         }
-        description "New staus of dc-enabled-status";
+        description "New status of dc-enabled-status";
       }
     }
   }
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald@2019-07-03.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald.yang
similarity index 90%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald@2019-07-03.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald.yang
index d09cc30..1042b5f 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald@2019-07-03.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ald.yang
@@ -13,7 +13,7 @@
     "www.o-ran.org";
 
   description
-    "This module defines the module for the ald communication.
+    "This module defines the module for the ALD communication.
 
     Copyright 2019 the O-RAN Alliance.
 
@@ -41,6 +41,15 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2021-12-01" {
+    description
+      "version 1.2.0
+
+      1) Typographical corrections.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
   revision "2019-07-03" {
     description
       "version 1.1.0
@@ -61,6 +70,7 @@
   }
 
   grouping ald-input {
+    description "a grouping for ald input";
     leaf port-id {
       type leafref {
         path "/ap:ald-ports-io/ap:ald-port/ap:port-id";
@@ -81,6 +91,7 @@
   }
 
   grouping ald-output {
+    description "a grouping for ald output";
     leaf port-id {
       type leafref {
         path "/ap:ald-ports-io/ap:ald-port/ap:port-id";
@@ -112,7 +123,7 @@
       type string;
 
       description
-        "Detailed error message when the status is rejected. E.g. wrong ALD port identifier was used in RPC received from Netconf Client";
+        "Detailed error message when the status is rejected. E.g. wrong ALD port identifier was used in RPC received from NETCONF Client";
     }
 
     leaf ald-resp-msg {
@@ -148,7 +159,7 @@
   // rpc-statements
   rpc ald-communication {
     description
-      "Rpc to support communication between O-DU and Antenna Line Devices";
+      "RPC to support communication between O-DU and Antenna Line Devices";
 
     input {
       uses ald-input;
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-antenna-calibration.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-antenna-calibration.yang
new file mode 100644
index 0000000..47941e7
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-antenna-calibration.yang
@@ -0,0 +1,695 @@
+module o-ran-antenna-calibration {
+  yang-version 1.1;
+  namespace "urn:o-ran:antcal:1.0";
+  prefix "o-ran-antcal";
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the configuration required for supporting the optional
+    antenna calibration functionality.
+
+     Copyright 2021 the O-RAN Alliance.
+
+     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+     ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+     LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+     CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+     SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+     POSSIBILITY OF SUCH DAMAGE.
+
+     Redistribution and use in source and binary forms, with or without
+     modification, are permitted provided that the following conditions are met:
+
+     * Redistribution of source code must retain the above copyright notice,
+     this list of conditions and the above disclaimer.
+     * Redistribution in binary form must reproduce the above copyright notice,
+     this list of conditions and the above disclaimer in the documentation
+     and/or other materials provided with the distribution.
+     * Neither the Members of the O-RAN Alliance nor the names of its
+     contributors may be used to endorse or promote products derived from
+     this software without specific prior written permission.";
+
+  revision 2021-12-01 {
+   description
+     "version 7.1.0
+
+       1) typographical corrections in descriptions.";
+
+   reference "ORAN-WG4.MP-v07.00";
+  }
+
+  revision 2021-07-26 {
+    description
+      "version 7.0.0
+
+        1) O-RU-COORDINATED-ANT-CAL-MULTIPLE-TIME-RESOURCE is added as optional feature
+        to provide support for multiple antenna calibration time resources configurations.
+        2) Flag for O-DU to control if O-RU is allowed to support this feature
+        'coordinated-calibration-multiple-time-resources-allowed'
+        3) defined grouping 'antenna-calibration-multiple-time-resource' from which list
+        for supporting multiple antenna calibration time resource configuration is supported.
+        4) created new container 'antenna-calibration-multiple-time-resource' with list
+        'antenna-calibration-multiple-time-resource-list' and key to index the list
+        'antenna-calibration-time-resource-index'.
+        5) added new notification 'antenna-calibration-multiple-time-resource-params' with
+        'antenna-calibration-time-resource-index' as a leaf to indicate index of time resource
+        6) Added support for configured preparedness timer for co-ordinated calibration";
+
+    reference "ORAN-WG4.MP-v07.00";
+  }
+
+   revision 2021-03-22 {
+     description
+       "version 5.1.0
+
+        1) removing non-ASCII characters in model.";
+
+     reference "ORAN-WG4.MP-v05.00";
+   }
+
+
+  revision 2020-12-10 {
+    description
+      "version 5.0.0
+
+       1) O-RU-COORDINATED-ANT-CAL is added as optional feature
+       to provide the antenna calibration without RPC
+       on the condition that coordinated-calibration-support is true
+       and coordinated-calibration-allowed is true.";
+
+    reference "ORAN-WG4.MP-v05.00";
+  }
+
+  revision 2019-07-03 {
+    description
+      "version 1.0.0
+
+       1) Newly introduced model for supporting optional
+       antenna calibration functionality";
+
+    reference "ORAN-WG4.MP-v02.00";
+  }
+
+  feature O-RU-COORDINATED-ANT-CAL {
+    description
+      "Indicates that the O-RU needs user traffic to be co-ordinated from O-DU for antenna calibration.";
+  }
+
+  feature O-RU-COORDINATED-ANT-CAL-MULTIPLE-TIME-RESOURCE {
+    description
+      "Indicates O-RU support for antenna calibration with multiple timing resource sets. Refer Section
+      'Calibration with multiple timing resource sets' of M-Plane specification v7";
+  }
+
+  grouping antenna-calibration-capabilities {
+    description "container for collection of leafs for antenna calibration";
+
+    leaf self-calibration-support {
+      type boolean;
+      default false;
+      description
+        "Indicates whether O-RU supports self-calibration or not.
+
+        When true, indicates O-RU can initiate calibration without receiving an
+        RPC and/or impacting simultaneous CU-plane operation";
+    }
+    leaf coordinated-calibration-support {
+      if-feature O-RU-COORDINATED-ANT-CAL;
+      type boolean;
+      default false;
+      description
+        "True means the O-RU is able to determine priori the time-frequency
+         resources required for self-calibration and indicate those to the O-DU
+         in the antenna-calibration-coordinated notification.";
+    }
+    leaf number-of-calibration-symbols-per-block-dl {
+      type uint8 {
+        range "1..max";
+      }
+      units symbols;
+      mandatory true;
+      description
+        "Indicates how many consecutive symbols are required for DL antenna
+        calibration operation";
+    }
+    leaf number-of-calibration-symbols-per-block-ul {
+      type uint8 {
+        range "1..max";
+      }
+      units symbols;
+      mandatory true;
+      description
+        "Indicates how many consecutive symbols are required for UL antenna
+        calibration operation";
+    }
+    leaf interval-between-calibration-blocks {
+      type uint8;
+      units symbols;
+      description
+        "if time interval is required between consecutive antenna calibration
+        operation, defines this time value as unit of symbols.
+
+        A common value is used here for the intervals
+        between DL-DL blocks, UL-UL blocks, DL-UL blocks and UL-DL blocks,
+        which is the largest minimum interval required between any two adjacent
+        calibration blocks.";
+    }
+    leaf number-of-calibration-blocks-per-step-dl {
+      type uint8 {
+        range "1..max";
+      }
+      mandatory true;
+      description
+        "Indicates how many blocks are required for one step of DL antenna
+        calibration operation";
+    }
+    leaf number-of-calibration-blocks-per-step-ul {
+      type uint8 {
+        range "1..max";
+      }
+      mandatory true;
+      description
+        "Indicates how many blocks are required for one step of UL antenna
+        calibration operation";
+    }
+    leaf interval-between-calibration-steps {
+      type uint8;
+      units radio-frames;
+      description
+        "If time interval is required between consecutive step of antenna
+        calibration operation, defines this time value as unit of radio frames";
+    }
+    leaf number-of-calibration-steps {
+      type uint8 {
+        range "1..max";
+      }
+      mandatory true;
+      description
+        "Indicates how many steps are required for whole DL/UL antenna
+        calibration operation";
+    }
+    leaf calibration-period {
+       if-feature O-RU-COORDINATED-ANT-CAL;
+       type uint16;
+       units minutes;
+       description "periodical interval between antenna calibrations in the case of support of feature O-RU-COORDINATED-ANT-CAL";
+    }
+    leaf configured-preparation-timer-supported {
+      if-feature O-RU-COORDINATED-ANT-CAL;
+      type boolean;
+      default false;
+      description
+        "indicates if the O-RU supports configuration of the preparedness timer
+        that controls how far in advance of the co-ordinated self calibration
+        procedure the O-RU is required to send the notification of impacted
+        resources.";
+    }
+  }
+
+  grouping antenna-calibration-multiple-time-resource {
+    description
+      "Grouping for collection of leafs for antenna calibration capability of O-RU supporting
+      multiple time resource when feature O-RU-COORDINATED-ANT-CAL-MULTIPLE-TIME-RESOURCE
+      is supported in the O-RU";
+
+    leaf number-of-calibration-symbols-per-block-dl {
+      type uint8 {
+        range "1..max";
+      }
+      units symbols;
+      mandatory true;
+      description
+        "Indicates how many consecutive symbols are required for DL antenna
+        calibration operation";
+    }
+    leaf number-of-calibration-symbols-per-block-ul {
+      type uint8 {
+        range "1..max";
+      }
+      units symbols;
+      mandatory true;
+      description
+        "Indicates how many consecutive symbols are required for UL antenna
+        calibration operation";
+    }
+    leaf interval-between-calibration-blocks {
+      type uint8;
+      units symbols;
+      description
+        "if time interval is required between consecutive antenna calibration
+        operation, defines this time value as unit of symbols.
+
+        A common value is used here for the intervals
+        between DL-DL blocks, UL-UL blocks, DL-UL blocks and UL-DL blocks,
+        which is the largest minimum interval required between any two adjacent
+        calibration blocks.";
+    }
+    leaf number-of-calibration-blocks-per-step-dl {
+      type uint8 {
+        range "1..max";
+      }
+      mandatory true;
+      description
+        "Indicates how many blocks are required for one step of DL antenna
+        calibration operation";
+    }
+    leaf number-of-calibration-blocks-per-step-ul {
+      type uint8 {
+        range "1..max";
+      }
+      mandatory true;
+      description
+        "Indicates how many blocks are required for one step of UL antenna
+        calibration operation";
+    }
+    leaf interval-between-calibration-steps {
+      type uint8;
+      units radio-frames;
+      description
+        "If time interval is required between consecutive step of antenna
+        calibration operation, defines this time value as unit of radio frames";
+    }
+    leaf number-of-calibration-steps {
+      type uint8 {
+        range "1..max";
+      }
+      mandatory true;
+      description
+        "Indicates how many steps are required for whole DL/UL antenna
+        calibration operation";
+    }
+    leaf calibration-period {
+       if-feature O-RU-COORDINATED-ANT-CAL;
+       type uint16;
+       units minutes;
+       description "periodical interval between antenna calibrations in the case of support of feature O-RU-COORDINATED-ANT-CAL";
+    }
+  }
+
+  grouping antenna-calibration {
+    container antenna-calibration-capabilities {
+      config false;
+      description
+        "Describes the antenna calibration capabilities";
+        uses antenna-calibration-capabilities;
+    }
+    container self-calibration-policy {
+      leaf self-calibration-allowed {
+        type boolean;
+        default false;
+        description
+          "whether the self-calibration is allowed by operator.
+          Note, self-calibration-allowed and coordinated-calibration-allowed cannot both be set to true";
+      }
+      leaf coordinated-calibration-allowed {
+        if-feature O-RU-COORDINATED-ANT-CAL;
+        type boolean;
+        must "../self-calibration-allowed = 'false'";
+        default false;
+        description
+          "whether the coordinated-calibration is allowed by operator.
+
+          True means that O-DU may beneficially use the indicated time-frequency resources
+          to adapt its operation during the antenna calibration operation,
+          e.g., consider the time-frequency resources as reserved for calibration.
+          Both calibrations (self-calibration-allowed and coordinated-calibration-support) disallowed
+          or one of them allowed only";
+      }
+      leaf coordinated-ant-calib-prep-timer {
+        if-feature O-RU-COORDINATED-ANT-CAL;
+        type uint8 {
+          range "2..10|60";
+        }
+        units seconds;
+        must "../coordinated-calibration-allowed = 'true'";
+        default 60;
+        description
+          "minimum time between O-RU sending notification of time-frequeny resources
+          for co-ordinated calibration to O-DU and O-RU starting co-ordinated
+          self-calibration procedure.
+
+          Note, the default value of 60 seconds is to accommodate earlier versions
+          which hard coded that value in the O-RAN.WG4.MP.0 specification.
+
+          An O-RU that has set configured-preparation-timer-supported=false shall
+          always use the default value of 60 seconds";
+      }
+      leaf coordinated-calibration-multiple-time-resources-allowed {
+        if-feature "O-RU-COORDINATED-ANT-CAL and O-RU-COORDINATED-ANT-CAL-MULTIPLE-TIME-RESOURCE";
+        type boolean;
+        default false;
+        description
+          "TRUE: O-RU is allowed to request for this calibration, FALSE: O-RU is prohibited to use this calibration";
+      }
+      description
+        "Describes the self calibration policies and configuration of the operator";
+    }
+
+    container antenna-calibration-multiple-time-resource {
+      if-feature "O-RU-COORDINATED-ANT-CAL and O-RU-COORDINATED-ANT-CAL-MULTIPLE-TIME-RESOURCE";
+      config false;
+      list antenna-calibration-multiple-time-resource-list {
+        key "antenna-calibration-time-resource-index";
+        uses antenna-calibration-multiple-time-resource;
+
+        leaf antenna-calibration-time-resource-index {
+          type uint8;
+          description
+            "Key for indexing 'antenna-calibration-multiple-time-resource-list'";
+        }
+        description
+          "List of antenna calibration time resource configuration indexed by
+          antenna calibration time resource index";
+      }
+      description
+        "Container to support multiple antenna calibration resource sets by defining
+        multiple calibration resources sets for different calibration types.";
+    }
+
+    description
+      "Describe the grouping set of antenna calibration";
+  }
+
+  grouping antenna-calibration-data {
+     description "information set for the operation of antenna calibration";
+
+     leaf symbol-bitmask-dl {
+        type string {
+          length "14";
+          pattern "[01]*";
+        }
+        mandatory true;
+        description
+          "Bit-mask indicating DL calibration symbol within a calibration slot.
+           First character in the string indicate first symbol,
+           next character in the string indicate second symbol and so on.
+           Value 1 indicates that the symbol may be used for calibration
+           and 0 means the symbol shall not be used for calibration.";
+      }
+      leaf symbol-bitmask-ul {
+        type string {
+          length "14";
+          pattern "[01]*";
+        }
+        mandatory true;
+        description
+          "Bit-mask indicating UL calibration symbol within a calibration slot.
+           First character in the string indicate first symbol,
+           next character in the string indicate second symbol and so on.
+           Value 1 indicates that the symbol may be used for calibration
+           and 0 means the symbol shall not be used for calibration.";
+      }
+      leaf slot-bitmask-dl {
+        type string {
+          length "10..255";
+          pattern "[01]*";
+        }
+        mandatory true;
+        description
+          "Bit-mask indicating DL calibration slot within a calibration frame.
+           First character in the string indicate first slot,
+           next character in the string indicate second slot and so on.
+           Value 1 indicates that the slot may be used for calibration
+           and 0 means the slot shall not be used for calibration.";
+        }
+        leaf slot-bitmask-ul {
+          type string {
+            length "10..255";
+            pattern "[01]*";
+          }
+          mandatory true;
+          description
+            "Bit-mask indicating UL calibration slot within a calibration frame.
+             First character in the string indicate first slot,
+             next character in the string indicate second slot and so on.
+             Value 1 indicates that the slot may be used for calibration
+             and 0 means the slot shall not be used for calibration.";
+        }
+        leaf frame-bitmask-dl {
+          type string {
+            length "1..255";
+            pattern "[01]*";
+          }
+          mandatory true;
+          description
+            "Bit-mask indicating DL calibration frame within a calibration step.
+             First character in the string indicate first radio frame equal to
+             the start-SFN, next character in the string indicate the next frame
+             and so on.
+
+             Value 1 indicates that the frame may be used for calibration
+             and 0 means the frame shall not be used for calibration.";
+        }
+        leaf frame-bitmask-ul {
+          type string {
+            length "1..255";
+            pattern "[01]*";
+          }
+          mandatory true;
+          description
+            "Bit-mask indicating UL calibration frame within a calibration step.
+             First character in the string indicate first radio frame equal to
+             the start-SFN, next character in the string indicate the next frame
+             and so on.
+
+             Value 1 indicates that the frame is may be used for calibration
+             and 0 means the frame shall not be used for calibration.";
+        }
+        leaf calibration-step-size {
+          type uint8;
+          mandatory true;
+          description " Number of frames within a calibration step";
+        }
+        leaf calibration-step-number {
+          type uint8;
+          mandatory true;
+          description "Number of calibration steps";
+        }
+        leaf start-sfn {
+          type uint16 {
+            range "0..1023";
+          }
+          mandatory true;
+          description "start SFN number of the first calibration step";
+        }
+  }
+
+  container antenna-calibration {
+    uses antenna-calibration;
+    description
+      "Describes the antenna calibration top node";
+  }
+
+  rpc start-antenna-calibration {
+    description
+      "The antenna calibration operation can start when NETCONF client sends a
+      calibration start command with resource allocation parameters.
+      These parameters indicate how the O-RU can perform the antenna
+      calibration operation; at which Symbol, Slot, and Frame.
+      This scheduling information can be generated by O-RU itself.
+      However, in a dynamic TDD environment, the DL and UL configuration
+      is only determined and known by O-DU. Consequently, only O-DU (NETCONF
+      client ) can determine and configure the scheduling and resource
+      allocation permitted for use by the antenna calibration operation";
+    input  {
+       uses antenna-calibration-data;
+    }
+    output  {
+      leaf status {
+        type enumeration {
+          enum ACCEPTED {
+            description
+              "Status information to indicate that O-RU accepted RPC
+              antenna calibration start request";
+          }
+          enum REJECTED {
+            description
+              "Status information to indicate that O-RU rejected RPC antenna
+              calibration start request";
+          }
+        }
+        mandatory true;
+        description
+          "Status of whether antenna calibration trigger by RPC is accepted
+          by the O-RU";
+      }
+      leaf error-message {
+        when "../status='REJECTED'";
+          type string;
+          description
+            "Detailed error Message when the status is rejected, e.g.,
+             because O-RU can not start antenna calibration
+             such as already running antenna calibration,
+             resource mask mismatch with O-RU antenna calibration capability,
+             overlapped DL and UL masks, insufficient memory, O-RU internal reason";
+      }
+    }
+  }
+
+  notification antenna-calibration-required {
+    list dl-calibration-frequency-chunk {
+      leaf start-calibration-frequency-dl {
+        type uint64;
+        description
+          "lowest frequency value in Hz of the frequency range is required for
+           DL antenna calibration operation.";
+      }
+      leaf end-calibration-frequency-dl {
+        type uint64;
+        description
+          "highest frequency value in Hz of the frequency range is required for
+           DL antenna calibration operation.";
+      }
+      description
+         "min/max frequency of DL spectrum chunk affected by calibration process";
+    }
+    list ul-calibration-frequency-chunk {
+      leaf start-calibration-frequency-ul {
+        type uint64;
+        description
+          "lowest frequency value in Hz of the frequency range is required for
+           UL antenna calibration operation.";
+      }
+      leaf end-calibration-frequency-ul {
+        type uint64;
+        description
+          "highest frequency value in Hz of the frequency range is required for
+           UL antenna calibration operation.";
+      }
+      description
+        "min/max frequency of UL spectrum chunk affected by calibration process";
+    }
+
+    description
+      "this notification indicates that the antenna calibration is required in O-RU";
+  }
+
+  notification antenna-calibration-coordinated {
+    if-feature O-RU-COORDINATED-ANT-CAL;
+    list dl-calibration-frequency-chunk {
+      leaf start-calibration-frequency-dl {
+        type uint64;
+        description
+          "lowest frequency value in Hz of the frequency range is required for
+           DL antenna calibration operation.";
+      }
+      leaf end-calibration-frequency-dl {
+        type uint64;
+        description
+          "highest frequency value in Hz of the frequency range is required for
+           DL antenna calibration operation.";
+      }
+      description
+         "min/max frequency of DL spectrum chunk affected by calibration process";
+    }
+    list ul-calibration-frequency-chunk {
+      leaf start-calibration-frequency-ul {
+        type uint64;
+        description
+          "lowest frequency value in Hz of the frequency range is required for
+           UL antenna calibration operation.";
+      }
+      leaf end-calibration-frequency-ul {
+        type uint64;
+        description
+          "highest frequency value in Hz of the frequency range is required for
+           UL antenna calibration operation.";
+      }
+      description
+        "min/max frequency of UL spectrum chunk affected by calibration process";
+    }
+    uses antenna-calibration-data {
+      description
+        "In the case of support of feature O-RU-COORDINATED-ANT-CAL,
+         time-frequency resource determined by O-RU will be included";
+    }
+
+    description
+      "this notification indicates that co-ordinated antenna calibration is provided in O-RU.
+       It indicates the time-frequency resources will be sent to a subscribed O-DU at least 60 seconds
+       before the operation of the co-ordinated antenna calibration procedure.";
+  }
+
+  notification antenna-calibration-result {
+    leaf status {
+      type enumeration {
+        enum SUCCESS {
+          description "O-RU has succeeded in calibrating its antenna";
+        }
+        enum FAILURE {
+          description
+            "O-RU attemted to calibrate its antenna, but the procedure failed.";
+        }
+      }
+      mandatory true;
+      description
+        "Status of the antenna calibration procedure which has been triggered
+        by accepting an start-antenna-calibration RPC.";
+    }
+    leaf detailed-reason {
+      when "../status='FAILURE'";
+      type string;
+      description
+        "Detailed reason when the status is FAILURE, e.g.,
+        O-RU cannot complete the antenna calibration
+        because of lack of memory, self-calibration failure, etc";
+    }
+    description
+    "This notification indicates the antenna calibration result";
+  }
+
+  notification antenna-calibration-multiple-time-resource-params {
+    if-feature "O-RU-COORDINATED-ANT-CAL and O-RU-COORDINATED-ANT-CAL-MULTIPLE-TIME-RESOURCE";
+    leaf antenna-calibration-time-resource-index {
+      type uint8;
+      description
+        "Index to use applicable antenna calibration time resources from the
+        list 'antenna-calibration-multiple-time-resource-list'";
+   }
+   list dl-calibration-frequency-chunk {
+      leaf start-calibration-frequency-dl {
+        type uint64;
+        description
+          "lowest frequency value in Hz of the frequency range is required for
+           DL antenna calibration operation.";
+      }
+      leaf end-calibration-frequency-dl {
+        type uint64;
+        description
+          "highest frequency value in Hz of the frequency range is required for
+           DL antenna calibration operation.";
+      }
+      description
+         "min/max frequency of DL spectrum chunk affected by calibration process";
+    }
+    list ul-calibration-frequency-chunk {
+      leaf start-calibration-frequency-ul {
+        type uint64;
+        description
+          "lowest frequency value in Hz of the frequency range is required for
+           UL antenna calibration operation.";
+      }
+      leaf end-calibration-frequency-ul {
+        type uint64;
+        description
+          "highest frequency value in Hz of the frequency range is required for
+           UL antenna calibration operation.";
+      }
+      description
+        "min/max frequency of UL spectrum chunk affected by calibration process";
+    }
+
+   description
+    "This notification indicates sending parameters related to supporting antenna calibration
+    with multiple time resource";
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-antenna-calibration@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-antenna-calibration@2020-12-10.yang
deleted file mode 100644
index bb99b77..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-antenna-calibration@2020-12-10.yang
+++ /dev/null
@@ -1,466 +0,0 @@
-module o-ran-antenna-calibration {
-  yang-version 1.1;
-  namespace "urn:o-ran:antcal:1.0";
-  prefix "o-ran-antcal";
-
-  organization "O-RAN Alliance";
-
-  contact
-    "www.o-ran.org";
-
-  description
-    "This module defines the configuration required for supporting the optional
-    antenna calibration functionality.
-
-     Copyright 2019 the O-RAN Alliance.
-
-     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-     ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-     LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-     CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-     SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-     POSSIBILITY OF SUCH DAMAGE.
-
-     Redistribution and use in source and binary forms, with or without
-     modification, are permitted provided that the following conditions are met:
-
-     * Redistributions of source code must retain the above copyright notice,
-     this list of conditions and the above disclaimer.
-     * Redistributions in binary form must reproduce the above copyright notice,
-     this list of conditions and the above disclaimer in the documentation
-     and/or other materials provided with the distribution.
-     * Neither the Members of the O-RAN Alliance nor the names of its
-     contributors may be used to endorse or promote products derived from
-     this software without specific prior written permission.";
-
-  revision 2020-12-10 {
-    description
-      "version 5.0.0
-
-       1) O-RU-COORDINATED-ANT-CAL is added as optional feature
-       to provide the antenna calibration without RPC
-       on the condition that coordinated-calibration-support is true
-       and coordinated-calibration-allowed is true.";
-
-    reference "ORAN-WG4.MP-v05.00";
-  }
-
-  revision 2019-07-03 {
-    description
-      "version 1.0.0
-
-       1) Newly introduced model for supporting optional
-       antenna calibration functionality";
-
-    reference "ORAN-WG4.MP-v02.00";
-  }
-
-  feature O-RU-COORDINATED-ANT-CAL {
-    description
-      "Indicates that the O-RU needs user traffic to be coordinated from O-DU for antenna calibration.";
-  }
-
-  grouping antenna-calibration-capabilities {
-    description "container for collection of leafs for antenna calibration";
-
-    leaf self-calibration-support {
-      type boolean;
-      default false;
-      description
-        "Indicates whether O-RU supports self-calibration or not.
-
-        When true, indicates O-RU can initiate calibration without receiving an
-        rpc and/or impacting simultaneous CU-plane operation";
-    }
-    leaf coordinated-calibration-support {
-      if-feature O-RU-COORDINATED-ANT-CAL;
-      type boolean;
-      default false;
-      description
-        "True means the O-RU is able to determine priori the time-frequency
-         resources required for self-calibration and indicate those to the O-DU
-         in the antenna-calibration-coordination notification.";
-    }
-    leaf number-of-calibration-symbols-per-block-dl {
-      type uint8 {
-        range "1..max";
-      }
-      units symbols;
-      mandatory true;
-      description
-        "Indicates how many consecutive symbols are required for DL antenna
-        calibration operation";
-    }
-    leaf number-of-calibration-symbols-per-block-ul {
-      type uint8 {
-        range "1..max";
-      }
-      units symbols;
-      mandatory true;
-      description
-        "Indicates how many consecutive symbols are required for UL antenna
-        calibration operation";
-    }
-    leaf interval-between-calibration-blocks {
-      type uint8;
-      units symbols;
-      description
-        "if time interval is required between consecutive antenna calibration
-        operation, defines this time value as unit of symbols.
-
-        A common value is used here for the intervals
-        between DL-DL blocks, UL-UL blocks, DL-UL blocks and UL-DL blocks,
-        which is the largest minimum interval required between any two adjacent
-        calibration blocks.";
-    }
-    leaf number-of-calibration-blocks-per-step-dl {
-      type uint8 {
-        range "1..max";
-      }
-      mandatory true;
-      description
-        "Indicates how many blocks are required for one step of DL antenna
-        calibration operation";
-    }
-    leaf number-of-calibration-blocks-per-step-ul {
-      type uint8 {
-        range "1..max";
-      }
-      mandatory true;
-      description
-        "Indicates how many blocks are required for one step of UL antenna
-        calibration operation";
-    }
-    leaf interval-between-calibration-steps {
-      type uint8;
-      units radio-frames;
-      description
-        "If time interval is required between consecutive step of antenna
-        calibration operation, defines this time value as unit of radio frames";
-    }
-    leaf number-of-calibration-steps {
-      type uint8 {
-        range "1..max";
-      }
-      mandatory true;
-      description
-        "Indicates how many steps are required for whole DL/UL antenna
-        calibration operation";
-    }
-    leaf calibration-period {
-       if-feature O-RU-COORDINATED-ANT-CAL;
-       type uint16;
-       units minutes;
-       description "peiodical interval between antenna calibrations in the case of support of feature O-RU-COORDINATED-ANT-CAL";
-    }
-  }
-
-  grouping antenna-calibration {
-    container antenna-calibration-capabilities {
-      config false;
-      description
-        "Describes the antenna calibration capabilities";
-      uses antenna-calibration-capabilities;
-    }
-    container self-calibration-policy {
-      leaf self-calibration-allowed {
-        type boolean;
-        default false;
-        description
-          "whether the self-calibration is allowed by operator.
-          Note, self-calibration-alllowed and coordinated-calibration-allowed cannot both be set to true";
-      }
-      leaf coordinated-calibration-allowed {
-        if-feature O-RU-COORDINATED-ANT-CAL;
-        type boolean;
-        must "../self-calibration-allowed = 'false'";
-        default false;
-        description
-          "whether the coordinated-calibration is allowed by operator.
-
-          True means that O-DU may beneficially use the indicated time-frequency resources
-          to adapt its operation during the antenna calibration operation,
-          e.g., consider the time-frequency resources as reserved for calibration.
-          Both calibrations (self-calibration-alllowed and coordinated-calibration-support) disallowed
-          or one of them allowed only";
-      }
-      description
-        "Describes the self calibration policy of the operator";
-    }
-    description
-      "Describe the grouping set of antenna calibration";
-  }
-
-  container antenna-calibration {
-    uses antenna-calibration;
-    description
-      "Describes the antenna calibration top node";
-  }
-
-  rpc start-antenna-calibration {
-    description
-      "The antenna calibration operation can start when NETCONF client sends a
-      calibration start command with resource allocation parameters.
-      These parameters indicate how the O-RU can perform the antenna
-      calibration operation; at which Symbol, Slot, and Frame.
-      This scheduling information can be generated by O-RU itself.
-      However, in a dynamic TDD environment, the DL and UL configuration
-      is only determined and known by O-DU. Consequently, only O-DU (NETCONF
-      client ) can determine and configure the scheduling and resource
-      allocation permitted for use by the antenna calibration operation";
-    input  {
-       uses antenna-calibration-data;
-    }
-    output  {
-      leaf status {
-        type enumeration {
-          enum ACCEPTED {
-            description
-              "Status information to indicate that O-RU accepted RPC
-              antenna calibration start request";
-          }
-          enum REJECTED {
-            description
-              "Status information to indicate that O-RU rejected RPC antenna
-              calibration start request";
-          }
-        }
-        mandatory true;
-        description
-          "Status of whether antenna calibration trigger by RPC is accepted
-          by the O-RU";
-      }
-      leaf error-message {
-        when "../status='REJECTED'";
-          type string;
-          description
-            "Detailed error Message when the status is rejected, e.g.,
-             because O-RU can not start antenna calibration
-             such as already running antenna calibration,
-             resource mask mismatch with O-RU antenna calibration capability,
-			       overlapped DL and UL masks, insufficient memory, O-RU internal reason";
-        }
-      }
-  }
-
-  grouping antenna-calibration-data {
-     description "information set for the operation of antenna calibration";
-
-     leaf symbol-bitmask-dl {
-        type string {
-          length "14";
-          pattern "[01]*";
-        }
-        mandatory true;
-        description
-          "Bitmask indicating DL calibration symbol within a calibration slot.
-           First character in the string indicate first symbol,
-           next character in the string indicate second symbol and so on.
-           Value 1 indicates that the symbol may be used for calibration
-           and 0 means the symbol shall not be used for calibration.";
-      }
-      leaf symbol-bitmask-ul {
-        type string {
-          length "14";
-          pattern "[01]*";
-        }
-        mandatory true;
-        description
-          "Bitmask indicating UL calibration symbol within a calibration slot.
-           First character in the string indicate first symbol,
-           next character in the string indicate second symbol and so on.
-           Value 1 indicates that the symbol may be used for calibration
-           and 0 means the symbol shall not be used for calibration.";
-      }
-      leaf slot-bitmask-dl {
-        type string {
-          length "10..255";
-          pattern "[01]*";
-        }
-        mandatory true;
-        description
-          "Bitmask indicating DL calibration slot within a calibration frame.
-           First character in the string indicate first slot,
-           next character in the string indicate second slot and so on.
-           Value 1 indicates that the slot may be used for calibration
-           and 0 means the slot shall not be used for calibration.";
-        }
-        leaf slot-bitmask-ul {
-          type string {
-            length "10..255";
-            pattern "[01]*";
-          }
-          mandatory true;
-          description
-            "Bitmask indicating UL calibration slot within a calibration frame.
-             First character in the string indicate first slot,
-             next character in the string indicate second slot and so on.
-             Value 1 indicates that the slot may be used for calibration
-             and 0 means the slot shall not be used for calibration.";
-        }
-        leaf frame-bitmask-dl {
-          type string {
-            length "1..255";
-            pattern "[01]*";
-          }
-          mandatory true;
-          description
-            "Bitmask indicating DL calibration frame within a calibration step.
-             First character in the string indicate first radio frame equal to
-             the start-SFN, next character in the string indicate the next frame
-             and so on.
-
-             Value 1 indicates that the frame may be used for calibration
-             and 0 means the frame shall not be used for calibration.";
-        }
-        leaf frame-bitmask-ul {
-          type string {
-            length "1..255";
-            pattern "[01]*";
-          }
-          mandatory true;
-          description
-            "Bitmask indicating UL calibration frame within a calibration step.
-             First character in the string indicate first radio frame equal to
-             the start-SFN, next character in the string indicate the next frame
-             and so on.
-
-             Value 1 indicates that the frame is may be used for calibration
-             and 0 means the frame shall not be used for calibration.";
-        }
-        leaf calibration-step-size {
-          type uint8;
-          mandatory true;
-          description " Number of frames within a calibration step";
-        }
-        leaf calibration-step-number {
-          type uint8;
-          mandatory true;
-          description "Number of calibration steps";
-        }
-        leaf start-sfn {
-          type uint16 {
-            range "0..1023";
-          }
-          mandatory true;
-          description "start SFN number of the first calibration step";
-        }
-  }
-
-  notification antenna-calibration-required {
-    list dl-calibration-frequency-chunk {
-      leaf start-calibration-frequency-dl {
-        type uint64;
-        description
-          "lowest frequency value in Hz of the frequency range is required for
-           DL antenna calibration operation.";
-      }
-      leaf end-calibration-frequency-dl {
-        type uint64;
-        description
-          "highest frequency value in Hz of the frequency range is required for
-           DL antenna calibration operation.";
-      }
-      description
-         "min/max frequency of dl spectrum chunk affected by calibration process";
-    }
-    list ul-calibration-frequency-chunk {
-      leaf start-calibration-frequency-ul {
-        type uint64;
-        description
-          "lowest frequency value in Hz of the frequency range is required for
-           UL antenna calibration operation.";
-      }
-      leaf end-calibration-frequency-ul {
-        type uint64;
-        description
-          "highest frequency value in Hz of the frequency range is required for
-           UL antenna calibration operation.";
-      }
-      description
-        "min/max frequency of ul spectrum chunk affected by calibration process";
-    }
-
-    description
-      "this notification indicates that the antenna calibration is required in O-RU";
-  }
-
-  notification antenna-calibration-coordinated {
-    if-feature O-RU-COORDINATED-ANT-CAL;
-    list dl-calibration-frequency-chunk {
-      leaf start-calibration-frequency-dl {
-        type uint64;
-        description
-          "lowest frequency value in Hz of the frequency range is required for
-           DL antenna calibration operation.";
-      }
-      leaf end-calibration-frequency-dl {
-        type uint64;
-        description
-          "highest frequency value in Hz of the frequency range is required for
-           DL antenna calibration operation.";
-      }
-      description
-         "min/max frequency of dl spectrum chunk affected by calibration process";
-    }
-    list ul-calibration-frequency-chunk {
-      leaf start-calibration-frequency-ul {
-        type uint64;
-        description
-          "lowest frequency value in Hz of the frequency range is required for
-           UL antenna calibration operation.";
-      }
-      leaf end-calibration-frequency-ul {
-        type uint64;
-        description
-          "highest frequency value in Hz of the frequency range is required for
-           UL antenna calibration operation.";
-      }
-      description
-        "min/max frequency of ul spectrum chunk affected by calibration process";
-    }
-    uses antenna-calibration-data {
-      description
-        "In the case of support of feature O-RU-COORDINATED-ANT-CAL,
-         time-frequency resource determined by O-RU will be included";
-    }
-
-    description
-      "this notification indicates that coordinated antenna calibration is provided in O-RU.
-       It indicate the time-frequency resources will be sent to a subscribed O-DU at least 60 seconds
-       before the operation of the coordinated antenna calibration procedure.";
-  }
-
-  notification antenna-calibration-result {
-    leaf status {
-      type enumeration {
-        enum SUCCESS {
-          description "O-RU has succeeded in calibrating its antenna";
-        }
-        enum FAILURE {
-          description
-            "O-RU attemted to calibrate its antenna, but the procedure failed.";
-        }
-      }
-      mandatory true;
-      description
-        "Status of the antenna calibration procedure which has been triggered
-        by accepting an start-antenna-calibration RPC.";
-    }
-    leaf detailed-reason {
-      when "../status='FAILURE'";
-      type string;
-      description
-        "Detailed reason when the status is FAILURE, e.g.,
-        O-RU cannot complete the antenna calibration
-        because of lack of memory, self-calibration failure, etc";
-    }
-    description
-    "This notification indicates the antenna calibration result";
-  }
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-beamforming@2020-04-17.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-beamforming.yang
similarity index 85%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-beamforming@2020-04-17.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-beamforming.yang
index 7707dac..1f05383 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-beamforming@2020-04-17.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-beamforming.yang
@@ -13,7 +13,11 @@
 
   import o-ran-compression-factors {
     prefix "cf";
-    revision-date 2020-08-10;
+    revision-date 2021-12-01;
+  }
+
+  import o-ran-wg4-features {
+    prefix "feat";
   }
 
   organization "O-RAN Alliance";
@@ -22,10 +26,10 @@
     "www.o-ran.org";
 
   description
-    "This module defines the beamforming capabilitites of an O-RU.
+    "This module defines the beamforming capabilities of an O-RU.
     Only O-RUs that support beamforming shall support this module.
 
-    Copyright 2020 the O-RAN Alliance.
+    Copyright 2021 the O-RAN Alliance.
 
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -51,6 +55,54 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-12-05" {
+    description
+      "version 11.0.0
+
+      1) introduce p-dash parameter";
+
+    reference "ORAN-WG4.M.0-v11.00";
+  }
+
+  revision "2022-08-15" {
+    description
+      "version 8.1.0
+
+      1) clarified description statements for component carrier
+      2) clarified path/folder description";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) typographical corrections in descriptions.
+      2) Configuration for Beamforming weights were added together with changes and updates
+         to compressions.";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2021-07-26" {
+    description
+      "version 2.3.0
+
+      1) Ensuring beam-ids can only be 15 bits.
+      2) Correcting maximum number of UEs from 8 bit to 15 bit";
+
+    reference "ORAN-WG4.M.0-v02.00";
+  }
+  revision "2021-03-22" {
+    description
+      "version 2.2.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v02.00";
+  }
+
   revision "2020-04-17" {
     description
       "version 2.1.0
@@ -121,14 +173,19 @@
 
   grouping beamforming-parameters {
     leaf max-number-of-beam-ids {
-      type uint16;
+      type uint16 {
+        range "min .. 32767";
+      }
+
       mandatory true;
       description
         "Maximum number of supported Beam ID assigned to domain beamforming control";
     }
 
     leaf initial-beam-id {
-      type uint16;
+      type uint16 {
+        range "min .. 32767";
+      }
       mandatory true;
       description
         "First Beam ID that can be used for addressing of domain beams";
@@ -142,7 +199,7 @@
       type enumeration {
         enum CC {
           description
-            "Frequency granularity: per carrier component";
+            "Frequency granularity: per Component Carrier";
         }
 
         enum BAND {
@@ -205,10 +262,10 @@
         container frequency-domain-beams {
           when "../rt-bf-weights-update-support = 'true'";
           uses beamforming-parameters;
-          uses cf:compression-details;
+          uses cf:bf-compression-details;
 
           list additional-compression-method-supported {
-            uses cf:compression-details;
+            uses cf:bf-compression-details;
 
             description
               "List of additional supported compression methods by O-RU";
@@ -224,10 +281,10 @@
           when "../rt-bf-weights-update-support = 'true'";
           uses beamforming-parameters;
           uses granularity-parameters;
-          uses cf:compression-details;
+          uses cf:bf-compression-details;
 
           list additional-compression-method-supported {
-            uses cf:compression-details;
+            uses cf:bf-compression-details;
 
             description
               "List of additional supported compression methods by O-RU";
@@ -243,10 +300,10 @@
           when "../rt-bf-weights-update-support = 'true'";
           uses beamforming-parameters;
           uses granularity-parameters;
-          uses cf:compression-details;
+          uses cf:bf-compression-details;
 
           list additional-compression-method-supported {
-            uses cf:compression-details;
+            uses cf:bf-compression-details;
 
             description
               "List of additional supported compression methods by O-RU";
@@ -267,6 +324,13 @@
         and apply to the signal of each O-RU port (both DL and UL).
         This value is equivalent to the maximum number of used beam IDs.";
     }
+    leaf p-dash {
+      type uint16;
+      description
+        "This parameters specifies the dimesionality of the time-domain beamforming operation. Refer to description of parameter p'
+        in clause 12.4.3.4.2 of CUS-Plane specification. This parameter is required to define the size of time-domain beamforming
+        vector in case of hybrid/time-domain beamforming is supported by O-RU";
+    }    
   }
 
   grouping beamforming-property {
@@ -303,7 +367,7 @@
       type beam-reference;
       status deprecated;
       description
-        "A list of neighbor beams which might restrict co-scheduling due
+        "A list of neighbour beams which might restrict co-scheduling due
         to interference.";
     }
 
@@ -316,7 +380,7 @@
     leaf-list neighbour-beams-capability-based {
       type beam-capabilities-reference;
       description
-        "A list of neighbor beams which might restrict co-scheduling due
+        "A list of neighbour beams which might restrict co-scheduling due
         to interference.";
     }
   }
@@ -326,7 +390,9 @@
       "Grouping for beamforming-properties element";
 
     leaf beam-id {
-      type uint16;
+      type uint16 {
+        range "min .. 32767";
+      }
       description
         "This value indicates the beam ID whose beamforming properties are
         described in the container.";
@@ -398,7 +464,7 @@
         description
           "Array for the beamforming properties at O-RU.
           These parameters can be used by the beamforming control by the NETCONF client.
-          'numberOfBeamformingProperties' indicaets the size of the array.";
+          'numberOfBeamformingProperties' indicates the size of the array.";
 
         uses beamforming-properties-element;
       }
@@ -415,7 +481,7 @@
       }
       mandatory true;
       description
-        "This leaf indicates the maximum number of writeable beamforming files
+        "This leaf indicates the maximum number of writable beamforming files
         containing beamweights and/or attributes that the O-RU can store, taking
         into account the maximum number of beam-IDs as defined by 3GPP
         TS38.214 v15.x.x";
@@ -426,7 +492,7 @@
       default false;
       description
         "When set to TRUE, indicates that an O-RU supports the capability
-        to apply the modified beamforming weight information by using rpc
+        to apply the modified beamforming weight information by using RPC
         activate-beamforming-weight without deletion of tx-array-carriers and
         rx-array-carriers in advance, i.e., to a deactivated carrier";
     }
@@ -495,13 +561,46 @@
         (used for sending channel information for a specific UE)";
       config false;
       description
-        "Information related to supput by the O-RU of Section Type 6 for
+        "Information related to support by the O-RU of Section Type 6 for
         signalling UE-specific channel information to the O-RU";
+
       leaf max-number-of-ues {
         type uint8;
+        status deprecated;
         description
-          "Indicates tha maximum number of UE -specific channel information
-          data sets supported by the O-RU";
+          "Indicates the maximum number of UE -specific channel information
+          data sets supported by the O-RU.
+
+          Leaf is deprecated as it only enabled a maximum of 255 UEs to be supported,
+          compared with ST5 and ST6 which supports a 15 bit value.
+
+          NETCONF client instead uses max-number-ues-15bit schema node";
+      }
+      leaf max-number-of-ues-15bit {
+        type uint16 {
+          range "1 .. 32767";
+        }
+        description
+          "Indicates the maximum number of UE -specific channel information
+          data sets supported by the O-RU,
+          It is restricted to 15 bits value because of the 15bits ueId field in ST5 and ST6";
+      }
+
+      leaf-list channel-information-compression-method-supported {
+        if-feature "feat:CHANNEL-INFORMATION-COMPRESSION";
+        type cf:ci-compression-method-def;
+        description
+           "list of channel information compression methods supported by the O-RU";
+      }
+
+      leaf dynamic-channel-information-compression-supported {
+        if-feature "feat:CHANNEL-INFORMATION-COMPRESSION";
+        type boolean;
+        description
+           "Informs if dynamic channel information compression supported by the O-RU,
+            if its value is true, the compression method and IQ bit width can be dynamic in ciCompHdr;
+            if its value is false, only static configuration compression configuration is supported, and ciCompHdr
+            shall be set to a fixed value corresponding to the static configured compression method and IQ bit width.";
       }
     }
     container operational-properties {
@@ -750,14 +849,14 @@
   rpc activate-beamforming-config {
     if-feature MODIFY-BF-CONFIG;
     description
-      "rpc to activate beamforming config information by indicating the file
-      stored in the folder O-RAN/beam-weights in advance";
+      "RPC to activate beamforming config information by indicating the file
+      stored in the folder o-ran/beamforming in advance";
     input {
       leaf beamforming-config-file {
         type string;
         mandatory true;
         description
-          "file name stored in O-RAN/beamforming/ folder is indicated";
+          "file name stored in o-ran/beamforming folder is indicated";
       }
 
       uses band-num;
@@ -791,14 +890,14 @@
   rpc activate-beamforming-config-by-capability-group {
     if-feature MODIFY-BF-CONFIG;
     description
-      "rpc to activate beamforming config information by indicating the file
-      stored in the folder O-RAN/beam-weights in advance";
+      "RPC to activate beamforming config information by indicating the file
+      stored in the folder o-ran/beamforming in advance";
     input {
       leaf beamforming-config-file {
         type string;
         mandatory true;
         description
-          "file name stored in O-RAN/beamforming/ folder is indicated";
+          "file name stored in o-ran/beamforming folder is indicated";
       }
 
       uses cap-group;
@@ -833,7 +932,7 @@
   rpc modify-predefined-beam-tilt-offset {
     if-feature BEAM-TILT;
     description
-      "rpc to trigger the modification of the predefined beam tilt offset";
+      "RPC to trigger the modification of the predefined beam tilt offset";
     input {
       uses beam-tilt-configuration;
     }
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-certificates.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-certificates.yang
new file mode 100644
index 0000000..038257c
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-certificates.yang
@@ -0,0 +1,83 @@
+module o-ran-certificates {
+  yang-version 1.1;
+  namespace "urn:o-ran:certificates:1.0";
+  prefix "o-ran-cert";
+
+  import ietf-x509-cert-to-name {
+    prefix x509c2n;
+    reference
+      "RFC 7407: A YANG Data Model for SNMP Configuration";
+     }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the certificates model for the O-RAN Equipment authorization.
+
+    Copyright 2022 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) initial version";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  grouping cert-maps {
+    uses x509c2n:cert-to-name;
+    description
+      "The cert-maps container is used by a TLS-
+       based NETCONF server to map the NETCONF
+       client's presented X.509 certificate to
+       a NETCONF username.  If no matching and
+       valid cert-to-name list entry can be found,
+       then the NETCONF server MUST close the
+       connection, and MUST NOT accept NETCONF
+       messages over it.
+       Note - when included, the /cert-to-name/name refers to the schema node
+       users/user/name in o-ran-usermgmt.yang";
+    reference
+      "RFC 7407: NETCONF over TLS, Section 7";
+  }
+
+  container certificate-parameters {
+    description
+      "Top Level Container for all certificate related parameters";
+
+    container cert-maps {
+      description
+        "Container for certificate maps";
+
+      uses cert-maps;
+    }
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-common-identity-refs.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-common-identity-refs.yang
new file mode 100644
index 0000000..063bb93
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-common-identity-refs.yang
@@ -0,0 +1,197 @@
+module o-ran-common-identity-refs {
+  yang-version 1.1;
+  namespace "urn:o-ran:wg1identityref:1.0";
+  prefix "o-ran-iref";
+
+  import iana-hardware {
+    prefix ianahw;
+  }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines a set of re-usable identity references, that can be
+    re-used across O-RAN working groups.
+
+    Copyright 2020 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2022-08-15" {
+    description
+      "version 1.1.0
+
+      1) style guide corrections";
+
+    reference "ORAN-WG1.IM.0-v01.00";
+  }
+
+  revision "2020-11-01" {
+    description
+      "version 1.0.0
+
+      1) initial verstion.";
+
+    reference "ORAN-WG1.IM.0-v01.00";
+  }
+
+  // O-RAN functional identity types
+
+  identity o-ran-function-base {
+    description
+      "Base identity from which all O-RAN defined functions are derived.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  identity o-ru-function {
+    base "o-ran-function-base";
+    description
+      "an identity corresponding to an O-RAN O-RU Function.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  identity o-du-function {
+    base "o-ran-function-base";
+    description
+      "an identity corresponding to all O-RAN O-DU Functions.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  identity o-cu-function {
+    base "o-ran-function-base";
+    description
+      "an identity corresponding to all O-RAN O-CU Functions.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  identity o-cu-up-function {
+    base "o-cu-function";
+    description
+      "an identity corresponding to an O-RAN O-CU UP Function.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  identity o-cu-cp-function {
+    base "o-cu-function";
+    description
+      "an identity corresponding to an O-RAN O-CU CP Function.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  // O-RAN radio technology identity types
+
+  identity o-ran-radio-technology-base {
+    description
+      "Base identity for O-RAN defined radio technology types.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  identity new-radio-technology {
+    base "o-ran-radio-technology-base";
+    description
+      "An identity corresponding to new radio technology.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  identity lte-technology {
+    base "o-ran-radio-technology-base";
+    description
+      "An identity corresponding to lte technology.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  identity nb-iot {
+    base "lte-technology";
+    description
+      "An identity corresponding to nb-iot technology.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  // O-RAN Transport technology identity types
+
+  identity o-ran-transport-technology-base {
+    description
+      "Base identity from which all O-RAN defined transport technology identities are derived.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  // O-RAN Fronthaul transport identity types
+
+  identity o-ran-fronthaul-transport-base {
+    description
+      "Base identity from which all O-RAN defined fronthaul transports are derived.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  identity ethernet-fronthaul-transport {
+    base "o-ran-fronthaul-transport-base";
+    description
+      "an identity corresponding to fronthaul transport using ethernet based flows.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  // Hardware component identity types
+
+  identity o-ran-module {
+    base ianahw:module;
+    description
+      "Any O-RAN module that represents a self-contained sub-system.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  identity o-ran-hardware-class {
+    base ianahw:hardware-class;
+    description
+      "This identity corresponding to a generic O-RAN hardware class.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+  identity fpga {
+    base o-ran-hardware-class;
+    description
+      "Represent an FPGA.
+
+      This identity is abstract and MUST NOT be used as a value.";
+  }
+
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-common-yang-types.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-common-yang-types.yang
new file mode 100644
index 0000000..94bb42d
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-common-yang-types.yang
@@ -0,0 +1,419 @@
+module o-ran-common-yang-types {
+  yang-version 1.1;
+  namespace "urn:o-ran:common-yang-types:1.0";
+  prefix "o-ran-types";
+
+  import ietf-inet-types {
+    prefix inet;
+  }
+
+  organization "O-RAN Alliance";
+
+
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines ORAN common YANG types.
+
+    Copyright 2020 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2022-08-15" {
+    description
+      "version 1.1.0
+
+      1) style guide corrections";
+
+    reference "ORAN-WG1.IM.0-v01.00";
+  }
+
+  revision "2020-10-10" {
+    description
+      "version 1.0.0
+
+       1) Initial creation";
+
+    reference "ORAN-WG1.IM.0-v01.00";
+  }
+
+  typedef version {
+    type string {
+      pattern '[0-9]+(\.[0-9]+){1,2}';
+    }
+    description
+      "Definition used to represent a version of an interface.";
+  }
+
+  typedef timezone-name {
+    type string;
+    description
+      "A time zone name as used by the Time Zone Database,
+      sometimes referred to as the 'Olson Database'.
+
+      The complete set of valid values is defined in
+      https://www.iana.org/time-zones.
+
+      The exact set of supported values is an
+      implementation-specific matter.";
+
+    reference
+      "RFC 6557: Procedures for Maintaining the Time Zone Database
+      IANA Time Zone Database https://www.iana.org/time-zones ";
+  }
+
+  typedef protocol {
+    type enumeration {
+      enum ECPRI {
+        description
+          "Indicates that an O-RU supports the ecpri header format
+           for the C/U plane";
+      }
+      enum IEEE-1914-3 {
+        description
+          "Indicates that an O-RU supports the 1914.3 header format
+           for the C/U plane";
+      }
+      }
+    description "the type of C/U plane protocol";
+  }
+
+  typedef duplex-scheme {
+    type enumeration {
+      enum TDD {
+        description
+          "TDD scheme";
+      }
+      enum FDD {
+        description
+          "FDD scheme";
+      }
+    }
+    description
+     "Type of duplex scheme O-RU supports.";
+  }
+
+  typedef active {
+    type enumeration {
+      enum INACTIVE {
+        description
+           "Carrier does not provide signal - transmission is disabled";
+      }
+      enum SLEEP{
+        description
+           "Carrier is fully configured and was active but is energy saving mode";
+      }
+      enum ACTIVE{
+        description
+           "Carrier is fully configured and properly providing the signal";
+      }
+    }
+    description "the active status of a carrier";
+  }
+
+  typedef state {
+    type enumeration {
+      enum DISABLED {
+          description
+            "Array carrier is not active - transmission of signal is disabled.";
+      }
+      enum BUSY {
+          description
+            "Array carrier is processing an operation requested by change of active parameter.
+            When array carriers is BUSY the transmission of signal is not guaranteed.";
+      }
+      enum READY {
+          description
+            "Array carrier had completed activation operation - is active and transmission of signal is ongoing.";
+      }
+    }
+    description "the state on an array carrier";
+  }
+
+  typedef transport-session {
+    type enumeration {
+      enum ETHERNET {
+          description "VLAN based CUS Transport ";
+      }
+      enum UDP_IP {
+//          if-feature o-ran-int:UDPIP-BASED-CU-PLANE; How to handle enum value constrained by feature defined in o-ran-interface.yang?
+          description "UDP/IP based CUS Transport ";
+      }
+      enum ALIAS_MAC{
+//          if-feature o-ran-int:ALIASMAC-BASED-CU-PLANE; How to handle enum value constrained by feature defined in o-ran-interface.yang?
+          description "Alias MAC address based CUS Transport ";
+      }
+      enum SHARED_CELL {
+//          if-feature o-ran-elements:SHARED_CELL; How to handle enum value constrained by feature defined in o-ran-processing-element.yang?
+          description "VLAN based CUS Transport used for Shared Cell scenario";
+      }
+    }
+    description "the transport session type";
+  }
+
+  typedef netconf-client-id {
+    type union {
+      type inet:ip-address;
+      type inet:uri;
+    }
+    description "A NETCONF client identifier";
+  }
+
+  typedef ca-ra-server-id {
+    type union {
+      type inet:ip-address;
+      type inet:uri;
+    }
+    description "A CA/RA Server identifier";
+  }
+
+  typedef segw-id {
+    type union {
+      type inet:ip-address;
+      type inet:uri;
+    }
+    description "A SeGW identifier";
+  }
+
+  typedef pcp {
+    type uint8 {
+      range "0..7";
+    }
+    description
+      "Priority Code Point. PCP is a 3-bit field that refers to the
+      class of service applied to a VLAN tagged frame.  The
+      field specifies a priority value between 0 and 7, these values
+      can be used by quality of service (QoS) to prioritize
+      different classes of traffic.";
+    reference
+     "IEEE 802.1Q-2014: Virtual Bridged Local Area Networks";
+  }
+
+  typedef vlan-id {
+    type uint16 {
+      range "1..4094";
+    }
+    description
+      "The VLAN-ID that uniquely identifies a VLAN.  This is the 12-bit VLAN-ID
+       used in the VLAN Tag header.";
+    reference "[802.1q] 9.6";
+  }
+
+  typedef geographic-coordinate-degree {
+    type decimal64 {
+      fraction-digits 8;
+    }
+    description
+      "Decimal degree (DD) used to express latitude and longitude
+      geographic coordinates.";
+  }
+
+  typedef prach-preamble-format {
+    type enumeration {
+      enum LTE-0 {
+        description
+          "LTE PRACH Preamble format 0";
+      }
+      enum LTE-1 {
+        description
+          "LTE PRACH Preamble format 1";
+      }
+      enum LTE-2 {
+        description
+          "LTE PRACH Preamble format 2";
+      }
+      enum LTE-3 {
+        description
+          "LTE PRACH Preamble format 3";
+      }
+      enum LTE-4 {
+        description
+          "LTE PRACH Preamble format 4";
+      }
+      enum LTE-NB0 {
+        description
+          "LTE Narrowband PRACH format 0";
+      }
+      enum LTE-NB1 {
+        description
+          "LTE Narrowband PRACH format 1";
+      }
+      enum NR-0 {
+        description
+          "5GNR PRACH Preamble format 0";
+      }
+      enum NR-1 {
+        description
+          "5GNR PRACH Preamble format 1";
+      }
+      enum NR-2 {
+        description
+          "5GNR PRACH Preamble format 2";
+      }
+      enum NR-3 {
+        description
+          "5GNR PRACH Preamble format 3";
+      }
+      enum NR-A1 {
+        description
+          "5GNR PRACH Preamble format A1";
+      }
+      enum NR-A2 {
+        description
+          "5GNR PRACH Preamble format A2";
+      }
+      enum NR-A3 {
+        description
+          "5GNR PRACH Preamble format A3";
+      }
+      enum NR-B1 {
+        description
+          "5GNR PRACH Preamble format B1";
+      }
+      enum NR-B2 {
+        description
+          "5GNR PRACH Preamble format B2";
+      }
+      enum NR-B3 {
+        description
+          "5GNR PRACH Preamble format B3";
+      }
+      enum NR-B4 {
+        description
+          "5GNR PRACH Preamble format B4";
+      }
+      enum NR-C0 {
+        description
+          "5GNR PRACH Preamble format C0";
+      }
+      enum NR-C2 {
+        description
+          "5GNR PRACH Preamble format C2";
+      }
+      enum LTE-NB0-a {
+        description
+          "LTE Narrowband PRACH format 0-a";
+      }
+      enum LTE-NB1-a {
+        description
+          "LTE Narrowband PRACH format 1-a";
+      }
+      enum LTE-NB2 {
+        description
+          "LTE Narrowband PRACH format 2";
+      }
+    }
+
+    description
+      "PRACH preamble format definition";
+  }
+
+  typedef polarisation_type {
+    type enumeration {
+      enum MINUS_45 {
+        description "MINUS_45";
+      }
+      enum ZERO {
+        description "ZERO";
+      }
+      enum PLUS_45 {
+        description "PLUS_45";
+      }
+      enum PLUS_90 {
+        description "PLUS_90";
+      }
+    }
+    description "Type definition for polarisations";
+  }
+
+  typedef bandwidth {
+    type uint32 {
+      range "200 | 1400 | 3000 | 5000 | 10000 | 15000 | 20000 | 25000 |
+            30000 | 40000 | 50000 | 60000 | 70000 | 80000 | 90000 | 100000
+            | 200000 | 400000" ;
+    }
+    units kilohertz;
+    description
+      "transmission bandwidth configuration in units of kHz -
+      covering NBIoT through to New Radio - see 38.104";
+  }
+
+  typedef scs-config-type {
+    type enumeration {
+      enum KHZ_15 {
+        value 0;
+        description
+          "15kHz sub carrier spacing";
+      }
+      enum KHZ_30 {
+        value 1;
+        description
+          "30kHz sub carrier spacing";
+      }
+      enum KHZ_60 {
+        value 2;
+        description
+          "60kHz sub carrier spacing";
+      }
+      enum KHZ_120 {
+        value 3;
+        description
+          "120kHz sub carrier spacing";
+      }
+      enum KHZ_240 {
+        value 4;
+        description
+          "240kHz sub carrier spacing";
+      }
+      enum KHZ_1_25 {
+        value 12;
+        description
+          "1,25kHz sub carrier spacing";
+      }
+      enum KHZ_3_75 {
+        value 13;
+        description
+          "3.75kHz sub carrier spacing";
+      }
+      enum KHZ_5 {
+        value 14;
+        description
+          "5kHz sub carrier spacing";
+      }
+      enum KHZ_7_5 {
+        value 15;
+        description
+          "7.5kHz sub carrier spacing";
+      }
+    }
+
+    description
+      "Scs configuration type definition";
+  }
+
+
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-compression-factors.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-compression-factors.yang
new file mode 100644
index 0000000..402ea94
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-compression-factors.yang
@@ -0,0 +1,567 @@
+module o-ran-compression-factors {
+  yang-version 1.1;
+  namespace "urn:o-ran:compression-factors:1.0";
+  prefix "o-ran-compression-factors";
+
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the module capabilities for
+    the O-RAN Radio Unit U-Plane configuration.
+
+    Copyright 2021 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) typographical corrections in descriptions.
+      2) Configuration for Beamforming weights were added together with changes
+         and updates to compressions.
+      3) add new beamspace compression enumeration for BEAMSPACE_TYPEII.";
+
+   reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2021-03-22" {
+   description
+     "version 4.1.0
+
+     1) typographical corrections in descriptions.";
+
+   reference "ORAN-WG4.M.0-v04.00";
+  }
+
+  revision "2020-08-10" {
+   description
+     "version 4.0.0
+
+     1) supporting compression types per endpoint
+     2) adding feature for configurable fs-offset for compression";
+
+   reference "ORAN-WG4.M.0-v04.00";
+  }
+
+   revision "2020-04-17" {
+    description
+      "version 3.0.0
+
+      1) adding selective RE sending compression types";
+
+    reference "ORAN-WG4.M.0-v03.00";
+  }
+
+  revision "2019-07-03" {
+    description
+      "version 1.1.0
+
+      1) changes related to compression bit-width presentation";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2019-02-04" {
+    description
+      "version 1.0.0
+
+      1) imported model from xRAN
+      2) changed namespace and reference from xran to o-ran";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  feature CONFIGURABLE-FS-OFFSET {
+    description
+      "Presence of this feature means that O-RU supports configurable fs-offset for compression.";
+  }
+
+  typedef ci-compression-method-def {
+    type enumeration {
+      enum NO_COMPRESSION {
+        description
+          "No compression will be used";
+      }
+
+      enum BLOCK_FLOATING_POINT {
+        description
+          "Block floating point compression and decompression will be used";
+      }
+
+      enum BLOCK_SCALING {
+        description
+          "Block scaling compression and decompresion will be used";
+      }
+
+      enum U_LAW {
+        description
+          "u-Law compression and decompresion method will be used";
+      }
+    }
+    description
+      "Available compression methods for channel information (e.g., ST6).";
+  }
+
+  typedef compression-type-def {
+    type enumeration {
+      enum STATIC {
+        description
+          "Indicates that static compression method will be used (both compression and IQ bitwidth)";
+      }
+      enum DYNAMIC {
+        description
+          "Indicates that dynamic compression method will be used";
+      }
+    }
+    description
+      "Compression type that O-DU wants to be supported";
+  }
+
+  typedef bf-compression-method-def {
+    type enumeration {
+      enum NO_COMPRESSION {
+        description
+          "No compression will be used";
+      }
+      enum BLOCK_FLOATING_POINT {
+        description
+          "Block floating point compression and decompression will be used";
+      }
+
+      enum BLOCK_SCALING {
+        description
+          "Block scaling compression and decompresion will be used";
+      }
+
+      enum U_LAW {
+        description
+          "u-Law compression and decompresion method will be used";
+      }
+
+      enum BEAMSPACE {
+        description
+          "Beamspace compression and decompression will be used";
+      }
+
+      enum VOID_1 {
+        description
+          "Leftover of modulation, not to be used for beamforming weights";
+      }
+
+      enum VOID_2 {
+        description
+          "Leftover of block-floating-point-selective-re-sending, not to be used for beamforming weights";
+      }
+
+      enum VOID_3 {
+        description
+          "Leftover of modulation-compression-selective-re-sending, not to be used for beamforming weights";
+      }
+
+      enum BEAMSPACE_TYPEII {
+        description
+          "Beamspace compression typeII and decompression will be used ";
+      }
+    }
+    description
+      "Available compression methods for beamforming weights.";
+  }
+
+  typedef compression-method-def {
+    type enumeration {
+      enum NO_COMPRESSION {
+        description
+          "No compression will be used";
+      }
+      enum BLOCK_FLOATING_POINT {
+        description
+          "Block floating point compression and decompression will be used";
+      }
+
+      enum BLOCK_SCALING {
+        description
+          "Block scaling compression and decompresion will be used";
+      }
+
+      enum U_LAW {
+        description
+          "u-Law compression and decompresion method will be used";
+      }
+
+      enum VOID_1 {
+        description
+          "Leftover of beamspace, not to be used for IQ data.";
+      }
+
+      enum MODULATION {
+        description
+          "Modulation compression and decompression will be used";
+      }
+
+      enum BLOCK-FLOATING-POINT-SELECTIVE-RE-SENDING {
+        description
+          "block floating point with selective re sending
+          compression and decompression will be used";
+      }
+
+      enum MODULATION-COMPRESSION-SELECTIVE-RE-SENDING {
+        description
+          "modulation compression with selective re sending
+          compression and decompression will be used";
+      }
+    }
+    description
+      "Available compression methods for the data.";
+  }
+
+  grouping compression-method-grouping {
+    description
+      "Grouping for compression method.";
+
+    leaf iq-bitwidth {
+      type uint8;
+      description
+        "Bit-width to be used in compression";
+    }
+
+    leaf compression-method {
+      type compression-method-def;
+      description
+        "Compression method which can be supported by the O-RU";
+    }
+  }
+
+  grouping compression-details {
+    description "";
+
+    leaf iq-bitwidth {
+      type uint8;
+      description
+        "Bitwidth to be used in compression";
+    }
+
+    leaf compression-type {
+      type compression-type-def;
+      mandatory true;
+      description
+        "Compression type that O-DU wants to be supported";
+    }
+
+    leaf bitwidth {
+      when "../compression-type = 'STATIC'";
+      type uint8;
+      status deprecated;
+      description
+        "Bitwidth to be used in compression.
+        This has since been replaced in M-Plane version
+        2.0.0 with the iq-bitwidth schema node";
+    }
+
+    leaf compression-method {
+      type compression-method-def;
+      description
+        "Compression method which can be supported by the O-RU";
+    }
+
+    uses compresion-format-grp {
+      status deprecated;
+    }
+  }
+
+  grouping bf-compression-details {
+    description "Compression formats defined for beamforming";
+
+    leaf iq-bitwidth {
+      type uint8;
+      description
+        "Bitwidth to be used in compression";
+    }
+
+    leaf compression-type {
+      type compression-type-def;
+      mandatory true;
+      description
+        "Compression type that O-DU wants to be supported";
+    }
+
+    leaf bitwidth {
+      when "../compression-type = 'STATIC'";
+      type uint8;
+      status deprecated;
+      description
+        "Bitwidth to be used in compression.
+        This has since been replaced in M-Plane version
+        2.0.0 with the iq-bitwidth schema node";
+    }
+
+    leaf compression-method {
+      type bf-compression-method-def;
+      description
+        "Compression method which can be supported by the beamforming";
+    }
+
+    uses compresion-format-grp {
+      status deprecated;
+    }
+  }
+
+// *********** Deprecated ***********
+
+  grouping compression-formats {
+    status deprecated;
+    description
+      "Grouping deicated to list compression formats as choice.";
+
+    uses compresion-format-grp {
+      status deprecated;
+    }
+  }
+
+  grouping compresion-format-grp {
+    status deprecated;
+    description
+      "Grouping to for compression format choice";
+
+    choice compression-format {
+      status deprecated;
+      description
+        "Choice of compression format for particular element.
+         Note: This metod is deprecated. All should be done as emumeration as details are configured
+         by udCompHdr in CU-Plane messaging.";
+
+      case no-compresison {
+        description "Compression for beam weights is not supported.";
+      }
+      case block-floating-point {
+        description "Block floating-point compression and decompression is supported.";
+
+        leaf exponent {
+          type uint8 {
+            range "4";
+          }
+          description "Exponent bit width size in number of bits used when encoding in udCompParam.";
+        }
+      }
+
+      case block-floating-point-selective-re-sending {
+        description
+          "Block floating-point with selective re sending compression and decompression is supported.";
+
+        leaf sres-exponent {
+          type uint8 {
+            range "4";
+          }
+          description "Exponent bit width size in number of bits used when encoding in udCompParam.";
+        }
+      }
+
+      case block-scaling {
+        description "Block scaling compression and decompression is supported.";
+        leaf block-scalar {
+          type uint8;
+            description
+              "Common scaler for compressed PRB";
+        }
+      }
+
+      case u-law {
+        description "u-Law compression and decompression method is supported.";
+        leaf comp-bit-width {
+          type uint8 {
+            range "0..15";
+          }
+          description "Bit with for u-law compression";
+        }
+        leaf comp-shift {
+          type uint8 {
+            range "0..15";
+          }
+          description
+            "the shift applied to the entire PRB";
+        }
+      }
+
+      case beam-space-compression {
+        description "Beamspace compression and decompression is supported. Applies to beamforming weights only.";
+        leaf-list active-beam-space-coeficient-mask {
+          type uint8;
+          description
+            "active beamspace coefficient indices associated with the compressed beamforming vector";
+        }
+        leaf block-scaler {
+          type uint8;
+          description
+            "Common scaler for compressed beamforming coefficients";
+        }
+      }
+
+      case modulation-compression {
+        description "Modulation compression and decompression is supported.";
+        leaf csf {
+          type uint8 {
+            range "0..1";
+          }
+          description "Constellation shift flag";
+        }
+
+        leaf mod-comp-scaler {
+          type uint16 {
+            range "0..32767";
+          }
+          description "Modulation compression scaler value.";
+        }
+      }
+
+      case modulation-compression-selective-re-sending {
+        description "Modulation compression with selective re sending and decompression is supported.";
+        leaf sres-csf {
+          type uint8 {
+            range "0..1";
+          }
+          description "Constellation shift flag";
+        }
+
+        leaf sres-mod-comp-scaler {
+          type uint16 {
+            range "0..32767";
+          }
+          description "Modulation compression scaler value.";
+        }
+      }
+
+    }
+  }
+
+  grouping compression-params {
+    status deprecated;
+    description
+      "Parameters to define compression";
+
+    leaf compression-type {
+      type compression-type-def;
+      mandatory true;
+      description
+        "Compression type that O-DU wants to be supported";
+    }
+
+    leaf bitwidth {
+      when "../compression-type = 'STATIC'";
+      type uint8;
+      status deprecated;
+      description
+        "Bit-width to be used in compression.
+        This has since been replaced in M-Plane version
+        2.0.0 with the iq-bitwidth schema node";
+    }
+
+    uses compression-formats {
+      status deprecated;
+    }
+  }
+
+  grouping compression-parameters {
+    status deprecated;
+    description
+      "Parameters used to define description type";
+
+    leaf iq-bitwidth {
+      type uint8;
+      description
+        "Bit-width to be used in compression";
+    }
+
+    uses compression-formats {
+      status deprecated;
+    }
+  }
+
+  grouping format-of-iq-sample {
+    status deprecated;
+    description
+      "Indicates module capabilities about IQ samples";
+
+    leaf dynamic-compression-supported {
+      type boolean;
+
+      description
+        "Informs if radio supports dynamic compression method";
+    }
+
+    leaf realtime-variable-bit-width-supported {
+      type boolean;
+
+      description
+        "Informs if O-RU supports real-time variable bit with";
+    }
+
+    list compression-method-supported {
+      status deprecated;
+      uses compression-parameters {
+        status deprecated;
+      }
+
+      description
+        "List of supported compression methods by O-RU
+         Note: if O-RU supports different compression methods per endpoint
+               then please refer do endpoints to have information what
+               exactly is supported on a particular endpoint";
+    }
+
+    leaf syminc-supported {
+      type boolean;
+
+      description
+        "Informs if symbol number increment command in a C-Plane is
+         supported or not";
+    }
+
+    leaf regularization-factor-se-supported {
+      type boolean;
+
+      description
+        "Informs if regularizationFactor in section type 5 is
+         supported(true) or not(false)";
+    }
+
+    leaf little-endian-supported {
+      type boolean;
+      default false;
+
+      description
+        "All O-RUs support bigendian byte order. This node informs if module supports the
+        the optional capability for little endian byte order for C/U plane data flows.
+
+        Note - little endian support does not invalidate bigendian support.";
+    }
+  }
+
+// *********** Deprecated End ***********
+
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-compression-factors@2020-08-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-compression-factors@2020-08-10.yang
deleted file mode 100644
index 5816b5e..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-compression-factors@2020-08-10.yang
+++ /dev/null
@@ -1,368 +0,0 @@
-module o-ran-compression-factors {
-  yang-version 1.1;
-  namespace "urn:o-ran:compression-factors:1.0";
-  prefix "o-ran-compression-factors";
-
-
-  organization "O-RAN Alliance";
-
-  contact
-    "www.o-ran.org";
-
-  description
-    "This module defines the module capabilities for
-    the O-RAN Radio Unit U-Plane configuration.
-
-    Copyright 2020 the O-RAN Alliance.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the above disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the above disclaimer in the documentation
-    and/or other materials provided with the distribution.
-    * Neither the Members of the O-RAN Alliance nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.";
-
-  revision "2020-08-10" {
-   description
-     "version 4.0.0
-
-     1) supporting compression types per endpoint
-     2) adding feature for configurable fs-offset for compression";
-
-   reference "ORAN-WG4.M.0-v04.00";
-  }
-
-   revision "2020-04-17" {
-    description
-      "version 3.0.0
-
-      1) adding selective RE sending compression types";
-
-    reference "ORAN-WG4.M.0-v03.00";
-  }
-
-  revision "2019-07-03" {
-    description
-      "version 1.1.0
-
-      1) changes related to compression bitwidth presentation";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-  revision "2019-02-04" {
-    description
-      "version 1.0.0
-
-      1) imported model from xRAN
-      2) changed namespace and reference from xran to o-ran";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-  feature CONFIGURABLE-FS-OFFSET {
-    description
-      "Presence of this feature means that O-RU supports configurable fs-offset for compression.";
-  }
-
-  grouping compression-method-grouping {
-    description
-      "Grouping for compression method.";
-
-    leaf iq-bitwidth {
-      type uint8;
-      description
-        "Bitwidth to be used in compression";
-    }
-
-    leaf compression-method {
-      type enumeration {
-        enum NO_COMPRESSION {
-          description
-            "No compression will be used";
-        }
-        enum BLOCK_FLOATING_POINT {
-          description
-            "Block floating point compression and decompression will be used";
-        }
-
-        enum BLOCK_SCALING {
-          description
-            "Block scaling compression and decompresion will be used";
-        }
-
-        enum U_LAW {
-          description
-            "u-Law compression and decompresion method will be used";
-        }
-
-        enum BEAMSPACE {
-          description
-            "Beamspace compression and decompression will be used";
-        }
-
-        enum MODULATION {
-          description
-            "Modulation compression and decompression will be used";
-        }
-        enum BLOCK-FLOATING-POINT-SELECTIVE-RE-SENDING {
-          description
-            "block floating point with selective re sending
-            compression and decompression will be used";
-        }
-        enum MODULATION-COMPRESSION-SELECTIVE-RE-SENDING {
-          description
-            "modulation compression with selective re sending
-            compression and decompression will be used";
-        }
-      }
-      description
-        "Compresion method which can be supported by the O-RU";
-    }
-  }
-
-  grouping compression-formats {
-    description
-      "Grouping deicated to list compression formats as choice";
-
-    choice compression-format {
-      description
-        "Choice of compression format for particular element";
-
-      case no-compresison {
-        description "Compression for beam weights is not supported.";
-      }
-      case block-floating-point {
-        description "Block floating point compression and decompression is supported.";
-
-        leaf exponent {
-          type uint8 {
-            range "4";
-          }
-          description "Exponent bit width size in number of bits used when encoding in udCompParam.";
-        }
-      }
-
-      case block-floating-point-selective-re-sending {
-        description
-          "Block floating point with selective re sending compression and decompression is supported.";
-
-        leaf sres-exponent {
-          type uint8 {
-            range "4";
-          }
-          description "Exponent bit width size in number of bits used when encoding in udCompParam.";
-        }
-      }
-
-      case block-scaling {
-        description "Block scaling compression and decompresion is supported.";
-        leaf block-scalar {
-          type uint8;
-            description
-              "Common scaler for compressed PRB";
-        }
-      }
-
-      case u-law {
-        description "u-Law compression and decompresion method is supported.";
-        leaf comp-bit-width {
-          type uint8 {
-            range "0..15";
-          }
-          description "Bit with for u-law compression";
-        }
-        leaf comp-shift {
-          type uint8 {
-            range "0..15";
-          }
-          description
-            "the shift applied to the entire PRB";
-        }
-      }
-
-      case beam-space-compression {
-        description "Beamspace compression and decompression is supported. Applies to beamforming weights only.";
-        leaf-list active-beam-space-coeficient-mask {
-          type uint8;
-          description
-            "active beamspace coefficient indices associated with the compressed beamforming vector";
-        }
-        leaf block-scaler {
-          type uint8;
-          description
-            "Common scaler for compressed beamforming coefficients";
-        }
-      }
-
-      case modulation-compression {
-        description "Modulation compression and decompression is supported.";
-        leaf csf {
-          type uint8 {
-            range "0..1";
-          }
-          description "Constallation shift flag";
-        }
-
-        leaf mod-comp-scaler {
-          type uint16 {
-            range "0..32767";
-          }
-          description "Modulation compression scaler value.";
-        }
-      }
-
-      case modulation-compression-selective-re-sending {
-        description "Modulation compression with selective re sending and decompression is supported.";
-        leaf sres-csf {
-          type uint8 {
-            range "0..1";
-          }
-          description "Constallation shift flag";
-        }
-
-        leaf sres-mod-comp-scaler {
-          type uint16 {
-            range "0..32767";
-          }
-          description "Modulation compression scaler value.";
-        }
-      }
-
-    }
-  }
-
-  grouping compression-params {
-    description
-      "Parameters to define compression";
-
-    leaf compression-type {
-      type enumeration {
-        enum STATIC {
-          description
-            "Indicates that static compression method will be used (both compression and IQ bitwidth)";
-        }
-        enum DYNAMIC {
-          description
-            "Indicates that dynamic compression method will be used";
-        }
-      }
-      mandatory true;
-      description
-        "Compression type that O-DU wants to be supported";
-    }
-
-// *********** TO BE REMOVED ***********
-    leaf bitwidth {
-      when "../compression-type = 'STATIC'";
-      type uint8;
-      status deprecated;
-      description
-        "Bitwidth to be used in compression.
-        This has since been replaced in M-Plane version
-        2.0.0 with the iq-bitwidth schema node";
-    }
-// *************************************
-
-    uses compression-formats;
-  }
-
-  grouping compression-parameters {
-    description
-      "Parameters used to define description type";
-
-    leaf iq-bitwidth {
-      type uint8;
-      description
-        "Bitwidth to be used in compression";
-    }
-
-    uses compression-formats;
-  }
-
-  grouping format-of-iq-sample {
-    description
-      "Indicates module capabilities about IQ samples";
-
-    leaf dynamic-compression-supported {
-      type boolean;
-
-      description
-        "Informs if radio supports dynamic compression method";
-    }
-
-    leaf realtime-variable-bit-width-supported {
-      type boolean;
-
-      description
-        "Informs if O-RU supports realtime variable bit with";
-    }
-
-    list compression-method-supported {
-      uses compression-parameters;
-
-      description
-        "List of supported compression methods by O-RU
-         Note: if O-RU supports different compression methods per endpoint
-               then please refer do endpoints to have information what
-               exactly is supported on a paticular endpoint";
-    }
-
-    leaf syminc-supported {
-      type boolean;
-
-      description
-        "Informs if symbol number increment command in a C-Plane is
-         supported or not";
-    }
-
-    leaf regularization-factor-se-supported {
-      type boolean;
-
-      description
-        "Informs if regularizationFactor in section type 5 is
-         supported(true) or not(false)";
-    }
-
-    leaf little-endian-supported {
-      type boolean;
-      default false;
-
-      description
-        "All O-RUs support bigendian byte order. This node informs if module supports the
-        the optional capability for little endian byte order for C/U plane data flows.
-
-        Note - little endian support does not invalidate bigendian support.";
-    }
-  }
-
-
-  grouping compression-details {
-    description "";
-
-    leaf iq-bitwidth {
-      type uint8;
-      description
-        "Bitwidth to be used in compression";
-    }
-
-    uses compression-params;
-  }
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-delay-management@2020-08-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-delay-management.yang
similarity index 76%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-delay-management@2020-08-10.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-delay-management.yang
index 6e64c49..8a05ddd 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-delay-management@2020-08-10.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-delay-management.yang
@@ -10,7 +10,7 @@
 
   description
     "This module covers off aspects of O-DU to O-RU delay management,
-    including config data related to O-RU transmission and reception
+    including configuration data related to O-RU transmission and reception
     windows.
 
     Copyright 2020 the O-RAN Alliance.
@@ -39,6 +39,25 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) introducing new feature for ACK NACK feedback.";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) typographical corrections in descriptions.
+      2) add new schema node beam-context-gap-period.";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
   revision "2020-08-10" {
     description
       "version 4.0.0
@@ -89,7 +108,7 @@
 
   grouping bandwidth-configuration {
     description
-      "Grouping for bandwidth and scs configuration";
+      "Grouping for bandwidth and SCS configuration";
 
     leaf bandwidth {
       type bandwidth;
@@ -102,7 +121,7 @@
         range "0 .. 240000 ";
       }
       units Hertz;
-      description "subcarrier spacing in Hz";
+      description "sub-carrier spacing in Hz";
     }
   }
 
@@ -188,7 +207,7 @@
       description
         "the minimum O-RU data processing delay between receiving real time
         up-link control plane message over the fronthaul interface and
-        recieving the first IQ sample at the antenna";
+        receiving the first IQ sample at the antenna";
     }
     leaf t2a-max-cp-ul {
       type uint32;
@@ -201,9 +220,35 @@
     }
   }
 
+  grouping ta3-ack {
+    description
+      "Grouping for ta3-ack configuration";
+    leaf ta3-min-ack {
+      type int32;
+      units nanoseconds;
+      description
+        "the minimum delay between the DL/UL air reference point (tDL=0 or tUL=0) of symbol M
+        and the time O-RU sends section type 8 (ACK/NACK feedback) to O-DU.
+        This value can be negative, which indicates it is in advance of the air reference point.
+        This leaf only exists if section extension 22 (ACK/NACK request) and section type 8 (ACK/NACK feedback)
+        are supported by at least one endpoint.";
+    }
+
+    leaf ta3-max-ack {
+      type int32;
+      units nanoseconds;
+      description
+        "the maximum delay between the DL/UL air reference point (tDL=0 or tUL=0) of symbol M
+        and the time O-RU sends section type 8 (ACK/NACK feedback) to O-DU.
+        This value can be negative, which indicates it is in advance of the air reference point.
+        This leaf only exists if section extension 22 (ACK/NACK request) and section type 8 (ACK/NACK feedback)
+        are supported by at least one endpoint.";
+    }
+  }
+
   grouping ru-delay-profile {
     description
-      "Grouping for ru delay profile";
+      "Grouping for RU delay profile";
 
     uses t2a-up;
     uses t2a-cp-dl;
@@ -220,6 +265,7 @@
 
     uses ta3;
     uses t2a-cp-ul;
+    uses ta3-ack;
   }
 
   grouping o-du-delay-profile {
@@ -230,7 +276,7 @@
       type uint32;
       units nanoseconds;
       description
-        "the earliest possible time which the O-DU can support transmiting
+        "the earliest possible time which the O-DU can support transmitting
         an IQ data message prior to transmission of the corresponding IQ
         samples at the antenna";
     }
@@ -305,6 +351,7 @@
   }
 
   grouping delay-management-group {
+    description "a delay management grouping";
     list bandwidth-scs-delay-state {
       key "bandwidth subcarrier-spacing";
       description
@@ -345,9 +392,22 @@
         uses t34;
       }
     }
+
+    leaf beam-context-gap-period {
+      type uint16;
+      units microseconds;
+      description
+        "Time gap between the end of reception window of the C-Plane message(Msg-A) with new beam weights for a given beamId and end of the reception window
+        of the C-Plane message(Msg-B) that cites the same beamId without weights in the new context.
+        Note: Value of '0' indicates that the end of the Msg-A and Msg-B reception windows are perfectly aligned, which should allow Msg-B to use the new
+        beamforming weights with a '0' microsecond beam-context-gap-period. Value of '65535' implies infinite gap, which means a beamId may not be reused
+        at all in a different context (applicable only to weight-based dynamic beamforming). If O-DU chooses not to interpret/honor this value, behaviour
+        of O-RU is unpredictable if a beamId has new weights loaded in one context and is reused in a different context. Please refer the CUS-Plane spec
+        Section 'Weight-based dynamic beamforming' for detailed description";
+    }
   }
   container delay-management {
-    description "top level tree covering off O-DU to O-RU delay management";
+    description "top-level tree covering off O-DU to O-RU delay management";
 
     uses delay-management-group;
   }
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-dhcp@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-dhcp.yang
similarity index 73%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-dhcp@2020-12-10.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-dhcp.yang
index 00b556b..8d2967a 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-dhcp@2020-12-10.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-dhcp.yang
@@ -13,8 +13,11 @@
 
   import ietf-dhcpv6-types {
     prefix dhcpv6-type;
-    // checkAS
-    // revision-date 2018-09-04;
+    revision-date 2018-09-04;
+  }
+
+  import ietf-dhcpv6-common {
+    prefix dhcpv6-type2;
   }
 
   import o-ran-wg4-features {
@@ -27,9 +30,9 @@
     "www.o-ran.org";
 
   description
-    "This module defines the YANG definitions for managng the DHCP client.
+    "This module defines the YANG definitions for managing the DHCP client.
 
-    Copyright 2019 the O-RAN alliance.
+    Copyright 2021 the O-RAN alliance.
 
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -55,6 +58,34 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) added DUID/IAID support for IPv4.
+      2) switched import FROM ietf-dhcpv6-types TO ietf-dhcpv6-common";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 5.2.0
+
+      1) Typographical corrections for british english.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 5.1.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
   revision "2020-12-10" {
    description
      "version 5.0.0
@@ -62,8 +93,7 @@
      1) added new leafs for reporting discovered event-collectors
      used";
 
-   reference "ORAN-WG4.O1.0-v05.00";
-//update reference
+   reference "ORAN-WG4.M.0-v05.00";
   }
 
   revision "2019-07-03" {
@@ -150,9 +180,16 @@
       }
       leaf protocol {
         type enumeration {
-          enum HTTP;
-          enum HTTPS;
+          enum HTTP {
+            description
+                "HTTP used to communicate with CA/RA server";
+          }
+          enum HTTPS{
+            description
+                "HTTPS used to communicate with CA/RA server";
+          }
         }
+        description "the protocol used to communicate with a CA/RA server";
       }
     }
   }
@@ -175,8 +212,8 @@
 
   grouping netconf-clients {
     description
-      "The netconf clients discovered using DHCP, discovered using the IANA
-      defined options or O-RAN defined syntax for encoding IP adresses or FQDNs
+      "The NETCONF clients discovered using DHCP, discovered using the IANA
+      defined options or O-RAN defined syntax for encoding IP addresses or FQDNs
       in vendor specific option 43/17";
     list netconf-clients{
       key client;
@@ -195,12 +232,12 @@
   grouping event-collectors {
     description
       "The event-collectors discovered using DHCP, discovered using the O-RAN
-      defined syntax for encoding IP adresses or FQDNs in vendor specific
+      defined syntax for encoding IP addresses or FQDNs in vendor specific
       option 43/17";
     leaf-list event-collectors{
       if-feature "or-feat:NON-PERSISTENT-MPLANE";
-      max-elements 1;
       type event-collector-id;
+      max-elements 1;
       description
         "An event-collector discovered using DHCP that can be used by the O-RU to
         send pnfRegistration notification messages.
@@ -210,7 +247,9 @@
     leaf event-collector-format{
       if-feature "or-feat:NON-PERSISTENT-MPLANE";
       type enumeration {
-        enum ONAP;
+        enum ONAP {
+          description "ONAP format is used to signal the event-collector";
+        }
       }
       description "the event-collector notification format";
     }
@@ -251,9 +290,14 @@
     description "DHCPv6 Configuration options";
 
     container dhcp-server-identifier{
-      description "dhcpv6 server identifief";
+      status deprecated;
+      description "dhcpv6 server identifier - deprecated as this uses import from ietf-dhcpv6-types and not ietf-dhcpv6-common";
       uses dhcpv6-type:duid;
     }
+    container dhcpv6-server-identifier{
+      description "dhcpv6 server identifier - replaces container dhcp-server-identifier and uses import from ietf-dhcpv6-common";
+      uses dhcpv6-type2:duid;
+    }
     leaf domain-name {
       type  string;
       description "Name of the domain";
@@ -269,6 +313,7 @@
   }
 
   grouping dhcp-group {
+    description "a dhcp grouping";
     list interfaces {
       key "interface";
       description "Interface configuration";
@@ -282,16 +327,48 @@
         description "DHCPv4 information";
         leaf client-id {
           type string;
-          description "DHCP client identifier";
+          description "DHCP client identifier - used when the DHCPv4 client in the O-RU does not use DUID/IAID";
+        }
+        uses dhcpv6-type2:duid;
+
+        container identity-association {
+          description "an optional container - used when DHCPv4 client uses DUID/IAID as identifier";
+
+          leaf iaid {
+            type uint32;
+            description "IAID";
+          }
+          leaf ia-type {
+            type string;
+            description "IA type";
+          }
         }
         uses dhcpv4-option;
       }
       container dhcpv6 {
         description "DHCPv6 information";
         container dhcp-client-identifier{
-          description "dhcpv6 client identifief";
+          status deprecated;
+          description "dhcpv6 client identifier - deprecated as this uses import from ietf-dhcpv6-types and not ietf-dhcpv6-common";
           uses dhcpv6-type:duid;
         }
+        container dhcpv6-client-identifier{
+          description "dhcpv6 client identifier using ietf-dhcpv6-common import";
+          uses dhcpv6-type2:duid;
+          container identity-association {
+            description "a container describing IAID information";
+
+            leaf iaid {
+              type uint32;
+              description "IAID";
+            }
+            leaf ia-type {
+              type string;
+              mandatory true;
+              description "IA type";
+            }
+          }
+        }
         uses dhcpv6-option;
       }
     }
@@ -299,10 +376,10 @@
     container m-plane-dhcp {
       description "leafs covering off DHCP aspects of m-plane operations";
       leaf private-enterprise-number {
-        status deprecated;
         type uint16;
         default 53148;
-        description "the private enteprise number allocated to O-RAN Alliance";
+        status deprecated;
+        description "the private enterprise number allocated to O-RAN Alliance";
       }
       leaf private-enterprise-num {
         type uint32;
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ecpri-delay.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ecpri-delay.yang
new file mode 100644
index 0000000..c107141
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ecpri-delay.yang
@@ -0,0 +1,214 @@
+module o-ran-ecpri-delay {
+  yang-version 1.1;
+  namespace "urn:o-ran:message5:1.0";
+  prefix "o-ran-msg5";
+
+  import o-ran-processing-element {
+    prefix "element";
+  }
+
+  import o-ran-wg4-features {
+     prefix "feat";
+  }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module is an optional module for supporting eCPRI message 5 handling
+    used for eCPRI based delay measurements.
+
+    Copyright 2021 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) typographical corrections in descriptions.
+      2) Add support for multiple transport-session-type per O-RU.";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2021-07-26" {
+    description
+      "version 7.0.0
+
+      1) add support for optional reporting of one or two-step measurements";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+  revision "2019-02-04" {
+    description
+      "version 1.0.0
+
+      1) imported model from xRAN
+      2) changed namespace and reference from xran to o-ran";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+// groupings
+
+  grouping msg5-group {
+    description "an eCPRI message 5 grouping";
+
+    container ru-compensation {
+      config false;
+      description
+        "leafs for ru timing compensation based on message 5 handling";
+      leaf tcv2 {
+        type uint32;
+        units nanoseconds;
+        description
+          "a compensation value to account for expected delay from packet
+          receipt at R2 to timestamping in the O-RU";
+      }
+      leaf tcv1 {
+        type uint32;
+        units nanoseconds;
+        description
+          "a compensation value to account for expected processing time from
+          timestamping in the O-RU until actual packet transmission at R3";
+      }
+    }
+
+    leaf enable-message5 {
+      type boolean;
+      default false;
+      description
+        "whether O-RU's eCPRI message 5 handling is enabled.";
+    }
+
+    leaf one-step-t34-supported {
+      type boolean;
+      config false;
+      description
+        "Indicates whether O-RU supports eCPRI message 5 one-step procedure for
+        T34 measurements.
+        An O-RU supporting this YANG model shall at least set one of
+        one-step-t34-supported or two-step-t34-supported to true.
+
+        Note, all O-RUs supporting this model shall support one-step measurements
+        for T12 measurement";
+    }
+
+    leaf two-step-t34-supported {
+      type boolean;
+      config false;
+      description
+        "Indicates whether O-RU supports eCPRI message 5 two-step procedure for
+        T34 measurements.
+        An O-RU supporting this YANG model shall at least set one of
+        one-step-t34-supported or two-step-t34-supported to true
+
+        Note, all O-RUs supporting this model shall support two-step measurements
+        for T12 measurement";
+    }
+
+    container message5-sessions {
+      description "session information for eCPRI message 5";
+
+      list session-parameters {
+        key "session-id";
+        description "list of MSG5 session information";
+        leaf session-id {
+          type uint32;
+          description "Session ID for MSG5 responder";
+        }
+        leaf processing-element-name {
+          type leafref {
+            path "/element:processing-elements/element:ru-elements/element:name";
+          }
+          description "the name of the processing element used for MSG5";
+        }
+
+        leaf transport-session-type {
+          if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+          type enumeration {
+            enum ETH-INTERFACE {
+              description "VLAN based CUS Transport ";
+            }
+            enum UDPIP-INTERFACE {
+              description "UDP/IP based CUS Transport ";
+            }
+            enum ALIASMAC-INTERFACE{
+              description "Alias MAC address based CUS Transport ";
+            }
+          }
+          description
+            "transport session type used when an O-RU is configured with multiple processing elements of different transport session types,
+             in which case it is used for referencing a processing element in 'transport-qualified-processing-element-name'";
+        }
+
+        leaf transport-qualified-processing-element-name {
+          if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+          type leafref {
+            path "/element:processing-elements/element:additional-transport-session-type-elements[element:transport-session-type = current()/../transport-session-type]/element:ru-elements/element:name";
+          }
+          description
+              "the name of the processing element used for MSG5, used when the processing element
+               is configured by the list 'additional-transport-session-type-elements'";
+        }
+
+        container flow-state {
+          config false;
+          description "MSG5 flow state";
+          leaf responses-transmitted {
+            type uint32;
+            description
+              "The total number of eCPRI message 5 response messages transmitted by
+              the O-RU.";
+          }
+          leaf requests-transmitted {
+            type uint32;
+            description
+              "The total number of eCPRI message 5 request messages transmitted by
+              the O-RU.";
+          }
+          leaf followups-transmitted {
+            type uint32;
+            description
+              "The total number of eCPRI message 5 follow up messages transmitted by
+              the O-RU.";
+          }
+        }
+      }
+    }
+  }
+
+// top level container
+
+  container ecpri-delay-message {
+    description "top-level tree covering off O-DU to O-RU msg5 delay measurement";
+
+    uses msg5-group;
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ecpri-delay@2019-02-04.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ecpri-delay@2019-02-04.yang
deleted file mode 100644
index 88f1678..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ecpri-delay@2019-02-04.yang
+++ /dev/null
@@ -1,135 +0,0 @@
-module o-ran-ecpri-delay {
-  yang-version 1.1;
-  namespace "urn:o-ran:message5:1.0";
-  prefix "o-ran-msg5";
-
-  import o-ran-processing-element {
-    prefix "element";
-  }
-
-  organization "O-RAN Alliance";
-
-  contact
-    "www.o-ran.org";
-
-  description
-    "This module is an optional module for supporting eCPRI message 5 handling
-    used for eCPRI based delay measurements.
-
-    Copyright 2019 the O-RAN Alliance.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the above disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the above disclaimer in the documentation
-    and/or other materials provided with the distribution.
-    * Neither the Members of the O-RAN Alliance nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.";
-
-  revision "2019-02-04" {
-    description
-      "version 1.0.0
-
-      1) imported model from xRAN
-      2) changed namespace and reference from xran to o-ran";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-// groupings
-
-  grouping msg5-group {
-
-    container ru-compensation {
-      config false;
-      description
-        "leafs for ru timing compensation based on message 5 handling";
-      leaf tcv2 {
-        type uint32;
-        units nanoseconds;
-        description
-          "a compensation value to account for expected delay from packet
-          receipt at R2 to timestamping in the O-RU";
-      }
-      leaf tcv1 {
-        type uint32;
-        units nanoseconds;
-        description
-          "a compensation value to account for expected processing time from
-          timestamping in the O-RU until actual packet transmission at R3";
-      }
-    }
-
-    leaf enable-message5 {
-      type boolean;
-      default false;
-      description
-        "whether O-RU's eCPRI message 5 handling is enabled.";
-    }
-
-    container message5-sessions {
-      description "session information for eCPRI message 5";
-
-      list session-parameters {
-        key "session-id";
-        description "list of MSG5 session information";
-        leaf session-id {
-          type uint32;
-          description "Session ID for MSG5 responder";
-        }
-        leaf processing-element-name {
-          type leafref {
-            path "/element:processing-elements/element:ru-elements/element:name";
-          }
-          description "the name of the processing element used for MSG5";
-        }
-        container flow-state {
-          config false;
-          description "MSG5 flow state";
-          leaf responses-transmitted {
-            type uint32;
-            description
-              "The total number of eCPRI mesage 5 response messages transmitted by
-              the O-RU.";
-          }
-          leaf requests-transmitted {
-            type uint32;
-            description
-              "The total number of eCPRI mesage 5 request messages transmitted by
-              the O-RU.";
-          }
-          leaf followups-transmitted {
-            type uint32;
-            description
-              "The total number of eCPRI mesage 5 follow up messages transmitted by
-              the O-RU.";
-          }
-        }
-      }
-    }
-  }
-
-// top level container
-
-  container ecpri-delay-message {
-    description "top level tree covering off O-DU to O-RU msg5 delay measurement";
-
-    uses msg5-group;
-  }
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ethernet-forwarding@2020-04-17.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ethernet-forwarding.yang
similarity index 94%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ethernet-forwarding@2020-04-17.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ethernet-forwarding.yang
index 8c67b63..6034cf0 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ethernet-forwarding@2020-04-17.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ethernet-forwarding.yang
@@ -50,6 +50,16 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2021-12-01" {
+    description
+      "version 3.1.0
+
+      1. Typo corrections for british english";
+
+    reference "ORAN-WG4.M.0-v03.00";
+  }
+
+
   revision "2020-04-17" {
     description
       "version 3.0.0
@@ -70,7 +80,7 @@
       units "seconds";
       default "300";
       description
-        "The timeout period in seconds for aging out
+        "The timeout period in seconds for ageing out
         dynamically-learned forwarding information.";
     }
 
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-externalio@2019-07-03.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-externalio.yang
similarity index 98%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-externalio@2019-07-03.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-externalio.yang
index 8779f71..cd8c505 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-externalio@2019-07-03.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-externalio.yang
@@ -58,6 +58,7 @@
   }
 
   grouping external-io-group {
+    description "an external io grouping";
     list input {
       key "name";
       config false;
@@ -140,6 +141,7 @@
   }
 
   grouping notification-group {
+    description "a notification grouping";
     container current-input-notification {
       description "a container for the state of the input ports";
       list external-input {
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fan@2019-07-03.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fan.yang
similarity index 93%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fan@2019-07-03.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fan.yang
index 79fb588..4157eff 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fan@2019-07-03.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fan.yang
@@ -38,6 +38,15 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2021-12-01" {
+    description
+      "version 1.2.0
+
+      1) typographical corrections.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
   revision "2019-07-03" {
     description
       "version 1.1.0
@@ -65,6 +74,7 @@
   }
 
   grouping fan-grouping {
+    description "a fan grouping";
     list fan-state {
       key name;
       description "a list of the fans based on their unique names";
@@ -118,7 +128,7 @@
 
   container fan-tray {
     config false;
-    description "top level tree covering off operational state of the fans";
+    description "top-level tree covering off operational state of the fans";
 
     uses fan-grouping;
   }
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-file-management.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-file-management.yang
new file mode 100644
index 0000000..a73756c
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-file-management.yang
@@ -0,0 +1,270 @@
+module o-ran-file-management {
+  yang-version 1.1;
+  namespace "urn:o-ran:file-management:1.0";
+  prefix "o-ran-file-mgmt";
+
+  import ietf-crypto-types {
+    prefix "ct";
+    revision-date "2019-04-29";
+  }
+
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the configuration and operations for handling upload.
+
+    Copyright 2021 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) added password for FTPES
+      2) clarified path/folder description ";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 7.1.0
+
+      1) typographical corrections";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+  revision "2021-07-26" {
+    description
+      "version 7.0.0
+
+      1) added FTPES support";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+  revision "2019-07-03" {
+    description
+      "version 1.1.0
+
+      1) backward compatible changes to correct sFTP Server Authentication .
+      2) minor fixes according to lack of descriptions
+      3) backward compatible changes to introduce groupings";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2019-02-04" {
+    description
+      "version 1.0.0
+
+      1) imported model from xRAN
+      2) changed namespace and reference from xran to o-ran";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  grouping file-path-grouping {
+    description "Grouping, that provides local path and remote path for the
+    purpose of File Management scenarios.";
+
+
+    leaf local-logical-file-path {
+      type string;
+      mandatory true;
+      description "URI specifying the complete logical path relative to the root of the logical file system
+      structure (the common root for o-ran/log, o-ran/pm, o-ran/transceiver or o-ran/beamforming) of the file
+      to upload/download (no wildcard is allowed), including a file name and its extension.
+      Example: 'o-ran/log/file_1.abc', where 'o-ran/log/' represents relative path to folder containing log files
+      as specified by O-RAN, 'file_1' represents desired filename and 'abc' represents desired filename's extension.
+      The content shall conform to RFC3986 'Uniform Resource Identifier (URI): Generic Syntax'";
+    }
+
+    leaf remote-file-path {
+      type string;
+      mandatory true;
+      description "URI specifying the remote-file-path on O-DU/SMO or on stand-alone file server.
+      The content shall conform to RFC3986 'Uniform Resource Identifier (URI): Generic Syntax'.
+      When upload/download is via sftp, the format shall be of the form
+      sftp://<username>@<host>[:port]/path
+      When upload/download is via ftpes, the format shall be of the form
+      ftpes://<username>@<host>[:port]/path
+
+      Note, ftpes is not an IANA registered URI scheme, but used here to signal
+      that a file transfer should be performed over FTPES";
+    }
+  }
+
+  grouping output-status-grouping {
+    description "Status grouping";
+
+    leaf status {
+      type enumeration {
+        enum SUCCESS {
+            description "";}
+        enum FAILURE {
+            description "";}
+      }
+      description "Operation status";
+      }
+
+    leaf reject-reason {
+      when "../status = 'FAILURE'";
+      type string;
+      description "";
+    }
+  }
+
+  grouping credential-information {
+    description "Type of authentication to use for file upload or download.";
+    choice credentials {
+      case password {
+        container password {
+          presence true;
+          leaf password {
+            type string;
+            mandatory true;
+            description
+              "password used for O-RU authentication to sFTP server for the associated username defined in the remote-file-path.";
+          }
+          description
+            "password for O-RU authentication method in use. This information
+            shall be ignored by an O-RU that is using FTPES based file transfer";
+        }
+        container server {
+          list keys {
+            key algorithm;
+            ordered-by user;
+            uses ct:public-key-grouping;
+            description
+              "List of allowed algorithms with its keys";
+          }
+          description
+            "SSH Key for file server authentication";
+        }
+      }
+      case certificate {
+        container certificate {
+          presence true;
+          description
+            "certificate authentication method in use";
+        }
+
+      }
+     description "";
+    }
+    container application-layer-credential{
+
+      leaf appl-password {
+            type string;
+            description
+             "The parameter represents the password which may be needed for O-RU application level authentication.
+             For example, to perform authenticatation towards an FTPes server which does not allow anonymous account,
+             in addition to X.509v3 certificate for TLS authentication, password configured here need to be used together with username defined in the remote-file-path  ";
+      }
+      description
+        "Application layer credential information";
+    }
+  }
+
+  grouping retrieve-input {
+    description "Grouping for information retrieval RPC input";
+    leaf logical-path {
+      type string;
+      mandatory true;
+      description "URL specifying the logical path relative to the root of the logical file system
+      structure (the common root for o-ran/log, o-ran/pm, o-ran/transceiver or o-ran/beamforming)
+      of the files to be listed.";
+    }
+    leaf file-name-filter {
+      type string;
+      description "Filter which needs to be applied on the result list of file names (* is allowed as wild-card).";
+    }
+  }
+
+  grouping retrieve-output {
+    description "Grouping for information retrieval RPC output";
+    uses output-status-grouping;
+    leaf-list file-list {
+      when "../status = 'SUCCESS'";
+      type string;
+      description "List of files in the unit with the filter applied.";
+    }
+  }
+
+// RPCs
+
+  rpc file-upload {
+    description "Management plane trigger to upload file from O-RU to file-server";
+    input {
+      uses file-path-grouping;
+      uses credential-information;
+    }
+    output {
+      uses output-status-grouping;
+    }
+  }
+
+  rpc retrieve-file-list {
+    description "List all the files in the logical O-RAN unit (* is allowed as wild-card).";
+    input {
+      uses retrieve-input;
+
+    }
+    output {
+      uses retrieve-output;
+    }
+  }
+
+  rpc file-download {
+    description
+      "Management plane trigger to download file from file-server to O-RU.";
+    input {
+      uses file-path-grouping;
+      uses credential-information;
+    }
+    output {
+      uses output-status-grouping;
+    }
+  }
+
+  notification file-upload-notification {
+    uses file-path-grouping;
+    uses output-status-grouping;
+    description "";
+  }
+
+  notification file-download-event {
+    uses file-path-grouping;
+    uses output-status-grouping;
+    description "";
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-file-management@2019-07-03.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-file-management@2019-07-03.yang
deleted file mode 100644
index ee07645..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-file-management@2019-07-03.yang
+++ /dev/null
@@ -1,213 +0,0 @@
-module o-ran-file-management {
-  yang-version 1.1;
-  namespace "urn:o-ran:file-management:1.0";
-  prefix "o-ran-file-mgmt";
-
-  import ietf-crypto-types {
-    prefix "ct";
-  }
-
-
-  organization "O-RAN Alliance";
-
-  contact
-    "www.o-ran.org";
-
-  description
-    "This module defines the configuration and operations for handling upload.
-
-    Copyright 2019 the O-RAN Alliance.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the above disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the above disclaimer in the documentation
-    and/or other materials provided with the distribution.
-    * Neither the Members of the O-RAN Alliance nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.";
-
-  revision "2019-07-03" {
-    description
-      "version 1.1.0
-
-      1) backward compatible changes to correct sFTP Server Authentication .
-      2) minor fixes according to lack of descriptions
-      3) backward compatible changes to introduce groupings";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-  revision "2019-02-04" {
-    description
-      "version 1.0.0
-
-      1) imported model from xRAN
-      2) changed namespace and reference from xran to o-ran";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-  grouping file-path-grouping {
-    description "Complete logical path of the file to upload/download
-    (no wildcard is allowed) ex : /o-RAN/log/syslog.1";
-
-    leaf local-logical-file-path {
-      type string;
-      mandatory true;
-      description "Local logical file path";
-    }
-
-    leaf remote-file-path {
-      type string;
-      mandatory true;
-      description "URI specifying the remote-file-path on O-DU/NMS.
-      Format:sftp://<username>@<host>[:port]/path";
-    }
-  }
-
-  grouping output-status-grouping {
-    description "Status grouping";
-
-    leaf status {
-      type enumeration {
-        enum SUCCESS {
-            description "";}
-        enum FAILURE {
-            description "";}
-      }
-      description "Operation status";
-      }
-
-    leaf reject-reason {
-      when "../status = 'FAILURE'";
-      type string;
-      description "";
-    }
-  }
-
-  grouping credential-information {
-    description "Type of authentication to use for SFTP upload or download.";
-    choice credentials {
-      case password {
-        container password {
-          presence true;
-          leaf password {
-            type string;
-            mandatory true;
-            description
-              "password needed for O-RU authentication.";
-          }
-          description
-            "password for O-RU authentication method in use";
-        }
-        container server {
-          list keys {
-            key algorithm;
-            ordered-by user;
-            uses ct:public-key-grouping;
-            description
-              "List of allowed algorithms with its keys";
-          }
-          description
-            "Key for sFTP server authentication";
-        }
-      }
-      case certificate {
-        container certificate {
-          presence true;
-          description
-            "certificate authentication method in use";
-        }
-      }
-     description "";
-    }
-  }
-
-  grouping retrieve-input {
-    description "Grouping for information retrieval RPC input";
-    leaf logical-path {
-      type string;
-      mandatory true;
-      description "O-RAN unit of which the files are to be listed.
-      ex :  O-RAN/log, o-RAN/PM, O-RAN/transceiver";
-    }
-    leaf file-name-filter {
-      type string;
-      description "Filter which are to be applied on the result list of file names (* is allowed as wild-card).";
-    }
-  }
-
-  grouping retrieve-output {
-    description "Grouping for information retrieval RPC output";
-    uses output-status-grouping;
-    leaf-list file-list {
-      when "../status = 'SUCCESS'";
-      type string;
-      description "List of files in the unit with the filter applied.";
-    }
-  }
-
-// RPCs
-
-  rpc file-upload {
-    description "File upload over SFTP from equipment to NETCONF client";
-    input {
-      uses file-path-grouping;
-      uses credential-information;
-    }
-    output {
-      uses output-status-grouping;
-    }
-  }
-
-  rpc retrieve-file-list {
-    description "List all the files in the logical O-RAN unit (* is allowed as wild-card).";
-    input {
-      uses retrieve-input;
-
-    }
-    output {
-      uses retrieve-output;
-    }
-  }
-
-  notification file-upload-notification {
-    uses file-path-grouping;
-    uses output-status-grouping;
-    description "";
-  }
-
-  rpc file-download {
-    description
-      "Management plane triggered to generate the download file of O-RU.";
-    input {
-      uses file-path-grouping;
-      uses credential-information;
-    }
-    output {
-      uses output-status-grouping;
-    }
-  }
-
-  notification file-download-event {
-    uses file-path-grouping;
-    uses output-status-grouping;
-    description "";
-  }
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fm.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fm.yang
new file mode 100644
index 0000000..caf46cb
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fm.yang
@@ -0,0 +1,343 @@
+module o-ran-fm {
+  yang-version 1.1;
+  namespace "urn:o-ran:fm:1.0";
+  prefix "o-ran-fm";
+
+  import ietf-yang-types {
+    prefix yang;
+    revision-date 2013-07-15;
+  }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines alarm reporting mechanism.
+
+    Copyright 2021 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) removed min-elements 1 from affected-objects list
+      2) added identifier to affected-objects list
+      3) added new additional-information list";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2022-04-18" {
+    description
+      "version 9.0.0
+
+      1) added feature HISTORICAL-ALARM-LIST
+      2) added corresponding  historical-alarm-list container";
+
+    reference "ORAN-WG4.M.0-v09.00";
+  }
+
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) typographical corrections in descriptions.
+      2) add new leafs probable-cause, specific-problem, proposed-repair-actions
+         and alarm-type";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 1.1.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2019-02-04" {
+    description
+      "version 1.0.0
+
+      1) imported model from xRAN
+      2) changed namespace and reference from xran to o-ran";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  feature HISTORICAL-ALARM-LIST {
+    description
+      "O-RU supports Historical Alarm List to keep a historical
+       record of alarms events over M-plane.";
+  }
+
+  grouping alarm {
+    description
+      "Grouping which can uniquely identify alarm";
+
+    leaf fault-id {
+      type uint16;
+      mandatory true;
+
+      description
+        "Fault specific Id that identifies the fault.";
+    }
+
+    leaf fault-source {
+      type string {
+        length "1..255";
+      }
+      mandatory true;
+
+      description
+        "Represents the Object or source that is suspected to be faulty.
+        If the fault source is external and can not be represented by an object in the model, external alarm source info should be set as the value.
+        If the fault source can be represented by an object in the model, the YANG instance-identifier should be set as the value";
+    }
+
+    list affected-objects {
+
+      leaf name {
+        type string {
+          length "1..255";
+        }
+
+       mandatory true;
+        description
+          "Represents the Object or source that is suspected to be affected by this fault.";
+      }
+
+      leaf identifier {
+        type yang:xpath1.0;
+        description "An optional parameter used to indicate a YANG instance-identifier for the affected
+        object. Used when the object or source is represented in the object model.";
+      }
+
+      max-elements 100;
+
+      description
+        "List of affected-objects";
+    }
+
+    leaf fault-severity {
+      type enumeration {
+        enum CRITICAL {
+          description
+            "Critical alarm means that this device is not able to perform any further service";
+        }
+        enum MAJOR {
+          description
+            "Major alarm appeared on the device";
+        }
+        enum MINOR {
+          description
+            "Minor alarm appeared on the device";
+        }
+        enum WARNING {
+          description
+            "Warning is being reported by the device";
+        }
+      }
+      mandatory true;
+
+      description
+        "Fault severity defines the severity level of the fault. A notification, whose fault severity has the value 'warning',
+        is a special type of alarm notification. For these alarm notifications,
+        the Master Agent does not expect to receive a clear alarm notification.";
+    }
+
+    leaf is-cleared {
+      type boolean;
+      mandatory true;
+
+      description
+        "Fault state determines the type of the event. Not used if faultSeverity is WARNING.";
+    }
+
+    leaf fault-text {
+      type string {
+        length "0..255";
+      }
+
+      description
+        "Textual description of the fault.";
+    }
+
+    leaf probable-cause {
+      type string {
+        length "0..255";
+      }
+      description
+        "Probable cause of an alarm as defined in ITU-T Rec. X.733.
+        It qualifies alarm and provides further information than alarm-type.
+
+        The value of the probable cause strings are not standardized in this YANG model.
+
+        An O-RU shall populate this leaf, if the fault-text string does not indicate
+        the probable cause.";
+    }
+
+    leaf specific-problem {
+      type string {
+        length "0..255";
+      }
+      description
+        "An optional leaf providing further qualification on the alarm than probable-cause,
+         as defined in ITU-T Recommendation X.733 ";
+    }
+
+    leaf proposed-repair-actions {
+      type string {
+        length "0..255";
+      }
+      description
+        "Optional leaf, used if the cause is known and the O-RU can suggest one or
+        more solutions to fix the problem causing the alarm as defined in ITU-T Rec. X. 733";
+    }
+
+    leaf event-time {
+      type yang:date-and-time;
+      mandatory true;
+
+      description
+        "Timestamp to indicate the time when the fault is detected/cleared.";
+    }
+
+    list additional-information {
+         key "identifier";
+         description
+           "This parameter allows the inclusion of an additional
+            information set in the alarm.  It is a series of data
+            structures, each of which contains  items of
+            information: an identifier,
+            and the problem information. Refer to RFC8632.";
+         leaf identifier {
+           type string;
+           description
+             "Identifies the data type of the information parameter.";
+         }
+         leaf information {
+           type string;
+           description
+             "Additional information about the alarm.";
+         }
+       }
+
+    leaf alarm-type {
+      type enumeration {
+        enum COMMUNICATIONS-ALARM {
+          description
+            "See Table 12.2.1.4.4.6-1 in 3GPP 28.532 for description";
+        }
+        enum PROCESSING-ERROR-ALARM {
+          description
+            "See Table 12.2.1.4.4.6-1 in 3GPP 28.532 for description";
+        }
+        enum ENVIRONMENTAL-ALARM {
+          description
+            "See Table 12.2.1.4.4.6-1 in 3GPP 28.532 for description";
+        }
+        enum QUALITY-OF-SERVICE-ALARM {
+          description
+            "See Table 12.2.1.4.4.6-1 in 3GPP 28.532 for description";
+        }
+        enum EQUIPMENT-ALARM {
+          description
+            "See Table 12.2.1.4.4.6-1 in 3GPP 28.532 for description";
+        }
+        enum INTEGRITY-VIOLATION {
+          description
+            "See Table 12.2.1.4.4.6-1 in 3GPP 28.532 for description";
+        }
+        enum OPERATIONAL-VIOLATION {
+          description
+            "See Table 12.2.1.4.4.6-1 in 3GPP 28.532 for description";
+        }
+        enum PHYSICAL-VIOLATION {
+          description
+            "See Table 12.2.1.4.4.6-1 in 3GPP 28.532 for description";
+        }
+        enum SECURITY-SERVICE-OR-MECHANISM-VIOLATION {
+          description
+            "See Table 12.2.1.4.4.6-1 in 3GPP 28.532 for description";
+        }
+        enum TIME-DOMAIN-VIOLATION {
+          description
+            "See Table 12.2.1.4.4.6-1 in 3GPP 28.532 for description";
+        }
+      }
+      description
+        "An optional alarm type that can be used with vendor specific alarms.
+        See Table 12.2.1.4.4.6-1 in 3GPP 28.532 for definitions.
+
+        WG4 common O-RU alarms have pre-defined alarm types, see Annex A of
+        O-RAN.WG4.MP.O";
+    }
+  }
+
+  container active-alarm-list {
+    list active-alarms {
+      uses alarm;
+
+      description
+        "List of currently active alarms";
+    }
+    config false;
+
+    description
+      "List of currently active alarms. An alarm is removed from this table when the state transitions to clear.";
+  }
+
+  container historical-alarm-list {
+    if-feature HISTORICAL-ALARM-LIST;
+    description
+      "an optional container to notify the event subscriber of historical alarms information. When the O-RU
+       is reset, the alarm entries from historical-alarm-list will be purged. O-RU vendor can make this
+       list persistent optionally.";
+
+    list historical-alarms {
+      uses alarm;
+
+      config false;
+      description
+        "List of historical alarm events. This list only captures the alarm events when <is-cleared>=TRUE.";
+    }
+
+  }
+
+  notification alarm-notif {
+    uses alarm;
+
+    description
+      "Notification sent on initial alarm creation, as well as any time the alarm changes state, including clear";
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fm@2019-02-04.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fm@2019-02-04.yang
deleted file mode 100644
index 5142418..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-fm@2019-02-04.yang
+++ /dev/null
@@ -1,166 +0,0 @@
-module o-ran-fm {
-  yang-version 1.1;
-  namespace "urn:o-ran:fm:1.0";
-  prefix "o-ran-fm";
-
-  import ietf-yang-types {
-    prefix yang;
-    revision-date 2013-07-15;
-  }
-
-  organization "O-RAN Alliance";
-
-  contact
-    "www.o-ran.org";
-
-  description
-    "This module defines alarm reporting mechanism.
-
-    Copyright 2019 the O-RAN Alliance.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the above disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the above disclaimer in the documentation
-    and/or other materials provided with the distribution.
-    * Neither the Members of the O-RAN Alliance nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.";
-
-  revision "2019-02-04" {
-    description
-      "version 1.0.0
-
-      1) imported model from xRAN
-      2) changed namespace and reference from xran to o-ran";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-  grouping alarm {
-    description
-      "Gropuping which can uniquely identify alarm";
-
-    leaf fault-id {
-      type uint16;
-      mandatory true;
-
-      description
-        "Fault specific Id that identifies the fault.";
-    }
-
-    leaf fault-source {
-      type string {
-        length "1..255";
-      }
-      mandatory true;
-
-      description
-        "Represents the Object or source that is suspected to be faulty.";
-    }
-
-    list affected-objects {
-      leaf name {
-        type string {
-          length "1..255";
-        }
-        mandatory true;
-
-        description
-          "Represents the Object or source that is suspected to be affected by this fault";
-      }
-      min-elements 1;
-      max-elements 100;
-
-      description
-        "List of affected-objects";
-    }
-
-    leaf fault-severity {
-      type enumeration {
-        enum CRITICAL {
-          description
-            "Critical alarm means that this device is not able to perform any further service";
-        }
-        enum MAJOR {
-          description
-            "Major alarm appeared on the device";
-        }
-        enum MINOR {
-          description
-            "Minor alarm appeared on the device";
-        }
-        enum WARNING {
-          description
-            "Warning is being reported by the device";
-        }
-      }
-      mandatory true;
-
-      description
-        "Fault severity defines the severity level of the fault. A notification, whose fault severity has the value 'warning',
-        is a special type of an alarm notification. For these alarm notifications,
-        the Master Agent does not expect to receive a clear alarm notification.";
-    }
-
-    leaf is-cleared {
-      type boolean;
-      mandatory true;
-
-      description
-        "Fault state determines the type of the event. Not used if faultSeverity is WARNING.";
-    }
-
-    leaf fault-text {
-      type string {
-        length "0..255";
-      }
-
-      description
-        "Textual description of the fault.";
-    }
-
-    leaf event-time {
-      type yang:date-and-time;
-      mandatory true;
-
-      description
-        "Timestamp to indicate the time when the fault is detected/cleared.";
-    }
-  }
-
-  container active-alarm-list {
-    list active-alarms {
-      uses alarm;
-
-      description
-        "List of currenty active alarms";
-    }
-    config false;
-
-    description
-      "List of currently active alarms. An alarm is removed from this table when the state transitions to clear.";
-  }
-
-  notification alarm-notif {
-    uses alarm;
-
-    description
-      "Notification sent on initial alarm creation, as well as any time the alarm changes state, including clear";
-  }
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-hardware@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-hardware.yang
similarity index 66%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-hardware@2020-12-10.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-hardware.yang
index f62a405..17b3b46 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-hardware@2020-12-10.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-hardware.yang
@@ -22,9 +22,9 @@
     "www.o-ran.org";
 
   description
-    "This module defines the YANG definitions for managng the O-RAN hardware.
+    "This module defines the YANG definitions for managing the O-RAN hardware.
 
-     Copyright 2020 the O-RAN Alliance.
+     Copyright 2021 the O-RAN Alliance.
 
      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
      AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -50,15 +50,51 @@
      contributors may be used to endorse or promote products derived from
      this software without specific prior written permission.";
 
- revision "2020-12-10" {
-  description
-    "version 5.0.0
+  revision "2022-12-05" {
+   description
+     "version 10.1.0
 
-    1) added date-last-service leaf used in pnfRegistration";
+     1) Clarifications for Network Energy Saving";
 
-  reference "ORAN-WG4.O1.0-v05.00";
-//update reference
- }
+   reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) introduction of O-RU connector functionality.
+      2) fixing constraints";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 5.2.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 5.1.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2020-12-10" {
+    description
+      "version 5.0.0
+
+      1) added date-last-service leaf used in pnfRegistration";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
 
   revision "2020-04-17" {
     description
@@ -68,9 +104,9 @@
       2) added new identities for PA and FPGA";
 
     reference "ORAN-WG4.M.0-v03.00";
-   }
+  }
 
-   revision "2019-07-03" {
+  revision "2019-07-03" {
     description
       "version 1.1.0
 
@@ -79,16 +115,16 @@
       compatible to version 1.0.0";
 
     reference "ORAN-WG4.M.0-v01.00";
-   }
+  }
 
   revision "2019-02-04" {
-   description
-     "version 1.0.0
+    description
+      "version 1.0.0
 
-     1) imported model from xRAN
-     2) changed namespace and reference from xran to o-ran";
+      1) imported model from xRAN
+      2) changed namespace and reference from xran to o-ran";
 
-   reference "ORAN-WG4.M.0-v01.00";
+    reference "ORAN-WG4.M.0-v01.00";
   }
 
   feature ENERGYSAVING {
@@ -136,7 +172,7 @@
       measurements on a per class basis";
   }
 
-    identity O-RU-FPGA {
+  identity O-RU-FPGA {
     base O-RU-COMPONENT;
     description
       "Used in /hw:/hardware/hw:component/hw:class to represent
@@ -144,26 +180,57 @@
       measurements on a per class basis";
   }
 
+  identity O-RU-CONNECTOR {
+    base ianahw:hardware-class;
+    description
+      "This identity is applicable if the hardware class is some sort
+      of O-RU connector.";
+  }
+
+  identity O-RU-ANTENNA-CONNECTOR {
+    base O-RU-CONNECTOR;
+    description
+      "This identity is applicable if the hardware class is some sort
+      of connector capable of interfacing between an O-RU and some
+      antenna function.";
+  }
+
+  identity O-RU-FEEDER {
+    base O-RU-ANTENNA-CONNECTOR;
+    description
+      "This identity is applicable if the hardware class is an
+      antenna feeder.";
+  }
+
+  identity O-RU-BF-CAL {
+    base O-RU-ANTENNA-CONNECTOR;
+    description
+      "This identity is applicable if the hardware class is for
+      beamforming calibration.";
+  }
+
   // typedef statements
   typedef energysaving-state {
     type enumeration {
       enum UNKNOWN {
-        description "The Radio Unit is unable to report energy saving state.";
+        description
+          "The O-RU is unable to report its energy saving state.";
       }
       enum SLEEPING {
         description
-          "The Radio Unit is in a sleep state. The NETCONF management plane
-           connection is functioning. Other functions and hardware which are
-           not needed for management plane may be in energy saving mode.";
+          "The O-RU is in energy saving state. In this mode M-Plane connection is active. Depending
+          on the O-RU's design - other planes, functions and hardware components which are not needed
+          by the O-RU in energy saving state can be disabled or switched off by the O-RU autonomously.";
       }
       enum AWAKE {
         description
-          "The Radio Unit is not in an energy saving state.";
+          "The O-RU is not in an energy saving state.";
       }
     }
     description
-      "new typedef since ietf-hardware only covers pwer-state
-      for redundancy purposes and not power saving operations.";
+      "New typedef since ietf-hardware only covers power-state
+      for redundancy purposes, not to indicate energy saving operations.
+      For details please see O-RAN WG4 M-Plane specification, clause 9.1.3 'Modify state'";
   }
 
   typedef availability-type {
@@ -183,7 +250,7 @@
            in a degraded state.
 
            Used for example, when the equipment has M identical sub-components and
-           when a critical alarm is imapcting only N subcomponents, where N<M.";
+           when a critical alarm is impacting only N subcomponents, where N<M.";
       }
       enum FAULTY {
         description
@@ -198,7 +265,7 @@
        to serve traffic.";
   }
 
-  // common WG4 and croos-WG augmentations using O-RAN-RADIO identity
+  // common WG4 and cross-WG augmentations using O-RAN-RADIO identity
 
   augment "/hw:hardware/hw:component" {
     when "(derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-RADIO')) or
@@ -230,20 +297,29 @@
     leaf energy-saving-enabled {
       if-feature "ENERGYSAVING";
       type boolean;
-      config true;
       default false;
       description
-        "This parameter can enable O-RAN unit to be switched to energy
-         saving mode.
-         TRUE indicates to switch the energy saving mode.
-         FALSE indicates to cancel the energy saving mode.
-         At the energy saving mode, all power of whole O-RAN unit becomes
-         lowest level whereas M-plane is still available";
+        "This parameter enables the O-RU to enter into energy saving state if there is no need to keep processing
+         paths working.
+         TRUE is used to permit the O-RU to enter energy saving state. If there is still need keep any
+         processing path, functions or HW components working.
+         The O-RU shall keep necessary processing paths working if there is any [tr]x-array-carrier with
+         'state' != DISABLED.
+         There may be also additional implementation-specific conditions which may require keeping processing paths,
+         functions or HW components working.
+         FALSE is used to prohibit the O-RU to enter or to stay in energy saving state. This value is also used
+         to awake the O-RU from sleeping when the O-RU is already in energy saving state. Setting this value has
+         no effect on [tr]x-array-carrier::active.
+         When the O-RU enters energy saving state, the O-RU shall reduce its power consumption to the lowest level
+         whilst M-plane remains available. Ongoing Netconf session(s) shall not be affected when the O-RU enters
+         energy saving state.
+         The O-RU uses RO node power-state to inform if the O-RU is in energy saving state.
+         NETCONF client should set energy-saving-enabled to FALSE to ensure O-RU is ready to immediately activate a carrier.";
     }
     leaf dying-gasp-support {
       type boolean;
-      config false;
       default false;
+      config false;
       description
         "indicates whether the O-RU supports the dying gasp
         capability";
@@ -289,8 +365,8 @@
       config false;
       description
         "The current power saving state for this component.
-        Note - hw:/hardware/compnent/state/standby-state defined in RFC 4268 is
-        used for redundancy purposes and not power saving operations.";
+        Note - hw:/hardware/component/state/standby-state defined in RFC 4268 is
+        used for redundancy purposes but not for power saving operations.";
     }
     leaf availability-state {
       type availability-type;
@@ -303,12 +379,25 @@
     }
   }
 
+  augment "/hw:hardware/hw:component" {
+    when "(derived-from-or-self(hw:class, 'o-ran-hw:O-RU-ANTENNA-CONNECTOR'))";
+    description "New O-RAN parameters for O-RAN Antenna connectors";
+
+    leaf connector-label {
+      type string;
+      config false;
+      description
+        "the label used to identify the connector on an O-RU ";
+    }
+  }
+
 
 // augmentations to Notifications
 
   augment "/hw:hardware-state-oper-enabled"  {
     description "new availability state";
     leaf availability-state {
+    if-feature hw:hardware-state;
       type leafref {
         path "/hw:hardware/hw:component/hw:state/o-ran-hw:availability-state";
       }
@@ -320,6 +409,7 @@
   augment "/hw:hardware-state-oper-disabled"  {
     description "new availability state";
     leaf availability-state {
+     if-feature hw:hardware-state;
       type leafref {
         path "/hw:hardware/hw:component/hw:state/o-ran-hw:availability-state";
       }
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-interfaces@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-interfaces.yang
similarity index 94%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-interfaces@2020-12-10.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-interfaces.yang
index 78de3d1..f2678b3 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-interfaces@2020-12-10.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-interfaces.yang
@@ -38,10 +38,10 @@
     "www.o-ran.org";
 
   description
-    "This module defines the YANG definitions for managng the O-RAN
+    "This module defines the YANG definitions for managing the O-RAN
      interfaces.
 
-    Copyright 2020 the O-RAN Alliance.
+    Copyright 2021 the O-RAN Alliance.
 
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -67,6 +67,24 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2021-12-01" {
+    description
+      "version 5.2.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 5.1.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
   revision "2020-12-10" {
     description
       "version 5.0.0
@@ -228,6 +246,11 @@
     }
   }
 
+  rpc reset-interface-counters {
+    description
+      "Management plane triggered restart of the interface counters.";
+  }
+
 // Cross Working Group Augmentations Follow
 
 // Cross Working Group augmentations for basic Ethernet leafs
@@ -301,7 +324,7 @@
           "The base interface must have VLAN tagging enabled.";
       }
       description
-        "The base interface for the VLAN sub-interafce.";
+        "The base interface for the VLAN sub-interface.";
     }
     leaf vlan-id {
       type uint16 {
@@ -312,7 +335,7 @@
     }
   }
 
-// Cross Working Group augmention for both ethernetCsmacd and l2vlan interfaces
+// Cross Working Group augmentation for both ethernetCsmacd and l2vlan interfaces
 
   augment "/if:interfaces/if:interface" {
     when "(if:type = 'ianaift:ethernetCsmacd') or
@@ -331,7 +354,7 @@
     }
   }
 
-// Cross Working Group augmention to ietf-ip covering DSCP for M-Plane
+// Cross Working Group augmentation to ietf-ip covering DSCP for M-Plane
 
 augment "/if:interfaces/if:interface/ip:ipv4" {
   description "augments for IPv4 based M-Plane transport";
@@ -355,11 +378,11 @@
 // WG4 Augmentation for basic Ethernet leafs
 
   augment "/if:interfaces/if:interface" {
-    if-feature ALIASMAC-BASED-CU-PLANE;
     when "if:type = 'ianaift:ethernetCsmacd'" {
       description
         "Applies to WG4 Ethernet interfaces for alias MAC based CU-Plane";
     }
+    if-feature ALIASMAC-BASED-CU-PLANE;
     description
       "Augment the interface model with parameters for
       base Ethernet interface";
@@ -373,7 +396,7 @@
 
   }
 
-// WG4 Augmention for both ethernetCsmacd and l2vlan interfaces
+// WG4 Augmentation for both ethernetCsmacd and l2vlan interfaces
 
   augment "/if:interfaces/if:interface" {
     when "(if:type = 'ianaift:ethernetCsmacd') or
@@ -420,7 +443,7 @@
     }
   }
 
-// WG4 specific augmention to ietf-ip covering DSCP for CUS Plane
+// WG4 specific augmentation to ietf-ip covering DSCP for CUS Plane
 
   augment "/if:interfaces/if:interface/ip:ipv4" {
     if-feature UDPIP-BASED-CU-PLANE;
@@ -482,9 +505,4 @@
   }
 // interface-grouping insert - end;
 
-
-  rpc reset-interface-counters {
-    description
-      "Management plane triggered restart of the interface counters.";
-  }
 }
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa-operations@2019-07-03.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa-operations.yang
similarity index 90%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa-operations@2019-07-03.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa-operations.yang
index 0410c7f..6a3bd75 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa-operations@2019-07-03.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa-operations.yang
@@ -15,7 +15,7 @@
   description
     "This module defines the operations for DFS measurement.
 
-    Copyright 2019 the O-RAN Alliance.
+    Copyright 2021 the O-RAN Alliance.
 
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -41,6 +41,25 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2021-12-01" {
+    description
+      "version 1.3.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 1.2.0
+
+      1) removing non-ASCII characters from model";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+
   revision "2019-07-03" {
     description
       "version 1.1.0
@@ -64,23 +83,23 @@
     type enumeration {
       enum BAND_46_SUBBAND_A {
         description
-          "46a: 5150 MHz 	-	5250 MHz";
+          "46a: 5150 MHz - 5250 MHz";
       }
       enum BAND_46_SUBBAND_B {
         description
-          "46b: 5250 MHz 	-	5350 MHz";
+          "46b: 5250 MHz - 5350 MHz";
       }
       enum BAND_46_SUBBAND_C {
         description
-          "46c: 5470 MHz 	-	5725 MHz";
+          "46c: 5470 MHz - 5725 MHz";
       }
       enum BAND_46_SUBBAND_D1 {
         description
-          "46d1: 5725 MHz 	-	5850 MHz";
+          "46d1: 5725 MHz - 5850 MHz";
       }
       enum BAND_46_SUBBAND_D2 {
         description
-          "46d2: 5850 MHz 	-	5925 MHz";
+          "46d2: 5850 MHz - 5925 MHz";
       }
     }
     description
@@ -102,7 +121,7 @@
       type uint16;
       units kilohertz;
       description
-        "This value indicates carrier center frequency in KHz";
+        "This value indicates carrier centre frequency in KHz";
     }
   }
 
@@ -133,7 +152,7 @@
       type uint16;
       units kilohertz;
       description
-        "This value indicates carrier center frequency for which the result is computed in KHz.";
+        "This value indicates carrier centre frequency for which the result is computed in KHz.";
     }
 
     leaf occupancy-ratio {
@@ -215,7 +234,7 @@
           type uint16;
           units kilohertz;
           description
-            "This value indicates carrier center frequency in KHz";
+            "This value indicates carrier centre frequency in KHz";
         }
         leaf status {
           type enumeration {
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa@2019-07-03.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa.yang
similarity index 83%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa@2019-07-03.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa.yang
index 31e625a..d178408 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa@2019-07-03.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-laa.yang
@@ -5,7 +5,6 @@
 
   import o-ran-module-cap {
     prefix "mcap";
-    revision-date 2020-12-10;
   }
 
   organization "O-RAN Alliance";
@@ -17,7 +16,7 @@
     "This module defines the configuration for Carrier-selection and dynamic frequency selection (DFS).
     Also this module defines operations for DFS measurement.
 
-    Copyright 2019 the O-RAN Alliance.
+    Copyright 2021 the O-RAN Alliance.
 
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -43,6 +42,16 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-08-15" {
+    description
+      "version 1.2.0
+
+      1) clarified description for laa-ending-dwpts-supported and
+         laa-starting-in-second-slot-supported.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
   revision "2019-07-03" {
     description
       "version 1.1.0
@@ -79,10 +88,18 @@
 
     leaf multi-carrier-type {
       type enumeration {
-        enum A1;
-        enum A2;
-        enum B1;
-        enum B2;
+        enum A1 {
+          description "multi-carrier type A1";
+        }
+        enum A2{
+          description "multi-carrier type A2";
+        }
+        enum B1{
+          description "multi-carrier type B1";
+        }
+        enum B2{
+          description "multi-carrier type B2";
+        }
       }
       description
         "This value indicates the list of multi carrier types which as per the document,
@@ -104,13 +121,13 @@
     leaf laa-ending-dwpts-supported {
       type boolean;
       description
-        "This value indicates whether LAA ending in DwPTS is supported.";
+        "This value is configured by NETCONF client(O-DU) and indicates whether LAA ending in DwPTS is supported by O-DU.";
     }
 
     leaf laa-starting-in-second-slot-supported {
       type boolean;
       description
-        "This value indicates whether LAA starting in second slot is supported";
+        "This value is configured by NETCONF client(O-DU) and indicates whether LAA starting in second slot is supported by O-RU";
     }
   }
 
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-lbm@2019-02-04.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-lbm.yang
similarity index 94%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-lbm@2019-02-04.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-lbm.yang
index 359257c..f7a4b8a 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-lbm@2019-02-04.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-lbm.yang
@@ -26,7 +26,7 @@
     the O-RAN Radio loop-back protocol (IEEE 802.1ag).
     It is derived from MEF-38 (Service OAM Fault Management YANG Modules, April 2012)
 
-    Copyright 2019 the O-RAN Alliance.
+    Copyright 2021 the O-RAN Alliance.
 
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -52,6 +52,24 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2021-12-01" {
+    description
+      "version 1.2.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 1.1.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
   revision "2019-02-04" {
     description
       "version 1.0.0
@@ -117,6 +135,7 @@
 // grouping
 
   grouping md-group {
+    description "the maintenance domain grouping";
     list maintenance-domain {
       key "id";
       description
@@ -223,7 +242,7 @@
           list maintenance-association-end-point {
             key "mep-identifier";
             description
-              "The list of Maintenance association End Points in a specific Maintance
+              "The list of Maintenance association End Points in a specific Maintenance
               Association.";
 
             leaf mep-identifier {
@@ -301,7 +320,7 @@
 // top level container
   container md-data-definitions {
     description
-      "Data definitions related to the maineance domains used for supporting
+      "Data definitions related to the maintenance domains used for supporting
       Ethernet loopback connectivity checks";
     uses md-group;
   }
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-module-cap@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-module-cap.yang
similarity index 71%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-module-cap@2020-12-10.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-module-cap.yang
index fac5bc0..284b600 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-module-cap@2020-12-10.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-module-cap.yang
@@ -5,7 +5,11 @@
 
   import o-ran-compression-factors {
     prefix "cf";
-    revision-date 2020-08-10;
+    revision-date 2021-12-01;
+  }
+
+  import o-ran-wg4-features {
+    prefix "or-feat";
   }
 
   organization "O-RAN Alliance";
@@ -17,7 +21,7 @@
     "This module defines the module capabilities for
     the O-RAN Radio Unit.
 
-    Copyright 2020 the O-RAN Alliance.
+    Copyright 2021 the O-RAN Alliance.
 
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -43,6 +47,67 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-12-05" {
+    description
+      "version 11.0.0
+
+      1) Deprecation of power-related capabilities and addition of min-gain
+      2) se6 rb bit handling for rbgSize equal to zero";
+
+    reference "ORAN-WG4.M.0-v11.00";
+  }
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) clarified description statements for component carrier
+      2) style guide corrections
+      3) introducing new feature for ACK NACK feedback
+      4) deprecation for params in band-capabilities";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2022-04-18" {
+    description
+      "version 9.0.0
+
+      1) aded new parameter st6-4byte-alignment-required";
+
+    reference "ORAN-WG4.M.0-v09.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) Typographical corrections in descriptions.
+      2) deprecation of compression-method-grouping";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2021-07-26" {
+    description
+      "version 7.0.0
+
+      1) Added support for external antenna delay handling ";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 5.1.0
+
+      1) typographical corrections in descriptions.
+      2) removed non-ASCII characters
+      3) clarified number-of-ru-ports_dl/ul description ";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
   revision "2020-12-10" {
     description
       "version 5.0.0
@@ -78,8 +143,8 @@
       5) Enable PRACH preamble formats supported to be signalled by O-RU
       6) adding support for selective RE sending
       7) supporting new section extension for grouping multiple ports
-      8) signalling to enable O-RU to ndicate is requires unique ecpri sequence id
-        for eAxC_IDs serving for UL and DL for the same carrier component";
+      8) signalling to enable O-RU to indicate is requires unique ecpri sequence id
+        for eAxC_IDs serving for UL and DL for the same Component Carrier";
 
     reference "ORAN-WG4.M.0-v03.00";
   }
@@ -201,24 +266,26 @@
   }
 
   grouping compression-method-grouping {
+    status deprecated;
     description
-      "Grouping for compression method.";
+      "Grouping for compression method.
+       Note: This grouping is deprecated. Please use the one from o-ran-compression-factors module.";
 
     leaf compression-method {
       type enumeration {
         enum BLOCK_FLOATING_POINT {
           description
-            "Block floating point compression and decompression will be used";
+            "Block floating-point compression and decompression will be used";
         }
 
         enum BLOCK_SCALING {
           description
-            "Block scaling compression and decompresion will be used";
+            "Block scaling compression and decompression will be used";
         }
 
         enum U_LAW {
           description
-            "u-Law compression and decompresion method will be used";
+            "u-Law compression and decompression method will be used";
         }
 
         enum BEAMSPACE {
@@ -233,7 +300,7 @@
 
         enum BLOCK-FLOATING-POINT-SELECTIVE-RE-SENDING {
           description
-            "block floating point with selective re sending
+            "block floating-point with selective re sending
             compression and decompression will be used";
         }
         enum MODULATION-COMPRESSION-SELECTIVE-RE-SENDING {
@@ -243,7 +310,7 @@
         }
       }
       description
-        "Compresion method which can be supported by the O-RU.
+        "Compression method which can be supported by the O-RU.
         An O-RU may further refine the applicability of compression
         methods per endpoint using o-ran-uplane-conf.yang model";
     }
@@ -251,20 +318,20 @@
 
   grouping sub-band-max-min-ul-dl-frequency {
     description
-    "Grouping for defining max and min supported frequency - dl and ul.";
+    "Grouping for defining max and min supported frequency - DL and UL.";
 
     leaf max-supported-frequency-dl {
       type uint64;
       description
         "This value indicates Maximum supported downlink frequency in the
-        LAA subband. Value unit is Hz.";
+        LAA sub-band. Value unit is Hz.";
     }
 
     leaf min-supported-frequency-dl {
       type uint64;
       description
         "This value indicates Minimum supported downlink frequency in the
-        LAA subband. Value unit is Hz.";
+        LAA sub-band. Value unit is Hz.";
     }
   }
 
@@ -283,7 +350,7 @@
       type boolean;
 
       description
-        "Informs if O-RU supports realtime variable bit with";
+        "Informs if O-RU supports real-time variable bit with";
     }
 
     list compression-method-supported {
@@ -303,7 +370,7 @@
         "List of supported compression methods by O-RU
          Note: if O-RU supports different compression methods per endpoint
                then please refer to endpoints to have information what
-               exactly is supported on paticular endpoint";
+               exactly is supported on particular endpoint";
     }
 
     leaf variable-bit-width-per-channel-supported {
@@ -341,6 +408,29 @@
         Note - little endian support does not invalidate bigendian support.";
     }
 
+    leaf st6-4byte-alignment-required {
+      type boolean;
+      default false;
+
+      description
+        "An optional flag indicating whether O-RU requires 4-byte aligned Section Type 6 or not.
+        If 4-byte aligned Section Type 6 is required, O-RU shall set this flag to 'true'.
+        If the leaf is ommitted or set to 'false', the O-RU operates using 1-byte aligned Section Type 6.
+        An O-DU recovering a value of 'true' shall ensure that Section Type 6 shall be
+        sent with 4-byte aligned messages, as described in clause 'Elements for the C-Plane Protocol' of
+        the CUS-Plane specification.";
+    }
+
+    leaf se6-rb-bit-supported {
+      type boolean;
+      default false;
+
+      description
+        "If this leaf node has a value 'true', then O-DU may use the 'rb' bit, in which case
+        when the O-DU sets the 'rb' bit to one, it shall also set the value of 'rbgsize' to zero and the
+        O-RU shall interpret the value of 'rb' bit as applicable to this data section. Refer 'SE 6: Non-contiguous
+        PRB allocation in time and frequency domain' requirement #3 of the CUS-Plane specification.";
+    }
   }
 
   grouping scs-a-b {
@@ -361,7 +451,7 @@
   grouping ul-mixed-num-required-guard-rbs {
     description
       "Required number of guard resource blocks for the combination of
-      subcarrier spacing values for uplink";
+      sub-carrier spacing values for uplink";
     uses scs-a-b;
     leaf number-of-guard-rbs-ul{
       type uint8;
@@ -375,7 +465,7 @@
   grouping dl-mixed-num-required-guard-rbs {
     description
       "Required number of guard resource blocks for the combination of
-      subcarrier spacing values for uplink";
+      sub-carrier spacing values for uplink";
     uses scs-a-b;
     leaf number-of-guard-rbs-dl{
       type uint8;
@@ -419,43 +509,65 @@
     leaf number-of-ru-ports-ul {
       type uint8;
       description
-        "Assuming all endpoints support time-managed traffic AND non-time-managed traffic (choice is as per configuration)
-         - the number of O-RU ports for uplink is the product of number of spatial streams (leaf number-of-spatial-streams) and number of numerologies O-RU supports.
-         For example, if the number of spatial streams is 4 then the number of O-RU ports is 8 when PUSCH and PRACH are processed in the different endpoints.
+        "Assuming all endpoints support time-managed traffic AND non-time-managed traffic AND static channel configuration (choice is as per configuration)
+         - the upper bound of the number of O-RU ports for uplink which is derived from number of spatial streams or layers (leaf number-of-spatial-streams)
+         and associated numerology O-RU supports.
+         Numerology capability per spatial stream or layer is based on eaxc id description in CUS specification section entitled
+         'ecpriRtcid / ecpriPcid (real time control data / IQ data transfer message series identifier)'
+         For example, if O-RU supports for each of 'N' spatial streams or layers 'M' numerologies (as it applies to PUSCH and PRACH), number of ports is N * M.
          In case there are specific endpoints that support non-time-managed traffic only
-         - the number of O-RU ports calculated with above mentioned equation is extended by number of endpoints supporting only non-time-managed traffic.";
+         - the number of O-RU ports calculated is extended by number of endpoints supporting only non-time-managed traffic.
+         Additionally, if there are specific endpoints that support static channel configuration only(e.g. static PRACH)
+         - the number of O-RU ports calculated above is further extended by number of endpoints supporting static channel configuration only.";
     }
     leaf number-of-ru-ports-dl {
       type uint8;
       description
         "Assuming all endpoints support time-managed traffic AND non-time-managed traffic (choice is as per configuration)
-         - the number of O-RU ports for downlink is the product of number of spatial streams (leaf number-of-spatial-streams) and number of numerologies O-RU supports.
-         For example, if the number of spatial streams is 4 then the number of O-RU ports is 8 when SSB and non-SSB are processed in the different endpoints.
-         In case there are specific endpoints that support non-time-managed traffic only
-         - the number of O-RU ports calculated with above mentioned equation is extended by number of endpoints supporting only non-time-managed traffic.";
+         - the upper bound of the number of O-RU ports for downlink which is derived from number of spatial streams or layers (leaf number-of-spatial-streams)
+         and associated numerology O-RU supports.
+         Numerology capability per spatial stream or layer is based on eaxc id description in CUS specification section entitled
+         'ecpriRtcid / ecpriPcid (real time control data / IQ data transfer message series identifier)'
+         For example, if O-RU supports for each of 'N' spatial streams or layers 'M' numerologies, number of ports is N * M.
+         In case there are specific endpoints that support non-time-managed traffic only.
+         - the number of O-RU ports calculated with above mentioned equation is extended by number of endpoints supporting only non-time-managed traffic";
     }
 
     leaf number-of-spatial-streams {
       type uint8;
       description
         "This value indicates the number of spatial streams supported at O-RU for DL and UL.
-         For DL, it is same as the number of antenna ports specified in 3GPP TS38.214, Section 5.2 and 3GPP TS36.213, Section 5.2.";
+         For DL, it is same as the number of antenna ports specified in 3GPP TS38.214, Section 'UE procedure for reporting channel state information (CSI)'
+         and 3GPP TS36.213, Section 'UE procedure for reporting Channel State Information (CSI)'.";
+    }
+
+    leaf max-num-bands {
+      type uint16;
+      description "maximum number of bands supported by the O-RU";
     }
 
     leaf max-power-per-pa-antenna {
       type decimal64{
         fraction-digits 4;
       }
+      status deprecated;
       description
-        "This value indicates Maximum Power per PA per antenna. Value unit is dBm.";
+        "This value indicates Maximum Power per PA per antenna. Value unit is dBm.
+
+        The parameter is deprecated. min-gain and max-gain define constraints related to
+        TX power budget, as defined in CUS-Plane, clause 8.1.3.3.";
     }
 
     leaf min-power-per-pa-antenna {
       type decimal64{
         fraction-digits 4;
       }
+      status deprecated;
       description
-        "This value indicates Minimum Power per PA per antenna. Value unit is dBm.";
+        "This value indicates Minimum Power per PA per antenna. Value unit is dBm.
+
+        The parameter is deprecated. min-gain and max-gain define constraints related to
+        TX power budget, as defined in CUS-Plane, clause 8.1.3.3.";
     }
 
     leaf fronthaul-split-option {
@@ -477,7 +589,7 @@
       key "scs-a scs-b";
       description
         "List of required number of guard resource blocks
-        for the combination of subcarrier spacing values for downlink";
+        for the combination of sub-carrier spacing values for downlink";
 
       uses ul-mixed-num-required-guard-rbs;
     }
@@ -485,7 +597,7 @@
       key "scs-a scs-b";
       description
         "List of required number of guard resource blocks
-        for the combination of subcarrier spacing values for uplink";
+        for the combination of sub-carrier spacing values for uplink";
 
       uses dl-mixed-num-required-guard-rbs;
     }
@@ -508,7 +620,7 @@
       leaf max-num-tx-eaxc-ids-per-group {
         type uint8;
         description
-          "Maximum number of member-tx-eaxc-id in single tx-eaxc-id-group supported by O-RU.";
+         "Maximum number of eAxC IDs per tx-eaxc-id-group supported by O-RU, where each group is a union of the 'member-tx-eaxc-id's and a 'representative-tx-eaxc-id'.";
       }
       leaf max-num-rx-eaxc-id-groups {
         type uint8;
@@ -518,7 +630,7 @@
       leaf max-num-rx-eaxc-ids-per-group {
         type uint8;
         description
-          "the maximum number of eAxC IDs per rx-eaxc-id-group.";
+          "Maximum number of eAxC IDs per rx-eaxc-id-group supported by O-RU, where each group is a union of the 'member-rx-eaxc-id's and a 'representative-rx-eaxc-id'.";
       }
     }
 
@@ -533,13 +645,13 @@
       type boolean;
       default false;
       description
-        "Parameter informs if O-RU expects unique ecpri sequence id for eAxC_IDs serving
-        for UL and DL for the same carrier component.
+        "Parameter informs if O-RU expects unique eCPRI sequence id for eAxC_IDs serving
+        for UL and DL for the same Component Carrier.
 
         Note: If this is set to TRUE, the O-DU can decide to either use different eAxC_IDs for UL and
         DL or can generate unique sequence ID per eAxC_ID.
 
-        TAKE NOTE: This leaf is backwards compatible from an O-RU persepctive BUT an O-RU that
+        TAKE NOTE: This leaf is backwards compatible from an O-RU perspective BUT an O-RU that
         sets this leaf to TRUE may result in incompatibilities when operating with an O-DU
         designed according to the O-RAN CUS-Plane Specification v02.00, e.g., if the O-DU is
         incapable of using different eAxC values between UL and DL";
@@ -565,8 +677,8 @@
       leaf coupling-via-frequency-and-time-with-priorities-optimized {
         type boolean;
         description
-          "Coupling via Frequency and time with priorities optimized; see methods of coupling of C-plane and U-plane in CUS-Plane specification.
-          Note: If coupling-via-frequency-and-time-with-priorities-optmized is 'true' then coupling-via-frequency-and-time shall also be 'true'.";
+          "Coupling via Frequency and time with priorities optimised; see methods of coupling of C-plane and U-plane in CUS-Plane specification.
+          Note: If coupling-via-frequency-and-time-with-priorities-optimized is 'true' then coupling-via-frequency-and-time shall also be 'true'.";
       }
     }
 
@@ -577,10 +689,45 @@
          Only in case this leaf is present and its value is TRUE, O-RU supports U-Plane messages
          containing udCompLen field in section header.";
     }
+
+    leaf ext-ant-delay-capability {
+      if-feature "or-feat:EXT-ANT-DELAY-CONTROL";
+      type enumeration {
+         enum PER-ARRAY-CARRIER {
+          description
+            "Informs that the O-RU supports the configuration of different t-da-offset on different tx-array-carriers,
+             and different t-au-offset on different rx-array-carriers";
+        }
+
+         enum PER-ARRAY {
+          description
+            "Informs that the O-RU supports the configuration of different t-da-offset on different tx-array-carriers
+             only when those tx-array-carriers belong to different tx-arrays,
+             and the O-RU supports the configuration of different t-au-offset on different rx-array-carriers
+             only when those rx-array-carriers belong to different rx-arrays";
+        }
+
+        enum PER-O-RU {
+          description
+            "Informs that the O-RU only supports the configuration of a common t-da-offset across all tx-array-carriers,
+             and a common t-au-offset across all rx-array-carriers";
+        }
+      }
+      description
+        "This property informs what kind of capability the O-RU supports to be configured with external antenna delay.";
+    }
+
+    leaf nack-supported {
+      type boolean;
+      description
+        "This value indicates if O-RU supports sending NACK feedback if a section extension for ACK/NACK request is received,
+        If O-RU reports supporting section extension for ACK/NACK request (section extension 22) and ACK/NACK feedback (section type 8), ACK feedback shall always be supported,
+        while NACK feedback is optionally supported according to 'nack-supported'";
+    }
   }
 
   grouping sub-band-info {
-    description "container for collection of leafs for LAA subband 46";
+    description "container for collection of leafs for LAA sub-band 46";
     list sub-band-frequency-ranges {
       key sub-band;
       description "frequency information on a per sub-band basis";
@@ -601,7 +748,7 @@
       description
         "Maximum O-RU buffer size in Kilobytes (KB) per CC. This parameter is
          needed at the O-DU to know how much data can be sent in advance
-         and stored at the O-RU to address the LBT uncertainity.";
+         and stored at the O-RU to address the LBT uncertainty.";
     }
 
     leaf maximum-processing-time {
@@ -610,7 +757,7 @@
       description
         "Maximum O-RU Processing time in microseconds at the O-RU to handle the
          received/transmitted packets from/to the O-DU. This parameter is
-         needed at the O-DU to determine the time where it needs to send
+         needed at the O-DU to determine the time when it needs to send
          the data to the O-RU.";
     }
 
@@ -755,7 +902,7 @@
     container sub-band-info {
       when "../band-number = '46'";
       if-feature "o-ran-module-cap:LAA";
-      description "container for collection of leafs for LAA subband 46";
+      description "container for collection of leafs for LAA sub-band 46";
       uses sub-band-info;
     }
 
@@ -764,12 +911,15 @@
 
     leaf max-num-component-carriers {
       type uint8;
-      description "maximum number of component carriers supported by the O-RU";
+      description "maximum number of component carriers supported by the O-RU. This parameter is the
+      cumulative value of 'max-num-carriers-dl' and 'max-num-carriers-ul'";
     }
 
     leaf max-num-bands {
       type uint16;
-      description "maximum number of bands supported by the O-RU";
+      status deprecated;
+      description "maximum number of bands supported by the O-RU.
+      Parameter moved to ru-capabilities, hence deprecated";
     }
 
     leaf max-num-sectors {
@@ -781,34 +931,48 @@
       type decimal64{
         fraction-digits 4;
       }
+      status deprecated;
       description
-        "This value indicates Maximum Power per band per antenna. Value unit is dBm.";
+        "This value indicates Maximum Power per band per antenna. Value unit is dBm.
+
+        The parameter is deprecated. min-gain and max-gain define constraints related to
+        TX power budget, as defined in CUS-Plane, clause 8.1.3.3.";
     }
 
     leaf min-power-per-antenna {
       type decimal64{
         fraction-digits 4;
       }
+      status deprecated;
       description
-        "This value indicates Minimum Power per band per antenna. Value unit is dBm.";
+        "This value indicates Minimum Power per band per antenna. Value unit is dBm.
+
+        The parameter is deprecated. min-gain and max-gain define constraints related to
+        TX power budget, as defined in CUS-Plane, clause 8.1.3.3.";
     }
 
     leaf codebook-configuration_ng {
         type uint8;
+        status deprecated;
         description
-          "This parameter informs the precoder codebook_ng that are used for precoding";
+          "This parameter informs the precoder codebook_ng that are used for precoding.
+          Parameter deprecated since antenna topology already specified in [tr]x-array";
       }
 
     leaf codebook-configuration_n1 {
         type uint8;
+        status deprecated;
         description
-          "This parameter informs the precoder codebook_n1 that are used for precoding";
+          "This parameter informs the precoder codebook_n1 that are used for precoding
+          Parameter deprecated since antenna topology already specified in [tr]x-array";
       }
 
     leaf codebook-configuration_n2 {
         type uint8;
+        status deprecated;
         description
-          "This parameter informs the precoder codebook_n2 that are used for precoding";
+          "This parameter informs the precoder codebook_n2 that are used for precoding
+          Parameter deprecated since antenna topology already specified in [tr]x-array";
     }
   }
 
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-mplane-int@2019-07-03.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-mplane-int.yang
similarity index 79%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-mplane-int@2019-07-03.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-mplane-int.yang
index 84452cd..7209e2e 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-mplane-int@2019-07-03.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-mplane-int.yang
@@ -21,10 +21,10 @@
     "www.o-ran.org";
 
   description
-    "This module defines the YANG definitions for managng the O-RAN Radio Unit
+    "This module defines the YANG definitions for managing the O-RAN Radio Unit
      management plane interface.
 
-     Copyright 2019 the O-RAN Alliance.
+     Copyright 2021 the O-RAN Alliance.
 
      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
      AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -50,6 +50,34 @@
      contributors may be used to endorse or promote products derived from
      this software without specific prior written permission.";
 
+   revision "2021-12-01" {
+     description
+       "version 7.1.0
+
+          1) typographical corrections";
+
+     reference "ORAN-WG4.M.0-v07.00";
+   }
+
+  revision "2021-07-26" {
+    description
+      "version 7.0.0
+
+         1) new leaf for recommended scan interval  ";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+  revision "2021-03-22" {
+        description
+          "version 6.0.0
+
+          1) typographical corrections in descriptions.
+          2) new functionality to report TLS information ";
+
+        reference "ORAN-WG4.M.0-v06.00";
+  }
+
   revision "2019-07-03" {
        description
          "version 1.1.0
@@ -83,10 +111,11 @@
   // Groupings
 
   grouping mplane-group {
+    description "mplane grouping";
     container searchable-mplane-access-vlans-info {
       description
-        "These parameters shall be stored by the equipment in reset persistant memory
-        to enable it to be re-used to optimize VALN discovery procerdures.";
+        "These parameters shall be stored by the equipment in reset persistent memory
+        to enable it to be re-used to optimize VLAN discovery procedures.";
       leaf-list searchable-access-vlans {
         type vlan-id;
         description
@@ -109,6 +138,18 @@
             in VLAN scan procedure";
         }
       }
+      leaf scan-interval {
+          type uint16;
+          units seconds;
+          default 60;
+          description
+            "The O-RU should repeatedly search using untagged frames and previously configured
+            VLANs whenever it searches across the full range of VLAN IDs.The O-RU controller is
+            able to recommend the maximum interval between repeatedly scanning for M-Plane connectivity
+            on the untagged and configured VLANs using this timer schema node.
+
+            The O-RU shall store this schem-node in reset persistent memory.";
+      }
     }
 
     container m-plane-interfaces {
@@ -182,6 +223,19 @@
           description "The configured SSH server port number";
         }
       }
+      container m-plane-tls-ports {
+        description "leafs for managing TLS ports";
+        leaf call-home-tls-port {
+          type inet:port-number;
+          default 4335;
+          description "The configured call home server port number";
+        }
+        leaf server-tls-port {
+          type inet:port-number;
+          default 6513;
+          description "The configured TLS server port number";
+        }
+      }
     }
     container configured-client-info {
       description
@@ -225,7 +279,7 @@
   // Top Level Container
 
   container mplane-info {
-    description "top level container for management plane information";
+    description "top-level container for management plane information";
 
     uses mplane-group;
   }
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-operations@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-operations.yang
similarity index 79%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-operations@2020-12-10.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-operations.yang
index 4339fde..22ac668 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-operations@2020-12-10.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-operations.yang
@@ -29,7 +29,7 @@
   description
     "This module defines the YANG model used for O-RAN operations.
 
-    Copyright 2019 the O-RAN Alliance.
+    Copyright 2021 the O-RAN Alliance.
 
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -55,6 +55,44 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) added current-datetime leaf";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) typographical corrections in descriptions
+      2) new schema node maximum-simultaneous-netconf-sessions";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2021-07-26" {
+    description
+      "version 7.0.0
+
+      1) new leaf for max-call-home-attempts";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 6.0.0
+
+      1) typographical corrections in descriptions.
+      2) new descriptions for NETCONF/TLS call home";
+
+    reference "ORAN-WG4.M.0-v06.00";
+  }
+
   revision "2020-12-10" {
     description
       "version 5.0.0
@@ -113,6 +151,7 @@
   }
 
   grouping operational-group {
+    description "operational grouping";
 
 // Container used for WG4 specific declarations
     container declarations {
@@ -146,14 +185,14 @@
       }
 
       list supported-header-mechanism {
-        description "list provides information regarding type and version of headers.";
         key protocol;
+        description "list provides information regarding type and version of headers.";
 
         leaf protocol {
           type enumeration {
             enum ECPRI {
               description
-                "Indicates that an O-RU supports the ecpri header format
+                "Indicates that an O-RU supports the eCPRI header format
                 for the C/U plane";
             }
             enum IEEE-1914-3 {
@@ -195,6 +234,14 @@
         type version;
         description "Parameter provides highest pnfRegistrationFields version device is compliant with.";
       }
+      leaf maximum-simultaneous-netconf-sessions {
+        type uint8 {
+          range "2..max";
+        }
+        default 2;
+        description
+          "The maximum number of simultaneous NETCONF sessions able to be supported by the O-RU";
+      }
     }
 
     container operational-state {
@@ -209,12 +256,12 @@
           }
           enum SUPERVISION-WATCHDOG {
             description
-              "Equipment restarted because it's supervision wathcdog timer wasn't reset
+              "Equipment restarted because it's supervision watchdog timer wasn't reset
               by a NETCONF client (inferring loss of NETCONF connectivity)";
           }
           enum MPLANE-TRIGGERED-RESTART {
             description
-              "Equipment restarted because of an M-plane issued  rpc";
+              "Equipment restarted because of an M-plane issued RPC";
           }
           enum SOFTWARE-FAILURE {
             description
@@ -236,6 +283,18 @@
         description
           "The system date and time when the system last restarted.";
       }
+      leaf current-datetime {
+        type yang:date-and-time;
+        description
+          "An optional leaf to enable the O-RU to report its current system date and time.
+
+          O-RUs that support a realtime clock may use it to set its current-datetime.
+          O-RUs that support GNSS may use GNSS derived time to set its current-datetime.
+          Other O-RUs can set the current-datetime from PTP synchronization.
+
+          An O-RU may ommit the leaf if its current-datetime is not set, e.g., using one
+          of the examples listed above.";
+      }
     }
 
 
@@ -277,18 +336,31 @@
       description
         "A common timer used by the O-RAN equipment to trigger the repeated call
         home procedure to all identified call home servers to which the O-RAN
-        equipment has not already an established SSH connection.
+        equipment has not already an established NETCONF connection.
+
+        Irrespective of the name of the leaf, the timer applies eaqually to
+        call home procedures using NETCONF/SSH and those using NETCONF/TLS.
 
         A value of 0 means that the O-RAN equipment shall disable operation
         of the timer triggered NETCONF call home procedure.";
     }
+
+    leaf max-call-home-attempts {
+      type uint8 {
+        range "0 .. 20";
+      }
+      description
+        "A counter to repeat Call Home procedures.
+        Note: In case counter is set with value zero
+        O-RU shall not repeat Call Home procedure";
+    }
   }
 
 // Top level container
 
   container operational-info{
     description
-      "a collection of operational infor for the O-RU";
+      "a collection of operational information for the O-RU";
     uses operational-group;
 
   }
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-performance-management.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-performance-management.yang
new file mode 100644
index 0000000..eac120f
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-performance-management.yang
@@ -0,0 +1,1863 @@
+module o-ran-performance-management {
+  yang-version 1.1;
+  namespace "urn:o-ran:performance-management:1.0";
+  prefix "o-ran-pm";
+
+  import ietf-yang-types {
+    prefix "yang-types";
+    revision-date 2013-07-15;
+  }
+
+  // import identifier for O-RU
+  import ietf-hardware {
+    prefix "hw";
+  }
+
+  // import ietf-interface
+  import ietf-interfaces {
+    prefix "if";
+  }
+
+  // import ietf-inet-type
+  import ietf-inet-types {
+    prefix "inet";
+  }
+
+  // import port-number
+  import o-ran-interfaces {
+    prefix "o-ran-int";
+  }
+
+  // import ru-mac-address, o-du-mac-address and vlan-id
+  import o-ran-processing-element {
+    prefix "o-ran-elements";
+  }
+
+  import o-ran-file-management {
+    prefix "o-ran-file-mgmt";
+  }
+
+  import iana-hardware {
+    prefix ianahw;
+  }
+
+  import o-ran-uplane-conf {
+    prefix "up";
+  }
+
+  import o-ran-wg4-features {
+     prefix "feat";
+  }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the configuration for performance measurement for
+    transceiver and rx-window measurement objects.
+
+    NOTE, whereas this YANG model may define support of schema nodes associated
+    with O-RU measurements as optional, the CU-Plane specification may further
+    specify whether, according to a particular version of the CU plane
+    specification, which specific measurements are mandatory to support
+    from an O-RU perspective. In such a situation, the definition of mandatory
+    performance counters in sub-section 7.1 of the CU-plane specification shall
+    take precedence.
+
+    Copyright 2021 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision 2022-08-15 {
+    description
+      "version 8.1.0
+
+       1) style guide corrections.
+       2) changed import prefix for o-ran-file-management.";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+  revision 2021-12-01 {
+    description
+      "version 8.0.0
+
+       1) typographical corrections in descriptions.
+       2) deprecating leaf-list frequency-table and replacing with frequency-bin-table
+       3) Add support for multiple transport-session-type per O-RU";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+  revision 2021-07-26 {
+    description
+      "version 7.0.0
+
+       1) added new EPE measurements - VOLTAGE and CURRENT
+       2) added data-direction to rx-window measurements
+       3) added ability to report multiple measurements in notifications
+       4) added new symbol TD-RSSI measurements
+       5) added FTPES file upload support ";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+  revision 2021-03-22 {
+    description
+      "version 5.1.0
+
+       1) typographical corrections in descriptions";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision 2020-12-10 {
+    description
+      "version 5.0.0
+
+       1) container epe-stats is changed deprecated
+       2) New list epe-statistics and measurement-object is added as key
+       3) bug fix by pyang --lint";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2020-04-17" {
+    description
+      "version 3.0.0
+
+      1) updated top-level model description concerning optionality of measurements
+      2) added new rx window counters
+      3) added new TX stats measurements
+      4) added new EPE measurements
+      5) fixed typo in enumeration - TX_POPWER
+      6) introduced config false data indicating which type of measurements are supported";
+
+    reference "ORAN-WG4.M.0-v03.00";
+  }
+
+  revision "2019-07-03" {
+    description
+      "version 2.0.0
+
+      1) added new measurement objects for QSFP
+      2) backward compatible changes to correct sFTP Server Authentication.
+      3) simplifying file management and authentication to reuse from o-ran-file-management module
+      4) minor fixes according to lack of descriptions and reference
+      5) added to descriptions to indicate applicability of leafs and Containers
+      to separate O-RAN use cases
+      6) backward compatible changes to introduce groupings.";
+
+    reference "ORAN-WG4.M.0-v02.00";
+  }
+
+  revision "2019-02-04" {
+    description
+      "version 1.0.0
+
+      1) imported model from xRAN
+      2) changed namespace and reference from xran to o-ran";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+
+  feature GRANULARITY-TRANSPORT-MEASUREMENT {
+    description
+      "This feature indicates that the O-RU supports an optional object-unit TRANSPORT in rx-window-measurement.";
+  }
+
+  feature GRANULARITY-EAXC-ID-MEASUREMENT {
+    description
+      "This feature indicates that the O-RU supports an optional object-unit EAXC_ID in rx-window-measurement.";
+  }
+
+  grouping start-and-end-time {
+    description
+      "Definition for start and end time for an event";
+
+    leaf start-time {
+      type yang-types:date-and-time;
+      description
+        "Start time for measurement of object stats";
+    }
+    leaf end-time {
+      type yang-types:date-and-time;
+      description
+        "End time for measurement of object stats";
+    }
+  }
+
+  grouping epe-measurement-result-grouping {
+    description
+      "energy, power and environmental measurement-result are listed for O-RU";
+
+    list epe-measurement-result {
+      key "object-unit-id";
+      config false;
+      description "energy power and environmental measurement results";
+      leaf object-unit-id {
+        type leafref {
+          path "/hw:hardware/hw:component/hw:class";
+        }
+
+        description
+          "the hardware component type is used for the object-unit-id for the
+           EPE measurements. For example, the object-unit-id will be set to
+           or-hw:O-RAN-RADIO if the measurement applies to the complete O-RU
+           self-contained sub-system.
+
+           Other hardware-classes include: or-hw:O-RU-POWER-AMPLIFIER,
+           ianahw:power-supply, ianahw:fan, ianahw:cpu";
+      }
+      leaf min {
+        type decimal64 {
+          fraction-digits 4;
+        }
+
+        description
+          "minimum value for the measurement-object";
+      }
+      leaf max {
+        type decimal64 {
+          fraction-digits 4;
+        }
+        description
+          "maximum value for the measurement-object";
+      }
+      leaf average {
+        type decimal64 {
+          fraction-digits 4;
+        }
+        description
+          "average value of the measurement-object";
+      }
+    }
+  }
+
+  grouping transceiver-measurement-result-grouping {
+    description
+      "transceiver-measurement-result are listed per port-number";
+
+    list transceiver-measurement-result {
+      key "object-unit-id";
+      config false;
+      leaf object-unit-id {
+        type leafref {
+          path "/if:interfaces/if:interface/o-ran-int:port-reference/o-ran-int:port-number";
+        }
+
+        description
+          "port-number is used for the object-unit-id for the
+           transceiver-measurement-result, for which object-unit is
+           PORT_NUMBER only";
+      }
+      container min {
+        description
+          "minimum value with recorded time are included for the
+           measurement-object";
+
+        leaf value {
+          type decimal64 {
+            fraction-digits 4;
+          }
+
+          description
+            "minimum value for the measurement-object";
+        }
+        leaf time {
+          type yang-types:date-and-time;
+
+          description
+            "recorded time for the minimum value";
+        }
+      }
+      container max {
+        description
+        "maximum value with recorded time are included for the
+         measurement-object";
+
+        leaf value {
+          type decimal64 {
+            fraction-digits 4;
+          }
+
+          description
+            "maximum value for the measurement-object";
+        }
+        leaf time {
+          type yang-types:date-and-time;
+
+          description
+            "recorded time for the maximum value";
+        }
+      }
+      container first {
+        description
+          "first value with the recorded time are included for the
+           measurement-object";
+
+        leaf value {
+          type decimal64 {
+            fraction-digits 4;
+          }
+
+          description
+            "first value of the measurement-object";
+        }
+        leaf time {
+          type yang-types:date-and-time;
+
+          description
+            "recorded time for the first value";
+        }
+      }
+      container latest {
+        description
+          "latest value with the recorded time are included for the
+           measurement-object";
+
+        leaf value {
+          type decimal64 {
+            fraction-digits 4;
+          }
+
+          description
+            "latest value of the measurement-object";
+        }
+        leaf time {
+          type yang-types:date-and-time;
+
+          description
+            "recorded time for the latest value";
+        }
+      }
+      leaf-list frequeny-table {
+        type uint32;
+        status deprecated;
+        description
+          "frequency-table for the measurement-object are included per bin.
+           The configuration parameters for this frequency-table are defined
+           by bin-count, lower-bound and upper-bound";
+      }
+      list frequency-bin-table {
+        key bin-id;
+        leaf bin-id {
+           type uint32;
+           description "Sequence number of the bin";
+        }
+        leaf value {
+           type uint32;
+           description "count corresponding to the bin";
+         }
+        description
+          "frequency-table for the measurement-object are included per bin.
+           The configuration parameters for this frequency-table are defined
+           by bin-count, lower-bound and upper-bound";
+      }
+      description
+        "List of transceiver measurement results";
+    }
+  }
+
+  grouping rx-window-measurement-result-grouping{
+    description
+      "Group of measurement results for rx window measurements";
+
+    choice object-unit-id {
+      config false;
+      case RU {
+        leaf name{
+          type leafref {
+            path "/hw:hardware/hw:component/hw:name";
+          }
+
+          description
+            "the name of O-RU module or one of its child ports
+            in ietf-hardware/component is used when O-RU is selected as
+            object-unit for the reception window stats.";
+        }
+        leaf count {
+          type uint64;
+          mandatory true;
+
+          description
+            "the number of data packet are counted for the reception
+             window stats per O-RU.";
+        }
+      }
+
+      case TRANSPORT {
+        list tr-measured-result{
+          leaf name{
+            type leafref{
+              path "/o-ran-elements:processing-elements/o-ran-elements:ru-elements/o-ran-elements:name";
+            }
+
+            description
+              "the name of ru-elements in o-ran-processing-elements
+               when TRANSPORT is selected as object-unit for the reception
+               window stats.";
+          }
+
+          leaf transport-session-type {
+            if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+            type enumeration {
+              enum ETH-INTERFACE {
+                description "VLAN based CUS Transport ";
+              }
+              enum UDPIP-INTERFACE {
+                description "UDP/IP based CUS Transport ";
+              }
+              enum ALIASMAC-INTERFACE{
+                description "Alias MAC address based CUS Transport ";
+              }
+            }
+            description
+              "transport session type used when an O-RU is configured with multiple processing elements of different transport session types,
+               in which case it is used for referencing a processing element in 'transport-qualified-name'";
+          }
+
+          leaf transport-qualified-name {
+            if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+            type leafref {
+              path "/o-ran-elements:processing-elements/o-ran-elements:additional-transport-session-type-elements[o-ran-elements:transport-session-type = current()/../transport-session-type]/o-ran-elements:ru-elements/o-ran-elements:name";
+            }
+            description
+               "the name of ru-elements in o-ran-processing-elements
+               when TRANSPORT is selected as object-unit for the reception
+               window stats. Used when the processing element is configured
+               by the list 'additional-transport-session-type-elements'";
+          }
+
+          leaf count {
+            type uint64;
+            mandatory true;
+
+            description
+              "the number of data packet are counted for the reception
+               window stats.";
+          }
+
+          description
+            "the number of data packet are counted for the reception
+             window stats per TRANSPORT.";
+        }
+      }
+
+      case EAXC_ID {
+        list eaxc-measured-result {
+          leaf eaxc-id{
+            type uint16;
+
+            description
+              "eaxc-id is used
+               when EAXC_ID is selected as object-unit for the reception
+               window stats.
+               EAXC_ID consists of DU-Port-Id, Band-Selector, CC-id and
+               RU-Port-Id to be used in header of C/U-plane data packet.";
+          }
+          leaf count {
+            type uint64;
+            mandatory true;
+
+            description
+              "the number of data packet are counted for the reception
+               window stats.";
+          }
+          leaf data-direction {
+            type enumeration {
+              enum DL {
+                description
+                  "reported measurement refers to control plane messages with dataDirection bit = 1.";
+              }
+              enum UL {
+                description
+                  "reported measurement refers to control plane messages with dataDirection bit = 0.";
+              }
+              enum DLUL {
+                description
+                  "reported measurement refers to control plane messages irrespective of dataDirection bit setting.";
+              }
+            }
+            description
+              "An optional leaf used when reporting rx window measurement associated with
+              control plane messages. See CUS-Plane Specification for more details of the dataDirection bit.
+
+              When not present and reporting rx window measurement associated with control plane messages,
+              the receiving entity can assume that the reported control plane rx window measurement refers
+              to control plane messages irrespective of dataDirection bit setting.
+
+              Can be ignored when received in rx window measurements not corresponding to control plane messages.";
+          }
+          leaf transport-name {
+            type leafref{
+              path "/o-ran-elements:processing-elements/o-ran-elements:ru-elements/o-ran-elements:name";
+            }
+
+            description
+              "the name of ru-elements in o-ran-processing-elements for the
+               transport information corresponding to this eaxc-id";
+          }
+
+          leaf transport-session-type {
+            if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+            type enumeration {
+              enum ETH-INTERFACE {
+                description "VLAN based CUS Transport ";
+              }
+              enum UDPIP-INTERFACE {
+                description "UDP/IP based CUS Transport ";
+              }
+              enum ALIASMAC-INTERFACE{
+                description "Alias MAC address based CUS Transport ";
+              }
+            }
+            description
+              "transport session type used when an O-RU is configured with multiple processing elements of different transport session types,
+               in which case it is used for referencing a processing element in 'transport-qualified-name'";
+          }
+
+          leaf transport-qualified-name {
+          if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+            type leafref {
+              path "/o-ran-elements:processing-elements/o-ran-elements:additional-transport-session-type-elements[o-ran-elements:transport-session-type = current()/../transport-session-type]/o-ran-elements:ru-elements/o-ran-elements:name";
+            }
+            description
+               "the name of ru-elements in o-ran-processing-elements for the
+               transport information corresponding to this eaxc-id.
+               Used when the processing element is configured
+               by the list 'additional-transport-session-type-elements'";
+          }
+
+          description
+            "the number of data packet are counted for the reception
+             window stats per EAXC-ID.";
+        }
+      }
+
+      description
+        "measurement-result for the reception window stats depends on the
+         configured object-unit, RU, TRANSPORT or EAXC_ID";
+    }
+  }
+
+  grouping tx-measurement-result-grouping{
+    description
+      "Group of measurement results for tx stats";
+
+    choice object-unit-id {
+      config false;
+      case RU {
+        leaf name{
+          type leafref {
+            path "/hw:hardware/hw:component/hw:name";
+          }
+
+          description
+            "the name of O-RU module or one of its child ports
+            in ietf-hardware/component is used when O-RU is selected as
+            object-unit for the reception window stats.";
+        }
+        leaf count {
+          type uint64;
+          mandatory true;
+
+          description
+            "the number of data packet are counted for the tx stats per O-RU.";
+        }
+      }
+
+      case TRANSPORT {
+        list tr-measured-result{
+          leaf name{
+            type leafref{
+              path "/o-ran-elements:processing-elements/o-ran-elements:ru-elements/o-ran-elements:name";
+            }
+
+            description
+              "the name of ru-elements in o-ran-processing-elements
+               when TRANSPORT is selected as object-unit for the tx stats.";
+          }
+
+          leaf transport-session-type {
+            if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+            type enumeration {
+              enum ETH-INTERFACE {
+                description "VLAN based CUS Transport ";
+              }
+              enum UDPIP-INTERFACE {
+                description "UDP/IP based CUS Transport ";
+              }
+              enum ALIASMAC-INTERFACE{
+                description "Alias MAC address based CUS Transport ";
+              }
+            }
+            description
+              "transport session type used when an O-RU is configured with multiple processing elements of different transport session types,
+               in which case it is used for referencing a processing element in 'transport-qualified-name'";
+          }
+
+          leaf transport-qualified-name {
+            if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+            type leafref {
+              path "/o-ran-elements:processing-elements/o-ran-elements:additional-transport-session-type-elements[o-ran-elements:transport-session-type = current()/../transport-session-type]/o-ran-elements:ru-elements/o-ran-elements:name";
+            }
+            description
+               "the name of ru-elements in o-ran-processing-elements
+               when TRANSPORT is selected as object-unit for the tx stats.
+               Used when the processing element is configured
+               by the list 'additional-transport-session-type-elements'";
+          }
+
+          leaf count {
+            type uint64;
+            mandatory true;
+
+            description
+              "the number of data packet are counted for the tx stats.";
+          }
+
+          description
+            "the number of data packet are counted for the tx stats per TRANSPORT.";
+        }
+      }
+
+      case EAXC_ID {
+        list eaxc-measured-result {
+          leaf eaxc-id{
+            type uint16;
+
+            description
+              "eaxc-id is used
+               when EAXC_ID is selected as object-unit for the tx stats.
+               EAXC_ID consists of DU-Port-Id, Band-Selector, CC-id and
+               RU-Port-Id to be used in header of C/U-plane data packet.";
+          }
+          leaf count {
+            type uint64;
+            mandatory true;
+
+            description
+              "the number of data packet are counted for the tx stats.";
+          }
+          leaf transport-name {
+            type leafref{
+              path "/o-ran-elements:processing-elements/o-ran-elements:ru-elements/o-ran-elements:name";
+            }
+
+            description
+              "the name of ru-elements in o-ran-processing-elements for the
+               transport information corresponding to this eaxc-id";
+          }
+
+          leaf transport-session-type {
+            if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+            type enumeration {
+              enum ETH-INTERFACE {
+                description "VLAN based CUS Transport ";
+              }
+              enum UDPIP-INTERFACE {
+                description "UDP/IP based CUS Transport ";
+              }
+              enum ALIASMAC-INTERFACE{
+                description "Alias MAC address based CUS Transport ";
+              }
+            }
+            description
+              "transport session type used when an O-RU is configured with multiple processing elements of different transport session types,
+               in which case it is used for referencing a processing element in 'transport-qualified-name'";
+          }
+
+          leaf transport-qualified-name {
+            if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+            type leafref {
+              path "/o-ran-elements:processing-elements/o-ran-elements:additional-transport-session-type-elements[o-ran-elements:transport-session-type = current()/../transport-session-type]/o-ran-elements:ru-elements/o-ran-elements:name";
+            }
+            description
+               "the name of ru-elements in o-ran-processing-elements for the
+               transport information corresponding to this eaxc-id.
+               Used when the processing element is configured
+               by the list 'additional-transport-session-type-elements'";
+          }
+
+          description
+            "the number of data packet are counted for the tx stats per EAXC-ID.";
+        }
+      }
+
+      description
+        "measurement-result for the tx stats depends on the
+         configured object-unit, RU, TRANSPORT or EAXC_ID";
+    }
+  }
+
+  grouping symbol-rssi-measurement-result-grouping {
+
+    description
+      "symbol-rssi-measurement-result is the time domain RSSI per symbol,
+      the reference point for the TD-RSSI shall be the antenna connector of the O-RU.
+      The value of Received Signal Strength Indicator(RSSI) per rx-array-carrier per configured OFDM symbol is measured.
+      the RSSI shall be calculated as the linear average of the total received power observed in the configured
+      OFDM symbol in the measurement bandwidth from all sources including co-channel serving and non-serving cells,
+      adjacent channel interference, thermal noise etc., over the total number of antenna elements of the array.
+      The unit of the reported RSSI is dBm.
+      If analogue or hybrid beamforming is enabled, the beamId used for RSSI measurement is:
+        - When there is allocation of a beamId in this symbol, O-RU use that beamId for RSSI measurement;
+        - When there is no allocation of a beamId in this symbol, it is up to O-RU implementation, for example,
+          the O-RU can choose to use a common beamId or use a previous allocated beamId";
+
+    list symbol-rssi-measurement-result {
+      key "object-unit-id";
+      config false;
+      leaf object-unit-id {
+        type leafref {
+          path "/up:user-plane-configuration/up:rx-array-carriers/up:name";
+        }
+
+        description
+          "rx-array-carrier is used for the object-unit-id for the
+           symbol-rssi-measurement-result, for which object-unit is RX-ARRAY-CARRIER only.
+           this measurement is only supported by the rx-array-carriers which are configured with single numerology.
+           an O-RU shall reject any configuration for an object-unit-id that references a mixed numerology array carrier.";
+      }
+
+      list per-symbol-index-result {
+        key "symbol-index";
+        description
+          "the symbol index for the measurement result";
+
+        leaf symbol-index{
+          type uint16;
+
+          description
+            "symbol-index is the symbol indexes within a configured 'period', These symbols include
+               - all UL symbols within a configured number of slots if measurement-object is ALL-UL-SYMBOLS,
+                 and the UL symbols are decided by 'configurable-tdd-pattern', 'static-srs-configuration', 'static-prach-configuration',
+                 and 'dataDirection' in the C-plane messages.
+               - configured symbols by 'symbol-index' within a configured 'period' if measurement-object is CONFIGURED-SYMBOLS,
+                 If a c-plane message indicates a symbol within the 'symbol-index' list to be a DL symbol,
+                 O-RU shall not measure RSSI on this symbol";
+        }
+
+        container min {
+          description
+            "minimum value with recorded time are included for the
+            measurement-object";
+
+          leaf value {
+            type decimal64 {
+              fraction-digits 1;
+            }
+            units dBm;
+            description
+              "minimum value for the TD-RSSI measurement in dBm";
+          }
+        }
+
+        container max {
+          description
+          "maximum value with recorded time are included for the
+           measurement-object";
+
+          leaf value {
+            type decimal64 {
+              fraction-digits 1;
+            }
+            units dBm;
+            description
+              "maximum value for the TD-RSSI measurement in dBm";
+          }
+        }
+
+        container avg {
+          description
+          "average value with recorded time are included for the
+           measurement-object";
+
+          leaf value {
+            type decimal64 {
+              fraction-digits 1;
+            }
+            units dBm;
+            description
+              "the dBm value of the linear average of TD-RSSI [Watt] value across the symbols with same symbol-index
+               if same symbol-index occurs multiple times within a given measurement interval.";
+          }
+        }
+
+        leaf-list frequency-table {
+          type uint32;
+          status deprecated;
+          description
+          "frequency-table for the measurment-object are included per bin.
+           The configuration parameters for this frequency-table are defined
+           by bin-count, lower-bound and upper-bound";
+        }
+
+        list frequency-bin-table {
+          key bin-id;
+          leaf bin-id {
+             type uint32;
+             description "Sequence number of the bin";
+          }
+          leaf value {
+             type uint32;
+             description "count corresponding to the bin";
+           }
+          description
+            "frequency-table for the measurement-object are included per bin.
+             The configuration parameters for this frequency-table are defined
+             by bin-count, lower-bound and upper-bound";
+        }
+      }
+      description
+         "measurement-result for the symbol-wise TD-RSSI depends on the
+          configured object-unit, RX-ARRAY-CARRIER";
+    }
+  }
+
+  grouping measurement-group {
+    description
+      "Group of measurement results";
+
+    uses measurement-capabilities;
+    leaf enable-SFTP-upload {
+      type boolean;
+      default false;
+      status deprecated;
+      description
+        "Flag to enable upload of performance measurement result files.";
+    }
+
+    leaf enable-file-upload {
+      type boolean;
+      default false;
+      description
+        "Flag to enable upload of performance measurement result files.
+        A single schema node is used to enable/disable file uploads
+        over either SFTP or FTPES with the format of the upload
+        path being used to signal which protocol to use.
+
+        An O-RU receiving this schema node should ignore the deprecated
+        enable-SFTP-upload schema node, if received.";
+    }
+
+    leaf enable-random-file-upload {
+      type boolean;
+      default false;
+      description
+        "Flag to enable upload of performance measurement result files at
+         random within file-upload-interval.";
+    }
+
+    list remote-SFTP-uploads {
+      key remote-SFTP-upload-path;
+      status deprecated;
+      description
+        "SFTP upload can be done to one or more than one SFTP servers";
+
+      leaf remote-SFTP-upload-path {
+        type inet:uri;
+        description
+          "URI specifying the remote location where the files are to be uploaded.
+          The following format is possible:
+          sftp://<username>@<host>[:<port>]/path";
+      }
+
+      uses o-ran-file-mgmt:credential-information;
+    }
+
+    list remote-file-uploads {
+      key remote-file-upload-path;
+      description
+        "file upload can be done to one or more than one file servers
+
+        An O-RU receiving this list should ignore the deprecated
+        remote-SFTP-uploads list, if received";
+
+      leaf remote-file-upload-path {
+        type inet:uri;
+        description
+          "URI specifying the remote location where the files are to be uploaded.
+
+          When upload is via SFTP, the format shall be of the form
+          sftp://<username>@<host>[:port]/path
+          When upload is via FTPES, the format shall be of the form
+          ftpes://<username>@<host>[:port]/path
+
+          Note, ftpes is not an IANA registered URI scheme, but used here to signal
+          that a file transfer should be performed over FTPES";
+      }
+
+      uses o-ran-file-mgmt:credential-information;
+    }
+
+// transceiver measurements applicable to all O-RAN HW functions
+
+    leaf transceiver-measurement-interval {
+      type uint16;
+      units seconds;
+      description
+        "measurement interval to measure the performance of transceiver
+         measurement objects periodically.";
+    }
+
+// EPE measurements applicable to all O-RAN HW functions
+
+    leaf epe-measurement-interval {
+      type uint16;
+      units seconds;
+      description
+        "measurement interval to measure the energy, power and environmental
+         measurement objects periodically.";
+    }
+
+// RX Window measurements applicable to O-RAN WG4 defined functions
+
+    leaf rx-window-measurement-interval {
+      type uint16;
+      units seconds;
+      description
+        "measurement interval to measure the performance of reception
+         window measurement objects periodically.";
+    }
+
+    leaf tx-measurement-interval {
+      type uint16;
+      units seconds;
+      description
+        "measurement interval to measure the tx (outbound)
+         window measurement objects periodically.";
+    }
+
+    leaf symbol-rssi-measurement-interval {
+      type uint16;
+      units seconds;
+      description
+        "measurement interval to measure the symbol-wise TD-RSSI measurement objects periodically.";
+    }
+
+    leaf notification-interval {
+      type uint16;
+      units seconds;
+      description
+        "notification interval for the measurement result to be notified
+         periodically.";
+    }
+
+    leaf file-upload-interval {
+      type uint16;
+      units seconds;
+      description
+        "file upload interval for the measurement result file to be
+         uploaded periodically.";
+    }
+
+    leaf max-bin-count{
+      type uint16;
+      config false;
+      mandatory true;
+      description
+        "indicates the maximum value of configurable bin-count for frequency
+         table in transceiver-measurement-objects as one of module
+         capabilities.";
+    }
+
+    list transceiver-measurement-objects {
+      key "measurement-object";
+      description
+        "optional list used to report transceiver measurements
+        applicable to any O-RAN defined hardware function";
+      leaf measurement-object {
+        type enumeration {
+          enum RX_POWER {
+            description
+              "Measured Rx input power in mW for SFP or lane 1 of QSFP";
+          }
+          enum RX_POWER_LANE_2 {
+            description
+              "Measured Rx input power in mW for lane 2 of QSFP";
+          }
+          enum RX_POWER_LANE_3 {
+            description
+              "Measured Rx input power in mW for lane 3 of QSFP";
+          }
+          enum RX_POWER_LANE_4 {
+            description
+              "Measured Rx input power in mW for lane 4 of QSFP";
+          }
+          enum TX_POPWER {
+            status deprecated;
+            description
+              "Measured Tx input power in mW.";
+          }
+          enum TX_POWER {
+            description
+              "Measured Tx input power in mW.";
+          }
+          enum TX_POWER_LANE_2 {
+            description
+              "Measured Tx input power in mW for lane 2 of QSFP";
+          }
+          enum TX_POWER_LANE_3 {
+            description
+              "Measured Tx input power in mW for lane 3 of QSFP";
+          }
+          enum TX_POWER_LANE_4 {
+            description
+              "Measured Tx input power in mW for lane 4 of QSFP";
+          }
+          enum TX_BIAS_COUNT {
+            description
+              "Internally measured Tx Bias Current in mA for SFP or lane 1 of QSFP";
+          }
+          enum TX_BIAS_COUNT_LANE_2 {
+            description
+              "Internally measured Tx Bias Current in mA for lane 2 of QSFP";
+          }
+          enum TX_BIAS_COUNT_LANE_3 {
+            description
+              "Internally measured Tx Bias Current in mA for lane 3 of QSFP";
+          }
+          enum TX_BIAS_COUNT_LANE_4 {
+            description
+              "Internally measured Tx Bias Current in mA for lane 4 of QSFP";
+          }
+          enum VOLTAGE {
+            description
+              "Internally measured transceiver supply voltage in mV";
+          }
+          enum TEMPERATURE {
+            description
+              "Internally measured optional laser temperature in degrees Celsius.";
+          }
+        }
+        description "Target metric to measure the performance";
+      }
+
+      leaf active {
+        type boolean;
+        default false;
+        description
+          "Enable/disable the performance measurement per Object";
+      }
+
+      leaf-list report-info {
+        type enumeration {
+          enum MAXIMUM {
+            description
+              "to report maximum value and its recorded time within the
+               measurement-interval for the measurement-object.";
+          }
+          enum MINIMUM {
+            description
+              "to report minimum value and its recorded time within the
+               measurement-interval for the measurement-object.";
+          }
+          enum FIRST {
+            description
+              "to report first value and its recorded time within the
+               measurement-interval for the measurement-object.";
+          }
+          enum LATEST {
+            description
+              "to report latest value and its recorded time within the
+               measurement-interval for the measurement-object.";
+          }
+          enum FREQUENCY_TABLE {
+            description
+              "to report frequency bin table within the
+               measurement-interval for the measurement-object.";
+          }
+        }
+        description "The reporting info to the measurement object.";
+      }
+
+      leaf object-unit {
+        type enumeration {
+          enum PORT_NUMBER {
+            description
+              "unit to measure the performance per object-id";
+          }
+        }
+        mandatory true;
+        description "unit to measure the performance per object-id.";
+      }
+
+      leaf function {
+        type enumeration {
+          enum RAW {
+            description
+              "the value is expressed by real value.";
+          }
+          enum LOG_10 {
+            description
+              "the value is expressed by logarithm with base 10.";
+          }
+        }
+
+        description
+          "the value to be recorded for transceiver-measurement
+           by real value or log 10.";
+      }
+
+      leaf bin-count {
+        type uint16;
+
+        description
+          "the number of bin for the frequency table.
+           This value shall be less than max-bin-count";
+      }
+
+      leaf lower-bound {
+        type decimal64 {
+          fraction-digits 4;
+        }
+
+        description
+          "the lower value of the first bin of frequency table.";
+      }
+
+      leaf upper-bound {
+        type decimal64 {
+          fraction-digits 4;
+        }
+
+        description
+          "the upper value of the last bin of frequency table.";
+      }
+      uses transceiver-measurement-result-grouping;
+// configuration and measurement result for the transceiver-measurement
+
+    }
+
+    list rx-window-measurement-objects {
+      key "measurement-object";
+      description
+        "optional list used to report RX Window measurements
+        applicable to O-RAN WG4 define O-RU functions";
+      leaf measurement-object {
+        type enumeration {
+          enum RX_ON_TIME {
+            description
+              "the number of data packets, received on time within
+               the reception window.";
+          }
+          enum RX_EARLY {
+            description
+              "the number of data packets, received before
+               the reception window.";
+          }
+          enum RX_LATE {
+            description
+              "the number of data packets, received after
+               the reception window.";
+          }
+          enum RX_CORRUPT {
+            description
+              "the number of data packets, which are corrupt or whose header
+               is incorrect.";
+          }
+          enum RX_DUPL {
+            status deprecated;
+            description
+              "the number of data packets, which is duplicated with other packets,
+               received within the measurement period.";
+          }
+          enum RX_TOTAL {
+            description
+              "the total number of received packets (data and control) within the measurement period.";
+          }
+          enum RX_ON_TIME_C {
+            description
+              "the number of control packets, received on time within
+               the reception window.";
+          }
+          enum RX_EARLY_C {
+            description
+              "the number of control packets, received before
+               the reception window.";
+          }
+          enum RX_LATE_C {
+            description
+              "the number of control packets, received after
+               the reception window.";
+          }
+          enum RX_SEQID_ERR {
+            description
+              "the number of data packets, received with an erroneous sequence ID.";
+          }
+          enum RX_SEQID_ERR_C {
+            description
+              "the number of control packets, received with an erroneous sequence ID.";
+          }
+          enum RX_ERR_DROP {
+            description
+              "The total number of inbound messages which are discarded by the receiving
+              O-RAN entity for any reason.";
+          }
+        }
+        description
+          "target reception window metric to measure the performance.";
+      }
+
+      leaf active {
+        type boolean;
+        default false;
+        description
+          "Enable/disable the performance measurement per reception window
+           measurement object.";
+      }
+
+      leaf object-unit {
+        type enumeration {
+          enum RU {
+            description
+              "the reception window stats are counted per hardware component.
+              This may be the parent 'module' or child 'port' component.";
+          }
+          enum TRANSPORT {
+            if-feature GRANULARITY-TRANSPORT-MEASUREMENT;
+            description
+              "the reception window stats are counted per transport flow.
+              When there are multiple transport flows between O-DU and O-RU,
+               e.g. multiple sets of o-du-mac-address, ru-mac-address and
+                    vlan-id, the reception window stats per transport flow
+                    are counted in this case.
+              This configuration is allowed only when O-RU supports
+              a feature GRANULARITY-TRANSPORT-MEASUREMENT.";
+          }
+          enum EAXC_ID {
+            if-feature GRANULARITY-EAXC-ID-MEASUREMENT;
+
+            description
+              "the reception window stats are counted per eAxC ID, which is
+               used in the header of received data packet.
+              This configuration is allowed only when O-RU supports
+              a feature GRANULARITY-EAXC-ID-MEASUREMENT.";
+          }
+        }
+        description
+          "unit to measure the performance per object-id.";
+      }
+
+      leaf report-info {
+        type enumeration {
+          enum COUNT {
+            description
+              "the number of data packet are counted for the reception
+               window stats.";
+          }
+        }
+        description
+          "The reporting info to the measurement object.";
+      }
+
+      uses rx-window-measurement-result-grouping;
+// configuration and measurement result for the reception window stats
+
+    }
+
+
+    list tx-measurement-objects {
+      key "measurement-object";
+      description
+        "optional list used to report TX measurements
+        applicable to O-RAN WG4 define O-RU functions";
+      leaf measurement-object {
+        type enumeration {
+          enum TX_TOTAL {
+            description
+              "the number of outbound packets (data and control), transmitted within
+               the measurement period";
+          }
+          enum TX_TOTAL_C {
+            description
+              "the number of outbound control packets, transmitted within
+               the measurement period.
+               This counter is required only if RU supports LAA/LBT capabilities.";
+          }
+        }
+        description
+          "CU-plane transmission counters";
+      }
+
+      leaf active {
+        type boolean;
+        default false;
+        description
+          "Enable/disable the measurement per measurement object.";
+      }
+
+      leaf object-unit {
+        type enumeration {
+          enum RU {
+            description
+              "the transmission stats are counted per hardware component.
+              This may be the parent 'module' or child 'port' component.";
+          }
+          enum TRANSPORT {
+            if-feature GRANULARITY-TRANSPORT-MEASUREMENT;
+            description
+              "the transmission stats are counted per transport flow.
+              When there are multiple transport flows between O-DU and O-RU,
+               e.g. multiple sets of o-du-mac-address, ru-mac-address and
+                    vlan-id, the transmission stats per transport flow
+                    are counted in this case.
+              This configuration is allowed only when O-RU supports
+              a feature GRANULARITY-TRANSPORT-MEASUREMENT.";
+          }
+          enum EAXC_ID {
+            if-feature GRANULARITY-EAXC-ID-MEASUREMENT;
+
+            description
+              "the transmission stats are counted per eAxC ID, which is
+               used in the header of received data packet.
+              This configuration is allowed only when O-RU supports
+              a feature GRANULARITY-EAXC-ID-MEASUREMENT.";
+          }
+        }
+        description
+          "unit to measure the performance per object-id.";
+      }
+
+      leaf report-info {
+        type enumeration {
+          enum COUNT {
+            description
+              "the number of data packet are counted for the reception
+               window stats.";
+          }
+        }
+        description
+          "The reporting info to the measurement object.";
+      }
+
+      uses tx-measurement-result-grouping;
+    // configuration and measurement result for the tx stats
+
+    }
+
+    list epe-measurement-objects {
+      key "measurement-object";
+      description
+        "optional list used to report energy, power and environmental
+        measurements applicable to any O-RAN defined hardware function";
+      leaf measurement-object {
+        type enumeration {
+          enum TEMPERATURE {
+            description
+              "Measured temperature in degrees Celsius";
+          }
+          enum POWER  {
+            description
+              "Measured power consumed, in watts (W)";
+          }
+          enum VOLTAGE  {
+            description
+              "Measured voltage, in volts (V)";
+          }
+          enum CURRENT  {
+            description
+              "Measured current consumption, in amperes (A)";
+          }
+        }
+        description "Target metric to measure the performance";
+      }
+
+      leaf active {
+        type boolean;
+        default false;
+        description
+          "Enable/disable the performance measurement per Object";
+      }
+
+      leaf-list report-info {
+        type enumeration {
+          enum MAXIMUM {
+            description
+              "to report maximum value and its recorded time within the
+               measurement-interval for the measurement-object.";
+          }
+          enum MINIMUM {
+            description
+              "to report minimum value and its recorded time within the
+               measurement-interval for the measurement-object.";
+          }
+          enum AVERAGE {
+            description
+              "to report average value within the
+               measurement-interval for the measurement-object.";
+          }
+        }
+        description "The reporting info to the measurement object.";
+      }
+
+
+      uses epe-measurement-result-grouping;
+    // configuration and measurement result for the epe-measurement
+
+    }
+
+    list symbol-rssi-measurement-objects {
+      key "measurement-object";
+      description
+        "optional list used to measure and report symbol-wise time domain RSSI for all UL symbols or configured symbols";
+
+      leaf measurement-object {
+        type enumeration {
+          enum ALL-UL-SYMBOLS {
+            description
+              "Measure and report symbol-rssi separately for all UL symbols in every configured number of slots (as defined by 'period' in 'symbol-rssi-measurement-objects'.
+               And the UL symbols are decided by 'configurable-tdd-pattern', 'static-srs-configuration', 'static-prach-configuration',
+               and 'dataDirection' in the C-plane messages.
+               This option is recommended for static TDD case. If this option is used in dynamic TDD case, then O-RU measures
+               only the allocates UL symbols because O-RU may not know 'candidate UL symbols' which are not allocated. ";
+          }
+
+          enum CONFIGURED-SYMBOLS {
+            description
+              "Measure and report symbol-rssi separately for all configured symbols as defined by the leaf-list 'symbol-index',
+              This can be used for non-dynamic TDD as well as dynamic TDD cases,
+              the O-RU should measure all configured symbols, irrespective of whether the UL symbol is allocated or not,
+              If a c-plane message indicates a symbol within this 'symbol-index' list to be a DL symbol,
+              O-RU shall not measure RSSI on this symbol.";
+          }
+        }
+        description "Target metric to measure the symbol-rssi";
+      }
+
+      leaf object-unit {
+        type enumeration {
+          enum RX-ARRAY-CARRIER {
+            description
+              "unit to measure the performance per object-id,
+               only the rx-array-carriers which are not configured with mixed numerology will be measured";
+          }
+        }
+        mandatory true;
+        description "unit to measure the performance per object-id.";
+      }
+
+      list per-rx-array-carrier-configuration {
+        key "rx-array-carrier";
+        description
+          "measurement configuration per rx-array-carrier to accommodate different Subcarrier Spacing
+           and TDD pattern per rx-array-carrier, and only the symbol-wise TD-RSSI of the rx-array-carriers
+           included in per-rx-array-carrier-configuration will be measured and reported";
+
+        leaf rx-array-carrier {
+          type leafref {
+            path "/up:user-plane-configuration/up:rx-array-carriers/up:name";
+          }
+          description "reference to the name of rx-array-carriers";
+        }
+
+        leaf period  {
+          type uint16;
+
+          description
+            "the number of slots that correspond to the period of a TDD-Configuration,
+             and the start point of the 1st period is subframe#0, slot#0 of the 1st even number radio frame after this configuration is received,
+             here even number radio frame is used because according to 3GPP TS 38.213, A UE expects that P1 + P2 divides 20 msec";
+        }
+
+        leaf-list symbol-index  {
+          type uint16;
+
+          description
+            "the index of the symbols within 'period'. The first symbol within the 'period is symbol-index=0, next symbol is symbol-index =1 etc.
+             This symbol-index is different from how symbolId is defined in CUS plane spec.
+             These symbols are configured for O-RU to measure and report symbol-wise rssi,
+             used only when 'measurement-object' = 'CONFIGURED-SYMBOLS'.
+             If a c-plane message indicates a symbol within this 'symbol-index' list to be a DL symbol,
+             O-RU shall not measure rssi on this symbol";
+        }
+
+        leaf active {
+          type boolean;
+          default false;
+          description
+            "Enable/disable the symbol-rssi measurement per Object";
+        }
+
+        leaf-list report-info {
+          type enumeration {
+            enum MAXIMUM {
+              description
+                "to report maximum value and its recorded time within the
+                 measurement-interval for the measurement-object.";
+            }
+            enum MINIMUM {
+              description
+                "to report minimum value and its recorded time within the
+                 measurement-interval for the measurement-object.";
+            }
+            enum AVERAGE {
+              description
+                "to report average value within the
+                 measurement-interval for the measurement-object.";
+            }
+            enum FREQUENCY_TABLE {
+              description
+                "to report frequency bin table within the
+                 measurement-interval for the measurement-object.";
+            }
+          }
+          description "The reporting info to the measurement object.";
+        }
+
+        leaf bin-count {
+          type uint16;
+
+          description
+            "the number of bin for the frequency table.
+             This value shall be less than max-bin-count";
+        }
+
+        leaf lower-bound {
+          type int16;
+          units dBm;
+          description
+            "the lower value of the first bin of frequency table.";
+        }
+
+        leaf upper-bound {
+          type int16;
+          units dBm;
+          description
+            "the upper value of the last bin of frequency table.";
+        }
+      }
+
+      uses symbol-rssi-measurement-result-grouping;
+      // configuration and measurement result for the symbol-rssi-measurement
+    }
+
+  }
+
+  grouping measurement-capabilities {
+    description "a measurement capabilities grouping";
+    container measurement-capabilitites {
+      config false;
+      description "the type of measurement objects supported by the O-RU";
+
+      list transceiver-objects {
+        key measurement-object;
+        description "list of transceiver objects";
+        leaf measurement-object {
+          type leafref {
+            path "/performance-measurement-objects/transceiver-measurement-objects/measurement-object";
+          }
+          description "a measurement object";
+        }
+      }
+      list rx-window-objects {
+        key measurement-object;
+        description "list of rx window objects";
+        leaf measurement-object {
+          type leafref {
+            path "/performance-measurement-objects/rx-window-measurement-objects/measurement-object";
+          }
+          description "a measurement object";
+        }
+      }
+      list tx-stats-objects {
+        key measurement-object;
+        description "list of tx stats objects";
+        leaf measurement-object {
+          type leafref {
+            path "/performance-measurement-objects/tx-measurement-objects/measurement-object";
+          }
+          description "a measurement object";
+        }
+      }
+      list epe-stats-objects {
+        key "measurement-object";
+        description
+          "An optional list describing the energy, power and environmental measurements supported
+          by the O-RU. Measurements are defined per hardware component.";
+        leaf measurement-object {
+          type leafref {
+            path "/performance-measurement-objects/epe-measurement-objects/measurement-object";
+          }
+          description "a measurement object";
+        }
+        leaf-list component-class {
+          type identityref {
+            base ianahw:hardware-class;
+          }
+          description
+            "An indication of the general hardware type of the
+             component for which EPE measurements are supported.";
+
+        }
+      }
+
+      list symbol-rssi-stats-objects {
+        key measurement-object;
+        description "list of symbol-wise TD-RSSI stats objects";
+        leaf measurement-object {
+          type leafref {
+            path "/performance-measurement-objects/symbol-rssi-measurement-objects/measurement-object";
+          }
+          description "a measurement object";
+        }
+      }
+    }
+  }
+
+  grouping measurement-notification {
+
+    description
+      "notification may contain measurement result for transceiver-stats
+       and/or rx-window-stats and/or tx-stats and/or epe-stats";
+    list transceiver-stats {
+      key "measurement-object";
+
+      description
+        "measurement result of transceiver-measurement per measurement-object";
+      leaf measurement-object {
+        type leafref {
+          path "/performance-measurement-objects/transceiver-measurement-objects/measurement-object";
+        }
+
+        description
+          "measurement-object for the transceiver-measurement";
+      }
+
+      uses start-and-end-time;
+      uses transceiver-measurement-result-grouping;
+
+      list multiple-transceiver-measurement-result {
+        config false;
+        description
+          "Multiple measurement results of transceiver-measurement.
+
+          The O-RU shall use this list to report one or more measurements per measurement-object in a single notification.
+
+          In addition, the O-RU shall always use the
+
+          measurement-result-stats/transceiver-stats[measurement-object]/transceiver-measurement-result
+
+          schema-node to report a single transceiver measurement-object. The O-RU should report its latest
+          transceiver measurements available. This ensures O-DUs supporting earlier versions
+          of this specification can recover the measurement.";
+
+        uses start-and-end-time;
+        uses transceiver-measurement-result-grouping;
+      }
+
+    }
+
+    list rx-window-stats {
+      key "measurement-object";
+
+      description
+        "measurement result for the reception window measurement per
+         measurement-object";
+      leaf measurement-object {
+        type leafref {
+          path "/performance-measurement-objects/rx-window-measurement-objects/measurement-object";
+        }
+
+        description
+          "measurement-object for the reception window measurement";
+      }
+      uses start-and-end-time;
+      uses rx-window-measurement-result-grouping;
+
+      list multiple-rx-window-measurement-result {
+        config false;
+        description
+          "Multiple measurement results of rx-window-measurement.
+
+          The O-RU shall use this list to report one or more measurements per measurement-object in a single notification.
+
+          In addition, the O-RU shall always use one of the
+
+          measurement-result-stats/rx-window-stats[measurement-object]/count or
+          measurement-result-stats/rx-window-stats[measurement-object]/tr-measured-result/count or
+          measurement-result-stats/rx-window-stats[measurement-object]/eaxc-measured-result/count
+
+          schema-nodes to report a single rx-window measurement-object. The O-RU should report its latest
+          rx-window measurement available. This ensures O-DUs supporting earlier versions
+          of this specification can recover the measurement.";
+
+        uses start-and-end-time;
+        uses rx-window-measurement-result-grouping;
+      }
+
+    }
+
+    list tx-stats {
+      key "measurement-object";
+
+      description
+        "measurement result for the tx stats measurement per
+         measurement-object";
+      leaf measurement-object {
+        type leafref {
+          path "/performance-measurement-objects/tx-measurement-objects/measurement-object";
+        }
+
+        description
+          "measurement-object for the tx stats measurement";
+      }
+      uses start-and-end-time;
+      uses tx-measurement-result-grouping;
+
+      list multiple-tx-measurement-result {
+        config false;
+        description
+          "Multiple measurement results of tx-measurement.
+
+          The O-RU shall use this list to report one or more measurements per measurement-object in a single notification.
+
+          In addition, the O-RU shall always use one of the
+
+          measurement-result-stats/tx-stats[measurement-object]/count or
+          measurement-result-stats/tx-stats[measurement-object]/tr-measured-result/count or
+          measurement-result-stats/tx-stats[measurement-object]/eaxc-measured-result/count
+
+          schema-nodes to report a single tx-measurement. The O-RU should report its latest
+          tx-measurement available. This ensures O-DUs supporting earlier versions
+          of this specification can recover the measurement.";
+
+        uses start-and-end-time;
+        uses tx-measurement-result-grouping;
+      }
+
+    }
+
+    container epe-stats {
+      status deprecated;
+      description
+        "container for the EPE stats measurement - deprecated because measurement object
+        isn't included";
+
+      uses start-and-end-time;
+      uses epe-measurement-result-grouping;
+
+
+    }
+
+    list epe-statistics {
+      key "measurement-object";
+
+      description
+        "measurement result for the EPE stats measurement per
+         measurement-object";
+      leaf measurement-object {
+        type leafref {
+          path "/performance-measurement-objects/epe-measurement-objects/measurement-object";
+        }
+
+        description
+          "measurement-object for the EPE stats measurement";
+      }
+      uses start-and-end-time;
+      uses epe-measurement-result-grouping;
+
+      list multiple-epe-measurement-result {
+        config false;
+        description
+          "Multiple measurement results of epe-measurement.
+
+          The O-RU shall use this list to report one or more measurements per measurement-object in a single notification.
+
+          In addition, the O-RU shall always use the
+
+          measurement-result-stats/epe-statistics[measurement-object]/epe-measurement-result/
+
+          schema-nodes to report a single epe-measurement for a measurement-object. The O-RU
+          should report its latest epe-measurement available. This ensures O-DUs supporting earlier
+          versions of this specification can recover the measurement.";
+
+        uses start-and-end-time;
+        uses epe-measurement-result-grouping;
+      }
+
+    }
+
+    list symbol-rssi-stats {
+      key "measurement-object";
+
+      description
+        "measurement result of symbol-rssi-measurement per measurement-object";
+      leaf measurement-object {
+        type leafref {
+          path "/performance-measurement-objects/symbol-rssi-measurement-objects/measurement-object";
+        }
+
+        description
+          "measurement-object for the symbol-rssi-measurement";
+      }
+
+      uses start-and-end-time;
+      uses symbol-rssi-measurement-result-grouping;
+
+      list multiple-symbol-rssi-measurement-result {
+        config false;
+        description
+          "Multiple measurement results of symbol-rssi-measurement.
+
+          The O-RU shall use this list to report one or more measurements per measurement-object in a single notification.
+
+          In addition, the O-RU shall always use one of the
+
+          measurement-result-stats/symbol-rssi-stats[measurement-object]/
+
+          schema-nodes to report a single symbol-rssi measurement for a measurement-object.
+          The O-RU should report its latest symbol-rssi measurement available.";
+
+         uses start-and-end-time;
+         uses symbol-rssi-measurement-result-grouping;
+      }
+    }
+
+  }
+
+  // Top level container
+
+  container performance-measurement-objects {
+    description
+      "configuration for performance management and measurement-result are
+       included";
+    uses measurement-group;
+  }
+
+// Notifications
+
+  notification measurement-result-stats {
+    description
+      "Notification may contain measurement results for transceiver-stats
+       and/or rx-window-stats";
+    uses measurement-notification;
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-performance-management@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-performance-management@2020-12-10.yang
deleted file mode 100644
index a1441ab..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-performance-management@2020-12-10.yang
+++ /dev/null
@@ -1,1200 +0,0 @@
-module o-ran-performance-management {
-  yang-version 1.1;
-  namespace "urn:o-ran:performance-management:1.0";
-  prefix "o-ran-pm";
-
-  import ietf-yang-types {
-    prefix "yang-types";
-    revision-date 2013-07-15;
-  }
-
-  // import idetifier for O-RU
-  import ietf-hardware {
-    prefix "hw";
-  }
-
-  // import ietf-interface
-  import ietf-interfaces {
-    prefix "if";
-  }
-
-  // import ietf-inet-type
-  import ietf-inet-types {
-    prefix "inet";
-  }
-
-  // import port-number
-  import o-ran-interfaces {
-    prefix "o-ran-int";
-  }
-
-  // import ru-mac-address, o-du-mac-address and vlan-id
-  import o-ran-processing-element {
-    prefix "o-ran-elements";
-  }
-
-  import o-ran-file-management {
-    prefix "o-ran-fm";
-  }
-
-  import iana-hardware {
-    prefix ianahw;
-  }
-
-  organization "O-RAN Alliance";
-
-  contact
-    "www.o-ran.org";
-
-  description
-    "This module defines the configuration for performance measurement for
-    transceiver and rx-window measurement objects.
-
-    NOTE, whereas this YANG model may define support of schema nodes associated
-    with O-RU measurements as optional, the CU-Plane specification may further
-    specify whether, according to a particular version of the CU plane
-    specification, which specific measurements are mandatory to support
-    from an O-RU perspective. In such a situation, the definition of mandatory
-    performance counters in sub-section 7.1 of the CU-plane specification shall
-    take precedence.
-
-    Copyright 2020 the O-RAN Alliance.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the above disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the above disclaimer in the documentation
-    and/or other materials provided with the distribution.
-    * Neither the Members of the O-RAN Alliance nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.";
-
-  revision 2020-12-10 {
-    description
-      "version 5.0.0
-
-       1) container epe-stats is changed deprecated
-       2) New list epe-statistics and measurement-object is added as key
-       3) bug fix by pyang --lint";
-
-    reference "ORAN-WG4.M.0-v05.00";
-  }
-
-  revision "2020-04-17" {
-    description
-      "version 3.0.0
-
-      1) updated top level model description concerning optionality of measurements
-      2) added new rx window counters
-      3) added new TX stats measurements
-      4) added new EPE measurements
-      5) fixed typo in enumeration - TX_POPWER
-      6) introduced config false data indicating which type of measurmeents are supported";
-
-    reference "ORAN-WG4.M.0-v03.00";
-  }
-
-  revision "2019-07-03" {
-    description
-      "version 2.0.0
-
-      1) added new measurement objects for QSFP
-      2) backward compatible changes to correct sFTP Server Authentication.
-      3) simplifying file management and authentication to reuse from o-ran-file-management module
-      4) minor fixes according to lack of descriptions and reference
-      5) added to descriptions to indicate applicability of leafs and Containers
-      to separate O-RAN use cases
-      6) backward compatible changes to introduce groupings.";
-
-    reference "ORAN-WG4.M.0-v02.00";
-  }
-
-  revision "2019-02-04" {
-    description
-      "version 1.0.0
-
-      1) imported model from xRAN
-      2) changed namespace and reference from xran to o-ran";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-
-  feature GRANULARITY-TRANSPORT-MEASUREMENT {
-    description
-      "This feature indicates that the O-RU supports an optional object-unit TRANSPORT in rx-window-measurement.";
-  }
-
-  feature GRANULARITY-EAXC-ID-MEASUREMENT {
-    description
-      "This feature indicates that the O-RU supports an optional object-unit EAXC_ID in rx-window-measurement.";
-  }
-
-  grouping start-and-end-time {
-    description
-      "Definition for start and end time for an event";
-
-    leaf start-time {
-      type yang-types:date-and-time;
-      description
-        "Start time for measurement of object stats";
-    }
-    leaf end-time {
-      type yang-types:date-and-time;
-      description
-        "End time for measurement of object stats";
-    }
-  }
-
-  grouping epe-measurement-result-grouping {
-    description
-      "energy, power and environmental measurement-result are listed for O-RU";
-
-    list epe-measurement-result {
-      key "object-unit-id";
-      config false;
-      leaf object-unit-id {
-        type leafref {
-          path "/hw:hardware/hw:component/hw:class";
-        }
-
-        description
-          "the hardware component type is used for the object-unit-id for the
-           EPE measurements. For example, the object-unit-id will be set to
-           or-hw:O-RAN-RADIO if the measurement applies to the complete O-RU
-           self-contained sub-system.
-
-           Other hardware-classes include: or-hw:O-RU-POWER-AMPLIFIER,
-           ianahw:power-supply, ianahw:fan, ianahw:cpu";
-      }
-      leaf min {
-        type decimal64 {
-          fraction-digits 4;
-        }
-
-        description
-          "minimum value for the measurment-object";
-      }
-      leaf max {
-        type decimal64 {
-          fraction-digits 4;
-        }
-        description
-          "maximum value for the measurment-object";
-      }
-      leaf average {
-        type decimal64 {
-          fraction-digits 4;
-        }
-        description
-          "average value of the measurement-object";
-      }
-    }
-  }
-
-  grouping transceiver-measurement-result-grouping {
-    description
-      "transceiver-measurement-result are listed per port-number";
-
-    list transceiver-measurement-result {
-      key "object-unit-id";
-      config false;
-      leaf object-unit-id {
-        type leafref {
-          path "/if:interfaces/if:interface/o-ran-int:port-reference/o-ran-int:port-number";
-        }
-
-        description
-          "port-number is used for the object-unit-id for the
-           transceiver-measurement-result, for which object-unit is
-           PORT_NUMBER only";
-      }
-      container min {
-        description
-          "minimum value with recorded time are included for the
-           measurement-object";
-
-        leaf value {
-          type decimal64 {
-            fraction-digits 4;
-          }
-
-          description
-            "minimum value for the measurment-object";
-        }
-        leaf time {
-          type yang-types:date-and-time;
-
-          description
-            "recorded time for the minimum value";
-        }
-      }
-      container max {
-        description
-        "maximum value with recorded time are included for the
-         measurement-object";
-
-        leaf value {
-          type decimal64 {
-            fraction-digits 4;
-          }
-
-          description
-            "maximum value for the measurment-object";
-        }
-        leaf time {
-          type yang-types:date-and-time;
-
-          description
-            "recorded time for the maximum value";
-        }
-      }
-      container first {
-        description
-          "first value with the recorded time are included for the
-           measurement-object";
-
-        leaf value {
-          type decimal64 {
-            fraction-digits 4;
-          }
-
-          description
-            "first value of the measurement-object";
-        }
-        leaf time {
-          type yang-types:date-and-time;
-
-          description
-            "recorded time for the first value";
-        }
-      }
-      container latest {
-        description
-          "latest value with the recorded time are included for the
-           measurement-object";
-
-        leaf value {
-          type decimal64 {
-            fraction-digits 4;
-          }
-
-          description
-            "latest value of the measurement-object";
-        }
-        leaf time {
-          type yang-types:date-and-time;
-
-          description
-            "recorded time for the latest value";
-        }
-      }
-      leaf-list frequeny-table {
-        type uint32;
-
-        description
-          "frequency-table for the measurment-object are included per bin.
-           The configuration parameters for this frequency-table are defined
-           by bin-count, lower-bound and upper-bound";
-      }
-
-      description
-        "List of transceiver measurement results";
-    }
-  }
-
-  grouping rx-window-measurement-result-grouping{
-    description
-      "Group of measurement reasults for rx window measurements";
-
-    choice object-unit-id {
-      config false;
-      case RU {
-        leaf name{
-          type leafref {
-            path "/hw:hardware/hw:component/hw:name";
-          }
-
-          description
-            "the name of O-RU module or one of its child ports
-            in ietf-hardware/component is used when O-RU is selected as
-            object-unit for the reception window stats.";
-        }
-        leaf count {
-          type uint64;
-          mandatory true;
-
-          description
-            "the number of data packet are counted for the reception
-             window stats per O-RU.";
-        }
-      }
-
-      case TRANSPORT {
-        list tr-measured-result{
-          leaf name{
-            type leafref{
-              path "/o-ran-elements:processing-elements/o-ran-elements:ru-elements/o-ran-elements:name";
-            }
-
-            description
-              "the name of ru-elements in o-ran-processing-elements
-               when TRANSPORT is selected as object-unit for the reception
-               window stats.";
-          }
-          leaf count {
-            type uint64;
-            mandatory true;
-
-            description
-              "the number of data packet are counted for the reception
-               window stats.";
-          }
-
-          description
-            "the number of data packet are counted for the reception
-             window stats per TRANSPORT.";
-        }
-      }
-
-      case EAXC_ID {
-        list eaxc-measured-result {
-          leaf eaxc-id{
-            type uint16;
-
-            description
-              "eaxc-id is used
-               when EAXC_ID is selected as object-unit for the reception
-               window stats.
-               EAXC_ID consists of DU-Port-Id, Band-Selector, CC-id and
-               RU-Port-Id to be used in header of C/U-plane data packet.";
-          }
-          leaf count {
-            type uint64;
-            mandatory true;
-
-            description
-              "the number of data packet are counted for the reception
-               window stats.";
-          }
-          leaf transport-name {
-            type leafref{
-              path "/o-ran-elements:processing-elements/o-ran-elements:ru-elements/o-ran-elements:name";
-            }
-
-            description
-              "the name of ru-elements in o-ran-processing-elements for the
-               transport information corresponding to this eaxc-id";
-          }
-
-          description
-            "the number of data packet are counted for the reception
-             window stats per EAXC-ID.";
-        }
-      }
-
-      description
-        "measurement-result for the reception window stats depends on the
-         configured object-unit, RU, TRANSPORT or EAXC_ID";
-    }
-  }
-
-  grouping tx-measurement-result-grouping{
-    description
-      "Group of measurement reasults for tx stats";
-
-    choice object-unit-id {
-      config false;
-      case RU {
-        leaf name{
-          type leafref {
-            path "/hw:hardware/hw:component/hw:name";
-          }
-
-          description
-            "the name of O-RU module or one of its child ports
-            in ietf-hardware/component is used when O-RU is selected as
-            object-unit for the reception window stats.";
-        }
-        leaf count {
-          type uint64;
-          mandatory true;
-
-          description
-            "the number of data packet are counted for the tx stats per O-RU.";
-        }
-      }
-
-      case TRANSPORT {
-        list tr-measured-result{
-          leaf name{
-            type leafref{
-              path "/o-ran-elements:processing-elements/o-ran-elements:ru-elements/o-ran-elements:name";
-            }
-
-            description
-              "the name of ru-elements in o-ran-processing-elements
-               when TRANSPORT is selected as object-unit for the tx stats.";
-          }
-          leaf count {
-            type uint64;
-            mandatory true;
-
-            description
-              "the number of data packet are counted for the tx stats.";
-          }
-
-          description
-            "the number of data packet are counted for the tx stats per TRANSPORT.";
-        }
-      }
-
-      case EAXC_ID {
-        list eaxc-measured-result {
-          leaf eaxc-id{
-            type uint16;
-
-            description
-              "eaxc-id is used
-               when EAXC_ID is selected as object-unit for the tx stats.
-               EAXC_ID consists of DU-Port-Id, Band-Selector, CC-id and
-               RU-Port-Id to be used in header of C/U-plane data packet.";
-          }
-          leaf count {
-            type uint64;
-            mandatory true;
-
-            description
-              "the number of data packet are counted for the tx stats.";
-          }
-          leaf transport-name {
-            type leafref{
-              path "/o-ran-elements:processing-elements/o-ran-elements:ru-elements/o-ran-elements:name";
-            }
-
-            description
-              "the name of ru-elements in o-ran-processing-elements for the
-               transport information corresponding to this eaxc-id";
-          }
-
-          description
-            "the number of data packet are counted for the tx stats per EAXC-ID.";
-        }
-      }
-
-      description
-        "measurement-result for the tx stats depends on the
-         configured object-unit, RU, TRANSPORT or EAXC_ID";
-    }
-  }
-
-
-  grouping measurement-group {
-    description
-      "Group of measurement results";
-
-    uses measurement-capabilities;
-    leaf enable-SFTP-upload {
-      type boolean;
-      default false;
-      description
-        "Flag to enable upload of performance measurement result files.";
-    }
-
-    leaf enable-random-file-upload {
-      type boolean;
-      default false;
-      description
-        "Flag to enable upload of performance measurement result files at
-         random within file-upload-interval.";
-    }
-
-    list remote-SFTP-uploads {
-      key remote-SFTP-upload-path;
-      description
-        "SFTP upload can be done to one or more than one SFTP servers";
-
-      leaf remote-SFTP-upload-path {
-        type inet:uri;
-        description
-          "URI specifying the remote location where the files are to uploaded.
-          The following format is possible:
-          sftp://<username>@<host>[:<port>]/path";
-      }
-
-      uses o-ran-fm:credential-information;
-    }
-
-// transceiver measurements applicable to all O-RAN HW functions
-
-    leaf transceiver-measurement-interval {
-      type uint16;
-      units seconds;
-      description
-        "measurement interval to measure the performance of transceiver
-         measurement objects periodically.";
-    }
-
-// EPE measurements applicable to all O-RAN HW functions
-
-    leaf epe-measurement-interval {
-      type uint16;
-      units seconds;
-      description
-        "measurement interval to measure the energy, power and environmental
-         measurement objects periodically.";
-    }
-
-// RX Window measurements applicable to O-RAN WG4 defined functions
-
-    leaf rx-window-measurement-interval {
-      type uint16;
-      units seconds;
-      description
-        "measurement interval to measure the performance of reception
-         window measurement objects periodically.";
-    }
-
-    leaf tx-measurement-interval {
-      type uint16;
-      units seconds;
-      description
-        "measurement interval to measure the tx (outbound)
-         window measurement objects periodically.";
-    }
-
-    leaf notification-interval {
-      type uint16;
-      units seconds;
-      description
-        "notification interval for the measurement result to be notified
-         periodically.";
-    }
-
-    leaf file-upload-interval {
-      type uint16;
-      units seconds;
-      description
-        "file upload interval for the measurement result file to be
-         uploaded periodically.";
-    }
-
-    leaf max-bin-count{
-      type uint16;
-      config false;
-      mandatory true;
-      description
-        "indicates the maximum value of configurable bin-count for frequency
-         table in transceiver-measurement-objects as one of module
-         capabilities.";
-    }
-
-    list transceiver-measurement-objects {
-      key "measurement-object";
-      description
-        "optional list used to report transceiver measurements
-        applicable to any O-RAN defined hardware function";
-      leaf measurement-object {
-        type enumeration {
-          enum RX_POWER {
-            description
-              "Measured Rx input power in mW for SFP or lane 1 of QSFP";
-          }
-          enum RX_POWER_LANE_2 {
-            description
-              "Measured Rx input power in mW for lane 2 of QSFP";
-          }
-          enum RX_POWER_LANE_3 {
-            description
-              "Measured Rx input power in mW for lane 3 of QSFP";
-          }
-          enum RX_POWER_LANE_4 {
-            description
-              "Measured Rx input power in mW for lane 4 of QSFP";
-          }
-          enum TX_POPWER {
-            status deprecated;
-            description
-              "Measured Tx input power in mW.";
-          }
-          enum TX_POWER {
-            description
-              "Measured Tx input power in mW.";
-          }
-          enum TX_POWER_LANE_2 {
-            description
-              "Measured Tx input power in mW for lane 2 of QSFP";
-          }
-          enum TX_POWER_LANE_3 {
-            description
-              "Measured Tx input power in mW for lane 3 of QSFP";
-          }
-          enum TX_POWER_LANE_4 {
-            description
-              "Measured Tx input power in mW for lane 4 of QSFP";
-          }
-          enum TX_BIAS_COUNT {
-            description
-              "Internally measured Tx Bias Current in mA for SFP or lane 1 of QSFP";
-          }
-          enum TX_BIAS_COUNT_LANE_2 {
-            description
-              "Internally measured Tx Bias Current in mA for lane 2 of QSFP";
-          }
-          enum TX_BIAS_COUNT_LANE_3 {
-            description
-              "Internally measured Tx Bias Current in mA for lane 3 of QSFP";
-          }
-          enum TX_BIAS_COUNT_LANE_4 {
-            description
-              "Internally measured Tx Bias Current in mA for lane 4 of QSFP";
-          }
-          enum VOLTAGE {
-            description
-              "Internally measured transceiver supply voltage in mV";
-          }
-          enum TEMPERATURE {
-            description
-              "Internally measured optional laser temperature in degrees Celsius.";
-          }
-        }
-        description "Target metric to measure the performance";
-      }
-
-      leaf active {
-        type boolean;
-        default false;
-        description
-          "Enable/disable the performance measurement per Object";
-      }
-
-      leaf-list report-info {
-        type enumeration {
-          enum MAXIMUM {
-            description
-              "to report maximum value and its recorded time within the
-               measurement-interval for the measurement-object.";
-          }
-          enum MINIMUM {
-            description
-              "to report minimum value and its recorded time within the
-               measurement-interval for the measurement-object.";
-          }
-          enum FIRST {
-            description
-              "to report first value and its recorded time within the
-               measurement-interval for the measurement-object.";
-          }
-          enum LATEST {
-            description
-              "to report latest value and its recorded time within the
-               measurement-interval for the measurement-object.";
-          }
-          enum FREQUENCY_TABLE {
-            description
-              "to report frequency bin table within the
-               measurement-interval for the measurement-object.";
-          }
-        }
-        description "The reporting info to the measurement object.";
-      }
-
-      leaf object-unit {
-        type enumeration {
-          enum PORT_NUMBER {
-            description
-              "unit to measure the performance per object-id";
-          }
-        }
-        mandatory true;
-        description "unit to measure the performance per object-id.";
-      }
-
-      leaf function {
-        type enumeration {
-          enum RAW {
-            description
-              "the value is expressed by real value.";
-          }
-          enum LOG_10 {
-            description
-              "the value is expressed by logarithm with base 10.";
-          }
-        }
-
-        description
-          "the value to be recorded for transceiver-measurement
-           by real value or log 10.";
-      }
-
-      leaf bin-count {
-        type uint16;
-
-        description
-          "the number of bin for the frequency table.
-           This value shall be less than max-bin-count";
-      }
-
-      leaf lower-bound {
-        type decimal64 {
-          fraction-digits 4;
-        }
-
-        description
-          "the lower value of the first bin of frequency table.";
-      }
-
-      leaf upper-bound {
-        type decimal64 {
-          fraction-digits 4;
-        }
-
-        description
-          "the upper value of the last bin of frequency table.";
-      }
-      uses transceiver-measurement-result-grouping;
-// configuration and measurement result for the transceiver-measurement
-
-    }
-
-    list rx-window-measurement-objects {
-      key "measurement-object";
-      description
-        "optional list used to report RX Window measurements
-        applicable to O-RAN WG4 define O-RU functions";
-      leaf measurement-object {
-        type enumeration {
-          enum RX_ON_TIME {
-            description
-              "the number of data packets, received on time within
-               the reception window.";
-          }
-          enum RX_EARLY {
-            description
-              "the number of data packets, received before
-               the reception window.";
-          }
-          enum RX_LATE {
-            description
-              "the number of data packets, received after
-               the reception window.";
-          }
-          enum RX_CORRUPT {
-            description
-              "the number of data packets, which are corrupt or whose header
-               is incorrect.";
-          }
-          enum RX_DUPL {
-            status deprecated;
-            description
-              "the number of data packets, which is duplicated with other packets,
-               received within the measurement period.";
-          }
-          enum RX_TOTAL {
-            description
-              "the total number of received packets (data and control) within the measurement period.";
-          }
-          enum RX_ON_TIME_C {
-            description
-              "the number of control packets, received on time within
-               the reception window.";
-          }
-          enum RX_EARLY_C {
-            description
-              "the number of control packets, received before
-               the reception window.";
-          }
-          enum RX_LATE_C {
-            description
-              "the number of control packets, received after
-               the reception window.";
-          }
-          enum RX_SEQID_ERR {
-            description
-              "the number of data packets, received with an erroneous sequence ID.";
-          }
-          enum RX_SEQID_ERR_C {
-            description
-              "the number of control packets, received with an erroneous sequence ID.";
-          }
-          enum RX_ERR_DROP {
-            description
-              "The total number of inbound messages which are discarded by the receiving
-              O-RAN entity for any reason.";
-          }
-        }
-        description
-          "target reception window metric to measure the performance.";
-      }
-
-      leaf active {
-        type boolean;
-        default false;
-        description
-          "Enable/disable the performance measurement per reception window
-           measurement object.";
-      }
-
-      leaf object-unit {
-        type enumeration {
-          enum RU {
-            description
-              "the reception window stats are counted per hardware component.
-              This may be the parent 'module' or child 'port' component.";
-          }
-          enum TRANSPORT {
-            if-feature GRANULARITY-TRANSPORT-MEASUREMENT;
-            description
-              "the reception window stats are counted per transport flow.
-              When there are multiple transport flows between O-DU and O-RU,
-               e.g. multiple sets of o-du mac address, ru mac address and
-                    vlan-id, the reception window stats per transport flow
-                    are counted in this case.
-              This configuration is allowed only when O-RU supports
-              a feature GRANULARITY-TRANSPORT-MEASUREMENT.";
-          }
-          enum EAXC_ID {
-            if-feature GRANULARITY-EAXC-ID-MEASUREMENT;
-
-            description
-              "the reception window stats are counted per eAxC ID, which is
-               used in the header of receivd data packet.
-              This configuration is allowed only when O-RU supports
-              a feature GRANULARITY-EAXC-ID-MEASUREMENT.";
-          }
-        }
-        description
-          "unit to measure the performance per object-id.";
-      }
-
-      leaf report-info {
-        type enumeration {
-          enum COUNT {
-            description
-              "the number of data packet are counted for the reception
-               window stats.";
-          }
-        }
-        description
-          "The reporting info to the measurement object.";
-      }
-
-      uses rx-window-measurement-result-grouping;
-// configuration and measurement result for the reception window stats
-
-    }
-
-
-    list tx-measurement-objects {
-      key "measurement-object";
-      description
-        "optional list used to report TX measurements
-        applicable to O-RAN WG4 define O-RU functions";
-      leaf measurement-object {
-        type enumeration {
-          enum TX_TOTAL {
-            description
-              "the number of outbound packets (data and control), transmitted within
-               the measurement period";
-          }
-          enum TX_TOTAL_C {
-            description
-              "the number of outbound control packets, transmitted within
-               the measurement period.
-               This counter is required only if RU supports LAA/LBT capabilities.";
-          }
-        }
-        description
-          "CU-plane transmission counters";
-      }
-
-      leaf active {
-        type boolean;
-        default false;
-        description
-          "Enable/disable the measurement per measurement object.";
-      }
-
-      leaf object-unit {
-        type enumeration {
-          enum RU {
-            description
-              "the transmission stats are counted per hardware component.
-              This may be the parent 'module' or child 'port' component.";
-          }
-          enum TRANSPORT {
-            if-feature GRANULARITY-TRANSPORT-MEASUREMENT;
-            description
-              "the transmission stats are counted per transport flow.
-              When there are multiple transport flows between O-DU and O-RU,
-               e.g. multiple sets of o-du mac address, ru mac address and
-                    vlan-id, the transmission stats per transport flow
-                    are counted in this case.
-              This configuration is allowed only when O-RU supports
-              a feature GRANULARITY-TRANSPORT-MEASUREMENT.";
-          }
-          enum EAXC_ID {
-            if-feature GRANULARITY-EAXC-ID-MEASUREMENT;
-
-            description
-              "the transmission stats are counted per eAxC ID, which is
-               used in the header of receivd data packet.
-              This configuration is allowed only when O-RU supports
-              a feature GRANULARITY-EAXC-ID-MEASUREMENT.";
-          }
-        }
-        description
-          "unit to measure the performance per object-id.";
-      }
-
-      leaf report-info {
-        type enumeration {
-          enum COUNT {
-            description
-              "the number of data packet are counted for the reception
-               window stats.";
-          }
-        }
-        description
-          "The reporting info to the measurement object.";
-      }
-
-      uses tx-measurement-result-grouping;
-    // configuration and measurement result for the tx stats
-
-    }
-
-    list epe-measurement-objects {
-      key "measurement-object";
-      description
-        "optional list used to report energy, power and environmental
-        measurements applicable to any O-RAN defined hardware function";
-      leaf measurement-object {
-        type enumeration {
-          enum TEMPERATURE {
-            description
-              "Measured temperature in degrees celcius";
-          }
-          enum POWER  {
-            description
-              "Measured power consumed, in watts (W)";
-          }
-        }
-        description "Target metric to measure the performance";
-      }
-
-      leaf active {
-        type boolean;
-        default false;
-        description
-          "Enable/disable the performance measurement per Object";
-      }
-
-      leaf-list report-info {
-        type enumeration {
-          enum MAXIMUM {
-            description
-              "to report maximum value and its recorded time within the
-               measurement-interval for the measurement-object.";
-          }
-          enum MINIMUM {
-            description
-              "to report minimum value and its recorded time within the
-               measurement-interval for the measurement-object.";
-          }
-          enum AVERAGE {
-            description
-              "to report average value within the
-               measurement-interval for the measurement-object.";
-          }
-        }
-        description "The reporting info to the measurement object.";
-      }
-
-
-      uses epe-measurement-result-grouping;
-    // configuration and measurement result for the epe-measurement
-
-    }
-
-
-  }
-
-  grouping measurement-capabilities {
-    container measurement-capabilitites {
-      config false;
-      description "the type of measurement objects supported by the O-RU";
-
-      list transceiver-objects {
-        key measurement-object;
-        leaf measurement-object {
-          type leafref {
-            path "/performance-measurement-objects/transceiver-measurement-objects/measurement-object";
-          }
-        }
-      }
-      list rx-window-objects {
-        key measurement-object;
-        leaf measurement-object {
-          type leafref {
-            path "/performance-measurement-objects/rx-window-measurement-objects/measurement-object";
-          }
-        }
-      }
-      list tx-stats-objects {
-        key measurement-object;
-        leaf measurement-object {
-          type leafref {
-            path "/performance-measurement-objects/tx-measurement-objects/measurement-object";
-          }
-        }
-      }
-      list epe-stats-objects {
-        key "measurement-object";
-        description
-          "An optional list describing the energy, power and environmental measurements supported
-          by the O-RU. Measurements are defined per hardware component.";
-        leaf measurement-object {
-          type leafref {
-            path "/performance-measurement-objects/epe-measurement-objects/measurement-object";
-          }
-        }
-        leaf-list component-class {
-          type identityref {
-            base ianahw:hardware-class;
-          }
-          description
-            "An indication of the general hardware type of the
-             component for which EPE measurements are supported.";
-
-        }
-      }
-    }
-  }
-
-  grouping measurement-notification {
-
-    description
-      "notification may contain measurement result for transceiver-stats
-       and/or rx-window-stats and/or tx-stats and/or epe-stats";
-    list transceiver-stats {
-      key "measurement-object";
-
-      description
-        "measurement result of transceiver-measurement per measurement-object";
-      leaf measurement-object {
-        type leafref {
-          path "/performance-measurement-objects/transceiver-measurement-objects/measurement-object";
-        }
-
-        description
-          "measurement-object for the transceiver-measurement";
-      }
-
-      uses start-and-end-time;
-      uses transceiver-measurement-result-grouping;
-    }
-
-    list rx-window-stats {
-      key "measurement-object";
-
-      description
-        "measurement result for the reception window measurement per
-         measurement-object";
-      leaf measurement-object {
-        type leafref {
-          path "/performance-measurement-objects/rx-window-measurement-objects/measurement-object";
-        }
-
-        description
-          "measurement-object for the reception window measurement";
-      }
-      uses start-and-end-time;
-      uses rx-window-measurement-result-grouping;
-
-    }
-
-    list tx-stats {
-      key "measurement-object";
-
-      description
-        "measurement result for the tx stats measurement per
-         measurement-object";
-      leaf measurement-object {
-        type leafref {
-          path "/performance-measurement-objects/tx-measurement-objects/measurement-object";
-        }
-
-        description
-          "measurement-object for the tx stats measurement";
-      }
-      uses start-and-end-time;
-      uses tx-measurement-result-grouping;
-
-    }
-
-    container epe-stats {
-      description
-        "container for the epe stats measurement - deprecated because measurement object
-        isn't included";
-      status deprecated;
-
-      uses start-and-end-time;
-      uses epe-measurement-result-grouping;
-
-
-    }
-
-    list epe-statistics {
-      key "measurement-object";
-
-      description
-        "measurement result for the epe stats measurement per
-         measurement-object";
-      leaf measurement-object {
-        type leafref {
-          path "/performance-measurement-objects/epe-measurement-objects/measurement-object";
-        }
-
-        description
-          "measurement-object for the epe stats measurement";
-      }
-      uses start-and-end-time;
-      uses epe-measurement-result-grouping;
-
-    }
-  }
-
-  // Top level container
-
-  container performance-measurement-objects {
-    description
-      "configuration for performance management and measurement-result are
-       included";
-    uses measurement-group;
-  }
-
-// Notifications
-
-  notification measurement-result-stats {
-    description
-      "Notification may contain measurement results for transceiver-stats
-       and/or rx-window-stats";
-    uses measurement-notification;
-  }
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-processing-element.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-processing-element.yang
new file mode 100644
index 0000000..015d14f
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-processing-element.yang
@@ -0,0 +1,475 @@
+module o-ran-processing-element {
+  yang-version 1.1;
+  namespace "urn:o-ran:processing-element:1.0";
+  prefix "o-ran-elements";
+
+  import ietf-yang-types {
+    prefix yang;
+  }
+
+  import ietf-inet-types {
+    prefix "inet";
+  }
+
+  import ietf-interfaces {
+    prefix "if";
+  }
+
+  import ietf-ip {
+    prefix "ip";
+  }
+
+  import o-ran-interfaces {
+    prefix "o-ran-int";
+  }
+
+  import o-ran-wg4-features {
+    prefix "feat";
+  }
+
+  import o-ran-usermgmt {
+    prefix "or-user";
+  }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the YANG definitions for mapping of transport flows to
+    processing elements. Three options are supported:
+    i) virtual MAC based mapping
+    ii) MAC address + VLAN-ID based mapping
+    iii) UDP/IP based mapping
+
+    Copyright 2020 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) introducing SHARED-ORU-MULTI-OPERATOR feature
+      2) fixing constraints";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) typographical corrections in descriptions.
+      2) Add support for multiple transport-session-type per O-RU";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
+
+  revision "2020-04-17" {
+    description
+      "version 3.0.0
+
+      1) added new enum SHARED-CELL-ETH-INTERFACE in
+         transport-session-type and new containers north-eth-flow and
+         south-eth-flow to enable Shared cell scenario.";
+
+    reference "ORAN-WG4.M.0-v03.00";
+  }
+
+  revision "2019-07-03" {
+    description
+      "version 1.1.0
+
+      1) added new leaf to enable O-RU to report the maximum number of
+      transport flows it can support, e.g., due to restrictions on number
+      of VLAN-IDs when Ethernet type transport is used.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+  revision "2019-02-04" {
+    description
+      "version 1.0.0
+
+      1) imported model from xRAN
+      2) changed namespace and reference from xran to o-ran";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  feature SHARED_CELL {
+    description
+      "Presence of feature indicates that this O-RU is capable to support
+       shared cell.";
+  }
+// groupings
+
+  grouping non-shared-cell-flow-group {
+    description "a grouping for non-shared cell O-RU flows";
+
+    container aliasmac-flow {
+      when "../../../transport-session-type = 'ALIASMAC-INTERFACE'";
+      if-feature o-ran-int:ALIASMAC-BASED-CU-PLANE;
+      description "leafs for virtual mac type data flows";
+      leaf ru-aliasmac-address {
+        type leafref {
+          path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:alias-macs";
+        }
+        mandatory true;
+        description
+          "O-RU's alias MAC address used for alias MAC based flow";
+      }
+      leaf vlan-id {
+        type leafref {
+          path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
+        }
+        description
+          "O-RU's VLAN-ID used for alias MAC based flow";
+      }
+      leaf o-du-mac-address {
+        type yang:mac-address;
+        mandatory true;
+        description
+          "O-DU's MAC address used for alias MAC based flow";
+      }
+    }
+    container eth-flow {
+      when "../../../transport-session-type = 'ETH-INTERFACE'";
+      description "leafs for mac + vlan-id type data flows";
+      leaf ru-mac-address {
+        type leafref {
+          path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
+        }
+        mandatory true;
+        description
+          "O-RU's MAC address used for Ethernet based flow";
+      }
+      leaf vlan-id {
+        type leafref {
+          path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
+        }
+        mandatory true;
+        description
+          "O-RU's VLAN-ID used for Ethernet based flow";
+      }
+      leaf o-du-mac-address {
+        type yang:mac-address;
+        mandatory true;
+        description
+          "O-DU's MAC address used for Ethernet based flow";
+      }
+    }
+    container udpip-flow {
+      when "../../../transport-session-type = 'UDPIP-INTERFACE'";
+      description "leafs for UDP/IP type data flows";
+      choice address {
+        leaf ru-ipv4-address {
+          type leafref {
+            path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/ip:ipv4/ip:address/ip:ip";
+          }
+          description "O-RU's IPv4 address";
+        }
+        leaf ru-ipv6-address {
+          type leafref {
+            path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/ip:ipv6/ip:address/ip:ip";
+          }
+          description "O-RU's IPv6 address";
+        }
+        mandatory true;
+        description "choice of O-RU IPv4 or IPv6 address";
+      }
+      leaf o-du-ip-address {
+        type inet:ip-address;
+        mandatory true;
+        description "O-DU's IP address";
+      }
+      leaf ru-ephemeral-udp-port {
+        type inet:port-number;
+        mandatory true;
+        description
+          "ephemeral port used by O-RU";
+      }
+      leaf o-du-ephemeral-udp-port {
+        type inet:port-number;
+        mandatory true;
+        description
+          "ephemeral port used by O-DU";
+      }
+      leaf ecpri-destination-udp {
+        type inet:port-number;
+        mandatory true;
+        description "the well-known UDP port number used by eCPRI";
+        // fixme - add in a default when allocated by IANA
+      }
+    }
+  }
+
+  grouping shared-cell-flow-group {
+    description "a grouping for shared cell O-RU flows";
+
+    container north-eth-flow {
+      when "../../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE'";
+      if-feature "SHARED_CELL";
+      description "leafs for mac + vlan-id type data flows";
+      leaf ru-mac-address {
+        type leafref {
+          path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
+        }
+        description
+          "O-RU's MAC address used for Ethernet based flow";
+      }
+      leaf vlan-id {
+        type leafref {
+          path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
+        }
+        description
+          "O-RU's VLAN-ID used for Ethernet based flow";
+      }
+      leaf north-node-mac-address {
+        type yang:mac-address;
+        description
+          "North-node's MAC address used for Ethernet based flow";
+      }
+    }
+    container south-eth-flow {
+      when "../../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE'";
+      if-feature "SHARED_CELL";
+      description "leafs for mac + vlan-id type data flows";
+      leaf ru-mac-address {
+        type leafref {
+          path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
+        }
+        description
+          "O-RU's MAC address used for Ethernet based flow";
+      }
+      leaf vlan-id {
+        type leafref {
+          path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
+        }
+        description
+          "O-RU's VLAN-ID used for Ethernet based flow";
+      }
+      leaf south-node-mac-address {
+        type yang:mac-address;
+        description
+          "south-node's MAC address used for Ethernet based flow";
+      }
+    }
+  }
+
+  grouping session-and-markings-group {
+    description "a grouping with transport session type and enhanced uplane markings";
+
+    leaf transport-session-type {
+      type enumeration {
+        enum ETH-INTERFACE {
+          description "VLAN based CUS Transport ";
+        }
+        enum UDPIP-INTERFACE {
+          description "UDP/IP based CUS Transport ";
+        }
+        enum ALIASMAC-INTERFACE{
+          description "Alias MAC address based CUS Transport ";
+        }
+        enum SHARED-CELL-ETH-INTERFACE {
+          if-feature "SHARED_CELL";
+          description "VLAN based CUS Transport used for Shared Cell scenario";
+        }
+      }
+      default ETH-INTERFACE;
+      description
+        "the type of transport session used for identifying different processing
+        elements";
+    }
+    container enhanced-uplane-mapping {
+      presence "indicates that enhanced uplane mapping is used";
+      description "a mapping table for enhanced user plane marking";
+      list uplane-mapping {
+        key "up-marking-name";
+        description
+          "a mapping between up-link name and o-ran-interfaces:up-marking-name";
+        leaf up-marking-name {
+          type string;
+          description "a unique up marking name that is used for enhanced up marking";
+        }
+        choice up-markings {
+          description
+            "U-Plane markings";
+          case ethernet {
+            when "(../../transport-session-type = 'ALIASMAC-INTERFACE') or
+            (../../transport-session-type = 'ETH-INTERFACE') or
+            (../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE')";
+            leaf up-cos-name {
+              type leafref {
+                path "/if:interfaces/if:interface/o-ran-int:class-of-service/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
+              }
+              description "the Ethernet U-plane transport marking as defined in o-ran-interfaces";
+            }
+          }
+          case ipv4 {
+            when "(../../transport-session-type = 'UDPIP-INTERFACE')";
+            leaf upv4-dscp-name {
+             if-feature o-ran-int:UDPIP-BASED-CU-PLANE;
+              type leafref {
+                path "/if:interfaces/if:interface/ip:ipv4/o-ran-int:diffserv-markings/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
+              }
+              description "the IPv4 U-plane transport marking as defined in o-ran-interfaces";
+            }
+          }
+          case ipv6 {
+            when "(../../transport-session-type = 'UDPIP-INTERFACE')";
+            leaf upv6-dscp-name {
+             if-feature o-ran-int:UDPIP-BASED-CU-PLANE;
+              type leafref {
+                path "/if:interfaces/if:interface/ip:ipv6/o-ran-int:diffserv-markings/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
+              }
+              description "the IPv6 U-plane transport marking as defined in o-ran-interfaces";
+            }
+          }
+        }
+      }
+    }
+  }
+
+  grouping pe-group {
+    description "a grouping of processing elements";
+    leaf maximum-number-of-transport-flows {
+      type uint16 {
+        range "1..4094";
+      }
+      default 4094;
+      config false;
+      description
+        "The maximum number of transport flows that can be supported by an O-RU";
+    }
+    uses session-and-markings-group;
+
+    list ru-elements {
+      key "name";
+      description
+        "the list of transport definitions for each processing element";
+      leaf name {
+        type string {
+          length "1..255";
+        }
+        description
+          "A name that is unique across the O-RU that identifies a processing
+          element instance.
+
+          This name may be used in fault management to refer to a fault source
+          or affected object";
+      }
+      leaf sro-id {
+        if-feature feat:SHARED-ORU-MULTI-OPERATOR;
+        type leafref {
+          path "/or-user:users/or-user:user/or-user:sro-id";
+        }
+        description
+          "The identity of a shared resource operator. When present,
+          indicates that the list entry corresponds to a processing element
+          associated with a shared resource operator where the sro-id identifies
+          the specific shared resource operator";
+      }
+      container transport-flow {
+        description
+          "container for the transport-flow used for CU plane";
+        leaf interface-name {
+          type leafref {
+            path "/if:interfaces/if:interface/if:name";
+          }
+          description "the interface name ";
+        }
+        uses non-shared-cell-flow-group;
+        uses shared-cell-flow-group;
+
+      }
+    }
+    list additional-transport-session-type-elements {
+      if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+      key transport-session-type;
+
+      description
+        "Added to support multiple transport-session-type per O-RU,
+         it is always assumed that /processing-elements/ru-elements/ is configured with the first type of transport,
+         and /processing-element/additional-transport-session-elements/ru-elements/ is configured with the other types of transport.
+         If the O-RU is configured for shared-cell, this list will not be used. An O-RU shall reject any configuration
+         with a list entry with transport-session-type set to SHARED-CELL-ETH-INTERFACE";
+
+      uses session-and-markings-group;
+
+      list ru-elements {
+        key "name";
+        description
+          "the list of transport definitions for each processing element";
+        leaf name {
+          type string {
+            length "1..255";
+          }
+          description
+            "A name that is unique across the O-RU that identifies a processing
+            element instance.
+
+            This name may be used in fault management to refer to a fault source
+            or affected object";
+        }
+        leaf sro-id {
+          if-feature feat:SHARED-ORU-MULTI-OPERATOR;
+          type leafref {
+            path "/or-user:users/or-user:user/or-user:sro-id";
+          }
+          description
+            "The identity of a shared resource operator. When present,
+            indicates that the list entry corresponds to a processing element
+            associated with a shared resource operator where the sro-id identifies
+            the specific shared resource operator";
+        }
+        container transport-flow {
+          description
+            "container for the transport-flow used for CU plane";
+          leaf interface-name {
+            type leafref {
+              path "/if:interfaces/if:interface/if:name";
+            }
+            description "the interface name ";
+          }
+          uses non-shared-cell-flow-group;
+        }
+      }
+    }
+  }
+
+// top-level container
+
+  container processing-elements {
+    description
+      "a model defining the mapping between transport flows and arbitrary
+      O-RAN processing elements. A processing element may be then defined for
+      handling connectivity or delay procedures, or defined with a corresponding
+      eaxcid for CU plane operations";
+    uses pe-group;
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-processing-element@2020-04-17.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-processing-element@2020-04-17.yang
deleted file mode 100644
index 06dacbb..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-processing-element@2020-04-17.yang
+++ /dev/null
@@ -1,360 +0,0 @@
-module o-ran-processing-element {
-  yang-version 1.1;
-  namespace "urn:o-ran:processing-element:1.0";
-  prefix "o-ran-elements";
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-
-  import ietf-inet-types {
-    prefix "inet";
-  }
-
-  import ietf-interfaces {
-    prefix "if";
-  }
-
-  import ietf-ip {
-    prefix "ip";
-  }
-
-  import o-ran-interfaces {
-    prefix "o-ran-int";
-  }
-
-  organization "O-RAN Alliance";
-
-  contact
-    "www.o-ran.org";
-
-  description
-    "This module defines the YANG definitions for mapping of transport flows to
-    processing elements. Three options are supported:
-    i) virtual MAC based mapping
-    ii) MAC addrress + VLAN-ID based mapping
-    iii) UDP/IP based mapping
-
-    Copyright 2020 the O-RAN Alliance.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the above disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the above disclaimer in the documentation
-    and/or other materials provided with the distribution.
-    * Neither the Members of the O-RAN Alliance nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.";
-
-    revision "2020-04-17" {
-      description
-        "version 3.0.0
-
-        1) added new enum SHARED-CELL-ETH-INTERFACE in
-           transport-session-type and new containers north-eth-flow and
-           south-eth-flow to enable Shared cell scenario.";
-
-      reference "ORAN-WG4.M.0-v03.00";
-    }
-
-  revision "2019-07-03" {
-    description
-      "version 1.1.0
-
-      1) added new leaf to enable O-RU to report the maximum number of
-      transport flows it can support, e.g., due to restrictions on number
-      of VLAN-IDs when ethernet type transport is used.";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-  revision "2019-02-04" {
-    description
-      "version 1.0.0
-
-      1) imported model from xRAN
-      2) changed namespace and reference from xran to o-ran";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-  feature SHARED_CELL {
-    description
-      "Presence of feature indicates that this O-RU is capable to support
-       shared cell.";
-  }
-// groupings
-
-  grouping pe-group {
-    leaf maximum-number-of-transport-flows {
-      type uint16 {
-        range "1..4094";
-      }
-      config false;
-      default 4094;
-      description
-        "The maximum number of transport flows that can be supported by an O-RU";
-    }
-    leaf transport-session-type {
-      type enumeration {
-        enum ETH-INTERFACE {
-          description "VLAN based CUS Transport ";
-        }
-        enum UDPIP-INTERFACE {
-          description "UDP/IP based CUS Transport ";
-        }
-        enum ALIASMAC-INTERFACE{
-          description "Alias MAC address based CUS Transport ";
-        }
-        enum SHARED-CELL-ETH-INTERFACE {
-          if-feature "SHARED_CELL";
-          description "VLAN based CUS Transport used for Shared Cell scenario";
-        }
-      }
-      default ETH-INTERFACE;
-      description
-        "the type of transport session used for identifying different processing
-        elements";
-    }
-    container enhanced-uplane-mapping {
-      presence "indicates that enhanced uplane mapping is used";
-      description "a mapping table for enhanced user plane marking";
-      list uplane-mapping {
-        key "up-marking-name";
-        description
-          "a mapping between up-link name and o-ran-interfaces:up-marking-name";
-        leaf up-marking-name {
-          type string;
-          description "a unique up marking name that is used for enhanced up marking";
-        }
-        choice up-markings {
-          description
-            "U-Plane markings";
-          case ethernet {
-            when "(../../transport-session-type = 'ALIASMAC-INTERFACE') or
-            (../../transport-session-type = 'ETH-INTERFACE') or
-            (../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE')";
-            leaf up-cos-name {
-              type leafref {
-                path "/if:interfaces/if:interface/o-ran-int:class-of-service/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
-              }
-              description "the Ethernet U-plane transport marking as defined in o-ran-interfaces";
-            }
-          }
-          case ipv4 {
-            when "(../../transport-session-type = 'UDPIP-INTERFACE')";
-            leaf upv4-dscp-name {
-              type leafref {
-                path "/if:interfaces/if:interface/ip:ipv4/o-ran-int:diffserv-markings/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
-              }
-              description "the IPv4 U-plane transport marking as defined in o-ran-interfaces";
-            }
-          }
-          case ipv6 {
-            when "(../../transport-session-type = 'UDPIP-INTERFACE')";
-            leaf upv6-dscp-name {
-              type leafref {
-                path "/if:interfaces/if:interface/ip:ipv6/o-ran-int:diffserv-markings/o-ran-int:enhanced-uplane-markings/o-ran-int:up-marking-name";
-              }
-              description "the IPv6 U-plane transport marking as defined in o-ran-interfaces";
-            }
-          }
-        }
-      }
-    }
-    list ru-elements {
-      key "name";
-      description
-        "the list of transport definitions for each processing element";
-      leaf name {
-        type string {
-          length "1..255";
-        }
-        description
-          "A name that is unique across the O-RU that identifies a processing
-          element instance.
-
-          This name may be used in fault management to refer to a fault source
-          or affected object";
-      }
-      container transport-flow {
-        description
-          "container for the transport-flow used for CU plane";
-        leaf interface-name {
-          type leafref {
-            path "/if:interfaces/if:interface/if:name";
-          }
-          description "the interface name ";
-        }
-        container aliasmac-flow {
-          when "../../../transport-session-type = 'ALIASMAC-INTERFACE'";
-          if-feature o-ran-int:ALIASMAC-BASED-CU-PLANE;
-          description "leafs for virtual mac type data flows";
-          leaf ru-aliasmac-address {
-            type leafref {
-              path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:alias-macs";
-            }
-            mandatory true;
-            description
-              "O-RU's alias MAC address used for alias MAC based flow";
-          }
-          leaf vlan-id {
-            type leafref {
-              path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
-            }
-            description
-              "O-RU's VLAN-ID used for alias MAC based flow";
-          }
-          leaf o-du-mac-address {
-            type yang:mac-address;
-            mandatory true;
-            description
-              "O-DU's MAC address used for alias MAC based flow";
-          }
-        }
-        container eth-flow {
-          when "../../../transport-session-type = 'ETH-INTERFACE'";
-          description "leafs for mac + vlan-id type data flows";
-          leaf ru-mac-address {
-            type leafref {
-              path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
-            }
-            mandatory true;
-            description
-              "O-RU's MAC address used for Ethernet based flow";
-          }
-          leaf vlan-id {
-            type leafref {
-              path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
-            }
-            mandatory true;
-            description
-              "O-RU's VLAN-ID used for Ethernet based flow";
-          }
-          leaf o-du-mac-address {
-            type yang:mac-address;
-            mandatory true;
-            description
-              "O-DU's MAC address used for Ethernet based flow";
-          }
-        }
-        container udpip-flow {
-          when "../../../transport-session-type = 'UDPIP-INTERFACE'";
-          description "leafs for UDP/IP type data flows";
-          choice address {
-            leaf ru-ipv4-address {
-              type leafref {
-                path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/ip:ipv4/ip:address/ip:ip";
-              }
-              description "O-RU's IPv4 address";
-            }
-            leaf ru-ipv6-address {
-              type leafref {
-                path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/ip:ipv6/ip:address/ip:ip";
-              }
-              description "O-RU's IPv6 address";
-            }
-            mandatory true;
-            description "choice of O-RU IPv4 or IPv6 address";
-          }
-          leaf o-du-ip-address {
-            type inet:ip-address;
-            mandatory true;
-            description "O-DU's IPv address";
-          }
-          leaf ru-ephemeral-udp-port {
-            type inet:port-number;
-            mandatory true;
-            description
-              "ephemeral port used by O-RU";
-          }
-          leaf o-du-ephemeral-udp-port {
-            type inet:port-number;
-            mandatory true;
-            description
-              "ephemeral port used by O-DU";
-          }
-          leaf ecpri-destination-udp {
-            type inet:port-number;
-            mandatory true;
-            description "the well known UDP port number used by eCPRI";
-            // fixme - add in a default when allocated by IANA
-          }
-        }
-        container north-eth-flow {
-          when "../../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE'";
-          if-feature "SHARED_CELL";
-          description "leafs for mac + vlan-id type data flows";
-          leaf ru-mac-address {
-            type leafref {
-              path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
-            }
-            description
-              "O-RU's MAC address used for Ethernet based flow";
-          }
-          leaf vlan-id {
-            type leafref {
-              path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
-            }
-            description
-              "O-RU's VLAN-ID used for Ethernet based flow";
-          }
-          leaf north-node-mac-address {
-            type yang:mac-address;
-            description
-              "North-node's MAC address used for Ethernet based flow";
-          }
-        }
-        container south-eth-flow {
-          when "../../../transport-session-type = 'SHARED-CELL-ETH-INTERFACE'";
-          if-feature "SHARED_CELL";
-          description "leafs for mac + vlan-id type data flows";
-          leaf ru-mac-address {
-            type leafref {
-              path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:mac-address";
-            }
-            description
-              "O-RU's MAC address used for Ethernet based flow";
-          }
-          leaf vlan-id {
-            type leafref {
-              path "/if:interfaces/if:interface[if:name = current()/../../interface-name]/o-ran-int:vlan-id";
-            }
-            description
-              "O-RU's VLAN-ID used for Ethernet based flow";
-          }
-          leaf south-node-mac-address {
-            type yang:mac-address;
-            description
-              "south-node's MAC address used for Ethernet based flow";
-          }
-        }
-      }
-    }
-  }
-
-// top level container
-
-  container processing-elements {
-    description
-      "a model defining the mapping between transport flows and arbitrary
-      O-RAN processing elements. A processing element may be then defined for
-      handling connectivity or delay procedures, or defined with a corresponding
-      eaxcid for CU plane operations";
-    uses pe-group;
-  }
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-shared-cell.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-shared-cell.yang
new file mode 100644
index 0000000..f558217
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-shared-cell.yang
@@ -0,0 +1,883 @@
+module o-ran-shared-cell {
+  yang-version 1.1;
+  namespace "urn:o-ran:shared-cell:1.0";
+  prefix "o-ran-sc";
+
+  import o-ran-compression-factors {
+    prefix "cf";
+  }
+  import o-ran-processing-element {
+    prefix "o-ran-pe";
+  }
+
+  import o-ran-common-yang-types {
+    prefix "o-ran-cmn";
+  }
+
+  import o-ran-wg4-features {
+    prefix "feat";
+  }
+
+  import o-ran-usermgmt {
+    prefix "or-user";
+  }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the YANG definitions for shared cell capable O-RU (Cascade and FHM).
+
+    Copyright 2020 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2022-12-05" {
+    description
+      "version 11.0.0
+
+      1) eaxc-id-group support in shared cell";
+
+    reference "ORAN-WG4.M.0-v11.00";
+  }
+
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) added SHARED-ORU-MULTI-OPERATOR anf SHARED-ORU-MULTI-ODU features";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) typographical corrections in descriptions.
+      2) add support for multi-cell in cascade mode.
+      3) add SCS info and mapping with eaxc-id into Combine-entity.
+      4) add enhanced-t-combine feature Add T_combine-net (capability)
+      5) add Tx-duration, enhanced-t-combine-enabled";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2020-12-10" {
+    description
+      "version 5.0.0
+
+      1) added selective combining using beamId.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2020-04-17" {
+    description
+      "version 3.0.0
+
+      1) initial version for shared cell O-RU related yang module.";
+
+    reference "ORAN-WG4.M.0-v03.00";
+  }
+
+  feature FHM {
+    description
+      "Presence of feature indicates that O-RU acts as FHM and doesn't have
+       the capability of radio transmission and reception. Absence of feature
+       indicates that O-RU does not act as FHM and supports radio transmission
+       and reception function.";
+  }
+
+  feature SELECTIVE-BEAM-ID {
+    description
+      "Presence of feature indicates that FHM supports the selective combining
+      function by using beamId";
+  }
+
+  // radio offsets
+  grouping radio-offset {
+    description
+      "shared cell FHM mode needs the configuration for radio related offset";
+    leaf downlink-radio-frame-offset {
+      type uint32 {
+        range 0..12288000;
+      }
+      mandatory true;
+
+      description
+        "This parameter is used for offsetting the starting position of
+         10ms radio frame.
+         Note: Unit is 1/1.2288e9 sec.";
+    }
+
+    leaf downlink-sfn-offset {
+      type int16 {
+        range -32768..32767;
+      }
+      mandatory true;
+
+      description
+        "This parameter is used for offsetting SFN value.
+        Unit is 10ms.";
+    }
+  }
+
+  // shared cell capability
+  grouping shared-cell-module-capability{
+    description
+      "shared cell related module capability of O-RU";
+    container shared-cell-module-cap {
+      config false;
+      description
+      "indicates shared cell specific module capability";
+
+      leaf t-copy {
+        type uint32;
+        units nanoseconds;
+        mandatory true;
+        description
+          "Corresponding to the maximum FHM or cascade O-RU processing delay
+           between receiving an IQ sample over the fronthaul interface from
+           the north-node, coping it and transmitting it over the fronthaul
+           interface to the south-node.";
+      }
+
+      leaf t-combine {
+        type uint32;
+        units nanoseconds;
+        mandatory true;
+        description
+          "Corresponding to the maximum FHM or cascade O-RU processing delay
+           between receiving an IQ sample over the fronthaul interface from
+           the south-node(s), combing them and transmitting it over the
+           fronthaul interface to the north-node.
+
+           When enhanced-t-combine-enabled is 'true' by O-DU, FHM/Cascade O-RU supporting
+           ENHANCED-T-COMBINE uses t-combine-net and tx-duration instead of this value.";
+      }
+
+      leaf t-combine-net {
+        type uint32;
+        units nanoseconds;
+        description
+          "Corresponding to the maximum FHM or cascade O-RU processing delay
+           between starting time to combine IQ data from received message(s)
+           and starting time to transmit them with a message over the fronthaul
+           interface to O-DU or the north-node.";
+         }
+
+      leaf ta3-prime-max-upper-range {
+        type uint32;
+        units nanoseconds;
+        mandatory true;
+        description
+          "The upper limit for the configurable ta3-prime-max value.
+           This is the capability information of O-RU that comes from
+           the O-RU internal memory for the combine operation.";
+      }
+
+      leaf max-number-node-copy-and-combine {
+        type uint8{
+          range "1..max";
+        }
+        mandatory true;
+        description
+          "Indicates the maximum number of south-node for the copy-and-combine
+           functions of cascade O-RU or FHM.
+           For cascade mode, this value is one. It means
+           O-RU copies the stream of eCPRI messages only once for the connected
+           south-node and copied stream are forwarded to the south-node.
+           Similarly, the cascade O-RU combines once for the streams of
+           eCPRI messages received from the south node and the streams of radio
+           reception function.
+           For FHM mode, FHM is able to copy the stream of eCPRI messages
+           according to this parameter and forward each copied stream
+           to each south-node. FHM is able to combine the streams of eCPRI
+           messages received from the multiple south-nodes corresponding to
+           this parameter at most.";
+      }
+
+      leaf max-number-eaxcid-copy {
+        type uint8{
+          range "1..max";
+        }
+        mandatory true;
+        description
+          "Indicates the maximum number of eaxc-ids for the copy functions
+           of cascade O-RU or FHM.
+           For Cascade O-RU, it is same number of static-low-level-tx-endpoints plus
+           static-low-level-rx-endpoints, for which low-level-tx(rx)-endpoints
+           are configured with eaxc-id in u-plane configuration.
+           For FHM, it is max configurable number of eaxc-ids in
+           tx-eaxc-id and rx-eaxc-id in shared-cell-copy-uplane-config.";
+      }
+
+      leaf max-number-eaxcid-combine {
+        type uint8{
+          range "1..max";
+        }
+        mandatory true;
+        description
+          "Indicates the maximum number of eaxc-ids for the combine functions
+           of cascade O-RU or FHM.
+           For Cascade O-RU, it is same number of static-low-level-rx-endpoints,
+           for which low-level-rx-endpoints are configured with eaxc-id in
+           u-plane configuration.
+           For FHM, it is max configurable number of eaxc-ids in rx-eaxc-id
+           in shared-cell-combine-uplane-config across all combine-enities.
+
+           When multiple scs or multiple c-plane section types with a single eaxc-id
+           are used for FHM supporting MULTIPLE-SCS-IN-EAXC, all eaxc-id instances
+           across scs, C-Plane section types and combine entities are counted even
+           though they are same eaxc-id. The counted number shall not excced this value.";
+      }
+
+      container eaxc-id-group-capabilities {
+        if-feature FHM;
+        description
+          "Presence of this container indicates that FHM can refer to C-Plane in UL direction
+          to support combining U-Plane messages commanded by C-Plane with Section Extension 10.";
+        leaf max-num-rx-eaxc-id-groups {
+          type uint8;
+          description
+            "Maximum number of configurable rx-eaxc-id-group supported by FHM.";
+        }
+
+        leaf max-num-rx-eaxc-ids-per-group {
+          type uint8;
+          description
+            "Maximum number of member-rx-eaxc-id in single rx-eaxc-id-group supported by FHM.";
+        }
+      }
+
+      list compression-method-supported {
+        if-feature FHM;
+        description
+          "List of supported compression methods for FHM";
+        uses cf:compression-details;
+      }
+
+      leaf multi-cell-in-cascade-mode-supported {
+        type boolean;
+        description
+          "This parameter indicates whether O-RU supports multi cell
+           operation in shared cell cascade mode.
+           If multi-cell-in-cascade-mode-supported = false then each shared cell
+           O-RU in a physical cascaded chain can only be used for operating
+           carriers that correspond to a single cell.
+           If multi-cell-in-cascade-mode-supported = true, it means that the O-RU
+           may be configured such that the shared-cell carriers can be used to
+           support mutiple different cells, where each cell is served by its own
+           separate cascade chain. See CUS-Plane Specification for more details.";
+      }
+    }
+  }
+
+  // shared cell mode configuration
+  grouping shared-cell-mode{
+    description
+      "A grouping defining the schema nodes for shared cell configuration";
+    choice shared-cell-copy-combine-mode {
+      case COMMON {
+        description
+         "all eCPRI payload are the target for copy and combine functions.
+          Common set of eaxc-ids are used in O-RU in the shared cell network.
+          For cascade mode, eaxc-ids of low-level-tx(rx)-links in
+          o-ran-uplane-configuration that has relation to the
+          processing-element are used.
+          For FHM mode, eaxc-ids of shared-cell-copy-uplane-config and
+          those of shared-cell-combine-config are used.";
+
+          uses shared-cell-copy-configuration;
+          uses shared-cell-combine-configuration;
+      }
+      case SELECTIVE-BEAM-ID {
+        if-feature "FHM and SELECTIVE-BEAM-ID";
+        description
+        "Case that FHM has selective transmission and reception function
+         by using beamId";
+
+         uses shared-cell-copy-configuration-for-selective-beam-id;
+         uses shared-cell-combine-configuration-for-selective-beam-id;
+      }
+      case SELECTIVE {
+        description "for future use";
+      }
+      description
+       "configuration mode can be selected.";
+    }
+  }
+
+  // processing elements set
+  grouping processing-element-set{
+    description
+      "shared-cell-copy/combine-configuration refers the pair of processing
+      element set of a north-node and a south-node.";
+
+    leaf north-node-processing-element{
+      type leafref {
+        path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
+        }
+      description
+        "north-node processing element indicates the set of
+         'north-node-mac-address', 'ru-mac-address' and 'vlan-id' in case
+         north-eth-flow is selected for the transport flow.";
+    }
+
+    leaf-list south-node-processing-elements{
+      type leafref {
+        path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
+      }
+      description
+        "south-node processing elements indicate the sets of
+         'south-node-mac-address', 'ru-mac-address' and 'vlan-id' in case
+          south-eth-flow is selected for the transport flow.";
+    }
+  } // processing-element-set
+
+  // processing elements set for SELECTIVE-BEAM-ID
+  grouping processing-element-set-for-selective-beam-id{
+    description
+      "shared-cell-copy/combine-configuration refers the pair of processing
+      element set of a north-node and a south-node.";
+
+    leaf north-node-processing-element{
+      type leafref {
+        path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
+        }
+      description
+        "north-node processing element indicates the set of
+         'north-node-mac-address', 'ru-mac-address' and 'vlan-id' in case
+         north-eth-flow is selected for the transport flow.";
+    }
+
+    leaf-list south-node-processing-elements{
+      type leafref {
+        path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
+      }
+      description
+        "south-node processing elements indicate the sets of
+         'south-node-mac-address', 'ru-mac-address' and 'vlan-id' in case
+          south-eth-flow is selected for the transport flow.";
+    }
+
+    list mapping-table-for-selective-beam-id {
+      key "global-beam-id south-node-processing-elements";
+      description "the mapping information between global-beam-id and local-beam-id";
+
+      leaf global-beam-id{
+      type uint16;
+      description
+      "This parameter indicates the beam ID to be applied to the U-Plane data
+      on O-DU as same as existing beamId. One global beamId can be mapped
+      to one or multiple local beamId.
+      The mapping information between each global beamId, O-RU(s),
+      and local beamId is configured to the FHM during M-Plane start-up procedure.";
+    }
+    leaf south-node-processing-elements {
+      type leafref {
+        path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
+      }
+      description
+        "south-node processing elements indicate the sets of
+         'south-node-mac-address', 'ru-mac-address' and 'vlan-id' in case
+          south-eth-flow is selected for the transport flow.";
+    }
+    leaf local-beam-id {
+      type uint16;
+      description "This parameter indicates the beam ID to be applied to
+      the U-Plane data on O-RU as same as existing beamId.
+      In one O-RU, different beams can not map to one global beamId.
+      Local beamId shall be unique within O-RU.";
+    }
+  }
+  } // processing-element-set for SELECTIVE-BEAM-ID
+
+  // shared cell copy and combine config
+  grouping shared-cell-copy-configuration{
+    description
+      "shared-cell-copy-configuration";
+    list shared-cell-copy-entities{
+      key name;
+      description
+        "copy entity. The north-node is an O-DU or an O-RU.
+         The south-nodes are O-RUs.
+         The number of south-nodes is at most one for cascade O-RU and
+         more than one for FHM";
+
+      leaf name{
+        type string;
+        description
+         "the name of shared-cell-copy-entity.";
+      }
+
+      leaf odu-id {
+        if-feature feat:SHARED-ORU-MULTI-ODU;
+        type string;
+        description
+          "An optional o-du identity associated with this list entry.
+          When present, indicates that the list entry is associated with
+          a particular odu-id.";
+      }
+
+      leaf sro-id {
+        if-feature feat:SHARED-ORU-MULTI-OPERATOR;
+        type leafref {
+          path "/or-user:users/or-user:user/or-user:sro-id";
+        }
+        description
+          "An optional shared resource identity associated with this list entry.
+          When present, indicates that the list entry corresponds to a shared cell copy entity
+          associated with a shared resouce operator where the sro-id
+          identifies the specific shared resouce operator.
+
+          This schema-node is used to refince NACM privileges for shared
+          resource operators";
+      }
+
+      uses processing-element-set;
+
+      container shared-cell-copy-uplane-config {
+        if-feature FHM;
+        description
+          "Container consists of uplane-info for copy-configuration for FHM.";
+
+        list tx-eaxc-id {
+          key eaxc-id;
+          description
+            "used for low-level-tx-endpoints to copy";
+
+          leaf eaxc-id {
+            type uint16;
+            description
+              "encoded value of eaxcid to be read by CU-Plane";
+          }
+      }
+        list rx-eaxc-id {
+          key eaxc-id;
+          description
+            "used for low-level-rx-endpoints to copy";
+
+          leaf eaxc-id {
+            type uint16;
+            description
+              "encoded value of eaxcid to be read by CU-Plane";
+          }
+        }
+        uses radio-offset;
+      }
+
+    } // shared-cell-copy-entities
+  } // shared-cell-copy-configuration (groupings)
+
+  grouping shared-cell-copy-configuration-for-selective-beam-id{
+    description
+      "shared-cell-copy-configuration for selective function by beam id";
+    list shared-cell-copy-entities-selective-beam-id{
+      key name;
+      description
+        "copy entity. The north-node is an O-DU or an O-RU.
+         The south-nodes are O-RUs.
+         The number of south-nodes is at most one for cascade O-RU and
+         more than one for FHM";
+
+      leaf name{
+        type string;
+        description
+         "the name of shared-cell-copy-entity.";
+      }
+
+      leaf odu-id {
+        if-feature feat:SHARED-ORU-MULTI-ODU;
+        type string;
+        description
+          "An optional o-du identity associated with this list entry.
+          When present, indicates that the list entry is associated with
+          a particular odu-id.";
+      }
+
+      leaf sro-id {
+        if-feature feat:SHARED-ORU-MULTI-OPERATOR;
+        type leafref {
+          path "/or-user:users/or-user:user/or-user:sro-id";
+        }
+        description
+          "An optional shared resource identity associated with this list entry.
+          When present, indicates that the list entry corresponds to a shared cell copy entity
+          with selective bean id associated with a shared resouce operator where the sro-id
+          identifies the specific shared resouce operator.
+
+          This schema-node is used to refince NACM privileges for shared
+          resource operators";
+      }
+
+      uses processing-element-set-for-selective-beam-id;
+
+      container shared-cell-copy-uplane-config {
+        if-feature FHM;
+        description
+          "Container consists of uplane-info for copy-configuration for FHM.";
+
+        list tx-eaxc-id {
+          key eaxc-id;
+          description
+            "used for low-level-tx-endpoints to copy";
+
+          leaf eaxc-id {
+            type uint16;
+            description
+              "encoded value of eaxcid to be read by CU-Plane";
+          }
+      }
+        list rx-eaxc-id {
+          key eaxc-id;
+          description
+            "used for low-level-rx-endpoints to copy";
+
+          leaf eaxc-id {
+            type uint16;
+            description
+              "encoded value of eaxcid to be read by CU-Plane";
+          }
+        }
+        uses radio-offset;
+      }
+
+    } // shared-cell-copy-entities for SELECTIVE-BEAM-ID
+  } // shared-cell-copy-configuration (groupings) for SELECTIVE-BEAM-ID
+
+  grouping shared-cell-combine-configuration{
+    description
+      "shared-cell-combine-configuration";
+
+    list shared-cell-combine-entities{
+      key name;
+      description
+        "combine configuration. The north-node is O-DU or O-RU.
+         The south-nodes are O-RUs.
+         The number of south-nodes is at most one for cascade O-RU and
+         more than one for FHM";
+
+      leaf name{
+        type string;
+        description
+         "name of shared-cell-combine-entity";
+      }
+
+      leaf odu-id {
+        if-feature feat:SHARED-ORU-MULTI-ODU;
+        type string;
+        description
+          "An optional o-du identity associated with this list entry.
+          When present, indicates that the list entry is associated with
+          a particular odu-id.";
+      }
+
+      leaf sro-id {
+        if-feature feat:SHARED-ORU-MULTI-OPERATOR;
+        type leafref {
+          path "/or-user:users/or-user:user/or-user:sro-id";
+        }
+        description
+          "An optional shared resource identity associated with this list entry.
+          When present, indicates that the list entry corresponds to a shared cell combine entity
+          associated with a shared resouce operator where the sro-id
+          identifies the specific shared resouce operator.
+
+          This schema-node is used to refince NACM privileges for shared
+          resource operators";
+      }
+
+
+      uses processing-element-set;
+
+      leaf scs {
+            type o-ran-cmn:scs-config-type;
+            description
+            "sub-carrier spacing of U-Plane messages belong to combine-entity";
+        }
+
+      leaf ta3-prime-max {
+        type uint32;
+        units nanoseconds;
+        description
+          "indicates the latest time that FHM or cascade O-RU is allowed to
+           send UL U-plane message to north-node relative to reception
+           timing at O-RU antenna.";
+      }
+
+      leaf tx-duration {
+        type uint32;
+        units nanoseconds;
+        description
+          "informs FHM/Cascade O-RU of the maximum duration time of transmission
+          over the fronthaul interface to O-DU or north-node for messages
+          to be sent within Ta3-prime-max.";
+      }
+
+      uses shared-cell-combine-uplane-config;
+    }
+  }
+
+  grouping shared-cell-combine-configuration-for-selective-beam-id{
+    description
+      "shared-cell-combine-configuration for selective function by beam id";
+
+    list shared-cell-combine-entities-for-selective-beam-id{
+      key name;
+      description
+        "combine configuration. The north-node is O-DU or O-RU.
+         The south-nodes are O-RUs.
+         The number of south-nodes is at most one for cascade O-RU and
+         more than one for FHM";
+
+      leaf name{
+        type string;
+        description
+         "name of shared-cell-combine-entity";
+      }
+
+      leaf odu-id {
+        if-feature feat:SHARED-ORU-MULTI-ODU;
+        type string;
+        description
+          "An optional o-du identity associated with this list entry.
+          When present, indicates that the list entry is associated with
+          a particular odu-id.";
+      }
+
+      leaf sro-id {
+        if-feature feat:SHARED-ORU-MULTI-OPERATOR;
+        type leafref {
+          path "/or-user:users/or-user:user/or-user:sro-id";
+        }
+        description
+          "An optional shared resource identity associated with this list entry.
+          When present, indicates that the list entry corresponds to a shared cell combine entity
+          for selective beam id associated with a shared resouce operator where the sro-id
+          identifies the specific shared resouce operator.
+
+          This schema-node is used to refince NACM privileges for shared
+          resource operators";
+      }
+
+      uses processing-element-set;
+
+      leaf scs {
+            type o-ran-cmn:scs-config-type;
+            description
+            "sub-carrier spacing of U-Plane messages belong to combine-entity";
+        }
+
+      leaf ta3-prime-max {
+        type uint32;
+        units nanoseconds;
+        description
+          "indicates the latest time that FHM or cascade O-RU is allowed to
+           send UL U-plane message to north-node relative to reception
+           timing at O-RU antenna.";
+      }
+
+      leaf tx-duration {
+        type uint32;
+        units nanoseconds;
+        description
+          "informs FHM/Cascade O-RU of the maximum duration time of transmission
+          over the fronthaul interface to O-DU or north-node for messages
+          to be sent within Ta3-prime-max.";
+      }
+
+      uses shared-cell-combine-uplane-config;
+    }
+  }
+
+
+  grouping shared-cell-combine-uplane-config{
+    description
+      "shared cell related uplane configuration applicable to O-RU which
+       doesn't have radio transmission capability";
+    container shared-cell-combine-uplane-config {
+      if-feature FHM;
+      description
+        "when O-RU doesn't have radio transmission availability for FHM mode,
+         the required u-plane configuration for copy and combine function
+         are defined, instead of the lists of o-ran-uplane-conf.yang";
+
+      list rx-eaxc-id {
+        key eaxc-id;
+        description
+          "used for low-level-rx-endpoints to combine";
+        leaf eaxc-id {
+          type uint16;
+          description
+            "encoded value of eaxc-id to be read by CU-Plane";
+        }
+
+      leaf  number-of-prb {
+        type uint16;
+        description
+          "Determines max number of PRBs that can be scheduled in all sections
+          per one symbol.
+          This value is used when uplink C-plane message indicates that all PRBs
+          is indicated in the field of numPrbc or tx-duration is calculated.";
+      }
+
+      leaf-list cp-ul-section-type {
+         type enumeration {
+            enum ST1 {
+              description
+                "section type 1 is used.";
+            }
+            enum ST3P{
+             description
+                "section type 3 is used for PRACH .";
+            }
+            enum ST3M{
+             description
+                "section type 3 is used for PUxCH when mixed numeroloy is applied.";
+            }
+          }
+        description
+            "indicates what section type is used for a specific eaxc-id with a specfic
+            SCS/frameStructure which belongs to this combine-entity.";
+       }
+
+        container comression-method {
+          description
+            "for combine mechanism, compression method per eaxc-id applied in
+             south-node is known to FHM ";
+          uses cf:compression-details;
+        }
+      }
+
+      uses radio-offset;
+
+      leaf n-ta-offset {
+        type uint32;
+        units Tc;
+        mandatory true;
+        description
+          "Value of configurable N-TA offset
+          units are Tc=~0.5ns=1/1.96608GHz";
+      }
+
+      leaf  number-of-prb {
+        type uint16;
+        mandatory true;
+        status deprecated;
+        description
+          "Determines max number of PRBs that will be used in all sections
+          per one symbol.
+          This value is used only when uplink C-plane message indicates that
+          all PRB is used in the field of numPrbc
+
+          This node is deprecated and replaced by number-of-prb in the list of rx-eaxc-id.
+          This movement is intended to prevent the fragmentation of shared-cell-combine-entities
+          according to the different value of number-of-prb.";
+      }
+    }
+  }
+
+// top-level container
+  container shared-cell{
+    description
+      "This container for shared-cell consists of capability information and
+       configurable parameters";
+    uses shared-cell-module-capability;
+
+    container shared-cell-config {
+      description "configuration for shared cell.";
+      uses shared-cell-mode;
+
+      leaf max-num-rx-eaxc-ids-per-group {
+        if-feature FHM;
+        type leafref {
+          path "/o-ran-sc:shared-cell/o-ran-sc:shared-cell-module-cap/o-ran-sc:eaxc-id-group-capabilities/o-ran-sc:max-num-rx-eaxc-ids-per-group";
+          require-instance false;
+        }
+        description "RW value of max-num-rx-eaxc-ids-per-group";
+      }
+      leaf max-num-rx-eaxc-id-groups {
+        if-feature FHM;
+        type leafref {
+          path "/o-ran-sc:shared-cell/o-ran-sc:shared-cell-module-cap/o-ran-sc:eaxc-id-group-capabilities/o-ran-sc:max-num-rx-eaxc-id-groups";
+          require-instance false;
+        }
+        description "RW value of max-num-rx-eaxc-id-groups";
+      }
+
+      list rx-eaxc-id-group {
+        if-feature FHM;
+        must "count(../rx-eaxc-id-group) <= ../max-num-rx-eaxc-id-groups" {
+          error-message "too many rx-eaxcid-id groups";
+        }
+        key "representative-rx-eaxc-id";
+        description
+          "This is a list of the groups of the eAxC IDs.
+          Each group is a union of a 'representative-rx-eaxc-id'and 'member-rx-eaxc-id's.
+          When section type 3 C-Plane in UL direction is used with Section Extension 10 in the shared cell,
+          this group shall be informed to FHM.";
+        leaf representative-rx-eaxc-id {
+          type uint16;
+          description
+            "This parameter contains eAxC_ID that populates content of C-Plane section
+            extension 10 to eAxC_IDs configured in the group as 'member-rx-eaxc-id'(s).";
+        }
+        leaf-list member-rx-eaxc-id {
+          type uint16;
+          must "count(../member-rx-eaxc-id) <= ../../max-num-rx-eaxc-ids-per-group" {
+            error-message "too many rx-eaxcid-id members";
+          }
+          must "current()!=../representative-rx-eaxc-id" {
+            error-message "the representative eaxcid does not need to be a list member";
+          }
+          description
+            "This is a list of member eAxC IDs,which is associated with 'representative-rx-eaxc-id' in a group.";
+        }
+      }
+
+      leaf enhanced-t-combine-enabled {
+        if-feature feat:ENHANCED-T-COMBINE;
+        type boolean;
+        default false;
+           description
+             "O-DU informs FHM/Cascade O-RU that t-combine-net and tx-duration
+             are used to calculate T-waiting instead of t-combine.";
+      }
+
+      leaf multiple-scs-in-eaxc-used {
+        if-feature feat:MULTIPLE-SCS-IN-EAXC;
+        type boolean;
+        default false;
+        description
+          "O-DU informs FHM/Cascade O-RU that multiple scs or
+          multiple section types in a single eAxC id are used.";
+      }
+    }
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-shared-cell@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-shared-cell@2020-12-10.yang
deleted file mode 100644
index 3c4d2a4..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-shared-cell@2020-12-10.yang
+++ /dev/null
@@ -1,564 +0,0 @@
-module o-ran-shared-cell {
-  yang-version 1.1;
-  namespace "urn:o-ran:shared-cell:1.0";
-  prefix "o-ran-sc";
-
-  import o-ran-compression-factors {
-    prefix "cf";
-  }
-  import o-ran-processing-element {
-    prefix "o-ran-pe";
-    revision-date 2020-04-17;
-  }
-
-  organization "O-RAN Alliance";
-
-  contact
-    "www.o-ran.org";
-
-  description
-    "This module defines the YANG definitions for shared cell capable O-RU (Cascade and FHM).
-
-    Copyright 2020 the O-RAN Alliance.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the above disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the above disclaimer in the documentation
-    and/or other materials provided with the distribution.
-    * Neither the Members of the O-RAN Alliance nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.";
-
-  revision "2020-12-10" {
-    description
-      "version 5.0.0
-
-      1) added selective combining using beamId.";
-
-    reference "ORAN-WG4.M.0-v05.00";
-  }
-
-  revision "2020-04-17" {
-    description
-      "version 3.0.0
-
-      1) initial version for shared cell O-RU related yang module.";
-
-    reference "ORAN-WG4.M.0-v03.00";
-  }
-
-  feature FHM {
-    description
-      "Presence of feature indicates that O-RU acts as FHM and doesn't have
-       the capability of radio transmission and reception. Absence of feature
-       indicates that O-RU does not act as FHM and supports radio transmission
-       and reception function.";
-  }
-
-  feature SELECTIVE-BEAM-ID {
-    description
-      "Presence of feature indicates that FHM supports the selective combining
-      function by using beamId";
-  }
-
-  // radio offsets
-  grouping radio-offset {
-    description
-      "shared cell FHM mode needs the configuration for radio related offset";
-    leaf downlink-radio-frame-offset {
-      type uint32 {
-        range 0..12288000;
-      }
-      mandatory true;
-
-      description
-        "This parameter is used for offsetting the starting position of
-         10ms radio frame.
-         Note: Unit is 1/1.2288e9 sec.";
-    }
-
-    leaf downlink-sfn-offset {
-      type int16 {
-        range -32768..32767;
-      }
-      mandatory true;
-
-      description
-        "This parameter is used for offsetting SFN value.
-        Unit is 10ms.";
-    }
-  }
-
-  // shared cell capability
-  grouping shared-cell-module-capability{
-    description
-      "shared cell related module capability of O-RU";
-    container shared-cell-module-cap {
-      config false;
-      description
-      "indicates shared cell specific module capability";
-
-      leaf t-copy {
-        type uint32;
-        units nanoseconds;
-        mandatory true;
-        description
-          "Corresponding to the maximum FHM or cascade O-RU processing delay
-           between receiving an IQ sample over the fronthaul interface from
-           the north-node, coping it and transmitting it over the fronthaul
-           interface to the south-node.";
-      }
-
-      leaf t-combine {
-        type uint32;
-        units nanoseconds;
-        mandatory true;
-        description
-          "Corresponding to the maximum FHM or cascade O-RU processing delay
-           between receiving an IQ sample over the fronthaul interface from
-           the south-node(s), combing them and transmitting it over the
-           fronthaul interface to the north-node.";
-      }
-
-      leaf ta3-prime-max-upper-range {
-        type uint32;
-        units nanoseconds;
-        mandatory true;
-        description
-          "The upper limit for the configurable ta3-prime-max value.
-           This is the capability information of O-RU that comes from
-           the O-RU internal memory for the combine operation.";
-      }
-
-      leaf max-number-node-copy-and-combine {
-        type uint8{
-          range "1..max";
-        }
-        mandatory true;
-        description
-          "Indicates the maximum number of south-node for the copy-and-combine
-           functions of cascade O-RU or FHM.
-           For cascade mode, this value is one. It means
-           O-RU copies the stream of eCPRI messages only once for the connected
-           south-node and copied stream are forwarded to the south-node.
-           Similarly, the cascade O-RU combines once for the streams of
-           eCPRI messages received from the south node and the streams of radio
-           reception function.
-           For FHM mode, FHM is able to copy the stream of eCPRI messages
-           according to this parameter and forward each copied stream
-           to each south-node. FHM is able to combine the streams of eCPRI
-           messages received from the multiple south-nodes corresponding to
-           this parameter at most.";
-      }
-
-      leaf max-number-eaxcid-copy {
-        type uint8{
-          range "1..max";
-        }
-        mandatory true;
-        description
-          "Indicates the maximum number of eaxc-ids for the copy functions
-           of cascade O-RU or FHM.
-           For Cascade, it is same number of static-low-level-tx-endpoints plus
-           static-low-level-rx-endpoints, for which low-level-tx(rx)-endpoints
-           are configured with eaxc-id in u-plane configuration.
-           For FHM, it is max configurable number of eaxc-ids in
-           tx-eaxc-id and rx-eaxc-id in shared-cell-copy-uplane-config.";
-      }
-
-      leaf max-number-eaxcid-combine {
-        type uint8{
-          range "1..max";
-        }
-        mandatory true;
-        description
-          "Indicates the maximum number of eaxc-ids for the combine functions
-           of cascade O-RU or FHM.
-           For Cascade, it is same number of static-low-level-rx-endpoints,
-           for which low-level-rx-endpoints are configured with eaxc-id in
-           u-plane configuration.
-           For FHM, it is max configurable number of eaxc-ids in rx-eaxc-id
-           in shared-cell-combine-uplane-config.";
-      }
-
-      list compression-method-supported {
-        if-feature FHM;
-        description
-          "List of supported compression methods for FHM";
-        uses cf:compression-details;
-      }
-    }
-  }
-
-  // shared cell mode configuration
-  grouping shared-cell-mode{
-    description
-      "A grouping defining the schema nodes for shared cell configuration";
-    choice shared-cell-copy-combine-mode {
-      case COMMON {
-        description
-         "all eCPRI payload are the target for copy and combine functions.
-          Common set of eaxc-ids are used in O-RU in the shared cell network.
-          For cascade mode, eaxc-ids of low-level-tx(rx)-links in
-          o-ran-uplane-configuration that has relation to the
-          processing-element are used.
-          For FHM mode, eaxc-ids of shared-cell-copy-uplane-config and
-          those of shared-cell-combine-config are used.";
-
-          uses shared-cell-copy-configuration;
-          uses shared-cell-combine-configuration;
-      }
-      case SELECTIVE-BEAM-ID {
-        if-feature "FHM and SELECTIVE-BEAM-ID";
-        description
-        "Case that FHM has selective transmission and reception fucntion
-         by using beamId";
-
-         uses shared-cell-copy-configuration-for-selective-beam-id;
-         uses shared-cell-combine-configuration-for-selective-beam-id;
-      }
-      case SELECTIVE {
-        description "for future use";
-      }
-      description
-       "configuration mode can be selected.";
-    }
-  }
-
-  // processing elements set
-  grouping processing-element-set{
-    description
-      "shared-cell-copy/combine-configuration refers the pair of processing
-      element set of a north-node and a south-node.";
-
-    leaf north-node-processing-element{
-      type leafref {
-        path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
-        }
-      description
-        "north-node processing element indicates the set of
-         'north-node-mac-address', 'ru-mac-address' and 'vlan-id' in case
-         north-eth-flow is selected for the transport flow.";
-    }
-
-    leaf-list south-node-processing-elements{
-      type leafref {
-        path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
-      }
-      description
-        "south-node processing elements indicate the sets of
-         'south-node-mac-address', 'ru-mac-address' and 'vlan-id' in case
-          south-eth-flow is selected for the transport flow.";
-    }
-  } // processing-element-set
-
-  // processing elements set for SELECTIVE-BEAM-ID
-  grouping processing-element-set-for-selective-beam-id{
-    description
-      "shared-cell-copy/combine-configuration refers the pair of processing
-      element set of a north-node and a south-node.";
-
-    leaf north-node-processing-element{
-      type leafref {
-        path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
-        }
-      description
-        "north-node processing element indicates the set of
-         'north-node-mac-address', 'ru-mac-address' and 'vlan-id' in case
-         north-eth-flow is selected for the transport flow.";
-    }
-
-    leaf-list south-node-processing-elements{
-      type leafref {
-        path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
-      }
-      description
-        "south-node processing elements indicate the sets of
-         'south-node-mac-address', 'ru-mac-address' and 'vlan-id' in case
-          south-eth-flow is selected for the transport flow.";
-    }
-
-    list mapping-table-for-selective-beam-id {
-      key "global-beam-id south-node-processing-elements";
-      description "the mapping information between global-beam-id and local-beam-id";
-
-      leaf global-beam-id{
-      type uint16;
-      description
-      "This parameter indicates the beam ID to be applied to the U-Plane data
-      on O-DU as same as existing beamId. One global beamId can be mapped
-      to one or multiple local beamId.
-      The mapping information between each global beamId, O-RU(s),
-      and local beamId is configured to the FHM during M-Plane start-up procedure.";
-    }
-    leaf south-node-processing-elements {
-      type leafref {
-        path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
-      }
-      description
-        "south-node processing elements indicate the sets of
-         'south-node-mac-address', 'ru-mac-address' and 'vlan-id' in case
-          south-eth-flow is selected for the transport flow.";
-    }
-    leaf local-beam-id {
-      type uint16;
-      description "This parameter indicates the beam ID to be applied to
-      the U-Plane data on O-RU as same as existing beamId.
-      In one O-RU, different beams can not map to one global beamId.
-      Local beamId shall be unique within O-RU.";
-    }
-  }
-  } // processing-element-set for SELECTIVE-BEAM-ID
-
-  // shared cell copy and combine config
-  grouping shared-cell-copy-configuration{
-    description
-      "shared-cell-copy-configuration";
-    list shared-cell-copy-entities{
-      key name;
-      description
-        "copy entity. The north-node is an O-DU or an O-RU.
-         The south-nodes are O-RUs.
-         The number of south-nodes is at most one for cascade O-RU and
-         more than one for FHM";
-
-      leaf name{
-        type string;
-        description
-         "the name of shared-cell-copy-entity.";
-      }
-
-      uses processing-element-set;
-
-      container shared-cell-copy-uplane-config {
-        if-feature FHM;
-        description
-          "Container consists of uplane-info for copy-configuration for FHM.";
-
-        list tx-eaxc-id {
-          key eaxc-id;
-          description
-            "used for low-level-tx-endpoints to copy";
-
-          leaf eaxc-id {
-            type uint16;
-            description
-              "encoded value of eaxcid to be read by CU-Plane";
-          }
-      }
-        list rx-eaxc-id {
-          key eaxc-id;
-          description
-            "used for low-level-rx-endpoints to copy";
-
-          leaf eaxc-id {
-            type uint16;
-            description
-              "encoded value of eaxcid to be read by CU-Plane";
-          }
-        }
-        uses radio-offset;
-      }
-
-    } // shared-cell-copy-entities
-  } // shared-cell-copy-configuration (groupings)
-
-  grouping shared-cell-copy-configuration-for-selective-beam-id{
-    description
-      "shared-cell-copy-configuration for selective function by beam id";
-    list shared-cell-copy-entities-selective-beam-id{
-      key name;
-      description
-        "copy entity. The north-node is an O-DU or an O-RU.
-         The south-nodes are O-RUs.
-         The number of south-nodes is at most one for cascade O-RU and
-         more than one for FHM";
-
-      leaf name{
-        type string;
-        description
-         "the name of shared-cell-copy-entity.";
-      }
-
-      uses processing-element-set-for-selective-beam-id;
-
-      container shared-cell-copy-uplane-config {
-        if-feature FHM;
-        description
-          "Container consists of uplane-info for copy-configuration for FHM.";
-
-        list tx-eaxc-id {
-          key eaxc-id;
-          description
-            "used for low-level-tx-endpoints to copy";
-
-          leaf eaxc-id {
-            type uint16;
-            description
-              "encoded value of eaxcid to be read by CU-Plane";
-          }
-      }
-        list rx-eaxc-id {
-          key eaxc-id;
-          description
-            "used for low-level-rx-endpoints to copy";
-
-          leaf eaxc-id {
-            type uint16;
-            description
-              "encoded value of eaxcid to be read by CU-Plane";
-          }
-        }
-        uses radio-offset;
-      }
-
-    } // shared-cell-copy-entities for SELECTIVE-BEAM-ID
-  } // shared-cell-copy-configuration (groupings) for SELECTIVE-BEAM-ID
-
-  grouping shared-cell-combine-configuration{
-    description
-      "shared-cell-combine-configuration";
-
-    list shared-cell-combine-entities{
-      key name;
-      description
-        "combine configuration. The north-node is O-DU or O-RU.
-         The south-nodes are O-RUs.
-         The number of south-nodes is at most one for cascade O-RU and
-         more than one for FHM";
-
-      leaf name{
-        type string;
-        description
-         "name of shared-cell-combine-entity";
-      }
-
-      uses processing-element-set;
-
-      leaf ta3-prime-max {
-        type uint32;
-        units nanoseconds;
-        description
-          "indicates the latest time that FHM or cascade O-RU is allowed to
-           send UL U-plane message to north-node relative to reception
-           timing at O-RU antenna.";
-      }
-
-      uses shared-cell-combine-uplane-config;
-    }
-  }
-
-  grouping shared-cell-combine-configuration-for-selective-beam-id{
-    description
-      "shared-cell-combine-configuration for selective function by beam id";
-
-    list shared-cell-combine-entities-for-selective-beam-id{
-      key name;
-      description
-        "combine configuration. The north-node is O-DU or O-RU.
-         The south-nodes are O-RUs.
-         The number of south-nodes is at most one for cascade O-RU and
-         more than one for FHM";
-
-      leaf name{
-        type string;
-        description
-         "name of shared-cell-combine-entity";
-      }
-
-      uses processing-element-set;
-
-      leaf ta3-prime-max {
-        type uint32;
-        units nanoseconds;
-        description
-          "indicates the latest time that FHM or cascade O-RU is allowed to
-           send UL U-plane message to north-node relative to reception
-           timing at O-RU antenna.";
-      }
-
-      uses shared-cell-combine-uplane-config;
-    }
-  }
-
-
-  grouping shared-cell-combine-uplane-config{
-    description
-      "shared cell related uplane configuration applicable to O-RU which
-       doesn't have radio transmisison capability";
-    container shared-cell-combine-uplane-config {
-      if-feature FHM;
-      description
-        "when O-RU doesn't have radio transmisison availability for FHM mode,
-         the required u-plane configuration for copy and combine function
-         are defined, instead of the lists of o-ran-uplane-conf.yang";
-
-      list rx-eaxc-id {
-        key eaxc-id;
-        description
-          "used for low-level-rx-endpoints to combine";
-        leaf eaxc-id {
-          type uint16;
-          description
-            "encoded value of eaxc-id to be read by CU-Plane";
-        }
-        container comression-method {
-          description
-            "for combine mechanism, compression method per eaxc-id applied in
-             south-node is known to FHM ";
-          uses cf:compression-details;
-        }
-      }
-
-      uses radio-offset;
-
-      leaf n-ta-offset {
-        type uint32;
-        units Tc;
-        mandatory true;
-        description
-          "Value of configurable N-TA offset
-          units are Tc=~0.5ns=1/1.96608GHz";
-      }
-
-      leaf  number-of-prb {
-        type uint16;
-        mandatory true;
-        description
-          "Determines max number of PRBs that will be used in all sections
-          per one symbol.
-          This value is used only when uplink C-plane message indicates that
-          all PRB is used in the field of numPrbc";
-      }
-    }
-  }
-
-// top level container
-  container shared-cell{
-    description
-      "This container for shared-cell consists of capability information and
-       configurable parameters";
-    uses shared-cell-module-capability;
-
-    container shared-cell-config {
-      description "configuration for shared cell.";
-      uses shared-cell-mode;
-    }
-  }
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-software-management@2019-07-03.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-software-management.yang
similarity index 72%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-software-management@2019-07-03.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-software-management.yang
index e9f3448..c47408d 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-software-management@2019-07-03.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-software-management.yang
@@ -17,7 +17,11 @@
   }
 
   import o-ran-file-management {
-    prefix "o-ran-fm";
+    prefix "o-ran-file-mgmt";
+  }
+
+  import o-ran-wg4-features {
+    prefix "or-feat";
   }
 
   organization "O-RAN Alliance";
@@ -29,7 +33,7 @@
     "This module defines operations and configuration for the management of software packages.
     This module is derived out of opencpe-firmware-mgmt@2014-02-06.yang
 
-    Copyright 2019 the O-RAN Alliance.
+    Copyright 2021 the O-RAN Alliance.
 
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -55,6 +59,63 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-12-05" {
+    description
+      "version 11.0.0
+
+      1) SW Install timeout
+      2) check integrity directly after download";
+
+    reference "ORAN-WG4.M.0-v11.00";
+  }
+
+  revision "2022-08-15" {
+    description
+      "version 9.1.0
+
+      1) clarified description statements
+      2) style guide corrections
+      3) changed import prefix for o-ran-file-management";
+
+    reference "ORAN-WG4.M.0-v09.00";
+  }
+
+  revision "2022-04-18" {
+    description
+      "version 9.0.0
+
+      1) aded new parameter build-content-download";
+
+    reference "ORAN-WG4.M.0-v09.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) typographical corrections in descriptions
+      2) new option to use IANA private enterprise number as vendor-code";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+  revision "2021-07-26" {
+    description
+      "version 7.0.0
+
+      1) added FTPES support";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 1.1.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
   revision "2019-07-03" {
     description
       "version 1.0.2
@@ -78,6 +139,8 @@
     reference "ORAN-WG4.M.0-v01.00";
   }
 
+
+
   // groupings
 
   grouping slot-group {
@@ -88,28 +151,30 @@
       min-elements 2;
 
       description
-        "Information about available software-slots and their software.";
+        "Information about available software-slots, their status, state and content.";
 
       leaf name {
         type string;
 
         description
-          "Name of the software package. This shall be unique to identify the software-slot.";
+          "Name of the software slot. This shall be unique to identify the software-slot.";
       }
 
       leaf status {
         type enumeration {
           enum VALID {
             description
-              "Slot Contains software build considered as proven valid";
+              "Slot contains software considered as proven valid";
           }
           enum INVALID {
             description
-              "software build is not currently used by O-RU. The software is considered by O-RU as damaged (e.g. wrong CRC)";
+              "Software in the slot is considered by O-RU as invalid (e.g. wrong CRC).
+              O-RU prohibits activation of slot with such status.";
           }
           enum EMPTY {
             description
-              "W slot does not contain software package.";
+              "Slot does not contain software package. O-RU prohibits activation of slot
+              with such status.";
           }
         }
         config false;
@@ -131,7 +196,7 @@
       must "../status = 'VALID'";
         config false;
           description
-            "informs if software stored in particular slot is used at the moment";
+            "Informs if software stored in particular slot is used at the moment";
       }
 
       leaf access {
@@ -150,7 +215,7 @@
         config false;
 
         description
-          "Indicates the writability of the slot.
+          "Indicates the writeability of the slot.
           A Read-Only software slot is one which has a factory installed software-slot";
       }
 
@@ -165,12 +230,15 @@
 
       leaf vendor-code {
         type string {
-          length 1..2;
+          length 1..5;
+          pattern '(.{1,2})|(\d{1,5})';
         }
         config false;
 
         description
-          "Unique code of the vendor. This is derived from manifest file.";
+          "Unique code of the vendor. This is derived from manifest file.
+
+          This may be a 1 or two upper case characters or a 1-5 digit IANA Private Enterprise Number.";
       }
 
       leaf build-id {
@@ -178,7 +246,7 @@
         config false;
 
         description
-          "Identity associated with the software build. This is derived from manifest file.";
+          "Identity associated with the software. This is derived from manifest file.";
       }
 
       leaf build-name {
@@ -198,7 +266,7 @@
         key "name";
         config false;
 
-        description "List of all the files present in the software package.";
+        description "List of all the files present in the software slot.";
 
         leaf name {
           type string;
@@ -241,22 +309,29 @@
 
   grouping download-input {
     description
-      "Grouping for sw download rpc input";
+      "Grouping for SW download RPC input";
     leaf remote-file-path {
       type inet:uri;
       mandatory true;
       description
         "URI of the software image including username.
         The following format is possible:
-        sftp://<username>@<host>[:<port>]/path";
+        When file download is via sftp, the format shall be of the form
+        sftp://<username>@<host>[:<port>]/path
+        When file transfer is via FTPES, the format shall be of the form
+        ftpes://<username>@<host>[:port]/path
+
+        Note, ftpes is not an IANA registered URI scheme, but used here to signal
+        that a file transfer should be performed over FTPES.";
     }
 
-    uses o-ran-fm:credential-information;
+
+    uses o-ran-file-mgmt:credential-information;
   }
 
   grouping download-output {
     description
-      "Grouping for sw download rpc output";
+      "Grouping for SW download RPC output";
     leaf status {
       type enumeration {
         enum STARTED {
@@ -271,18 +346,18 @@
       mandatory true;
 
       description
-        "Status of the software files download";
+        "Status of the software file download";
     }
     leaf error-message {
       when "../status = 'FAILED'";
       type string;
 
       description
-        "Detailed error Message when the status is failed.";
+        "Detailed error Message when the status is FAILED.";
     }
 
     leaf notification-timeout {
-      type int32;
+      type int32 {range "1..max";}
       units seconds;
       default 30;
 
@@ -296,7 +371,7 @@
 
   grouping install-input {
     description
-      "Grouping for sw installation rpc input";
+      "Grouping for SW installation RPC input";
     leaf slot-name {
       type leafref {
         path "/software-inventory/software-slot/name";
@@ -307,7 +382,7 @@
       mandatory true;
 
       description
-        "software-slot to which the software shall be installed to.";
+        "Software slot to which the software shall be installed.";
     }
 
     leaf-list file-names {
@@ -320,7 +395,7 @@
 
   grouping install-output {
     description
-      "Grouping for sw installation rpc output";
+      "Grouping for SW installation RPC output";
     leaf status {
       type enumeration {
         enum STARTED {
@@ -335,20 +410,30 @@
       mandatory true;
 
       description
-        "Status of the software package install.";
+        "Status of the software package installation to software slot.";
     }
     leaf error-message {
       when "../status = 'FAILED'";
       type string;
 
       description
-        "Detailed error Message when the status is failed.";
+        "Detailed error Message when the status is FAILED.";
+    }
+
+    leaf sw-install-timeout {
+      type int32 {range "1..max";}
+      units seconds;
+
+      description
+        "Optional timeout indicated by O-RU after which time
+        an 'install-event' notification will be sent indicating
+        the installation procedure has timed out.";
     }
   }
 
   grouping activate-input {
     description
-      "Grouping for sw activation rpc input";
+      "Grouping for SW activation RPC input";
     leaf slot-name {
       type leafref {
         path "/software-inventory/software-slot/name";
@@ -365,7 +450,7 @@
 
   grouping activate-output {
     description
-      "Grouping for sw activation rpc output";
+      "Grouping for SW activation RPC output";
     leaf status {
       type enumeration {
         enum STARTED {
@@ -387,11 +472,11 @@
       type string;
 
       description
-        "Detailed error Message when the status is failed.";
+        "Detailed error Message when the status is FAILED.";
     }
 
     leaf notification-timeout {
-      type int32;
+      type int32 {range "1..max";}
       units seconds;
       default 30;
 
@@ -408,23 +493,23 @@
       mandatory true;
 
       description
-        "File name of downloaded software package";
+        "File name of transferred software file.";
     }
 
     leaf status {
       type enumeration {
         enum COMPLETED {
           description
-            "Operation completed succesfully";
+            "Operation completed successfully";
         }
         enum AUTHENTICATION_ERROR {
-          description "source available, wrong credentials";
+          description "Source available, wrong credentials";
         }
         enum PROTOCOL_ERROR {
-          description "SFTP errors";
+          description "SFTP or FTPES errors";
         }
         enum FILE_NOT_FOUND {
-          description "source not available.";
+          description "Source not available.";
         }
         enum APPLICATION_ERROR {
           description "Application related errors";
@@ -432,6 +517,9 @@
         enum TIMEOUT {
           description "Timeout waiting for download";
         }
+        enum INTEGRITY_ERROR {
+          description "File is corrupted";
+        }
       }
 
       description
@@ -461,17 +549,20 @@
       type enumeration {
         enum COMPLETED {
           description
-            "Operation completed succesfully";
+            "Operation completed successfully";
         }
         enum FILE_ERROR {
-          description "operation on the file resulted in in error, disk failure, not enough disk space,
+          description "Operation on the file resulted in in error, disk failure, not enough disk space,
                       incompatible file format";
         }
         enum INTEGRITY_ERROR {
-          description "file is corrupted";
+          description "File is corrupted";
         }
         enum APPLICATION_ERROR {
-          description "operation failed due to internal reason";
+          description "Operation failed due to internal reason";
+        }
+        enum TIMEOUT {
+          description "Install operation timed out";
         }
       }
 
@@ -503,7 +594,7 @@
       type enumeration {
         enum COMPLETED {
           description
-            "Operation completed succesfully";
+            "Operation completed successfully";
         }
         enum APPLICATION_ERROR {
           description
@@ -518,7 +609,7 @@
       type uint8;
 
       description
-        "status code return when the software is tried to activate";
+        "Status code return when the software is tried to activate";
     }
     leaf error-message {
       when "../status != 'COMPLETED'";
@@ -529,21 +620,35 @@
     }
   }
 
-  // top level container
+  // top-level container
 
   container software-inventory {
     config false;
     description
-      "Contains information about each software slot and its content.";
+      "Contains information about each software slot and its content as well as information related to
+      software processing.";
 
     uses slot-group;
 
+    leaf build-content-download {
+      type empty;
+      description
+        "An optional leaf used to indicate that the O-RU requires separate download procedures to be
+        re-used for downloading individual files in a software build, instead of a single archived package.";
+    }
+
+    leaf integrity-check-at-download-enabled {
+      if-feature or-feat:INTEGRITY-CHECK-AT-SW-DOWNLOAD;
+      type empty;
+      description "Presence of this node enables O-RU to perform integrity check at file download.";
+    }
+
   }
-    // rpc statements
+    // RPC statements
 
   rpc software-download {
     description
-      "Rpc needed to perform software download operation.";
+      "RPC needed to perform software download operation.";
 
     input {
       uses download-input;
@@ -555,7 +660,7 @@
 
   rpc software-install {
     description
-      "Install a previously downloaded software package.";
+      "Install a previously downloaded software.";
 
     input {
       uses install-input;
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-supervision.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-supervision.yang
new file mode 100644
index 0000000..e80b1f8
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-supervision.yang
@@ -0,0 +1,370 @@
+module o-ran-supervision {
+  yang-version 1.1;
+  namespace "urn:o-ran:supervision:1.0";
+  prefix "o-ran-supervision";
+
+  import ietf-yang-types {
+    prefix yang;
+  }
+
+  import o-ran-wg4-features {
+    prefix or-feat;
+  }
+
+  import ietf-inet-types {
+    prefix "inet";
+  }
+  import ietf-netconf-monitoring {
+    prefix ncm;
+  }
+
+
+  import o-ran-usermgmt {
+    prefix "or-user";
+  }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the configuration data and supervision RPCs that are
+    used to detect loss M-Plane connectivity.
+
+    Copyright 2021 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2022-12-05" {
+    description
+      "version 11.0.0
+
+      1) NETCONF session supervison with session id";
+
+    reference "ORAN-WG4.M.0-v11.00";
+  }
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) introduced SHARED-ORU-MULTI-ODU and SHARED-ORU-MULTI-OPERATOR features.";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 5.2.0
+
+      1) typographical corrections in descriptions.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 5.1.0
+
+      1) typographical corrections in descriptions.
+      2) removed non-ACSII characters.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2020-12-10" {
+    description
+      "version 5.0.0
+
+      1) added Event Producer-Collector supervision";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2020-04-17" {
+    description
+      "version 3.0.0
+
+      1) added output string to enable indication if config modification change has failed
+      2) corrected model description
+      3) removed erroneous text in notification description";
+
+    reference "ORAN-WG4.M.0-v03.00";
+  }
+
+  revision "2019-07-03" {
+    description
+      "version 2.0.0
+
+      1) added leafs for CU plane monitoring
+      2) backward compatible changes to introduce groupings";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2019-02-04" {
+    description
+      "version 1.0.0
+
+      1) imported model from xRAN
+      2) changed namespace and reference from xran to o-ran";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+
+
+
+  typedef event-collector-id {
+    type union {
+      type inet:ip-address;
+      type inet:uri;
+    }
+    description "An Event Collector identifier";
+  }
+
+  grouping watchdog-input {
+    description "a watchdog input grouping";
+    leaf supervision-notification-interval {
+      type uint16;
+      units seconds;
+      default 60;
+      description
+        "The interval in seconds at which supervision notifications are sent.
+        If not specified the default value of 60 seconds shall apply.";
+    }
+    leaf guard-timer-overhead {
+      type uint16;
+      units seconds;
+      default 10;
+      description
+        "This is overhead added to the supervision timer used to calculate the
+         supervision watchdog timer. i.e.,
+
+         supervision timer = notification timer + guard-timer-overhead
+
+         If not specified the default value of 10 seconds shall apply.
+
+         Failure to send this RPC again within the timeout sets the radio into
+         'loss of supervision' state.
+
+         NOTE - The supervision timer MUST not be less that the confirmed
+         timeout timer (when the feature is supported).
+
+         This type of constraint (using an RPC's input) cannot be formally
+         expressed in YANG.";
+    }
+  }
+
+  grouping watchdog-output {
+    description "a watchdog output grouping";
+    leaf next-update-at {
+      type yang:date-and-time;
+      description
+        "Indicates the time when the next supervision notification is expected.";
+    }
+
+    leaf error-message {
+      type string;
+
+      description
+        "An optional error message, e.g., used when the RPC input attempts to
+        modify a locked running configuration.
+
+        Take note, the supervision-notification-interval and guard-timer-overhead
+        have default values and so their values can be modified even when a leaf is
+        not included in the RPC input.";
+    }
+  }
+
+  grouping supervision-notification-data {
+    description "a supervision notification data grouping";
+    leaf session-id {
+      if-feature or-feat:SUPERVISION-WITH-SESSION-ID;
+      type leafref {
+        path "/ncm:netconf-state/ncm:sessions/ncm:session/ncm:session-id";
+      }
+      mandatory true;
+      description
+        "This value uniquely identifies the NETCONF session in an O-RU. The value is conveyed to NETCONF client in hello message.
+        the session-id for the netconf session is sent as part of each supervision-notification notification.
+        and may be used for create-subscription to filter the relevant
+        notifications";
+    }
+  }
+
+  grouping supervision-group {
+    description "a supervision grouping";
+    container cu-plane-monitoring {
+      presence
+        "Indicates O-RU supports timer based cu-plane monitoring interval. If
+        this container is NOT present, the operation of the O-RU is undefined.";
+      description "container describing operation of CU plane monitoring";
+
+      leaf configured-cu-monitoring-interval {
+        type uint8 {
+          range "0..160";
+        }
+        units milliseconds;
+        default 160;
+        description
+          "This value corresponds to the configured value of the timer used by
+          the O-RU to monitor the C/U plane connection.
+
+          A value of 0 means that the O-RU's shall disable its CU plane
+          monitoring.
+
+          A NETCONF client should configure the value according to the
+          configuration of the PHY layer and/or C/U plane section types
+          supported and/or any fault tolerant operation. For example,
+
+          i) when operating with an O-DU supporting non-LAA LTE, this value can
+          be configured to a value according to the repetition time of
+          transmitted reference symbols across the fronthaul interface
+          ii) when operating with an O-DU supporting C-Plane Section Type 0,
+          this value can configured to a value according to the minimum
+          repetition interval of section type 0.
+          iii) when operating with an O-DU supporting fault tolerant operation,
+          this value can be configured according to the fault tolerant heartbeat
+          interval ";
+      }
+    }
+    container event-collector-monitoring {
+      if-feature "or-feat:NON-PERSISTENT-MPLANE";
+      description "container describing operation of Event Collector monitoring";
+
+      leaf heartbeat-interval {
+        type uint8;
+        units seconds;
+        default 60;
+        description "the heartbeat interval";
+      }
+
+      leaf-list heartbeat-recipient-id {
+        type event-collector-id;
+        description
+          "A configured Event collector identity, to which the O-RU shall send heartbeat notifications";
+      }
+    }
+    container per-odu-monitoring {
+      if-feature "or-feat:SHARED-ORU-MULTI-ODU or or-feat:SHARED-ORU-MULTI-OPERATOR";
+      presence
+      "Indicates at least one of the O-RU Controllers intends to operate per O-DU supervision.";
+      description "container describing per-odu monitoring parameters";
+
+      list odu-ids {
+        if-feature or-feat:SHARED-ORU-MULTI-ODU;
+        key odu-id;
+        description
+          "an optional list of o-du identities that an O-RU controller intends to use with per
+          O-DU supervision in a single operator envrionment. The odu-id values are used to match
+          values received in the supervision-watchdog-reset rpc together with values configured in
+          o-ran-uplane-conf based configuration.
+          The O-RU does not further interpret the specific value of odu-id.";
+        leaf odu-id {
+          type string;
+          description "an o-du identity ";
+        }
+      }
+
+      list sro-ids-and-odu-ids {
+        if-feature "or-feat:SHARED-ORU-MULTI-ODU and or-feat:SHARED-ORU-MULTI-OPERATOR";
+        key "odu-id sro-id";
+        description
+          "an optional list of sro and o-du identities that an O-RU controller intends to use with per
+          O-DU supervision in a multi-operator envrionment. The sro-id and odu-id values are used to match
+          values received in the supervision-watchdog-reset rpc together with values configured in
+          o-ran-uplane-conf based configuration.
+          The O-RU does not further interpret the specific value of sro-id or odu-id.";
+        leaf odu-id {
+          type string;
+          description "an o-du identity ";
+        }
+        leaf sro-id {
+          type string;
+          description "an sro identity ";
+        }
+      }
+    }
+  }
+
+  container supervision {
+    description "top leval supervision container";
+    uses supervision-group;
+    // other WG specific monitoring containers follow here
+  }
+
+  rpc supervision-watchdog-reset {
+    description
+      "rpc to reset the watchdog timer";
+    input {
+      uses watchdog-input;
+
+      container context {
+        if-feature "or-feat:SHARED-ORU-MULTI-ODU or or-feat:SHARED-ORU-MULTI-OPERATOR";
+        description
+          "an optional container that defines the context associated with the
+          watchdog reset. Context can be used in supervision operations with
+          multiple O-DUs";
+
+        leaf odu-id {
+          if-feature or-feat:SHARED-ORU-MULTI-ODU;
+          type string;
+          description
+            "an optional o-du identity associated with this
+            supervision watchdog operation. If an odu-id received is not configured
+            in the list of tx-array-carriers or list of rx-array carriers, this leaf is ignored.
+            When it does correspond to an odu-id listed in tx-array-carriers and/or
+            rx-array-carriers, the odu-id is used in the operatrion of per O-DU supervision.";
+        }
+
+        leaf sro-id {
+          if-feature or-feat:SHARED-ORU-MULTI-OPERATOR;
+          type leafref {
+            path "/or-user:users/or-user:user/or-user:sro-id";
+          }
+          description
+            "The shared resource identity associated with the current NETCONF session.
+            A supervision-watchdog-reset RPC received from  NETCONF client
+            with user-group privileges of 'carrier' MUST be rejected
+            if it is received without a sro-id leaf.
+            In other scenarios, this leaf is optional and ignored by the O-RU.";
+        }
+      }
+    }
+
+    output {
+      uses watchdog-output;
+    }
+  }
+
+  notification supervision-notification {
+    description
+      "Notification to indicate that NETCONF management interface is up.";
+      uses supervision-notification-data;
+
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-supervision@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-supervision@2020-12-10.yang
deleted file mode 100644
index 4956f9b..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-supervision@2020-12-10.yang
+++ /dev/null
@@ -1,228 +0,0 @@
-module o-ran-supervision {
-  yang-version 1.1;
-  namespace "urn:o-ran:supervision:1.0";
-  prefix "o-ran-supervision";
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-
-  import o-ran-wg4-features {
-    prefix or-feat;
-  }
-
-  import ietf-inet-types {
-    prefix "inet";
-  }
-  
-  organization "O-RAN Alliance";
-
-  contact
-    "www.o-ran.org";
-
-  description
-    "This module defines the configuration data and supervision RPCs that are
-    used to detect loss M-Plane connectivity.
-
-    Copyright 2020 the O-RAN Alliance.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the above disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the above disclaimer in the documentation
-    and/or other materials provided with the distribution.
-    * Neither the Members of the O-RAN Alliance nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.";
-
-  revision "2020-12-10" {
-    description
-      "version 5.0.0
-
-      1) added Event Producer-Collector supervision";
-
-    reference "ORAN-WG4.M.0-v05.00";
-  }
-
-  revision "2020-04-17" {
-    description
-      "version 3.0.0
-
-      1) added output string to enable indication if config modification change has failed
-      2) corrected model description
-      3) removed erroneous text in notification description";
-
-    reference "ORAN-WG4.M.0-v03.00";
-  }
-
-  revision "2019-07-03" {
-    description
-      "version 2.0.0
-
-      1) added leafs for CU plane monitoring
-      2) backward compatible changes to introduce groupings";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-  revision "2019-02-04" {
-    description
-      "version 1.0.0
-
-      1) imported model from xRAN
-      2) changed namespace and reference from xran to o-ran";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-  typedef event-collector-id {
-    type union {
-      type inet:ip-address;
-      type inet:uri;
-    }
-    description "An Event Collector identifier";
-  }
-
-  grouping watchdog-input {
-    leaf supervision-notification-interval {
-      type uint16;
-      units seconds;
-      default 60;
-      description
-        "The interval in seconds at which supervision notifications are sent.
-        If not specified the default value of 60 seconds shall apply.";
-    }
-    leaf guard-timer-overhead {
-      type uint16;
-      units seconds;
-      default 10;
-      description
-        "This is overhead added to the supervision timer used to calculate the
-         supervision wathcdog timer. i.e.,
-
-         supervision timer = notification timer + guard-timer-overhead
-
-         If not specified the default value of 10 seconds shall apply.
-
-         Failure to send this rpc again within the timeout sets the radio into
-         'loss of supervision' state.
-
-         NOTE - The supervision timer MUST not be less that the confimed
-         timeout timer (when the feature is supported).
-
-         This type of constraint (using an RPCs input) cannot be formally
-         expressed in YANG.";
-    }
-  }
-
-  grouping watchdog-output {
-    leaf next-update-at {
-      type yang:date-and-time;
-      description
-        "Indicates the time when the next supervision notification is expected.";
-    }
-    leaf error-message {
-      type string;
-
-      description
-        "An optional error message, e.g., used when the RPC input attempts to
-        modify a locked running configuration.
-
-        Take note, the supervision-notification-interval and guard-timer-overhead
-        have default values and so their values can be modified even when a leaf is
-        not included in the RPC input.";
-    }
-  }
-
-  grouping supervision-group {
-    container cu-plane-monitoring {
-      description "container describing operation of CU plane monitoring";
-      presence
-        "Indicates O-RU supports timer based cu-plane monitoring interval. If
-        this container is NOT present, the opertaion of the O-RU is undefined.";
-
-      leaf configured-cu-monitoring-interval {
-        type uint8 {
-          range "0..160";
-        }
-        default 160;
-        units milliseconds;
-        description
-          "This value corresponds to the configured value of the timer used by
-          the O-RU to monitor the C/U plane connection.
-
-          A value of 0 means that the O-RU's shall disable its CU plane
-          monitoring.
-
-          A NETCONF client should configure the value according to the
-          configuration of the PHY layer and/or C/U plane section types
-          supported and/or any fault tolerant operation. For example,
-
-          i) when opertaing with an O-DU supporting non-LAA LTE, this value can
-          be configured to a value according to the repetition time of
-          transmitted reference symbols across the fronthaul interface
-          ii) when opertaing with an O-DU supporting C-Plane Section Type 0,
-          this value can configured to a value according to the minimum
-          repetition interval of section type 0.
-          iii) when operating with an O-DU supporting fault tolerant operation,
-          this value can be configured according to the fault tolerant heartbeat
-          interval ";
-      }
-    }
-    container event-collector-monitoring {
-      if-feature "or-feat:NON-PERSISTENT-MPLANE";
-      description "container describing operation of Event Collector monitoring";
-
-      leaf heartbeat-interval {
-        type uint8;
-        default 60;
-        units seconds;
-        description "the heartbeat interval";
-      }
-
-      leaf-list heartbeat-recipient-id {
-        type event-collector-id;
-        description
-          "A configured Event collector identity, to which the O-RU shall send heartbeat notifications";
-      }
-    }
-  }
-
-  container supervision {
-    uses supervision-group;
-    // other WG specific monitoring containers follow here
-  }
-
-  rpc supervision-watchdog-reset {
-    description
-      "rpc to reset the watchdog timer";
-    input {
-      uses watchdog-input;
-    }
-
-	  output {
-      uses watchdog-output;
-	  }
-  }
-
-  notification supervision-notification {
-    description
-      "Notification to indicate that NETCONF management interface is up.";
-
-  }
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-sync@2020-08-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-sync.yang
similarity index 88%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-sync@2020-08-10.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-sync.yang
index c8d8a74..9a26bdc 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-sync@2020-08-10.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-sync.yang
@@ -19,7 +19,7 @@
   description
     "This module defines synchronization mechanism for the O-RAN Equipment.
 
-    Copyright 2020 the O-RAN Alliance.
+    Copyright 2021 the O-RAN Alliance.
 
     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -45,17 +45,46 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-08-15" {
+    description
+      "version 8.1.0
+
+      1) clarifiy description of quality-level";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) typographical corrections in descriptions.
+      2) add support for boundary clock indication";
+
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 1.4.0
+
+      1) typographical corrections in descriptions.
+      2) Description alignment with specification.";
+
+    reference "ORAN-WG4.M.0-v04.00";
+  }
+
   revision "2020-08-10" {
     description
       "version 1.3.0
 
-      1) Update description of ENCHANCED under container sync-capability leaf sync-t-tsc with
+      1) Update description of ENCHANCED (sic) under container sync-capability leaf sync-t-tsc with
          correct reference to IEEE 802.1CM sections.
       2) Add description that CLASS_B and ENHANCED are as per IEEE802.1CM.
       3) Add freq-error and time-error leafs under container sync-status. This allows an O-DU to
          query the O-RU using NETCONF <get> procedure about the phase and frequency errors at
          any time.
-      4) Move delay-assymmetry outside of container g-8275-1-config as the delay assymetry
+      4) Move delay-asymmetry outside of container g-8275-1-config as the delay asymmetry
          is applicable to G.8275.2 as well
       5) Add gnss-rx-error in gnss-data for LLS-C4 configuration
       6) Correct the description of state enumerations under synce-status. The earlier
@@ -92,6 +121,16 @@
     reference "ORAN-WG4.M.0-v01.00";
   }
 
+  feature GNSS {
+    description
+      "This feature indicates that the equipment supports integrated GNSS functionality.";
+  }
+
+  feature ANTI-JAM {
+    description
+      "This feature indicates that the equipment supports Anti-jam functionality";
+  }
+
   typedef geographic-coordinate-degree {
            type decimal64 {
              fraction-digits 8;
@@ -101,16 +140,6 @@
               geographic coordinates.";
        }
 
-  feature GNSS {
-    description
-      "This feature indicates that the equipment supports integrated GNSS functionality.";
-  }
-
-  feature ANTI-JAM {
-    description
-      "This feature indicates that the equipment supports Anti-jam fuctionality";
-  }
-
   grouping sync-group {
     description "This group represents the state and status of timing and synchronization of the O-RU";
     container sync-status {
@@ -215,6 +244,12 @@
 
         reference "IEEE 802.1CM";
       }
+
+      leaf boundary-clock-supported {
+        type boolean;
+        description
+          "This parameter indicates whether O-RU supports the T-BC profiles in ITU-T G.8275.1.";
+      }
     }
 
     container ptp-config {
@@ -242,7 +277,7 @@
         type enumeration {
           enum G_8275_1 {
             description
-              "Usage of multicast over ethernet";
+              "Usage of multicast over Ethernet";
           }
 
           enum G_8275_2 {
@@ -252,7 +287,7 @@
         }
         default "G_8275_1";
         description
-          "Type of profile to be used in ptp setting";
+          "Type of profile to be used in PTP setting";
       }
       leaf delay-asymmetry {
         type int16 {
@@ -261,46 +296,46 @@
         default 0;
         description
           "Defines static phase error in the recovered PTP timing signal to be compensated at the O-RU.
-          The error is defined in units of nanoseconds in the range ±10 000 ns.
+          The error is defined in units of nanoseconds in the range +/-10 000 ns.
 
           If the deprecated delay-asymmetry schema node in the g-8275-1-config container is configured
           together with this schema node, then the O-RU shall use this schema node and ignore the
           value in the g-8275-1-config container.";
       }
 
-    	container g-8275-1-config {
-    	  when "../ptp-profile='G_8275_1'";
+      container g-8275-1-config {
+        when "../ptp-profile='G_8275_1'";
 
-    	  description
-    	    "Container allowing for configuration of G8275.1";
+        description
+          "Container allowing for configuration of G8275.1";
 
-          leaf multicast-mac-address {
-            type enumeration {
-              enum FORWARDABLE {
-                description
-                  "means, that PTP shall use 01-1B-19-00-00-00 destination MAC address";
-              }
-              enum NONFORWARDABLE {
-                description
-                  "means, that PTP shall use 01-80-C2-00-00-0E destination MAC address";
-              }
+        leaf multicast-mac-address {
+          type enumeration {
+            enum FORWARDABLE {
+              description
+                "means, that PTP shall use 01-1B-19-00-00-00 destination MAC address";
             }
-            default FORWARDABLE;
-            description
-              "The parameter defines destination MAC address, used by the DU in the egress PTP messages.";
-          }
-
-          leaf delay-asymmetry {
-            type int16 {
-              range -10000..10000;
+            enum NONFORWARDABLE {
+              description
+                "means, that PTP shall use 01-80-C2-00-00-0E destination MAC address";
             }
-            default 0;
-            status deprecated;
-            description
-              "Defines static phase error in the recovered PTP timing signal to be compensated at the O-RU.
-              The error is defined in units of nanoseconds in the range ±10 000 ns.";
           }
-    	}
+          default FORWARDABLE;
+          description
+            "The parameter defines destination MAC address, used by the DU in the egress PTP messages.";
+        }
+
+        leaf delay-asymmetry {
+          type int16 {
+            range -10000..10000;
+          }
+          default 0;
+          status deprecated;
+          description
+            "Defines static phase error in the recovered PTP timing signal to be compensated at the O-RU.
+            The error is defined in units of nanoseconds in the range +/-10 000 ns.";
+        }
+      }
 
       container g-8275-2-config {
         when "../ptp-profile='G_8275_2'";
@@ -320,7 +355,7 @@
         list master-ip-configuration {
           key local-priority;
           description
-            "The parameter defines list of ip configuration of devices acting as ptp signal source.";
+            "The parameter defines list of IP configuration of devices acting as PTP signal source.";
           leaf local-priority {
             type uint8;
             description
@@ -356,13 +391,13 @@
 
     container ptp-status {
       description
-        "ptp status container";
+        "PTP status container";
       leaf reporting-period {
         type uint8;
         default 10;
         description
           "This parameter defines minimum period in seconds between reports,
-          sent by the NETCONF Client, for parameters in this container.";
+          sent by the O-RU, for parameters in this container.";
       }
       leaf lock-state {
         type enumeration {
@@ -398,7 +433,7 @@
         config false;
         description
           "This parameter contains identity of the clock,
-            according to IEEE 1588-2008 defintion, controlled by the O-RU.
+            according to IEEE 1588-2008 definition, controlled by the O-RU.
           The string shall be formatted as an 8-octet hex value with the '0x' prefix.";
       }
 
@@ -414,7 +449,7 @@
         config false;
 
         description
-          "Synchronisation sources";
+          "Synchronization sources";
 
         leaf local-port-number {
           type leafref {
@@ -430,28 +465,28 @@
             enum PARENT {
               description
                 "Indicates that this source is the current master clock, i.e. the clock,
-                which the clock, controlled by the Netconf Server, is synchronized to";
+                which the clock, controlled by the NETCONF Server, is synchronized to";
             }
             enum OK {
               description
                 "Indicates that this source is an alternate master, which the clock,
-                controlled by the Netconf Server, can potentially synchronize to,
+                controlled by the NETCONF Server, can potentially synchronize to,
                 i.e. clock class and priority, announced by the master clock is lower,
-                compared to those of the clock, controlled by the Netconf Server,
+                compared to those of the clock, controlled by the NETCONF Server,
                 and and the clock class is accepted";
             }
             enum NOK {
               description
                 "Indicates that this source is an alternate master, which the clock,
-                controlled by the Netconf Server, has an operational connection to,
+                controlled by the NETCONF Server, has an operational connection to,
                 but the class or priority of the master clock is higher or equal
-                to those of the clock, controlled by the Netconf Server,
+                to those of the clock, controlled by the NETCONF Server,
                 or the clock class is not accepted";
             }
             enum DISABLED {
               description
                 "Indicates that this source is an alternate master, which the clock,
-                controlled by the Netconf Server, has no operational connection to";
+                controlled by the NETCONF Server, has no operational connection to";
             }
           }
           description
@@ -689,7 +724,7 @@
           default 10;
           description
             "This parameter defines minimum period in seconds between reports,
-             sent by the NETCONF client, for parameters in this container.";
+             sent by the O-RU, for parameters in this container.";
       }
 
       leaf lock-state {
@@ -733,16 +768,16 @@
             enum OK {
               description
                 "Indicates that this source is an alternate SyncE source, which the clock,
-                controlled by the Netconf Server, can potentially synchronize to, when the
+                controlled by the NETCONF Server, can potentially synchronize to, when the
                 clock quality of the primary SyncE signal advertised in ESMC packets is
                 lower than the expected or configured clock quality; or when this source
-                clock quality is better than the primary SyncE source clock quality";
+                clock's quality is better than the primary SyncE source clock quality";
             }
             enum NOK {
               description
                 "Indicates that this source is an alternate SyncE source, and the O-RU
                  has an operational connection to this alternate SyncE source, but the
-                 clock quality is not in the configured acceptable range";
+                 clock's quality is not in the configured acceptable range";
             }
             enum DISABLED {
               description
@@ -760,7 +795,9 @@
           }
           description
             "This parameter contains value of the SSM clock quality level,
-            received in SSM messages from the SyncE source.";
+            received in SSM messages from the SyncE source.
+            If multiple clock sources are available, the O-RU can select the
+            reference clock source based on the SSM quality level";
         }
         min-elements 1;
         description
@@ -849,7 +886,7 @@
         default 10;
         description
           "This parameter defines minimum period in seconds between reports,
-          sent by the NETCONF Client, for parameters in this container.";
+          sent by the O-RU, for parameters in this container.";
       }
       leaf name {
         type string {
@@ -949,7 +986,7 @@
 
   notification ptp-state-change {
     description
-      "Notification used to inform about ptp synchronization state change";
+      "Notification used to inform about PTP synchronization state change";
 
     leaf ptp-state{
       type leafref{
@@ -961,7 +998,7 @@
   }
   notification synce-state-change {
     description
-      "Notification used to inform about synce synchronization state change";
+      "Notification used to inform about syncE synchronization state change";
 
     leaf synce-state{
       type leafref{
@@ -974,7 +1011,7 @@
   notification gnss-state-change {
     if-feature GNSS;
     description
-      "Notification used to inform about gnss synchronization state change";
+      "Notification used to inform about GNSS synchronization state change";
 
     leaf gnss-state{
       type leafref{
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-trace@2019-07-03.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-trace.yang
similarity index 76%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-trace@2019-07-03.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-trace.yang
index 5bfead9..e135b75 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-trace@2019-07-03.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-trace.yang
@@ -37,6 +37,24 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-08-15" {
+    description
+      "version 1.2.0
+
+      1) clarified path/folder description.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 1.1.0
+
+      1) Typographical corrections.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
   revision "2019-07-03" {
     description
       "version 1.0.0
@@ -52,18 +70,18 @@
     leaf status {
       type enumeration {
         enum SUCCESS {
-          description "rpc completed correctly";
+          description "RPC completed correctly";
         }
         enum FAILURE {
-          description "rpc failed";
+          description "RPC failed";
         }
       }
-      description "result of rpc operation";
+      description "result of RPC operation";
     }
     leaf failure-reason {
       when "../status = 'FAILURE'";
       type string;
-      description "free form text description why error occurred";
+      description "free-form text description why error occurred";
     }
   }
 
@@ -89,14 +107,17 @@
     leaf-list log-file-name {
       type string;
       description
-        "The list of trace log file names on the O-RU.";
+        "The list of trace log file names on the O-RU. Each record in this list is expected to contain
+        location of the file (e.g. 'o-ran/log/') and the name of file (e.g.'my_trace_log_file.zip', where
+        'my_trace_log_file' is example file name and 'zip' is expected file name extension).
+        Example complete expected content of this node is 'o-ran/log/my_trace_log_file.zip'.";
     }
 
     leaf is-notification-last {
       type boolean;
       default false;
       description
-        "Informs if notification is last - the one after receiving stop-trace-logs rpc.";
+        "Informs if notification is last - the one after receiving stop-trace-logs RPC.";
     }
   }
 }
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-transceiver@2019-07-03.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-transceiver.yang
similarity index 82%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-transceiver@2019-07-03.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-transceiver.yang
index 93d83d8..8928fac 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-transceiver@2019-07-03.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-transceiver.yang
@@ -46,6 +46,36 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-12-05" {
+    description
+      "version 11.0.0
+
+      1) enable more than one interface to be accessible through a transceiver";
+
+    reference "ORAN-WG4.M.0-v11.00";
+  }
+
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) introduced new SFP compliance codes and updated references";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 2.1.0
+
+      1) typographical corrections in descriptions
+      2) clarifying vendor name follows SFF 8472";
+
+    reference "ORAN-WG4.M.0-v02.00";
+  }
+
+
   revision "2019-07-03" {
     description
       "version 2.0.0
@@ -70,15 +100,27 @@
   // Groupings
 
   grouping transceiver-group {
+    description "a transceiver grouping";
     list port-transceiver-data {
       key "interface-name port-number";
-      description "data recovered from port transceivers";
+      description
+      "Data recovered from port transceivers.
+      A single entry in the list is created per transceiver.";
       leaf interface-name {
         type leafref {
           path "/if:interfaces/if:interface/if:name";
         }
-        description "Name of interface";
+        description
+        "Name of an interface accessible through the transceiver.
+
+        If operating with a QSFP, then the interface corresponds
+        to an interface accessible through the lane/channel 1 of the QSFP.
+
+        If more than one interface is accessible through the transceiver
+        or the lane/channel 1 of the QSFP, then O-RU arbitrarily chooses
+        the referenced interface instance.";
       }
+
       leaf port-number {
         type leafref {
           path "/if:interfaces/if:interface[if:name = current()/../interface-name]" + "/o-ran-int:port-reference/o-ran-int:port-number";
@@ -91,6 +133,20 @@
         not necessarily numbers starting from zero)";
       }
 
+      leaf-list interface-names {
+        type leafref {
+          path "/if:interfaces/if:interface/if:name";
+        }
+        description
+        "Names of all interfaces accessible through the transceiver.
+
+        If operating with a QSFP, then the interfaces correspond
+        to all interfaces accessible through the lane/channel 1 of the QSFP.
+
+        O-RU provides the values only if more than one interface is
+        accessible through the transceiver or the lane/channel 1 of the QSFP.";
+      }
+
       leaf name {
         type string {
           length "1..255";
@@ -115,7 +171,7 @@
         }
         config false;
         description
-          "Name of the transciever vendor Full name of transceiver vendor,
+          "Name of the transceiver vendor Full name of transceiver vendor,
           that contains ASCII characters, left-aligned with
           any padding on the right with ASCII spaces (20h), or ASCII nul
           (00h) removed, and ASCII less-than (3Ch) replaced with ASCII
@@ -123,7 +179,8 @@
           close-brace (7Dh).
 
           Optional node included when the NETCONF Server has determined
-          the vendor ID.";
+          the vendor ID. When used, the content of this schema node
+          follows the definition of Vendor name field in SFF-8472.";
       }
 
       leaf vendor-part {
@@ -139,7 +196,8 @@
           replaced with ASCII close-brace (7Dh).
 
           Optional node included when the NETCONF Server has determined
-          the vendor part number.";
+          the vendor part number. When used, the content of this schema node
+          follows the definition of Vendor PN field in SFF-8472.";
       }
 
       leaf vendor-rev {
@@ -152,7 +210,8 @@
           contains ASCII characters.
 
           Optional node included when the NETCONF Server has determined
-          the vendor revision number";
+          the vendor revision number. When used, the content of this schema
+          node follows the definition of Vendor Rev field in SFF-8472.";
       }
 
       leaf serial-no {
@@ -195,19 +254,31 @@
             description "diagnostics published 07-24-14";
           }
           enum rev12.0-diagnostics{
-            description "diagnostics published 08-28-14";
+            status deprecated;
+            description
+              "diagnostics published 08-28-14
+               Note: Deprecated as it does not exists in SFF-8472 v12.4";
+          }
+          enum rev10.4-diagnostics{
+            description "diagnostics published 30-01-09";
+          }
+          enum rev12.3-diagnostics{
+            description "diagnostics published 29-07-18";
+          }
+          enum rev12.4-diagnostics{
+            description "diagnostics published 31-03-21";
           }
         }
         config false;
         description
           "Indication of which feature set(s) are
           implemented in the transceiver from Byte 94 of address A0h
-          https://ta.snia.org/higherlogic/ws/public/download/294/SFF-8472.PDF
+          https://members.snia.org/document/dl/25916 v12.4
 
           Optional node included when the NETCONF Server has determined
           the compliance code.";
 
-        reference "https://ta.snia.org/higherlogic/ws/public/download/294/SFF-8472.PDF";
+        reference "https://members.snia.org/document/dl/25916";
       }
 
        leaf connector-type {
@@ -317,7 +388,7 @@
         }
         config false;
         description
-          "Connector identifier as defined in the identifer
+          "Connector identifier as defined in the identifier
           types derived from table 4-1 in SFF-8024.
 
           Optional node included when the NETCONF Server has determined
@@ -330,7 +401,7 @@
         config false;
         description
           "Nominal bitrate in Mb/s (10^6 bits per second).
-          If needed actual value is rounded to nearest integer.
+          If needed actual value is rounded to the nearest integer.
 
           Optional node included when the NETCONF Server has determined
           the nominal bit rate.";
@@ -369,7 +440,7 @@
         }
         config false;
         description
-          "Receieved power measurement type
+          "Received power measurement type
           oma = optical modulation amplitude
           avp = average power
 
@@ -437,7 +508,7 @@
         }
         config false;
         description
-          "Internally measured module temperature in degrees Celcius.
+          "Internally measured module temperature in degrees Celsius.
 
           Optional node included when the NETCONF Server has determined
           the temperature.";
@@ -445,12 +516,13 @@
 
       list additional-multi-lane-reporting {
         when "(../identifier ='qsfp')or(../identifier ='qsfp+')";
+        key lane;
         config false;
         description
           "Additional reporting according to SFF8436 which specifies real time
           channel monitoring for each transmit and receive channel and includes
           optical input power and Tx bias current. ";
-        key lane;
+
         leaf lane {
           type uint8 {
             range "2..4";
@@ -458,6 +530,13 @@
           description
             "the specific lane/channel associated with the report parameters";
         }
+        leaf-list interface-names {
+          type leafref {
+            path "/if:interfaces/if:interface/if:name";
+          }
+          description
+          "Names of all interfaces accessible through a particular lane/channel.";
+        }
         leaf rx-power {
           type decimal64{
             fraction-digits 4;
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-troubleshooting@2019-02-04.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-troubleshooting.yang
similarity index 77%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-troubleshooting@2019-02-04.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-troubleshooting.yang
index ae09f8c..3e2d44e 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-troubleshooting@2019-02-04.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-troubleshooting.yang
@@ -37,6 +37,24 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-08-15" {
+    description
+      "version 1.2.0
+
+      1) clarified path/folder description.";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 1.1.0
+
+      1) typographical corrections";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
   revision "2019-02-04" {
     description
       "version 1.0.0
@@ -53,18 +71,18 @@
     leaf status {
       type enumeration {
         enum SUCCESS {
-          description "rpc completed correctly";
+          description "RPC completed correctly";
         }
         enum FAILURE {
-          description "rpc failed";
+          description "RPC failed";
         }
       }
-      description "result of rpc operation";
+      description "result of RPC operation";
     }
     leaf failure-reason {
       when "../status = 'FAILURE'";
       type string;
-      description "free form text description why error occurred";
+      description "free-form text description why error occurred";
     }
   }
 
@@ -90,7 +108,10 @@
     leaf-list log-file-name {
       type string;
       description
-        "The list of troubleshooting log file names on the O-RU.";
+        "The list of troubleshooting log file names on the O-RU. Each record in this list is expected to
+        contain location of the file (e.g. 'o-ran/log/') and the name of file (e.g.'my_troubleshooting_log_file.zip',
+        where 'my_troubleshooting_log_file' is example file name and 'zip' is expected file name extension).
+        Example complete expected content of this node is 'o-ran/log/my_troubleshooting_log_file.zip'.";
     }
   }
 }
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-udp-echo@2019-02-04.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-udp-echo.yang
similarity index 98%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-udp-echo@2019-02-04.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-udp-echo.yang
index b65c453..64f9e10 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-udp-echo@2019-02-04.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-udp-echo.yang
@@ -55,6 +55,7 @@
 // groupings
 
   grouping udp-echo-group {
+    description "a udp echo grouping";
     leaf enable-udp-echo {
       type boolean;
       default false;
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-uplane-conf.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-uplane-conf.yang
new file mode 100644
index 0000000..8562447
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-uplane-conf.yang
@@ -0,0 +1,4058 @@
+module o-ran-uplane-conf {
+  yang-version 1.1;
+  namespace "urn:o-ran:uplane-conf:1.0";
+  prefix "o-ran-uplane-conf";
+
+  import o-ran-processing-element {
+    prefix "o-ran-pe";
+  }
+
+  import ietf-interfaces {
+    prefix "if";
+  }
+
+  import o-ran-module-cap {
+    prefix "mcap";
+  }
+
+  import o-ran-compression-factors {
+    prefix "cf";
+  }
+
+  import o-ran-wg4-features {
+    prefix "feat";
+  }
+
+  import ietf-hardware {
+    prefix "hw";
+  }
+
+  import o-ran-hardware {
+    prefix "or-hw";
+  }
+
+  import o-ran-usermgmt {
+    prefix "or-user";
+  }
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the module capabilities for
+    the O-RAN Radio Unit U-Plane configuration.
+
+    Copyright 2021 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2022-12-05" {
+    description
+      "version 11.0.0
+
+      1) PRB range limit for SE 12 and HP section
+      2) Introduction of PRB ranges
+      3) uplane-only-dl-mode-enable
+      4) Deprecation of power-related capabilities and addition of min-gain
+      5) se 23 max mplane limits
+      6) support Section Type 4 and associated commands";
+
+    reference "ORAN-WG4.M.0-v11.00";
+  }
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) clarified description statements for representative-t/rx-eaxc-id
+      2) clarified description statements for max-num-t/rx-eaxc-ids-per-group
+      4) clarified description statements for component carrier
+      5) style guide corrections
+      6) introduction of O-RU connector functionality
+      7) fixing constraints
+      8) introducing new feature for ACK NACK feedback
+      9) added SHARED-ORU-MULTI-OPERATOR anf SHARED-ORU-MULTI-ODU features";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2022-04-18" {
+    description
+      "version 9.0.0
+
+      1) Descriptions fixed for max-beam-updates-per-slot / max-beam-updates-per-slot
+      2) Added references to CUS-Plane spec for parameters 'frame-structure' and
+        'supported-frame-structures'
+      3) clarified max-beams-per-symbol, max-beams-per-slot, max-beam-updates-per-slot,
+        max-beam-updates-per-symbol parameters
+      4) Clarification of cp-length and cp-length-other
+      5) deprecation of rw-type and rw-duplex-scheme";
+
+      reference "ORAN-WG4.M.0-v09.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+
+      1) Various descriptions corrected and/or clarified
+      2) Configuration for Beamforming weights were added together with changes and updates to compressions
+      3) Added new leaf node 'beam-update-contention-control-limits-required' to 'endpoint-types'
+         to indicate endpoint capability to support beam update contention control processing limits.
+      4) Added instance of 'beam-update-contention-control-limits' to 'endpoint-types'.
+      5) Added new leaf node boolean flag 'beam-update-contention-control-enabled' for O-DU to indicate
+         support of feature BEAM-UPDATE-CONTENTION-CONTROL feature.
+      6) deprecate 'channel-information-iq-bitwidth' , and define a new parameter
+         'channel-information-bitwidth' under the container 'compression'
+      7) add capability and configuration for channel information PRB granularity.
+      8) Add support for multiple transport-session-type per O-RU.
+      9) add capability and configuration for channel information compression.
+      10) deprecate 'channel-information-iq-bitwidth' , and define a new parameter
+         'channel-information-bitwidth' under the container 'compression'";
+
+      reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2021-07-26" {
+    description
+      "version 7.0.0
+
+      1) Added new grouping 'per-cplane-message-limits' containing params to limit
+         per C-Plane packet processing when CPLANE-MESSAGE-PROCESSING-LIMITS feature is
+         supported by O-RU and used by O-DU.
+      2) Added new leaf node 'cplane-message-processing-limits-required' to 'endpoint-types'
+         to indicate endpoint capability to support C-Plane message processing limits.
+      3) Added instances of 'per-cplane-message-limits' to 'endpoint-types' and
+         'endpoint-capacity-sharing-groups'.
+      4) Added new leaf node to low-level-tx/rx-endpoint 'cplane-message-processing-limits-enabled'
+         for O-DU to configure support for C-Plane limits
+      5) Added t-da-offset and t-au-offset for external antenna support
+      6) Added Channel IQ bitwidth for ST6
+      7) Added ordered-by user to leaf-list member-tx-eaxc-id and leaf-list member-rx-eaxc-id
+      8) Added new PRACH formats
+      9) Ensuring beam-ids can only be 15 bits
+      10) Clarify mixed numerology restrictions";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+
+  revision "2021-03-22" {
+    description
+      "version 6.0.0
+
+      1) typographical corrections in descriptions.
+      2) Updates to transmission window control.
+      3) Introduces to existing grouping 'endpoint-section-capacity' two new leaf nodes 'max-uplane-section-header-per-symbol' and
+          'max-uplane-section-header-per-slot' to limit U-Plane data section header addition/parsing.
+      4) deprecated parameter 'max-remasks-per-section-id' since it is duplicate of leaf node 'max-control-sections-per-data-section'.
+      5) introduces new leaf nodes 'max-beams-updates-per-slot' and ''max-beams-updates-per-symbol'
+           to grouping 'endpoint-beam-capacity'
+      6) added new SRS features:
+        STATIC-TRANSMISSION-WINDOW-CONTROL
+        DYNAMIC-TRANSMISSION-WINDOW-CONTROL
+        UNIFORMLY-DISTRIBUTED-TRANSMISSION
+        ORDERED-TRANSMISSION
+        INDEPENDENT-TRANSMISSION-WINDOW-CONTROL";
+
+    reference "ORAN-WG4.M.0-v06.00";
+  }
+
+  revision "2020-12-10" {
+    description
+      "version 5.0.0
+
+      1) introduces new coupling method coupling-via-frequency-and-time-with-priorities-optimized
+      2) introduces new max-highest-priority-sections-per-slot parameter";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  revision "2020-08-10" {
+    description
+      "version 4.0.0
+
+      1) parameters allowing for static PRACH configuration introduced
+      2) parameters allowing for static SRS configuration introduced
+      3) parameters allowing for configuration of TDD pattern introduced
+      4) Backward compatible change to introduce new parameter 'coupling-method' related
+         to Section Description Priority to serve for CUS-Plane CR";
+
+    reference "ORAN-WG4.M.0-v04.00";
+  }
+
+  revision "2020-04-17" {
+    description
+      "version 3.0.0
+
+      1) Adding optional little endian support
+      2) Adding a new capability parameter to indicate that the O-RU
+      supports regularizationFactor in section type 5
+      3) Added support for Dynamic Spectrum Sharing feature
+      4) Clarify the supported number of reMasks in RU side
+      5) Section extension for grouping multiple ports
+      6) adding PRACH formats to endpoint capabilities";
+
+    reference "ORAN-WG4.M.0-v03.00";
+  }
+
+  revision "2019-07-03" {
+    description
+      "version 1.1.0
+
+      1) added new leaf multiple-numerology-supported to enable O-RU to report
+         whether it supports multiple numerologies.
+
+      2) fixing broken constraints (configuration cannot be dependent on
+        operational state). This is a backwards incompatible revision.
+
+       As these constraints only apply when the LAA feature is used, and also
+       when considering the limited number of implementation that need to be
+       taken into consideration for backwards compatibility, it has been
+       agreed to NOT increment the namespace integer.
+
+      3) added frequency related capabilities for tx-arrays and rx-array
+
+      4) removed redundant LAA import";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  revision "2019-02-04" {
+    description
+      "version 1.0.0
+
+      1) imported model from xRAN
+      2) changed namespace and reference from xran to o-ran";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
+  feature EAXC-GAIN-CORRECTION {
+    description
+      "Presence of feature indicates that O-RU supports eAxC specific gain correction.";
+  }
+
+  feature TX-REFERENCE-LEVEL {
+    description
+      "Presence of feature indicates that O-RU supports TX gain reference level control";
+  }
+
+  typedef prach-preamble-format {
+    type enumeration {
+      enum LTE-0 {
+        description
+          "LTE PRACH Preamble format 0";
+      }
+      enum LTE-1 {
+        description
+          "LTE PRACH Preamble format 1";
+      }
+      enum LTE-2 {
+        description
+          "LTE PRACH Preamble format 2";
+      }
+      enum LTE-3 {
+        description
+          "LTE PRACH Preamble format 3";
+      }
+      enum LTE-4 {
+        description
+          "LTE PRACH Preamble format 4";
+      }
+      enum LTE-NB0 {
+        description
+          "LTE Narrowband PRACH format 0";
+      }
+      enum LTE-NB1 {
+        description
+          "LTE Narrowband PRACH format 1";
+      }
+      enum NR-0 {
+        description
+          "5GNR PRACH Preamble format 0";
+      }
+      enum NR-1 {
+        description
+          "5GNR PRACH Preamble format 1";
+      }
+      enum NR-2 {
+        description
+          "5GNR PRACH Preamble format 2";
+      }
+      enum NR-3 {
+        description
+          "5GNR PRACH Preamble format 3";
+      }
+      enum NR-A1 {
+        description
+          "5GNR PRACH Preamble format A1";
+      }
+      enum NR-A2 {
+        description
+          "5GNR PRACH Preamble format A2";
+      }
+      enum NR-A3 {
+        description
+          "5GNR PRACH Preamble format A3";
+      }
+      enum NR-B1 {
+        description
+          "5GNR PRACH Preamble format B1";
+      }
+      enum NR-B2 {
+        description
+          "5GNR PRACH Preamble format B2";
+      }
+      enum NR-B3 {
+        description
+          "5GNR PRACH Preamble format B3";
+      }
+      enum NR-B4 {
+        description
+          "5GNR PRACH Preamble format B4";
+      }
+      enum NR-C0 {
+        description
+          "5GNR PRACH Preamble format C0";
+      }
+      enum NR-C2 {
+        description
+          "5GNR PRACH Preamble format C2";
+      }
+      enum LTE-NB0-a {
+        description
+          "LTE Narrowband PRACH format 0-a";
+      }
+      enum LTE-NB1-a {
+        description
+          "LTE Narrowband PRACH format 1-a";
+      }
+      enum LTE-NB2 {
+        description
+          "LTE Narrowband PRACH format 2";
+      }
+    }
+
+    description
+      "PRACH preamble format definition";
+  }
+
+  typedef polarisation_type {
+    type enumeration {
+      enum MINUS_45 {
+        description "MINUS_45";
+      }
+      enum ZERO {
+        description "ZERO";
+      }
+      enum PLUS_45 {
+        description "PLUS_45";
+      }
+      enum PLUS_90 {
+        description "PLUS_90";
+      }
+    }
+    description "Type definition for polarisations";
+  }
+
+  grouping transmission-buffering-capacity {
+    description
+      "UL U-plane buffering capacity available for scheduled transmission of UL U-plane messages";
+
+    list transmission-buffering-capacity {
+      description
+        "Buffering capacity for specific IQ format.
+         If the list does not contain an entry for particular IQ format than endpoint
+         or group of endpoints then buffering capacity for this IQ format is
+         max-buffered-prbs = 0 and max-buffered-symbols = 0.";
+
+      uses cf:compression-details;
+
+      leaf max-buffered-prbs {
+        type uint32;
+        description
+          "Max number of PRBs (for IQ format given in compression-details) that can be buffered by an endpoint
+           or buffered collectively by group of endpoints sharing capacity. This is divided between symbols buffered";
+      }
+
+      leaf max-buffered-symbols {
+        type uint32;
+        description
+          "Max number of symbols (for IQ format given in compression-details) that can be buffered by an endpoint
+          or buffered collectively by group of endpoints sharing capacity";
+      }
+    }
+  }
+
+  grouping general-config {
+    description "a group for general configuration";
+
+    container general-config {
+      description "a container for general configuration";
+
+      leaf regularization-factor-se-configured {
+        type boolean;
+        default false;
+        description
+          "Informs if regularization factor in section extension is configured(true) or not(false), this
+          leaf indicates whether the O-DU will send the regularization factor in section extension.
+
+          If the O-RU does not support regularization-factor-se-supported in o-ran-module-cap.yang,
+          this leaf is ignored.";
+      }
+
+      leaf little-endian-byte-order {
+        type boolean;
+        default false;
+
+        description
+          "If  little endian byte order for C/U plane data flows is supported by
+          the O-RU, indicates if the O-RU should use little endian byte order
+          for all UL and DL C/U plane data flows.
+
+          If little endian byte order is NOT supported, this node is ignored
+          (and the default bigendian byte order used)";
+      }
+
+      leaf uplane-only-dl-mode-enable {
+        if-feature feat:UPLANE-ONLY-DL-MODE;
+        type boolean;
+        default false;
+        description
+          "If set to true, enable IQ data transfer without C-Plane in DL for all
+          endpoints as specified in the CUS specification clause 8.2.2.";
+      }
+      
+      leaf st4-for-time-domain-beamforming-weights-enabled {
+        if-feature feat:ST4-SLOT-CONFIG-MSG-SUPPORT;
+        type boolean;
+        default false;
+        description
+          "If O-RU indicates support for Section Type 4 command 'TIME_DOMAIN_BEAM_CONFIG' , O-DU may
+          configure the O-RU to use Section Type 4 TIME_DOMAIN_BEAM_CONFIG command by setting this
+          flag to 'true'. In which case, O-DU shall use only Section Type 4 TIME_DOMAIN_BEAM_CONFIG
+          for specifying time-domain beam information. refer to clause 12.4.3.4.4 of CUS-Plane spec.";
+      }
+    }
+  }
+
+  grouping laa-carrier-config {
+    description "Carrier Configuration for support of LAA. ";
+    leaf ed-threshold-pdsch {
+      type int8;
+      units dBm;
+      description
+        "This value indicates Energy Detection(ED) threshold for LBT for PDSCH and for measurements in dBm.";
+    }
+
+    leaf ed-threshold-drs {
+      type int8;
+      units dBm;
+      description
+        "This value indicates Energy Detection(ED) threshold for LBT for DRS in dBm.";
+    }
+
+    leaf tx-antenna-ports {
+      type uint8;
+      description
+        "This value indicates Tx antenna ports for DRS (1, 2, 4)";
+    }
+
+    leaf transmission-power-for-drs {
+      type int8;
+      units decibels;
+      description
+        "This value indicates offset of Cell specific reference Signal(CRS) power to reference signal power (dB).
+        DRS signal consists of CRS, PSS, SSS, and optionally CSI-RS.";
+    }
+
+    leaf dmtc-period {
+      type enumeration {
+        enum FORTY {
+          description
+            "40 ms";
+        }
+        enum EIGHTY {
+          description
+            "80 ms";
+        }
+        enum ONE-HUNDRED-SIXTY {
+          description
+            "160 ms";
+        }
+      }
+      units milliseconds;
+      description
+        "This value indicates DRS measurement timing configuration (DMTC) period in ms";
+    }
+
+    leaf dmtc-offset {
+      type uint8;
+      units subframes;
+      description
+        "This value indicates dmtc offset in Subframes.";
+    }
+
+    leaf lbt-timer {
+      type uint16;
+      units milliseconds;
+      description
+        "This value indicates LBT Timer in milliseconds.";
+    }
+
+    list max-cw-usage-counter {
+      when "/mcap:module-capability/mcap:rw-sub-band-info/mcap:rw-self-configure = 'true'";
+      key "priority";
+      description "";
+      leaf priority {
+        type enumeration {
+          enum P1 {
+            description "priority 1";
+          }
+          enum P2 {
+            description "priority 2";
+          }
+          enum P3 {
+            description "priority 3";
+          }
+          enum P4 {
+            description "priority 4";
+          }
+        }
+        description "This value provides the priority class traffic for which the counter is calculated.";
+      }
+
+        leaf counter-value {
+          type uint8 {
+            range "1..8";
+          }
+          description "This value indicates the maximum value of counter
+          which shows how many max congestion window value is used for backoff
+          number of priority class traffic. This value is defined at 3GPP 36.213
+          section 15.1.3 as K.";
+        }
+      }
+  }
+
+  grouping coupling-methods {
+    description
+      "Grouping for configuration of desired C-Plane / U-Plane coupling methods (if supported)";
+    leaf coupling-to {
+      type leafref {
+        path "/mcap:module-capability/mcap:ru-capabilities/mcap:coupling-methods/mcap:coupling-via-frequency-and-time";
+        require-instance false;
+      }
+
+      description
+        "RW instance of RO parameter.";
+    }
+    leaf coupling-method {
+      when "../coupling-to = 'true'";
+      type enumeration{
+        enum NORMAL {
+          description "Coupling via sectionId value. This value can be used always.";
+        }
+        enum FREQUENCY_AND_TIME {
+          description "Coupling via frequency and time. Can be used when coupling-via-frequency-and-time = true
+                      or coupling-via-frequency-and-time-with-priorities = true in o-ran-module-cap.yang";
+        }
+        enum FREQUENCY_AND_TIME_WITH_PRIORITIES {
+          description "Coupling via frequency and time with priorities. Can be used when
+                      coupling-via-frequency-and-time-with-priorities = true in o-ran-module-cap.yang";
+        }
+        enum FREQUENCY_AND_TIME_WITH_PRIORITIES_OPTIMIZED {
+          description "Coupling via frequency and time with priorities optimized. Can be used when
+                      coupling-via-frequency-and-time-with-priorities-optimized = true in o-ran-module-cap.yang";
+        }
+      }
+      default NORMAL;
+      description
+        "Method of coupling between C-Plane and U-Plane messages; see methods of coupling
+        of C-Plane and U-Plane in CUS-Plane specification. If an O-RU doesn't support the
+        necessary capability as defined in o-ran-module-cap.yang, the O-RU shall respond
+        with rpc-error including an error-message describing the error condition";
+    }
+  }
+
+  grouping eaxc {
+    description
+      "One eAxC identifier (eAxC ID) comprises a band and sector
+      identifier (BandSector_ID), a component-carrier identifier (CC_ID) and a
+      spatial stream identifier (RU_Port_ID).
+
+      In this version of the specification, one eAxC contains only one spatial
+      stream (i.e. one beam per subcarrier) at a time.
+
+      Bit allocation is subdivided as follows:
+      *    O_DU_Port_ID: Used to differentiate processing units at O-DU
+      *    BandSector_ID: Aggregated cell identifier
+      *    CC_ID: distinguishes Component Carriers
+      *    RU_Port_ID: Used to differentiate spatial streams or beams on the O-RU
+
+      The bitwidth of each of the above fields is variable this model is supposed to check
+        if we are occupying bits continuously, but we do not have to occupy all 16 bits";
+
+
+    leaf o-du-port-bitmask {
+      type uint16;
+      mandatory true;
+      description
+        "mask for eaxc-id bits used to encode O-DU Port ID";
+    }
+
+    leaf band-sector-bitmask {
+      type uint16;
+      mandatory true;
+      description
+        "mask for eaxc-id bits used to encode the band sector ID";
+    }
+
+    leaf ccid-bitmask {
+      type uint16;
+      mandatory true;
+      description
+        "mask for eaxc-id bits used to encode the component carrier id";
+    }
+
+    leaf ru-port-bitmask {
+      type uint16;
+      mandatory true;
+      description
+        "mask for eaxc-id bits used to encode the O-RU Port ID";
+    }
+
+    leaf eaxc-id {
+      type uint16;
+      mandatory true;
+      description
+        "encoded value of eaxcid to be read by CU-Plane";
+    }
+  }
+
+  grouping parameters {
+    description
+      "Grouping of all parameters common between UL and DL";
+
+    leaf name {
+      type string;
+      mandatory true;
+      description "Unique name of array antenna";
+    }
+
+    leaf number-of-rows {
+      type uint16;
+      mandatory true;
+      description "Number of rows array elements are shaped into - M";
+    }
+
+    leaf number-of-columns {
+      type uint16;
+      mandatory true;
+      description "Number of columns array elements are shaped into - N";
+    }
+
+    leaf number-of-array-layers {
+      type uint8;
+      mandatory true;
+      description "Number of array layers array elements are shaped into - Q";
+    }
+
+    leaf horizontal-spacing {
+      type decimal64 {
+            fraction-digits 5;
+        }
+      units Meter;
+
+      description "Average distance between centres of nearby AE in horizontal direction (in array coordinates system)";
+    }
+
+    leaf vertical-spacing{
+      type decimal64 {
+            fraction-digits 5;
+        }
+      units Meter;
+
+      description "Average distance between centres of nearby AE in vertical direction (in array coordinates system)";
+    }
+
+    container normal-vector-direction {
+      description
+        "Counter-clockwise rotation around z and y axis.";
+
+      leaf azimuth-angle{
+        type decimal64 {
+          fraction-digits 4;
+          }
+        units Degrees;
+
+        description "Azimuth angle, counter-clockwise rotation around z-axis. Value 'zero' points to broad-side, value '90' points to y-axis";
+      }
+       leaf zenith-angle{
+         type decimal64 {
+          fraction-digits 4;
+          }
+        units Degrees;
+
+        description "Zenith angle, counter-clockwise rotation around y-axis. Value 'zero' points to zenith, value '90' points to horizon";
+       }
+    }
+
+    container leftmost-bottom-array-element-position {
+      description "Structure describing position of leftmost, bottom array element.";
+      leaf x {
+        type decimal64 {
+          fraction-digits 4;
+          }
+        units Meter;
+
+        description "X dimension of position of leftmost, bottom array element";
+      }
+
+      leaf y {
+        type decimal64 {
+          fraction-digits 4;
+          }
+        units Meter;
+
+        description "Y dimension of position of leftmost, bottom array element";
+      }
+
+      leaf z {
+        type decimal64 {
+          fraction-digits 4;
+          }
+        units Meter;
+
+        description "Z dimension of position of leftmost, bottom array element";
+      }
+    }
+    list polarisations {
+      key "p";
+      min-elements 1;
+      max-elements 2;
+
+      description
+        "List of supported polarisations.";
+
+      leaf p {
+      type uint8;
+      mandatory true;
+      description
+        "Polarisation index. See CUS-plane";
+      }
+
+      leaf polarisation {
+        type polarisation_type;
+        mandatory true;
+        description "Type of polarisation supported by array.";
+      }
+    }
+    leaf band-number {
+      type leafref {
+        path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
+      }
+      mandatory true;
+      description
+        "This parameter informing which frequency band particular antenna
+         array is serving for.
+         Intended use is to deal with multiband solutions.";
+    }
+
+    list related-o-ru-connectors {
+      key name;
+
+      leaf name {
+        type leafref {
+          path '/hw:hardware/hw:component/hw:name';
+        }
+        must "derived-from-or-self(deref(current())/../hw:class, 'or-hw:O-RU-ANTENNA-CONNECTOR')";
+        description
+          "Referenced name of O-RU connector used by the antenna array.";
+      }
+      leaf-list array-element-id {
+        type uint16;
+        description
+          "Identifiers of array element(s) related to specific O-RU connector. Allowed values and semantic - as per CUS-Plane spec, clause 'Identification and Ordering of Array Elements'";
+      }
+      description
+        "List of unique names that identify instances of O-RU's connectors the external [tr]x-array is reachable through.";
+    }
+  }
+
+  grouping array-choice {
+    choice antenna-type {
+      case tx {
+        leaf tx-array-name {
+          type leafref {
+            path "/o-ran-uplane-conf:user-plane-configuration/o-ran-uplane-conf:tx-arrays/o-ran-uplane-conf:name";
+          }
+
+          description
+            "Leafref to tx array if such is chosen";
+        }
+      }
+      case rx {
+        leaf rx-array-name {
+          type leafref {
+            path "/o-ran-uplane-conf:user-plane-configuration/o-ran-uplane-conf:rx-arrays/o-ran-uplane-conf:name";
+          }
+
+          description
+            "Leafref to rx array if such is chosen";
+        }
+      }
+      description
+        "Choice for antenna type";
+    }
+    description
+      "Elements which groups choice for antenna type";
+  }
+
+  grouping scs-config {
+    description
+      "It groups all parameters related to SCS configuration";
+
+    leaf frame-structure {
+      type uint8;
+
+      description
+        "This parameter provides value of frame structure. For semantics and allowed values see CUS-Plane Specification, clause 'frameStructure (frame structure)'";
+    }
+
+    leaf cp-type {
+      type enumeration {
+        enum NORMAL {
+          description
+            "Normal cyclic prefix";
+        }
+
+        enum EXTENDED {
+          description
+            "Extended cyclic prefix";
+        }
+      }
+
+      description
+        "Provides type of CP (cyclic prefix) if section type 3 is not used or type of CP cannot be determined from cpLength.";
+    }
+
+    leaf cp-length {
+      type uint16;
+      units Ts;
+      mandatory true;
+      description
+        "Provides length of CP used for the first symbol after subframe boundary or half-subframe boundary.
+        See CUS-plane
+
+        If a section type 3 is used in C-plane messages addressed to the endpoint, then O-RU takes length of CP from
+        C-Plane cpLength Information Element and the value of this leaf shall be ignored by the O-RU. See cpLength (cyclic prefix length)
+        in CUS-Plane for details.
+
+        If a static configuration (see static-prach-configurations) is applicable to the endpoint, then O-RU takes
+        length of CP from M-Plane cp-length leaf in static-prach-configurations and the value of this leaf shall be ignored by the O-RU.";
+    }
+
+    leaf cp-length-other {
+      type uint16;
+      units Ts;
+      mandatory true;
+      description
+        "Provides length of CP used for symbols other than provided by cp-length.
+
+        If a section type 3 is used in C-plane messages addressed to the endpoint, then O-RU takes length of CP from
+        C-Plane cpLength Information Element and the value of this leaf shall be ignored by the O-RU. See cpLength (cyclic prefix length)
+        in CUS-Plane for details.
+
+        If a static configuration (see static-prach-configurations) is applicable to the endpoint, then O-RU takes
+        length of CP from M-Plane cp-length leaf in static-prach-configurations and the value of this leaf shall be ignored by the O-RU.";
+    }
+
+    leaf offset-to-absolute-frequency-center {
+      type int32;
+      mandatory true;
+      description
+        "This provides value of freqOffset to be used if section type 3 is not used. See freqOffset in CUS-plane.
+         offset-to-absolute-frequency-center defines the relative spacing between the centre of RE#0 of RB#0 to the center-of-channel-bandwidth.
+         If offset-to-absolute-frequency-center for NR with SCS=15kHz is odd,
+         it implies that 7.5kHz shift as indicated by the 3GPP parameter frequencyShift7p5khz for UL is applied,
+         which means enable the NR UL transmission with a 7.5 kHz shift to the LTE raster, as defined in 3GPP TS 38.331.
+         When type (in tx/rx-array-carrier) is DSS, 'offset-to-absolute-frequency-center' indicates the 1st RE of 1st RB of NR.";
+    }
+
+    list number-of-prb-per-scs {
+      key scs;
+      description
+        "List of configured for each SCS that will be used.";
+
+      leaf scs {
+        type mcap:scs-config-type;
+        description
+          "Value corresponds to SCS values defined for frameStructure in C-plane.
+          Note: set of allowed values is restricted by SCS derived from values in supported-frame-structures.";
+      }
+
+      leaf number-of-prb {
+        type uint16;
+        mandatory true;
+        description
+          "Determines max number of PRBs that will be used in all sections per one symbol.
+          This is affecting allocation of resources to endpoint. Value shall not exceed constrains
+          defined by max-prb-per-symbol of endpoint type. In addition, sum (over all used endpoints
+          within a group of endpoints sharing resources) of number-of-prb rounded up to the
+          nearest value from prb-capacity-allocation-granularity shall not exceed max-prb-per-symbol of the group.";
+      }
+    }
+  }
+
+  grouping tx-common-array-carrier-elements {
+    description
+      "This grouping contains all common parameters for tx-array-carriers and rx-array-carriers";
+
+    leaf absolute-frequency-center {
+      type uint32;
+      status deprecated;
+      description
+        "deprecated in version 5.0.0 and replaced with offset-to-absolute-frequency-center
+        and common FREF translated from absolute-frequency-center (NREF) as defined in 38.104";
+    }
+
+    leaf center-of-channel-bandwidth {
+      type uint64;
+          units Hz;
+      mandatory true;
+      description
+        "Centre frequency of channel bandwidth in Hz. Common for all numerologies.
+         center-of-channel-bandwidth is the FREF translated from absolute-frequency-center (NREF) as per 3GPP TS 38.104.
+         Refer to Table 5: Centre Bandwidth Calculation in M-plane spec for calculation of this parameter
+         for even and odd number of PRBs in LTE, NR and DSS carrier configuration.";
+    }
+
+    leaf channel-bandwidth {
+      type uint64;
+      units Hz;
+      mandatory true;
+
+      description
+        "Width of carrier given in Hertz";
+    }
+
+    leaf active {
+      type enumeration {
+        enum INACTIVE {
+              description
+                "carrier does not provide signal - transmission is disabled";
+            }
+        enum SLEEP{
+              description
+                "carrier is fully configured and was active but is energy saving mode";
+            }
+        enum ACTIVE{
+              description
+                "carrier is fully configured and properly providing the signal";
+            }
+      }
+      default INACTIVE;
+
+      description
+        "Indicates if transmission is enabled for this array carriers. Note that NETCONF server uses state parameter
+        to indicate actual state of array carriers operation. When array carriers is in sleep status,
+        NETCONF server rejects all other operation request to tx-array-carriers object except either request to change from sleep
+        to active status or delete MO operation (see 4.8) to the object.";
+    }
+
+    leaf state {
+      type enumeration {
+        enum DISABLED {
+          description
+            "array carrier is not active - transmission of signal is disabled.";
+        }
+        enum BUSY {
+          description
+            "array carrier is processing an operation requested by change of active parameter.
+            When array carriers is BUSY the transmission of signal is not guaranteed.";
+        }
+        enum READY {
+          description
+            "array carrier had completed activation operation - is active and transmission of signal is ongoing.";
+        }
+      }
+      config false;
+      mandatory true;
+      description
+        "Indicates state of array carriers activation operation";
+    }
+
+    leaf type {
+      type enumeration {
+        enum NR {
+              description
+                "5G technology";
+        }
+        enum LTE {
+              description
+                "LTE technology";
+        }
+        enum DSS_LTE_NR {
+          if-feature mcap:DSS_LTE_NR;
+              description
+                "NR and LTE technologies in Dynamic Spectrum Sharing mode";
+        }
+      }
+      description
+        "Type of carrier. Indicates array-carrier technology.";
+    }
+
+    leaf duplex-scheme {
+      type enumeration {
+        enum TDD {
+              description
+                "TDD scheme";
+            }
+        enum FDD {
+              description
+                "FDD scheme";
+        }
+      }
+      config false;
+
+      description
+        "Type of duplex scheme O-RU supports.";
+    }
+    leaf rw-duplex-scheme {
+      type leafref {
+        path "/user-plane-configuration/tx-array-carriers[name=current()/../name]" + "/duplex-scheme";
+        require-instance false;
+      }
+      status deprecated;
+      description
+        "Config true type of duplex scheme.
+         Status is deprecated because 'lte-tdd-frame' container, where it was used, is also deprecated.
+         Additionally duplex-scheme is derived from the band-number.";
+    }
+    leaf rw-type {
+      type leafref {
+        path "/user-plane-configuration/tx-array-carriers[name=current()/../name]" + "/type";
+        require-instance false;
+      }
+      status deprecated;
+      description
+        "Config true type of carrier.
+         Status is deprecated because leafref is to a 'config true' schema-node";
+    }
+  }
+
+  grouping rx-common-array-carrier-elements {
+    description
+      "This grouping contains all common parameters for tx-array-carriers and rx-array-carriers";
+
+    leaf absolute-frequency-center {
+      type uint32;
+      status deprecated;
+      description
+        "deprecated in version 5.0.0 and replaced with offset-to-absolute-frequency-center
+        and common FREF translated from absolute-frequency-center (NREF) as defined in 38.104";
+    }
+
+    leaf center-of-channel-bandwidth {
+      type uint64;
+          units Hz;
+      mandatory true;
+      description
+        "Centre frequency of channel bandwidth in Hz. Common for all numerologies.
+         center-of-channel-bandwidth is the FREF translated from absolute-frequency-center (NREF) as per 3GPP TS 38.104.
+         Refer to Table 5: Centre Bandwidth Calculation in M-plane spec for calculation of this parameter
+         for even and odd number of PRBs in LTE, NR and DSS carrier configuration.";
+    }
+
+    leaf channel-bandwidth {
+      type uint64;
+      units Hz;
+      mandatory true;
+
+      description
+        "Width of carrier given in Hertz";
+    }
+
+    leaf active {
+      type enumeration {
+        enum INACTIVE {
+              description
+                "carrier does not provide signal - transmission is disabled";
+            }
+        enum SLEEP{
+              description
+                "carrier is fully configured and was active but is energy saving mode";
+            }
+        enum ACTIVE{
+              description
+                "carrier is fully configured and properly providing the signal";
+            }
+      }
+      default INACTIVE;
+
+      description
+        "Indicates if transmission is enabled for this array carriers. Note that NETCONF server uses state parameter
+        to indicate actual state of array carriers operation. When array carriers is in sleep status,
+        NETCONF server rejects all other operation request to tx-array-carriers object except either request to change from sleep
+        to active status or delete MO operation (see 4.8) to the object.";
+    }
+
+    leaf state {
+      type enumeration {
+        enum DISABLED {
+          description
+            "array carrier is not active - transmission of signal is disabled.";
+        }
+        enum BUSY {
+          description
+            "array carrier is processing an operation requested by change of active parameter.
+            When array carriers is BUSY the transmission of signal is not guaranteed.";
+        }
+        enum READY {
+          description
+            "array carrier had completed activation operation - is active and transmission of signal is ongoing.";
+        }
+      }
+      config false;
+      mandatory true;
+      description
+        "Indicates state of array carriers activation operation";
+    }
+
+    leaf type {
+      type enumeration {
+        enum NR {
+              description
+                "5G technology";
+        }
+        enum LTE {
+              description
+                "LTE technology";
+        }
+        enum DSS_LTE_NR {
+          if-feature mcap:DSS_LTE_NR;
+              description
+                "NR and LTE technologies in Dynamic Spectrum Sharing mode";
+        }
+      }
+      description
+        "Type of carrier. Indicates array-carrier technology.";
+    }
+
+    leaf duplex-scheme {
+      type enumeration {
+        enum TDD {
+              description
+                "TDD scheme";
+            }
+        enum FDD {
+              description
+                "FDD scheme";
+        }
+      }
+      config false;
+
+      description
+        "Type of duplex scheme O-RU supports.";
+    }
+  }
+
+  grouping endpoint-section-capacity {
+    leaf max-control-sections-per-data-section {
+      type uint8 {
+        range "1..12";
+      }
+      description
+        "Max number of C-plane sections (C-plane section is part of C-plane message that carries 'section fields')
+        referring to same U-plane section (U-plane section is part of U-plane message that carries
+        'section header fields' and 'PRB fields') that is supported by endpoint.
+        Note that additional limitations specific for each section type apply on top of this number.";
+    }
+    leaf max-sections-per-symbol {
+      type uint16;
+      description
+        "Max number of sections within one symbol that can be processed by endpoint
+        or processed collectively by group of endpoints sharing capacity";
+    }
+    leaf max-sections-per-slot {
+      type uint16;
+      description
+        "Max number of sections within one slot that can be processed by endpoint
+        or processed collectively by group of endpoints sharing capacity.";
+    }
+    leaf max-highest-priority-sections-per-slot {
+      type uint16;
+      must "current() < ../max-sections-per-slot" {
+        error-message "the sectionID for the highest priority needs to be less than the max sectionIds per slot";
+      }
+      description
+        "Max number of highest priority sections within one slot that can be processed by endpoint or processed  collectively by
+        group of endpoints sharing capacity. This leaf applies only when coupling-via-frequency-and-time-with-priorities-optimized
+        is true, in other instances this leaf is ignored by the O-RU. The sectionId for highest priority section descriptions shall
+        start from 0 to specified max value and is a subset of max-sections-per-slot and must be less than max-sections-per-slot.";
+    }
+
+    leaf max-remasks-per-section-id {
+      type uint8 {
+        range "1..12";
+      }
+      default 12;
+      status deprecated;
+      description
+        "maximum number of different reMask values that is applied to a PRB
+        within one section id. This value can be processed by endpoint
+        or processed collectively by group of endpoints sharing capacity.
+        This parameter is duplicated max-control-sections-per-data-section, hence being deprecated.";
+    }
+    leaf max-uplane-section-header-per-symbol {
+      type uint16;
+      description
+        "Maximum number of U-Plane data section header within one symbol that can be processed by an endpoint or processed collectively by group of
+        endpoints sharing capacity. Clarification for multiple U-Plane data section headers per C-Plane section description is specified in sectionId IE
+        description in CUS-Plane specification. For the cases where this optional parameter is not populated by O-RU or an older version O-DU does not
+        interpret this parameter, O-DU may optionally use max-sections-per-symbol as the default value to limit of U-Plane data  section messages which
+        can be processed by the O-RU. If none of the above limitations are supported, O-RU and O-DU may rely on offline negotiation.
+        As an example, this parameter can be used to limit O-RU processing while using Section extension type#6 and #12, which are used for non-contiguous
+        PRB allocation, and hence results in multiple U-Plane data section headers for a given C-Plane section description.";
+    }
+    leaf max-uplane-section-header-per-slot {
+      type uint16;
+      description
+        "Maximum number of U-Plane data section headers within one slot that can be processed by an endpoint or processed collectively by group of
+        endpoints sharing capacity. Clarification for multiple U-Plane data section headers per C-Plane section description is specified in sectionId IE
+        description in CUS-Plane specification. For the cases where this optional parameter is not populated by O-RU or an older version O-DU does not
+        interpret this parameter, O-DU may optionally use max-sections-per-slot as the default value to limit of U-Plane data  section messages which can
+        be processed by the O-RU. If none of the above limitations are supported, O-RU and O-DU may rely on offline negotiation.
+        As an example, this parameter can be used to limit O-RU processing while using Section extension type#6 and #12, which are used for non-contiguous
+        PRB allocation, and hence results in multiple U-Plane data section headers for a given C-Plane section description.";
+    }
+
+    description
+      "Parameters describing section capacity where section is understood as number of different sectionId values. Additionally, max limits for U-Plane data sections
+      refer to U-Plane data section headers";
+  }
+
+  grouping endpoint-section-extension-limits {
+    leaf max-mcscaleremask-per-prb {
+      type uint16;
+      description
+        "This parameter limits the number of sets of {mcScaleReMask, csf, mcScaleOffset} values per symPrbPattern the O-RU can support when SE 23 is used in a
+        data section description. Refer to clause 7.7.23.1 of the CUS-Plane specification.";
+    }
+    leaf max-prb-ranges-per-sec-ext-12 {
+      type uint16;
+      description
+        "Optional parameter reported by O-RU which applies to Section Extension 12 and specifies
+        the maximum number of frequency ranges R per section description supported by O-RU.
+        If this limit is exceeded by the O-DU, the O-RU is responsible for sending alarm notification
+        with 'fault-id = 31' to subscribers following the procedures defined in Clause 11 and
+        Table A.1-1 of O-RAN.WG4.MP.0.
+        As an example, the O-RU can include the following in the corresponding active-alarm list
+        entry and alarm-notification message:
+        <fault-text>Error C-Plane message</fault-text>
+        <probable-cause>Maximum number of frequency ranges in SE-12 per section description exceeded</probable-cause>
+        <proposed-repair-actions>Reduce frequency ranges per section description used in SE-12</proposed-repair-actions>";
+    }
+    leaf max-freq-hops-per-sec-ext-13 {
+      type uint16;
+      description
+        "Optional parameter reported by O-RU which applies to Section Extension 13 and specifies
+        the maximum number of frequency hops R per section description supported by O-RU.
+        If this limit is exceeded by the O-DU, the O-RU is responsible for sending alarm notification
+        with 'fault-id = 31' to subscribers following the procedures defined in Clause 11 and
+        Table A.1-1 of O-RAN.WG4.MP.0.
+        As an example, the O-RU can include the following in the corresponding active-alarm list
+        entry and alarm-notification message:
+        <fault-text>Error C-Plane message</fault-text>
+        <probable-cause>Maximum number of frequency hops in SE 13 per section description exceeded</probable-cause>
+        <proposed-repair-actions>Reduce frequency hops per section description used in SE-13</proposed-repair-actions>";
+    }
+
+    description
+      "Parameters describing C-Plane section extension limits/capacities.";
+  }
+
+  grouping endpoint-beam-capacity {
+    leaf max-beams-per-symbol {
+      type uint16 {
+        range "min .. 32767";
+      }
+      description
+        "Max number of beams within one symbol that can be processed by endpoint
+        or processed collectively by group of endpoints sharing capacity
+
+        If the parameter is absent or if value 0 is reported for the parameter,
+        then the endpoint does not support beamforming operation.";
+    }
+    leaf max-beams-per-slot {
+      type uint16 {
+        range "min .. 32767";
+      }
+      description
+        "Max number of beams within one slot that can be processed by endpoint
+        or processed collectively by group of endpoints sharing capacity
+
+        If the parameter is absent or if value 0 is reported for the parameter,
+        then the endpoint does not support beamforming operation.";
+    }
+    leaf max-beam-updates-per-slot {
+      type uint16 {
+        range "min .. 32767";
+      }
+      description
+        "Max number of beams within one slot that can be updated by endpoint
+        or processed collectively by group of endpoints sharing capacity
+
+        If the parameter is absent or if value 0 is reported for the parameter,
+        then the endpoint does not support beamforming operation.";
+    }
+    leaf max-beam-updates-per-symbol {
+      type uint16 {
+        range "min .. 32767";
+      }
+      description
+        "Max number of beams within one symbol that can be updated by endpoint
+        or processed collectively by group of endpoints sharing capacity
+
+        If the parameter is absent or if value 0 is reported for the parameter,
+        then the endpoint does not support beamforming operation.";
+    }
+
+    description
+      "Parameters describing beam capacity where number of beams is understood as number of different beamId values.
+       Parameters defined for beam updates shall be used to put a maximum limit on number of beam/beamIds which can be updated
+       every slot/symbol. Note: This parameter does not put any restriction on which beams/beamIds can be updated.
+
+       If the parameters defining beam capacity and beam updates are absent or if value 0 is reported for the parameters
+       defining beam capacity and beam updates, then the endpoint does not support beamforming operation.";
+  }
+
+  grouping endpoint-prb-capacity {
+    leaf max-prb-per-symbol {
+      type uint16;
+      description
+        "Max number of prbs within one symbol that can be processed by endpoint
+        or processed collectively by group of endpoints sharing capacity";
+    }
+
+    leaf max-prb-ranges-per-symbol {
+      type uint32;
+      description
+        "Optional parameter reported by O-RU which indicates the maximum number of PRB ranges
+        that can be processed by single endpoint or processed collectively by group of endpoints
+        sharing capacity within one symbol. For details please see O-RAN WG4 CUS-Plane specification,
+        Clause 7.8.2.1.2 'Limits of number of PRB ranges'.
+
+        In case CU-Plane traffic generated by the O-DU exceeds the limit, an O-RU is responsible
+        for sending alarm notification with 'fault-id = 31' to subscribers following the procedures
+        defined in Clause 11 and Table A.1-1 of O-RAN.WG4.MP.0.
+
+        As an example, the O-RU can include the following in the corresponding active-alarm list
+        entry and alarm-notif message:
+        <fault-text>Error C-Plane message</fault-text>
+        <probable-cause>max-prb-ranges-per-symbol exceeded</probable-cause>
+        <proposed-repair-actions>Reduce value of  number of PRB ranges used per symbol</proposed-repair-actions>";
+    }
+
+    description
+      "Attributes presenting processing capacity related to PRB.";
+  }
+
+  grouping endpoint-numerology-capacity {
+    leaf max-numerologies-per-symbol {
+      type uint16;
+      description
+        "Max number of numerologies within one symbol that can be processed by endpoint
+        or processed collectively by group of endpoints sharing capacity";
+    }
+
+    description
+      "Attributes presenting processing capacity related to numerology.
+
+      This leaf contains valid data only when multiple-numerology-supported
+      is set to true.";
+  }
+
+  grouping per-cplane-message-limits  {
+    leaf max-beams-per-cplane-message {
+      type uint16;
+      description
+        "Maximum number of beams which can be recieved in one single C-Plane message. Number of beams,
+        may include only beamIds, only beam weights or mix of beamIds and beamweights being received by
+        an O-RU in a single C-Plane message.
+        To avoid application layer fragmentation of C-Plane message across the fronthaul, O-RU should
+        avoid setting this to a very low value.
+        As a usage scenario, an O-RU may choose to define only a few quantized values e.g. (128, 256).
+        If the value is set to 0 by O-RU, the O-DU need not restrict the number of beams it can send
+        in single C-Plane message (except limited by MTU size).";
+    }
+
+    leaf max-highest-priority-sec-per-cplane-message {
+      type uint16;
+      description
+        "Maximum number of highest priority sections which can be received in one single C-Plane message.
+        This leaf applies only when 'coupling-via-frequency-and-time-with-priorities' is true";
+    }
+
+    leaf max-beams-per-slot-with-cplane-limits {
+      type uint16;
+      description
+        "Maximum number of beams that are required to be processed by endpoint or processed collectively
+        by group of endpoints sharing capacity when O-DU enables C-Plane limits. This value should replace
+        'max-beams-per-slot' defined in 'endpoint-beam-capacity'";
+    }
+
+    leaf max-highest-priority-sections-per-slot-with-cplane-limits {
+      type uint16;
+      description
+        "Maximum number of highest priority sections that are required to be processed by endpoint or processed
+        collectively by group of endpoints sharing capacity when O-DU supports C-Plane limits. This value should
+        replace 'max-highest-priority-sections-per-slot' defined in 'endpoint-section-capacity'";
+    }
+
+    leaf max-num-se22-per-cplane-message {
+      type uint16;
+      description
+        "This value limits the max number of section extension 22 (ACK/NACK request) included in a C-Plane message as supported
+        by the endpoint or collectively by group of endpoints sharing capacity when O-DU enables C-Plane limits
+        and when section extension 22 (ACK/NACK request) and section type 8 (ACK/NACK feedback) are supported by the endpoint or endpoint sharing group.";
+    }
+
+    leaf max-prb-ranges-per-hp-section-sec-ext-12 {
+      type uint16;
+      description
+        "Optional parameter reported by O-RU which applies to Section Extension 12 and specifies the
+        maximum number of frequency ranges R per highest priority section description supported by O-RU.
+        If this limit is exceeded by the O-DU, the O-RU is responsible for sending alarm notification
+        with 'fault-id = 31' to subscribers following the procedures defined in Clause 11 and
+        Table A.1-1 of O-RAN.WG4.MP.0.
+        As an example, the O-RU can include the following in the corresponding active-alarm list
+        entry and alarm-notification message:
+        <fault-text>Error C-Plane message</fault-text>
+        <probable-cause>Maximum number of frequency hops per highest priority section description exceeded</probable-cause>
+        <proposed-repair-actions>Reduce frequency range per highest section description</proposed-repair-actions>";
+    }
+
+    description
+      "Attributes limit maximum instances of certian parameters contained in a C-Plane mesaage e.g. beams,
+      highest priority sections. This limitation is useful for O-RUs which are packet processing based and are
+      dimensioned to handle fixed number of parameters contained in a C-Plane message. In addition, if O-DU supports
+      cplane limits, O-RU can operate more efficiently and endpoint capacity for applicable parameters are enhanced.
+      as specified by 'max-beams-per-slot-with-cplane-limits' and 'max-highest-priority-sections-per-slot-with-cplane-limits'";
+  }
+
+  grouping beam-update-contention-control-limits  {
+    leaf max-beams-per-symbol-with-beam-contention-control {
+      type uint16;
+      description
+        "Maximum number of beams within one symbol that can be processed by an endpoint or processed collectively
+        by group of endpoints sharing capacity when O-DU enables the O-RU feature BEAM-UPDATE-CONTENTION-CONTROL.
+        This value should replace 'max-beams-per-symbol' defined in 'endpoint-beam-capacity'";
+    }
+
+    leaf max-beams-updates-per-symbol-with-beam-contention-control {
+      type uint16;
+      description
+        "Maximum number of beams within one symbol that can be updated by an endpoint or processed collectively
+        by group of endpoints sharing capacity when O-DU enables the O-RU feature BEAM-UPDATE-CONTENTION-CONTROL.
+        This value should replace 'max-beam-updates-per-symbol' defined in 'endpoint-beam-capacity'";
+    }
+
+    description
+      "If O-DU supports BEAM-UPDATE-CONTENTION-CONTROL, O-RU can operate more efficiently and endpoint capacity for applicable
+      parameters are enhanced.";
+  }
+
+  grouping endpoint-static-config-support {
+    leaf static-config-supported {
+      type enumeration {
+        enum NONE {
+          description
+            "The endpoint does not support static PRACH / SRS configuration.
+             Reception of PRACH / SRS is possible through real time C-Plane messages
+             if other endpoint capabilities allow for that.";
+        }
+        enum PRACH {
+          if-feature mcap:PRACH-STATIC-CONFIGURATION-SUPPORTED;
+          description
+            "The endpoint supports statically configured PRACH reception";
+        }
+        enum SRS {
+          if-feature mcap:SRS-STATIC-CONFIGURATION-SUPPORTED;
+          description
+            "The endpoint supports statically configured SRS reception";
+        }
+      }
+      default NONE;
+
+      description
+        "The parameter informs if endpoint can be statically configured to process PRACH or SRS reception";
+    }
+
+    leaf max-prach-patterns {
+      when "(/user-plane-configuration/static-low-level-rx-endpoints[name=current()/../name]/static-config-supported = 'PRACH')";
+      type uint8;
+        description
+          "Maximum number of PRACH patterns the endpoint can handle in PRACH configuration";
+    }
+
+    leaf max-srs-patterns {
+      when "(/user-plane-configuration/static-low-level-rx-endpoints[name=current()/../name]/static-config-supported = 'SRS')";
+      type uint8;
+        description
+          "Maximum number of SRS patterns the endpoint can handle in SRS configuration";
+    }
+
+    description
+      "Endpoint's capabilities related to static PRACH / SRS configuration.";
+  }
+
+  grouping endpoint-tdd-pattern-support {
+    leaf configurable-tdd-pattern-supported {
+      if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
+      type boolean;
+      default false;
+
+      description
+        "The parameter informs if endpoint supports configuration for TDD pattern";
+    }
+
+    leaf tdd-group {
+      type uint8;
+      description
+        "Parameter is used to group static-low-level-[tr]x-endpoints.
+        Note: [tr]x-array-carriers using static-low-level-[tr]x-endpoints
+        having the same value of tdd-group, must have the same TDD switching
+        points and the same directions to the air interface granted - regardless TDD switching
+        is controlled by M-Plane or by C-Plane";
+    }
+
+    description
+      "This grouping exposes static-low-level-[tr]x-endpoint's capabilities related to its support for configurable
+      TDD patterns and limitations regarding common TDD switching per groups of endpoints.";
+  }
+
+  grouping u-plane-transmission-control {
+    description
+      "Configuration for UL U-plane transmission control";
+
+    leaf transmission-window-control {
+      if-feature "feat:STATIC-TRANSMISSION-WINDOW-CONTROL or feat:DYNAMIC-TRANSMISSION-WINDOW-CONTROL";
+      type enumeration {
+        enum NONE {
+          description
+            "O-RU will use normal transmission type with normal transmission window";
+        }
+        enum STATIC {
+          if-feature feat:STATIC-TRANSMISSION-WINDOW-CONTROL;
+          description
+            "O-RU will use transmission window offset and size and transmission type as configured over M-plane";
+        }
+        enum DYNAMIC {
+          if-feature feat:DYNAMIC-TRANSMISSION-WINDOW-CONTROL;
+          description
+            "O-RU will use transmission window offset and size and transmission type as requested over C-plane";
+        }
+      }
+      default NONE;
+
+      description
+        "Selects type of UL U-plane transmission window control for the endpoint";
+    }
+
+    leaf transmission-window-schedule {
+      when "(../transmission-window-control = 'STATIC')";
+      if-feature feat:STATIC-TRANSMISSION-WINDOW-CONTROL;
+      type union {
+        type empty;
+        type leafref {
+          path "/user-plane-configuration/transmission-window-schedules/id";
+        }
+      }
+      description
+        "Identifies U-plane transmission window schedule (which provides a list of symbol-specific offsets)
+         to be used by the endpoint.
+         Symbol-specific offset values from the schedule are added to endpoint specific offset value
+         from transmission-window-offset.
+         If this element is not present, the O-RU assumes as all symbol specific offsets are zero.
+         For restrictions on values of symbol-specific offsets see description of transmission-window-offset.
+         This parameter shall not be set to value other than empty if transmission control is not enabled
+         by transmission-window-control.";
+    }
+
+    leaf transmission-window-offset {
+      when "(../transmission-window-control = 'STATIC')";
+      if-feature feat:STATIC-TRANSMISSION-WINDOW-CONTROL;
+      type uint16;
+      units "number of symbols";
+      default 0;
+      description
+        "Transmission window offset.
+         The effective symbol-specific offset is sum of endpoint-specific offset value from transmission-window-offset
+         and symbol-specific offset from transmission-window-schedules referenced by transmission-window-schedule.
+
+         If this element is not present then O-RU assumes transmission-window-offset is zero.
+         This parameter shall not be set to value other than 0 if transmission control is not enabled
+         by transmission-window-control.
+
+         There is no direct upper bound for this parameter (except value range defined by leaf type) but there are
+         restrictions on combination of values of transmission-window-offset, transmission-window-offset,
+         symbol-specific offset from transmission-window-schedules and transmission-window-size.
+
+         Specifically, if endpoint is set for delay managed operation (non-time-managed-delay-enabled = FALSE)
+         then O-RU handles U-Plane transmission as delay managed traffic and combination of values of
+         transmission-window-offset, symbol-specific offset from transmission-window-schedules and
+         transmission-window-size must not exceed O-RU buffering capacity (transmission-buffering-capacity)
+         for the requested reception schedule.
+
+         If endpoint is set for non-delay managed operation (non-time-managed-delay-enabled = TRUE)
+         then O-RU handles U-Plane transmission on best effort basis. In this case any combination of values
+         of transmission-window-offset, symbol-specific offset from transmission-window-schedules and
+         transmission-window-size is permitted. This does not remove restrictions on parameters due to restrictions
+         defined for value type or restrictions that depend on INDEPENDENT-TRANSMISSION-WINDOW-CONTROL feature
+
+         Additional restrictions on values (and presence) of transmission-window-schedule, transmission-window-offset
+         and transmission-window-size depend on presence of INDEPENDENT-TRANSMISSION-WINDOW-CONTROL feature.
+
+         If INDEPENDENT-TRANSMISSION-WINDOW-CONTROL feature is not supported then all endpoints with
+         transmission control enabled that handle the same carrier type and SCS must be configured
+         (via M-plane or C-plane) with parameter values resulting in transmission windows that coincide
+         between the endpoints. That is, for every symbol N, the effective transmission window for symbol N
+         must be shared (start at the same time and end at the same time) by all the endpoints handling
+         same carrier type and SCS. This restriction applies only to endpoints that have transmission
+         control enabled.
+
+         If INDEPENDENT-TRANSMISSION-WINDOW-CONTROL feature is supported then restriction described
+         above does not apply and a different transmission window (window offset and window size)
+         can be used for every endpoint capable of transmission window control.";
+    }
+
+    leaf transmission-window-size {
+      when "(../transmission-window-control = 'STATIC')";
+      if-feature feat:STATIC-TRANSMISSION-WINDOW-CONTROL;
+      type uint16 {
+        range "0..10000";
+      }
+      units "microsecond";
+      default 0;
+      description
+        "Transmission window size to be used; only values that are compatible with SCS used
+         for the endpoint are allowed.
+         Minimum supported value is determined by SCS specific transmission window size
+         reported by O-RU in ru-delay-profile.
+
+         Client can use special value 0 (zero) instead of the SCS specific transmission window
+         size reported by O-RU in ru-delay-profile with the same effect.
+         This parameter shall not be set to value other than 0 if transmission control is not enabled
+         (transmission-window-control = NONE) or the endpoint is set for non-delay managed operation
+         (non-time-managed-delay-enabled = TRUE).
+
+         There is no direct upper bound for this parameter (except value range defined by leaf type) but there are
+         restrictions on combination of values of transmission-window-offset, transmission-window-offset,
+         symbol-specific offset from transmission-window-schedules and transmission-window-size.
+         See description of transmission-window-offset for more details.";
+    }
+
+    leaf transmission-type {
+      when "(../transmission-window-control = 'STATIC')";
+      if-feature "feat:STATIC-TRANSMISSION-WINDOW-CONTROL and feat:UNIFORMLY-DISTRIBUTED-TRANSMISSION";
+      type enumeration {
+        enum NORMAL {
+          description
+            "Normal transmission (unspecified within transmission window)";
+        }
+        enum UNIFORMLY-DISTRIBUTED {
+          if-feature feat:UNIFORMLY-DISTRIBUTED-TRANSMISSION;
+          description
+            "Uniformly distributed over transmission window: each of N messages in the window
+             transmitted at random time in a separate subwindow; subwindow size is window size / N ";
+        }
+      }
+
+      description "Type of delay supported by the endpoint";
+    }
+  }
+
+  grouping tx-endpoint-compression-grouping {
+    description
+      "Grouping for endpoint compression";
+
+    container compression {
+      presence
+        "This container shall exists to avoid misaligned compression
+        methods between devices";
+
+      description
+        "Container which consists of global configurable parameters for compression";
+
+      uses cf:compression-details;
+
+      leaf fs-offset {
+        if-feature cf:CONFIGURABLE-FS-OFFSET;
+        type uint8;
+        default 0;
+        description
+          "Adjusts FS (full scale) value of IQ format relative to FS derived from unmodified IQ format.
+           Please refer to CU-Plane specification for details";
+      }
+
+      list dynamic-compression-configuration {
+        when "../compression-type = 'DYNAMIC'";
+        key "id";
+        unique "compression-method iq-bitwidth fs-offset";
+        description
+          "List of possible configuration in case dynamic configuration is used
+           Note: In case of empty list all available compressions can be chosen dynamically
+                 and default fs-offset is taken (0).
+                 If the feature CONFIGURABLE-FS-OFFSET is not supported,
+                 fs-offset will not be considered as one of the criteria for unique statement.
+                 Refer to RFC7950 clause 7.8.3 for details of unique statement";
+
+        leaf id {
+          type uint16;
+          description
+            "Identification number for particular compression";
+        }
+
+        uses cf:compression-method-grouping;
+
+        leaf fs-offset {
+          if-feature cf:CONFIGURABLE-FS-OFFSET;
+          type uint8;
+          default 0;
+          description
+            "Adjusts FS (full scale) value of IQ format relative to FS derived from unmodified IQ format.
+             Please refer to CU-Plane specification for details";
+        }
+
+        leaf channel-information-iq-bitwidth {
+          type uint8{
+            range "1..16";
+          }
+          status deprecated;
+          description
+            "I/Q bitwidth for channel information in Section Type6.
+            Leaf is deprecated as it should be independent of dynamic compression,
+            NETCONF client instead uses channel-information-bitwidth schema node";
+        }
+      }
+
+      leaf channel-information-bitwidth {
+        type uint8{
+          range "1..16";
+        }
+        description
+          "I/Q bitwidth for channel information in Section Type6.
+           maximum value of 16bit is limitted by 4bit ciIqWidth in the C-Plane message.
+           Note: This parameter shall be used when the NETCONF client does not make use of
+           the CHANNEL-INFORMATION-COMPRESSION feature.";
+      }
+
+      list channel-information-compressions {
+        if-feature "feat:CHANNEL-INFORMATION-COMPRESSION";
+        key id;
+
+        leaf id {
+          type uint16;
+          description
+            "Identification number for particular channel information compression";
+        }
+
+        leaf channel-information-compression-method {
+          type cf:ci-compression-method-def;
+          description
+            "Channel information compression method";
+        }
+
+        leaf iq-bitwidth {
+          type uint8{
+            range "1..16";
+          }
+          description
+            "Bitwidth to be used in compression, maximum value of 16bit is limitted by 4bit ciIqWidth in the C-Plane message.
+
+            When this schema node is used in the configuration, the O-RU shall ignore the configuration of the
+            /low-level-tx-endpoints/compression/channel-information-bitwidth schema node";
+        }
+
+        description
+          "List of available compressions, that can be dynamically choosen, for channel information (e.g. ST6) for this endpoint.
+           Note1: When only one compression is listed here, it implies that channel information compression
+                  is static and mentioned compression is taken into use.
+           Note2: O-RU Shall reject configuration with compressions that are not supported";
+      }
+
+      list bf-weights-compressions {
+        key id;
+
+        leaf id {
+          type uint16;
+          description
+            "Identification number for particular beamforming compression";
+        }
+
+        leaf bf-weights-compression {
+          type cf:bf-compression-method-def;
+          description
+            "Beamforming weight compression method";
+        }
+
+        leaf iq-bitwidth {
+          type uint8;
+          description
+            "Bitwidth to be used in compression";
+        }
+
+        description
+          "List of available compressions, that can be dynamically choosen, for beamforming weights for this endpoint.
+           Note1: When only one compression is listed here, it implies that beamforming weights compression
+                  is static and mentioned compression is taken into use.
+           Note2: O-RU Shall reject configuration with compressions that are not supported";
+      }
+    }
+  }
+
+  grouping rx-endpoint-compression-grouping {
+    description
+      "Grouping for endpoint compression";
+
+    container compression {
+      presence
+        "This container shall exists to avoid misaligned compression
+        methods between devices";
+
+      description
+        "Container which consists of global configurable parameters for compression";
+
+      uses cf:compression-details;
+
+      leaf fs-offset {
+        if-feature cf:CONFIGURABLE-FS-OFFSET;
+        type uint8;
+        default 0;
+        description
+          "Adjusts FS (full scale) value of IQ format relative to FS derived from unmodified IQ format.
+           Please refer to CU-Plane specification for details";
+      }
+
+      list dynamic-compression-configuration {
+        when "../compression-type = 'DYNAMIC'";
+        key "id";
+        unique "compression-method iq-bitwidth fs-offset";
+        description
+          "List of possible configuration in case dynamic configuration is used
+           Note: In case of empty list all available compressions can be chosen dynamically
+                 and default fs-offset is taken (0).
+                 If the feature CONFIGURABLE-FS-OFFSET is not supported,
+                 fs-offset will not be considered as one of the criteria for unique statement.
+                 Refer to RFC7950 clause 7.8.3 for details of unique statement";
+
+        leaf id {
+          type uint16;
+          description
+            "Identification number for particular compression";
+        }
+
+        uses cf:compression-method-grouping;
+
+        leaf fs-offset {
+          if-feature cf:CONFIGURABLE-FS-OFFSET;
+          type uint8;
+          default 0;
+          description
+            "Adjusts FS (full scale) value of IQ format relative to FS derived from unmodified IQ format.
+             Please refer to CU-Plane specification for details";
+        }
+      }
+
+      list bf-weights-compressions {
+        key id;
+
+        leaf id {
+          type uint16;
+          description
+            "Identification number for particular beamforming compression";
+        }
+
+        leaf bf-weights-compression {
+          type cf:bf-compression-method-def;
+          description
+            "Beamforming weight compression method";
+        }
+
+        leaf iq-bitwidth {
+          type uint8;
+          description
+            "Bitwidth to be used in compression";
+        }
+
+        description
+          "List of available compressions, that can be dynamically choosen, for beamforming weights for this endpoint.
+           Note1: When only one compression is listed here, it implies that beamforming weights compression
+                  is static and mentioned compression is taken into use.
+           Note2: O-RU Shall reject configuration with compressions that are not supported";
+      }
+    }
+  }
+  
+  grouping supported-section-type4-config {
+    description
+      "Set of parameters required for section type 4 slot configuration message.";
+      list st4-supported-commands {
+        key "st4-command-type";
+        
+        description
+          "This parameter specifies the list of Section Type 4 command types supported by O-RU.";
+        leaf st4-command-type {
+          type enumeration {
+            enum TIME_DOMAIN_BEAM_CONFIG {
+              description "O-RU support for receiving time domain beamforming command.";
+            }
+            enum TDD_CONFIG_PATTERN {
+              description "O-RU support for receiving TDD symbol pattern for a given slot.";
+            }
+          }
+          description
+            "Section Type 4 command types supported by O-RU.";
+        }
+      }
+      
+      list st4-reception-mask {
+        key "cmd-scope";
+       
+        description
+          "List of symbol mask per command scope, specifying the O-RU capability to receive Section Type 4 message for a
+          given command scope only for symbols for which the corresponding bit is set to '1' in the bitmask. If the O-RU
+          receives a Section Type 4 message with associated command for a symbol whose bit value is set to '0' in this
+          bitmask, the O-RU shall reject the Section Type 4 message";
+        
+        leaf cmd-scope {
+          type enumeration {
+            enum ARRAY-COMMAND {
+              description
+                "Command applies to all endpoints assigned to the tx-array(s) and/or rx-array(s).If the O-RU
+                is operating with multiple O-DUs, the scope of an individual O-DU is limited, to the
+                endpoints assigned to the O-DU which was the originator of the command.";
+            }
+            enum CARRIER-COMMAND {
+              description
+                "Command applies to all endpoints assigned to the tx-array-carrier and/or rx-array-carrier.";
+            }
+            enum O-RU-COMMAND {
+              description
+                "O-RU level command, i.e., one that applies to all arrays and carriers. If the O-RU
+                is operating with multiple O-DUs, the scope of an individual O-DU is limited, as
+                specified in CUS-Plane specification, clause 7.5.2.17.";
+            }
+          }
+          description "Command scope for section type 4 commands";
+        }  
+       
+        leaf st4-reception-bitmask {
+          type uint16;
+            description
+             "This parameter specifies the O-RU capability to receive Section Type 4 message with associated commands for the symbols
+             for which the corresponding bit is set to '1' in the bitmask. If the O-RU receives a Section Type 4 message with
+             associated command for a symbol whose bit value is set to '0' in this bitmask, the O-RU shall reject the Section Type 4 message";
+        }
+     }
+  }
+
+  grouping uplane-conf-group {
+    description
+      "Grouping for uplane configuration related parameters";
+
+    list low-level-tx-links {
+      key name;
+      description
+        "Object model for low-level-tx-link configuration";
+
+      leaf name {
+        type string;
+        description
+          "Unique name of low-level-tx-link object.";
+      }
+
+      leaf sro-id {
+        if-feature feat:SHARED-ORU-MULTI-OPERATOR;
+        type leafref {
+          path "/or-user:users/or-user:user/or-user:sro-id";
+        }
+        description
+          "An optional shared resource operator associated with this list entry.
+          When present, indicates that the list entry corresponds to a low-level-tx-link
+          associated with a shared resouce operator where the sro-id idenifies
+          a specific shared resouce operator.
+          This schema-node is used to refine NACM privileges for shared
+          resource operators";
+      }
+
+      leaf processing-element {
+        type leafref {
+          path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
+        }
+        mandatory true;
+        description
+          "Contains name of processing-element to be used as transport by low-level-tx-link,
+           if 'transport-qualified-processing-element' is included in the configuration,
+           the O-RU shall use 'transport-qualified-processing-element' instead of this schema node,
+           an O-RU Controller shall still configure this schema node with a leafref to a valid ru-element,
+           but this shall not be used by the O-RU.";
+      }
+
+      leaf transport-session-type {
+        if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+        type enumeration {
+          enum ETH-INTERFACE {
+            description "VLAN based CUS Transport ";
+          }
+          enum UDPIP-INTERFACE {
+            description "UDP/IP based CUS Transport ";
+          }
+          enum ALIASMAC-INTERFACE{
+            description "Alias MAC address based CUS Transport ";
+          }
+        }
+        description
+          "transport session type used when an O-RU is configured with multiple processing elements of different transport session types,
+           in which case it is used for referencing a processing element in 'transport-qualified-processing-element'";
+      }
+
+      leaf transport-qualified-processing-element {
+        if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+        type leafref {
+          path "/o-ran-pe:processing-elements/o-ran-pe:additional-transport-session-type-elements[o-ran-pe:transport-session-type = current()/../transport-session-type]/o-ran-pe:ru-elements/o-ran-pe:name";
+        }
+        description
+           "Contains name of processing-element to be used as transport by low-level-tx-link.
+           Used when the processing element is configured
+           by the list 'additional-transport-session-type-elements'";
+      }
+
+      leaf tx-array-carrier {
+        type leafref {
+          path "/user-plane-configuration/tx-array-carriers/name";
+        }
+        mandatory true;
+        description
+          "Contains name of tx-array-carriers MO to be used as transport by low-level-tx-link";
+      }
+
+      leaf low-level-tx-endpoint {
+        type leafref {
+          path "/user-plane-configuration/low-level-tx-endpoints/name";
+        }
+        mandatory true;
+        description
+          "Contains name of low-level-tx-endpoints MO to be used as transport by low-level-tx-link";
+      }
+    }
+
+    list low-level-rx-links {
+      key name;
+      description
+        "Object model for low-level-rx-links configuration";
+
+      leaf name {
+        type string;
+
+        description
+          "Unique name of low-level-rx-links object.";
+      }
+
+      leaf sro-id {
+        if-feature feat:SHARED-ORU-MULTI-OPERATOR;
+        type leafref {
+          path "/or-user:users/or-user:user/or-user:sro-id";
+        }
+        description
+          "An optional shared resource operator associated with this list entry.
+          When present, indicates that the list entry corresponds to a low-level-rx-link
+          associated with a shared resouce operator where the sro-id idenifies
+          a specific shared resouce operator.
+          This schema-node is used to refine NACM privileges for shared
+          resource operators";
+      }
+
+      leaf processing-element {
+        type leafref {
+          path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
+        }
+        mandatory true;
+        description
+          "Contains name of processing-element to be used as transport by low-level-rx-link,
+           if 'transport-qualified-processing-element' is included in the configuration,
+           the O-RU shall use 'transport-qualified-processing-element' instead of this schema node,
+           an O-RU Controller shall still configure this schema node with a leafref to a valid ru-element,
+           but this shall not be used by the O-RU.";
+      }
+
+      leaf transport-session-type {
+        if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+        type enumeration {
+          enum ETH-INTERFACE {
+            description "VLAN based CUS Transport ";
+          }
+          enum UDPIP-INTERFACE {
+            description "UDP/IP based CUS Transport ";
+          }
+          enum ALIASMAC-INTERFACE{
+            description "Alias MAC address based CUS Transport ";
+          }
+        }
+        description
+          "transport session type used when an O-RU is configured with multiple processing elements of different transport session types,
+           in which case it is used for referencing a processing element in 'transport-qualified-processing-element'";
+      }
+
+      leaf transport-qualified-processing-element {
+        if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+        type leafref {
+          path "/o-ran-pe:processing-elements/o-ran-pe:additional-transport-session-type-elements[o-ran-pe:transport-session-type = current()/../transport-session-type]/o-ran-pe:ru-elements/o-ran-pe:name";
+        }
+        description
+           "Contains name of processing-element to be used as transport by low-level-rx-link.
+           Used when the processing element is configured
+           by the list 'additional-transport-session-type-elements'";
+      }
+
+      leaf rx-array-carrier {
+        type leafref {
+          path "/user-plane-configuration/rx-array-carriers/name";
+        }
+        mandatory true;
+
+        description
+          "Contains name of rx-array-carriers MO to be used as transport by low-level-rx-links";
+      }
+
+      leaf low-level-rx-endpoint {
+        type leafref {
+          path "/user-plane-configuration/low-level-rx-endpoints/name";
+        }
+        mandatory true;
+
+        description
+          "Contains name of low-level-rx-endpoints MO to be used as transport by low-level-rx-links";
+      }
+
+      leaf user-plane-uplink-marking {
+        type leafref {
+          path "/o-ran-pe:processing-elements/o-ran-pe:enhanced-uplane-mapping/o-ran-pe:uplane-mapping/o-ran-pe:up-marking-name";
+        }
+        description
+          "Parameter to set the non-default marking for user-plane";
+      }
+
+      leaf enhanced-user-plane-uplink-marking {
+        if-feature "feat:MULTIPLE-TRANSPORT-SESSION-TYPE";
+        type leafref {
+          path "/o-ran-pe:processing-elements/o-ran-pe:additional-transport-session-type-elements[o-ran-pe:transport-session-type = current()/../transport-session-type]/o-ran-pe:enhanced-uplane-mapping/o-ran-pe:uplane-mapping/o-ran-pe:up-marking-name";
+        }
+        description
+           "Parameter to set the non-default marking for user-plane.
+            Used when the enhanced-uplane-mapping is configured
+            by the list 'additional-transport-session-type-elements'";
+      }
+    }
+
+    list endpoint-types {
+      key "id";
+      config false;
+      description
+        "Properties of endpoint that are common to multiple endpoints if such are identified
+         Note: For any endpoint supporting mixed numerology within slot/symbol (multiple-numerology-supported=TRUE)
+              * Interval specific (per-slot and per-symbol) capacity constraints instantaneous capacity usage
+                (i.e. capacity is shared/distributed between all numerologies used at an instant of time).
+              * Instantaneous capacity usage is the sum of capacity usages of all intervals of a specific type (slot/symbol)
+                that share the instant of time at which instantaneous capacity usage is evaluated regardless of numerology.
+              * Capacity used in an interval is allocated at the start of the interval and is released at the end of the interval
+                (e.g. capacity used for symbol #N of numerology #M is unavailable during symbol #N and available for reuse after symbol #N ends).";
+
+      leaf id {
+        type uint16;
+        description
+          "Identifies type of endpoints sharing same properties. Values shall start with 0 and shall be allocated without gaps.";
+      }
+
+      list supported-section-types {
+        key "section-type";
+        description
+          "Indicates section types and extensions endpoints of this type support";
+
+        leaf section-type {
+          type uint8;
+
+          description
+            "This parameter determines the characteristics of U-plane data to be transferred or received from a beam with one pattern id.";
+        }
+
+        leaf-list supported-section-extensions {
+          type uint8;
+
+          description
+            "This parameter provides the extension types supported by the O-RU
+            which provides additional parameters specific to the subject data extension";
+        }
+      }
+      
+      uses supported-section-type4-config {
+        if-feature feat:ST4-SLOT-CONFIG-MSG-SUPPORT;
+      }
+
+      leaf-list supported-frame-structures {
+        type uint8;
+
+        description
+          "List of supported values of frame structure. For semantic and allowed values see CUS-Plane Specification, clause 'frameStructure (frame structure)'";
+      }
+
+      leaf managed-delay-support {
+        type enumeration {
+          enum MANAGED {
+            description
+              "Time managed delays are supported";
+          }
+
+          enum NON_MANAGED {
+            description
+              "Non time managed delays are supported";
+          }
+
+          enum BOTH {
+            description
+              "Both time managed and non time managed delays are supported";
+          }
+        }
+
+        description
+          "Type of delay supported by the endpoint";
+      }
+
+      leaf multiple-numerology-supported {
+        type boolean;
+        default true;
+        description
+          "Indicates whether the endpoint type supports multiple numerologies";
+      }
+
+      leaf max-numerology-change-duration {
+        type uint16 {
+          range "0..10000";
+        }
+
+        units Ts;
+        description
+          "Maximum gap of endpoint operation that will be caused by changing of
+          numerology.
+
+          This time is required for reconfiguration and flushing of pipes.
+
+          This leaf contains valid data only when multiple-numerology-supported
+          is set to true.";
+      }
+
+      uses endpoint-section-capacity;
+      uses endpoint-beam-capacity;
+      uses endpoint-prb-capacity;
+      uses endpoint-section-extension-limits;
+
+      leaf-list prb-capacity-allocation-granularity {
+        type uint16;
+
+        description
+          "List of capacity allocation steps. O-RU allocates PRB capacity rounding it up to nearest value N
+          from prb-capacity-allocation-granularity such that M >= number-of-prb-per-scs.
+          See also number-of-prb-per-scs/number-of-prb.";
+      }
+
+      uses endpoint-numerology-capacity;
+
+      leaf static-transmission-window-control-supported {
+        if-feature feat:STATIC-TRANSMISSION-WINDOW-CONTROL;
+        type boolean;
+        description
+          "Endpoint supports transmission-window-control = STATIC";
+      }
+
+      leaf uniformly-distributed-transmission-supported {
+        if-feature "feat:STATIC-TRANSMISSION-WINDOW-CONTROL and feat:UNIFORMLY-DISTRIBUTED-TRANSMISSION";
+        type boolean;
+        description
+          "Endpoint supports transmission-type = UNIFORMLY-DISTRIBUTED";
+      }
+
+      leaf ordered-transmission-supported {
+        if-feature feat:ORDERED-TRANSMISSION;
+        type boolean;
+        description
+          "Endpoint supports ordered transmission of U-plane messages
+           and can be configured with ordered-transmission = TRUE";
+      }
+
+      leaf dynamic-transmission-window-control-supported {
+        if-feature feat:DYNAMIC-TRANSMISSION-WINDOW-CONTROL;
+        type boolean;
+        description
+          "Endpoint supports U-plane transmission window control via C-plane
+           (supports transmission-window-control = DYNAMIC) with independent window offset and size per symbol";
+      }
+
+      leaf dynamic-transmission-window-control-per-section-supported {
+        when "../dynamic-transmission-window-control-supported = 'true'";
+        if-feature feat:DYNAMIC-TRANSMISSION-WINDOW-CONTROL;
+        type boolean;
+        description
+          "Endpoint supports U-plane transmission window control via C-plane
+           (supports transmission-window-control = DYNAMIC) with independent window offset and size per section";
+      }
+
+      leaf dynamic-uniformly-distributed-transmission-supported {
+        if-feature "feat:DYNAMIC-TRANSMISSION-WINDOW-CONTROL and feat:UNIFORMLY-DISTRIBUTED-TRANSMISSION";
+        type boolean;
+        description
+          "Endpoint supports U-plane transmission window control via C-plane
+           (supports transmission-window-control = DYNAMIC) with independent transmission type per symbol";
+      }
+
+      leaf dynamic-uniformly-distributed-transmission-per-section-supported {
+        when "../dynamic-uniformly-distributed-transmission-supported = 'true'";
+        type boolean;
+        description
+          "Endpoint supports U-plane transmission window control via C-plane
+           (supports transmission-window-control = DYNAMIC) with independent transmission type per section";
+      }
+
+      uses transmission-buffering-capacity {
+        when "static-transmission-window-control-supported = 'true' or dynamic-transmission-window-control-supported = 'true'";
+        if-feature "feat:STATIC-TRANSMISSION-WINDOW-CONTROL or feat:DYNAMIC-TRANSMISSION-WINDOW-CONTROL";
+      }
+
+      leaf cplane-message-processing-limits-required {
+         if-feature feat:CPLANE-MESSAGE-PROCESSING-LIMITS;
+         type boolean;
+         config false;
+         description
+           "Endpoint requires applying C-Plane message processing limits defined in 'per-cplane-message-limits'.
+           and can be configured with cplane-message-processing-limits-enabled = TRUE";
+       }
+
+      uses per-cplane-message-limits {
+        when "cplane-message-processing-limits-required = 'true'";
+        if-feature feat:CPLANE-MESSAGE-PROCESSING-LIMITS;
+      }
+
+      leaf beam-update-contention-control-limits-required {
+        if-feature feat:BEAM-UPDATE-CONTENTION-CONTROL;
+        type boolean;
+        config false;
+        description
+          "Endpoint requires applying beam update contention control limits defined in 'beam-update-contention-control-limits'.
+          and can be configured with beam-update-contention-control-enabled = TRUE";
+      }
+
+      uses beam-update-contention-control-limits {
+        when "beam-update-contention-control-limits-required = 'true'";
+        if-feature feat:BEAM-UPDATE-CONTENTION-CONTROL;
+      }
+
+      leaf max-ack-nack-per-symbol {
+        type uint16;
+        description
+          "This value indicates the max number of ACK/NACK feedbacks supported by the endpoint in a symbol when
+          section extension 22 (ACK/NACK request) and section type 8 (ACK/NACK feedback) are supported by the endpoint.
+          The number of ACK/NACK feedbacks in a symbol is defined as the sum of 'numberofACKs' + 'numberofNACKs' in all C-Plane
+          messages sent by the endpoints in a symbol";
+      }
+    }
+
+    list transmission-window-schedules {
+      if-feature feat:STATIC-TRANSMISSION-WINDOW-CONTROL;
+
+      key id;
+      description
+        "Parameters for scheduled UL U-plane message transmission (static transmission window control)";
+
+      leaf id {
+        type uint16;
+        description
+          "Identifies a UL U-plane message transmission schedule";
+      }
+
+      list schedule {
+        key symbol;
+        description
+          "Defines transmission window offset for given symbol.
+           If no entry is present for a symbol then O-RU assumes offset=0 for that symbol.
+           Entries with offset=0 shall be omitted.";
+
+        leaf symbol {
+          type uint16;
+          description
+            "Number of a symbol within a frame for which transmission offset is given.";
+        }
+
+        leaf offset {
+          type uint16;
+          description
+            "Transmission window offset; expressed as number of symbols the transmission window start is delayed by.
+             This value is added to u-plane-transmission-control/transmission-window-offset.
+             For restrictions on value of offset see description of transmission-window-offset.";
+        }
+      }
+    }
+
+    list endpoint-capacity-sharing-groups {
+      key "id";
+      config false;
+      description
+        "Represents groups of endpoints that share capacity. Depending on O-RU implementation,
+        processing resources that handle CU-plane (e.g. memory to keep sections and beams)
+        could be allocated per endpoint or shared between several endpoints.
+        To address this O-RU shall report own capability per endpoint (see endpoint-types)
+        and per group of endpoints sharing capacity.
+        If endpoint is in multiple groups then resulting constraint is minimum over all groups.
+        Note: values of parameters representing capacity that is not shared between endpoints in a group
+              shall be set to max value of specific parameter; this effectively removes related constraint.
+        Note: For any endpoint supporting mixed numerology within slot/symbol (multiple-numerology-supported=TRUE)
+              * Interval specific (per-slot and per-symbol) capacity constraints instantaneous capacity usage
+                (i.e. capacity is shared/distributed between all numerologies used at an instant of time).
+              * Instantaneous capacity usage is the sum of capacity usages of all intervals of a specific type (slot/symbol)
+                that share the instant of time at which instantaneous capacity usage is evaluated regardless of numerology.
+              * Capacity used in an interval is allocated at the start of the interval and is released at the end of the interval
+                (e.g. capacity used for symbol #N of numerology #M is unavailable during symbol #N and available for reuse after symbol #N ends).";
+
+      leaf id {
+        type uint16;
+        description
+          "Identifies group of endpoints sharing resources.
+          Values shall start with 0 and shall be allocated without gaps.";
+      }
+      uses endpoint-section-capacity;
+      uses endpoint-beam-capacity;
+      uses endpoint-prb-capacity;
+      uses endpoint-numerology-capacity;
+      uses endpoint-section-extension-limits;
+
+      leaf max-endpoints {
+        type uint16;
+        description
+          "Indicates how many endpoints in the group can be used4 simultaneously";
+      }
+      leaf max-managed-delay-endpoints {
+        type uint16;
+        description
+          "Number of endpoints supporting managed delay that can be used (configured for use) at a time";
+      }
+      leaf max-non-managed-delay-endpoints {
+        type uint16;
+        description
+          "Number of endpoints supporting non-managed delay that can be used (configured for use) at a time";
+      }
+      uses transmission-buffering-capacity {
+        if-feature "feat:STATIC-TRANSMISSION-WINDOW-CONTROL or feat:DYNAMIC-TRANSMISSION-WINDOW-CONTROL";
+      }
+
+      uses per-cplane-message-limits {
+        if-feature feat:CPLANE-MESSAGE-PROCESSING-LIMITS;
+      }
+
+      leaf max-ack-nack-per-symbol {
+        type uint16;
+        description
+          "This value indicates the max number of ACK/NACK feedbacks supported by the endpoint sharing group in a symbol when
+           section extension 22 (ACK/NACK request) and section type 8 (ACK/NACK feedback) are supported by the endpoint sharing group.
+           The number of ACK/NACK feedbacks in a symbol is defined as the sum of 'numberofACKs' + 'numberofNACKs' in all C-Plane
+           messages sent by the endpoints in group in a symbol";
+      }
+    }
+
+    list endpoint-prach-group  {
+      key "id";
+      config false;
+      description
+        "Represents group of a series of PRACH preamble formats";
+
+      leaf id {
+        type uint16;
+        description
+          "Identifies group of PRACH preamble formats.";
+      }
+
+      leaf-list supported-prach-preamble-formats {
+        type prach-preamble-format;
+        min-elements 1;
+        description
+          "the list of PRACH preamble formats supported by the endpoint-type that is
+          applicable to static-low-level-rx-endpoints in the O-RU";
+      }
+
+    }
+
+    list supported-compression-method-sets {
+      key "id";
+      config false;
+      description
+        "List of available compression methods supported by device";
+
+      leaf id {
+        type uint16;
+        description
+          "Identification number for compression method set";
+      }
+
+      list compression-method-supported {
+        uses cf:compression-method-grouping;
+        uses cf:compresion-format-grp {
+          status deprecated;
+        }
+
+        leaf-list fs-offset {
+          if-feature cf:CONFIGURABLE-FS-OFFSET;
+          type uint8;
+          default 0;
+          description
+            "Adjusts FS (full scale) value of IQ format relative to FS derived from unmodified IQ format.
+             Please refer to CU-Plane specification for details";
+
+        }
+        description
+          "List of supported compression methods by O-RU
+           Note: if O-RU supports different compression methods per endpoint
+                 then please refer to endpoints to have information what
+                 exactly is supported on particular endpoint";
+      }
+    }
+
+    list static-low-level-tx-endpoints {
+      key name;
+      config false;
+      description
+        "Object model for static-low-level-tx-endpoints configuration";
+
+      leaf name {
+        type string;
+
+        description
+          "Unique name of static-low-level-tx-endpoints object.";
+      }
+
+      leaf-list restricted-interfaces {
+        type leafref {
+          path "/if:interfaces/if:interface/if:name";
+        }
+        description
+          "Optionally used to indicate that a low-level link is constrained to operate only via a subset of the available interfaces.";
+      }
+
+      leaf array {
+        type leafref {
+          path "/user-plane-configuration/tx-arrays/name";
+        }
+        mandatory true;
+        description
+          "Contains distname of tx-arrays, particular low-level-tx-endpoints is in hardware dependency with.
+          Note: single instance of tx-arrays can be referenced by many instances of low-level-tx-endpoints
+          (e.g. to allow DU to handle multiple fronthauls and multiple component carriers).";
+      }
+
+      leaf endpoint-type {
+        type leafref {
+          path "../../endpoint-types/id";
+        }
+
+        description
+          "Reference to endpoint type capabilities list element supported by this endpoint";
+      }
+
+      leaf-list capacity-sharing-groups {
+        type leafref {
+          path "../../endpoint-capacity-sharing-groups/id";
+        }
+
+        description
+          "Reference to capacities of sharing-groups supported by this endpoint";
+      }
+
+      list supported-reference-level {
+        if-feature TX-REFERENCE-LEVEL;
+        key "id";
+        description
+          "Informs about supported ranges for gain reference level.";
+
+        leaf id {
+          type uint16;
+          description
+            "Identification number for particular range";
+        }
+
+        leaf min {
+          type decimal64 {
+            fraction-digits 4;
+          }
+          units dB;
+          mandatory true;
+          description
+            "Minimum of supported gain reference level";
+        }
+
+        leaf max {
+          type decimal64 {
+            fraction-digits 4;
+          }
+          units dB;
+          mandatory true;
+          description
+            "Maximum of supported gain reference level";
+        }
+      }
+
+      container compression {
+        description
+          "Container collecting compression related parameters.";
+
+        leaf dynamic-compression-supported {
+          type boolean;
+
+          description
+            "Informs if endpoint supports dynamic compression method";
+        }
+
+        leaf realtime-variable-bit-width-supported {
+          type boolean;
+
+          description
+            "Informs if endpoint supports real-time variable bit with";
+        }
+
+        leaf supported-compression-set-id {
+          type leafref {
+            path "../../../supported-compression-method-sets/id";
+          }
+
+          description
+            "Id of supported compression set for this endpoint";
+        }
+      }
+
+      uses endpoint-tdd-pattern-support;
+
+    }
+
+    list static-low-level-rx-endpoints {
+      key name;
+      config false;
+      description
+        "Object model for static-low-level-rx-endpoints configuration";
+
+      leaf name {
+        type string;
+
+        description
+          "Unique name of static-low-level-rx-endpoints object.";
+      }
+
+      leaf-list restricted-interfaces {
+        type leafref {
+          path "/if:interfaces/if:interface/if:name";
+        }
+        description
+          "Optionally used to indicate that a low-level link is constrained to operate only via a subset of the available interfaces.";
+      }
+
+      leaf array {
+        type leafref {
+          path "/user-plane-configuration/rx-arrays/name";
+        }
+        mandatory true;
+        description
+          "Contains distname of rx-arrays, particular low-level-rx-endpoints is in hardware dependency with.
+          Note: single instance of rx-arrays can be referenced by many instances of low-level-rx-endpoints
+          (e.g. to allow DU to handle multiple fronthauls and multiple component carriers).";
+      }
+
+      leaf endpoint-type {
+        type leafref {
+          path "../../endpoint-types/id";
+        }
+
+        description
+          "Reference to endpoint type capabilities list element supported by this endpoint";
+      }
+
+      leaf-list capacity-sharing-groups {
+        type leafref {
+          path "../../endpoint-capacity-sharing-groups/id";
+        }
+
+        description
+          "Reference to capacities of sharing-groups supported by this endpoint";
+      }
+
+      leaf prach-group {
+        type leafref {
+          path "../../endpoint-prach-group/id";
+          require-instance false;
+        }
+        description
+          "An optional leaf used for those rx endpoints that support PRACH, indicating
+          the group id describing the set of of PRACH preambles supported";
+      }
+
+      container compression {
+        description
+          "Container collecting compression related parameters.";
+
+        leaf dynamic-compression-supported {
+          type boolean;
+
+          description
+            "Informs if endpoint supports dynamic compression method";
+        }
+
+        leaf realtime-variable-bit-width-supported {
+          type boolean;
+
+          description
+            "Informs if endpoint supports real-time variable bit with";
+        }
+
+        leaf supported-compression-set-id {
+          type leafref {
+            path "../../../supported-compression-method-sets/id";
+          }
+
+          description
+            "Id of supported compression set for this endpoint";
+        }
+      }
+
+      uses endpoint-static-config-support;
+
+      uses endpoint-tdd-pattern-support;
+
+      leaf transmission-order {
+        when "(/user-plane-configuration/endpoint-types[id=current()/../endpoint-type]/ordered-transmission-supported = 'true')";
+        if-feature feat:ORDERED-TRANSMISSION;
+        type uint32;
+        description
+          "The value indicates relative order of sending U-plane messages specific to same symbol
+           and transmission window by two endpoints with ordered-transmission = TRUE
+           belonging to the same transmission-order-group;
+           multiple endpoints may report the same value if their relative sending order is not guaranteed";
+      }
+
+      leaf transmission-order-group {
+        when "(/user-plane-configuration/endpoint-types[id=current()/../endpoint-type]/ordered-transmission-supported = 'true')";
+        if-feature feat:ORDERED-TRANSMISSION;
+        type uint32;
+        description
+          "The value indicates a group of endpoints that preserve relative ordering of message sending;
+           message sending between endpoints in different groups is not guaranteed";
+      }
+    }
+
+    list low-level-tx-endpoints {
+      key "name";
+
+      description
+        "Object model for low-level-tx-endpoints configuration - augmented static-low-level-tx-endpoints by local-address
+        which cannot be added to static low-level-tx-endpoints as we cannot have modifiable element in static object";
+
+      leaf name {
+        type leafref {
+          path "/user-plane-configuration/static-low-level-tx-endpoints/name";
+          require-instance false;
+        }
+        mandatory true;
+
+        description
+          "Unique name of low-level-tx-endpoint object. Reference to static object";
+      }
+
+      leaf sro-id {
+        if-feature feat:SHARED-ORU-MULTI-OPERATOR;
+        type leafref {
+          path "/or-user:users/or-user:user/or-user:sro-id";
+        }
+        description
+          "An optional shared resource operator associated with this list entry.
+          When present, indicates that the list entry corresponds to a low-level-tx-endpoint
+          associated with a shared resouce operator where the sro-id idenifies
+          a specific shared resouce operator.
+          This schema-node is used to refine NACM privileges for shared
+          resource operators";
+      }
+
+
+      uses tx-endpoint-compression-grouping;
+      uses scs-config;
+
+      container e-axcid {
+        uses eaxc;
+
+        description
+          "Contains local address of low level TX endpoint offered by NETCONF server.";
+      }
+
+      uses coupling-methods;
+
+      leaf configurable-tdd-pattern-supported {
+        if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
+        type leafref {
+          path "/user-plane-configuration/static-low-level-rx-endpoints[name=current()/../name]/configurable-tdd-pattern-supported";
+          require-instance false;
+        }
+        description "RO to RW parameter mapping - needed for conditional under tx-array-carrier";
+      }
+
+      leaf cplane-message-processing-limits-enabled {
+        if-feature feat:CPLANE-MESSAGE-PROCESSING-LIMITS;
+        type boolean;
+        default false;
+        description
+          "TRUE: O-DU shall support the C-Plane message processing limits and has selected to adhere to the C-Plane limits defined in 'per-cplane-message-limits'.
+          FALSE: O-DU shall not support C-Plane message processing limits and endpoint limits defined in 'per-cplane-message-limits' shall not apply";
+      }
+
+      leaf beam-update-contention-control-enabled {
+        if-feature feat:BEAM-UPDATE-CONTENTION-CONTROL;
+        type boolean;
+        default false;
+        description
+          "TRUE: O-DU shall support beam update contention control feature of O-RU.Thus requiring O-DU to comply with beam
+          updates restrictions defined in CUS-Plane Spec Section 'Weight-based dynamic beamforming'. In this case applicable
+          beam limits defined in 'beam-update-contention-control-limits' shall apply.
+          FALSE: O-DU shall not support beam update contention control feature of O-RU. Applicable beam limits defined in
+          'endpoint-beam-capacity' shall apply";
+      }
+
+      container channel-information-prb-group-configuration {
+        if-feature feat:CHANNEL-INFORMATION-PRB-GROUP;
+        description
+          "Container for configurable parameters for channel information prb group";
+
+        leaf enable-ci-prb-group {
+          type boolean;
+          description
+            "Informs whether or not to enable channel information PRB group in the O-RU,
+            if its value is set to true, the O-RU shall receive and process channel
+            information (e.g., ST6) with PRB group size of configured ci-prb-group-size.";
+        }
+
+        leaf ci-prb-group-size {
+          type uint8 {
+            range "2..254";
+          }
+          description
+            "The configured channel information PRB group size.
+            If enable-ci-prb-group is configured as TRUE, and the IE ciPrbGroupSize doesn't exsit in a section description for channel information,
+            the parameter ci-prb-group-size shall be used for this section description.
+            If the IE ciPrbGroupSize exsits in a section description for channel information,
+            no matter whether enable-ci-prb-group is configured as TRUE, the IE ciPrbGroupSize shall be used for this section description.";
+        }
+      }
+    }
+
+    list low-level-rx-endpoints {
+      key name;
+
+      description
+        "Object model for low-level-rx-endpoint configuration - augmented static-low-level-rx-endpoints by local-address
+        which cannot be added to static low-level-rx-endpoints as we cannot have modifiable element in static object";
+
+      leaf name {
+        type leafref {
+          path "/user-plane-configuration/static-low-level-rx-endpoints/name";
+          require-instance false;
+        }
+        mandatory true;
+
+        description
+          "Unique name of low-level-rx-endpoint object. Reference to static object";
+      }
+
+      leaf sro-id {
+        if-feature feat:SHARED-ORU-MULTI-OPERATOR;
+        type leafref {
+          path "/or-user:users/or-user:user/or-user:sro-id";
+        }
+        description
+          "An optional shared resource operator associated with this list entry.
+          When present, indicates that the list entry corresponds to a low-level-rx-endpoint
+          associated with a shared resouce operator where the sro-id idenifies
+          a specific shared resouce operator.
+          This schema-node is used to refine NACM privileges for shared
+          resource operators";
+      }
+
+      uses rx-endpoint-compression-grouping;
+      uses scs-config;
+
+      list ul-fft-sampling-offsets {
+        key scs;
+        description
+          "List of FFT sampling offsets configured for each SCS that will be used.
+          Client shall configure one element for each SCS that will be used.";
+
+        leaf scs {
+          type mcap:scs-config-type;
+          description
+            "Value corresponds to SCS values defined for frameStructure in C-plane
+            Note: set of allowed values is restricted by SCS derived from values in supported-frame-structures.";
+        }
+
+        leaf ul-fft-sampling-offset {
+          type uint16;
+
+          units Ts;
+          description
+            "Determines time advance of capture window for FFT.
+            Value represents time advance of capture window start in relation to the end of CP. Unit is Ts.
+            Note: value of this parameter is usually set to '0' (zero) for PRACH channels.
+            Any phase offset resulting from the non-zero value of this parameter is handled in O-DU.";
+        }
+      }
+
+      container e-axcid {
+        uses eaxc;
+
+        description
+          "Contains local address of low level RX endpoint offered by NETCONF server.";
+      }
+
+      leaf eaxc-gain-correction {
+        if-feature EAXC-GAIN-CORRECTION;
+        type decimal64 {
+          fraction-digits 4;
+        }
+        units dB;
+        default 0;
+        description
+          "eAxC specific part of overall gain_correction.
+           gain_correction = common array-carrier gain-correction + eAxC-gain-correction.";
+      }
+
+      leaf non-time-managed-delay-enabled {
+        type boolean;
+        default false;
+        description
+          "Tells if non time managed delay shall be enabled";
+      }
+
+      uses coupling-methods;
+
+      leaf static-config-supported {
+        type leafref {
+          path "/user-plane-configuration/static-low-level-rx-endpoints[name=current()/../name]/static-config-supported";
+          require-instance false;
+        }
+        description "RO to RW parameter mapping - for further conditionals";
+      }
+
+      leaf static-prach-configuration {
+        when "(/user-plane-configuration/low-level-rx-endpoints[name=current()/../name]/static-config-supported = 'PRACH')";
+        if-feature mcap:PRACH-STATIC-CONFIGURATION-SUPPORTED;
+        type leafref {
+          path "/user-plane-configuration/static-prach-configurations/static-prach-config-id";
+        }
+        description
+          "This parameter creates reference to static PRACH configuration applicable for particular endpoint";
+      }
+
+      leaf static-srs-configuration {
+        when "(/user-plane-configuration/low-level-rx-endpoints[name=current()/../name]/static-config-supported = 'SRS')";
+        if-feature mcap:SRS-STATIC-CONFIGURATION-SUPPORTED;
+        type leafref {
+          path "/user-plane-configuration/static-srs-configurations/static-srs-config-id";
+        }
+        description
+          "This parameter creates reference to static SRS configuration applicable for particular endpoint";
+      }
+
+      leaf configurable-tdd-pattern-supported {
+        if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
+        type leafref {
+          path "/user-plane-configuration/static-low-level-rx-endpoints[name=current()/../name]/configurable-tdd-pattern-supported";
+          require-instance false;
+        }
+        description "RO to RW parameter mapping - needed for conditional under rx-array-carrier";
+      }
+
+      uses u-plane-transmission-control;
+
+      leaf ordered-transmission {
+        if-feature feat:ORDERED-TRANSMISSION;
+        type boolean;
+        default false;
+        description
+          "Commands O-RU to order UL U-plane message transmission between endpoints
+           Meaningless when ordered transmission is not supported for particular endpoint.";
+      }
+
+      leaf cplane-message-processing-limits-enabled {
+        if-feature feat:CPLANE-MESSAGE-PROCESSING-LIMITS;
+        type boolean;
+        default false;
+        description
+          "TRUE: O-DU shall support C-Plane message processing limits and has selected to adhere
+          to the C-Plane limits defined in 'per-cplane-message-limits'.
+          FALSE: O-DU shall not support C-Plane message processing limits and hence C-Plane and
+          endpoint limits defined in 'per-cplane-message-limits' shall not apply";
+      }
+
+      leaf beam-update-contention-control-enabled {
+        if-feature feat:BEAM-UPDATE-CONTENTION-CONTROL;
+        type boolean;
+        default false;
+        description
+          "TRUE: O-DU shall support beam update contention control feature of O-RU.Thus requiring O-DU to comply with beam
+          updates restrictions defined in CUS-Plane Spec Section 'Weight-based dynamic beamforming'. In this case applicable
+          beam limits defined in 'beam-update-contention-control-limits' shall apply.
+          FALSE: O-DU shall not support beam update contention control feature of O-RU. Applicable beam limits defined in
+          'endpoint-beam-capacity' shall apply";
+      }
+    }
+
+    list tx-array-carriers {
+      key name;
+      description
+        "Object model for tx-array-carriers configuration";
+
+      leaf name {
+        type string;
+
+        description
+          "Unique name of tx-array-carriers object.";
+      }
+
+      list odu-ids {
+        if-feature feat:SHARED-ORU-MULTI-ODU;
+        key odu-id;
+        description
+          "An optional list of o-du identities associated with this list entry.
+          When present, indicates that the list entry corresponds to a tx-array-carrier
+          associated with one or more particular odu-id(s).
+
+          This list is used to enable enhanced watchdog operation when operating
+          in a single operator environment, where watchdog supervision is performed
+          on a per odu-id basis and supervision failure only results in a sub-set
+          of carriers beign de-activated.";
+
+        leaf odu-id {
+          type string;
+          description "an o-du identity ";
+        }
+      }
+
+      list sro-ids-and-odu-ids {
+        if-feature "feat:SHARED-ORU-MULTI-ODU and feat:SHARED-ORU-MULTI-OPERATOR";
+        key "odu-id sro-id";
+        description
+          "An optional list of sro and o-du identities associated with this list entry.
+          When present, indicates that the list entry corresponds to a tx-array-carrier
+          associated with one or more particular odu-id(s) operated by a particular sro-id.
+
+          This list is used to enable enhanced watchdog operationwhen operating
+          in a multi operator environment, where watchdog supervision is performed on
+          a per odu-id basis and supervision failure only results in a sub-set of
+          carriers beign de-activated.";
+        leaf odu-id {
+          type string;
+          description "an o-du identity ";
+        }
+        leaf sro-id {
+          type string;
+          description "an sro identity ";
+        }
+      }
+
+      uses tx-common-array-carrier-elements;
+
+      leaf band-number {
+        if-feature mcap:LAA;
+        type leafref {
+          path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
+          require-instance false;
+        }
+        description
+          "This parameter informing which frequency band particular antenna
+           array is serving for.
+           Intended use is to deal with multi-band solutions.";
+      }
+
+      container lte-tdd-frame {
+        when "(/user-plane-configuration/tx-array-carriers/rw-type = 'LTE') and  (/user-plane-configuration/tx-array-carriers/rw-duplex-scheme = 'TDD')";
+        status deprecated;
+        description
+          "Container which consists of global configurable parameters for tdd Frame.
+          This contained is deprecated due to introduction of TDD pattern configuration
+          applicable in a common way for LTE and NR.";
+
+        leaf subframe-assignment {
+          type enumeration {
+            enum SAO {
+              description "subframe assignment configuration 0";
+            }
+            enum SA1 {
+              description "subframe assignment configuration 1";
+            }
+            enum SA2 {
+              description "subframe assignment configuration 2";
+            }
+            enum SA3 {
+              description "subframe assignment configuration 3";
+            }
+            enum SA4 {
+              description "subframe assignment configuration 4";
+            }
+            enum SA5 {
+              description "subframe assignment configuration 5";
+            }
+              enum SA6 {
+                description "subframe assignment configuration 6";
+            }
+          }
+          mandatory true;
+          description
+            "Indicates DL/UL subframe configuration as specified in
+            3GPP TS 36.211 [v15.3.0, table 4.2-2]";
+        }
+        leaf special-subframe-pattern {
+          type enumeration {
+            enum SPP0 {
+              description "special subframe pattern configuration 0";
+            }
+            enum SPP1 {
+              description "special subframe pattern configuration 1";
+            }
+            enum SPP2 {
+              description "special subframe pattern configuration 2";
+            }
+            enum SPP3 {
+              description "special subframe pattern configuration 3";
+            }
+            enum SPP4 {
+              description "special subframe pattern configuration 4";
+            }
+            enum SPP5 {
+              description "special subframe pattern configuration 5";
+            }
+            enum SPP6 {
+              description "special subframe pattern configuration 6";
+            }
+            enum SPP7 {
+              description "special subframe pattern configuration 7";
+            }
+            enum SPP8 {
+              description "special subframe pattern configuration 8";
+            }
+            enum SPP9 {
+              description "special subframe pattern configuration 9";
+            }
+            enum SPP10 {
+              description "special subframe pattern configuration 10";
+            }
+          }
+          mandatory true;
+          description
+            "Indicates TDD special subframe configuration as in TS 36.211
+             [v15.3.0, table 4.2-1] ";
+        }
+      }
+
+      container laa-carrier-configuration {
+        when "../band-number = 46";
+        if-feature mcap:LAA;
+        description "Container to specify LAA feature related carrier configuration.";
+        uses laa-carrier-config;
+      }
+
+      leaf gain {
+        type decimal64 {
+          fraction-digits 4;
+        }
+        units dB;
+        mandatory true;
+
+        description
+          "Transmission gain in dB. Value applicable to each array element carrier belonging to array carrier.
+
+          The value of tranmsmission gain shall meet the constraints defined in CUS-Plane, clause 8.1.3.3.";
+      }
+
+      leaf downlink-radio-frame-offset {
+        type uint32 {
+          range 0..12288000;
+        }
+        mandatory true;
+
+        description
+          "This parameter is used for offsetting the starting position of 10ms radio frame.
+          Note: The value should have same value within DU to all tx-array-carriers that have same frequency and bandwidth.
+          Note2: Unit is 1/1.2288e9 s. Then, its range is calculated 0..12288000.";
+      }
+
+      leaf downlink-sfn-offset {
+        type int16 {
+          range -32768..32767;
+        }
+        mandatory true;
+
+        description
+          "This parameter is used for offsetting SFN value.
+          Unit is in 10ms.
+          Note: The value should have same value within DU to all tx-array-carriers that have same frequency and bandwidth.";
+      }
+
+      leaf t-da-offset {
+        if-feature "feat:EXT-ANT-DELAY-CONTROL";
+        type uint32;
+        units Tc;
+        default 0;
+        description
+          "the time difference between the output of DL signal at the
+           antenna connector of O-RU and the transmission over the air.
+           units are Tc=~0.5ns=1/1.96608GHz.
+           An O-RU with 'ext-ant-delay-capability' = 'PER-O-RU' shall reject any configuration
+           where different values of t-da-offset are configured on tx-array-carriers;
+           An O-RU with 'ext-ant-delay-capability' = 'PER-ARRAY' shall reject any configuration
+           where different values of t-da-offset are configured on tx-array-carriers associated with the same tx-array.";
+      }
+
+      leaf reference-level {
+        if-feature TX-REFERENCE-LEVEL;
+        type decimal64 {
+          fraction-digits 4;
+        }
+        units dB;
+        default 0;
+        description
+          "Allows to adjust reference level for sum of IQ signal power over eAxCs in this array-carrier.";
+      }
+
+      leaf configurable-tdd-pattern {
+        when "not(/user-plane-configuration/low-level-tx-endpoints[name = string(/user-plane-configuration/low-level-tx-links[tx-array-carrier = current()/../name]/tx-array-carrier)]/configurable-tdd-pattern-supported = 'false')";
+        if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
+        type leafref {
+          path "/user-plane-configuration/configurable-tdd-patterns/tdd-pattern-id";
+        }
+        description
+          "This parameter creates reference to configuration for TDD pattern applicable for particular tx-array-carrier.
+          The leaf may exist under tx-array-carrier only in case O-RU supports feature 'CONFIGURABLE-TDD-PATTERN-SUPPORTED'
+          AND all low-level-tx-endpoints linked to this tx-array-carrier have configurable-tdd-pattern-supported = 'true'";
+      }
+    }
+
+    list rx-array-carriers {
+      key name;
+      description
+        "Object model for rx-array-carriers configuration";
+
+          leaf name {
+            type string;
+            description
+            "Unique name of rx-array-carriers object.";
+      }
+
+      list odu-ids {
+        if-feature feat:SHARED-ORU-MULTI-ODU;
+        key odu-id;
+        description
+          "An optional list of o-du identities associated with this list entry.
+          When present, indicates that the list entry corresponds to a rx-array-carrier
+          associated with one or more particular odu-id(s).
+
+          This list is used to enable enhanced watchdog operation when operating
+          in a single operator environment, where watchdog supervision is performed
+          on a per odu-id basis and supervision failure only results in a sub-set
+          of carriers beign de-activated.";
+
+        leaf odu-id {
+          type string;
+          description "an o-du identity ";
+        }
+      }
+
+      list sro-ids-and-odu-ids {
+        if-feature "feat:SHARED-ORU-MULTI-ODU and feat:SHARED-ORU-MULTI-OPERATOR";
+        key "odu-id sro-id";
+        description
+          "An optional list of sro and o-du identities associated with this list entry.
+          When present, indicates that the list entry corresponds to a rx-array-carrier
+          associated with one or more particular odu-id(s) operated by a particular sro-id.
+
+          This list is used to enable enhanced watchdog operationwhen operating
+          in a multi operator environment, where watchdog supervision is performed on
+          a per odu-id basis and supervision failure only results in a sub-set of
+          carriers beign de-activated.";
+        leaf odu-id {
+          type string;
+          description "an o-du identity ";
+        }
+        leaf sro-id {
+          type string;
+          description "an sro identity ";
+        }
+      }
+
+      uses rx-common-array-carrier-elements;
+
+      leaf downlink-radio-frame-offset {
+        type uint32 {
+          range 0..12288000;
+        }
+        mandatory true;
+
+        description
+          "This parameter is used for offsetting the starting position of 10ms radio frame.
+          Note: The value should have same value within DU to all tx-array-carriers that have same frequency and bandwidth.
+          Note2: Unit is 1/1.2288e9 s. Then, its range is calculated 0..12288000.";
+      }
+
+      leaf downlink-sfn-offset {
+        type int16 {
+          range -32768..32767;
+        }
+        mandatory true;
+
+        description
+          "This parameter is used for offsetting SFN value.
+          Unit is in 10ms.
+          Note: The value should have same value within DU to all tx-array-carriers that have same frequency and bandwidth.";
+      }
+
+      leaf gain-correction {
+        type decimal64 {
+          fraction-digits 4;
+
+        }
+        units dB;
+        mandatory true;
+        description
+          "Gain correction of RF path linked with array element or array layers.
+           Common part of overall gain_correction.
+           gain_correction = common array-carrier gain-correction + eAxC gain correction.";
+      }
+
+      leaf n-ta-offset {
+        type uint32;
+        units Tc;
+        mandatory true;
+        description
+          "Value of configurable N-TA offset
+          units are Tc=~0.5ns=1/1.96608GHz";
+      }
+
+      leaf t-au-offset {
+        if-feature "feat:EXT-ANT-DELAY-CONTROL";
+        type uint32;
+        units Tc;
+        default 0;
+        description
+          "the time difference between the reception over the air and
+           the input of UL signal at the antenna connector of O-RU.
+           units are Tc=~0.5ns=1/1.96608GHz.
+           An O-RU with 'ext-ant-delay-capability' = 'PER-O-RU' shall reject any configuration
+           where different values of t-au-offset are configured on rx-array-carriers;
+           An O-RU with 'ext-ant-delay-capability' = 'PER-ARRAY' shall reject any configuration
+           where different values of t-au-offset are configured on rx-array-carriers associated with the same rx-array.";
+      }
+
+      leaf configurable-tdd-pattern {
+        when "not(/user-plane-configuration/low-level-rx-endpoints[name = string(/user-plane-configuration/low-level-rx-links[rx-array-carrier = current()/../name]/rx-array-carrier)]/configurable-tdd-pattern-supported = 'false')";
+        if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
+        type leafref {
+          path "/user-plane-configuration/configurable-tdd-patterns/tdd-pattern-id";
+        }
+        description
+          "This parameter creates reference to configuration for TDD pattern applicable for particular rx-array-carrier.
+           The leaf may exist under rx-array-carrier only in case O-RU supports feature 'CONFIGURABLE-TDD-PATTERN-SUPPORTED'
+          AND all low-level-rx-endpoints linked to this rx-array-carrier have configurable-tdd-pattern-supported = 'true'";
+      }
+    }
+
+    list tx-arrays {
+      key "name";
+      config false;
+      description
+        "Structure describing TX array parameters";
+
+      uses parameters;
+
+      leaf min-gain {
+        type decimal64 {
+          fraction-digits 4;
+
+        }
+        units dB;
+        description
+          "Min gain of RF path linked with array element (maximum over elements of array) or array layers";
+      }
+
+      leaf max-gain {
+        type decimal64 {
+          fraction-digits 4;
+
+        }
+        units dB;
+        mandatory true;
+        description
+          "Max gain of RF path linked with array element (minimum over elements of array) or array layers";
+      }
+
+      leaf independent-power-budget {
+        type boolean;
+        mandatory true;
+        description
+          "If true then every element of array has own, power budget independent from power budget of other elements.
+          Else all elements of array that are at same row and column and have same polarisation share power budget";
+      }
+
+      list capabilities {
+        description
+          "List of capabilities related to this tx-array";
+        uses mcap:support-for-dl;
+      }
+    }
+
+    list rx-arrays {
+      key "name";
+      config false;
+      description "Structure describing RX array parameters";
+
+      uses parameters;
+      container gain-correction-range {
+        leaf max {
+          type decimal64 {
+            fraction-digits 4;
+          }
+          units dB;
+          mandatory true;
+          description "Array gain correction factor - maximum allowed value";
+          }
+        leaf min {
+          type decimal64 {
+            fraction-digits 4;
+          }
+          units dB;
+          mandatory true;
+          description "Array gain correction factor - minimum allowed value";
+        }
+
+        description
+          "Array gain correction factor";
+      }
+
+      list capabilities {
+        description
+          "List of capabilities related to this rx-array";
+        uses mcap:support-for-ul;
+      }
+    }
+
+    list relations {
+      key "entity";
+      config false;
+      description "Structure describing relations between array elements";
+
+      leaf entity {
+        type uint16;
+
+        description
+          "Relation entity. Used as a key for list of relations.";
+      }
+
+      container array1 {
+        uses array-choice;
+
+        description
+          "Defines name for first array";
+      }
+      container array2 {
+        uses array-choice;
+
+        description
+          "Defines name for second array";
+      }
+      list types {
+        key "relation-type";
+        description
+          "Defines relation type and pairs for array elements for given arrays";
+
+        leaf relation-type {
+          type enumeration {
+            enum SHARED {
+              description "SHARED";
+            }
+            enum COALOCATED {
+              description "COALOCATED";
+            }
+          }
+          description "Type of relation between array elements";
+        }
+        list pairs {
+          key "element-array1";
+          description
+            "defines related array elements";
+
+          leaf element-array1 {
+            type uint16;
+
+            description
+              "Tells about id of element from array1";
+          }
+          leaf element-array2 {
+            type uint16;
+
+            description
+              "Tells about id of element from array2";
+          }
+        }
+      }
+    }
+
+    container eaxc-id-group-configuration {
+      if-feature mcap:EAXC-ID-GROUP-SUPPORTED;
+      description
+        "This is the container for eAxC ID group configuration.";
+      leaf max-num-tx-eaxc-id-groups {
+        type leafref {
+          path "/mcap:module-capability/mcap:ru-capabilities/mcap:eaxcid-grouping-capabilities/mcap:max-num-tx-eaxc-id-groups";
+          require-instance false;
+        }
+        description "eaxc-id-group-configuration";
+      }
+      leaf max-num-tx-eaxc-ids-per-group {
+        type leafref {
+          path "/mcap:module-capability/mcap:ru-capabilities/mcap:eaxcid-grouping-capabilities/mcap:max-num-tx-eaxc-ids-per-group";
+          require-instance false;
+        }
+        description "max-num-tx-eaxc-ids-per-group";
+      }
+      leaf max-num-rx-eaxc-id-groups {
+        type leafref {
+          path "/mcap:module-capability/mcap:ru-capabilities/mcap:eaxcid-grouping-capabilities/mcap:max-num-rx-eaxc-id-groups";
+          require-instance false;
+        }
+        description "max-num-rx-eaxc-id-groups";
+      }
+      leaf max-num-rx-eaxc-ids-per-group {
+        type leafref {
+          path "/mcap:module-capability/mcap:ru-capabilities/mcap:eaxcid-grouping-capabilities/mcap:max-num-rx-eaxc-ids-per-group";
+          require-instance false;
+        }
+        description "max-num-rx-eaxc-ids-per-group";
+      }
+
+      list tx-eaxc-id-group {
+        must "count(../tx-eaxc-id-group) <= ../max-num-tx-eaxc-id-groups" {
+          error-message "too many tx-eaxcid-id groups";
+        }
+        key "representative-tx-eaxc-id";
+        description
+          "This is a list of the groups of the eAxC IDs assigned to low-level-tx-endpoints.
+          Each group is a union of the 'member-tx-eaxc-id's and a 'representative-tx-eaxc-id'.
+          The low-level-tx-endpoint associated to 'representative-tx-eaxc-id' is able to
+          process the DL C-plane information for all the low-level-tx-endpoints associated
+          to 'member-tx-eaxc-id's.
+
+          Take Note: This list should only contain eAxC IDs assigned to a tx-endpoint.";
+
+
+        leaf representative-tx-eaxc-id {
+          type uint16;
+          description
+            "This parameter contains eAxC_ID that populates content of C-Plane section
+            extension 10 to eAxC_IDs configured in the group as 'member-tx-eaxc-id'(s).";
+        }
+        leaf-list member-tx-eaxc-id {
+          type uint16;
+          must "count(../member-tx-eaxc-id) <= ../../max-num-tx-eaxc-ids-per-group" {
+            error-message "too many tx-eaxcid-id members";
+          }
+          must "current()!=../representative-tx-eaxc-id" {
+            error-message "the representative eaxcid does not need to be a list member";
+          }
+          ordered-by user;
+          description
+            "This is a list of member eAxC IDs, which together with the representative-tx-eaxc-id,
+            are assigned to low-level-tx-endpoints in the group.
+            This list is defined as 'ordered-by user', because the order of the eaxc-id list should be maintained,
+            and the parameters in the SE10 are applied to the eaxc-ids based on the order of eaxc-ids in the list
+            when the section extension conveys unique parameters (beamId/ueId) per eaxc-id.";
+        }
+      }
+
+      list rx-eaxc-id-group {
+        must "count(../rx-eaxc-id-group) <= ../max-num-rx-eaxc-id-groups" {
+          error-message "too many rx-eaxcid-id groups";
+        }
+        key "representative-rx-eaxc-id";
+        description
+          "This is a list of the groups of the eAxC IDs assigned to low-level-rx-endpoints.
+          Each group is a union of 'member-rx-eaxc-id's and a 'representative-rx-eaxc-id'.
+          The low-level-rx-endpoint associated to 'representative-rx-eaxc-id' is able to
+          process the UL C-plane information for all the low-level-rx-endpoints associated
+          to 'member-rx-eaxc-id's.
+
+          Take Note: This list should only contain eAxC IDs assigned to a rx-endpoint.";
+
+        leaf representative-rx-eaxc-id {
+          type uint16;
+          description
+            "This parameter contains eAxC_ID that populates content of C-Plane section
+            extension 10 to eAxC_IDs configured in the group as 'member-rx-eaxc-id'(s).";
+        }
+
+        leaf-list member-rx-eaxc-id {
+          type uint16;
+          must "count(../member-rx-eaxc-id) <= ../../max-num-rx-eaxc-ids-per-group" {
+            error-message "too many rx-eaxcid-id members";
+          }
+          must "current()!=../representative-rx-eaxc-id" {
+            error-message "the representative eaxcid does not need to be a list member";
+          }
+          ordered-by user;
+          description
+            "This is a list of member eAxC IDs assigned to low-level-rx-endpoints in the group.
+            This list is defined as 'ordered-by user', because the order of the eaxc-id list should be maintained,
+            and the parameters in the SE10 are applied to the eaxc-ids based on the order of eaxc-ids in the list
+            when the section extension conveys unique parameters (beamId/ueId) per eaxc-id.";
+        }
+      }
+    }
+
+    list static-prach-configurations {
+      if-feature mcap:PRACH-STATIC-CONFIGURATION-SUPPORTED;
+      key static-prach-config-id;
+      description
+        "List of static PRACH configurations. An O-RU shall reject any configuration
+        modification which exceed the maximum permitted configurations supported by
+        the O-RU";
+
+      leaf static-prach-config-id {
+        type uint8;
+        description
+          "Supplementary parameter acting as key in list of static PRACH configurations.";
+      }
+
+      uses static-prach-configuration;
+    }
+
+    grouping static-prach-configuration {
+      description
+        "Set of parameters related to static PRACH configuration";
+
+      leaf pattern-period {
+        type uint16 {
+          range 1..1024;
+        }
+        mandatory true;
+        description
+          "Period after which static PRACH patterns are repeated. Unit: number of frames.";
+      }
+
+      leaf guard-tone-low-re {
+        type uint32;
+        mandatory true;
+        description
+          "Number of REs occupied by the low guard tones.";
+      }
+
+      leaf num-prach-re {
+        type uint32;
+        mandatory true;
+        description
+          "Number of contiguous PRBs per data section description";
+      }
+
+      leaf guard-tone-high-re {
+        type uint32;
+        mandatory true;
+        description
+          "Number of REs occupied by the high guard tones.";
+      }
+
+      leaf sequence-duration {
+        type uint32 {
+          range 256..24576;
+        }
+        units Ts;
+        mandatory true;
+        description
+          "Duration of single sequence of the PRACH. Sequence may be considered as 'single PRACH symbol'";
+      }
+
+      list prach-patterns {
+        key prach-pattern-id;
+        min-elements 1;
+        description
+          "Provides a PRACH pattern. Each record in the list represents a single PRACH occasion. Number of list entries cannot exceed max-prach-patterns";
+
+        leaf prach-pattern-id {
+          type uint16;
+          mandatory true;
+          description
+            "Supplementary parameter acting as key for prach-pattern list.";
+        }
+
+        leaf number-of-repetitions {
+          type uint8{
+            range 1..14;
+          }
+          mandatory true;
+          description
+            "This parameter defines number of PRACH repetitions in PRACH occasion,
+             to which the section control is applicable.";
+        }
+
+        leaf number-of-occasions {
+          type uint8;
+          mandatory true;
+          description
+            "This parameter informs how many consecutive PRACH occasions is described by the PRACH pattern.";
+        }
+
+        leaf re-offset {
+          type uint32;
+          mandatory true;
+          description
+            "Offset between the start of lowest-frequency RE of lowest-frequency PRB
+             and the start of lowest-frequency RE belonging to the PRACH occasion.
+             The re-offset is configured as number of PRACH REs.";
+        }
+
+        list occasion-parameters {
+          key occasion-id;
+          min-elements 1;
+          description
+            "This is list of cp-lengths, gp-lengths and beam-ids applicable
+             per each PRACH occasion in PRACH pattern.
+             Note: the number of records in this list MUST be equal
+                   to value of parameter number-of-occasions.";
+
+          leaf occasion-id {
+            type uint8;
+            mandatory true;
+            description
+              "Supplementary parameter acting as key in 'occasion-parameters' list";
+          }
+
+          leaf cp-length {
+            type uint16;
+            units Ts;
+            mandatory true;
+            description
+          "Cyclic prefix length. See CUS-plane specification for detailed description.";
+          }
+
+          leaf gp-length {
+            type uint16;
+            units Ts;
+            description
+              "Guard period length.";
+          }
+
+          leaf beam-id {
+            type uint16 {
+              range "min .. 32767";
+            }
+            mandatory true;
+            description
+              "This parameter defines the beam pattern to be applied to the U-Plane data.
+               beamId = 0 means no beamforming operation will be performed.";
+          }
+        }
+
+        leaf frame-number {
+          type uint16{
+            range 0..1023;
+          }
+          mandatory true;
+          description
+            "This parameter is an index inside the pattern-length, such that
+             PRACH occasion is happening for SFN which fulfills following equation:
+             [SFN mod pattern-length = frame-id]";
+        }
+
+        leaf sub-frame-id {
+          type uint16;
+          mandatory true;
+          description
+            "Identifier of sub-frame of the PRACH occasion. Value is interpreted in the same way
+             as subframeId field in a section description of a C-Plane message.";
+        }
+
+        leaf time-offset {
+          type uint16;
+          units Ts;
+          mandatory true;
+          description
+            "This parameter defines the time-offset from the start of the sub-frame
+             to the start of the first Cyclic Prefix of PRACH pattern";
+        }
+      }
+    }
+
+    grouping static-srs-configuration {
+      description
+        "Set of parameters related to static PRACH configuration";
+
+      leaf pattern-period {
+        type uint16 {
+          range 1..1024;
+        }
+        mandatory true;
+        description
+          "Period after which static SRS patterns are repeated. Unit: number of frames.";
+      }
+
+      list srs-patterns {
+        key srs-pattern-id;
+        min-elements 1;
+        description
+          "Provides a SRS pattern. Each record in the list represents a single PRACH occasion. Number of list entries cannot exceed max-srs-patterns.";
+
+        leaf srs-pattern-id {
+          type uint16;
+          mandatory true;
+          description
+            "Supplementary parameter acting as key for srs-pattern list.";
+        }
+
+        leaf sub-frame-id {
+          type uint16;
+          mandatory true;
+          description
+            "Identifier of sub-frame of the Raw SRS occasion. Value is interpreted in the same way
+             as subframeId field in a section description of a C-Plane message.";
+        }
+
+        leaf slot-id {
+          type uint16;
+          mandatory true;
+          description
+            "Identifier of slot of the Raw SRS occasion. Value is interpreted in the same way
+             as slotId field in a section description of a C-Plane message.";
+        }
+
+        leaf start-symbol-id {
+          type uint16;
+          mandatory true;
+          description
+            "Identifier of first symbol of the Raw SRS occasion. Value is interpreted in the same way
+             as startSymbolId field in a section description of a C-Plane message.";
+        }
+
+        leaf beam-id {
+          type uint16 {
+            range "min .. 32767";
+          }
+          mandatory true;
+          description
+            "This parameter defines the beam pattern to be applied to the U-Plane data.
+             beamId = 0 means no beamforming operation will be performed.";
+        }
+
+        leaf num-symbol {
+          type uint16;
+          mandatory true;
+          description
+            "This parameter defines number of consecutive symbols covered by specific srs-pattern.
+             Single srs-pattern may address at least one symbol. However, possible optimisations
+             could allow for several (up to 14) symbols.";
+        }
+
+        leaf start-prbc {
+          type uint16 {
+            range 0..1023;
+          }
+          mandatory true;
+          description
+            "Identifier of first PRB of the Raw SRS occasion. Value is interpreted in the same way
+             as startPrbc field in a section description of a C-Plane message.";
+        }
+
+        leaf num-prbc {
+          type uint16;
+          mandatory true;
+          description
+            "Number of PRBs of the Raw SRS occasion. Value is interpreted in the same way
+             as numPrbc field in a section description of a C-Plane message.";
+        }
+      }
+    }
+
+    grouping configurable-tdd-pattern {
+      description
+        "Set of parameters related to configurable TDD pattern.
+        Note: configurable-tdd-pattern shall not be used in case the usage would collide with
+        deprecated 'lte-tdd-pattern'.";
+
+      list switching-points {
+        key switching-point-id;
+        description
+          "List of switching points within frame, related to configurable TDD pattern.
+          An O-RU shall reject any configuration modification which exceeds the maximum
+          number of switching-points supported by the O-RU";
+
+        leaf switching-point-id {
+          type uint16;
+          description
+            "Supplementary parameter acting as key for switching-points list.";
+          }
+
+        leaf direction {
+          type enumeration {
+            enum UL {
+            description "Uplink";
+            }
+            enum DL {
+            description "Downlink";
+            }
+            enum GP {
+            description "Guard period";
+            }
+          }
+          mandatory true;
+          description
+            "Parameter provides information regarding desired signal direction at the moment switching point occurs.";
+        }
+
+        leaf frame-offset {
+          type uint32;
+          mandatory true;
+          description
+            "Offset from DL air frame boundary transmitted at RF connector to the point in time that is characteristic to the operation on RF switches. Unit is 1/1.2288e9 s.";
+        }
+      }
+    }
+
+    list static-srs-configurations {
+      if-feature mcap:SRS-STATIC-CONFIGURATION-SUPPORTED;
+      key static-srs-config-id;
+      description
+        "List of static SRS configurations";
+
+      leaf static-srs-config-id {
+        type uint8;
+        description
+          "Supplementary parameter acting as key in the list of static SRS configurations.";
+      }
+
+      uses static-srs-configuration;
+    }
+
+    list configurable-tdd-patterns {
+      if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
+      key tdd-pattern-id;
+      description
+        "List of configured TDD patterns";
+
+      leaf tdd-pattern-id {
+        type uint8;
+        description
+          "Supplementary parameter acting as key in the list of configured TDD patterns.";
+      }
+
+      uses configurable-tdd-pattern;
+    }
+  }
+
+  grouping tx-array-notification-group {
+    description
+      "Grouping for tx-array for notification";
+
+    list tx-array-carriers{
+      key name;
+      description "notification of state change for tx-array-carriers";
+
+      leaf name{
+        type leafref{
+          path "/user-plane-configuration/tx-array-carriers/name";
+        }
+        description
+          "name of tx-array-carriers is notified at state change";
+      }
+      leaf state{
+        type leafref{
+          path "/user-plane-configuration/tx-array-carriers/state";
+        }
+      description
+        "state of tx-array-carriers is notified at state change";
+      }
+    }
+  }
+
+  grouping rx-array-notification-group {
+    description
+      "Grouping for rx-array for notification";
+
+    list rx-array-carriers{
+      key name;
+      description
+        "Notification used to inform about state change of rx-array-carriers";
+      leaf name{
+        type leafref{
+          path "/user-plane-configuration/rx-array-carriers/name";
+        }
+        description
+          "name of rx-array-carriers is notified at state change";
+      }
+      leaf state{
+        type leafref{
+          path "/user-plane-configuration/rx-array-carriers/state";
+        }
+        description
+          "state of rx-array-carriers is notified at state change";
+      }
+    }
+  }
+
+  // top level container
+  container user-plane-configuration {
+    description "top level container for user plane configuration";
+
+    uses uplane-conf-group;
+    uses general-config;
+  }
+
+  //notification statement
+  notification tx-array-carriers-state-change {
+    description
+      "Notification used to inform about state change of tx-array-carriers";
+    uses tx-array-notification-group;
+  }
+  notification rx-array-carriers-state-change {
+    description
+    "Notification used to inform about state change of tx-array-carriers";
+
+    uses rx-array-notification-group;
+  }
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-uplane-conf@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-uplane-conf@2020-12-10.yang
deleted file mode 100644
index 57177f5..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-uplane-conf@2020-12-10.yang
+++ /dev/null
@@ -1,2744 +0,0 @@
-module o-ran-uplane-conf {
-  yang-version 1.1;
-  namespace "urn:o-ran:uplane-conf:1.0";
-  prefix "o-ran-uplane-conf";
-
-  import o-ran-processing-element {
-    prefix "o-ran-pe";
-  }
-
-  import ietf-interfaces {
-    prefix "if";
-  }
-
-  import o-ran-module-cap {
-    prefix "mcap";
-    revision-date 2020-12-10;
-  }
-
-  import o-ran-compression-factors {
-    prefix "cf";
-    revision-date 2020-08-10;
-  }
-
-  organization "O-RAN Alliance";
-
-  contact
-    "www.o-ran.org";
-
-  description
-    "This module defines the module capabilities for
-    the O-RAN Radio Unit U-Plane configuration.
-
-    Copyright 2020 the O-RAN Alliance.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the above disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the above disclaimer in the documentation
-    and/or other materials provided with the distribution.
-    * Neither the Members of the O-RAN Alliance nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.";
-
-  revision "2020-12-10" {
-    description
-      "version 5.0.0
-
-      1) introduces new coupling method coupling-via-frequency-and-time-with-priorities-optimized
-      2) introduces new max-highest-priority-sections-per-slot parameter";
-
-    reference "ORAN-WG4.M.0-v05.00";
-  }
-
-  revision "2020-08-10" {
-    description
-      "version 4.0.0
-
-      1) parameters allowing for static PRACH configuration introduced
-      2) parameters allowing for static SRS configuration introduced
-      3) parameters allowing for configuration of TDD pattern introduced
-      4) Backward compatible change to introduce new parameter 'coupling-method' related
-         to Section Description Priority to serve for CUS-Plane CR";
-
-    reference "ORAN-WG4.M.0-v04.00";
-  }
-
-  revision "2020-04-17" {
-    description
-      "version 3.0.0
-
-      1) Adding optional little endian support
-      2) Adding a new capability parameter to indicate that the O-RU
-      supports regularizationFactor in section type 5
-      3) Added support for Dynamic Spectrum Sharing feature
-      4) Clarify the supported number of reMasks in RU side
-      5) Section extension for grouping multiple ports
-      6) adding PRACH formats to endpoint capabilities";
-
-    reference "ORAN-WG4.M.0-v03.00";
-  }
-
-  revision "2019-07-03" {
-    description
-      "version 1.1.0
-
-      1) added new leaf multiple-numerology-supported to enable O-RU to report
-         whether it supports multiple numerologies.
-
-      2) fixing broken constraints (configuration cannot be dependent on
-        operational state). This is a backwards incompatible revision.
-
-       As these constraints only apply when the LAA feature is used, and also
-       when considering the limited number of implementation that need to be
-       taken into consideration for backwards compatibility, it has been
-       agreed to NOT increment the namespace integer.
-
-      3) added frequency related capabilities for tx-arrays and rx-array
-
-      4) removed redundant LAA import";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-  revision "2019-02-04" {
-    description
-      "version 1.0.0
-
-      1) imported model from xRAN
-      2) changed namespace and reference from xran to o-ran";
-
-    reference "ORAN-WG4.M.0-v01.00";
-  }
-
-  feature EAXC-GAIN-CORRECTION {
-    description
-      "Presence of feature indicates that O-RU supports eAxC specific gain correction.";
-  }
-
-  feature TX-REFERENCE-LEVEL {
-    description
-      "Presence of feature indicates that O-RU supports TX gain reference level control";
-  }
-
-  typedef prach-preamble-format {
-    type enumeration {
-      enum LTE-0 {
-        description
-          "LTE PRACH Preamble format 0";
-      }
-      enum LTE-1 {
-        description
-          "LTE PRACH Preamble format 1";
-      }
-      enum LTE-2 {
-        description
-          "LTE PRACH Preamble format 2";
-      }
-      enum LTE-3 {
-        description
-          "LTE PRACH Preamble format 3";
-      }
-      enum LTE-4 {
-        description
-          "LTE PRACH Preamble format 4";
-      }
-      enum LTE-NB0 {
-        description
-          "LTE Narrowband PRACH format 0";
-      }
-      enum LTE-NB1 {
-        description
-          "LTE Narrowband PRACH format 1";
-      }
-      enum NR-0 {
-        description
-          "5GNR PRACH Preamble format 0";
-      }
-      enum NR-1 {
-        description
-          "5GNR PRACH Preamble format 1";
-      }
-      enum NR-2 {
-        description
-          "5GNR PRACH Preamble format 2";
-      }
-      enum NR-3 {
-        description
-          "5GNR PRACH Preamble format 3";
-      }
-      enum NR-A1 {
-        description
-          "5GNR PRACH Preamble format A1";
-      }
-      enum NR-A2 {
-        description
-          "5GNR PRACH Preamble format A2";
-      }
-      enum NR-A3 {
-        description
-          "5GNR PRACH Preamble format A3";
-      }
-      enum NR-B1 {
-        description
-          "5GNR PRACH Preamble format B1";
-      }
-      enum NR-B2 {
-        description
-          "5GNR PRACH Preamble format B2";
-      }
-      enum NR-B3 {
-        description
-          "5GNR PRACH Preamble format B3";
-      }
-      enum NR-B4 {
-        description
-          "5GNR PRACH Preamble format B4";
-      }
-      enum NR-C0 {
-        description
-          "5GNR PRACH Preamble format C0";
-      }
-      enum NR-C2 {
-        description
-          "5GNR PRACH Preamble format C2";
-      }
-    }
-
-    description
-      "PRACH preamble format definition";
-  }
-
-  typedef polarisation_type {
-    type enumeration {
-      enum MINUS_45 {
-        description "MINUS_45";
-      }
-      enum ZERO {
-        description "ZERO";
-      }
-      enum PLUS_45 {
-        description "PLUS_45";
-      }
-      enum PLUS_90 {
-        description "PLUS_90";
-      }
-    }
-    description "Type definition for polarisations";
-  }
-
-  grouping general-config {
-    description "a group for general configuration";
-
-    container general-config {
-      description "a container for general configuration";
-
-      leaf regularization-factor-se-configured {
-        type boolean;
-        default false;
-        description
-          "Informs if regularizationfactor in section extension is configured(true) or not(false), this
-          leaf indicates whether the O-DU will send the regularizationfactor in section extension.
-
-          If the O-RU does not support regularization-factor-se-supported in o-ran-module-cap.yang,
-          this leaf is ignored.";
-      }
-
-      leaf little-endian-byte-order {
-        type boolean;
-        default false;
-
-        description
-          "If  little endian byte order for C/U plane data flows is supported by
-          the O-RU, indicates if the O-RU should use little endian byte order
-          for all UL and DL C/U plane data flows.
-
-          If little endian byte order is NOT supported, this node is ignored
-          (and the default bigendian byte order used)";
-      }
-    }
-  }
-
-  grouping laa-carrier-config {
-    description "Carrier Configuration for support of LAA. ";
-    leaf ed-threshold-pdsch {
-      type int8;
-      units dBm;
-      description
-        "This value indicates Energy Detection(ED) threshold for LBT for PDSCH and for measurements in dBm.";
-    }
-
-    leaf ed-threshold-drs {
-      type int8;
-      units dBm;
-      description
-        "This value indicates Energy Detection(ED) threshold for LBT for DRS in dBm.";
-    }
-
-    leaf tx-antenna-ports {
-      type uint8;
-      description
-        "This value indicates Tx antenna ports for DRS (1, 2, 4)";
-    }
-
-    leaf transmission-power-for-drs {
-      type int8;
-      units decibels;
-      description
-        "This value indicates offset of Cell specific reference Signal(CRS) power to reference signal power (dB).
-        DRS signal consists of CRS, PSS, SSS, and optionally CSI-RS.";
-    }
-
-    leaf dmtc-period {
-      type enumeration {
-        enum FORTY {
-          description
-            "40 ms";
-        }
-        enum EIGHTY {
-          description
-            "80 ms";
-        }
-        enum ONE-HUNDRED-SIXTY {
-          description
-            "160 ms";
-        }
-      }
-      units milliseconds;
-      description
-        "This value indicates DRS measurement timing configuration (DMTC) period in ms";
-    }
-
-    leaf dmtc-offset {
-      type uint8;
-      units subframes;
-      description
-        "This value indicates dmtc offset in Subframes.";
-    }
-
-    leaf lbt-timer {
-      type uint16;
-      units milliseconds;
-      description
-        "This value indicates LBT Timer in milliseconds.";
-    }
-
-    list max-cw-usage-counter {
-      when "/mcap:module-capability/mcap:rw-sub-band-info/mcap:rw-self-configure = 'true'";
-      key "priority";
-      description "";
-      leaf priority {
-        type enumeration {
-          enum P1 {
-            description "priority 1";
-          }
-          enum P2 {
-            description "priority 2";
-          }
-          enum P3 {
-            description "priority 3";
-          }
-          enum P4 {
-            description "priority 4";
-          }
-        }
-        description "This value provides the priority class traffic for which the counter is calculated.";
-      }
-
-        leaf counter-value {
-          type uint8 {
-            range "1..8";
-          }
-          description "This value indicates the maximum value of counter
-          which shows how many max congestion window value is used for backoff
-          number of priority class traffic. This value is defined at 3GPP 36.213
-          section 15.1.3 as K.";
-        }
-      }
-  }
-
-  grouping coupling-methods {
-    description
-      "Grouping for configuration of desired C-Plane / U-Plane coupling methods (if supported)";
-    leaf coupling-to {
-      type leafref {
-        path "/mcap:module-capability/mcap:ru-capabilities/mcap:coupling-methods/mcap:coupling-via-frequency-and-time";
-        require-instance false;
-      }
-
-      description
-        "RW instance of RO parameter.";
-    }
-    leaf coupling-method {
-      when "../coupling-to = 'true'";
-      type enumeration{
-        enum NORMAL {
-          description "Coupling via sectionId value. This value can be used always.";
-        }
-        enum FREQUENCY_AND_TIME {
-          description "Coupling via frequency and time. Can be used when coupling-via-frequency-and-time = true
-                      or coupling-via-frequency-and-time-with-priorities = true in o-ran-module-cap.yang";
-        }
-        enum FREQUENCY_AND_TIME_WITH_PRIORITIES {
-          description "Coupling via frequency and time with priorities. Can be used when
-                      coupling-via-frequency-and-time-with-priorities = true in o-ran-module-cap.yang";
-        }
-        enum FREQUENCY_AND_TIME_WITH_PRIORITIES_OPTIMIZED {
-          description "Coupling via frequency and time with priorities optimized. Can be used when
-                      coupling-via-frequency-and-time-with-priorities-optimized = true in o-ran-module-cap.yang";
-        }
-      }
-      default NORMAL;
-      description
-        "Method of coupling between C-Plane and U-Plane messages; see methods of coupling
-        of C-Plane and U-Plane in CUS-Plane specification. If an O-RU doesn't support the
-        necessary capability as defined in o-ran-module-cap.yang, the O-RU shall respond
-        with rpc-error including an error-message describing the error condition";
-    }
-  }
-
-  grouping  eaxc {
-    description
-      "One eAxC identifier (eAxC ID) comprises a band and sector
-      identifier (BandSector_ID), a component-carrier identifier (CC_ID) and a
-      spatial stream identifier (RU_Port_ID).
-
-      In this version of the specification, one eAxC contains only one spatial
-      stream (i.e. one beam per subcarrier) at a time.
-
-      Bit allocation is subdivided as follows:
-      *    O_DU_Port_ID: Used to differentiate processing units at O-DU
-      *    BandSector_ID: Aggregated cell identifier
-      *    CC_ID: distinguishes Carrier Components
-      *    RU_Port_ID: Used to differentiate spatial streams or beams on the O-RU
-
-      The bitwidth of each of the above fields is variable this model is supposed to check
-        if we are occpying bits continuously but we do not have to occupy all 16 bits";
-
-
-    leaf o-du-port-bitmask {
-      type uint16;
-      mandatory true;
-      description
-        "mask for eaxc-id bits used to encode O-DU Port ID";
-    }
-
-    leaf band-sector-bitmask {
-      type uint16;
-      mandatory true;
-      description
-        "mask for eaxc-id bits used to encode the band sector ID";
-    }
-
-    leaf ccid-bitmask {
-      type uint16;
-      mandatory true;
-      description
-        "mask for eaxc-id bits used to encode the component carrier id";
-    }
-
-    leaf ru-port-bitmask {
-      type uint16;
-      mandatory true;
-      description
-        "mask for eaxc-id bits used to encode the O-RU Port ID";
-    }
-
-    leaf eaxc-id {
-      type uint16;
-      mandatory true;
-      description
-        "encoded value of eaxcid to be read by CU-Plane";
-    }
-  }
-
-  grouping parameters {
-    description
-      "Grouping of all parameters common between UL and DL";
-
-    leaf name {
-      type string;
-      mandatory true;
-      description "Unique name of array antenna";
-    }
-
-    leaf number-of-rows {
-      type uint16;
-      mandatory true;
-      description "Number of rows array elements are shaped into - M";
-    }
-
-    leaf number-of-columns {
-      type uint16;
-      mandatory true;
-      description "Number of columns array elements are shaped into - N";
-    }
-
-    leaf number-of-array-layers {
-      type uint8;
-      mandatory true;
-      description "Number of array layers array elements are shaped into - Q";
-    }
-
-    leaf horizontal-spacing {
-      type decimal64 {
-            fraction-digits 5;
-        }
-      units Meter;
-
-      description "Average distance between centers of nearby AE in horizontal direction (in array coordinates system)";
-    }
-
-    leaf vertical-spacing{
-      type decimal64 {
-            fraction-digits 5;
-        }
-      units Meter;
-
-      description "Average distance between centers of nearby AE in vertical direction (in array coordinates system)";
-    }
-
-    container normal-vector-direction {
-      description
-        "Counter-clockwise rotation around z and y axis.";
-
-      leaf azimuth-angle{
-        type decimal64 {
-          fraction-digits 4;
-          }
-        units Degrees;
-
-        description "Azimuth angle, counter-clockwise rotation around z-axis. Value 'zero' points to broad-side, value '90' points to y-axis";
-      }
-       leaf zenith-angle{
-         type decimal64 {
-          fraction-digits 4;
-          }
-        units Degrees;
-
-        description "Zenith angle, counter-clockwise rotation around y-axis. Value 'zero' points to zenith, value '90' points to horizon";
-       }
-    }
-
-    container leftmost-bottom-array-element-position {
-      description "Structure describing position of leftmost, bottom array element.";
-      leaf x {
-        type decimal64 {
-          fraction-digits 4;
-          }
-        units Meter;
-
-        description "X dimension of position of leftmost, bottom array element";
-      }
-
-      leaf y {
-        type decimal64 {
-          fraction-digits 4;
-          }
-        units Meter;
-
-        description "Y dimension of position of leftmost, bottom array element";
-      }
-
-      leaf z {
-        type decimal64 {
-          fraction-digits 4;
-          }
-        units Meter;
-
-        description "Z dimension of position of leftmost, bottom array element";
-      }
-    }
-    list polarisations {
-      key "p";
-      min-elements 1;
-      max-elements 2;
-
-      description
-        "List of supported polarisations.";
-
-      leaf p {
-      type uint8;
-      mandatory true;
-      description
-        "Polarisation index. See CUS-plane";
-      }
-
-      leaf polarisation {
-        type polarisation_type;
-        mandatory true;
-        description "Type of polarisation supported by array.";
-      }
-    }
-    leaf band-number {
-      type leafref {
-        path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
-      }
-      mandatory true;
-      description
-        "This parameter informing which frequency band particular antenna
-         array is serving for.
-         Intended use is to deal with multiband solutions.";
-    }
-  }
-
-  grouping array-choice {
-    choice antenna-type {
-      case tx {
-        leaf tx-array-name {
-          type leafref {
-            path "/o-ran-uplane-conf:user-plane-configuration/o-ran-uplane-conf:tx-arrays/o-ran-uplane-conf:name";
-          }
-
-          description
-            "Leafref to tx array if such is choosen";
-        }
-      }
-      case rx {
-        leaf rx-array-name {
-          type leafref {
-            path "/o-ran-uplane-conf:user-plane-configuration/o-ran-uplane-conf:rx-arrays/o-ran-uplane-conf:name";
-          }
-
-          description
-            "Leafref to rx array if such is choosen";
-        }
-      }
-      description
-        "Choice for antenna type";
-    }
-    description
-      "Elements which groups choice for antenna type";
-  }
-
-  grouping scs-config {
-    description
-      "It groups all parameters related to SCS configuration";
-
-    leaf frame-structure {
-      type uint8;
-
-      description
-        "This parameter defines the frame structure. The first 4 bits define the FFT/iFFT size
-        being used for all IQ data processing related to this message.
-        The second 4 bits define the sub carrier spacing as well as the number of slots per 1ms sub-frame
-        according to 3GPP TS 38.211, taking for completeness also 3GPP TS 36.211 into account";
-    }
-
-    leaf cp-type {
-      type enumeration {
-        enum NORMAL {
-          description
-            "Normal cyclic prefix";
-        }
-
-        enum EXTENDED {
-          description
-            "Extended cyclic prefix";
-        }
-      }
-
-      description
-        "Provides type of CP (cyclic prefix) if section type 3 is not used or type of CP cannot be determined from cpLength.";
-    }
-
-    leaf cp-length {
-      type uint16;
-      units Ts;
-      mandatory true;
-      description
-        "Used for symbol 0 for NR & LTE, and symbol 7*2u for NR.
-        See CUS-plane";
-    }
-
-    leaf cp-length-other {
-      type uint16;
-      units Ts;
-      mandatory true;
-      description
-        "Used for other symbols than by cp-length above";
-    }
-
-    leaf offset-to-absolute-frequency-center {
-      type int32;
-      mandatory true;
-      description
-        "This provides value of freqOffset to be used if section type 3 is not used. See freqOffset in CUS-plane.
-         offset-to-absolute-frequency-center defines the relative spacing between the center of RE#0 of RB#0 to the center-of-channel-bandwidth.
-         If offset-to-absolute-frequency-center for NR with SCS=15kHz is odd,
-         it implies that 7.5kHz shift as indicated by the parameter frequencyShift7p5khz for UL is applied.
-         When type (in tx/rx-array-carrier) is DSS, “offset-to-absolute-frequency-center” indicates the 1st RE of 1st RB of NR.";
-    }
-
-    list number-of-prb-per-scs {
-      key scs;
-      description
-        "List of configured for each SCS that will be used.";
-
-      leaf scs {
-        type mcap:scs-config-type;
-        description
-          "Value corresponds to SCS values defined for frameStructure in C-plane.
-          Note: set of allowed values is restricted by SCS derived from values in supported-frame-structures.";
-      }
-
-      leaf number-of-prb {
-        type uint16;
-        mandatory true;
-        description
-          "Determines max number of PRBs that will be used in all sections per one symbol.
-          This is affecting allocation of resources to endpoint. Value shall not exceed constrains
-          defined by max-prb-per-symbol of endpoint type. In addition sum (over all used epoints
-          within a group of endpoints sharing resources) of number-of-prb rounded up to
-          nearest value from prb-capacity-allocation-granularity shall not exceed max-prb-per-symbol of the group.";
-      }
-    }
-  }
-
-  grouping tx-common-array-carrier-elements {
-    description
-      "This grouping containes all common parameters for tx-array-carriers and rx-array-carriers";
-
-    leaf absolute-frequency-center {
-      type uint32;
-      status deprecated;
-      description
-        "deprecated in version 5.0.0 and replaced with offset-to-absolute-frequency-center
-        and common FREF translated from absolute-frequency-center (NREF) as defined in 38.104";
-    }
-
-    leaf center-of-channel-bandwidth {
-      type uint64;
-          units Hz;
-      mandatory true;
-      description
-        "Center frequency of channel bandwidth in Hz. Common for all numerologies.
-         center-of-channel-bandwidth is the FREF translated from absolute-frequency-center (NREF) as per 3GPP TS 38.104";
-    }
-
-    leaf channel-bandwidth {
-      type uint64;
-      units Hz;
-      mandatory true;
-
-      description
-        "Width of carrier given in Hertz";
-    }
-
-    leaf active {
-      type enumeration {
-        enum INACTIVE {
-              description
-                "carrier does not provide signal - transmission is disabled";
-            }
-        enum SLEEP{
-              description
-                "carrier is fully configured and was active but is energy saving mode";
-            }
-        enum ACTIVE{
-              description
-                "carrier is fully configured and properly providing the signal";
-            }
-      }
-      default INACTIVE;
-
-      description
-        "Indicates if transmission is enabled for this array carriers. Note that Netconf server uses state parameter
-        to indicate actual state of array carriers operation. When array carriers is in sleep status,
-        Netconf server rejects all other operation request to tx-array-carriers object except either request to change from sleep
-        to active status or delete MO operation (see 4.8) to the object.";
-    }
-
-    leaf state {
-      type enumeration {
-        enum DISABLED {
-          description
-            "array carrier is not active - transmission of signal is disabled.";
-        }
-        enum BUSY {
-          description
-            "array carrier is processing an operation requested by change of active parameter.
-            When array carriers is BUSY the transmission of signal is not guaranteed.";
-        }
-        enum READY {
-          description
-            "array carrier had completed activation operation - is active and transmission of signal is ongoing.";
-        }
-      }
-      config false;
-      mandatory true;
-      description
-        "Indicates state of array carriers activation operation";
-    }
-
-    leaf type {
-      type enumeration {
-        enum NR {
-              description
-                "5G technology";
-        }
-        enum LTE {
-              description
-                "LTE technology";
-        }
-        enum DSS_LTE_NR {
-          if-feature mcap:DSS_LTE_NR;
-              description
-                "NR and LTE technologies in Dynamic Spectrum Sharing mode";
-        }
-      }
-      description
-        "Type of carrier. Indicates array-carrier technology.";
-    }
-
-    leaf duplex-scheme {
-      type enumeration {
-        enum TDD {
-              description
-                "TDD scheme";
-            }
-        enum FDD {
-              description
-                "FDD scheme";
-        }
-      }
-      config false;
-
-      description
-        "Type of duplex scheme O-RU supports.";
-    }
-    leaf rw-duplex-scheme {
-      type leafref {
-        path "/user-plane-configuration/tx-array-carriers[name=current()/../name]" + "/duplex-scheme";
-        require-instance false;
-      }
-      description
-        "Config true type of duplex scheme.";
-    }
-    leaf rw-type {
-      type leafref {
-        path "/user-plane-configuration/tx-array-carriers[name=current()/../name]" + "/type";
-        require-instance false;
-      }
-      description
-        "Config true type of carrier.";
-    }
-  }
-
-  grouping rx-common-array-carrier-elements {
-    description
-      "This grouping containes all common parameters for tx-array-carriers and rx-array-carriers";
-
-    leaf absolute-frequency-center {
-      type uint32;
-      status deprecated;
-      description
-        "deprecated in version 5.0.0 and replaced with offset-to-absolute-frequency-center
-        and common FREF translated from absolute-frequency-center (NREF) as defined in 38.104";
-    }
-
-    leaf center-of-channel-bandwidth {
-      type uint64;
-          units Hz;
-      mandatory true;
-      description
-        "Center frequency of channel bandwidth in Hz. Common for all numerologies.
-         center-of-channel-bandwidth is the FREF translated from absolute-frequency-center (NREF) as per 3GPP TS 38.104";
-    }
-
-    leaf channel-bandwidth {
-      type uint64;
-      units Hz;
-      mandatory true;
-
-      description
-        "Width of carrier given in Hertz";
-    }
-
-    leaf active {
-      type enumeration {
-        enum INACTIVE {
-              description
-                "carrier does not provide signal - transmission is disabled";
-            }
-        enum SLEEP{
-              description
-                "carrier is fully configured and was active but is energy saving mode";
-            }
-        enum ACTIVE{
-              description
-                "carrier is fully configured and properly providing the signal";
-            }
-      }
-      default INACTIVE;
-
-      description
-        "Indicates if transmission is enabled for this array carriers. Note that Netconf server uses state parameter
-        to indicate actual state of array carriers operation. When array carriers is in sleep status,
-        Netconf server rejects all other operation request to tx-array-carriers object except either request to change from sleep
-        to active status or delete MO operation (see 4.8) to the object.";
-    }
-
-    leaf state {
-      type enumeration {
-        enum DISABLED {
-          description
-            "array carrier is not active - transmission of signal is disabled.";
-        }
-        enum BUSY {
-          description
-            "array carrier is processing an operation requested by change of active parameter.
-            When array carriers is BUSY the transmission of signal is not guaranteed.";
-        }
-        enum READY {
-          description
-            "array carrier had completed activation operation - is active and transmission of signal is ongoing.";
-        }
-      }
-      config false;
-      mandatory true;
-      description
-        "Indicates state of array carriers activation operation";
-    }
-
-    leaf type {
-      type enumeration {
-        enum NR {
-              description
-                "5G technology";
-        }
-        enum LTE {
-              description
-                "LTE technology";
-        }
-        enum DSS_LTE_NR {
-          if-feature mcap:DSS_LTE_NR;
-              description
-                "NR and LTE technologies in Dynamic Spectrum Sharing mode";
-        }
-      }
-      description
-        "Type of carrier. Indicates array-carrier technology.";
-    }
-
-    leaf duplex-scheme {
-      type enumeration {
-        enum TDD {
-              description
-                "TDD scheme";
-            }
-        enum FDD {
-              description
-                "FDD scheme";
-        }
-      }
-      config false;
-
-      description
-        "Type of duplex scheme O-RU supports.";
-    }
-  }
-
-  grouping endpoint-section-capacity {
-    leaf max-control-sections-per-data-section {
-      type uint8 {
-        range "1..12";
-      }
-      description
-        "Max number of C-plane sections (C-plane section is part of C-plane message that carries 'section fields')
-        referring to same U-plane section (U-plane section is part of U-plane message that carries
-        'section header fields' and 'PRB fields') that is supported by endpoint.
-        Note that additional limitations specific for each section type apply on top of this number.";
-    }
-    leaf max-sections-per-symbol {
-      type uint16;
-      description
-        "Max number of sections within one symbol that can be processed by endpoint
-        or processed collectively by group of endpoints sharing capacity";
-    }
-    leaf max-sections-per-slot {
-      type uint16;
-      description
-        "Max number of sections within one slot that can be processed by endpoint
-        or processed collectively by group of endpoints sharing capacity.";
-    }
-    leaf max-highest-priority-sections-per-slot {
-      must "current()<../max-sections-per-slot" {
-        error-message "the sectionID for the highest priority needs to be less than the max sectionIds per slot";
-      }
-      type uint16;
-      description
-        "Max number of highest priority sections within one slot that can be processed by endpoint or processed  collectively by
-        group of endpoints sharing capacity. This leaf applies only when coupling-via-frequency-and-time-with-priorities-optimized
-        is true, in other instances this leaf is ignored by the O-RU. The sectionId for highest priority section descriptions shall
-        start from 0 to specified max value and is a subset of max-sections-per-slot and must be less than max-sections-per-slot.";
-    }
-
-    leaf max-remasks-per-section-id {
-      type uint8 {
-        range "1..12";
-      }
-      default 12;
-      description
-        "maximum number of different reMask values that is applied to a PRB
-        within one section id. This value can be processed by endpoint
-        or processed collectively by group of endpoints sharing capacity";
-    }
-
-    description
-      "Parameters describing section capacity where section is undestood as number of different sectionId values";
-  }
-
-  grouping endpoint-beam-capacity {
-    leaf max-beams-per-symbol {
-      type uint16;
-      description
-        "Max number of beams within one symbol that can be processed by endpoint
-        or processed collectively by group of endpoints sharing capacity";
-    }
-    leaf max-beams-per-slot {
-      type uint16;
-      description
-        "Max number of beams within one slot that can be processed by endpoint
-        or processed collectively by group of endpoints sharing capacity";
-    }
-
-    description
-      "Parameters describing beam capacity where number of beams is understood as number of different beamId values";
-  }
-
-  grouping endpoint-prb-capacity {
-    leaf max-prb-per-symbol {
-      type uint16;
-      description
-        "Max number of prbs within one symbol that can be processed by endpoint
-        or processed collectively by group of endpoints sharing capacity";
-    }
-
-    description
-      "Attributes presenting processing capacity related to PRB.";
-  }
-
-  grouping endpoint-numerology-capacity {
-    leaf max-numerologies-per-symbol {
-      type uint16;
-      description
-        "Max number of numerologies within one symbol that can be processed by endpoint
-        or processed collectively by group of endpoints sharing capacity";
-    }
-
-    description
-      "Attributes presenting processing capacity related to numerology.
-
-      This leaf contains valid data only when multiple-numerology-supported
-      is set to true.";
-  }
-
-  grouping endpoint-static-config-support {
-    leaf static-config-supported {
-      type enumeration {
-        enum NONE {
-          description
-            "The endpoint does not support static PRACH / SRS configuration.
-             Reception of PRACH / SRS is possible through real time C-Plane messages
-             if other endpoint capabilities allow for that.";
-        }
-        enum PRACH {
-          if-feature mcap:PRACH-STATIC-CONFIGURATION-SUPPORTED;
-          description
-            "The endpoint supports statically configured PRACH reception";
-        }
-        enum SRS {
-          if-feature mcap:SRS-STATIC-CONFIGURATION-SUPPORTED;
-          description
-            "The endpoint supports statically configured SRS reception";
-        }
-      }
-      default NONE;
-
-      description
-        "The parameter informs if endpoint can be statically configured to process PRACH or SRS reception";
-    }
-
-    leaf max-prach-patterns {
-      when "(/user-plane-configuration/static-low-level-rx-endpoints[name=current()/../name]/static-config-supported = 'PRACH')";
-      type uint8;
-        description
-          "Maximum number of PRACH patterns the endpoint can handle in PRACH configuration";
-    }
-
-    leaf max-srs-patterns {
-      when "(/user-plane-configuration/static-low-level-rx-endpoints[name=current()/../name]/static-config-supported = 'SRS')";
-      type uint8;
-        description
-          "Maximum number of SRS patterns the endpoint can handle in SRS configuration";
-    }
-
-    description
-      "Endpoint's capabilities related to static PRACH / SRS configuration.";
-  }
-
-  grouping endpoint-tdd-pattern-support {
-    leaf configurable-tdd-pattern-supported {
-      if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
-      type boolean;
-      default false;
-
-      description
-        "The parameter informs if endpoint supports configuration for TDD pattern";
-    }
-
-    leaf tdd-group {
-      type uint8;
-      description
-        "Parameter is used to group static-low-level-[tr]x-endpoints.
-        Note: [tr]x-array-carriers using static-low-level-[tr]x-endpoints
-        having the same value of tdd-group, must have the same TDD switching
-        points and the same directions to the air interface granted - regardless TDD switching
-        is controlled by M-Plane or by C-Plane";
-    }
-
-    description
-      "This grouping exposes static-low-level-[tr]x-endpoint's capabilities related to its support for configurable
-      TDD patterns and limitations regarding common TDD switching per groups of endpoints.";
-  }
-
-  grouping uplane-conf-group {
-    description
-      "Grouping for uplane configuration related parameters";
-
-    list low-level-tx-links {
-      key name;
-      description
-        "Object model for low-level-tx-link configuration";
-
-      leaf name {
-        type string;
-        description
-          "Unique name of low-level-tx-link object.";
-      }
-
-      leaf processing-element {
-        type leafref {
-          path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
-        }
-        mandatory true;
-        description
-          "Contains name of processing-element to be used as transport by low-level-tx-link";
-      }
-
-      leaf tx-array-carrier {
-        type leafref {
-          path "/user-plane-configuration/tx-array-carriers/name";
-        }
-        mandatory true;
-        description
-          "Contains name of tx-array-carriers MO to be used as transport by low-level-tx-link";
-      }
-
-      leaf low-level-tx-endpoint {
-        type leafref {
-          path "/user-plane-configuration/low-level-tx-endpoints/name";
-        }
-        mandatory true;
-        description
-          "Contains name of low-level-tx-endpoints MO to be used as transport by low-level-tx-link";
-      }
-    }
-
-    list low-level-rx-links {
-      key name;
-      description
-        "Object model for low-level-rx-links configuration";
-
-      leaf name {
-        type string;
-
-        description
-          "Unique name of low-level-rx-links object.";
-      }
-
-      leaf processing-element {
-        type leafref {
-          path "/o-ran-pe:processing-elements/o-ran-pe:ru-elements/o-ran-pe:name";
-        }
-        mandatory true;
-        description
-          "Contains name of processing-element to be used as transport by LowLevelTxLink";
-      }
-
-      leaf rx-array-carrier {
-        type leafref {
-          path "/user-plane-configuration/rx-array-carriers/name";
-        }
-        mandatory true;
-
-        description
-          "Contains name of rx-array-carriers MO to be used as transport by low-level-rx-links";
-      }
-
-      leaf low-level-rx-endpoint {
-        type leafref {
-          path "/user-plane-configuration/low-level-rx-endpoints/name";
-        }
-        mandatory true;
-
-        description
-          "Contains name of low-level-rx-endpoints MO to be used as transport by low-level-rx-links";
-      }
-
-      leaf user-plane-uplink-marking {
-        type leafref {
-          path "/o-ran-pe:processing-elements/o-ran-pe:enhanced-uplane-mapping/o-ran-pe:uplane-mapping/o-ran-pe:up-marking-name";
-        }
-        description
-          "Parameter to set the non-default marking for user-plane";
-      }
-    }
-
-    list endpoint-types {
-      key "id";
-      config false;
-      description
-        "Properties of endpoint that are common to multiple endpoints if such are identified";
-
-      leaf id {
-        type uint16;
-        description
-          "Identifies type of endpoints sharing same properties. Values shall start with 0 and shall be allocated without gaps.";
-      }
-
-      list supported-section-types {
-        key "section-type";
-        description
-          "Indicates section types and extensions endpoints of this type support";
-
-        leaf section-type {
-          type uint8;
-
-          description
-            "This parameter determines the characteristics of U-plane data to be transferred or received from a beam with one pattern id.";
-        }
-
-        leaf-list supported-section-extensions {
-          type uint8;
-
-          description
-            "This parameter provides the extension types supported by the O-RU
-            which provides additional parameters specific to the subject data extension";
-        }
-      }
-
-      leaf-list supported-frame-structures {
-        type uint8;
-
-        description
-          "List of supported values of frame structure";
-      }
-
-      leaf managed-delay-support {
-        type enumeration {
-          enum MANAGED {
-            description
-              "Time managed delays are supported";
-          }
-
-          enum NON_MANAGED {
-            description
-              "Non time managed delays are supported";
-          }
-
-          enum BOTH {
-            description
-              "Both time managed and non time managed delays are supported";
-          }
-        }
-
-        description
-          "Type of delay supported by the endpoint";
-      }
-
-      leaf multiple-numerology-supported {
-        type boolean;
-        default true;
-        description
-          "Indicates whether the endpoint type supports multiple numerologies";
-      }
-
-      leaf max-numerology-change-duration {
-        type uint16 {
-          range "0..10000";
-        }
-
-        units Ts;
-        description
-          "Maximum gap of endpoint operation that will be caused by changing of
-          numerology.
-
-          This time is required for reconfiguration and flushing of pipes.
-
-          This leaf contains valid data only when multiple-numerology-supported
-          is set to true.";
-      }
-
-      uses endpoint-section-capacity;
-      uses endpoint-beam-capacity;
-      uses endpoint-prb-capacity;
-
-      leaf-list prb-capacity-allocation-granularity {
-        type uint16;
-
-        description
-          "List of capacity allocation steps. O-RU allocates PRB capacity rounding it up to nearest value N
-          from prb-capacity-allocation-granularity such that M >= number-of-prb-per-scs.
-          See also number-of-prb-per-scs/number-of-prb.";
-      }
-
-      uses endpoint-numerology-capacity;
-    }
-
-    list endpoint-capacity-sharing-groups {
-      key "id";
-      config false;
-      description
-        "Represents groups of endpoints that share capacity. Depending on O-RU implementation,
-        processing resources that handle CU-plane (e.g. memory to keep sections and beams)
-        could be allocated per endpoint or shared between several endpoints.
-        To address this O-RU shall reports own capability per endpoint (see endpoint-types)
-        and per group of endpoints sharing capacity.
-        If endpoint is in multiple groups then resulting constraint is minimum over all groups.
-        Note: values of parameters representing capacity that is not shared between endpoints in a group
-              shall be set to max value of specific parameter; this effectively removes related constraint.";
-
-      leaf id {
-        type uint16;
-        description
-          "Identifies group of endpoints sharing resources.
-          Values shall start with 0 and shall be allocated without gaps.";
-      }
-      uses endpoint-section-capacity;
-      uses endpoint-beam-capacity;
-      uses endpoint-prb-capacity;
-      uses endpoint-numerology-capacity;
-
-      leaf max-endpoints {
-        type uint16;
-        description
-          "Indicates how many endpoints in the group can be used4 simultaneously";
-      }
-      leaf max-managed-delay-endpoints {
-        type uint16;
-        description
-          "Number of endpoints supporting managed delay that can be used (configured for use) at a time";
-      }
-      leaf max-non-managed-delay-endpoints {
-        type uint16;
-        description
-          "Number of endpoints supporting non-managed delay that can be used (configured for use) at a time";
-      }
-    }
-
-    list endpoint-prach-group  {
-      key "id";
-      config false;
-      description
-        "Represents group of a series of PRACH preamble formats";
-
-      leaf id {
-        type uint16;
-        description
-          "Identifies group of PRACH preamble formats.";
-      }
-
-      leaf-list supported-prach-preamble-formats {
-        type prach-preamble-format;
-        min-elements 1;
-        description
-          "the list of PRACH preamble formats supported by the endpoint-type that is
-          applicable to static-low-level-rx-endpoints in the O-RU";
-      }
-
-    }
-
-    list supported-compression-method-sets {
-      key "id";
-      config false;
-      description
-        "List of available compression methods supported by device";
-
-      leaf id {
-        type uint16;
-        description
-          "Identification number for compression method set";
-      }
-
-      list compression-method-supported {
-        uses cf:compression-parameters;
-
-        leaf-list fs-offset {
-          if-feature cf:CONFIGURABLE-FS-OFFSET;
-          type uint8;
-          default 0;
-          description
-            "Adjusts FS (full scale) value of IQ format relative to FS derived from unmodified IQ format.
-             Please refer to CU-Plane specification for details";
-
-        }
-        description
-          "List of supported compression methods by O-RU
-           Note: if O-RU supports different compression methods per endpoint
-                 then please refer to endpoints to have information what
-                 exactly is supported on paticular endpoint";
-      }
-    }
-
-    list static-low-level-tx-endpoints {
-      key name;
-      config false;
-      description
-        "Object model for static-low-level-tx-endpoints configuration";
-
-      leaf name {
-        type string;
-
-        description
-          "Unique name of static-low-level-tx-endpoints object.";
-      }
-
-      leaf-list restricted-interfaces {
-        type leafref {
-          path "/if:interfaces/if:interface/if:name";
-        }
-        description
-          "Optionally used to indicate that a low-level link is constrained to operate only via a subset of the available interfaces.";
-      }
-
-      leaf array {
-        type leafref {
-          path "/user-plane-configuration/tx-arrays/name";
-        }
-        mandatory true;
-        description
-          "Contains distname of tx-arrays, particular low-level-tx-endpoints is in hardware dependency with.
-          Note: single instance of tx-arrays can be referenced by many instances of low-level-tx-endpoints
-          (e.g. to allow DU to handle multiple fronthauls and multiple component carriers).";
-      }
-
-      leaf endpoint-type {
-        type leafref {
-          path "../../endpoint-types/id";
-        }
-
-        description
-          "Reference to endpoint type capabilities list element supported by this endpoint";
-      }
-
-      leaf-list capacity-sharing-groups {
-        type leafref {
-          path "../../endpoint-capacity-sharing-groups/id";
-        }
-
-        description
-          "Reference to capacities of sharing-groups supported by this endpoint";
-      }
-
-      list supported-reference-level {
-        if-feature TX-REFERENCE-LEVEL;
-        key "id";
-        description
-          "Informs about supported ranges for gain reference level.";
-
-        leaf id {
-          type uint16;
-          description
-            "Identification number for particular range";
-        }
-
-        leaf min {
-          type decimal64 {
-            fraction-digits 4;
-          }
-          units dB;
-          mandatory true;
-          description
-            "Minimum of supported gain reference level";
-        }
-
-        leaf max {
-          type decimal64 {
-            fraction-digits 4;
-          }
-          units dB;
-          mandatory true;
-          description
-            "Maximum of supported gain reference level";
-        }
-      }
-
-      container compression {
-        description
-          "Container collecting compression related parameters.";
-
-        leaf dynamic-compression-supported {
-          type boolean;
-
-          description
-            "Informs if endpoint supports dynamic compression method";
-        }
-
-        leaf realtime-variable-bit-width-supported {
-          type boolean;
-
-          description
-            "Informs if endpoint supports realtime variable bit with";
-        }
-
-        leaf supported-compression-set-id {
-          type leafref {
-            path "../../../supported-compression-method-sets/id";
-          }
-
-          description
-            "Id of supported compression set for this endpoint";
-        }
-      }
-
-      uses endpoint-tdd-pattern-support;
-
-    }
-
-    list static-low-level-rx-endpoints {
-      key name;
-      config false;
-      description
-        "Object model for static-low-level-rx-endpoints configuration";
-
-      leaf name {
-        type string;
-
-        description
-          "Unique name of static-low-level-rx-endpoints object.";
-      }
-
-      leaf-list restricted-interfaces {
-        type leafref {
-          path "/if:interfaces/if:interface/if:name";
-        }
-        description
-          "Optionally used to indicate that a low-level link is constrained to operate only via a subset of the available interfaces.";
-      }
-
-      leaf array {
-        type leafref {
-          path "/user-plane-configuration/rx-arrays/name";
-        }
-        mandatory true;
-        description
-          "Contains distname of rx-arrays, particular low-level-rx-endpoints is in hardware dependency with.
-          Note: single instance of rx-arrays can be referenced by many instances of low-level-rx-endpoints
-          (e.g. to allow DU to handle multiple fronthauls and multiple component carriers).";
-      }
-
-      leaf endpoint-type {
-        type leafref {
-          path "../../endpoint-types/id";
-        }
-
-        description
-          "Reference to endpoint type capabilities list element supported by this endpoint";
-      }
-
-      leaf-list capacity-sharing-groups {
-        type leafref {
-          path "../../endpoint-capacity-sharing-groups/id";
-        }
-
-        description
-          "Reference to capacities of sharing-groups supported by this endpoint";
-      }
-
-      leaf prach-group {
-        type leafref {
-          path "../../endpoint-prach-group/id";
-          require-instance false;
-        }
-        description
-          "An optional leaf used for those rx endpoints that support PRACH, indicating
-          the group id describing the set of of PRACH preambles supported";
-      }
-
-      container compression {
-        description
-          "Container collecting compression related parameters.";
-
-        leaf dynamic-compression-supported {
-          type boolean;
-
-          description
-            "Informs if endpoint supports dynamic compression method";
-        }
-
-        leaf realtime-variable-bit-width-supported {
-          type boolean;
-
-          description
-            "Informs if endpoint supports realtime variable bit with";
-        }
-
-        leaf supported-compression-set-id {
-          type leafref {
-            path "../../../supported-compression-method-sets/id";
-          }
-
-          description
-            "Id of supported compression set for this endpoint";
-        }
-      }
-
-      uses endpoint-static-config-support;
-
-      uses endpoint-tdd-pattern-support;
-
-    }
-
-    list low-level-tx-endpoints {
-      key "name";
-
-      description
-        "Object model for low-level-tx-endpoints configuration - augmented static-low-level-tx-endpoints by local-address
-        which cannot be added to static low-level-tx-endpoints as we cannot have modificable element in static object";
-
-      leaf name {
-        type leafref {
-          path "/user-plane-configuration/static-low-level-tx-endpoints/name";
-          require-instance false;
-        }
-        mandatory true;
-
-        description
-          "Unique name of low-level-tx-endpoint object. Reference to static object";
-      }
-
-      container compression {
-        presence
-          "This container shall exists to avoid missaligned compression
-          methods between devices";
-
-        description
-          "Container which consists of global configurable parameters for compression";
-
-        uses cf:compression-details;
-
-        leaf fs-offset {
-          if-feature cf:CONFIGURABLE-FS-OFFSET;
-          type uint8;
-          default 0;
-          description
-            "Adjusts FS (full scale) value of IQ format relative to FS derived from unmodified IQ format.
-             Please refer to CU-Plane specification for details";
-        }
-
-        list dynamic-compression-configuration {
-          when "../compression-type = 'DYNAMIC'";
-          key "id";
-          unique "compression-method iq-bitwidth fs-offset";
-          description
-            "List of possible configuration in case dynamic configuration is used
-             Note: In case of empty list all available compressions can be choosen dynamically
-                   and default fs-offset is taken (0).";
-
-          leaf id {
-            type uint16;
-            description
-              "Identification number for particular compression";
-          }
-
-          uses cf:compression-method-grouping;
-
-          leaf fs-offset {
-            if-feature cf:CONFIGURABLE-FS-OFFSET;
-            type uint8;
-            default 0;
-            description
-              "Adjusts FS (full scale) value of IQ format relative to FS derived from unmodified IQ format.
-               Please refer to CU-Plane specification for details";
-          }
-        }
-      }
-
-      uses scs-config;
-
-      container e-axcid {
-        uses eaxc;
-
-        description
-          "Contains local address of low level TX endpoint offered by Netconf server.";
-      }
-
-      uses coupling-methods;
-
-      leaf configurable-tdd-pattern-supported {
-        if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
-        type leafref {
-          //checkAS added if-feature          
-          path "/user-plane-configuration/static-low-level-rx-endpoints[name=current()/../name]/configurable-tdd-pattern-supported";
-          require-instance false;
-        }
-        description "RO to RW parameter mapping - needed for conditional under tx-array-carrier";
-      }
-    }
-
-    list low-level-rx-endpoints {
-      key name;
-
-      description
-        "Object model for low-level-rx-endpoint configuration - augmented static-low-level-rx-endpoints by local-address
-        which cannot be added to static low-level-rx-endpoints as we cannot have modificable element in static object";
-
-      leaf name {
-        type leafref {
-          path "/user-plane-configuration/static-low-level-rx-endpoints/name";
-          require-instance false;
-        }
-        mandatory true;
-
-        description
-          "Unique name of low-level-rx-endpoint object. Reference to static object";
-      }
-
-      container compression {
-        description
-          "Container which consists of global configurable parameters for compression";
-
-        uses cf:compression-details;
-
-        leaf fs-offset {
-          if-feature cf:CONFIGURABLE-FS-OFFSET;
-          type uint8;
-          default 0;
-          description
-            "Adjusts FS (full scale) value of IQ format relative to FS derived from unmodified IQ format.
-             Please refer to CU-Plane specification for details";
-        }
-
-        list dynamic-compression-configuration {
-          when "../compression-type = 'DYNAMIC'";
-          key "id";
-          unique "compression-method iq-bitwidth fs-offset";
-          description
-            "List of possible configuration in case dynamic configuration is used
-             Note: In case of empty list all available compressions can be choosen dynamically
-                   and default fs-offset is taken (0).";
-
-          leaf id {
-            type uint16;
-            description
-              "Identification number for particular compression";
-          }
-
-          uses cf:compression-method-grouping;
-
-          leaf fs-offset {
-            if-feature cf:CONFIGURABLE-FS-OFFSET;
-            type uint8;
-            default 0;
-            description
-              "Adjusts FS (full scale) value of IQ format relative to FS derived from unmodified IQ format.
-               Please refer to CU-Plane specification for details";
-          }
-        }
-      }
-
-      uses scs-config;
-
-      list ul-fft-sampling-offsets {
-        key scs;
-        description
-          "List of FFT sampling offsets configured for each SCS that will be used.
-          Client shall configure one element for each SCS that will be used.";
-
-        leaf scs {
-          type mcap:scs-config-type;
-          description
-            "Value corresponds to SCS values defined for frameStructure in C-plane
-            Note: set of allowed values is restricted by SCS derived from values in supported-frame-structures.";
-        }
-
-        leaf ul-fft-sampling-offset {
-          type uint16;
-
-          units Ts;
-          description
-            "Determines time advance of capture window for FFT.
-            Value represents time advance of capture window start in relation to the end of CP. Unit is Ts.
-            Note: value of this parameter is usually set to '0' (zero) for PRACH channels.
-            Any phase offset resulting from the non-zero value of this parameter is handled in O-DU.";
-        }
-      }
-
-      container e-axcid {
-        uses eaxc;
-
-        description
-          "Contains local address of low level RX endpoint offered by Netconf server.";
-      }
-
-      leaf eaxc-gain-correction {
-        if-feature EAXC-GAIN-CORRECTION;
-        type decimal64 {
-          fraction-digits 4;
-        }
-        units dB;
-        default 0;
-        description
-          "eAxC specifc part of overall gain_correction.
-           gain_correction = common array-carrier gain-correction + eAxC-gain-correction.";
-      }
-
-      leaf non-time-managed-delay-enabled {
-        type boolean;
-        default false;
-        description
-          "Tells if non time managed delay shall be enabled";
-      }
-
-      uses coupling-methods;
-
-      leaf static-config-supported {
-        type leafref {
-          path "/user-plane-configuration/static-low-level-rx-endpoints[name=current()/../name]/static-config-supported";
-          require-instance false;
-        }
-        description "RO to RW parameter mapping - for further conditionals";
-      }
-
-      leaf static-prach-configuration {
-        if-feature mcap:PRACH-STATIC-CONFIGURATION-SUPPORTED;
-        when "(/user-plane-configuration/low-level-rx-endpoints[name=current()/../name]/static-config-supported = 'PRACH')";
-        type leafref {
-          //checkAS added if-feature          
-          path "/user-plane-configuration/static-prach-configurations/static-prach-config-id";
-        }
-        description
-          "This parameter creates reference to static PRACH configuration applicable for particular endpoint";
-      }
-
-      leaf static-srs-configuration {
-        when "(/user-plane-configuration/low-level-rx-endpoints[name=current()/../name]/static-config-supported = 'SRS')";
-        if-feature mcap:SRS-STATIC-CONFIGURATION-SUPPORTED;
-        type leafref {
-          //checkAS added if-feature          
-          path "/user-plane-configuration/static-srs-configurations/static-srs-config-id";
-        }
-        description
-          "This parameter creates reference to static SRS configuration applicable for particular endpoint";
-	    }
-
-      leaf configurable-tdd-pattern-supported {
-        if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
-        type leafref {
-          //checkAS added if-feature          
-          path "/user-plane-configuration/static-low-level-rx-endpoints[name=current()/../name]/configurable-tdd-pattern-supported";
-          require-instance false;
-        }
-        description "RO to RW parameter mapping - needed for conditional under rx-array-carrier";
-      }
-    }
-
-    list tx-array-carriers {
-      key name;
-      description
-        "Object model for tx-array-carriers configuration";
-
-      leaf name {
-        type string;
-
-        description
-          "Unique name of tx-array-carriers object.";
-      }
-
-      uses tx-common-array-carrier-elements;
-
-      leaf band-number {
-        if-feature mcap:LAA;
-        type leafref {
-          path "/mcap:module-capability/mcap:band-capabilities/mcap:band-number";
-          require-instance false;
-        }
-        description
-          "This parameter informing which frequency band particular antenna
-           array is serving for.
-           Intended use is to deal with multiband solutions.";
-      }
-
-      container lte-tdd-frame {
-        when "(/user-plane-configuration/tx-array-carriers/rw-type = 'LTE') and  (/user-plane-configuration/tx-array-carriers/rw-duplex-scheme = 'TDD')";
-        status deprecated;
-        description
-          "Container which consists of global configurable parameters for tdd Frame.
-          This contained is deprecated due to introduction of TDD pattern configuration
-          applicable in a common way for LTE and NR.";
-
-        leaf subframe-assignment {
-          type enumeration {
-            enum SAO {
-              description "subframe assignment configuration 0";
-            }
-            enum SA1 {
-              description "subframe assignment configuration 1";
-            }
-            enum SA2 {
-              description "subframe assignment configuration 2";
-            }
-            enum SA3 {
-              description "subframe assignment configuration 3";
-            }
-            enum SA4 {
-              description "subframe assignment configuration 4";
-            }
-            enum SA5 {
-              description "subframe assignment configuration 5";
-            }
-              enum SA6 {
-                description "subframe assignment configuration 6";
-            }
-          }
-          mandatory true;
-          description
-            "Indicates DL/UL subframe configuration as specified in
-            3GPP TS 36.211 [v15.3.0, table 4.2-2]";
-        }
-        leaf special-subframe-pattern {
-          type enumeration {
-            enum SPP0 {
-              description "special subframe pattern configuration 0";
-            }
-            enum SPP1 {
-              description "special subframe pattern configuration 1";
-            }
-            enum SPP2 {
-              description "special subframe pattern configuration 2";
-            }
-            enum SPP3 {
-              description "special subframe pattern configuration 3";
-            }
-            enum SPP4 {
-              description "special subframe pattern configuration 4";
-            }
-            enum SPP5 {
-              description "special subframe pattern configuration 5";
-            }
-            enum SPP6 {
-              description "special subframe pattern configuration 6";
-            }
-            enum SPP7 {
-              description "special subframe pattern configuration 7";
-            }
-            enum SPP8 {
-              description "special subframe pattern configuration 8";
-            }
-            enum SPP9 {
-              description "special subframe pattern configuration 9";
-            }
-            enum SPP10 {
-              description "special subframe pattern configuration 10";
-            }
-          }
-          mandatory true;
-          description
-            "Indicates TDD special subframe configuration as in TS 36.211
-             [v15.3.0, table 4.2-1] ";
-        }
-      }
-
-      container laa-carrier-configuration {
-        when "../band-number = 46";
-        if-feature mcap:LAA;
-        description "Container to specify LAA feature related carrier configuration.";
-        uses laa-carrier-config;
-      }
-
-      leaf gain {
-        type decimal64 {
-          fraction-digits 4;
-        }
-        units dB;
-        mandatory true;
-
-        description
-          "Transmission gain in dB. Value applicable to each array element carrier belonging to array carrier.";
-      }
-
-      leaf downlink-radio-frame-offset {
-        type uint32 {
-          range 0..12288000;
-        }
-        mandatory true;
-
-        description
-          "This parameter is used for offsetting the starting position of 10ms radio frame.
-          Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.
-          Note2: Unit is 1/1.2288e9 s. Then, its range is calculated 0..12288000.";
-      }
-
-      leaf downlink-sfn-offset {
-        type int16 {
-          range -32768..32767;
-        }
-        mandatory true;
-
-        description
-          "This parameter is used for offsetting SFN value.
-          Unit is in 10ms.
-          Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.";
-      }
-
-      leaf reference-level {
-        if-feature TX-REFERENCE-LEVEL;
-        type decimal64 {
-          fraction-digits 4;
-        }
-        units dB;
-        default 0;
-        description
-          "Allows to adjust reference level for sum of IQ signal power over eAxCs in this array-carrier.";
-      }
-
-      leaf configurable-tdd-pattern {
-        when "not(/user-plane-configuration/low-level-tx-endpoints[name = string(/user-plane-configuration/low-level-tx-links[tx-array-carrier = current()/../name]/tx-array-carrier)]/configurable-tdd-pattern-supported = 'false')";
-        if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
-        type leafref {
-          path "/user-plane-configuration/configurable-tdd-patterns/tdd-pattern-id";
-        }
-        description
-          "This parameter creates reference to configuration for TDD pattern applicable for particular tx-array-carrier.
-          The leaf may exist under tx-array-carrier only in case O-RU supports feature 'CONFIGURABLE-TDD-PATTERN-SUPPORTED'
-          AND all low-level-tx-endpoints linked to this tx-array-carrier have configurable-tdd-pattern-supported = 'true'";
-      }
-    }
-
-    list rx-array-carriers {
-      key name;
-      description
-        "Object model for rx-array-carriers configuration";
-
-          leaf name {
-            type string;
-            description
-            "Unique name of rx-array-carriers object.";
-      }
-
-      uses rx-common-array-carrier-elements;
-
-      leaf downlink-radio-frame-offset {
-        type uint32 {
-          range 0..12288000;
-        }
-        mandatory true;
-
-        description
-          "This parameter is used for offsetting the starting position of 10ms radio frame.
-          Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.
-          Note2: Unit is 1/1.2288e9 s. Then, its range is calculated 0..12288000.";
-      }
-
-      leaf downlink-sfn-offset {
-        type int16 {
-          range -32768..32767;
-        }
-        mandatory true;
-
-        description
-          "This parameter is used for offsetting SFN value.
-          Unit is in 10ms.
-          Note: The value should have same value within DU to all tx-array-carrierss that have same frequency and bandwidth.";
-      }
-
-      leaf gain-correction {
-        type decimal64 {
-          fraction-digits 4;
-
-        }
-        units dB;
-        mandatory true;
-        description
-          "Gain correction of RF path linked with array element or array layers.
-           Common part of overall gain_correction.
-           gain_correction = common array-carrier gain-correction + eAxC gain correction.";
-      }
-
-      leaf n-ta-offset {
-        type uint32;
-        units Tc;
-        mandatory true;
-        description
-          "Value of configurable N-TA offset
-          units are Tc=~0.5ns=1/1.96608GHz";
-      }
-
-      leaf configurable-tdd-pattern {
-        when "not(/user-plane-configuration/low-level-rx-endpoints[name = string(/user-plane-configuration/low-level-rx-links[rx-array-carrier = current()/../name]/rx-array-carrier)]/configurable-tdd-pattern-supported = 'false')";
-        if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
-        type leafref {
-          path "/user-plane-configuration/configurable-tdd-patterns/tdd-pattern-id";
-        }
-        description
-          "This parameter creates reference to configuration for TDD pattern applicable for particular rx-array-carrier.
-           The leaf may exist under rx-array-carrier only in case O-RU supports feature 'CONFIGURABLE-TDD-PATTERN-SUPPORTED'
-          AND all low-level-rx-endpoints linked to this rx-array-carrier have configurable-tdd-pattern-supported = 'true'";
-      }
-    }
-
-    list tx-arrays {
-      key "name";
-      config false;
-      description
-        "Structure describing TX array parameters";
-
-      uses parameters;
-
-      leaf max-gain {
-        type decimal64 {
-          fraction-digits 4;
-
-        }
-        units dB;
-        mandatory true;
-        description
-          "Max gain of RF path linked with array element (minimum over elements of array) or array layers";
-      }
-
-      leaf independent-power-budget {
-        type boolean;
-        mandatory true;
-        description
-          "If true then every element of array has own, power budget independent from power budget of other elements.
-          Else all elements of array that are at same row and column and have same polarization share power budget";
-      }
-
-      list capabilities {
-        description
-          "List of capabilities related to this tx-array";
-        uses mcap:support-for-dl;
-      }
-    }
-
-    list rx-arrays {
-      key "name";
-      config false;
-      description "Structure describing RX array parameters";
-
-      uses parameters;
-      container gain-correction-range {
-        leaf max {
-          type decimal64 {
-            fraction-digits 4;
-          }
-          units dB;
-          mandatory true;
-          description "Array gain correction factor - maximum allowed value";
-          }
-        leaf min {
-          type decimal64 {
-            fraction-digits 4;
-          }
-          units dB;
-          mandatory true;
-          description "Array gain correction factor - minimum allowed value";
-        }
-
-        description
-          "Array gain correction factor";
-      }
-
-      list capabilities {
-        description
-          "List of capabilities related to this rx-array";
-        uses mcap:support-for-ul;
-      }
-    }
-
-    list relations {
-      key "entity";
-      config false;
-      description "Structure describing relations between array elements";
-
-      leaf entity {
-        type uint16;
-
-        description
-          "Relation entity. Used as a key for list of relations.";
-      }
-
-      container array1 {
-        uses array-choice;
-
-        description
-          "Defnes name for first array";
-      }
-      container array2 {
-        uses array-choice;
-
-        description
-          "Defnes name for second array";
-      }
-      list types {
-        key "relation-type";
-        description
-          "Defines relation type and pairs for array elements for given arrays";
-
-        leaf relation-type {
-          type enumeration {
-            enum SHARED {
-              description "SHARED";
-            }
-            enum COALOCATED {
-              description "COALOCATED";
-            }
-          }
-          description "Type of relation between array elements";
-        }
-        list pairs {
-          key "element-array1";
-          description
-            "defines related array elements";
-
-          leaf element-array1 {
-            type uint16;
-
-            description
-              "Tells about id of element from array1";
-          }
-          leaf element-array2 {
-            type uint16;
-
-            description
-              "Tells about id of element from array2";
-          }
-        }
-      }
-    }
-
-    container eaxc-id-group-configuration {
-      if-feature mcap:EAXC-ID-GROUP-SUPPORTED;
-      description
-        "This is the container for eAxC ID group configuration.";
-      leaf max-num-tx-eaxc-id-groups {
-        type leafref {
-          path "/mcap:module-capability/mcap:ru-capabilities/mcap:eaxcid-grouping-capabilities/mcap:max-num-tx-eaxc-id-groups";
-          require-instance false;
-        }
-        description "eaxc-id-group-configuration";
-      }
-      leaf max-num-tx-eaxc-ids-per-group {
-        type leafref {
-          path "/mcap:module-capability/mcap:ru-capabilities/mcap:eaxcid-grouping-capabilities/mcap:max-num-tx-eaxc-ids-per-group";
-          require-instance false;
-        }
-        description "max-num-tx-eaxc-ids-per-group";
-      }
-      leaf max-num-rx-eaxc-id-groups {
-        type leafref {
-          path "/mcap:module-capability/mcap:ru-capabilities/mcap:eaxcid-grouping-capabilities/mcap:max-num-rx-eaxc-id-groups";
-          require-instance false;
-        }
-        description "max-num-rx-eaxc-id-groups";
-      }
-      leaf max-num-rx-eaxc-ids-per-group {
-        type leafref {
-          path "/mcap:module-capability/mcap:ru-capabilities/mcap:eaxcid-grouping-capabilities/mcap:max-num-rx-eaxc-ids-per-group";
-          require-instance false;
-        }
-        description "max-num-rx-eaxc-ids-per-group";
-      }
-
-      list tx-eaxc-id-group {
-        must "count(../tx-eaxc-id-group) <= ../max-num-tx-eaxc-id-groups" {
-          error-message "too many tx-eaxcid-id groups";
-        }
-        key "representative-tx-eaxc-id";
-        description
-          "This is a list of the groups of the eAxC IDs assigned to low-level-tx-endpoints.
-          Each group is a union of the 'member-tx-eaxc-id's and a 'representative-tx-eaxc-id'.
-          The low-level-tx-endpoint associated to 'representative-tx-eaxc-id' is able to
-          process the DL C-plane information for all the low-level-tx-endpoints associated
-          to 'member-tx-eaxc-id's.
-
-          Take Note: This list should only contain eAxC IDs assigned to a tx-endpoint.";
-
-
-        leaf representative-tx-eaxc-id {
-          type uint16;
-          description
-            "This parameter contains eAxC_ID that populates content of C-Plane section
-            extension 11 to eAxC_IDs configured in the group as 'member-tx-eaxc-id'(s).";
-        }
-        leaf-list member-tx-eaxc-id {
-          type uint16;
-          must "count(../member-tx-eaxc-id) <= ../../max-num-tx-eaxc-ids-per-group" {
-            error-message "too many tx-eaxcid-id members";
-          }
-          must "current()!=../representative-tx-eaxc-id" {
-            error-message "the representative eaxcid does not need to be a list member";
-          }
-          description
-            "This is a list of member eAxC IDs, which together with the representative-tx-eaxc-id,
-            are assigned to low-level-tx-endpoints in the group.";
-        }
-      }
-
-      list rx-eaxc-id-group {
-        must "count(../rx-eaxc-id-group) <= ../max-num-rx-eaxc-id-groups" {
-          error-message "too many rx-eaxcid-id groups";
-        }
-        key "representative-rx-eaxc-id";
-        description
-          "This is a list of the groups of the eAxC IDs assigned to low-level-rx-endpoints.
-          Each group is a union of 'member-rx-eaxc-id's and a 'representative-rx-eaxc-id'.
-          The low-level-rx-endpoint associated to 'representative-rx-eaxc-id' is able to
-          process the UL C-plane information for all the low-level-rx-endpoints associated
-          to 'member-rx-eaxc-id's.
-
-          Take Note: This list should only contain eAxC IDs assigned to a rx-endpoint.";
-
-        leaf representative-rx-eaxc-id {
-          type uint16;
-          description
-            "This parameter contains eAxC_ID that populates content of C-Plane section
-            extension 11 to eAxC_IDs configured in the group as 'member-rx-eaxc-id'(s).";
-        }
-
-        leaf-list member-rx-eaxc-id {
-          type uint16;
-          must "count(../member-rx-eaxc-id) <= ../../max-num-rx-eaxc-ids-per-group" {
-            error-message "too many rx-eaxcid-id members";
-          }
-          must "current()!=../representative-rx-eaxc-id" {
-            error-message "the representative eaxcid does not need to be a list member";
-          }
-          description
-            "This is a list of member eAxC IDs assigned to low-level-rx-endpoints in the group.";
-        }
-      }
-    }
-
-    list static-prach-configurations {
-      if-feature mcap:PRACH-STATIC-CONFIGURATION-SUPPORTED;
-      key static-prach-config-id;
-      description
-        "List of static PRACH configurations. An O-RU shall reject any configuration
-        modification which exceed the maximum permitted configurations supported by
-        the O-RU";
-
-      leaf static-prach-config-id {
-        type uint8;
-        description
-          "Supplementary parameter acting as key in list of static PRACH configurations.";
-      }
-
-      uses static-prach-configuration;
-    }
-
-    grouping static-prach-configuration {
-      description
-        "Set of parameters related to static PRACH configuration";
-
-      leaf pattern-period {
-        type uint16 {
-          range 1..1024;
-        }
-        mandatory true;
-        description
-          "Period after which static PRACH patterns are repeated. Unit: number of frames.";
-      }
-
-      leaf guard-tone-low-re {
-        type uint32;
-        mandatory true;
-        description
-          "Number of REs occupied by the low guard tones.";
-      }
-
-      leaf num-prach-re {
-        type uint32;
-        mandatory true;
-        description
-          "Number of contiguous PRBs per data section description";
-      }
-
-      leaf guard-tone-high-re {
-        type uint32;
-        mandatory true;
-        description
-          "Number of REs occupied by the high guard tones.";
-      }
-
-      leaf sequence-duration {
-        type uint32 {
-          range 256..24576;
-        }
-        units Ts;
-        mandatory true;
-        description
-          "Duration of single sequence of the PRACH. Sequence may be considered as 'single PRACH symbol'";
-      }
-
-      list prach-patterns {
-        key prach-pattern-id;
-        min-elements 1;
-        description
-          "Provides a PRACH pattern. Each record in the list represents a single PRACH occasion. Number of list entries cannot exceed max-prach-patterns";
-
-        leaf prach-pattern-id {
-          type uint16;
-          mandatory true;
-          description
-            "Supplementary parameter acting as key for prach-pattern list.";
-        }
-
-        leaf number-of-repetitions {
-          type uint8{
-            range 1..14;
-          }
-          mandatory true;
-          description
-            "This parameter defines number of PRACH repetitions in PRACH occasion,
-             to which the section control is applicable.";
-        }
-
-        leaf number-of-occasions {
-          type uint8;
-          mandatory true;
-          description
-            "This parameter informs how many consecutive PRACH occasions is described by the PRACH pattern.";
-        }
-
-        leaf re-offset {
-          type uint32;
-          mandatory true;
-          description
-            "Offset between the start of lowest-frequency RE of lowest-frequency PRB
-             and the start of lowest-frequency RE belonging to the PRACH occasion.
-             The re-offset is configured as number of PRACH REs.";
-        }
-
-        list occasion-parameters {
-          key occasion-id;
-          min-elements 1;
-          description
-            "This is list of cp-lengths, gp-lengths and beam-ids applicable
-             per each PRACH occasion in PRACH pattern.
-             Note: the number of records in this list MUST be equal
-                   to value of parameter number-of-occasions.";
-
-          leaf occasion-id {
-            type uint8;
-            mandatory true;
-            description
-              "Supplementary parameter acting as key in 'occasion-parameters' list";
-          }
-
-          leaf cp-length {
-            type uint16;
-            units Ts;
-            mandatory true;
-            description
-          "Cyclic prefix length. See CUS-plane specification for detailed description.";
-          }
-
-          leaf gp-length {
-            type uint16;
-            units Ts;
-            description
-              "Guard period length.";
-          }
-
-          leaf beam-id {
-            type uint16;
-            mandatory true;
-            description
-              "This parameter defines the beam pattern to be applied to the U-Plane data.
-               beamId = 0 means no beamforming operation will be performed.";
-          }
-        }
-
-        leaf frame-number {
-          type uint16{
-            range 0..1023;
-          }
-          mandatory true;
-          description
-            "This parameter is an index inside the pattern-length, such that
-             PRACH occasion is happening for SFN which fulfills following equation:
-             [SFN mod pattern-length = frame-id]";
-        }
-
-        leaf sub-frame-id {
-          type uint16;
-          mandatory true;
-          description
-            "Identifier of sub-frame of the PRACH occasion. Value is interpreted in the same way
-             as subframeId field in a section description of a C-Plane message.";
-        }
-
-        leaf time-offset {
-          type uint16;
-          units Ts;
-          mandatory true;
-          description
-            "This parameter defines the time-offset from the start of the sub-frame
-             to the start of the first Cyclic Prefix of PRACH pattern";
-        }
-      }
-    }
-
-    grouping static-srs-configuration {
-      description
-        "Set of parameters related to static PRACH configuration";
-
-      leaf pattern-period {
-        type uint16 {
-          range 1..1024;
-        }
-        mandatory true;
-        description
-          "Period after which static SRS patterns are repeated. Unit: number of frames.";
-      }
-
-      list srs-patterns {
-        key srs-pattern-id;
-        min-elements 1;
-        description
-          "Provides a SRS pattern. Each record in the list represents a single PRACH occasion. Number of list entries cannot exceed max-srs-patterns.";
-
-        leaf srs-pattern-id {
-          type uint16;
-          mandatory true;
-          description
-            "Supplementary parameter acting as key for srs-pattern list.";
-        }
-
-        leaf sub-frame-id {
-          type uint16;
-          mandatory true;
-          description
-            "Identifier of sub-frame of the Raw SRS occasion. Value is interpreted in the same way
-             as subframeId field in a section description of a C-Plane message.";
-        }
-
-        leaf slot-id {
-          type uint16;
-          mandatory true;
-          description
-            "Identifier of slot of the Raw SRS occasion. Value is interpreted in the same way
-             as slotId field in a section description of a C-Plane message.";
-        }
-
-        leaf start-symbol-id {
-          type uint16;
-          mandatory true;
-          description
-            "Identifier of first symbol of the Raw SRS occasion. Value is interpreted in the same way
-             as startSymbolId field in a section description of a C-Plane message.";
-        }
-
-        leaf beam-id {
-          type uint16;
-          mandatory true;
-          description
-            "This parameter defines the beam pattern to be applied to the U-Plane data.
-             beamId = 0 means no beamforming operation will be performed.";
-        }
-
-        leaf num-symbol {
-          type uint16;
-          mandatory true;
-          description
-            "This parameter defines number of consecutive symbols covered by specific srs-pattern.
-             Single srs-pattern may address at least one symbol. However, possible optimizations
-             could allow for several (up to 14) symbols.";
-        }
-
-        leaf start-prbc {
-          type uint16 {
-            range 0..1023;
-          }
-          mandatory true;
-          description
-            "Identifier of first PRB of the Raw SRS occasion. Value is interpreted in the same way
-             as startPrbc field in a section description of a C-Plane message.";
-        }
-
-        leaf num-prbc {
-          type uint16;
-          mandatory true;
-          description
-            "Number of PRBs of the Raw SRS occasion. Value is interpreted in the same way
-             as numPrbc field in a section description of a C-Plane message.";
-        }
-      }
-    }
-
-    grouping configurable-tdd-pattern {
-      description
-        "Set of parameters related to configurable TDD pattern.
-        Note: configurable-tdd-pattern shall not be used in case the usage would collide with
-        deprecated 'lte-tdd-pattern'.";
-
-      list switching-points {
-        key switching-point-id;
-        description
-          "List of switching points within frame, related to configurable TDD pattern.
-          An O-RU shall reject any configuration modification which exceeds the maximum
-          number of switching-points supported by the O-RU";
-
-        leaf switching-point-id {
-          type uint16;
-          description
-            "Supplementary parameter acting as key for switching-points list.";
-          }
-
-        leaf direction {
-          type enumeration {
-            enum UL {
-            description "Uplink";
-            }
-            enum DL {
-            description "Downlink";
-            }
-            enum GP {
-            description "Guard period";
-            }
-          }
-          mandatory true;
-          description
-            "Parameter provides information regarding desired signal direction at the moment switching point occurs.";
-        }
-
-        leaf frame-offset {
-          type uint32;
-          mandatory true;
-          description
-            "Offset from DL air frame boundary transmitted at RF connector to the point in time that is characteristic to the operation on RF switches. Unit is 1/1.2288e9 s.";
-        }
-      }
-    }
-
-    list static-srs-configurations {
-      if-feature mcap:SRS-STATIC-CONFIGURATION-SUPPORTED;
-      key static-srs-config-id;
-      description
-        "List of static SRS configurations";
-
-      leaf static-srs-config-id {
-        type uint8;
-        description
-          "Supplementary parameter acting as key in the list of static SRS configurations.";
-      }
-
-      uses static-srs-configuration;
-    }
-
-    list configurable-tdd-patterns {
-      if-feature mcap:CONFIGURABLE-TDD-PATTERN-SUPPORTED;
-      key tdd-pattern-id;
-      description
-        "List of configured TDD patterns";
-
-      leaf tdd-pattern-id {
-        type uint8;
-        description
-          "Supplementary parameter acting as key in the list of configured TDD patterns.";
-      }
-
-      uses configurable-tdd-pattern;
-    }
-  }
-
-  grouping tx-array-notification-group {
-    description
-      "Grouping for tx-array for notification";
-
-    list tx-array-carriers{
-      key name;
-      description "notification of state change for tx-array-carriers";
-
-      leaf name{
-        type leafref{
-          path "/user-plane-configuration/tx-array-carriers/name";
-        }
-        description
-          "name of tx-array-carriers is notified at state change";
-      }
-      leaf state{
-        type leafref{
-          path "/user-plane-configuration/tx-array-carriers/state";
-        }
-      description
-        "state of tx-array-carriers is notified at state change";
-      }
-    }
-  }
-
-  grouping rx-array-notification-group {
-    description
-      "Grouping for rx-array for notification";
-
-    list rx-array-carriers{
-      key name;
-      description
-        "Notification used to inform about state change of rx-array-carriers";
-      leaf name{
-        type leafref{
-          path "/user-plane-configuration/rx-array-carriers/name";
-        }
-        description
-          "name of rx-array-carriers is notified at state change";
-      }
-      leaf state{
-        type leafref{
-          path "/user-plane-configuration/rx-array-carriers/state";
-        }
-        description
-          "state of rx-array-carriers is notified at state change";
-      }
-    }
-  }
-
-// top level container
-
-  container user-plane-configuration {
-    description "top level container for user plane configuration";
-
-    uses uplane-conf-group;
-    uses general-config;
-  }
-
-  //notification statement
-  notification tx-array-carriers-state-change {
-    description
-      "Notification used to inform about state change of tx-array-carriers";
-    uses tx-array-notification-group;
-  }
-  notification rx-array-carriers-state-change {
-    description
-    "Notification used to inform about state change of tx-array-carriers";
-
-    uses rx-array-notification-group;
-  }
-}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-usermgmt.xml b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-usermgmt.xml
new file mode 100644
index 0000000..eb9b049
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-usermgmt.xml
@@ -0,0 +1,6 @@
+<users xmlns="urn:o-ran:user-mgmt:1.0">
+    <user>
+      <name>admin</name>
+      <enabled>true</enabled>
+    </user>
+</users>
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-usermgmt@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-usermgmt.yang
similarity index 81%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-usermgmt@2020-12-10.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-usermgmt.yang
index ed6f39a..8d97db3 100644
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-usermgmt@2020-12-10.yang
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-usermgmt.yang
@@ -9,6 +9,10 @@
       "RFC 8341: Network Configuration Access Control Model";
   }
 
+  import o-ran-wg4-features {
+    prefix "feat";
+  }
+
   organization "O-RAN Alliance";
 
   contact
@@ -43,6 +47,25 @@
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";
 
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+
+      1) introduced SHARED-ORU-MULTI-OPERATOR feature.";
+
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+
+  revision "2021-12-01" {
+    description
+      "version 1.3.0
+
+      1) typographical corrections in descriptions";
+
+    reference "ORAN-WG4.M.0-v01.00";
+  }
+
   revision "2020-12-10" {
     description
       "version 1.2.0
@@ -91,6 +114,7 @@
   }
 
   grouping user-list {
+    description "a user list grouping";
     list user {
       key "name";
       description
@@ -111,10 +135,11 @@
             description "the user-name is for password based authentication";
           }
           enum CERTIFICATE {
-            description "the user-name is for certificate based authentciation";
+            description "the user-name is for certificate based authentication";
           }
         }
         default "PASSWORD";
+        description "the account type";
       }
 
       leaf password {
@@ -139,15 +164,24 @@
            This validation statement is included in the YANG description and
            not in a MUST statement to preserve backwards compatibility.";
       }
+      leaf-list sro-id {
+        if-feature feat:SHARED-ORU-MULTI-OPERATOR;
+        type string;
+        description
+          "An optional list if Shared Resource Operator identities associated with the
+          user-account. Used to realize enhanced access privileges in a shared O-RU.
+          When an sro-id is configured in the O-RU, the O-RU shall
+          implement additional sro-id based NETCONF access control
+          as specified in O-RAN.WG4.MP.0-v10.00.
+          The O-RU does not further interpret the specific value of sro-id.";
+      }
     }
   }
 
   container users {
-    // checkAS
-    // must "user/enabled='true'" {
-    //   error-message "At least one account needs to be enabled.";
-    // }
-
+    must "user/enabled='true'" {
+      error-message "At least one account needs to be enabled.";
+    }
     //TAKE NOTE - any configuration with zero enabled users is invalid.
     //This will typically be the case when using a simulated NETCONF Server
     //and so this constraint should be removed when operating in those scenarios
@@ -160,6 +194,7 @@
   }
 
   rpc chg-password {
+    description "the RPC used to change a password";
     nacm:default-deny-all;
     input {
       leaf currentPassword {
@@ -186,9 +221,11 @@
         type enumeration {
           enum "Successful" {
             value 1;
+            description "change password operation is successful";
           }
           enum "Failed" {
             value 2;
+            description "change password operation failed";
           }
         }
         mandatory true;
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ves-subscribed-notifications@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ves-subscribed-notifications.yang
similarity index 100%
rename from ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ves-subscribed-notifications@2020-12-10.yang
rename to ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-ves-subscribed-notifications.yang
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-wg4-features.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-wg4-features.yang
new file mode 100644
index 0000000..1d02f04
--- /dev/null
+++ b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-wg4-features.yang
@@ -0,0 +1,251 @@
+module o-ran-wg4-features {
+  yang-version 1.1;
+  namespace "urn:o-ran:wg4feat:1.0";
+  prefix "o-ran-feat";
+
+
+  organization "O-RAN Alliance";
+
+  contact
+    "www.o-ran.org";
+
+  description
+    "This module defines the set of re-usable type definitions for WG4 specific
+    features.
+
+    Copyright 2021 the O-RAN Alliance.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    this list of conditions and the above disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+    this list of conditions and the above disclaimer in the documentation
+    and/or other materials provided with the distribution.
+    * Neither the Members of the O-RAN Alliance nor the names of its
+    contributors may be used to endorse or promote products derived from
+    this software without specific prior written permission.";
+
+  revision "2022-12-05" {
+    description
+      "version 11.0.0
+      new features:
+
+      1) UPLANE-ONLY-DL-MODE-ENABLE
+      2) SUPERVISION-WITH-SESSION-ID
+      3) INTEGRITY-CHECK-AT-SW-DOWNLOAD
+      4) ST4-SLOT-CONFIG-MSG-SUPPORT";
+
+    reference "ORAN-WG4.M.0-v11.00";
+  }
+
+
+  revision "2022-08-15" {
+    description
+      "version 10.0.0
+      new features:
+      1) SHARED-ORU-MULTI-ODU
+      2) SHARED-ORU-MULTI-OPERATOR";
+    reference "ORAN-WG4.M.0-v10.00";
+  }
+
+  revision "2021-12-01" {
+    description
+      "version 8.0.0
+      new features:
+      1) Typographical corrections in descriptions
+      2) Add new features:
+         BEAM-UPDATE-CONTENTION-CONTROL
+         MULTIPLE-SCS-IN-EAXC
+         ENHANCED-T-COMBINE
+         CHANNEL-INFORMATION-COMPRESSION
+         CHANNEL-INFORMATION-PRB-GROUP
+         MULTIPLE-TRANSPORT-SESSION-TYPE";
+    reference "ORAN-WG4.M.0-v08.00";
+  }
+
+  revision "2021-07-26" {
+    description
+      "version 7.0.0
+
+      new features:
+      1) EXT-ANT-DELAY-CONTRO
+      2) CPLANE-MESSAGE-PROCESSING-LIMITS";
+
+    reference "ORAN-WG4.M.0-v07.00";
+  }
+
+  revision "2021-03-22" {
+    description
+      "version 6.0.0
+
+      1) Features added to handle updated transmission window control:
+      STATIC-TRANSMISSION-WINDOW-CONTROL
+      DYNAMIC-TRANSMISSION-WINDOW-CONTROL
+      UNIFORMLY-DISTRIBUTED-TRANSMISSION
+      ORDERED-TRANSMISSION
+      INDEPENDENT-TRANSMISSION-WINDOW-CONTROL
+      ";
+
+    reference "ORAN-WG4.M.0-v06.00";
+  }
+
+  revision "2020-12-10" {
+    description
+      "version 5.0.0
+
+      1) initial version.";
+
+    reference "ORAN-WG4.M.0-v05.00";
+  }
+
+  feature NON-PERSISTENT-MPLANE {
+    description
+      "Indicates that the Radio Unit supports the optional
+      capability to improve the operation with a SMO using a non-
+      persistent NETCONF session.";
+  }
+
+  feature STATIC-TRANSMISSION-WINDOW-CONTROL {
+    description
+      "O-RU supports U-plane transmission window control (scheduled transmission
+       and optionally uniformly distributed transmission) configuration over M-plane";
+  }
+
+  feature DYNAMIC-TRANSMISSION-WINDOW-CONTROL {
+    description
+      "O-RU supports U-plane transmission window control (scheduled transmission
+       and optionally uniformly distributed transmission) configuration over C-plane";
+  }
+
+  feature UNIFORMLY-DISTRIBUTED-TRANSMISSION {
+    if-feature "STATIC-TRANSMISSION-WINDOW-CONTROL or DYNAMIC-TRANSMISSION-WINDOW-CONTROL";
+    description
+      "O-RU supports transmission of UL U-plane messages distributed uniformly over transmission window.";
+  }
+
+  feature ORDERED-TRANSMISSION {
+    description
+      "O-RU supports ordered transmission";
+  }
+
+  feature INDEPENDENT-TRANSMISSION-WINDOW-CONTROL {
+    if-feature "STATIC-TRANSMISSION-WINDOW-CONTROL or DYNAMIC-TRANSMISSION-WINDOW-CONTROL";
+    description
+      "O-RU supports independent U-plane transmission window per endpoint.
+
+       If this feature is not supported then for all endpoints with transmission control enabled
+       (see u-plane-transmission-control/transmission-window-control) must be configured for transmission
+       window offsets and window sizes that coincide for each symbol.
+
+       If INDEPENDENT-TRANSMISSION-WINDOW-CONTROL feature is not supported then all endpoints with
+       transmission control enabled that handle the same carrier type and SCS must be configured
+       (via M-plane or C-plane) with parameter values resulting in transmission windows that coincide
+       between the endpoints. That is, for every symbol N, the effective transmission window for symbol N
+       must be shared (start at the same time and end at the same time) by all the endpoints handling
+       same carrier type and SCS. This restriction applies only to endpoints that have transmission
+       control enabled.
+
+       If INDEPENDENT-TRANSMISSION-WINDOW-CONTROL feature is supported then restriction described
+       above does not apply and a different transmission window (window offset and window size)
+       can be used for every endpoint capable of transmission window control.";
+  }
+
+  feature EXT-ANT-DELAY-CONTROL {
+    description
+      "This feature indicates that the O-RU supports external antenna delay control";
+  }
+
+  feature CPLANE-MESSAGE-PROCESSING-LIMITS {
+    description
+      "Feature to indicate O-RU limitation of C-Plane message processing. Refer CUS-Plane specification
+      section 'O-RU C-Plane message limits' for more details on this feature.";
+  }
+
+  feature CHANNEL-INFORMATION-COMPRESSION {
+    description
+      "This feature indicates that the O-RU supports channel information compression.";
+  }
+
+  feature CHANNEL-INFORMATION-PRB-GROUP {
+    description
+      "Feature to indicate O-RU supports receiving and processing channel
+       information (e.g., ST6) with PRB group size greater than one PRB";
+  }
+
+  feature BEAM-UPDATE-CONTENTION-CONTROL {
+    description
+      "Feature to indicate O-RU requirements for beam weight update for a given beamId, to avoid beam update contentions.
+      Refer CUS-Plane specification section 'Weight-based dynamic beamforming' for more details on this feature.";
+  }
+
+  feature MULTIPLE-SCS-IN-EAXC {
+    description
+      "Presence of feature indicates that FHM supports combining for multiple SCS
+      or multiple c-plane-types/frameStructure in a single eAxC-id in UL direction.";
+  }
+
+  feature MULTIPLE-TRANSPORT-SESSION-TYPE {
+    description
+      "Feature to indicate O-RU supports to be configured with multiple transport-session-type
+      (Ethernet, ALIASMAC, UDP/IP)";
+  }
+
+  feature ENHANCED-T-COMBINE {
+      description
+      "Presence of feature indicates that FHM/Cascade O-RU can support t-combine-net and tx-duration";
+  }
+
+  feature SHARED-ORU-MULTI-OPERATOR {
+    description
+      "Feature to indicate the O-RU supports shared operation with one or more shared
+      resouce operators (i.e., multiple MNOs) and implements enhanced NACM privileges per shared
+      resource operator.
+
+      Note, there is no linkage or dependency between the SHARED-CELL feature and the SHARED-ORU feature.";
+  }
+
+  feature SHARED-ORU-MULTI-ODU {
+    description
+      "Feature to indicate the O-RU supports independent supervision qualified based on odu-id, where
+      loss of supervision triggers selective carrier deactivation of carriers associated with odu-id.";
+  }
+
+  feature INTEGRITY-CHECK-AT-SW-DOWNLOAD {
+   description "Feature indicates that radio unit support performing integrity check at software download";
+  }
+
+   feature SUPERVISION-WITH-SESSION-ID {
+    description
+      "O-RUs supporting this feature reuse the session-id generated for each NETCONF
+      session in supervision-notification. The session-id is defined in RFC 6241.
+      For these O-RUs, the O-RU controller participating in the NETCONF supervision
+      procedure can subscribe to supervision-notification notification events,
+      filtering for the supervision-notification/session-id matching
+      session-id in the Hello Message received from NETCONF Server earlier.";
+  }
+
+  feature UPLANE-ONLY-DL-MODE {
+    description
+      "Presence of feature indicates that O-RU supports U-Plane-only DL mode.";
+  }
+  
+  feature ST4-SLOT-CONFIG-MSG-SUPPORT {
+    description
+    "Feature to indicate O-RU support for Section Type 4 slot configuration message";
+  }
+
+}
diff --git a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-wg4-features@2020-12-10.yang b/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-wg4-features@2020-12-10.yang
deleted file mode 100644
index 5b183a3..0000000
--- a/ntsimulator/deploy/o-ran-ru-fh/yang/o-ran-wg4-features@2020-12-10.yang
+++ /dev/null
@@ -1,57 +0,0 @@
-module o-ran-wg4-features {
-  yang-version 1.1;
-  namespace "urn:o-ran:wg4feat:1.0";
-  prefix "o-ran-feat";
-
-
-  organization "O-RAN Alliance";
-
-  contact
-    "www.o-ran.org";
-
-  description
-    "This module defines the a set of re-usable type definitions for WG4 specific
-    features.
-
-    Copyright 2020 the O-RAN Alliance.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
-    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-    ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-    LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-    CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-    this list of conditions and the above disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-    this list of conditions and the above disclaimer in the documentation
-    and/or other materials provided with the distribution.
-    * Neither the Members of the O-RAN Alliance nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.";
-
-  revision "2020-12-10" {
-    description
-      "version 5.0.0
-
-      1) initial version.";
-
-    reference "ORAN-WG4.M.0-v05.00";
-  }
-
-  feature NON-PERSISTENT-MPLANE {
-    description
-      "Indicates that the Radio Unit supports the optional
-      capability to improve the operation with a SMO using a non-
-      persistent NETCONF session.";
-  }
-}
diff --git a/ntsimulator/deploy/o-ran/container-tag.yaml b/ntsimulator/deploy/o-ran/container-tag.yaml
index d478e62..0ea3b49 100644
--- a/ntsimulator/deploy/o-ran/container-tag.yaml
+++ b/ntsimulator/deploy/o-ran/container-tag.yaml
@@ -1,2 +1,2 @@
 ---
-tag: 1.6.1
+tag: 1.6.2
diff --git a/ntsimulator/deploy/smo-nts-ng-topology-server/container-tag.yaml b/ntsimulator/deploy/smo-nts-ng-topology-server/container-tag.yaml
index d478e62..0ea3b49 100644
--- a/ntsimulator/deploy/smo-nts-ng-topology-server/container-tag.yaml
+++ b/ntsimulator/deploy/smo-nts-ng-topology-server/container-tag.yaml
@@ -1,2 +1,2 @@
 ---
-tag: 1.6.1
+tag: 1.6.2
diff --git a/ntsimulator/deploy/x-ran/container-tag.yaml b/ntsimulator/deploy/x-ran/container-tag.yaml
index d478e62..0ea3b49 100644
--- a/ntsimulator/deploy/x-ran/container-tag.yaml
+++ b/ntsimulator/deploy/x-ran/container-tag.yaml
@@ -1,2 +1,2 @@
 ---
-tag: 1.6.1
+tag: 1.6.2
diff --git a/ntsimulator/nts_build.sh b/ntsimulator/nts_build.sh
index ccbf9a4..9105ec8 100755
--- a/ntsimulator/nts_build.sh
+++ b/ntsimulator/nts_build.sh
@@ -17,4 +17,4 @@
 ################################################################################
 
 source .env
-docker-compose -f nts-ng-docker-image-build-ubuntu.yaml build --build-arg NTS_BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') --build-arg NTS_BUILD_VERSION=$NTS_BUILD_VERSION nts-ng-base o-ran-sc-topology-service
+docker-compose -f nts-ng-docker-image-build-ubuntu.yaml build --build-arg NTS_BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') --build-arg NTS_BUILD_VERSION=$NTS_BUILD_VERSION nts-ng-base nts-ng-o-ran-ru-fh