public static void ClearOutputForOlderVersion(DataRow inputRow, DataTable dataTable, DataObjectStore store)
        {
            HybridConfiguration            hybridConfiguration            = store.GetDataObject("HybridConfiguration") as HybridConfiguration;
            IntraOrganizationConfiguration intraOrganizationConfiguration = store.GetDataObject("IntraOrganizationConfiguration") as IntraOrganizationConfiguration;
            bool flag = hybridConfiguration != null && DDIHelper.IsLegacyObject(hybridConfiguration);

            if (flag)
            {
                dataTable.Rows.Clear();
                store.UpdateDataObject("HybridConfiguration", null);
                DataRow row = dataTable.NewRow();
                dataTable.Rows.Add(row);
            }
            dataTable.Rows[0]["NeedUpgrade"] = flag;
            if (object.Equals(dataTable.Rows[0]["IncomingServiceInstance"], "1"))
            {
                inputRow["IsGallatin"] = (dataTable.Rows[0]["IsGallatin"] = true);
                if (OrganizationCache.RestrictIOCToSP1OrGreaterGallatin && intraOrganizationConfiguration.DeploymentIsCompleteIOCReady == false)
                {
                    dataTable.Rows[0]["GallatinBlock"] = true;
                    return;
                }
            }
            else if (!OrganizationCache.RestrictIOCToSP1OrGreaterWorldWide || intraOrganizationConfiguration.DeploymentIsCompleteIOCReady == true)
            {
                dataTable.Rows[0]["WWoAuth"] = true;
            }
        }
示例#2
0
        public override bool CheckPrereqs(ITaskContext taskContext)
        {
            if (!base.CheckPrereqs(taskContext))
            {
                base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.HybridInfoBasePrereqsFailed));
                return(false);
            }
            HybridConfiguration hybridConfigurationObject = taskContext.HybridConfigurationObject;

            this.onPremOrgRel = taskContext.Parameters.Get <OrganizationRelationship>("_onPremOrgRel");
            if (this.onPremOrgRel == null)
            {
                throw new LocalizedException(HybridStrings.ErrorOrgRelNotFoundOnPrem);
            }
            this.tenantOrgRel = taskContext.Parameters.Get <OrganizationRelationship>("_tenantOrgRel");
            if (this.tenantOrgRel == null)
            {
                throw new LocalizedException(HybridStrings.ErrorOrgRelNotFoundOnTenant);
            }
            if (this.RequiresFederationTrust())
            {
                this.fedOrgId = base.TenantSession.GetFederatedOrganizationIdentifier();
                if (this.fedOrgId == null)
                {
                    throw new LocalizedException(HybridStrings.ErrorFederationIDNotProvisioned);
                }
                if (!this.fedOrgId.Enabled || string.IsNullOrEmpty(this.fedOrgId.AccountNamespace.Domain) || this.fedOrgId.Domains.Count == 0)
                {
                    throw new LocalizedException(HybridStrings.ErrorFederationIDNotProvisioned);
                }
            }
            return(true);
        }
示例#3
0
 public static void Validate(HybridConfiguration dataObject, bool hasErrors, Task.TaskErrorLoggingDelegate writeErrorFunc)
 {
     if (hasErrors)
     {
         return;
     }
     if (dataObject.MaximumSupportedExchangeObjectVersion.ExchangeBuild < dataObject.ExchangeVersion.ExchangeBuild)
     {
         writeErrorFunc(new InvalidObjectOperationException(HybridStrings.ErrorHybridConfigurationTooNew(dataObject.ExchangeVersion.ToString(), dataObject.MaximumSupportedExchangeObjectVersion.ToString())), ErrorCategory.InvalidArgument, null);
     }
 }
