internal ADSessionSettings GetTenantScopedADSessionSettingsServiceOnly() { if (this.externalDirectoryOrganizationId != null) { ExTraceGlobals.GetConnectionTracer.TraceDebug <string>(0L, "FromTenantPartitionHint(): Partition hint '{0}' has externalDirectoryOrganizationId initialized, no need to lookup", this.ToString()); if (this.externalDirectoryOrganizationId == TenantPartitionHint.ExternalDirectoryOrganizationIdForRootOrg) { return(ADSessionSettings.FromRootOrgScopeSet()); } return(ADSessionSettings.FromExternalDirectoryOrganizationId(this.externalDirectoryOrganizationId.Value)); } else { ADSessionSettings sessionSettings = ADSessionSettings.FromAllTenantsPartitionId(this.partitionId); ITenantConfigurationSession tenantConfigurationSession = DirectorySessionFactory.Default.CreateTenantConfigurationSession(ConsistencyMode.PartiallyConsistent, sessionSettings, 442, "GetTenantScopedADSessionSettingsServiceOnly", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\TenantPartitionHint.cs"); ExTraceGlobals.GetConnectionTracer.TraceDebug <TenantPartitionHint>(0L, "FromTenantPartitionHint(): Partition hint '{0}' has externalDirectoryOrganizationId not initialized, need to read this property from AD, looking up", this); ExchangeConfigurationUnit exchangeConfigurationUnitByName = tenantConfigurationSession.GetExchangeConfigurationUnitByName(this.tenantName); if (exchangeConfigurationUnitByName != null) { ExTraceGlobals.GetConnectionTracer.TraceDebug <TenantPartitionHint>(0L, "FromTenantPartitionHint(): Partition hint '{0}' has PartitionId and tenantName initialized, reading this OrganizationId property from CU", this); return(ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(exchangeConfigurationUnitByName.OrganizationId)); } ExTraceGlobals.GetConnectionTracer.TraceDebug <TenantPartitionHint>(0L, "FromTenantPartitionHint(): Partition hint '{0}' has partitionId and tenantName initialized, but failed to find this tenant's CU", this); Globals.LogEvent(DirectoryEventLogConstants.Tuple_CannotResolveExternalDirectoryOrganizationId, this.tenantName, new object[] { DirectoryStrings.CannotResolveTenantName(this.tenantName), Environment.StackTrace }); throw new CannotResolveExternalDirectoryOrganizationIdException(DirectoryStrings.CannotResolveTenantName(this.tenantName)); } }
internal override ADSessionSettings FromExternalDirectoryOrganizationId(Guid externalDirectoryOrganizationId) { if (externalDirectoryOrganizationId == TemplateTenantConfiguration.TemplateTenantExternalDirectoryOrganizationIdGuid) { return(ADSessionSettings.FromConsumerOrganization()); } OrganizationId scopingOrganizationId = OrganizationId.FromExternalDirectoryOrganizationId(externalDirectoryOrganizationId); return(ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(scopingOrganizationId)); }
internal static ADSessionSettings FromConsumerOrganization() { return(ADSessionSettings.InvokeWithAPILogging <ADSessionSettings>(delegate { ExchangeConfigurationUnit localTemplateTenant = TemplateTenantConfiguration.GetLocalTemplateTenant(); if (localTemplateTenant == null) { throw new ADTransientException(DirectoryStrings.CannotFindTemplateTenant); } return ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(localTemplateTenant.OrganizationId); }, "FromConsumerOrganization")); }
private ExchangeConfigurationUnit ReadCU() { ADSessionSettings sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(this); IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, sessionSettings, 671, "ReadCU", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\OrganizationId.cs"); ExchangeConfigurationUnit exchangeConfigurationUnit = tenantOrTopologyConfigurationSession.Read <ExchangeConfigurationUnit>(this.ConfigurationUnit); if (exchangeConfigurationUnit == null) { throw new CannotResolveTenantNameException(DirectoryStrings.TenantOrgContainerNotFoundException(this.configUnit.DistinguishedName)); } return(exchangeConfigurationUnit); }
internal override ADSessionSettings FromTenantAcceptedDomain(string domain) { if (domain == null) { throw new ArgumentNullException("domain"); } SmtpDomain domainName; if (!SmtpDomain.TryParse(domain, out domainName)) { throw new CannotResolveTenantNameException(DirectoryStrings.CannotResolveTenantNameByAcceptedDomain(domain)); } if (ConsumerIdentityHelper.IsConsumerDomain(domainName)) { return(ADSessionSettings.FromConsumerOrganization()); } OrganizationId scopingOrganizationId = OrganizationId.FromAcceptedDomain(domain); return(ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(scopingOrganizationId)); }
public static OwaMailboxPolicy GetDefaultOwaMailboxPolicy(OrganizationId orgId) { IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(orgId), 161, "GetDefaultOwaMailboxPolicy", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\OwaSegmentationSettings.cs"); OwaMailboxPolicy[] array = tenantOrTopologyConfigurationSession.Find <OwaMailboxPolicy>(null, QueryScope.SubTree, new ComparisonFilter(ComparisonOperator.Equal, OwaMailboxPolicySchema.IsDefault, true), new SortBy(ADObjectSchema.WhenChanged, SortOrder.Descending), 1); if (array != null && array.Length > 0) { return(array[0]); } return(null); }
internal override ADSessionSettings FromTenantMSAUser(string msaUserNetID) { OrganizationId scopingOrganizationId = OrganizationId.FromMSAUserNetID(msaUserNetID); return(ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(scopingOrganizationId)); }
internal override ADSessionSettings FromTenantForestAndCN(string exoAccountForest, string exoTenantContainer) { OrganizationId scopingOrganizationId = OrganizationId.FromTenantForestAndCN(exoAccountForest, exoTenantContainer); return(ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(scopingOrganizationId)); }