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); }
public override bool CheckPrereqs(ITaskContext taskContext) { if (!base.CheckPrereqs(taskContext)) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.HybridInfoBasePrereqsFailed)); return(false); } return(true); }
public override bool CheckPrereqs(ITaskContext taskContext) { if (!base.CheckPrereqs(taskContext)) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.HybridInfoBasePrereqsFailed)); return(false); } this.tenantRoutingDomain = taskContext.Parameters.Get <string>("_hybridDomain"); if (string.IsNullOrEmpty(this.tenantRoutingDomain)) { throw new LocalizedException(HybridStrings.ErrorNoHybridDomain); } return(true); }
private bool CheckTaskPrerequisites(ITaskContext taskContext) { this.Reset(); if (this.RequiresFederationTrust()) { string value = Configuration.SignupDomainSuffix(taskContext.HybridConfigurationObject.ServiceInstance); foreach (AutoDiscoverSmtpDomain autoDiscoverSmtpDomain in this.HybridDomains) { if (!autoDiscoverSmtpDomain.Domain.EndsWith(value, StringComparison.InvariantCultureIgnoreCase) && autoDiscoverSmtpDomain.Domain.Length <= 32) { this.accountNamespace = autoDiscoverSmtpDomain.Domain; break; } } if (string.IsNullOrEmpty(this.accountNamespace)) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorAccountNamespace)); base.AddLocalizedStringError(HybridStrings.ErrorAccountNamespace); return(false); } int num = base.OnPremisesSession.GetFederationTrust().Count <IFederationTrust>(); if (num == 0) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, Strings.ErrorFederationTrustNotFound(""))); base.AddLocalizedStringError(HybridStrings.ErrorNoFederationTrustFound); return(false); } if (num > 1) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorMultipleFederationTrusts)); base.AddLocalizedStringError(HybridStrings.ErrorMultipleFederationTrusts); return(false); } IFederatedOrganizationIdentifier federatedOrganizationIdentifier = base.OnPremisesSession.GetFederatedOrganizationIdentifier(); if (federatedOrganizationIdentifier == null) { this.updateOnPremisesFedOrgId = true; } else if (federatedOrganizationIdentifier.AccountNamespace == null || string.IsNullOrEmpty(federatedOrganizationIdentifier.AccountNamespace.Domain)) { this.updateOnPremisesFedOrgId = true; } else { if (!federatedOrganizationIdentifier.Enabled) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorFederatedIdentifierDisabled)); base.AddLocalizedStringError(HybridStrings.ErrorFederatedIdentifierDisabled); return(false); } this.accountNamespace = federatedOrganizationIdentifier.AccountNamespace.Domain.Replace(FederatedOrganizationId.HybridConfigurationWellKnownSubDomain + ".", string.Empty); if (!string.Equals(TaskCommon.ToStringOrNull(federatedOrganizationIdentifier.DelegationTrustLink), Configuration.FederatedTrustIdentity)) { this.updateOnPremisesFedOrgId = true; } else { this.updateOnPremisesFedOrgId = false; using (IEnumerator <string> enumerator2 = (from d in this.HybridDomains select d.Domain).GetEnumerator()) { while (enumerator2.MoveNext()) { string hybridDomain = enumerator2.Current; if (!federatedOrganizationIdentifier.Domains.Any((FederatedDomain d) => string.Equals(d.Domain.Domain, hybridDomain, StringComparison.InvariantCultureIgnoreCase))) { this.addOnPremisesFedDomains.Add(hybridDomain); } } } } if (!TaskCommon.AreEqual(federatedOrganizationIdentifier.DefaultDomain, this.AutoDiscoverHybridDomain)) { this.updateOnPremisesFedOrgId = true; } } if (this.updateOnPremisesFedOrgId) { foreach (string text in from d in this.HybridDomains select d.Domain) { if (!text.Equals(this.accountNamespace, StringComparison.InvariantCultureIgnoreCase)) { this.addOnPremisesFedDomains.Add(text); } } } IFederatedOrganizationIdentifier federatedOrganizationIdentifier2 = base.TenantSession.GetFederatedOrganizationIdentifier(); string text2 = (federatedOrganizationIdentifier2 != null && federatedOrganizationIdentifier2.DefaultDomain != null) ? federatedOrganizationIdentifier2.DefaultDomain.ToString() : null; if (text2 == null || !text2.Equals(this.TenantCoexistenceDomain, StringComparison.InvariantCultureIgnoreCase)) { this.updateTenantFedOrgId = true; } } return(true); }
public override bool CheckPrereqs(ITaskContext taskContext) { if (!base.CheckPrereqs(taskContext)) { return(false); } if (taskContext.HybridConfigurationObject.ExchangeVersion.ExchangeBuild.Major != taskContext.HybridConfigurationObject.MaximumSupportedExchangeObjectVersion.ExchangeBuild.Major) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorHybridMustBeUpgraded)); base.AddLocalizedStringError(HybridStrings.ErrorHybridMustBeUpgraded); return(false); } if (Configuration.RequiresIntraOrganizationConnector(taskContext.HybridConfigurationObject.ServiceInstance) && Configuration.RestrictIOCToSP1OrGreater(taskContext.HybridConfigurationObject.ServiceInstance) && !(taskContext.OnPremisesSession.GetIntraOrganizationConfiguration().DeploymentIsCompleteIOCReady ?? false)) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorIncompatibleServersDetected)); base.AddLocalizedStringError(HybridStrings.ErrorIncompatibleServersDetected); return(false); } if (taskContext.HybridConfigurationObject.Domains == null || taskContext.HybridConfigurationObject.Domains.Count == 0) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorNoHybridDomains)); base.AddLocalizedStringError(HybridStrings.ErrorNoHybridDomains); return(false); } IOrderedEnumerable <string> orderedEnumerable = from d in taskContext.HybridConfigurationObject.Domains select d.Domain into d orderby d select d; taskContext.Parameters.Set <IEnumerable <string> >("_hybridDomainList", orderedEnumerable); IEnumerable <IAcceptedDomain> acceptedDomain = base.TenantSession.GetAcceptedDomain(); if (acceptedDomain.Count <IAcceptedDomain>() == 0) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorNoTenantAcceptedDomains)); base.AddLocalizedStringError(HybridStrings.ErrorNoTenantAcceptedDomains); return(false); } taskContext.Parameters.Set <IEnumerable <IAcceptedDomain> >("_tenantAcceptedDomains", acceptedDomain); string text = null; foreach (IAcceptedDomain acceptedDomain2 in acceptedDomain) { if (acceptedDomain2.IsCoexistenceDomain) { text = acceptedDomain2.DomainNameDomain; break; } } if (string.IsNullOrEmpty(text)) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorNoHybridDomain)); base.AddLocalizedStringError(HybridStrings.ErrorNoHybridDomain); return(false); } taskContext.Parameters.Set <string>("_hybridDomain", text); IEnumerable <IAcceptedDomain> acceptedDomain3 = base.OnPremisesSession.GetAcceptedDomain(); if (acceptedDomain3.Count <IAcceptedDomain>() == 0) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorNoOnPremAcceptedDomains)); base.AddLocalizedStringError(HybridStrings.ErrorNoOnPremAcceptedDomains); return(false); } taskContext.Parameters.Set <IEnumerable <IAcceptedDomain> >("_onPremAcceptedDomains", acceptedDomain3); foreach (string domain in orderedEnumerable) { if (!GlobalPrereqTask.IsAcceptedDomain(domain, acceptedDomain)) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorHybridDomainNotAcceptedOnTenant(domain))); base.AddLocalizedStringError(HybridStrings.ErrorHybridDomainNotAcceptedOnTenant(domain)); return(false); } if (!GlobalPrereqTask.IsAcceptedDomain(domain, acceptedDomain3)) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorHybridDomainNotAcceptedOnPrem(domain))); base.AddLocalizedStringError(HybridStrings.ErrorHybridDomainNotAcceptedOnPrem(domain)); return(false); } } if (!GlobalPrereqTask.IsAcceptedDomain(text, acceptedDomain)) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorCoexistenceDomainNotAcceptedOnTenant(text))); base.AddLocalizedStringError(HybridStrings.ErrorCoexistenceDomainNotAcceptedOnTenant(text)); return(false); } IOrganizationConfig organizationConfig = base.OnPremisesSession.GetOrganizationConfig(); List <string> list = new List <string>(); list.Add(text); OrganizationRelationship organizationRelationship = TaskCommon.GetOrganizationRelationship(taskContext.OnPremisesSession, TaskCommon.GetOnPremOrgRelationshipName(organizationConfig), list); taskContext.Parameters.Set <OrganizationRelationship>("_onPremOrgRel", organizationRelationship); organizationRelationship = TaskCommon.GetOrganizationRelationship(taskContext.TenantSession, TaskCommon.GetTenantOrgRelationshipName(organizationConfig), orderedEnumerable); taskContext.Parameters.Set <OrganizationRelationship>("_tenantOrgRel", organizationRelationship); foreach (ADObjectId adobjectId in taskContext.HybridConfigurationObject.ClientAccessServers) { IExchangeServer exchangeServer = base.OnPremisesSession.GetExchangeServer(adobjectId.Name); if (!this.HasCASRole(exchangeServer)) { base.Logger.LogInformation(HybridStrings.HybridInfoTaskLogTemplate(base.Name, HybridStrings.ErrorCASRoleInvalid(exchangeServer.Name))); base.AddLocalizedStringError(HybridStrings.ErrorCASRoleInvalid(exchangeServer.Name)); return(false); } } return(true); }