示例#4
0
        public static void SetHybridConfigurationEnabled(DataRow inputRow, DataTable dataTable, DataObjectStore store)
        {
            HybridConfiguration hybridConfiguration = store.GetDataObject("HybridConfiguration") as HybridConfiguration;
            bool flag = hybridConfiguration != null && !DDIHelper.IsLegacyObject(hybridConfiguration);

            dataTable.Rows[0]["HybridConfigurationEnabled"] = flag;
            if (flag)
            {
                dataTable.Rows[0]["IsHostedOnGallatin"] = (hybridConfiguration.ServiceInstance == 1);
            }
        }
示例#5
0
 public TaskContext(IUserInterface ui, ILogger logger, HybridConfiguration hybridConfigurationObject, IOnPremisesSession onPremisesSession, ITenantSession tenantSession)
 {
     this.UI     = ui;
     this.Logger = logger;
     this.HybridConfigurationObject = hybridConfigurationObject;
     this.OnPremisesSession         = onPremisesSession;
     this.TenantSession             = tenantSession;
     this.Parameters = new ContextParameters();
     this.Errors     = new List <LocalizedString>();
     this.Warnings   = new List <LocalizedString>();
 }
        public StandardWorkflow(ILogger logger, IUserInterface ui, HybridConfiguration hybridConfigurationObject, Func <IOnPremisesSession> createOnPremisesSession, Func <ITenantSession> createTenantSession)
        {
            base.AddOverhead(1);
            base.AddOverhead(1);
            base.AddTask(new TenantDetectionTask());
            base.AddTask(new UpgradeConfigurationFrom14Task(ExchangeObjectVersion.Exchange2012));
            base.AddTask(new GlobalPrereqTask());
            base.AddTask(new RecipientTask());
            base.AddTask(new OrganizationRelationshipTask());
            base.AddTask(new OnOffSettingsTask());
            base.AddTask(new MailFlowTask());
            base.AddTask(new MRSProxyTask());
            base.AddTask(new IOCConfigurationTask());
            LocalizedString hybridActivityEstablish = HybridStrings.HybridActivityEstablish;
            LocalizedString localizedString         = HybridStrings.HybridConnectingToOnPrem;

            ui.WriteVerbose(localizedString);
            ui.WriteProgessIndicator(hybridActivityEstablish, localizedString, base.PercentCompleted);
            try
            {
                this.onPremisesSession = createOnPremisesSession();
            }
            catch (Exception ex)
            {
                if (ex is CouldNotResolveServerException || ex is CouldNotOpenRunspaceException)
                {
                    throw new CouldNotCreateOnPremisesSessionException(ex, ex);
                }
                throw ex;
            }
            base.UpdateProgress(1);
            logger.LogInformation(HybridStrings.HybridInfoConnectedToOnPrem);
            localizedString = HybridStrings.HybridConnectingToTenant;
            ui.WriteVerbose(localizedString);
            ui.WriteProgessIndicator(hybridActivityEstablish, localizedString, base.PercentCompleted);
            try
            {
                this.tenantSession = createTenantSession();
            }
            catch (Exception ex2)
            {
                if (ex2 is CouldNotResolveServerException || ex2 is CouldNotOpenRunspaceException)
                {
                    throw new CouldNotCreateTenantSessionException(ex2, ex2);
                }
                throw ex2;
            }
            base.UpdateProgress(1);
            logger.LogInformation(HybridStrings.HybridInfoConnectedToTenant);
            this.TaskContext = new TaskContext(ui, logger, hybridConfigurationObject, this.onPremisesSession, this.tenantSession);
            this.TaskContext.Parameters.Set <List <Uri> >("_onPremAcceptedTokenIssuerUris", Configuration.OnPremiseAcceptedTokenIssuerUriList);
            this.TaskContext.Parameters.Set <List <Uri> >("_tenantAcceptedTokenIssuerUris", Configuration.TenantAcceptedTokenIssuerUriList);
        }
