protected override void InternalProcessRecord() { ADUser aduser = this.DataObject as ADUser; if (aduser == null || aduser.RecipientTypeDetails != RecipientTypeDetails.PublicFolderMailbox) { base.WriteError(new ObjectNotFoundException(Strings.PublicFolderMailboxNotFound), ExchangeErrorCategory.Client, null); } TenantPublicFolderConfiguration value = TenantPublicFolderConfigurationCache.Instance.GetValue(base.CurrentOrganizationId); if (value.GetLocalMailboxRecipient(aduser.ExchangeGuid) == null) { TenantPublicFolderConfigurationCache.Instance.RemoveValue(base.CurrentOrganizationId); } DiagnosticsLoadFlags diagnosticsLoadFlags = DiagnosticsLoadFlags.Default; if (this.IncludeDumpsterInfo) { diagnosticsLoadFlags |= DiagnosticsLoadFlags.DumpsterInfo; } if (this.IncludeHierarchyInfo) { diagnosticsLoadFlags |= DiagnosticsLoadFlags.HierarchyInfo; } PublicFolderMailboxDiagnosticsInfo sendToPipeline = PublicFolderMailboxDiagnosticsInfo.Load(base.CurrentOrganizationId, aduser.ExchangeGuid, diagnosticsLoadFlags, new Action <LocalizedString, LocalizedString, int>(base.WriteProgress)); base.WriteObject(sendToPipeline); }
public PublicFolderDataProvider(IConfigurationSession configurationSession, string action, Guid mailboxGuid) { using (DisposeGuard disposeGuard = this.Guard()) { Util.ThrowOnNullArgument(configurationSession, "configurationSession"); Util.ThrowOnNullOrEmptyArgument(action, "action"); this.currentOrganizationId = configurationSession.GetOrgContainer().OrganizationId; TenantPublicFolderConfiguration value = TenantPublicFolderConfigurationCache.Instance.GetValue(this.currentOrganizationId); if (mailboxGuid == Guid.Empty) { Organization orgContainer = configurationSession.GetOrgContainer(); if (orgContainer.DefaultPublicFolderMailbox.HierarchyMailboxGuid != value.GetHierarchyMailboxInformation().HierarchyMailboxGuid) { TenantPublicFolderConfigurationCache.Instance.RemoveValue(this.currentOrganizationId); } } else if (value.GetLocalMailboxRecipient(mailboxGuid) == null) { TenantPublicFolderConfigurationCache.Instance.RemoveValue(this.currentOrganizationId); } this.publicFolderSessionCache = new PublicFolderSessionCache(configurationSession.SessionSettings.CurrentOrganizationId, null, null, CultureInfo.InvariantCulture, string.Format("Client=Management;Action={0}", action), null, null, true); this.PublicFolderSession = this.publicFolderSessionCache.GetPublicFolderSession(mailboxGuid); disposeGuard.Success(); } }
internal PublicFolderMailboxMigrator(TenantPublicFolderConfiguration publicFolderConfiguration, List <FolderToMailboxMapping> folderToMailboxMap, Guid targetMailboxGuid, MailboxCopierFlags copierFlags, TransactionalRequestJob migrationRequestJob, BaseJob publicFolderMigrationJob, LocalizedString sourceTracingID) : base(Guid.Empty, targetMailboxGuid, migrationRequestJob, publicFolderMigrationJob, copierFlags, sourceTracingID, new LocalizedString(targetMailboxGuid.ToString())) { MrsTracer.Service.Function("PublicFolderMailboxMigrator.Constructor", new object[0]); this.publicFolderConfiguration = publicFolderConfiguration; this.folderToMailboxMap = folderToMailboxMap; this.mailboxToADObjectIdMap = new Dictionary <Guid, ADObjectId>(); }
protected override void InternalValidate() { TaskLogger.LogEnter(); try { if (MapiTaskHelper.IsDatacenter) { base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, this.Organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId); base.RescopeToOrgId(base.CurrentOrganizationId); base.OrganizationId = base.CurrentOrganizationId; } else { base.OrganizationId = OrganizationId.ForestWideOrgId; } this.DisallowPublicFolderMoveDuringFinalization(); this.targetMailboxUser = (ADUser)base.GetDataObject <ADUser>(this.TargetMailbox, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.TargetMailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.TargetMailbox.ToString())), ExchangeErrorCategory.Client); TenantPublicFolderConfigurationCache.Instance.RemoveValue(base.CurrentOrganizationId); TenantPublicFolderConfiguration value = TenantPublicFolderConfigurationCache.Instance.GetValue(base.CurrentOrganizationId); if (value.GetLocalMailboxRecipient(this.targetMailboxUser.ExchangeGuid) == null) { base.WriteError(new RecipientTaskException(Strings.ErrorCannotMovePublicFolderIntoNonPublicFolderMailbox), ErrorCategory.InvalidArgument, this.targetMailboxUser); } string text = this.GetSourceMailboxGuid().ToString(); this.sourceMailboxUser = (ADUser)base.GetDataObject <ADUser>(MailboxIdParameter.Parse(text), base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(text)), new LocalizedString?(Strings.ErrorMailboxAddressNotFound(text)), ExchangeErrorCategory.Client); if (this.sourceMailboxUser.ExchangeGuid == this.targetMailboxUser.ExchangeGuid) { base.WriteError(new RecipientTaskException(Strings.ErrorCannotMovePublicFolderIntoSameMailbox), ErrorCategory.InvalidArgument, this.targetMailboxUser); } if (!string.IsNullOrEmpty(base.Name)) { base.ValidateName(); base.RequestName = base.Name; } else { base.RequestName = "PublicFolderMove"; } ADObjectId mdbId = null; ADObjectId mdbServerSite = null; base.Flags = (RequestFlags.IntraOrg | this.LocateAndChooseMdb(value.GetLocalMailboxRecipient(this.sourceMailboxUser.ExchangeGuid).Database, value.GetLocalMailboxRecipient(this.targetMailboxUser.ExchangeGuid).Database, this.sourceMailboxUser, this.targetMailboxUser, this.targetMailboxUser, out mdbId, out mdbServerSite)); if (base.WorkloadType == RequestWorkloadType.None) { base.WorkloadType = RequestWorkloadType.Local; } base.MdbId = mdbId; base.MdbServerSite = mdbServerSite; base.WriteVerbose(Strings.RequestQueueIdentified(base.MdbId.Name)); this.CheckRequestNameAvailability(null, null, false, MRSRequestType.PublicFolderMove, this.Organization, false); base.WriteVerbose(Strings.RequestNameAvailabilityComplete); base.InternalValidate(); } finally { TaskLogger.LogExit(); } }
private void EnsureMailboxExistsOnDatabase(Guid mailboxGuid) { TenantPublicFolderConfiguration value = TenantPublicFolderConfigurationCache.Instance.GetValue(this.DataObject.OrganizationId); if (value.GetLocalMailboxRecipient(mailboxGuid) == null) { TenantPublicFolderConfigurationCache.Instance.RemoveValue(this.DataObject.OrganizationId); } using (PublicFolderSession.OpenAsAdmin(this.DataObject.OrganizationId, null, mailboxGuid, null, CultureInfo.CurrentCulture, "Client=Management;Action=UpdatePublicFolderMailbox", null)) { } }
protected virtual ADObjectId AutoSelectRequestQueueForPFRequest(OrganizationId orgId) { Guid guid = Guid.Empty; TenantPublicFolderConfigurationCache.Instance.RemoveValue(orgId); TenantPublicFolderConfiguration value = TenantPublicFolderConfigurationCache.Instance.GetValue(orgId); PublicFolderInformation hierarchyMailboxInformation = value.GetHierarchyMailboxInformation(); guid = hierarchyMailboxInformation.HierarchyMailboxGuid; if (guid == Guid.Empty) { base.WriteError(new RecipientTaskException(MrsStrings.PublicFolderMailboxesNotProvisionedForMigration), ExchangeErrorCategory.ServerOperation, null); } PublicFolderRecipient localMailboxRecipient = value.GetLocalMailboxRecipient(guid); return(localMailboxRecipient.Database); }
protected override IConfigurable ConvertDataObjectToPresentationObject(IConfigurable dataObject) { IConfigurable configurable = base.ConvertDataObjectToPresentationObject(dataObject); Mailbox mailbox = configurable as Mailbox; if (mailbox == null) { return(null); } TenantPublicFolderConfiguration value = TenantPublicFolderConfigurationCache.Instance.GetValue(mailbox.OrganizationId); bool flag = mailbox.RecipientTypeDetails == Microsoft.Exchange.Data.Directory.Recipient.RecipientTypeDetails.PublicFolderMailbox; if (!flag) { if (mailbox.DefaultPublicFolderMailboxValue == null || mailbox.DefaultPublicFolderMailboxValue.IsDeleted) { PublicFolderRecipient publicFolderRecipient = value.GetPublicFolderRecipient(mailbox.ExchangeGuid, null); if (publicFolderRecipient != null) { if (base.NeedSuppressingPiiData) { string text; string text2; mailbox.DefaultPublicFolderMailbox = SuppressingPiiData.Redact(publicFolderRecipient.ObjectId, out text, out text2); } else { mailbox.DefaultPublicFolderMailbox = publicFolderRecipient.ObjectId; } } } else { mailbox.DefaultPublicFolderMailbox = mailbox.DefaultPublicFolderMailboxValue; } } mailbox.IsRootPublicFolderMailbox = (flag && value.GetHierarchyMailboxInformation().HierarchyMailboxGuid == mailbox.ExchangeGuid); if (this.UsnForReconciliationSearch >= 0L) { mailbox.ReconciliationId = mailbox.NetID; } mailbox.ResetChangeTracking(); return(mailbox); }
protected override void WriteResult(IConfigurable dataObject) { PublicFolder publicFolder = (PublicFolder)dataObject; TenantPublicFolderConfiguration value = TenantPublicFolderConfigurationCache.Instance.GetValue(base.CurrentOrganizationId); if (value != null) { if (value.GetLocalMailboxRecipient(publicFolder.ContentMailboxGuid) == null) { TenantPublicFolderConfigurationCache.Instance.RemoveValue(base.CurrentOrganizationId); value = TenantPublicFolderConfigurationCache.Instance.GetValue(base.CurrentOrganizationId); } PublicFolderRecipient localMailboxRecipient = value.GetLocalMailboxRecipient(publicFolder.ContentMailboxGuid); publicFolder.ContentMailboxName = ((localMailboxRecipient != null) ? localMailboxRecipient.MailboxName : string.Empty); if (base.NeedSuppressingPiiData) { publicFolder.ContentMailboxName = SuppressingPiiData.Redact(publicFolder.ContentMailboxName); } publicFolder.ResetChangeTracking(); } base.WriteResult(publicFolder); }
// Token: 0x0600211A RID: 8474 RVA: 0x0007953C File Offset: 0x0007773C internal SessionSettingsType(UserContext userContext, MailboxSession mailboxSession, UserAgent userAgent, CallContext callContext, UMSettingsData umSettings, OwaHelpUrlData helpUrlData) { if (userContext == null) { throw new ArgumentNullException("userContext"); } if (userContext.ExchangePrincipal == null) { throw new OwaInvalidRequestException("userContext.ExchangePrincipal is null"); } StorePerformanceCountersCapture countersCapture = StorePerformanceCountersCapture.Start(mailboxSession); this.userDisplayName = userContext.ExchangePrincipal.MailboxInfo.DisplayName; this.userEmailAddress = userContext.ExchangePrincipal.MailboxInfo.PrimarySmtpAddress.ToString(); this.userLegacyExchangeDN = userContext.ExchangePrincipal.LegacyDn; this.hasArchive = this.UserHasArchive(userContext.ExchangePrincipal); this.archiveDisplayName = (this.hasArchive ? userContext.ExchangePrincipal.GetArchiveMailbox().ArchiveName : string.Empty); IEnumerable <string> source = from emailAddress in userContext.ExchangePrincipal.MailboxInfo.EmailAddresses select emailAddress.AddressString; if (source.Any <string>()) { this.userProxyAddresses = source.ToArray <string>(); } this.UpdateMailboxQuotaLimits(mailboxSession); this.isBposUser = userContext.IsBposUser; this.userSipUri = userContext.SipUri; this.userPrincipalName = userContext.UserPrincipalName; this.isGallatin = SessionSettingsType.GetIsGallatin(); if (userContext.ExchangePrincipal.MailboxInfo.OrganizationId != null) { this.TenantGuid = userContext.ExchangePrincipal.MailboxInfo.OrganizationId.GetTenantGuid().ToString(); } if (userContext.LogEventCommonData != null) { this.TenantDomain = userContext.LogEventCommonData.TenantDomain; } OwaUserConfigurationLogUtilities.LogAndResetPerfCapture(OwaUserConfigurationLogType.SessionSettingsMisc, countersCapture, true); int?maximumMessageSize = SessionSettingsType.GetMaximumMessageSize(mailboxSession); this.maxMessageSizeInKb = ((maximumMessageSize != null) ? maximumMessageSize.Value : 5120); OwaUserConfigurationLogUtilities.LogAndResetPerfCapture(OwaUserConfigurationLogType.SessionSettingsMessageSize, countersCapture, true); this.isPublicLogon = UserContextUtilities.IsPublicRequest(callContext.HttpContext.Request); OwaUserConfigurationLogUtilities.LogAndResetPerfCapture(OwaUserConfigurationLogType.SessionSettingsIsPublicLogon, countersCapture, true); ADUser aduser = null; if (userContext.IsExplicitLogon) { IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(null, true, ConsistencyMode.IgnoreInvalid, null, userContext.ExchangePrincipal.MailboxInfo.OrganizationId.ToADSessionSettings(), 303, ".ctor", "f:\\15.00.1497\\sources\\dev\\clients\\src\\Owa2\\Server\\Core\\types\\SessionSettingsType.cs"); aduser = (DirectoryHelper.ReadADRecipient(userContext.ExchangePrincipal.MailboxInfo.MailboxGuid, userContext.ExchangePrincipal.MailboxInfo.IsArchive, tenantOrRootOrgRecipientSession) as ADUser); if (aduser != null && aduser.SharePointUrl != null) { this.sharePointUrl = aduser.SharePointUrl.ToString(); this.sharePointTitle = aduser.DisplayName; } } OwaUserConfigurationLogUtilities.LogAndResetPerfCapture(OwaUserConfigurationLogType.TeamMailbox, countersCapture, true); if (userContext.LogonIdentity != null) { OWAMiniRecipient owaminiRecipient = userContext.LogonIdentity.GetOWAMiniRecipient(); this.LogonEmailAddress = string.Empty; if (owaminiRecipient != null) { SmtpAddress primarySmtpAddress = owaminiRecipient.PrimarySmtpAddress; this.LogonEmailAddress = owaminiRecipient.PrimarySmtpAddress.ToString(); } OwaUserConfigurationLogUtilities.LogAndResetPerfCapture(OwaUserConfigurationLogType.GetOWAMiniRecipient, countersCapture, false); } this.MailboxGuid = userContext.ExchangePrincipal.MailboxInfo.MailboxGuid.ToString(); this.isExplicitLogon = userContext.IsExplicitLogon; this.isExplicitLogonOthersMailbox = false; this.canActAsOwner = true; countersCapture = StorePerformanceCountersCapture.Start(mailboxSession); this.SetDefaultFolderMapping(mailboxSession); OwaUserConfigurationLogUtilities.LogAndResetPerfCapture(OwaUserConfigurationLogType.SetDefaultFolderMapping, countersCapture, false); CultureInfo currentUICulture = Thread.CurrentThread.CurrentUICulture; this.userCulture = currentUICulture.Name; this.isUserCultureSpeechEnabled = Culture.IsCultureSpeechEnabled(currentUICulture); this.isUserCultureRightToLeft = currentUICulture.TextInfo.IsRightToLeft; countersCapture = StorePerformanceCountersCapture.Start(mailboxSession); this.playOnPhoneDialString = umSettings.PlayOnPhoneDialString; this.isRequireProtectedPlayOnPhone = umSettings.IsRequireProtectedPlayOnPhone; this.isUMEnabled = umSettings.IsUMEnabled; if (SyncUtilities.IsDatacenterMode()) { SendAsSubscriptionsAndPeopleConnectResult allSendAsSubscriptionsAndPeopleConnect = SubscriptionManager.GetAllSendAsSubscriptionsAndPeopleConnect(mailboxSession); List <PimAggregationSubscription> pimSendAsAggregationSubscriptionList = allSendAsSubscriptionsAndPeopleConnect.PimSendAsAggregationSubscriptionList; this.PeopleConnectionsExist = allSendAsSubscriptionsAndPeopleConnect.PeopleConnectionsExist; List <AggregatedAccountInfo> list = null; if (aduser == null && userContext.ExchangePrincipal != null) { IRecipientSession tenantOrRootOrgRecipientSession2 = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(null, true, ConsistencyMode.IgnoreInvalid, null, userContext.ExchangePrincipal.MailboxInfo.OrganizationId.ToADSessionSettings(), 375, ".ctor", "f:\\15.00.1497\\sources\\dev\\clients\\src\\Owa2\\Server\\Core\\types\\SessionSettingsType.cs"); aduser = (DirectoryHelper.ReadADRecipient(userContext.ExchangePrincipal.MailboxInfo.MailboxGuid, userContext.ExchangePrincipal.MailboxInfo.IsArchive, tenantOrRootOrgRecipientSession2) as ADUser); } if (aduser != null) { AggregatedAccountHelper aggregatedAccountHelper = new AggregatedAccountHelper(mailboxSession, aduser); list = aggregatedAccountHelper.GetListOfAccounts(); } int capacity = pimSendAsAggregationSubscriptionList.Count + ((list != null) ? list.Count : 0); List <ConnectedAccountInfo> list2 = new List <ConnectedAccountInfo>(capacity); foreach (PimAggregationSubscription pimAggregationSubscription in pimSendAsAggregationSubscriptionList) { list2.Add(new ConnectedAccountInfo { SubscriptionGuid = pimAggregationSubscription.SubscriptionGuid, EmailAddress = SessionSettingsType.DecodeIdnDomain(pimAggregationSubscription.UserEmailAddress), DisplayName = pimAggregationSubscription.UserDisplayName }); } if (list != null) { foreach (AggregatedAccountInfo aggregatedAccountInfo in list) { bool flag = false; string aggregatedAccountEmail = SessionSettingsType.DecodeIdnDomain(aggregatedAccountInfo.SmtpAddress); if (!string.IsNullOrWhiteSpace(aggregatedAccountEmail)) { if (list2.Find((ConnectedAccountInfo account) => StringComparer.InvariantCultureIgnoreCase.Equals(account.EmailAddress, aggregatedAccountEmail)) != null) { break; } if (!flag) { list2.Add(new ConnectedAccountInfo { SubscriptionGuid = aggregatedAccountInfo.RequestGuid, EmailAddress = aggregatedAccountEmail, DisplayName = aggregatedAccountEmail }); } } } } this.connectedAccountInfos = list2.ToArray(); } OwaUserConfigurationLogUtilities.LogAndResetPerfCapture(OwaUserConfigurationLogType.IsDatacenterMode, countersCapture, true); this.helpUrl = helpUrlData.HelpUrl; this.isPublicComputerSession = UserContextUtilities.IsPublicComputerSession(callContext.HttpContext); string errorString = string.Empty; try { IMailboxInfo mailboxInfo = userContext.ExchangePrincipal.MailboxInfo; TenantPublicFolderConfiguration tenantPublicFolderConfiguration = null; if (TenantPublicFolderConfigurationCache.Instance.TryGetValue(mailboxInfo.OrganizationId, out tenantPublicFolderConfiguration)) { ADObjectId defaultPublicFolderMailbox = userContext.ExchangePrincipal.DefaultPublicFolderMailbox; PublicFolderRecipient publicFolderRecipient = tenantPublicFolderConfiguration.GetPublicFolderRecipient(mailboxInfo.MailboxGuid, defaultPublicFolderMailbox); if (publicFolderRecipient != null) { if (publicFolderRecipient.IsLocal) { this.DefaultPublicFolderMailbox = publicFolderRecipient.PrimarySmtpAddress.ToString(); } else if (publicFolderRecipient.ObjectId == null) { errorString = "publicFolderRecipient not local and ObjectId null"; } else { errorString = "publicFolderRecipient not local and ObjectId " + publicFolderRecipient.ObjectId.ObjectGuid; } } else { errorString = "publicFolderRecipient null"; } } } catch (LocalizedException ex) { errorString = ex.ToString(); } finally { OwaUserConfigurationLogUtilities.LogAndResetPerfCapture(OwaUserConfigurationLogType.DefaultPublicFolderMailbox, countersCapture, true, errorString); } }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); try { ADUser aduser = this.DataObject as ADUser; if (aduser == null || aduser.RecipientTypeDetails != RecipientTypeDetails.PublicFolderMailbox) { base.WriteError(new ObjectNotFoundException(Strings.PublicFolderMailboxNotFound), ExchangeErrorCategory.Client, aduser); } ExchangePrincipal exchangePrincipal = ExchangePrincipal.FromADUser(base.SessionSettings, aduser); string serverFqdn = exchangePrincipal.MailboxInfo.Location.ServerFqdn; if (this.InvokeSynchronizer) { TenantPublicFolderConfiguration value = TenantPublicFolderConfigurationCache.Instance.GetValue(aduser.OrganizationId); Organization orgContainer = this.ConfigurationSession.GetOrgContainer(); if (orgContainer.DefaultPublicFolderMailbox.HierarchyMailboxGuid != value.GetHierarchyMailboxInformation().HierarchyMailboxGuid || value.GetLocalMailboxRecipient(aduser.ExchangeGuid) == null) { TenantPublicFolderConfigurationCache.Instance.RemoveValue(aduser.OrganizationId); } if (aduser.ExchangeGuid == value.GetHierarchyMailboxInformation().HierarchyMailboxGuid) { base.WriteError(new TaskArgumentException(Strings.ErrorSecondaryMailboxIdRequired), ExchangeErrorCategory.Client, exchangePrincipal); } if (this.FullSync) { using (PublicFolderSession publicFolderSession = PublicFolderSession.OpenAsAdmin(this.DataObject.OrganizationId, null, aduser.ExchangeGuid, null, CultureInfo.CurrentCulture, "Client=Management;Action=UpdatePublicFolderMailbox", null)) { using (Folder folder = Folder.Bind(publicFolderSession, publicFolderSession.GetTombstonesRootFolderId())) { using (UserConfiguration configuration = UserConfiguration.GetConfiguration(folder, new UserConfigurationName("PublicFolderSyncInfo", ConfigurationNameKind.Name), UserConfigurationTypes.Dictionary)) { IDictionary dictionary = configuration.GetDictionary(); dictionary["SyncState"] = null; configuration.Save(); } } } } PublicFolderSyncJobState publicFolderSyncJobState = PublicFolderSyncJobRpc.StartSyncHierarchy(exchangePrincipal, this.ReconcileFolders); if (!this.SuppressStatus) { base.WriteObject(new UpdatePublicFolderMailboxResult(Strings.StatusMessageStartUpdatePublicFolderMailbox(this.Identity.ToString()))); int num = 0; while (publicFolderSyncJobState.JobStatus != PublicFolderSyncJobState.Status.Completed && publicFolderSyncJobState.LastError == null && num++ < UpdatePublicFolderMailbox.timeToWaitInMilliseconds / UpdatePublicFolderMailbox.QueryIntervalInMilliseconds) { base.WriteObject(new UpdatePublicFolderMailboxResult(Strings.StatusMessageUpdatePublicFolderMailboxUnderProgress(publicFolderSyncJobState.JobStatus.ToString()))); Thread.Sleep(UpdatePublicFolderMailbox.QueryIntervalInMilliseconds); publicFolderSyncJobState = PublicFolderSyncJobRpc.QueryStatusSyncHierarchy(exchangePrincipal); } if (publicFolderSyncJobState.LastError != null) { base.WriteError(publicFolderSyncJobState.LastError, ExchangeErrorCategory.ServerOperation, publicFolderSyncJobState); } if (publicFolderSyncJobState.JobStatus == PublicFolderSyncJobState.Status.Completed) { base.WriteObject(new UpdatePublicFolderMailboxResult(Strings.StatusMessageUpdatePublicFolderMailboxCompleted)); } else { base.WriteObject(new UpdatePublicFolderMailboxResult(Strings.StatusMessageSynchronizerRunningInBackground)); } } } else if (aduser.ExchangeGuid != Guid.Empty) { MailboxDatabase mailboxDatabase = base.GlobalConfigSession.Read <MailboxDatabase>(aduser.Database); if (mailboxDatabase == null) { base.WriteError(new TaskArgumentException(Strings.ElcMdbNotFound(this.Identity.ToString())), ExchangeErrorCategory.Client, null); } this.EnsureMailboxExistsOnDatabase(aduser.ExchangeGuid); AssistantsRpcClient assistantsRpcClient = new AssistantsRpcClient(serverFqdn); try { assistantsRpcClient.Start("PublicFolderAssistant", aduser.ExchangeGuid, mailboxDatabase.Guid); } catch (RpcException ex) { base.WriteError(new TaskException(RpcUtility.MapRpcErrorCodeToMessage(ex.ErrorCode, serverFqdn)), ExchangeErrorCategory.Client, null); } } } finally { TaskLogger.LogExit(); } }