diff --git a/data-model/yang/working/o-ran-sc/template/yes-o1-notify-pnf-registration-additional-fields.yang b/data-model/yang/working/o-ran-sc/template/yes-o1-notify-pnf-registration-additional-fields.yang
new file mode 100644
index 0000000..1777b2c
--- /dev/null
+++ b/data-model/yang/working/o-ran-sc/template/yes-o1-notify-pnf-registration-additional-fields.yang
@@ -0,0 +1,192 @@
+module yes-o1-notify-pnf-registration-additional-fields {
+  yang-version 1.1;
+  namespace "urn:o-ran-sc:params:xml:ns:yang:yes-o1-notify-pnf-registration-additional-fields";
+  prefix ypra;
+
+  import yang-based-event-stream {
+    prefix yes;
+    reference
+      "wiki.opnfv.org/display/ves/VES+goes+YES";
+  }
+  import yes-o1-notify-pnf-registration {
+    prefix ypr;
+    reference
+      "O-RAN Operations and Maintenance Interface Specification (O-RAN.WG10.O1-Interface.0-v07.00)
+       section 2.7.2.4 Operations and Notifications";
+  }
+
+  organization
+    "O-RAN Software Community";
+  contact
+    "www.o-ran-sc.org";
+  description
+    "This module is inspired by VES 7.1.1 but uses YANG concepts and types to
+     describe the exchanged data format.
+     This module augments yes-o1-notify-pnf-registration for vendor specific
+     additional fields.
+
+     Copyright 2022 highstreet technologies GmbH and others.
+
+     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.";
+
+  revision 2022-08-24 {
+    description
+      "Initial version";
+    reference
+      "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+       VES: wiki.opnfv.org/display/ves/VES+Home
+            docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+       YES: wiki.opnfv.org/display/ves/VES+goes+YES
+       O-RAN Operations and Maintenance Interface Specification (O-RAN.WG10.O1-Interface.0-v07.00)
+             section 2.7.2.4 Operations and Notifications";
+  }
+
+  /*
+   * Groupings
+   */
+
+  grouping o1-notify-pnf-registration-additional-fields-grp {
+    // TODO align with ietf-hardware, ONAP AAI, ONF manufactured-thing
+    leaf transport-protocol {
+      type enumeration {
+        enum ssh {
+          description
+            "NETCONF via SSH";
+        }
+        enum tls {
+          description
+            "NETCONF via TLS";
+          reference
+            "RFC7589: Using the NETCONF Protocol over Transport Layer Security (TLS)
+                      with Mutual X.509 Authentication";
+        }
+      }
+      default "ssh";
+      description
+        "Defines the security protocol for NETCONF";
+    }
+    leaf username {
+      type string {
+        length "3..255";
+      }
+      description
+        "The username for the connection.";
+    }
+    choice transport-protocol-details {
+      case ssh {
+        leaf password {
+          type string {
+            length "8..255";
+          }
+          description
+            "The user's password for the SSH session.";
+        }
+        leaf host-key {
+          type string;
+          description
+            "BASE-64 encoded public key which is used by the network-function
+              during the connection.";
+        }
+      }
+      case tls {
+        leaf key-reference {
+          type string;
+          description
+            "Key identifier inside the NETCONF server's keystore.
+              It is used during two-way TLS authentication.";
+          reference
+            "ietf-keystore.yang";
+        }
+      }
+      description
+        "Provides connectivity details for one of the supported transport protocols";
+    }
+    leaf reconnect-on-changed-schema {
+      type boolean;
+      default "false";
+      description
+        "Defines if the NETCONF client should reconnect to the network
+         function, if new YANG capabilities are exposed.";
+    }
+    leaf connection-timeout {
+      type uint32;
+      units "ms";
+      default "20000";
+      description
+        "Defines the NETCONF client timeout to indicate that the connection
+         was lost.";
+    }
+    leaf max-connection-attempts {
+      type uint32;
+      default "0";
+      description
+        "Defines the number of attempts by the NETCONF client to connect
+         to the NETCONF server, before the automated connection function, by
+         the NETCONF client is switched off. The value 0 means 'infinity'.";
+    }
+    leaf between-attempts-timeout {
+      type uint32;
+      units "ms";
+      default "2000";
+      description
+        "Defines the first delay time in milliseconds to try a new reconnect
+         by the NETCONF client. For the next attempts the values is
+         multiplied with the 'sleep-factor'.";
+    }
+    leaf sleep-factor {
+      type decimal64 {
+        fraction-digits 1;
+        range "1.0 .. 10.0";
+      }
+      default "1.5";
+      description
+        "Defines the factor to increase the reconnect attempt.";
+    }
+    leaf keepalive-delay {
+      type uint32;
+      units "s";
+      default "120";
+      description
+        "Defines the time in seconds between two 'empty' NETCONF request to
+         check if the NETCONF server is functional or can be reached. The
+         value 0 turns of such function.";
+    }
+    description
+      "An object class containing o1-notify-pnf-registration additional fields.";
+  }
+
+  /*
+   * Augmentation of o1-notify-pnf-registration
+   */
+
+  augment "/yes:event-history/yes:event/ypr:o1-notify-pnf-registration" {
+    when "derived-from-or-self(/yes:event-history/yes:event/yes:header/yes:domain, 'ypr:o1-notify-pnf-registration')" {
+      description
+        "The event header must indicate 'o1-notify-pnf-registration'.";
+    }
+    if-feature "yes:event-history";
+    uses o1-notify-pnf-registration-additional-fields-grp;
+    description
+      "Adds additional fields to o1-notify-pnf-registration notifications.";
+  }
+
+  augment "/yes:yang-based-event-stream/yes:event/ypr:o1-notify-pnf-registration" {
+    when "derived-from-or-self(/yes:yang-based-event-stream/yes:event/yes:header/yes:domain, 'ypr:o1-notify-pnf-registration')" {
+      description
+        "The event header must indicate 'o1-notify-pnf-registration'.";
+    }
+    uses o1-notify-pnf-registration-additional-fields-grp;
+    description
+      "Adds additional fields to o1-notify-pnf-registration notifications.";
+  }
+}
diff --git a/data-model/yang/working/o-ran-sc/template/yes-o1-notify-pnf-registration.yang b/data-model/yang/working/o-ran-sc/template/yes-o1-notify-pnf-registration.yang
new file mode 100644
index 0000000..9800908
--- /dev/null
+++ b/data-model/yang/working/o-ran-sc/template/yes-o1-notify-pnf-registration.yang
@@ -0,0 +1,307 @@
+module yes-o1-notify-pnf-registration {
+  yang-version 1.1;
+  namespace "urn:o-ran-sc:params:xml:ns:yang:yes-o1-notify-pnf-registration";
+  prefix ypr;
+
+  import yang-based-event-stream {
+    prefix yes;
+    reference
+      "wiki.opnfv.org/display/ves/VES+goes+YES";
+  }
+  import yes-types {
+    prefix yt;
+    reference
+      "wiki.opnfv.org/display/ves/VES+goes+YES";
+  }
+  import ietf-inet-types {
+    prefix inet;
+    reference
+      "RFC 6991: YANG data types for Internet addresses and related
+       things.";
+  }
+  import ietf-yang-types {
+    prefix yang;
+    reference
+      "RFC 6991: Common YANG Data Types.";
+  }
+
+  organization
+    "O-RAN Software Community";
+  contact
+    "www.o-ran-sc.org";
+  description
+    "This module is inspired by VES 7.1.1 but uses YANG concepts and types to
+     describe the exchanged data format.
+     The module yes-o1-notify-pnf-registration is only required, if the
+     network function does not support NETCONF CALL HOME but RESTCONF
+     asynchronous messages.
+
+     Copyright 2022 highstreet technologies GmbH and others.
+
+     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.";
+
+  revision 2022-08-24 {
+    description
+      "Initial version";
+    reference
+      "ONAP SDN-R: wiki.onap.org/display/DW/SDN-R
+       VES: wiki.opnfv.org/display/ves/VES+Home
+            docs.onap.org/en/frankfurt/submodules/dcaegen2.git/docs/sections/services/ves-http
+       YES: wiki.opnfv.org/display/ves/VES+goes+YES
+       O-RAN Operations and Maintenance Interface Specification (O-RAN.WG10.O1-Interface.0-v07.00)
+             section 2.7.2.4 Operations and Notifications";
+  }
+
+  /*
+   * Identities
+   */
+
+  identity o1-notify-pnf-registration {
+    base yt:domain-id;
+    description
+      "Indicates, that the event body contains o1-notify-nf-registration
+       asynchron message context.";
+  }
+
+  /*
+   * Groupings
+   */
+
+  grouping o1-notify-pnf-registration-grp {
+    // TODO align with ietf-hardware, ONAP AAI, ONF manufactured-thing
+    // Parameter Name	S	Information Type	Comment
+    // objectClass	M	ManagedEntity.objectClass 	Class of the managed object, registering for service.
+    leaf object-class {
+      type string {
+        length "3..255";
+      }
+      mandatory true;
+      description
+        "The name of the object class describing a PNF in the context of
+         PNF registration. ";
+    }
+    // objectInstance	M	ManagedEntity.objectInstance
+    // 	Instance of the managed object, registering for service.
+    leaf object-instance {
+      type yt:resource;
+      mandatory true;
+      description
+        "Reference to the object representing the PNF.";
+    }
+    // notificationId	M	NotificationId	Notification identifier as defined in ITU-T Rec. X. 733
+    leaf notification-identifier {
+      type uint64;
+      mandatory true;
+      description
+        "An notification identifier of this event as defined in ITU-T Rec. X.733.";
+      reference
+        "ITU-T Rec. X.733 - section 8.1.2.8.";
+    }
+    // notificationType	M	"o1notifyPnfRegistration"
+    leaf notification-type {
+      type yt:domain-id;
+      mandatory true;
+      description
+        "Only the domain identity 'o1-notify-pnf-registration' is allowed.";
+    }
+    // eventTime	M	DateTime	Time when the NF is sending the registration.
+    leaf event-time {
+      type yang:date-and-time;
+      mandatory true;
+      description
+        "The earliest time aka epoch time associated with the event from
+         any component.";
+    }
+    // systemDN	M	SystemDN	DN of the MnS provider of the notification
+    leaf system-distinguished-name {
+      type string;
+      mandatory true;
+      description
+        "Distinguished Name of the management service provider of the notification";
+    }
+    // o1SpecVersion	M	number	Version of the O1 Specification defining the format of this PNF registration notification
+    leaf o1-specification-version {
+      type string {
+        length "1..5";
+      }
+      mandatory true;
+      description
+        "The version of the O1 Specification defining the format of this PNF registration notification";
+    }
+    // serialNumber	M	string	3GPP TS 28.632 [43] serialNumber = serial number of the unit
+    leaf serial-number {
+      type string {
+        length "3..255";
+      }
+      mandatory true;
+      description
+        "The serial number of the network function.";
+      reference
+        "3GPP TS 28.632 serialNumber";
+    }
+    // vendorName	M	string	3GPP TS 28.632 [43] vendorName = name of the NF vendor.
+    choice vendor {
+      case vendor-private-enterprise-number {
+        leaf vendor-pen {
+          type uint32;
+          description
+            "Network function vendor IANA private enterprise number.";
+        }
+      }
+      case name {
+        leaf vendor-name {
+          type string;
+          description
+            "Network function vendor name according to IANA Private Enterprise Numbers";
+        }
+      }
+      description
+        "The network function vendor can be identified by its name or by its
+         IANA private enterprise number (PEN)";
+      reference
+        "IANA Private Enterprise Numbers
+          http://www.iana.org/assignments/enterprise-numbers/enterprise-numbers";
+      // leaf vendor-name {
+      //   type string {
+      //       length "1..255";
+      //   }
+      //   mandatory true;
+      //   description
+      //     "The company name of manufacturer.";
+      //   reference
+      //     "3GPP TS 28.632 vendorName";
+    }
+    // oamV4IpAddress	CM	string	IPv4 m-plane IP address to be used by the manager to contact the NF.
+    // oamV6IpAddress	CM	string	IPv6 m-plane IP address to be used by the manager to contact the NF.
+    leaf oam-host {
+      type inet:host;
+      mandatory true;
+      description
+        "The m-plane fully qualified domain name (host) or IP address to
+         be used by the manager to contact the PNF.";
+      reference
+        "O-RAN Operations and Maintenance Interface Specification (O-RAN.WG10.O1-Interface.0-v07.00)
+           section 2.7.2.4 Operations and Notifications - oamV4IpAddress and oamV6IpAddress";
+    }
+    leaf oam-port {
+      type inet:port-number;
+      default "830";
+      description
+        "The port number the PNF listens for OAM commands..";
+    }
+    // macAddress	O	string	MAC address of the OAM of the unit
+    leaf mac-address {
+      type yang:mac-address;
+      description
+        "The MAC address of OAM interface of the network function.";
+    }
+    // unitFamily	O	string	3GPP TS 28.632 [43] vendorUnitFamilyType = general type of HW unit
+    leaf unit-family {
+      type string {
+        length "1..255";
+      }
+      description
+        "The general type of hardware.";
+      reference
+        "3GPP TS 28.632 vendorUnitFamilyType";
+    }
+    // unitType	O	string	3GPP TS 28.632 [43] vendorUnitTypeNumber = vendor name for the unit
+    leaf unit-type {
+      type string {
+        length "1..255";
+      }
+      description
+        "Vendor name for the network function";
+      reference
+        "3GPP TS 28.632 vendorUnitTypeNumber";
+    }
+    // modelNumber	O	string	3GPP TS 28.632 [43] versionNumber = version of the unit from the vendor
+    leaf model-number {
+      type string {
+        length "1..255";
+      }
+      description
+        "Version of the network function from the vendor.";
+      reference
+        "3GPP TS 28.632 versionNumber";
+    }
+    // softwareVersion	O	string	3GPP TS 28.632 [43] swName = software release name.  This is the software provided by the vendor at onboarding to be run on this version of the NF and can contain multiple underlying software images.
+    leaf software-version {
+      type string {
+        length "1..255";
+      }
+      description
+        "The active software version running on the network function.";
+      reference
+        "3GPP TS 28.632 swName";
+    }
+    // restartReason	O	string	Reason the NF restarted, if known
+    leaf restart-reason {
+      type string {
+        length "1..255";
+      }
+      description
+        "The reason the network function restarted.";
+    }
+    // manufactureDate	O	string	3GPP TS 28.632 [43] dateOfManufacture = manufacture date of the unit in ISO 8601 format; e.g.,2016-04-23
+    leaf manufacture-date {
+      type yang:date-and-time;
+      description
+        "Manufacture date of the network function.";
+    }
+    // lastServiceDate	O	string	3GPP TS 28.632 [43] dateOfLastService = date of last service in ISO 8601 format; e.g., 2017-02-15
+    leaf last-service-date {
+      type yang:date-and-time;
+      description
+        "Date when the field operation stuff way on-side.";
+    }
+    // additionalFields	O	hashMap	Additional registration fields if needed, provided as key-value pairs.
+    description
+      "An object class containing o1-notify-pnf-registration specific parameters.";
+  }
+
+  /*
+   * Augmentation of YES
+   */
+
+  augment "/yes:event-history/yes:event" {
+    when "derived-from-or-self(/yes:event-history/yes:event/yes:header/yes:domain, 'ypr:o1-notify-pnf-registration')" {
+      description
+        "The event header must indicate 'o1-notify-pnf-registration'.";
+    }
+    if-feature "yes:event-history";
+    container o1-notify-pnf-registration {
+      uses o1-notify-pnf-registration-grp;
+      description
+        "A single object for specific parameters, used for the registration of
+         physical network functions (PNF).";
+    }
+    description
+      "Adds to YES the specifics of o1-notify-pnf-registration notifications.";
+  }
+
+  augment "/yes:yang-based-event-stream/yes:event" {
+    when "derived-from-or-self(/yes:yang-based-event-stream/yes:event/yes:header/yes:domain, 'ypr:o1-notify-pnf-registration')" {
+      description
+        "The event header must indicate 'o1-notify-pnf-registration'.";
+    }
+    container o1-notify-pnf-registration {
+      uses o1-notify-pnf-registration-grp;
+      description
+        "A single object for specific parameters, used for the registration of
+         physical network functions (PNF).";
+    }
+    description
+      "Adds to YES the specifics of o1-notify-pnf-registration notifications.";
+  }
+}
