From 7c0a4dc27fcd731e69ff8025dfd95816897e6663 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Thu, 14 Aug 2025 23:33:46 +0200 Subject: [PATCH 1/2] Add notificationlog CR0561 --- yang-models/_3gpp-common-managed-element.yang | 9 + yang-models/_3gpp-common-subnetwork.yang | 30 ++- .../_3gpp-common-subscription-control.yang | 176 +++++++++++++++++- 3 files changed, 194 insertions(+), 21 deletions(-) diff --git a/yang-models/_3gpp-common-managed-element.yang b/yang-models/_3gpp-common-managed-element.yang index 70e53be99..e410166e8 100755 --- a/yang-models/_3gpp-common-managed-element.yang +++ b/yang-models/_3gpp-common-managed-element.yang @@ -37,6 +37,7 @@ module _3gpp-common-managed-element { 3GPP TS 28.620 Umbrella Information Model (UIM)"; + revision 2025-08-13 { reference CR-0561; } revision 2025-04-25 { reference "CR-0532 CR0541" ; } revision 2025-03-25 { reference "CR-0516"; } revision 2024-10-01 { reference "CR-0437,CR-0438" ; } @@ -88,6 +89,10 @@ module _3gpp-common-managed-element { ManagedElement"; } + feature NotificationLogUnderManagedElement { + description "The NotificationLog shall be contained under ManagedElement"; + } + feature FmUnderManagedElement { description "The FmSubtree shall be contained under ManagedElement"; } @@ -305,6 +310,10 @@ module _3gpp-common-managed-element { if-feature SupportedNotificationsUnderManagedElement; } + uses subscr3gpp:NotificationLogSubtree { + if-feature NotificationLogUnderManagedElement; + } + uses fm3gpp:FmSubtree { if-feature FmUnderManagedElement; } diff --git a/yang-models/_3gpp-common-subnetwork.yang b/yang-models/_3gpp-common-subnetwork.yang index c94f40638..a904c9c38 100755 --- a/yang-models/_3gpp-common-subnetwork.yang +++ b/yang-models/_3gpp-common-subnetwork.yang @@ -37,6 +37,7 @@ module _3gpp-common-subnetwork { 3GPP TS 28.620 Umbrella Information Model (UIM)"; + revision 2025-08-13 { reference CR-0561; } revision 2025-04-25 { reference "CR-0532 CR0541" ; } revision 2025-03-25 { reference "CR-0516 CR-0527"; } revision 2024-11-19 { reference "Add STM"; } @@ -51,23 +52,10 @@ module _3gpp-common-subnetwork { revision 2021-01-16 { reference "CR-0120"; } revision 2020-08-06 { reference "CR-0102"; } revision 2020-06-08 { reference "CR-0092"; } - revision 2020-05-08 { - reference "S5-203316"; - } - - - revision 2020-03-11 { - description "Added KPIs and corrections"; - reference "S5-201365, S5-201581, SP-200229"; - } - - revision 2020-02-24 { - reference "S5-201365"; - } - - revision 2019-06-17 { - reference "Initial revision"; - } + revision 2020-05-08 { reference "S5-203316"; } + revision 2020-03-11 { reference "S5-201365, S5-201581, SP-200229"; } + revision 2020-02-24 { reference "S5-201365"; } + revision 2019-06-17 { reference "Initial revision"; } feature ECMappingRuleUnderSubNetwork { description "ECMappingRule shall be contained under SubNetwork."; @@ -107,6 +95,10 @@ module _3gpp-common-subnetwork { SubNetwork"; } + feature NotificationLogUnderSubNetwork { + description "The NotificationLog shall be contained under SubNetwork"; + } + feature FmUnderSubNetwork { description "The FmSubtree shall be contained under SubNetwork"; } @@ -244,6 +236,10 @@ module _3gpp-common-subnetwork { if-feature SupportedNotificationsUnderSubNetwork; } + uses subscr3gpp:NotificationLogSubtree { + if-feature NotificationLogUnderSubNetwork; + } + uses fm3gpp:FmSubtree { if-feature FmUnderSubNetwork; } diff --git a/yang-models/_3gpp-common-subscription-control.yang b/yang-models/_3gpp-common-subscription-control.yang index fcc5451e6..596a5e05a 100755 --- a/yang-models/_3gpp-common-subscription-control.yang +++ b/yang-models/_3gpp-common-subscription-control.yang @@ -20,17 +20,181 @@ module _3gpp-common-subscription-control { Solution Set (SS) definitions 3GPP TS 28.623"; - revision 2025-05-13 { reference "CR-0548" ; } + revision 2025-08-13 { reference CR-0561; } + revision 2025-05-13 { reference "CR-0548"; } revision 2025-03-24 { reference "CR-0516 0518" ; } - revision 2024-05-18 { reference CR-0359 ; } - revision 2024-01-18 { reference "CR-0309 CR-0329" ; } - revision 2023-09-18 { reference CR-0271 ; } + revision 2024-05-18 { reference CR-0359; } + revision 2024-01-18 { reference "CR-0309 CR-0329"; } + revision 2023-09-18 { reference CR-0271; } revision 2023-08-10 { reference "CR0257 CR0260"; } revision 2022-10-20 { reference CR-0196; } revision 2021-01-16 { reference "CR-0120"; } revision 2020-08-26 { reference "CR-0106"; } revision 2019-11-29 { reference "S5-197648 S5-197647 S5-197829 S5-197828"; } + feature NotificationLogUnderNtfSubscriptionControl { + description "The NotificationLog shall be contained under + NtfSubscriptionControl"; + } + + grouping LogRecordGrp { + description "LogRecord datatype"; + + leaf logRecordId { + type string; + yext3gpp:inVariant; + description "Identifier of an individual logRecord; unique within a + NotificationLog IOC. + + - If the NotificationLog is contained under an NtfSubscriptionControl + the value is the same as the sequenceNo. + - If the NotificationLog is contained under SubNetwork or ManagedElement + the value is the sequenceNo followed by a single space and the + DN of the NtfSubscriptionControl that created the notification."; + } + + leaf sequenceNo { + type string; + yext3gpp:inVariant; + description "Sequence number from the header of the notification."; + } + + leaf eventTime { + type yang:date-and-time; + yext3gpp:inVariant; + description "eventTime from the header of the notification"; + } + + leaf logContent { + type string; + yext3gpp:inVariant; + description "The string representation of a notification as encoded in + the HTTP body (excluding the HTTP headers and the optional VES header)."; + } + } + + grouping NotificationLogGrp { + description "Attributes of NotificationLog IOC."; + + leaf firstEventTime { + type yang:date-and-time; + config false; + yext3gpp:notNotifyable; + description "eventTime of first notification in the log. + The attribute may be missing if and only if there are no notifications + in the NotificationLog."; + } + + leaf lastEventTime { + type yang:date-and-time; + config false; + yext3gpp:notNotifyable; + description "eventTime of latest notification in the log. + The attribute may be missing if and only if there are no notifications + in the NotificationLog."; + } + + leaf logCurrentSize { + type uint64; + config false; + mandatory true; + yext3gpp:notNotifyable; + description "The number of notifications in the NotificationLog."; + } + + leaf logMaxSize { + type uint64; + config false; + description "The maximum possible number of notifications in the + NotificationLog, if it is known."; + } + + list logRecords { + yext3gpp:notNotifyable; + description "Records of the individual notifications. The records shall + be ordered based on eventTime of the record, newest first."; + config false; + key logRecordId; + uses LogRecordGrp; + } + + leaf-list notificationTypes { + type NotificationTypes; + description "List of notification types."; + } + + leaf notificationFilter { + type string; + description "Filter to be applied to candidate notifications identified + by the notificationTypes attribute. Only notifications that pass the + filter criteria are logged. All other notifications are discarded. + The filter can be applied to any field of a notification. + + The format of the string shall confrm to a + JSON expressions (Jex) 'JexConditionsExpr'"; + reference "3GPP TS 32.161"; + } + } + + grouping NotificationLogSubtree { + description "Contains the NotificationLog IOC"; + + list NotificationLog { + description "Notification Log. + + A NotificationLog MOI may be contained under the root ManagedElement or + SubNetwork or under an NtfSubscriptionControl MOI. + + If the NotificationLog MOI is contained under a ManagedElement or + SubNetwork the log contains all notifications for all objectInstances + under that ManagedElement or SubNetwork. The producer may limit the log + to notifications for which at least one subscription is present. As the + NotificationLog contains all data from notifications, potentially all + NRM data, access control for the logs needs to be strict, to avoid + unintentionally disclosing confidential data. + + If the MOI is contained under an NtfSubscriptionControl MOI it contains + notifications for that subscription. The producer may limit the number + of contained NotificationLog MOIs under an NtfSubscriptionControl MOI to + one. + + A NotificationLog may contain a subset of all applicable notifications. + If the NotificationLog is contained under the ManagedElement or SubNetwork + the attributes notificationTypes and notificationFilter may be used to + select the notifications to be logged. If the MOI is contained under an + NtfSubscriptionControl MOI the attributes notificationTypes and + notificationFilter in the NotificationLog are not be available for read + or write, as the similar attributes in the NtfSubscriptionControl MOI + already select the notifications to be logged. + + The notificationTypes value identifies the notification types that are + candidates to be logged. If the attribute is absent, notifications of + all types are candidates to be logged. + + The notificationFilter attribute defines a filter that is applied to + the set of candidate notifications. The filter is applicable to all + parameters of a notification. Only candidate notifications that pass + the filter criteria are logged. If the attribute is absent, all candidates + notifications shall be logged. + + Only notifications that were prepared are part of the log. If the producer + failed to prepare a subscribed notification it will not be present in + the log either. + + The log has a limited size, so old notifications may be removed from the + log by the producer. + + The creation of the NotificationLog MOI enables notification logging. + Each NotificationLog MOI will result in a separate log being created."; + + key id; + uses top3gpp:Top_Grp; + container attributes { + uses NotificationLogGrp; + } + } + } + grouping ScopeGrp { description "This <> allows to select data nodes in an object tree whose root is identified by the so called base managed object @@ -404,6 +568,10 @@ module _3gpp-common-subscription-control { uses HeartbeatControlGrp; } } + + uses NotificationLogSubtree { + if-feature NotificationLogUnderNtfSubscriptionControl; + } } } -- GitLab From e0d6f27a83ca66fcb3a1d933665197feecf3f4e2 Mon Sep 17 00:00:00 2001 From: "U-ERICSSON\\ETHBLL" Date: Wed, 27 Aug 2025 23:46:41 +0200 Subject: [PATCH 2/2] NotificationLog -> NotificationList --- yang-models/_3gpp-common-managed-element.yang | 8 +- yang-models/_3gpp-common-subnetwork.yang | 8 +- .../_3gpp-common-subscription-control.yang | 185 ++++++++---------- 3 files changed, 92 insertions(+), 109 deletions(-) diff --git a/yang-models/_3gpp-common-managed-element.yang b/yang-models/_3gpp-common-managed-element.yang index e410166e8..713c1a2de 100755 --- a/yang-models/_3gpp-common-managed-element.yang +++ b/yang-models/_3gpp-common-managed-element.yang @@ -89,8 +89,8 @@ module _3gpp-common-managed-element { ManagedElement"; } - feature NotificationLogUnderManagedElement { - description "The NotificationLog shall be contained under ManagedElement"; + feature NotificationListUnderManagedElement { + description "The NotificationList shall be contained under ManagedElement"; } feature FmUnderManagedElement { @@ -310,8 +310,8 @@ module _3gpp-common-managed-element { if-feature SupportedNotificationsUnderManagedElement; } - uses subscr3gpp:NotificationLogSubtree { - if-feature NotificationLogUnderManagedElement; + uses subscr3gpp:NotificationListSubtree { + if-feature NotificationListUnderManagedElement; } uses fm3gpp:FmSubtree { diff --git a/yang-models/_3gpp-common-subnetwork.yang b/yang-models/_3gpp-common-subnetwork.yang index a904c9c38..61af0f512 100755 --- a/yang-models/_3gpp-common-subnetwork.yang +++ b/yang-models/_3gpp-common-subnetwork.yang @@ -95,8 +95,8 @@ module _3gpp-common-subnetwork { SubNetwork"; } - feature NotificationLogUnderSubNetwork { - description "The NotificationLog shall be contained under SubNetwork"; + feature NotificationListUnderSubNetwork { + description "The NotificationList shall be contained under SubNetwork"; } feature FmUnderSubNetwork { @@ -236,8 +236,8 @@ module _3gpp-common-subnetwork { if-feature SupportedNotificationsUnderSubNetwork; } - uses subscr3gpp:NotificationLogSubtree { - if-feature NotificationLogUnderSubNetwork; + uses subscr3gpp:NotificationListSubtree { + if-feature NotificationListUnderSubNetwork; } uses fm3gpp:FmSubtree { diff --git a/yang-models/_3gpp-common-subscription-control.yang b/yang-models/_3gpp-common-subscription-control.yang index 596a5e05a..9b323a948 100755 --- a/yang-models/_3gpp-common-subscription-control.yang +++ b/yang-models/_3gpp-common-subscription-control.yang @@ -11,7 +11,8 @@ module _3gpp-common-subscription-control { organization "3GPP SA5"; contact "https://www.3gpp.org/DynaReport/TSG-WG--S5--officials.htm?Itemid=464"; - description "Defines IOCs for subscription and heartbeat control. + description "Defines IOCs for subscription, notification list and heartbeat + control. Copyright 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved."; reference "3GPP TS 28.623 @@ -32,31 +33,28 @@ module _3gpp-common-subscription-control { revision 2020-08-26 { reference "CR-0106"; } revision 2019-11-29 { reference "S5-197648 S5-197647 S5-197829 S5-197828"; } - feature NotificationLogUnderNtfSubscriptionControl { - description "The NotificationLog shall be contained under + feature NotificationListUnderNtfSubscriptionControl { + description "The NotificationList shall be contained under NtfSubscriptionControl"; } - grouping LogRecordGrp { - description "LogRecord datatype"; + grouping NotificationEntryGrp { + description "NotificationEntry datatype"; - leaf logRecordId { + leaf notificationEntryId { type string; yext3gpp:inVariant; - description "Identifier of an individual logRecord; unique within a - NotificationLog IOC. - - - If the NotificationLog is contained under an NtfSubscriptionControl - the value is the same as the sequenceNo. - - If the NotificationLog is contained under SubNetwork or ManagedElement - the value is the sequenceNo followed by a single space and the - DN of the NtfSubscriptionControl that created the notification."; - } - - leaf sequenceNo { - type string; - yext3gpp:inVariant; - description "Sequence number from the header of the notification."; + description "Identifier of an individual notificationEntry; unique within + a NotificationList MOI. + + allowedValues: + - If the NotificationList is contained under an NtfSubscriptionControl + the value is the same as the notification's sequenceNo. + - If the NotificationList is contained under SubNetwork or + ManagedElement the value is the DN of the NtfSubscriptionControl that + created the notification followed by a single '*' asterisk character + and the sequenceNo. + e.g. 'ManagedElement=me1,NtfSubscriptionControl=Fault1*12345'"; } leaf eventTime { @@ -65,7 +63,7 @@ module _3gpp-common-subscription-control { description "eventTime from the header of the notification"; } - leaf logContent { + leaf notificationContent { type string; yext3gpp:inVariant; description "The string representation of a notification as encoded in @@ -73,49 +71,35 @@ module _3gpp-common-subscription-control { } } - grouping NotificationLogGrp { - description "Attributes of NotificationLog IOC."; + grouping NotificationListGrp { + description "Attributes of NotificationList IOC."; leaf firstEventTime { type yang:date-and-time; config false; yext3gpp:notNotifyable; - description "eventTime of first notification in the log. + description "eventTime of first notification available. The attribute may be missing if and only if there are no notifications - in the NotificationLog."; + in the NotificationList."; } leaf lastEventTime { type yang:date-and-time; config false; yext3gpp:notNotifyable; - description "eventTime of latest notification in the log. + description "eventTime of latest notification available. The attribute may be missing if and only if there are no notifications - in the NotificationLog."; + in the NotificationList."; } - leaf logCurrentSize { - type uint64; - config false; - mandatory true; + list notificationEntries { yext3gpp:notNotifyable; - description "The number of notifications in the NotificationLog."; - } - - leaf logMaxSize { - type uint64; + description "Representation of the individual notifications. + The entries shall be ordered based on eventTime of the notification, + newest first."; config false; - description "The maximum possible number of notifications in the - NotificationLog, if it is known."; - } - - list logRecords { - yext3gpp:notNotifyable; - description "Records of the individual notifications. The records shall - be ordered based on eventTime of the record, newest first."; - config false; - key logRecordId; - uses LogRecordGrp; + key notificationEntryId; + uses NotificationEntryGrp; } leaf-list notificationTypes { @@ -127,7 +111,7 @@ module _3gpp-common-subscription-control { type string; description "Filter to be applied to candidate notifications identified by the notificationTypes attribute. Only notifications that pass the - filter criteria are logged. All other notifications are discarded. + filter criteria are included. All other notifications are discarded. The filter can be applied to any field of a notification. The format of the string shall confrm to a @@ -136,61 +120,60 @@ module _3gpp-common-subscription-control { } } - grouping NotificationLogSubtree { - description "Contains the NotificationLog IOC"; - - list NotificationLog { - description "Notification Log. - - A NotificationLog MOI may be contained under the root ManagedElement or - SubNetwork or under an NtfSubscriptionControl MOI. - - If the NotificationLog MOI is contained under a ManagedElement or - SubNetwork the log contains all notifications for all objectInstances - under that ManagedElement or SubNetwork. The producer may limit the log - to notifications for which at least one subscription is present. As the - NotificationLog contains all data from notifications, potentially all - NRM data, access control for the logs needs to be strict, to avoid - unintentionally disclosing confidential data. - - If the MOI is contained under an NtfSubscriptionControl MOI it contains - notifications for that subscription. The producer may limit the number - of contained NotificationLog MOIs under an NtfSubscriptionControl MOI to - one. - - A NotificationLog may contain a subset of all applicable notifications. - If the NotificationLog is contained under the ManagedElement or SubNetwork - the attributes notificationTypes and notificationFilter may be used to - select the notifications to be logged. If the MOI is contained under an - NtfSubscriptionControl MOI the attributes notificationTypes and - notificationFilter in the NotificationLog are not be available for read - or write, as the similar attributes in the NtfSubscriptionControl MOI - already select the notifications to be logged. - - The notificationTypes value identifies the notification types that are - candidates to be logged. If the attribute is absent, notifications of - all types are candidates to be logged. - - The notificationFilter attribute defines a filter that is applied to - the set of candidate notifications. The filter is applicable to all - parameters of a notification. Only candidate notifications that pass - the filter criteria are logged. If the attribute is absent, all candidates - notifications shall be logged. - - Only notifications that were prepared are part of the log. If the producer - failed to prepare a subscribed notification it will not be present in - the log either. - - The log has a limited size, so old notifications may be removed from the - log by the producer. - - The creation of the NotificationLog MOI enables notification logging. - Each NotificationLog MOI will result in a separate log being created."; + grouping NotificationListSubtree { + description "Contains the NotificationList IOC"; + + list NotificationList { + description "The NotificationList IOC provides an interface for the + consumer that allows retrieval of notifications that have not been + successfully delivered to the consumer. + + A NotificationList MOI may be contained under the root ManagedElement + or SubNetwork or under an NtfSubscriptionControl MOI. + + If the NotificationList MOI is contained under a ManagedElement or + SubNetwork the MOI make available all notifications for all + objectInstances under that ManagedElement or SubNetwork. + The producer may limit the notification set to notifications for which + at least one subscription is present. + + If the MOI is contained under an NtfSubscriptionControl MOI it makes + available notifications for that subscription. The producer may limit + the number of NotificationList MOIs under an NtfSubscriptionControl + MOI to one. + + A NotificationList may provide a subset of all applicable notifications. + If the NotificationList MOI is contained under the ManagedElement + or SubNetwork the attributes notificationTypes and notificationFilter + may be used to select the notifications to be included. If the MOI is + contained under an NtfSubscriptionControl MOI the attributes + notificationTypes and notificationFilter in the NotificationList + are not be available for read or write, as the similar attributes + in the NtfSubscriptionControl MOI already select the notifications to + be included. + + The notificationTypes value identifies the notification types that + are candidates to be provided. If the attribute is absent, notifications + of all types are candidates to be provided. + + The notificationFilter attribute defines a filter that is applied to + the set of candidate notifications. The filter is applicable to all + parameters of a notification. Only candidate notifications that pass + the filter criteria are made available. If the attribute is absent, + all candidate notifications shall be made available. + + Only notifications that were prepared are included. If the producer + failed to prepare a subscribed notification it will not be available + in this MOI either. + + The number of notifications avaialble has a limit, so old + notifications may be removed from NotificationList by the producer, + while also updating the.firstEventTime atttribute."; key id; uses top3gpp:Top_Grp; container attributes { - uses NotificationLogGrp; + uses NotificationListGrp; } } } @@ -569,8 +552,8 @@ module _3gpp-common-subscription-control { } } - uses NotificationLogSubtree { - if-feature NotificationLogUnderNtfSubscriptionControl; + uses NotificationListSubtree { + if-feature NotificationListUnderNtfSubscriptionControl; } } } -- GitLab