diff --git a/build/package/Dockerfile.bbf-adapter b/build/package/Dockerfile.bbf-adapter
index 0566d2e..0d8fadc 100644
--- a/build/package/Dockerfile.bbf-adapter
+++ b/build/package/Dockerfile.bbf-adapter
@@ -17,10 +17,7 @@
 #-------------
 # Build stage
 
-FROM --platform=linux/amd64 golang:1.16.3-alpine3.13 AS dev
-
-# Install required packages
-RUN apk add --no-cache build-base=0.5-r2
+FROM voltha/bbf-adapter-builder:local AS dev
 
 # Use Standard go build directory structure
 WORKDIR /go/src
@@ -28,7 +25,7 @@
 
 ARG EXTRA_GO_BUILD_TAGS=""
 
-ARG CGO_PARAMETER=0
+ARG CGO_PARAMETER=1
 
 ARG org_label_schema_version=unknown
 ARG org_label_schema_vcs_url=unknown
@@ -38,7 +35,7 @@
 ARG org_opencord_vcs_dirty=unknown
 
 # Build
-SHELL ["/bin/ash", "-o", "pipefail", "-c"]
+SHELL ["/bin/bash", "-o", "pipefail", "-c"]
 RUN \
       CGO_ENABLED=$CGO_PARAMETER go build $EXTRA_GO_BUILD_TAGS -mod=vendor -o /app/bbf-adapter \
       -ldflags \
@@ -55,7 +52,41 @@
 
 # -------------
 # Image creation stage
