app.ControlledApplication.FailuresProcessing += OnFailuresProcessing;
...
private void OnFailuresProcessing(object sender, FailuresProcessingEventArgs e)
{
        var failureAccessor = e.GetFailuresAccessor();
 
        var disjointFailures = failureAccessor
                .GetFailureMessages(FailureSeverity.Warning)
                .Where(x => x.GetFailureDefinitionId() == BuiltInFailures.JoinElementsFailures.JoiningDisjointWarn)
                .ToList();
 
        if (disjointFailures.Count == 0)
                return;
 
        foreach (var failure in disjointFailures)
        {
                failure.SetCurrentResolutionType(FailureResolutionType.DetachElements);
 
                failureAccessor.ResolveFailure(failure);
        }
 
        e.SetProcessingResult(FailureProcessingResult.ProceedWithCommit);
}