Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs =================================================================== diff -u -r802ea30d1fe8fbae93e58dff9ab054dbabca11ae -r1b1826c92d3476a966c7c680471f689e4bcee3f8 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs (.../AssessmentSectionCompositionChangeHandler.cs) (revision 802ea30d1fe8fbae93e58dff9ab054dbabca11ae) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs (.../AssessmentSectionCompositionChangeHandler.cs) (revision 1b1826c92d3476a966c7c680471f689e4bcee3f8) @@ -62,6 +62,7 @@ } Dictionary oldFailureMechanismContributions = assessmentSection.GetFailureMechanisms().ToDictionary(f => f, f => f.Contribution); + Dictionary oldFailureMechanismRelevancies = assessmentSection.GetFailureMechanisms().ToDictionary(f => f, f => f.IsRelevant); var affectedObjects = new List(); if (assessmentSection.Composition != newComposition) @@ -70,7 +71,7 @@ affectedObjects.Add(assessmentSection); - IFailureMechanism[] failureMechanismsToClearOutputFor = GetFailureMechanismsToUpdate(assessmentSection, oldFailureMechanismContributions).ToArray(); + IFailureMechanism[] failureMechanismsToClearOutputFor = GetFailureMechanismsToClearOutputFor(assessmentSection, oldFailureMechanismContributions).ToArray(); IObservable[] affectedCalculations = RingtoetsDataSynchronizationService.ClearFailureMechanismCalculationOutputs(failureMechanismsToClearOutputFor).ToArray(); @@ -83,13 +84,23 @@ } affectedObjects.AddRange(ClearHydraulicBoundaryLocationOutput(failureMechanismsToClearOutputFor)); + + affectedObjects.AddRange(GetFailureMechanismsWithRelevancyUpdated(assessmentSection, oldFailureMechanismRelevancies)); } return affectedObjects; } - private static IEnumerable GetFailureMechanismsToUpdate(IAssessmentSection assessmentSection, - Dictionary oldFailureMechanismContributions) + private static IEnumerable GetFailureMechanismsWithRelevancyUpdated(IAssessmentSection assessmentSection, + IDictionary oldFailureMechanismRelevancies) { + return assessmentSection.GetFailureMechanisms() + .Where(failureMechanism => oldFailureMechanismRelevancies.ContainsKey(failureMechanism) + && oldFailureMechanismRelevancies[failureMechanism] != failureMechanism.IsRelevant); + } + + private static IEnumerable GetFailureMechanismsToClearOutputFor(IAssessmentSection assessmentSection, + IDictionary oldFailureMechanismContributions) + { var failureMechanismsToClearOutputFor = new List(); foreach (IFailureMechanism failureMechanism in assessmentSection.GetFailureMechanisms()) {