-FROM --platform=linux/amd64 gcr.io/distroless/static:nonroot as prod
+FROM ubuntu:hirsute-20220113 AS prod
+
+SHELL ["/bin/bash", "-o", "pipefail", "-c"]
+RUN \
+      apt-get update && \
+      apt-get install -y \
+            wget=1.21-1ubuntu3 ca-certificates=20210119ubuntu0.21.04.1 \
+            libpcre2-8-0=10.36-2ubuntu5 \
+            libcrypt1=1:4.4.17-1ubuntu3 \
+            libssh-4=0.9.5-1ubuntu0.1 \
+            --no-install-recommends && \
+      rm -rf /var/lib/apt/lists/*
+
+# Download and install library packages
+RUN \
+      wget https://github.com/CESNET/libyang/releases/download/v2.0.112/libyang2_2.0.112.1-1_amd64.deb -O libyang2.deb && \
+      wget https://github.com/sysrepo/sysrepo/releases/download/v2.0.53/libsysrepo6_2.0.53.1-1_amd64.deb -O libsysrepo6.deb && \
+      wget https://github.com/sysrepo/sysrepo/releases/download/v2.0.53/sysrepo-tools_2.0.53.1-1_amd64.deb -O sysrepo-tools.deb && \
+      wget https://github.com/CESNET/libnetconf2/releases/download/v2.0.24/libnetconf2-2_2.0.24.1-1_amd64.deb -O libnetconf2-2.deb && \
+      wget https://github.com/CESNET/netopeer2/releases/download/v2.0.35/netopeer2_2.0.35.2-1_amd64.deb -O netopeer2_2.deb
+
+RUN dpkg -i libyang2.deb libsysrepo6.deb sysrepo-tools.deb libnetconf2-2.deb netopeer2_2.deb
+
+RUN rm libyang2.deb libsysrepo6.deb sysrepo-tools.deb libnetconf2-2.deb netopeer2_2.deb
+
+# Copy yang files and install them to sysrepo
+COPY ./build/yang-files /yang
+RUN sysrepoctl -a -i /yang/bbf-device-aggregation.yang -s /yang -p 664 -v3
+
+# Add user for connecting to netopeer2-server through ssh
+ARG NETCONF_USER=voltha
+ARG NETCONF_PASSWORD=onf
+
+RUN useradd -rm -g netconf -u 1001 $NETCONF_USER
+RUN echo $NETCONF_USER:$NETCONF_PASSWORD | chpasswd
 
 # Set the working directory
 WORKDIR /app
@@ -81,4 +112,5 @@
 org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
 org.opencord.vcs-dirty=$org_opencord_vcs_dirty
 
-USER nonroot:nonroot
\ No newline at end of file
+# running netopeer2-server as a standard user is not supported right now
+# https://github.com/sysrepo/sysrepo/issues/2148#issuecomment-695950173
\ No newline at end of file
diff --git a/build/tools/Dockerfile.builder b/build/tools/Dockerfile.builder
new file mode 100644
index 0000000..7e7f710
--- /dev/null
+++ b/build/tools/Dockerfile.builder
@@ -0,0 +1,57 @@
+# Copyright 2022-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Dockerfile with golang and the sysrepo dependencies for voltha-northbound-bff-adapter
+# This image is used for testing, static code analysis and building
+
+FROM --platform=linux/amd64 golang:1.16.3-buster AS dev
+
+RUN mkdir -m 777 /.cache /go/pkg
+
+#Install golangci-lint
+RUN go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.44.2
+
+RUN \
+    apt-get update && apt-get install -y libpcre2-dev=10.32-5 --no-install-recommends && \
+    rm -rf /var/lib/apt/lists/*
+
+# Download and install library packages
+RUN \
+    wget https://github.com/CESNET/libyang/releases/download/v2.0.112/libyang2_2.0.112.1-1_amd64.deb -O libyang2.deb && \
+    wget https://github.com/CESNET/libyang/releases/download/v2.0.112/libyang2-dev_2.0.112.1-1_amd64.deb -O libyang2-dev.deb && \
+    wget https://github.com/sysrepo/sysrepo/releases/download/v2.0.53/libsysrepo6_2.0.53.1-1_amd64.deb -O libsysrepo6.deb && \
+    wget https://github.com/sysrepo/sysrepo/releases/download/v2.0.53/libsysrepo-dev_2.0.53.1-1_amd64.deb -O libsysrepo-dev.deb
+
+RUN dpkg -i libyang2.deb libyang2-dev.deb libsysrepo6.deb libsysrepo-dev.deb
+
+RUN rm libyang2.deb libyang2-dev.deb libsysrepo6.deb libsysrepo-dev.deb
+
+WORKDIR /app
+
+ARG org_label_schema_version=unknown
+ARG org_label_schema_vcs_url=unknown
+ARG org_label_schema_vcs_ref=unknown
+ARG org_label_schema_build_date=unknown
+ARG org_opencord_vcs_commit_date=unknown
+ARG org_opencord_vcs_dirty=unknown
+
+LABEL \
+org.label-schema.schema-version=1.0 \
+org.label-schema.name=voltha-northbound-bbf-adapter \
+org.label-schema.version=$org_label_schema_version \
+org.label-schema.vcs-url=$org_label_schema_vcs_url \
+org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
+org.label-schema.build-date=$org_label_schema_build_date \
+org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
+org.opencord.vcs-dirty=$org_opencord_vcs_dirty
\ No newline at end of file
diff --git a/build/yang-files/bbf-device-aggregation.yang b/build/yang-files/bbf-device-aggregation.yang
new file mode 100644
index 0000000..24a5141
--- /dev/null
+++ b/build/yang-files/bbf-device-aggregation.yang
@@ -0,0 +1,154 @@
+module bbf-device-aggregation {
+  yang-version 1.1;
+  namespace "urn:bbf:yang:bbf-device-aggregation";
+  prefix bbf-dev-agg;
+
+  import bbf-yang-types {
+    prefix bbf-yang;
+  }
+  import bbf-device-types {
+    prefix bbf-dvct;
+  }
+  import ietf-yang-schema-mount {
+    prefix yangmnt;
+  }
+
+  organization
+    "Broadband Forum <https://www.broadband-forum.org>
+     Common YANG Work Area";
+  contact
+    "Comments or questions about this Broadband Forum YANG module
+     should be directed to <mailto:help@broadband-forum.org>.
+
+     Editor:      Nick Hancock, ADTRAN
+
+     Editor:      Ludwig Pauwels, Nokia
+
+     PS Leader:   Joey Boyd, ADTRAN
+
+     WA Director: Joey Boyd, ADTRAN
+
+     WA Director: Sven Ooghe, Nokia";
+  description
+    "This module contains a collection of YANG definitions for
+     supporting the Broadband Forum requirements on device
+     aggregation. As such, this module is specific to access network
+     equipment (e.g., BBF-specified Access Nodes and FTTdp DPUs).
+
+     Copyright (c) 2017-2022, 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-383a5; see
+     the TR itself for full legal notices.";
+
+  revision 2022-03-01 {
+    description
+      "Amendment 5.
+       * Approval Date:    2022-03-01.
+       * Publication Date: 2022-03-01.";
+    reference
+      "TR-383a5: Common YANG Modules
+                 <https://www.broadband-forum.org/technical/download/
+                          TR-383_Amendment-5.pdf>";
+  }
+
+  container devices {
+    description
+      "Aggregation and management of multiple devices.";
+    list device {
+      key "name";
+      description
+        "An aggregated device.";
+      leaf name {
+        type bbf-yang:string-ascii64;
+        description
+          "The unique name of the device.";
+      }
+      leaf type {
+        type identityref {
+          base bbf-dvct:device-type;
+        }
+        mandatory true;
+        description
+          "The type of device.";
+      }
+      container identification {
+        presence
+          "Presence of the container indicates that data nodes that
+           identify the device exist.";
+        description
+          "Data nodes identifying the device instance.";
+        choice identification {
+          mandatory true;
+          description
+            "A choice for different methods to uniquely identify a
+             device instance.";
+          case hardware-inventory-data {
+            leaf mfg-name {
+              type string;
+              description
+                "The name of the manufacturer of the device.";
+            }
+            leaf model-name {
+              type string;
+              description
+                "The vendor-specific model name associated with the
+                 device.";
+            }
+            leaf serial-num {
+              type string;
+              description
+                "The vendor-specific serial number string for the
+                 device.";
+            }
+          }
+        }
+      }
+      container data {
+        description
+          "The data nodes of the device's schema.";
+        yangmnt:mount-point "device-yang-library" {
+          description
+            "The YANG library associated with the device.";
+        }
+      }
+    }
+  }
+}
diff --git a/build/yang-files/bbf-device-types.yang b/build/yang-files/bbf-device-types.yang
new file mode 100644
index 0000000..8448e2f
--- /dev/null
+++ b/build/yang-files/bbf-device-types.yang
@@ -0,0 +1,185 @@
+module bbf-device-types {
+  yang-version 1.1;
+  namespace "urn:bbf:yang:bbf-device-types";
+  prefix bbf-dvct;
+
+  organization
+    "Broadband Forum <https://www.broadband-forum.org>
+     Common YANG Work Area";
+  contact
+    "Comments or questions about this Broadband Forum YANG module
+     should be directed to <mailto:help@broadband-forum.org>.
+
+     Editor:      Nick Hancock, ADTRAN
+
+     Editor:      Ludwig Pauwels, Nokia
+
+     PS Leader:   Joey Boyd, ADTRAN
+
+     PS Leader:   Sowrirajan Padmanabhan, Nokia
+
+     WA Director: Joey Boyd, ADTRAN
+
+     WA Director: Sven Ooghe, Nokia";
+  description
+    "This module contains a collection of YANG definitions for
+     supporting the Broadband Forum requirements on managing physical
+     devices.
+
+     Specifically, this module defines common types associated with
+     device management.
+
+     Copyright (c) 2017-2021, 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-383a4; see
+     the TR itself for full legal notices.";
+
+  revision 2021-06-02 {
+    description
+      "Amendment 4.
+       * Approval Date:    2021-06-02.
+       * Publication Date: 2021-06-02.";
+    reference
+      "TR-383a4: Common YANG Modules
+                 <https://www.broadband-forum.org/technical/download/
+                          TR-383_Amendment-4.pdf>";
+  }
+
+  // Identities
+  // Device types
+
+  identity device-type {
+    description
+      "Base identity from which specific device node types are
+       derived.";
+  }
+
+  identity access-device-type {
+    base device-type;
+    description
+      "Base identity from which specific access device node types are
+       derived.";
+  }
+
+  identity dpu {
+    base access-device-type;
+    description
+      "Distribution Point Unit (DPU).";
+  }
+
+  identity msan {
+    base access-device-type;
+    description
+      "Multiservice Access Node (MSAN).";
+  }
+
+  identity dslam {
+    base access-device-type;
+    description
+      "Digital Subscriber Line Access Multiplexer (DSLAM).";
+  }
+
+  identity olt {
+    base access-device-type;
+    description
+      "Optical Line Terminal (OLT).";
+  }
+
+  identity onu {
+    base access-device-type;
+    description
+      "Optical Network Unit (ONU).";
+  }
+
+  identity fast-cpe {
+    base access-device-type;
+    description
+      "The G.fast CPE. G.fast is a Digital Subscriber Line (DSL)
+       protocol standard.";
+  }
+
+  identity vdsl2-cpe {
+    base access-device-type;
+    description
+      "The Very High-speed Digital Subscriber Line 2 (VDSL2) CPE.";
+  }
+
+  // Device Subcategory
+
+  identity device-subcategory {
+    description
+      "Base identity from which specific subcategories of device types
+       are derived.";
+  }
+
+  identity access-device-subcategory {
+    base device-subcategory;
+    description
+      "Identity from which specific subcategories of access device
+       types are derived.";
+  }
+
+  identity multi-card {
+    base access-device-subcategory;
+    description
+      "The multi card subcategory.
+
+       An access device of this or a derived identity is a device that
+       has the capability to support multiple cards, independent of
+       the actual deployment.";
+  }
+
+  identity single-card {
+    base access-device-subcategory;
+    description
+      "The single card subcategory.
+
+       An access device of this or a derived identity is a device that
+       is a fully self-contained device that does not has the
+       capability to plug or unplug cards.";
+  }
+
+  identity pluggable-transceiver {
+    base access-device-subcategory;
+    description
+      "The pluggable transceiver subcategory.";
+  }
+}
diff --git a/build/yang-files/bbf-yang-types.yang b/build/yang-files/bbf-yang-types.yang
new file mode 100644
index 0000000..efa31d5
--- /dev/null
+++ b/build/yang-files/bbf-yang-types.yang
@@ -0,0 +1,275 @@
+module bbf-yang-types {
+  yang-version 1.1;
+  namespace "urn:bbf:yang:bbf-yang-types";
+  prefix bbf-yang;
+
+  organization
+    "Broadband Forum <https://www.broadband-forum.org>
+     Common YANG Work Area";
+  contact
+    "Comments or questions about this Broadband Forum YANG module
+     should be directed to <mailto:help@broadband-forum.org>.
+
+     Editor:      Nick Hancock, ADTRAN
+
+     Editor:      Ludwig Pauwels, Nokia
+
+     PS Leader:   Joey Boyd, ADTRAN
+
+     WA Director: Joey Boyd, ADTRAN
+
+     WA Director: Sven Ooghe, Nokia";
+  description
+    "This module contains a collection of YANG definitions for
+     supporting the Broadband Forum requirements on reusable data
+     types as applicable to access network equipment. As such, this
+     module is specific to access network equipment (e.g.,
+     BBF-specified Access Nodes and FTTdp DPUs).
+
+     Specifically, this module defines common types used throughout
+     BBF data models.
+
+     Copyright (c) 2017-2022, 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-383a5; see
+     the TR itself for full legal notices.";
+
+  revision 2022-03-01 {
+    description
+      "Amendment 5.
+       * Approval Date:    2022-03-01.
+       * Publication Date: 2022-03-01.";
+    reference
+      "TR-383a5: Common YANG Modules
+                 <https://www.broadband-forum.org/technical/download/
+                          TR-383_Amendment-5.pdf>";
+  }
+  revision 2021-06-02 {
+    description
+      "Amendment 4.
+       * Approval Date:    2021-06-02.
+       * Publication Date: 2021-06-02.";
+    reference
+      "TR-383a4: Common YANG Modules
+                 <https://www.broadband-forum.org/technical/download/
+                          TR-383_Amendment-4.pdf>";
+  }
+  revision 2020-10-13 {
+    description
+      "Amendment 3.
+       * Approval Date:    2020-10-13.
+       * Publication Date: 2020-10-13.";
+    reference
+      "TR-383a3: Common YANG Modules
+                 <https://www.broadband-forum.org/technical/download/
+                          TR-383_Amendment-3.pdf>";
+  }
+  revision 2019-10-21 {
+    description
+      "Amendment 2 Corrigendum 1.
+       * Approval Date:    2019-10-21.
+       * Publication Date: 2019-10-21.";
+    reference
+      "TR-383a2c1: Common YANG Modules
+                 <https://www.broadband-forum.org/technical/download/
+                          TR-383_Amendment-2.pdf>";
+  }
+  revision 2018-07-13 {
+    description
+      "Amendment 1.
+       * Approval Date:    2018-06-04.
+       * Publication Date: see revision date above.";
+    reference
+      "TR-383: Common YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-383_Amendment-1.pdf>";
+  }
+  revision 2017-05-08 {
+    description
+      "Initial revision.
+       * Approval Date:    see revision date above.
+       * Publication Date: 2017-06-02.";
+    reference
+      "TR-383: Common YANG Modules
+               <https://www.broadband-forum.org/technical/download/
+                        TR-383.pdf>";
+  }
+  revision 2016-07-18 {
+    description
+      "Initial revision.
+       * Approval Date:    see revision date above.
+       * Publication Date: 2016-08-05.";
+    reference
+      "TR-355: YANG Modules for FTTdp Management
+               <https://www.broadband-forum.org/technical/download/
+                        TR-355.pdf>";
+  }
+
+  typedef name-string {
+    type string {
+      length "1..64";
+    }
+    description
+      "Used where a string is needed which has a maximum length of
+       64 characters and a minimum length of 1 character.";
+  }
+
+  typedef percent {
+    type uint8 {
+      range "0..100";
+    }
+    units "percentage";
+    description
+      "A percentage.";
+  }
+
+  typedef performance-counter32 {
+    type uint32;
+    description
+      "The 'performance-counter32' type represents a non-negative
+       integer that monotonically increases until it reaches a maximum
+       value of 2^32-1 (4294967295 decimal), but does not wrap around
+       once the maximum value is reached.";
+  }
+
+  typedef performance-counter32-or-inactive {
+    type union {
+      type uint32;
+      type enumeration {
+        enum inactive {
+          description
+            "Indicates that this counter is not active.";
+        }
+      }
+    }
+    description
+      "The 'performance-counter32-or-inactive' type represents a
+       non-negative integer that monotonically increases until it
+       reaches a maximum value of 2^32-1 (4294967295 decimal), but
+       does not wrap around once the maximum value is reached.
+
+       A special value (enum inactive) indicates that this counter
+       is not active.";
+  }
+
+  typedef performance-counter64 {
+    type uint64;
+    description
+      "The 'performance-counter64' type represents a non-negative
+       integer that monotonically increases until it reaches a maximum
+       value of 2^64-1 (18446744073709551615 decimal), but does not
+       wrap around once the maximum value is reached.";
+  }
+
+  typedef string-ascii63-or-empty {
+    type string {
+      length "0..63";
+      pattern '[ -~]*';
+      // allows the 95 printable ASCII characters
+    }
+    description
+      "Used where a string is needed which has a maximum length of
+       63 characters and also allows for a null string (length = 0).
+
+       The character set is limited to the 95 printable ASCII
+       characters.";
+  }
+
+  typedef string-ascii64 {
+    type string {
+      length "1..64";
+      pattern '[ -~]*';
+    }
+    description
+      "Used where a string is represented using at least 1 and no more
+       than 64 ASCII characters.
+
+       The character set is limited to the 95 printable ASCII
+       characters.";
+  }
+
+  typedef string-ascii64-or-empty {
+    type string {
+      length "0..64";
+      pattern '[ -~]*';
+    }
+    description
+      "Used where a string is needed which has a maximum length of
+       64 characters and also allows for a null string (length = 0).
+
+       The character set is limited to the 95 printable ASCII
+       characters.";
+  }
+
+  typedef undetermined {
+    type enumeration {
+      enum undetermined {
+        description
+          "Indicates the value is not determined.";
+      }
+    }
+    description
+      "A type which defines an enumeration representing when
+       the value for an object is not determined. Often, this is
+       combined with other data via a union acting as a special value
+       to indicate the undetermined state.";
+  }
+
+  typedef data-rate32 {
+    type uint32;
+    units "kbits/second";
+    description
+      "A type which represents the rate at which data is being
+       transferred.";
+  }
+
+  typedef data-rate32-or-undetermined {
+    type union {
+      type undetermined;
+      type data-rate32;
+    }
+    units "kbits/second";
+    description
+      "A type which represents the rate at which data is being
+       transferred. A special value, 'undetermined', is used to
+       indicate the data rate is undetermined.";
+  }
+}
