diff --git a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Uns/UnsTreeService.cs b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Uns/UnsTreeService.cs
index 47278b61..1a819f1d 100644
--- a/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Uns/UnsTreeService.cs
+++ b/src/Server/ZB.MOM.WW.OtOpcUa.AdminUI/Uns/UnsTreeService.cs
@@ -999,7 +999,12 @@ public sealed class UnsTreeService(IDbContextFactory dbF
.Select(d => d.ClusterId)
.FirstOrDefaultAsync(ct);
- if (driverCluster is not null && driverCluster != lineCluster)
+ if (driverCluster is null)
+ {
+ return new UnsMutationResult(false, $"Driver '{input.DriverInstanceId}' not found.");
+ }
+
+ if (driverCluster != lineCluster)
{
return new UnsMutationResult(
false,
diff --git a/tests/Server/ZB.MOM.WW.OtOpcUa.AdminUI.Tests/Uns/UnsTreeServiceEquipmentTests.cs b/tests/Server/ZB.MOM.WW.OtOpcUa.AdminUI.Tests/Uns/UnsTreeServiceEquipmentTests.cs
index 9e2555d6..b5831e0a 100644
--- a/tests/Server/ZB.MOM.WW.OtOpcUa.AdminUI.Tests/Uns/UnsTreeServiceEquipmentTests.cs
+++ b/tests/Server/ZB.MOM.WW.OtOpcUa.AdminUI.Tests/Uns/UnsTreeServiceEquipmentTests.cs
@@ -192,6 +192,26 @@ public sealed class UnsTreeServiceEquipmentTests
verify.Equipment.Any(e => e.MachineCode == "machine_001").ShouldBeFalse();
}
+ /// Binding equipment to a DriverInstanceId that does not exist is blocked with a "not found" error.
+ [Fact]
+ public async Task CreateEquipment_driver_not_found_blocked()
+ {
+ var (service, dbName) = Fresh();
+ // Seed area + line in MAIN cluster, but NO DriverInstance.
+ SeedLineAndDriver(dbName, lineCluster: "MAIN", driverCluster: null);
+
+ var result = await service.CreateEquipmentAsync(
+ Input("machine-1", "machine_001", "LINE-1", "DRV-GHOST"));
+
+ result.Ok.ShouldBeFalse();
+ result.Error.ShouldNotBeNull();
+ result.Error.ShouldContain("not found");
+ result.Error.ShouldContain("DRV-GHOST");
+
+ using var db = UnsTreeTestDb.CreateNamed(dbName);
+ db.Equipment.Any(e => e.MachineCode == "machine_001").ShouldBeFalse();
+ }
+
// ----- UpdateEquipment -----
/// Updating equipment changes its mutable fields (name, MachineCode, a 40010 field).