diff --git a/build/yang-files/notification/submodules/bbf-xpon-base.yang b/build/yang-files/notification/submodules/bbf-xpon-base.yang
new file mode 100644
index 0000000..f330bbe
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-base.yang
@@ -0,0 +1,400 @@
+submodule bbf-xpon-base {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import ietf-interfaces {
+    prefix if;
+  }
+  import ietf-inet-types {
+    prefix inet;
+  }
+  import bbf-xpon-types {
+    prefix bbf-xpon-types;
+  }
+  import bbf-xpon-if-type {
+    prefix bbf-xponift;
+  }
+  import bbf-yang-types {
+    prefix bbf-yang;
+  }
+
+  organization
+    "Broadband Forum <https://www.broadband-forum.org>
+     Fiber Access Networks Work Area";
+  contact
+    "Comments or questions about this Broadband Forum YANG module
+     should be directed to <mailto:help@broadband-forum.org>.
+
+     Editor:      Joey Boyd, ADTRAN
+
+     Editor:      Samuel Chen, Broadcom
+
+     Editor:      Robert Peschi, Nokia
+
+     WA Director: Marta Seda, Calix
+
+     WA Director: Lin Wei, Huawei";
+  description
+    "This submodule contains a collection of YANG definitions and
+     augmentations to ietf-interfaces for managing the xPON
+     infrastructure.
+
+     Copyright (c) 2018, Broadband Forum
+
+     Redistribution and use in source and binary forms, with or
+     without modification, are permitted provided that the following
+     conditions are met:
+
+     1. Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+     2. Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials
+        provided with the distribution.
+
+     3. Neither the name of the copyright holder nor the names of its
+        contributors may be used to endorse or promote products
+        derived from this software without specific prior written
+        permission.
+
+     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.
+
+     The above license is used as a license under copyright only.
+     Please reference the Forum IPR Policy for patent licensing terms
+     <https://www.broadband-forum.org/ipr-policy>.
+
+     Any moral rights which are necessary to exercise under the above
+     license grant are also deemed granted under this license.
+
+     This version of this YANG module is part of TR-385; see
+     the TR itself for full legal notices.";
+
+  revision 2019-02-25 {
+    description
+      "Initial revision.
+       * Approval Date:    2019-02-25.
+       * Publication Date: 2019-02-25.";
+    reference
+      "TR-385: ITU-T PON YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-385.pdf>";
+  }
+
+  feature ictp-support {
+    description
+      "Indicates that the OLT supports ICTP.";
+  }
+
+  feature configurable-ictp-proxy-tcp-port {
+    if-feature "ictp-support";
+    description
+      "Indicates support for the configuration of the TCP port
+       used by an ICTP proxy.";
+  }
+
+  container xpon {
+    description
+      "Configuration associated with managing xPON in a system.";
+    container ictp {
+      if-feature "ictp-support";
+      description
+        "Configuration data for the support of
+         Inter-Channel-Termination Protocol (ICTP).";
+      reference
+        "BBF TR-352";
+      leaf activated {
+        type boolean;
+        default "false";
+        description
+          "This is to enable or disable support of ICTP.
+           When true, the OLT attempts to establish TCP
+           connections with all relevant peer ICTP proxies
+           and is ready to exchange ICTP messages with other
+           channel terminations through those ICTP proxies.
+           When false, the OLT does not process nor generate
+           any ICTP messages and will not establish nor maintain
+           any TCP connection to any ICTP proxy.";
+      }
+      container all-ictp-proxies-all-channel-groups {
+        description
+          "This container contains all configuration data related to
+           TR-352 ICTP transport infrastructure for all ICTP proxies,
+           whether they are in charge of 'inside-olt' channel
+           terminations or 'outside-olt' channel terminations, for all
+           channel groups.";
+        list proxy {
+          key "name";
+          description
+            "The list of all ICTP proxies, whether they are in charge
+             of 'inside-olt' channel terminations or 'outside-olt'
+             channel terminations, for all channel groups configured
+             in the OLT.";
+          leaf name {
+            type bbf-yang:string-ascii64;
+            description
+              "Name of the ICTP Proxy.";
+          }
+          leaf host {
+            type inet:host;
+            mandatory true;
+            description
+              "This is the IP address or the DNS domain name of the
+               ICTP proxy. TCP connections originating from this ICTP
+               proxy will use this IP address (or the one resolved
+               from the DNS domain name) as source IP address. Other
+               ICTP proxies will reach this Proxy using this IP
+               address (or the one resolved from the DNS domain name)
+               as destination address.";
+          }
+          leaf tcp-port {
+            if-feature "configurable-ictp-proxy-tcp-port";
+            type inet:port-number;
+            default "7202";
+            description
+              "The TCP port used by the ICTP proxy.";
+          }
+          container all-channel-terminations-proxied-by-this-proxy {
+            description
+              "In the context of a given ICTP proxy, this container
+               contains the list of all channel terminations 'inside'
+               and 'outside' the OLT, for all channel groups, for
+               which this ICTP proxy is playing proxy role.";
+            list channel-termination {
+              key "channel-termination-ref";
+              description
+                "The list of all channel terminations inside and
+                 outside the OLT, for all channel groups, for which
+                 this ICTP proxy is playing proxy role.";
+              leaf channel-termination-ref {
+                type if:interface-ref;
+                must "derived-from-or-self(/if:interfaces"
+                   + "/if:interface[if:name=current()]/if:type,"
+                   + "'bbf-xponift:channel-termination')" {
+                  error-message
+                    "Must reference a channel termination.";
+                }
+                description
+                  "Reference to a channel termination for which this
+                   ICTP proxy is responsible.";
+              }
+              leaf channel-termination-ictp-activated {
+                type boolean;
+                default "false";
+                description
+                  "When true, the ICTP proxy is willing to exchange
+                   ICTP messages on behalf of this
+                   channel termination. When false, the ICTP
+                   proxy ignores this channel termination.";
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+  container xpon-state {
+    config false;
+    description
+      "State data associated with managing xPON in a system.";
+    container ictp {
+      if-feature "ictp-support";
+      description
+        "State data for the support of
+         Inter-Channel-Termination Protocol (ICTP).";
+      reference
+        "BBF TR-352";
+      container all-ictp-proxies-all-channel-groups {
+        description
+          "State data related to all ICTP proxies across all channel
+           groups.";
+        list proxy {
+          key "name";
+          description
+            "The list of all ICTP proxies for all channel-groups.";
+          leaf name {
+            type bbf-yang:string-ascii64;
+            description
+              "Name of the ICTP Proxy.";
+          }
+          leaf proxy-ip-address {
+            type bbf-xpon-types:ip-address-or-unresolved;
+            description
+              "This is the IP address (v4 or v6) of this ICTP proxy
+               as derived from its configured host and as used in the
+               TCP connection when established. It is 'unresolved' if
+               for some reason the system is unable to deduce the IP
+               address from the host name of the ICTP proxy.";
+          }
+          container known-peered-proxies {
+            description
+              "In the context of an ICTP proxy, this container
+               contains state data about peering relations involving
+               this ICTP proxy. An OLT must know at least all peering
+               relations involving the ICTP proxies in charge of one
+               or several channel terminations 'inside' the OLT.
+               An OLT may or may not know peering relations between
+               ICTP proxies exclusively involving channel terminations
+               'outside' the OLT.";
+            list proxy {
+              key "name";
+              description
+                "In the context of an ICTP proxy, the list of all
+                 ICTP proxies which the OLT knows to be peered with
+                 this ICTP proxy.";
+              leaf name {
+                type bbf-yang:string-ascii64;
+                description
+                  "Name of this ICTP peer proxy.";
+              }
+              leaf ip-address {
+                type bbf-xpon-types:ip-address-or-unresolved;
+                description
+                  "This is the IP address (v4 or v6) of the peer
+                   ICTP proxy as derived from its configured
+                   host and as used in the TCP connection when
+                   established. It is 'unresolved' if for some
+                   reason the system is unable to deduce the IP
+                   address from the host name of the ICTP proxy.";
+              }
+              leaf tcp-connection-state {
+                type identityref {
+                  base bbf-xpon-types:tcp-connection-state-base;
+                }
+                description
+                  "This leaf reflects the state of the TCP connection
+                   with this peer ICTP Proxy. When 'established' the
+                   TCP connection is operational and able to transport
+                   ICTP messages. When 'not-established', the TCP
+                   connection is unable to exchange any ICTP message.
+                   When the TCP connection state is 'unknown' the OLT
+                   does not know whether the involved ICTP proxies can
+                   exchange ICTP messages or not; typically, this is
+                   because the OLT is not involved at all with either
+                   of the two related ICTP proxies.";
+              }
+              leaf source-tcp-port {
+                type inet:port-number;
+                description
+                  "This is the source port number of the TCP
+                   connection with the peer ICTP proxy, when
+                   established.";
+              }
+              leaf destination-tcp-port {
+                type inet:port-number;
+                description
+                  "This is the destination port number of the TCP
+                   connection with the peer ICTP proxy, when
+                   established.";
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+
+  augment '/if:interfaces/if:interface' {
+    when "if:type = 'bbf-xponift:channel-group'";
+    description
+      "Augment interface configuration with xPON channel group
+       configuration.";
+    container channel-group {
+      description
+        "Channel group configuration data for all xPON variants
+         (NG-PON2, XGS-PON, XG-PON and G-PON).";
+    }
+  }
+
+  augment '/if:interfaces/if:interface' {
+    when "derived-from-or-self"
+       + "(if:type, 'bbf-xponift:channel-partition')";
+    description
+      "Augment interface configuration with xPON channel partition
+       configuration.";
+    container channel-partition {
+      description
+        "Channel partition configuration data for all xPON variants
+         (NG-PON2, XGS-PON, XG-PON and G-PON).";
+    }
+  }
+
+  augment '/if:interfaces/if:interface' {
+    when "derived-from-or-self"
+       + "(if:type, 'bbf-xponift:channel-pair')";
+    description
+      "Augment interface configuration with xPON channel pair
+       configuration.";
+    container channel-pair {
+      description
+        "Channel pair configuration data for all xPON variants
+         (NG-PON2, XGS-PON, XG-PON and G-PON).";
+    }
+  }
+
+  augment '/if:interfaces/if:interface' {
+    when "derived-from-or-self"
+       + "(if:type, 'bbf-xponift:channel-termination')";
+    description
+      "Augment interface configuration with xPON channel termination
+       configuration.";
+    container channel-termination {
+      description
+        "channel termination configuration data for all xPON variants
+         (NG-PON2, XGS-PON, XG-PON and G-PON).";
+    }
+  }
+
+  augment '/if:interfaces-state/if:interface' {
+    when "derived-from-or-self"
+       + "(if:type, 'bbf-xponift:channel-group')";
+    description
+      "Augment interface state data with xPON channel group
+       state data.";
+    container channel-group {
+      description
+        "Channel group state data for all xPON variants
+         (NG-PON2, XGS-PON, XG-PON and G-PON).";
+    }
+  }
+
+  augment '/if:interfaces-state/if:interface' {
+    when "derived-from-or-self"
+       + "(if:type, 'bbf-xponift:channel-pair')";
+    description
+      "Augment interface state data with xPON channel pair
+       state data.";
+    container channel-pair {
+      description
+        "Channel pair state data for all xPON variants
+         (NG-PON2, XGS-PON, XG-PON and G-PON).";
+    }
+  }
+
+  augment '/if:interfaces-state/if:interface' {
+    when "derived-from-or-self"
+       + "(if:type, 'bbf-xponift:channel-termination')";
+    description
+      "Augment interface state data with xPON channel termination
+       state data.";
+    container channel-termination {
+      description
+        "Channel termination state data for all xPON variants
+         (NG-PON2, XGS-PON, XG-PON and G-PON).";
+    }
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-channel-group-body.yang b/build/yang-files/notification/submodules/bbf-xpon-channel-group-body.yang
new file mode 100644
index 0000000..2096f52
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-channel-group-body.yang
@@ -0,0 +1,468 @@
+submodule bbf-xpon-channel-group-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import bbf-xpon-types {
+    prefix bbf-xpon-types;
+  }
+  import bbf-yang-types {
+    prefix bbf-yang;
+  }
+  import ietf-interfaces {
+    prefix if;
+  }
+  import bbf-xpon-if-type {
+    prefix bbfxponift;
+  }
+  
+  include bbf-xpon-base;
+  include bbf-xpon-channel-partition-body;
+
+  organization
+    "Broadband Forum <https://www.broadband-forum.org>
+     Fiber Access Networks Work Area";
+  contact
+    "Comments or questions about this Broadband Forum YANG module
+     should be directed to <mailto:help@broadband-forum.org>.
+
+     Editor:      Joey Boyd, ADTRAN
+
+     Editor:      Samuel Chen, Broadcom
+
+     Editor:      Robert Peschi, Nokia
+
+     WA Director: Marta Seda, Calix
+
+     WA Director: Lin Wei, Huawei";
+  description
+    "This submodule contains a collection of YANG definitions for
+     managing channel groups.
+
+     Copyright (c) 2018, Broadband Forum
+
+     Redistribution and use in source and binary forms, with or
+     without modification, are permitted provided that the following
+     conditions are met:
+
+     1. Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+     2. Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials
+        provided with the distribution.
+
+     3. Neither the name of the copyright holder nor the names of its
+        contributors may be used to endorse or promote products
+        derived from this software without specific prior written
+        permission.
+
+     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.
+
+     The above license is used as a license under copyright only.
+     Please reference the Forum IPR Policy for patent licensing terms
+     <https://www.broadband-forum.org/ipr-policy>.
+
+     Any moral rights which are necessary to exercise under the above
+     license grant are also deemed granted under this license.
+
+     This version of this YANG module is part of TR-385; see
+     the TR itself for full legal notices.";
+
+  revision 2019-02-25 {
+    description
+      "Initial revision.
+       * Approval Date:    2019-02-25.
+       * Publication Date: 2019-02-25.";
+    reference
+      "TR-385: ITU-T PON YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-385.pdf>";
+  }
+
+  typedef alloc-id-values {
+    type string {
+      pattern '((25[6-9]|2[6-9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-'
+            + '9][0-9]|1[0-6][0-3][0-8][0-3])([,-](25[6-9]|2[6-9]['
+            + '0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|1[0-6][0-'
+            + '3][0-8][0-3]))*)?';
+    }
+    description
+      "A list of non-overlapping Alloc-ID values in
+       ascending order, between 1024 to 16383 for G.9807.1
+       XGS-PON/G.989.3 NGPON2 compliant OLTs and
+       256 to 4095 for G.984.3 GPON-compliant OLTs.
+
+       The format of this string can be any of the following:
+
+         single value
+           Example: '1024'
+         comma separated list of values
+           Example: '1024,1030,16000'
+         range of values
+           Example: '1024-1300'
+         comma separated list of ranges
+           Example: '1025-1300,1301-1400,1500-1600'
+         comma separated list of values and ranges
+           Example: '1024-1300,1301,1303-1310'.";
+  }
+
+  typedef gemport-values {
+    type string {
+      pattern '((25[4-9]|2[6-9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-'
+            + '9][0-9]|[1-6][0-5][0-5][0-3][0-4])([,-](25[4-9]|2[6-'
+            + '9][0-9]|[3-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-6]['
+            + '0-5][0-5][0-3][0-4]))*)?';
+    }
+    description
+      "A list of non-overlapping xGEM/GEM port-ID values in
+       ascending order, between 1021 to 65534  for G.9807.1
+       XGS-PON/G.989.3 NGPON2 compliant OLTs and
+       254 to 4095 for G.984.3 GPON-compliant OLTs.
+
+       The format of this string can be any of the following:
+
+         single value
+           Example: '1024'
+         comma separated list of values
+           Example: '1024,1030,16000'
+         range of values
+           Example: '1024-1300'
+         comma separated list of ranges
+           Example: '1025-1300,1301-1400,1500-1600'
+         comma separated list of values and ranges
+           Example: '1024-1300,1301,1303-1310'.";
+  }
+
+  typedef onu-id-values {
+    type string {
+      pattern '(([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|10[0-2]0)([,-](['
+            + '0-9]|[1-9][0-9]|[1-9][0-9][0-9]|10[0-2]0))*)?';
+    }
+    description
+      "A list of non-overlapping ONU-ID values in
+       ascending order, between 0 to 1020 for G.9807.1
+       XGS-PON/G.989.3 NGPON2 compliant OLTs and
+       0 to 253 for G.984.3 GPON-compliant OLTs.
+
+       The format of this string can be any of the following:
+
+         single value
+           Example: '1020'
+         comma separated list of values
+           Example: '1,30,600'
+         range of values
+           Example: '30-60'
+         comma separated list of ranges
+           Example: '30-60,80-90'
+         comma separated list of values and ranges
+           Example: '1,30-60,70,90-100'.";
+  }
+
+  feature pon-pools {
+    description
+      "Assignable PON resource (Alloc-ID, xGEM port, ONU-id)
+       into PON pool feature.";
+  }
+
+  grouping channel-group-config-data {
+    description
+      "All config data for a channel group.";
+    leaf polling-period {
+      type uint32 {
+        range "1..864000";
+      }
+      units "0.1 second";
+      default "100";
+      description
+        "The period between two consecutive times the
+         autodetection procedure on each pair in the
+         group is executed.
+         Used in NG-PON2 for quiet window control.
+         Value represents tenths of seconds.
+         (e.g. 1 = 0.1 second, 864000 = 24 hours).";
+    }
+    leaf raman-mitigation {
+      type bbf-xpon-types:raman-mitigation-type;
+      default "raman-none";
+      description
+        "NG-PON2 Raman mitigation coding schemes when using RF video
+         overlay.";
+      reference
+        "ITU-T G.989.2 Appendix IX";
+    }
+    leaf system-id {
+      type string {
+        pattern '[0-9a-fA-F]{5}';
+      }
+      description
+        "A 20-bit number that identifies a specific NG-PON2 system
+         (typically a channel group) among multiple NG-PON2 systems
+         under a common administation.
+         It is defined as NGSYS ID in G.989.3 clause 6.1.5.2 and may
+         be coded to support administration such as name, geographical
+         location, servie profile (see also G.989.3 table VIII.2).";
+      reference
+        "ITU-T G.989.3 clause 6.1.5.2;
+         ITU-T G.989.3 table VIII.2";
+    }
+    container pon-pools {
+      if-feature "pon-pools";
+      description
+        "This container describes per channel termination
+         PON resources allocation. A channel termination can only
+         be a member of a single channel group.  Within
+         a channel group, PON resources should not
+         overlap and only be assigned to a single
+         channel termination.";
+      list pon-pool {
+        key "name";
+        min-elements 1;
+        max-elements 8;
+        description
+          "This container describes the allocated PON pool of
+           Alloc-IDs, GEM port-IDs and ONU-IDs.";
+        leaf name {
+          type bbf-yang:string-ascii64;
+          description
+            "Name of the PON pool.";
+        }
+        leaf channel-termination-ref {
+          type if:interface-ref;
+          must "derived-from-or-self(/if:interfaces/"
+             + "if:interface[if:name = current()]/if:type,"
+             + "'bbfxponift:channel-termination')" {
+            error-message
+              "Referenced interface must be of type
+               'channel-termination'.";
+          }
+          description
+            "Reference to a channel termination to which PON resource
+             pools will be assigned.";
+        }
+        leaf alloc-id-values {
+          type alloc-id-values;
+          description
+            "The list of assignable alloc-IDs between 1024 to
+             16383 for G.9807.1 XGS-PON/G.989.3 NGPON2 compliant
+             OLTs and 256 to 4095 for G.984.3 GPON-compliant OLTs..
+             A single value or range of values can be specified.
+
+             The format of this string can be any of the following:
+              single value
+                Example: '1024'
+              comma separated list of values
+                Example: '1024,1030,16000'
+              range of values
+                Example: '1024-1300'
+              comma separated list of ranges
+                Example: '1025-1300,1301-1400,1500-1600'
+              comma separated list of values and ranges
+                Example: '1024-1300,1301,1303-1310'.";
+        }
+        leaf gemport-values {
+          type gemport-values;
+          description
+            "The list of assignable GEM port/xGEM port-ID between
+             1021 to 65534 for G.9807.1 XGS-PON/G.989.3 NGPON2
+             compliant OLTs and 254 to 4095 for G.984.3
+             GPON-compliant OLTs.
+
+             A single value or range of values can be specified.
+
+               single value
+                 Example: '1024'
+               comma separated list of values
+                 Example: '1024,1030,16000'
+               range of values
+                 Example: '1024-1300'
+               comma separated list of ranges
+                 Example: '1025-1300,1301-1400,1500-1600'
+               comma separated list of values and ranges
+                 Example: '1024-1300,1301,1303-1310'.";
+        }
+        leaf onu-id-values {
+          type onu-id-values;
+          description
+            "The list of assignable ONU-ID values between
+             0 to 1020 for G.9807.1 XGS-PON/G.989.3 NGPON2
+             compliant OLTs and 0 to 253 for G.984.3
+             GPON-compliant OLTs.
+
+             The format of this string can be any of the following:
+              single value
+               Example: '1020'
+             comma separated list of values
+               Example: '1,30,600'
+             range of values
+               Example: '30-60'
+             comma separated list of ranges
+               Example: '30-60,80-90'
+             comma separated list of values and ranges
+               Example: '1,30-60,70,90-100'.";
+        }
+      }
+    }
+  }
+
+  grouping channel-group-state-data {
+    description
+      "All state data for a channel group.";
+    container allocated-upstream-channel-ids {
+      description
+        "The list maintained by the system of all the upstream
+         channel-id's which are already allocated to the
+         channel group. For NG-PON2, the applicable values are
+         in [0..7], for XGS-PON a dedicated value 'xgs' is
+         applicable rather than value '0': this is not to a
+         priori forbid in yang model the coexistence of XGS-PON
+         with NG-PON2 using channel-id=0. This list is a helper
+         to avoid upstream channel-id conflicts when allocating
+         channel pairs to a channel group.";
+      leaf-list channel-id {
+        type bbf-xpon-types:composite-channel-id-type;
+        description
+          "An upstream channel-id in use on the channel group.
+           For NG-PON2, value must be in [0..7].
+           For XGS-PON, value must be 'xgs'.";
+      }
+    }
+    container allocated-downstream-channel-ids {
+      description
+        "The list maintained by the system of all the downstream
+         channel-id's which are already allocated to the
+         channel group. For NG-PON2, the applicable values are
+         in [0..7], for XGS-PON a dedicated value 'xgs' is
+         applicable rather than value '0': this is not to a
+         priori forbid in yang model the coexistence of XGS-PON
+         with NG-PON2 using channel-id=0. This list is a helper
+         to avoid downstream channel-id conflicts when allocating
+         channel pairs to a channel group.";
+      leaf-list downstream-channel-id {
+        type bbf-xpon-types:composite-channel-id-type;
+        description
+          "A downstreamchannel-id in use on the channel group.
+           For NG-PON2, value must be in [0..7].
+           For XGS-PON, value must be 'xgs'.";
+      }
+    }
+    container allocated-downstream-wavelengths {
+      description
+        "The list maintained by the system of all the downstream
+         wavelengths already allocated to the channel group
+         including all of the NG-PON2, XGS-PON, XG-PON and G-PON
+         cases.
+         This list is a helper to avoid wavelength conflicts
+         when allocating channel pairs to a channel group.";
+      leaf-list wavelength {
+        type bbf-xpon-types:composite-downstream-wavelength-type;
+        description
+          "A downstream wavelength already allocated to the
+           channel group. For NG-PON2 it must be a value in
+           [156000..161000] expressed in hundredths of nm to fit
+           ITU-T precision requirements. For the XGS-PON, XG-PON
+           and G-PON cases, it must have resp. the value 'xgs',
+           'xgpon' or 'gpon'.";
+      }
+    }
+    container pon-pools {
+      if-feature "pon-pools";
+      description
+        "This container describes the list of available and consumed
+         and unusable PON resources that a channel termination in a
+         channel group may have.";
+      list pon-pool {
+        key "name";
+        min-elements 1;
+        max-elements 8;
+        description
+          "This container describes the current characteristics of the
+           PON pool of Alloc-IDs, GEM port-IDs and ONU-IDs.";
+        leaf name {
+          type bbf-yang:string-ascii64;
+          description
+            "Name of the PON pool.";
+        }
+        leaf channel-termination-ref {
+          type if:interface-state-ref;
+          must "derived-from-or-self(/if:interfaces-state"
+             + "/if:interface[if:name = current()]/if:type,"
+             + "'bbfxponift:channel-termination')";
+          description
+            "Reference the configured channel termination
+             that is being reported against.";
+        }
+        container consumed-resources {
+          description
+            "The consumed PON resources.";
+          leaf alloc-id-values {
+            type alloc-id-values;
+            description
+              "The list of consumed Alloc-IDs.
+               For example: '1024-1300,1301,1303-1310'.";
+          }
+          leaf gemport-values {
+            type gemport-values;
+            description
+              "The list of consumed GEM port-IDs/xGEM port-IDs.
+               For example: '1024-1300,1301,1303-1310'.";
+          }
+          leaf onu-ids {
+            type onu-id-values;
+            description
+              "The list of consumed ONU-IDs.
+               For example: '1,30-60,70,90-100'.";
+          }
+        }
+        container available-resources {
+          description
+            "The available/unused PON resources.";
+          leaf alloc-id-values {
+            type alloc-id-values;
+            description
+              "The list of available Alloc-IDs.
+               For example: '1024-1300,1301,1303-1310'.";
+          }
+          leaf gemport-values {
+            type gemport-values;
+            description
+              "The list of available GEM port-IDs/xGEM port-IDs.
+               For example: '1024-1300,1301,1303-1310'.";
+          }
+          leaf onu-ids {
+            type onu-id-values;
+            description
+              "The list of available ONU-IDs.
+               For example: '1,30-60,70,90-100'.";
+          }
+        }
+      }
+    }
+  }
+
+  augment '/if:interfaces/if:interface/bbf-xpon:channel-group' {
+    description
+      "Configuration of an xPON channel group.";
+    uses channel-group-config-data;
+  }
+
+  augment '/if:interfaces-state/if:interface/bbf-xpon:channel-group' {
+    description
+      "State data of an xPON channel group.";
+    uses channel-group-state-data;
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-channel-pair-body.yang b/build/yang-files/notification/submodules/bbf-xpon-channel-pair-body.yang
new file mode 100644
index 0000000..0c5b6f6
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-channel-pair-body.yang
@@ -0,0 +1,238 @@
+submodule bbf-xpon-channel-pair-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import bbf-xpon-types {
+    prefix bbf-xpon-types;
+  }
+  import ietf-interfaces {
+    prefix if;
+  }
+  import bbf-xpon-if-type {
+    prefix bbf-xponift;
+  }
+  include bbf-xpon-base;
+  include bbf-xpon-wavelength-profile-body;
+
+  organization
+    "Broadband Forum <https://www.broadband-forum.org>
+     Fiber Access Networks Work Area";
+  contact
+    "Comments or questions about this Broadband Forum YANG module
+     should be directed to <mailto:help@broadband-forum.org>.
+
+     Editor:      Joey Boyd, ADTRAN
+
+     Editor:      Samuel Chen, Broadcom
+
+     Editor:      Robert Peschi, Nokia
+
+     WA Director: Marta Seda, Calix
+
+     WA Director: Lin Wei, Huawei";
+  description
+    "This submodule contains a collection of YANG definitions for
+     managing channel pairs.
+
+     Copyright (c) 2018, Broadband Forum
+
+     Redistribution and use in source and binary forms, with or
+     without modification, are permitted provided that the following
+     conditions are met:
+
+     1. Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+     2. Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials
+        provided with the distribution.
+
+     3. Neither the name of the copyright holder nor the names of its
+        contributors may be used to endorse or promote products
+        derived from this software without specific prior written
+        permission.
+
+     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.
+
+     The above license is used as a license under copyright only.
+     Please reference the Forum IPR Policy for patent licensing terms
+     <https://www.broadband-forum.org/ipr-policy>.
+
+     Any moral rights which are necessary to exercise under the above
+     license grant are also deemed granted under this license.
+
+     This version of this YANG module is part of TR-385; see
+     the TR itself for full legal notices.";
+
+  revision 2019-02-25 {
+    description
+      "Initial revision.
+       * Approval Date:    2019-02-25.
+       * Publication Date: 2019-02-25.";
+    reference
+      "TR-385: ITU-T PON YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-385.pdf>";
+  }
+
+  grouping channel-pair-config-data {
+    description
+      "All configuration data for a channel pair.";
+    leaf channel-group-ref {
+      type if:interface-ref;
+      must "derived-from-or-self(/if:interfaces"
+         + "/if:interface[if:name=current()]/if:type,"
+         + "'bbf-xponift:channel-group')" {
+        error-message
+          "Must reference a channel group.";
+      }
+      description
+        "Reference to channel group. Note that it is not allowed
+         to have several channel-pairs with identical downsream
+         channel-ID or upstream channel-ID or transmit wavelength
+         simultaneously active on the same chnanel-group.
+         In particular there may be only a maximum of one XGS-PON,
+         one XG-PON and one G-PON active on the same channel group.
+         The YANG model does not enforce these constraints which are
+         assumed to be enforced or verified by the OLT network
+         element software.";
+    }
+    leaf channel-partition-ref {
+      type if:interface-ref;
+      must "derived-from-or-self(/if:interfaces"
+         + "/if:interface[if:name=current()]/if:type,"
+         + "'bbf-xponift:channel-partition') and "
+         + "/if:interfaces/if:interface[if:name=current()]"
+         + "/channel-partition/channel-group-ref="
+         + "../channel-group-ref" {
+        error-message
+          "Must reference a channel partition associated with the same
+           channel group this pair is associated with.";
+      }
+      description
+        "Reference to channel partition.";
+    }
+    leaf wavelength-prof-ref {
+      when "derived-from-or-self(../channel-pair-type,"
+         + "'bbf-xpon-types:ngpon2-twdm') or derived-from-or-self"
+         + "(../channel-pair-type, 'bbf-xpon-types:ngpon2-ptp') or "
+         + "derived-from-or-self(../channel-pair-type,"
+         + "'bbf-xpon-types:xgs')";
+      type wavelength-prof-ref;
+      description
+        "An NG-PON2 channel pair needs to point to an existing
+         wavelength profile. Similar for XGS-PON (ref: ITU-T G.9807.1
+         A.8.2: Basic Wavelength and Optional Wavelength sets). The
+         wavelength for XG-PON and G-PON is fixed per ITU-T standards
+         and needs not be configured via a wavelength profile.";
+    }
+    leaf channel-pair-type {
+      type identityref {
+        base bbf-xpon-types:channel-pair-type-base;
+      }
+      mandatory true;
+      description
+        "Represents the type of channel pair
+         (e.g. TWDM NG-PON2, PtP NG-PON2, XGS-PON, XG-PON,
+         G-PON).";
+    }
+    leaf channel-pair-line-rate {
+      when "derived-from-or-self(../channel-pair-type,"
+         + "'bbf-xpon-types:ngpon2-twdm') or derived-from-or-self"
+         + "(../channel-pair-type, 'bbf-xpon-types:ngpon2-ptp')";
+      type identityref {
+        base bbf-xpon-types:channel-pair-line-rate-profile-base;
+      }
+      default "bbf-xpon-types:unplanned-cp-line-rate";
+      description
+        "Represents the planned downstream/upstream channel pair
+         speed for NG-PON2. The line rates for
+             XGS-PON (downstream 10Gbps/upstream 10Gbps),
+             XG-PON(downstream 10Gbps/upstream 2.5Gbps) and
+             G-PON (downstream 2.5Gbps/upstream 1.2Gbps)
+         are fixed per ITU-T standards and need not be configured.";
+    }
+    leaf gpon-pon-id-interval {
+      when "derived-from-or-self"
+         + "(../channel-pair-type, 'bbf-xpon-types:gpon')";
+      type uint16 {
+        range "0..60";
+      }
+      units "seconds";
+      default "0";
+      description
+        "This attribute is used to specify the frequency of
+         transmission of the periodic downstream PON-ID PLOAM
+         message for this G-PON. See ITU-T G.984.3 C1. The default
+         value '0' allows not to generate this PLOAM message,
+         fulfilling ITU-T G.984.3 C2 requirement.
+         This is only applicable to G-PON.";
+      reference
+        "ITU-T G.984.3 C1
+         ITU-T G.984.3 C2";
+    }
+  }
+
+  grouping channel-pair-state-data {
+    description
+      "All state data for a channel pair.";
+    leaf actual-downstream-wavelength {
+      type uint32 {
+        range "0 | 148000..162000";
+      }
+      units "0.01nm";
+      default "0";
+      description
+        "Represents the Actual Downstream wavelength for the
+         channel pair for any of the NG-PON2, XGS-PON, XG-PON or
+         G-PON case. It is expressed in hundredths of nm to fit
+         ITU-T precision requirements.";
+    }
+    leaf primary-ct-assigned {
+      type boolean;
+      default "false";
+      description
+        "When true this means that a channel termination with
+         Primary type B role has been assigned to this channel pair.";
+      reference
+        "ITU-T G.989.3 clause 18.2";
+    }
+    leaf secondary-ct-assigned {
+      type boolean;
+      default "false";
+      description
+        "When true this means that a channel termination with
+         Secondary type B role has been assigned to this
+         channel pair.";
+      reference
+        "ITU-T G.989.3 clause 18.2";
+    }
+  }
+
+  augment '/if:interfaces/if:interface/bbf-xpon:channel-pair' {
+    description
+      "Configuration of an xPON channel pair.";
+    uses channel-pair-config-data;
+  }
+
+  augment '/if:interfaces-state/if:interface/bbf-xpon:channel-pair' {
+    description
+      "State data of an xPON channel pair.";
+    uses channel-pair-state-data;
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-channel-partition-body.yang b/build/yang-files/notification/submodules/bbf-xpon-channel-partition-body.yang
new file mode 100644
index 0000000..422c8db
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-channel-partition-body.yang
@@ -0,0 +1,182 @@
+submodule bbf-xpon-channel-partition-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import ietf-interfaces {
+    prefix if;
+  }
+  import bbf-xpon-if-type {
+    prefix bbf-xponift;
+  }
+  import bbf-xpon-types {
+    prefix bbf-xpon-types;
+  }
+  include bbf-xpon-base;
+
+  organization
+    "Broadband Forum <https://www.broadband-forum.org>
+     Fiber Access Networks Work Area";
+  contact
+    "Comments or questions about this Broadband Forum YANG module
+     should be directed to <mailto:help@broadband-forum.org>.
+
+     Editor:      Joey Boyd, ADTRAN
+
+     Editor:      Samuel Chen, Broadcom
+
+     Editor:      Robert Peschi, Nokia
+
+     WA Director: Marta Seda, Calix
+
+     WA Director: Lin Wei, Huawei";
+  description
+    "This submodule contains a collection of YANG definitions for
+     managing channel partitions.
+
+     Copyright (c) 2018, Broadband Forum
+
+     Redistribution and use in source and binary forms, with or
+     without modification, are permitted provided that the following
+     conditions are met:
+
+     1. Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+     2. Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials
+        provided with the distribution.
+
+     3. Neither the name of the copyright holder nor the names of its
+        contributors may be used to endorse or promote products
+        derived from this software without specific prior written
+        permission.
+
+     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.
+
+     The above license is used as a license under copyright only.
+     Please reference the Forum IPR Policy for patent licensing terms
+     <https://www.broadband-forum.org/ipr-policy>.
+
+     Any moral rights which are necessary to exercise under the above
+     license grant are also deemed granted under this license.
+
+     This version of this YANG module is part of TR-385; see
+     the TR itself for full legal notices.";
+
+  revision 2019-02-25 {
+    description
+      "Initial revision.
+       * Approval Date:    2019-02-25.
+       * Publication Date: 2019-02-25.";
+    reference
+      "TR-385: ITU-T PON YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-385.pdf>";
+  }
+
+  grouping channel-partition-config-data {
+    description
+      "All config data for a channel partition";
+    leaf channel-group-ref {
+      type if:interface-ref;
+      must "derived-from-or-self(/if:interfaces"
+         + "/if:interface[if:name=current()]/if:type,"
+         + "'bbf-xponift:channel-group')" {
+        error-message
+          "Must reference a channel group.";
+      }
+      mandatory true;
+      description
+        "Reference to a channel group.";
+    }
+    leaf channel-partition-index {
+      type uint8 {
+        range "0..15";
+      }
+      description
+        "This attribute identifies the partition inside the
+         channel group.";
+      reference
+        "ITU-T G.989.3 clause 6.1.5.9 and clause 11.3.3.14.";
+    }
+    leaf downstream-fec {
+      type boolean;
+      default "true";
+      description
+        "Enable/Disable downstream FEC.
+         Note that downstream FEC is always enabled for XG-PON and
+         XGS-PON and thus a value of 'false' is ignored.";
+      reference
+        "ITU-T G.984.3 clause 13.1.2.1
+         ITU-T G.987.3 clause 10.1
+         ITU-T G.9807.1 clause C.10.1.1.1.3
+         ITU-T G.989.3 clause 10.1.1.1.3";
+    }
+    leaf closest-onu-distance {
+      type uint16 {
+        range "0..40";
+      }
+      units "km";
+      default "0";
+      description
+        "Establishes the distance of the closest ONU.
+         Used to determine how to equalize delay
+         between the ONUs.";
+    }
+    leaf maximum-differential-xpon-distance {
+      type uint16 {
+        range "20 | 40";
+      }
+      units "km";
+      default "20";
+      description
+        "This attribute provides the ability to set the maximum
+         differential logical reach for a channel partition.";
+      reference
+        "ITU-T G.989.1 clause 8.2
+         ITU-T G.989.3 clause 13.1.";
+    }
+    leaf authentication-method {
+      type bbf-xpon-types:auth-method-type;
+      default "serial-number";
+      description
+        "ONU Authentication mode option for this
+         channel partition.";
+      reference
+        "ITU-T G.984.3, section VI.1.";
+    }
+    leaf multicast-aes-indicator {
+      type boolean;
+      default "false";
+      description
+        "Used to designate whether AES should be
+         enabled/disabled for multicast GEM ports.";
+      reference
+        "ITU-T G.984.3, section 12.2. and 9.2.3.8
+         ITU-T G.987.3, section 15.5.1 and 15.5.4
+         ITU-T G.9807.1, section C.15.5.1 and C.15.5.4
+         ITU-T G.989.3, section 15.5.1 and 5.5.4.";
+    }
+  }
+
+  augment '/if:interfaces/if:interface/bbf-xpon:channel-partition' {
+    description
+      "Configuration of an xPON channel partition.";
+    uses channel-partition-config-data;
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-channel-termination-body.yang b/build/yang-files/notification/submodules/bbf-xpon-channel-termination-body.yang
new file mode 100644
index 0000000..513cee8
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-channel-termination-body.yang
@@ -0,0 +1,285 @@
+submodule bbf-xpon-channel-termination-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import ietf-interfaces {
+    prefix if;
+  }
+  import bbf-xpon-types {
+    prefix bbf-xpon-types;
+  }
+  import bbf-xpon-if-type {
+    prefix bbf-xponift;
+  }
+  include bbf-xpon-base;
+
+  organization
+    "Broadband Forum <https://www.broadband-forum.org>
+     Fiber Access Networks Work Area";
+  contact
+    "Comments or questions about this Broadband Forum YANG module
+     should be directed to <mailto:help@broadband-forum.org>.
+
+     Editor:      Joey Boyd, ADTRAN
+
+     Editor:      Samuel Chen, Broadcom
+
+     Editor:      Robert Peschi, Nokia
+
+     WA Director: Marta Seda, Calix
+
+     WA Director: Lin Wei, Huawei";
+  description
+    "This submodule contains a collection of YANG definitions for
+     managing channel terminations.
+
+     Copyright (c) 2018, Broadband Forum
+
+     Redistribution and use in source and binary forms, with or
+     without modification, are permitted provided that the following
+     conditions are met:
+
+     1. Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+     2. Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials
+        provided with the distribution.
+
+     3. Neither the name of the copyright holder nor the names of its
+        contributors may be used to endorse or promote products
+        derived from this software without specific prior written
+        permission.
+
+     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.
+
+     The above license is used as a license under copyright only.
+     Please reference the Forum IPR Policy for patent licensing terms
+     <https://www.broadband-forum.org/ipr-policy>.
+
+     Any moral rights which are necessary to exercise under the above
+     license grant are also deemed granted under this license.
+
+     This version of this YANG module is part of TR-385; see
+     the TR itself for full legal notices.";
+
+  revision 2019-02-25 {
+    description
+      "Initial revision.
+       * Approval Date:    2019-02-25.
+       * Publication Date: 2019-02-25.";
+    reference
+      "TR-385: ITU-T PON YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-385.pdf>";
+  }
+
+  grouping channel-termination-config-data {
+    description
+      "All configuration data for a channel termination.";
+    leaf channel-pair-ref {
+      type if:interface-ref;
+      must "derived-from-or-self(/if:interfaces"
+         + "/if:interface[if:name=current()]/if:type,"
+         + "'bbf-xponift:channel-pair') and "
+         + "/if:interfaces/if:interface[if:name=current()]/"
+         + "bbf-xpon:channel-pair/bbf-xpon:channel-pair-type = "
+         + "../bbf-xpon:channel-termination-type" {
+        error-message
+          "Must reference a channel pair with the same xPON type as 
+           the channel termination.";
+      }
+      description
+        "Reference to a channel pair.";
+    }
+    leaf channel-termination-type {
+      type identityref {
+        base bbf-xpon-types:channel-pair-type-base;
+      }
+      mandatory true;
+      description
+        "Represents the type of channel termination (e.g.
+         TWDM NG-PON2, PtP NG-PON2, XGS-PON, XG-PON, G-PON).";
+    }
+    leaf meant-for-type-b-primary-role {
+      type boolean;
+      description
+        "When true, the channel termination is meant to play type B
+         protection Primary role when it refers to a channel pair.
+         When false, the channel termination is meant to play
+         type B protection Secondary role when it refers to a
+         channel pair.";
+      reference
+        "ITU-T G.898.3 Amendment 1 (11/2016), section 18.1.";
+    }
+    leaf ngpon2-twdm-admin-label {
+      when "derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:ngpon2-twdm')";
+      type uint32 {
+        range "0..268435455" {
+          description
+            "0 to 2^28-1.";
+        }
+      }
+      description
+        "For TWDM NG-PON2, the admin-label is configurable and is
+         28 bits long. It is the configurable part of the PON-ID
+         which is available as state data.";
+      reference
+        "ITU-T G.989.3 section 6.1.5.3";
+    }
+    leaf ngpon2-ptp-admin-label {
+      when "derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:ngpon2-ptp')";
+      type uint32 {
+        range "0..4194303" {
+          description
+            "0 to 2^22-1.";
+        }
+      }
+      description
+        "For PtP NG-PON2, the admin-label is configurable and is
+         22 bits long. It is the configurable part of the PON-ID
+         which is available as state data.";
+      reference
+        "ITU-T G.989.3 section 6.1.5.3";
+    }
+    leaf xgs-pon-id {
+      when "derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:xgs')";
+      type uint32;
+      description
+        "For XGS-PON, the PON-ID is entirely configurable and is
+         32 bits long. The PON-ID is also available as state
+         data.";
+      reference
+        "ITU-T G.9807.1 section C.10.1.1.1.3";
+    }
+    leaf xgpon-pon-id {
+      when "derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:xgpon')";
+      type uint32;
+      description
+        "For XG-PON, the PON-ID is entirely configurable and is
+         32 bits long. The PON-ID is also available as state
+         data.";
+      reference
+        "ITU-T G.987.3 section E.2";
+    }
+    leaf gpon-pon-id {
+      when "derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:gpon')";
+      type bbf-xpon-types:string-hex14;
+      description
+        "For G-PON, the PON-ID is entirely configurable with
+         any binary value over 7 bytes. The PON-ID is also
+         available as state data.";
+      reference
+        "ITU-T G.984.3 section C.2.2";
+    }
+    leaf pon-tag {
+      when "not(derived-from-or-self"
+         + "(../bbf-xpon:channel-termination-type,"
+         + "'bbf-xpon-types:gpon'))";
+      type string {
+        pattern '[0-9a-fA-F]{16}';
+      }
+      description
+        "8 bytes. Each octet is represented by two hex values.
+         Used to specify channel-pair-TAG attribute in NG-PON2,
+         XGS-PON and XG-PON downstream PLOAM messages.
+         The PON-TAG is not relevant for G-PON.";
+    }
+    leaf ber-calc-period {
+      type uint32 {
+        range "1..864000";
+      }
+      units "0.1s";
+      default "10";
+      description
+        "Measurement period used to determine if an SDi alarm
+         has occurred for an ONU.";
+      reference
+        "ITU-T G.984.3 section 11.1.3";
+    }
+    leaf location {
+      type identityref {
+        base bbf-xpon-types:location-base;
+      }
+      description
+        "Indicates whether the CT is physically inside the OLT i.e.
+         can be related to a port in the OLT hardware model or
+         physically part of another OLT.";
+    }
+  }
+
+  grouping channel-termination-oper-data {
+    description
+      "All oper data for a channel termination";
+    leaf pon-id-display {
+      type bbf-xpon-types:pon-id-display-type;
+      description
+        "The PON-ID of the channel termination.
+         Per ITU-T G.989.3, ITU-T G.9807.1, ITU-T G.987.3 and
+         ITU-T G.984.3, depending of the xPON type some part
+         of this object is configured by the operator and the
+         other part is genuine operational data determined by
+         the system.";
+    }
+    leaf type-b-state {
+      type identityref {
+        base bbf-xpon-types:type-b-state-base;
+      }
+      description
+        "The type B protection state of the CT; it will typically
+         be active/standby. When the channel termination is not yet
+         referring to a channel pair, it is not part of any type B
+         protection scheme (and not usable either, btw); in that
+         case its type-b-state has the value 'not-part-of-type-b.";
+      reference
+        "ITU-T G.989.3 Amendment 1 clause 18.2";
+    }
+    leaf location {
+      type identityref {
+        base bbf-xpon-types:location-base;
+      }
+      description
+        "Indicates whether the CT is physically inside the OLT i.e.
+         can be related to a port in the OLT hardware model or
+         physically part of another OLT.";
+    }
+  }
+
+  augment '/if:interfaces/if:interface/bbf-xpon:channel-termination' {
+    description
+      "Configuration of an xPON channel termination.";
+    uses channel-termination-config-data;
+  }
+
+  augment '/if:interfaces-state/if:interface/bbf-xpon:channel-'
+        + 'termination' {
+    description
+      "State data of an xPON channel termination.";
+    uses channel-termination-oper-data;
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-multicast-distribution-set-body.yang b/build/yang-files/notification/submodules/bbf-xpon-multicast-distribution-set-body.yang
new file mode 100644
index 0000000..a2c1326
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-multicast-distribution-set-body.yang
@@ -0,0 +1,148 @@
+submodule bbf-xpon-multicast-distribution-set-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import bbf-yang-types {
+    prefix bbf-yang;
+  }
+  include bbf-xpon-base;
+  include bbf-xpon-multicast-gemport-body;
+
+  organization
+    "Broadband Forum <https://www.broadband-forum.org>
+     Fiber Access Networks Work Area";
+  contact
+    "Comments or questions about this Broadband Forum YANG module
+     should be directed to <mailto:help@broadband-forum.org>.
+
+     Editor:      Joey Boyd, ADTRAN
+
+     Editor:      Samuel Chen, Broadcom
+
+     Editor:      Robert Peschi, Nokia
+
+     WA Director: Marta Seda, Calix
+
+     WA Director: Lin Wei, Huawei";
+  description
+    "This submodule contains a collection of YANG definitions for
+     managing multicast distribution sets.
+
+     Copyright (c) 2018, Broadband Forum
+
+     Redistribution and use in source and binary forms, with or
+     without modification, are permitted provided that the following
+     conditions are met:
+
+     1. Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+     2. Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials
+        provided with the distribution.
+
+     3. Neither the name of the copyright holder nor the names of its
+        contributors may be used to endorse or promote products
+        derived from this software without specific prior written
+        permission.
+
+     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.
+
+     The above license is used as a license under copyright only.
+     Please reference the Forum IPR Policy for patent licensing terms
+     <https://www.broadband-forum.org/ipr-policy>.
+
+     Any moral rights which are necessary to exercise under the above
+     license grant are also deemed granted under this license.
+
+     This version of this YANG module is part of TR-385; see
+     the TR itself for full legal notices.";
+
+  revision 2019-02-25 {
+    description
+      "Initial revision.
+       * Approval Date:    2019-02-25.
+       * Publication Date: 2019-02-25.";
+    reference
+      "TR-385: ITU-T PON YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-385.pdf>";
+  }
+
+  augment '/bbf-xpon:xpon' {
+    description
+      "Augment system level xPON configuration with multicase
+       distribution set configuration.";
+    container multicast-distribution-set {
+      description
+        "Configuration data for a multicast distribution set.";
+      uses multicast-distribution-set-data;
+    }
+  }
+
+  grouping multicast-distribution-set-data {
+    description
+      "All configuration data for a multicast distribution set.";
+    list multicast-set {
+      key "name";
+      leaf name {
+        type bbf-yang:string-ascii64;
+        description
+          "Name of the multicast distribution set.";
+      }
+      leaf multicast-gemport-ref {
+        type multicast-gemport-ref;
+        description
+          "Points to a multicast GEM port.";
+      }
+      choice multicast-vlans {
+        description
+          "Multicast VLAN list or all. All means all multicast
+           vlans are carried on the same GEM port.";
+        case vlan-list {
+          description
+            "Multicast VLAN list.";
+          list vlan-list {
+            key "multicast-vlan-id";
+            leaf multicast-vlan-id {
+              type uint16 {
+                range "0..4095";
+              }
+              description
+                "Multicast VLAN-ID.";
+            }
+            description
+              "List of vlans.";
+          }
+        }
+        case all-multicast-vlans {
+          description
+            "All multicast VLANs are carried on the same
+             GEM port.";
+          leaf all-multicast-vlans {
+            type empty;
+            description
+              "All multicast VLANs.";
+          }
+        }
+      }
+      description
+        "List of multicast sets.";
+    }
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-multicast-gemport-body.yang b/build/yang-files/notification/submodules/bbf-xpon-multicast-gemport-body.yang
new file mode 100644
index 0000000..e5ce9e6
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-multicast-gemport-body.yang
@@ -0,0 +1,158 @@
+submodule bbf-xpon-multicast-gemport-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import ietf-interfaces {
+    prefix if;
+  }
+  import bbf-xpon-if-type {
+    prefix bbf-xponift;
+  }
+  import bbf-yang-types {
+    prefix bbf-yang;
+  }
+  include bbf-xpon-base;
+
+  organization
+    "Broadband Forum <https://www.broadband-forum.org>
+     Fiber Access Networks Work Area";
+  contact
+    "Comments or questions about this Broadband Forum YANG module
+     should be directed to <mailto:help@broadband-forum.org>.
+
+     Editor:      Joey Boyd, ADTRAN
+
+     Editor:      Samuel Chen, Broadcom
+
+     Editor:      Robert Peschi, Nokia
+
+     WA Director: Marta Seda, Calix
+
+     WA Director: Lin Wei, Huawei";
+  description
+    "This submodule contains a collection of YANG definitions for
+     managing multicast GEM ports.
+
+     Copyright (c) 2018, Broadband Forum
+
+     Redistribution and use in source and binary forms, with or
+     without modification, are permitted provided that the following
+     conditions are met:
+
+     1. Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+     2. Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials
+        provided with the distribution.
+
+     3. Neither the name of the copyright holder nor the names of its
+        contributors may be used to endorse or promote products
+        derived from this software without specific prior written
+        permission.
+
+     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.
+
+     The above license is used as a license under copyright only.
+     Please reference the Forum IPR Policy for patent licensing terms
+     <https://www.broadband-forum.org/ipr-policy>.
+
+     Any moral rights which are necessary to exercise under the above
+     license grant are also deemed granted under this license.
+
+     This version of this YANG module is part of TR-385; see
+     the TR itself for full legal notices.";
+
+  revision 2019-02-25 {
+    description
+      "Initial revision.
+       * Approval Date:    2019-02-25.
+       * Publication Date: 2019-02-25.";
+    reference
+      "TR-385: ITU-T PON YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-385.pdf>";
+  }
+
+  typedef multicast-gemport-ref {
+    type leafref {
+      path '/bbf-xpon:xpon/bbf-xpon:multicast-gemports/bbf-xpon:'
+         + 'multicast-gemport/bbf-xpon:name';
+    }
+    description
+      "Points to multicast GEM port.";
+  }
+
+  augment '/bbf-xpon:xpon' {
+    description
+      "Augment system level xPON configuration with multicase GEM
+       port configuration.";
+    container multicast-gemports {
+      description
+        "Multicast GEM ports configuration data.";
+      uses multicast-gemports-config-data;
+    }
+  }
+
+  grouping multicast-gemports-config-data {
+    description
+      "The config data of multicast GEM ports. Multicast GEM ports
+       can be used for multicast or broadcast.";
+    list multicast-gemport {
+      key "name";
+      leaf name {
+        type bbf-yang:string-ascii64;
+        description
+          "The name of the multicast GEM port.";
+      }
+      leaf gemport-id {
+        type uint32;
+        description
+          "The ID of the multicast GEM port.";
+      }
+      leaf interface {
+        type if:interface-ref;
+        must
+          "/if:interfaces/if:interface[if:name=current()]
+           /if:type='bbf-xponift:channel-pair'" {
+          error-message
+            "Must reference a channel pair.";
+        }
+        description
+          "Each channel pair has in general one or several multicast
+           GEM ports.";
+      }
+      leaf traffic-class {
+        type uint8 {
+          range "0..7";
+        }
+        description
+          "Traffic class value.";
+      }
+      leaf is-broadcast {
+        type boolean;
+        default "false";
+        description
+          "If true, this multicast GEM port is used for broadcast
+           traffic.";
+      }
+      description
+        "List of multicast GEM ports.";
+    }
+  }
+}
diff --git a/build/yang-files/notification/submodules/bbf-xpon-wavelength-profile-body.yang b/build/yang-files/notification/submodules/bbf-xpon-wavelength-profile-body.yang
new file mode 100644
index 0000000..14e6b69
--- /dev/null
+++ b/build/yang-files/notification/submodules/bbf-xpon-wavelength-profile-body.yang
@@ -0,0 +1,151 @@
+submodule bbf-xpon-wavelength-profile-body {
+  yang-version 1.1;
+  belongs-to bbf-xpon {
+    prefix bbf-xpon;
+  }
+
+  import bbf-yang-types {
+    prefix bbf-yang;
+  }
+  include bbf-xpon-base;
+
+  organization
+    "Broadband Forum <https://www.broadband-forum.org>
+     Fiber Access Networks Work Area";
+  contact
+    "Comments or questions about this Broadband Forum YANG module
+     should be directed to <mailto:help@broadband-forum.org>.
+
+     Editor:      Joey Boyd, ADTRAN
+
+     Editor:      Samuel Chen, Broadcom
+
+     Editor:      Robert Peschi, Nokia
+
+     WA Director: Marta Seda, Calix
+
+     WA Director: Lin Wei, Huawei";
+  description
+    "This submodule contains a collection of YANG definitions for
+     managing wavelength profiles.
+
+     Copyright (c) 2018, Broadband Forum
+
+     Redistribution and use in source and binary forms, with or
+     without modification, are permitted provided that the following
+     conditions are met:
+
+     1. Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+     2. Redistributions in binary form must reproduce the above
+        copyright notice, this list of conditions and the following
+        disclaimer in the documentation and/or other materials
+        provided with the distribution.
+
+     3. Neither the name of the copyright holder nor the names of its
+        contributors may be used to endorse or promote products
+        derived from this software without specific prior written
+        permission.
+
+     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.
+
+     The above license is used as a license under copyright only.
+     Please reference the Forum IPR Policy for patent licensing terms
+     <https://www.broadband-forum.org/ipr-policy>.
+
+     Any moral rights which are necessary to exercise under the above
+     license grant are also deemed granted under this license.
+
+     This version of this YANG module is part of TR-385; see
+     the TR itself for full legal notices.";
+
+  revision 2019-02-25 {
+    description
+      "Initial revision.
+       * Approval Date:    2019-02-25.
+       * Publication Date: 2019-02-25.";
+    reference
+      "TR-385: ITU-T PON YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-385.pdf>";
+  }
+
+  typedef wavelength-prof-ref {
+    type leafref {
+      path '/bbf-xpon:xpon/bbf-xpon:wavelength-profiles/bbf-xpon:'
+         + 'wavelength-profile/bbf-xpon:name';
+    }
+    description
+      "A reference to a wavelength profile.";
+  }
+
+  augment '/bbf-xpon:xpon' {
+    description
+      "Augment system level xPON configuration with wavelength
+       profile configuration.";
+    container wavelength-profiles {
+      description
+        "Wavelength profile configuration.";
+      uses wavelength-profile-data;
+    }
+  }
+
+  grouping wavelength-profile-data {
+    description
+      "All config data for wavelength profile.";
+    list wavelength-profile {
+      key "name";
+      description
+        "The list of wavelength profiles.";
+      leaf name {
+        type bbf-yang:string-ascii64;
+        description
+          "Wavelength profile name.";
+      }
+      leaf upstream-channel-id {
+        type uint8 {
+          range "0..15";
+        }
+        default "0";
+        description
+          "Upstream channel ID.";
+        reference
+          "ITU-T G.989.3 clause 6.1.5.5.";
+      }
+      leaf downstream-channel-id {
+        type uint8 {
+          range "0..15";
+        }
+        default "0";
+        description
+          "Downstream channel ID.";
+        reference
+          "ITU-T G.989.3 clause 6.1.5.4.";
+      }
+      leaf downstream-wavelength {
+        type uint32 {
+          range "0 | 156000..161000";
+        }
+        units "0.01nm";
+        default "0";
+        description
+          "Downstream wavelength.";
+        reference
+          "ITU-T G.989.2";
+      }
+    }
+  }
+}