示例#7
0
        private bool CheckOrVerifyConfiguration(ITaskContext taskContext, bool fVerifyOnly)
        {
            bool result = false;
            HybridConfiguration hybridConfigurationObject = taskContext.HybridConfigurationObject;

            if (hybridConfigurationObject.MoveMailboxEnabled != this.onPremOrgRel.MailboxMoveEnabled)
            {
                result = true;
            }
            if (hybridConfigurationObject.FreeBusySharingEnabled != this.onPremOrgRel.FreeBusyAccessEnabled || hybridConfigurationObject.FreeBusySharingEnabled != this.tenantOrgRel.FreeBusyAccessEnabled)
            {
                result = true;
            }
            else if (hybridConfigurationObject.FreeBusySharingEnabled && (this.onPremOrgRel.FreeBusyAccessLevel != FreeBusyAccessLevel.LimitedDetails || this.tenantOrgRel.FreeBusyAccessLevel != FreeBusyAccessLevel.LimitedDetails))
            {
                result = true;
            }
            if (hybridConfigurationObject.OnlineArchiveEnabled != this.onPremOrgRel.ArchiveAccessEnabled)
            {
                result = true;
            }
            if (hybridConfigurationObject.MailtipsEnabled != this.onPremOrgRel.MailTipsAccessEnabled || hybridConfigurationObject.MailtipsEnabled != this.tenantOrgRel.MailTipsAccessEnabled)
            {
                result = true;
            }
            else if (hybridConfigurationObject.MailtipsEnabled && (this.onPremOrgRel.MailTipsAccessLevel != MailTipsAccessLevel.All || this.tenantOrgRel.MailTipsAccessLevel != MailTipsAccessLevel.All))
            {
                result = true;
            }
            if (hybridConfigurationObject.MessageTrackingEnabled != this.onPremOrgRel.DeliveryReportEnabled || hybridConfigurationObject.MessageTrackingEnabled != this.tenantOrgRel.DeliveryReportEnabled)
            {
                result = true;
            }
            if (hybridConfigurationObject.PhotosEnabled != this.onPremOrgRel.PhotosEnabled || hybridConfigurationObject.PhotosEnabled != this.tenantOrgRel.PhotosEnabled)
            {
                result = true;
            }
            string value = (this.onPremOrgRel.TargetOwaURL != null) ? this.onPremOrgRel.TargetOwaURL.ToString() : string.Empty;

            if (fVerifyOnly)
            {
                if (hybridConfigurationObject.OwaRedirectionEnabled == string.IsNullOrEmpty(value))
                {
                    result = true;
                }
            }
            else if (hybridConfigurationObject.OwaRedirectionEnabled || !string.IsNullOrEmpty(value))
            {
                result = true;
            }
            return(result);
        }
示例#8
0
        public override bool Configure(ITaskContext taskContext)
        {
            if (!base.Configure(taskContext))
            {
                return(false);
            }
            HybridConfiguration hybridConfigurationObject = taskContext.HybridConfigurationObject;

            if (this.configureRemoteDomain)
            {
                string name = string.Format("Hybrid Domain - {0}", this.tenantRoutingDomain);
                base.OnPremisesSession.NewRemoteDomain(this.tenantRoutingDomain, name);
            }
            if (this.configureRemoteDomain || this.configureTargetDeliveryDomain)
            {
                string            identity          = string.Format("Hybrid Domain - {0}", this.targetDeliveryDomain);
                SessionParameters sessionParameters = new SessionParameters();
                sessionParameters.Set("TargetDeliveryDomain", true);
                base.OnPremisesSession.SetRemoteDomain(identity, sessionParameters);
            }
            if (this.configureAcceptedDomain)
            {
                base.OnPremisesSession.NewAcceptedDomain(this.tenantRoutingDomain, this.tenantRoutingDomain);
                IEnumerable <IAcceptedDomain> acceptedDomain = base.OnPremisesSession.GetAcceptedDomain();
                if (acceptedDomain.Count <IAcceptedDomain>() == 0)
                {
                    throw new LocalizedException(HybridStrings.ErrorNoOnPremAcceptedDomains);
                }
                taskContext.Parameters.Set <IEnumerable <IAcceptedDomain> >("_onPremAcceptedDomains", acceptedDomain);
            }
            if (this.upgradeLegacyDefaultPolicy)
            {
                base.OnPremisesSession.SetEmailAddressPolicy("default policy", "AllRecipients", null);
            }
            if (this.policiesToUpdate != null)
            {
                foreach (EmailAddressPolicy policy in this.policiesToUpdate)
                {
                    this.AddTenantRoutingAddressToPolicy(policy);
                }
                foreach (EmailAddressPolicy emailAddressPolicy in this.policiesToUpdate)
                {
                    base.OnPremisesSession.UpdateEmailAddressPolicy(emailAddressPolicy.DistinguishedName);
                }
            }
            return(true);
        }
