private MailboxDatabase GetExecutingUserDatabase(ITopologyConfigurationSession topologyConfigSession) { this.WriteDebugInfo("Executing user:{0}", new object[] { this.ExecutingUser }); ADObjectId databaseId = null; ADSessionSettings sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(base.CurrentOrganizationId.OrganizationalUnit, base.CurrentOrganizationId, base.CurrentOrganizationId, true); IRecipientSession session = DirectorySessionFactory.Default.CreateTenantRecipientSession(true, ConsistencyMode.PartiallyConsistent, sessionSettings, 1098, "GetExecutingUserDatabase", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\RecipientTasks\\GroupMailbox\\NewGroupMailbox.cs"); Exception ex = GroupMailboxContext.ExecuteADOperationAndHandleException(delegate { ADUser aduser = (ADUser)this.GetDataObject <ADUser>(this.ExecutingUser, session, this.CurrentOrganizationId.OrganizationalUnit, null, new LocalizedString?(Strings.ErrorRecipientNotFound(this.ExecutingUser.ToString())), new LocalizedString?(Strings.ErrorRecipientNotUnique(this.ExecutingUser.ToString())), ExchangeErrorCategory.Client); databaseId = aduser.Database; this.WriteDebugInfo("Located local database for the executing user:{0}", new object[] { databaseId }); }); if (ex != null) { this.WriteDebugInfo("Unable to find database belonging to the executing user because:{0}", new object[] { ex }); } if (databaseId != null) { return(topologyConfigSession.Read <MailboxDatabase>(databaseId)); } return(null); }
internal ADGroup ResolveGroup(RecipientIdParameter id, out Exception exception) { if (id == null) { throw new ArgumentNullException("id"); } ADGroup group = null; exception = GroupMailboxContext.ExecuteADOperationAndHandleException(delegate { group = (ADGroup)this.getGroupDataObject(id, this.adSession, this.currentOrganizationId.OrganizationalUnit, null, new LocalizedString?(Strings.ErrorRecipientNotFound((string)id)), new LocalizedString?(Strings.ErrorRecipientNotUnique((string)id)), ExchangeErrorCategory.Client); }); return(group); }
internal ADUser ResolveUser(RecipientIdParameter id, out Exception exception) { this.AddVerboseLog("Start: ResolveUser"); if (id == null) { throw new ArgumentNullException("id"); } ADUser user; if (this.resolveUserCache.TryGetValue(id.RawIdentity, out user)) { exception = null; return(user); } exception = GroupMailboxContext.ExecuteADOperationAndHandleException(delegate { user = (ADUser)this.getUserDataObject(id, this.adSession, this.currentOrganizationId.OrganizationalUnit, null, new LocalizedString?(Strings.ErrorRecipientNotFound((string)id)), new LocalizedString?(Strings.ErrorRecipientNotUnique((string)id)), ExchangeErrorCategory.Client); }); Guid guid; if (exception is ManagementObjectNotFoundException && Guid.TryParse(id.RawIdentity, out guid)) { GroupMailboxContext.ExecuteADOperationAndHandleException(delegate { user = this.adSession.FindADUserByExternalDirectoryObjectId(id.RawIdentity); }); if (user != null) { exception = null; } } if (exception == null && user != null) { this.resolveUserCache.Add(id.RawIdentity, user); } this.AddVerboseLog("End: ResolveUser"); return(user); }