public static IObservable <bool> MicrosoftNeedsAuthentication(this XafApplication application) => application.NewObjectSpace(space => (space.GetObjectByKey <MSAuthentication>(application.CurrentUserId()) == null).ReturnObservable()) .SelectMany(b => !b ? application.AuthorizeMS((exception, client) => Observable.Throw <AuthenticationResult>(exception)) .To(false).Catch(true.ReturnObservable()) : true.ReturnObservable()) .TraceMicrosoftModule();