示例#9
0
 public static void ProcessRecord(ILogger logger, IUserInterface ui, HybridConfiguration hybridConfigurationObject, Func <IOnPremisesSession> createOnPremisesSessionFunc, Func <ITenantSession> createTenantSessionFunc, Action <Exception, ErrorCategory, object> writeErrorFunc, bool forceUpgrade, bool suppressOAuthWarning)
 {
     try
     {
         using (StandardWorkflow standardWorkflow = new StandardWorkflow(logger, ui, hybridConfigurationObject, createOnPremisesSessionFunc, createTenantSessionFunc))
         {
             standardWorkflow.TaskContext.Parameters.Set <bool>("_forceUpgrade", forceUpgrade);
             standardWorkflow.TaskContext.Parameters.Set <bool>("_suppressOAuthWarning", suppressOAuthWarning);
             Engine.Execute(standardWorkflow.TaskContext, standardWorkflow);
         }
     }
     catch (Exception ex)
     {
         LocalizedString localizedString = HybridStrings.ExceptionUpdateHybridConfigurationFailedWithLog(ex.ToString(), Environment.MachineName, logger.ToString());
         writeErrorFunc(new LocalizedException(localizedString), ErrorCategory.WriteError, null);
     }
 }
示例#10
0
        private bool CheckOrVerifyConfiguration(ITaskContext taskContext, bool verifyOnly)
        {
            this.configureRemoteDomain         = false;
            this.configureTargetDeliveryDomain = false;
            HybridConfiguration hybridConfigurationObject = taskContext.HybridConfigurationObject;

            this.targetDeliveryDomain = this.tenantRoutingDomain;
            IEnumerable <DomainContentConfig> remoteDomain = base.OnPremisesSession.GetRemoteDomain();

            if (remoteDomain.Count <DomainContentConfig>() == 0)
            {
                this.configureRemoteDomain = true;
            }
            else
            {
                this.configureRemoteDomain = true;
                foreach (DomainContentConfig domainContentConfig in remoteDomain)
                {
                    if (domainContentConfig.DomainName.Domain.Equals(this.tenantRoutingDomain, StringComparison.InvariantCultureIgnoreCase))
                    {
                        if (!domainContentConfig.TargetDeliveryDomain)
                        {
                            this.targetDeliveryDomain          = domainContentConfig.DomainName.Domain;
                            this.configureTargetDeliveryDomain = true;
                        }
                        this.configureRemoteDomain = false;
                        break;
                    }
                }
            }
            IEnumerable <IAcceptedDomain> source = taskContext.Parameters.Get <IEnumerable <IAcceptedDomain> >("_onPremAcceptedDomains");

            this.configureAcceptedDomain = !source.Any((IAcceptedDomain d) => d.DomainNameDomain.Equals(this.tenantRoutingDomain, StringComparison.InvariantCultureIgnoreCase));
            IEnumerable <string> source2 = from domain in hybridConfigurationObject.Domains
                                           select domain.Domain;

            this.policiesToUpdate = this.GetEmailAddressPoliciesToUpdate(taskContext, verifyOnly, source2.ToArray <string>(), out this.upgradeLegacyDefaultPolicy);
            return(this.configureRemoteDomain || this.configureTargetDeliveryDomain || this.configureAcceptedDomain || this.policiesToUpdate.Count <EmailAddressPolicy>() > 0 || this.upgradeLegacyDefaultPolicy);
        }
 // Token: 0x060008F1 RID: 2289 RVA: 0x0001F41E File Offset: 0x0001D61E
 public HybridConfigurationIdParameter(HybridConfiguration hybridRelationship) : base(hybridRelationship.Id)
 {
 }
        public static IConfigurable PrepareDataObject(PropertyBag fields, HybridConfiguration dataObject, IConfigDataProvider dataSession, HybridConfigurationTaskUtility.GetUniqueObject getDataObjectFunc, Task.TaskErrorLoggingDelegate writeErrorFunc)
        {
            MultiValuedProperty <ADObjectId> clientAccessServers = dataObject.ClientAccessServers;

            if (fields.IsModified("ClientAccessServers"))
            {
                ADPropertyDefinition clientAccessServers2 = HybridConfigurationSchema.ClientAccessServers;
                HybridConfigurationTaskUtility.ServerCriterion[] array = new HybridConfigurationTaskUtility.ServerCriterion[2];
                array[0] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsClientAccessServer, new Func <string, LocalizedString>(HybridStrings.HybridErrorServerNotCAS));
                array[1] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsE14OrLater, new Func <string, LocalizedString>(HybridStrings.HybridErrorServerNotE14CAS));
                dataObject.ClientAccessServers = HybridConfigurationTaskUtility.ValidateServers(clientAccessServers2, dataSession, fields, getDataObjectFunc, writeErrorFunc, array);
            }
            if (fields.IsModified("SendingTransportServers"))
            {
                ADPropertyDefinition sendingTransportServers            = HybridConfigurationSchema.SendingTransportServers;
                HybridConfigurationTaskUtility.ServerCriterion[] array2 = new HybridConfigurationTaskUtility.ServerCriterion[2];
                array2[0] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsHubTransportServer, new Func <string, LocalizedString>(HybridStrings.HybridErrorSendingTransportServerNotHub));
                array2[1] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsE15OrLater, new Func <string, LocalizedString>(HybridStrings.HybridErrorSendingTransportServerNotE15Hub));
                dataObject.SendingTransportServers = HybridConfigurationTaskUtility.ValidateServers(sendingTransportServers, dataSession, fields, getDataObjectFunc, writeErrorFunc, array2);
            }
            if (fields.IsModified("ReceivingTransportServers"))
            {
                ADPropertyDefinition receivingTransportServers          = HybridConfigurationSchema.ReceivingTransportServers;
                HybridConfigurationTaskUtility.ServerCriterion[] array3 = new HybridConfigurationTaskUtility.ServerCriterion[2];
                array3[0] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsFrontendTransportServer, new Func <string, LocalizedString>(HybridStrings.HybridErrorReceivingTransportServerNotFrontEnd));
                array3[1] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsE15OrLater, new Func <string, LocalizedString>(HybridStrings.HybridErrorReceivingTransportServerNotE15FrontEnd));
                dataObject.ReceivingTransportServers = HybridConfigurationTaskUtility.ValidateServers(receivingTransportServers, dataSession, fields, getDataObjectFunc, writeErrorFunc, array3);
            }
            if (fields.IsModified("EdgeTransportServers"))
            {
                ADPropertyDefinition edgeTransportServers = HybridConfigurationSchema.EdgeTransportServers;
                HybridConfigurationTaskUtility.ServerCriterion[] array4 = new HybridConfigurationTaskUtility.ServerCriterion[2];
                array4[0] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsEdgeServer, new Func <string, LocalizedString>(HybridStrings.HybridErrorServerNotEdge));
                array4[1] = new HybridConfigurationTaskUtility.ServerCriterion((Server s) => s.IsE14Sp1OrLater, new Func <string, LocalizedString>(HybridStrings.HybridErrorServerNotE14Edge));
                dataObject.EdgeTransportServers = HybridConfigurationTaskUtility.ValidateServers(edgeTransportServers, dataSession, fields, getDataObjectFunc, writeErrorFunc, array4);
            }
            if (fields.IsModified("TlsCertificateName"))
            {
                string text = fields["TlsCertificateName"] as string;
                dataObject.TlsCertificateName = ((text == null) ? null : SmtpX509Identifier.Parse(text));
            }
            if (fields.IsModified("OnPremisesSmartHost"))
            {
                dataObject.OnPremisesSmartHost = (SmtpDomain)fields["OnPremisesSmartHost"];
            }
            if (fields.IsModified("Domains"))
            {
                dataObject.Domains = (MultiValuedProperty <AutoDiscoverSmtpDomain>)fields["Domains"];
            }
            if (fields.IsModified("Features"))
            {
                dataObject.Features = (MultiValuedProperty <HybridFeature>)fields["Features"];
            }
            if (fields.IsModified("ExternalIPAddresses"))
            {
                dataObject.ExternalIPAddresses = HybridConfigurationTaskUtility.ValidateExternalIPAddresses((MultiValuedProperty <IPRange>)fields["ExternalIPAddresses"], writeErrorFunc);
            }
            if (fields.IsModified("ServiceInstance"))
            {
                dataObject.ServiceInstance = (int)fields["ServiceInstance"];
            }
            return(dataObject);
        }
