diff --git a/yang-models/_3gpp-common-subscription-control.yang b/yang-models/_3gpp-common-subscription-control.yang index 1bc0b418dc40fe8a2434f1ccc9294a7fea4ba8e4..fcc5451e6b34062ea4277b64a7c4524612c495ba 100755 --- a/yang-models/_3gpp-common-subscription-control.yang +++ b/yang-models/_3gpp-common-subscription-control.yang @@ -5,6 +5,7 @@ module _3gpp-common-subscription-control { import _3gpp-common-top { prefix top3gpp; } import _3gpp-common-yang-extensions { prefix yext3gpp; } + import _3gpp-common-yang-types { prefix types3gpp; } import ietf-yang-types { prefix yang; } organization "3GPP SA5"; @@ -19,6 +20,7 @@ module _3gpp-common-subscription-control { Solution Set (SS) definitions 3GPP TS 28.623"; + 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" ; } @@ -132,6 +134,8 @@ module _3gpp-common-subscription-control { enum notifyFileReady; enum notifyFilePreparationError; enum notifyThresholdCrossing ; + enum notifyPotentialFaultyDataNodeTree; + enum notifyDataNodeTreeSyncRecommended; } type string; } @@ -175,6 +179,32 @@ module _3gpp-common-subscription-control { JSON expressions (Jex) 'JexConditionsExpr'"; reference "3GPP TS 32.161"; } + + leaf lastSequenceNo { + type uint64; + config false; + mandatory true; + description "The sequence number of the last notification that was sent + by a 'NtfSubscriptionControl' instance."; + } + + leaf operationalState { + type types3gpp:OperationalState; + config false; + mandatory true; + description "Operational state of manged object instance. + The operational state describes if an object instance is operable + ('ENABLED') or inoperable ('DISABLED'). + This state is set by the object instance or the MnS producer and + is hence READ-ONLY."; + } + + leaf-list availabilityStatus { + type types3gpp:AvailabilityStatus; + config false; + description "The availability status provides additional information + about the operational state"; + } } grouping HeartbeatControlGrp { @@ -253,19 +283,68 @@ module _3gpp-common-subscription-control { When a MnS consumer does not wish to receive notifications any more the MnS consumer shall delete the corresponding NtfSubscriptionControl instance. - + When a subscription is created and the notification scope inludes the created subscription object and the subscribed notification types include notifications reporting object creation (notifyMOICreation or notifyMOIChanges), the first notification sent related to the new subscription shall report the creation of the NtfSubscriptionControl instance. Likewise, when a subscription is - deleted and the notification scope inludes the deleted subscription + deleted and the notification scope includes the deleted subscription object and the subscribed notification types include notifications reporting object deletion (notifyMOIDeletion or notifyMOIChanges), the last notification sent related to the subscription shall report the deletion of the NtfSubscriptionControl instance. - + + If multiple NtfSubscriptionControl instances are configured to send + the same notification to the same notificationRecipientAddress, then + a separate notification message shall be sent for each such + NtfSubscriptionControl instance. + + A 'NtfSubscriptionControl' class optionally supports adding a sequence + number parameter to the notification header. For each notification + sent from a 'NtfSubscriptionControl' instance to the configured + notification recipient, the sequence number is increased by one. + This allows the notification recipient to detect notifications lost or + reordered in transit. The sequence number sent last is reflected in + the 'lastSequenceNo' attribute. This allows the MnS consumer to check + if he missed notifications in situations where he did not receive + any notification for some time. + + The 'operationalState' attribute represents the operability of the + subscription. The 'availabilityStatus' further qualifies the + opertational state. Both attributes are set by the MnS producer. + + If the 'operationalState' is set to 'ENABLED' and 'availabilityStatus' + has no value the subscription process is fully operational and + notifications are forwarded to the subscribed consumer. + + If the 'operationalState' is set to 'ENABLED' and 'availabilityStatus' + is set to 'DEGRADED' the subscription process is degraded. There is + no guarantee that all notifications, that should be forwarded to the + notification recipient, are forwarded. + + If the 'operationalState' is set to 'DISABLED' and 'availabilityStatus' + is set to 'FAILED' the subscription process is not operational, and + no notifications are sent to the notification recipient. + + If the 'operationalState' is set to 'DISABLED' and 'availabilityStatus' + is set to 'DEPENDENCY' the subscription process itself has no problems + but some other process on which it depends such as downstream + processes in the event channel that feeds events into the subscription + process. As a result, events are not delivered to the subscription + process and no notifications are sent to the notification recipient. + + When the subscription process is disabled or degraded and becomes + fully operational again, the MnS producer sends- the related data node + tree change notifications to subscribed MnS consumers. The MnS consumer + may use the reception of these notifications as a trigger to synchronize + his data node tree with the data node tree on the MnS producer. + However, the state change notifications contain no information about + which part of the data node tree should be synchronized. For this + purpose the 'notifyDataNodeTreeSyncRecommended' (TS 28.532 [27]) and + 'alarmListRebuilt' (TS 28.111 [58]) notifications are provided. + Creation and deletion of NtfSubscriptionControl instances by MnS consumers is optional; when not supported, the NtfSubscriptionControl instances may be created and deleted by the system or be