diff --git a/src/Core/ZB.MOM.WW.OtOpcUa.Commons/OpcUa/IOpcUaAddressSpaceSink.cs b/src/Core/ZB.MOM.WW.OtOpcUa.Commons/OpcUa/IOpcUaAddressSpaceSink.cs
index 0f74db9b..87c9cac7 100644
--- a/src/Core/ZB.MOM.WW.OtOpcUa.Commons/OpcUa/IOpcUaAddressSpaceSink.cs
+++ b/src/Core/ZB.MOM.WW.OtOpcUa.Commons/OpcUa/IOpcUaAddressSpaceSink.cs
@@ -85,8 +85,12 @@ public interface IOpcUaAddressSpaceSink
///
void RebuildAddressSpace();
- /// Announce that nodes were added at runtime (discovered-node injection) under
- /// so subscribed clients refresh their browse (Part 3 GeneralModelChangeEvent, verb NodeAdded).
+ ///
+ /// Announce that nodes were added at runtime (discovered-node injection) under
+ /// so subscribed clients refresh their browse
+ /// (Part 3 GeneralModelChangeEvent, verb NodeAdded).
+ ///
+ /// The node under which discovered nodes were added.
void RaiseNodesAddedModelChange(string affectedNodeId);
}
diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer/AddressSpaceApplier.cs b/src/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer/AddressSpaceApplier.cs
index 1dfac048..8c0af790 100644
--- a/src/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer/AddressSpaceApplier.cs
+++ b/src/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer/AddressSpaceApplier.cs
@@ -319,6 +319,7 @@ public sealed class AddressSpaceApplier
IReadOnlyList folders,
IReadOnlyList variables)
{
+ ArgumentException.ThrowIfNullOrEmpty(equipmentRootNodeId);
ArgumentNullException.ThrowIfNull(folders);
ArgumentNullException.ThrowIfNull(variables);
if (folders.Count == 0 && variables.Count == 0) return;
diff --git a/tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests/DeferredAddressSpaceSinkTests.cs b/tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests/DeferredAddressSpaceSinkTests.cs
index 7ebbb2a9..2fedad28 100644
--- a/tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests/DeferredAddressSpaceSinkTests.cs
+++ b/tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests/DeferredAddressSpaceSinkTests.cs
@@ -30,8 +30,9 @@ public sealed class DeferredAddressSpaceSinkTests
deferred.WriteValue("x", 42, OpcUaQuality.Good, DateTime.UtcNow);
deferred.WriteAlarmCondition("a-1", Snapshot(active: true), DateTime.UtcNow);
deferred.RebuildAddressSpace();
+ deferred.RaiseNodesAddedModelChange("eq-1");
- inner.Calls.ShouldBe(new[] { "WV:x", "WA:a-1", "RB" });
+ inner.Calls.ShouldBe(new[] { "WV:x", "WA:a-1", "RB", "NA:eq-1" });
}
/// Verifies that setting sink to null reverts to null sink.