internal static ADSessionSettings RescopeToOrganization(ADSessionSettings sessionSettings, OrganizationId orgId, bool checkOrgScope, bool rehomeDataSession = true) { if (sessionSettings == null) { throw new ArgumentNullException("sessionSettings"); } if (orgId != null && orgId.OrganizationalUnit == null && sessionSettings.RecipientReadScope.Root == null) { return(sessionSettings); } if (sessionSettings.CurrentOrganizationId != null && sessionSettings.CurrentOrganizationId.Equals(orgId)) { return(sessionSettings); } ScopeSet scopeSet = ScopeSet.ResolveUnderScope(orgId, sessionSettings.ScopeSet, checkOrgScope); ADSessionSettings adsessionSettings = ADSessionSettings.FromCustomScopeSet(scopeSet, sessionSettings.RootOrgId, orgId, checkOrgScope ? sessionSettings.ExecutingUserOrganizationId : OrganizationId.ForestWideOrgId, rehomeDataSession); ADSessionSettings.CloneSettableProperties(sessionSettings, adsessionSettings); return(adsessionSettings); }