示例#13
0
        public override bool Configure(ITaskContext taskContext)
        {
            if (!base.Configure(taskContext))
            {
                return(false);
            }
            HybridConfiguration hybridConfigurationObject = taskContext.HybridConfigurationObject;
            SessionParameters   sessionParameters         = new SessionParameters();
            SessionParameters   sessionParameters2        = new SessionParameters();

            if (hybridConfigurationObject.MoveMailboxEnabled != this.onPremOrgRel.MailboxMoveEnabled)
            {
                sessionParameters.Set("MailboxMoveEnabled", hybridConfigurationObject.MoveMailboxEnabled);
            }
            if (hybridConfigurationObject.FreeBusySharingEnabled != this.onPremOrgRel.FreeBusyAccessEnabled || hybridConfigurationObject.FreeBusySharingEnabled != this.tenantOrgRel.FreeBusyAccessEnabled)
            {
                sessionParameters.Set("FreeBusyAccessEnabled", hybridConfigurationObject.FreeBusySharingEnabled);
                sessionParameters2.Set("FreeBusyAccessEnabled", hybridConfigurationObject.FreeBusySharingEnabled);
            }
            if (hybridConfigurationObject.FreeBusySharingEnabled && (this.onPremOrgRel.FreeBusyAccessLevel != FreeBusyAccessLevel.LimitedDetails || this.tenantOrgRel.FreeBusyAccessLevel != FreeBusyAccessLevel.LimitedDetails))
            {
                sessionParameters.Set("FreeBusyAccessLevel", FreeBusyAccessLevel.LimitedDetails);
                sessionParameters2.Set("FreeBusyAccessLevel", FreeBusyAccessLevel.LimitedDetails);
            }
            if (hybridConfigurationObject.OnlineArchiveEnabled != this.onPremOrgRel.ArchiveAccessEnabled)
            {
                sessionParameters.Set("ArchiveAccessEnabled", hybridConfigurationObject.OnlineArchiveEnabled);
            }
            if (hybridConfigurationObject.MailtipsEnabled != this.onPremOrgRel.MailTipsAccessEnabled || hybridConfigurationObject.MailtipsEnabled != this.tenantOrgRel.MailTipsAccessEnabled)
            {
                sessionParameters.Set("MailTipsAccessEnabled", hybridConfigurationObject.MailtipsEnabled);
                sessionParameters2.Set("MailTipsAccessEnabled", hybridConfigurationObject.MailtipsEnabled);
            }
            if (hybridConfigurationObject.MailtipsEnabled && (this.onPremOrgRel.MailTipsAccessLevel != MailTipsAccessLevel.All || this.tenantOrgRel.MailTipsAccessLevel != MailTipsAccessLevel.All))
            {
                sessionParameters.Set("MailTipsAccessLevel", MailTipsAccessLevel.All);
                sessionParameters2.Set("MailTipsAccessLevel", MailTipsAccessLevel.All);
            }
            if (hybridConfigurationObject.MessageTrackingEnabled != this.onPremOrgRel.DeliveryReportEnabled || hybridConfigurationObject.MessageTrackingEnabled != this.tenantOrgRel.DeliveryReportEnabled)
            {
                sessionParameters.Set("DeliveryReportEnabled", hybridConfigurationObject.MessageTrackingEnabled);
                sessionParameters2.Set("DeliveryReportEnabled", hybridConfigurationObject.MessageTrackingEnabled);
            }
            if (hybridConfigurationObject.PhotosEnabled != this.onPremOrgRel.PhotosEnabled || hybridConfigurationObject.PhotosEnabled != this.tenantOrgRel.PhotosEnabled)
            {
                sessionParameters.Set("PhotosEnabled", hybridConfigurationObject.PhotosEnabled);
                sessionParameters2.Set("PhotosEnabled", hybridConfigurationObject.PhotosEnabled);
            }
            string text = (this.onPremOrgRel.TargetOwaURL != null) ? this.onPremOrgRel.TargetOwaURL.ToString() : string.Empty;

            if (hybridConfigurationObject.OwaRedirectionEnabled || !string.IsNullOrEmpty(text))
            {
                if (hybridConfigurationObject.OwaRedirectionEnabled)
                {
                    IEnumerable <IAcceptedDomain> acceptedDomains = taskContext.Parameters.Get <IEnumerable <IAcceptedDomain> >("_tenantAcceptedDomains");
                    if (!string.IsNullOrEmpty(text))
                    {
                        if (!this.ValidateOwaUri(text, acceptedDomains))
                        {
                            sessionParameters.Set("TargetOwaURL", this.GetDefaultOwaUri(acceptedDomains, this.fedOrgId));
                        }
                    }
                    else
                    {
                        sessionParameters.Set("TargetOwaURL", this.GetDefaultOwaUri(acceptedDomains, this.fedOrgId));
                    }
                }
                else
                {
                    sessionParameters.SetNull <string>("TargetOwaURL");
                }
            }
            if (sessionParameters.Count > 0)
            {
                OrganizationRelationship organizationRelationship = taskContext.Parameters.Get <OrganizationRelationship>("_onPremOrgRel");
                base.OnPremisesSession.SetOrganizationRelationship(organizationRelationship.Identity, sessionParameters);
                List <string> list = new List <string>();
                string        item = taskContext.Parameters.Get <string>("_hybridDomain");
                list.Add(item);
                this.onPremOrgRel = TaskCommon.GetOrganizationRelationship(taskContext.OnPremisesSession, TaskCommon.GetOnPremOrgRelationshipName(this.OnPremOrgConfig), list);
                taskContext.Parameters.Set <OrganizationRelationship>("_onPremOrgRel", this.onPremOrgRel);
            }
            if (sessionParameters2.Count > 0)
            {
                OrganizationRelationship organizationRelationship2 = taskContext.Parameters.Get <OrganizationRelationship>("_tenantOrgRel");
                base.TenantSession.SetOrganizationRelationship(organizationRelationship2.Identity, sessionParameters2);
                IEnumerable <string> domains = taskContext.Parameters.Get <IEnumerable <string> >("_hybridDomainList");
                this.tenantOrgRel = TaskCommon.GetOrganizationRelationship(taskContext.TenantSession, TaskCommon.GetTenantOrgRelationshipName(this.OnPremOrgConfig), domains);
                taskContext.Parameters.Set <OrganizationRelationship>("_onPremOrgRel", this.tenantOrgRel);
            }
            this.ConfigureAvailabilityAddressSpace(taskContext);
            return(true);
        }