diff --git a/doc/19-technical-concepts.md b/doc/19-technical-concepts.md
index a1ea82c79..b9be82240 100644
--- a/doc/19-technical-concepts.md
+++ b/doc/19-technical-concepts.md
@@ -1434,7 +1434,7 @@ Message updates will be dropped when:
* Checkable does not exist.
* Origin endpoint's zone is not allowed to access this checkable.
-#### event::SuppressedNotifications
+#### event::SetSuppressedNotifications
> Location: `clusterevents.cpp`
@@ -1443,7 +1443,7 @@ Message updates will be dropped when:
Key | Value
----------|---------
jsonrpc | 2.0
-method | event::SuppressedNotifications
+method | event::SetSuppressedNotifications
params | Dictionary
##### Params
@@ -1459,6 +1459,8 @@ supressed\_notifications | Number | Bitmask for suppressed notifications.
Event Sender: `Checkable::OnSuppressedNotificationsChanged`
Event Receiver: `SuppressedNotificationsChangedAPIHandler`
+Used to sync the notification state of a host or service object within the same HA zone.
+
##### Permissions
The receiver will not process messages from not configured endpoints.
@@ -1466,7 +1468,7 @@ The receiver will not process messages from not configured endpoints.
Message updates will be dropped when:
* Checkable does not exist.
-* Origin endpoint's zone is not allowed to access this checkable.
+* Origin endpoint is not within the local zone.
#### event::SetSuppressedNotificationTypes
@@ -1487,6 +1489,8 @@ Key | Type | Description
notification | String | Notification name
supressed\_notifications | Number | Bitmask for suppressed notifications.
+Used to sync the state of a notification object within the same HA zone.
+
##### Functions
Event Sender: `Notification::OnSuppressedNotificationsChanged`
@@ -1499,7 +1503,7 @@ The receiver will not process messages from not configured endpoints.
Message updates will be dropped when:
* Notification does not exist.
-* Origin endpoint's zone is not allowed to access this notification.
+* Origin endpoint is not within the local zone.
#### event::SetNextNotification
@@ -1705,6 +1709,9 @@ text | String | Notification text
Event Sender: `Checkable::OnNotificationsRequested`
Event Receiver: `SendNotificationsAPIHandler`
+Signals that notifications have to be sent within the same HA zone. This is relevant if the checkable and its
+notifications are active on different endpoints.
+
##### Permissions
The receiver will not process messages from not configured endpoints.
@@ -1712,7 +1719,7 @@ The receiver will not process messages from not configured endpoints.
Message updates will be dropped when:
* Checkable does not exist.
-* Origin endpoint's zone the same as the receiver. This binds notification messages to the HA zone.
+* Origin endpoint is not within the local zone.
#### event::NotificationSentUser
diff --git a/lib/icinga/clusterevents.cpp b/lib/icinga/clusterevents.cpp
index e8f9bde2a..4db3d76bf 100644
--- a/lib/icinga/clusterevents.cpp
+++ b/lib/icinga/clusterevents.cpp
@@ -324,7 +324,7 @@ void ClusterEvents::SuppressedNotificationsChangedHandler(const Checkable::Ptr&
message->Set("method", "event::SetSuppressedNotifications");
message->Set("params", params);
- listener->RelayMessage(origin, checkable, message, true);
+ listener->RelayMessage(origin, nullptr, message, true);
}
Value ClusterEvents::SuppressedNotificationsChangedAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params)
@@ -352,7 +352,7 @@ Value ClusterEvents::SuppressedNotificationsChangedAPIHandler(const MessageOrigi
if (!checkable)
return Empty;
- if (origin->FromZone && !origin->FromZone->CanAccessObject(checkable)) {
+ if (origin->FromZone && origin->FromZone != Zone::GetLocalZone()) {
Log(LogNotice, "ClusterEvents")
<< "Discarding 'suppressed notifications changed' message for checkable '" << checkable->GetName()
<< "' from '" << origin->FromClient->GetIdentity() << "': Unauthorized access.";
@@ -380,7 +380,7 @@ void ClusterEvents::SuppressedNotificationTypesChangedHandler(const Notification
message->Set("method", "event::SetSuppressedNotificationTypes");
message->Set("params", params);
- listener->RelayMessage(origin, notification, message, true);
+ listener->RelayMessage(origin, nullptr, message, true);
}
Value ClusterEvents::SuppressedNotificationTypesChangedAPIHandler(const MessageOrigin::Ptr& origin, const Dictionary::Ptr& params)
@@ -398,7 +398,7 @@ Value ClusterEvents::SuppressedNotificationTypesChangedAPIHandler(const MessageO
if (!notification)
return Empty;
- if (origin->FromZone && !origin->FromZone->CanAccessObject(notification)) {
+ if (origin->FromZone && origin->FromZone != Zone::GetLocalZone()) {
Log(LogNotice, "ClusterEvents")
<< "Discarding 'suppressed notification types changed' message for notification '" << notification->GetName()
<< "' from '" << origin->FromClient->GetIdentity() << "': Unauthorized access.";