protected override IConfigDataProvider CreateSession() { OrganizationIdParameter organization = null; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId); if (this.publicFolderDataProvider == null || base.CurrentOrganizationId != this.publicFolderDataProvider.CurrentOrganizationId) { if (this.publicFolderDataProvider != null) { this.publicFolderDataProvider.Dispose(); this.publicFolderDataProvider = null; } try { this.publicFolderDataProvider = new PublicFolderDataProvider(this.ConfigurationSession, "Remove-PublicFolder", Guid.Empty); } catch (AccessDeniedException exception) { base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity); } } return(this.publicFolderDataProvider); }
protected override OrganizationId ResolveCurrentOrganization() { if (MapiTaskHelper.IsDatacenter) { OrganizationIdParameter organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(base.Organization, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); return(MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId)); } return(base.CurrentOrganizationId ?? base.ExecutingUserOrganizationId); }
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(); } }
protected override ADUser PrepareMailboxUser() { OrganizationIdParameter organization = null; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId); base.Identity = PublicFolderPermissionTaskHelper.GetMailboxFolderIdParameterForPublicFolder(this.ConfigurationSession, this.Identity, Guid.Empty, null, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.WriteError)); return(base.PrepareMailboxUser()); }
protected sealed override IConfigDataProvider CreateSession() { OrganizationIdParameter organization = null; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(this.Organization, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, base.RootOrgContainerId, base.CurrentOrganizationId, base.ExecutingUserOrganizationId); this.rootId = null; if ((this.Recurse.IsPresent || this.GetChildren.IsPresent) && this.Identity != null) { this.rootId = this.Identity.PublicFolderId; this.Identity = null; } if (this.publicFolderDataProvider == null || base.CurrentOrganizationId != this.publicFolderDataProvider.CurrentOrganizationId) { if (this.publicFolderDataProvider != null) { this.publicFolderDataProvider.Dispose(); this.publicFolderDataProvider = null; } Guid mailboxGuid = Guid.Empty; if (base.Fields.IsModified("Mailbox")) { ADUser aduser = (ADUser)base.GetDataObject <ADUser>(this.Mailbox, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), ExchangeErrorCategory.Client); this.VerifyIsPublicFolderMailbox(aduser); mailboxGuid = aduser.ExchangeGuid; } try { this.publicFolderDataProvider = new PublicFolderDataProvider(this.ConfigurationSession, "Get-PublicFolder", mailboxGuid); } catch (AccessDeniedException exception) { base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity); } } if (this.ResidentFolders.IsPresent) { this.contentMailboxGuid = this.publicFolderDataProvider.PublicFolderSession.MailboxGuid; this.inputFilter = new ComparisonFilter(ComparisonOperator.Equal, FolderSchema.ReplicaListBinary, this.contentMailboxGuid.ToByteArray()); } return(this.publicFolderDataProvider); }
protected override IConfigDataProvider CreateSession() { OrganizationIdParameter organization = null; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId); if (this.publicFolderDataProvider == null || base.CurrentOrganizationId != this.publicFolderDataProvider.CurrentOrganizationId) { if (this.OverrideContentMailbox != null) { IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(base.DomainController, true, ConsistencyMode.PartiallyConsistent, null, base.SessionSettings, 337, "CreateSession", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\MapiTasks\\PublicFolder\\SetPublicFolder.cs"); ADUser aduser = (ADUser)base.GetDataObject <ADUser>(this.OverrideContentMailbox, tenantOrRootOrgRecipientSession, null, new LocalizedString?(Strings.ErrorMailboxNotFound(this.OverrideContentMailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxNotUnique(this.OverrideContentMailbox.ToString()))); if (aduser == null || aduser.RecipientTypeDetails != RecipientTypeDetails.PublicFolderMailbox) { base.WriteError(new RecipientTaskException(Strings.ErrorInvalidContentMailbox(this.OverrideContentMailbox.ToString())), ErrorCategory.InvalidArgument, aduser); } if (TenantPublicFolderConfigurationCache.Instance.GetValue(base.CurrentOrganizationId).GetLocalMailboxRecipient(aduser.ExchangeGuid) == null) { TenantPublicFolderConfigurationCache.Instance.RemoveValue(base.CurrentOrganizationId); } this.contentMailboxGuid = aduser.ExchangeGuid; } if (this.publicFolderDataProvider != null) { this.publicFolderDataProvider.Dispose(); this.publicFolderDataProvider = null; } try { this.publicFolderDataProvider = new PublicFolderDataProvider(this.ConfigurationSession, "Set-PublicFolder", Guid.Empty); } catch (AccessDeniedException exception) { base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity); } } return(this.publicFolderDataProvider); }
protected override ADUser PrepareMailboxUser() { OrganizationIdParameter organization = null; ADUser aduser = null; Guid publicFolderMailboxGuid = Guid.Empty; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(null, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId); if (base.Fields.IsModified("Mailbox")) { aduser = (ADUser)base.GetDataObject <ADUser>(this.Mailbox, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), ExchangeErrorCategory.Client); if (aduser == null || aduser.RecipientTypeDetails != RecipientTypeDetails.PublicFolderMailbox) { base.WriteError(new ObjectNotFoundException(Strings.PublicFolderMailboxNotFound), ExchangeErrorCategory.Client, aduser); } publicFolderMailboxGuid = aduser.ExchangeGuid; } base.Identity = PublicFolderPermissionTaskHelper.GetMailboxFolderIdParameterForPublicFolder(this.ConfigurationSession, this.Identity, publicFolderMailboxGuid, aduser, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.WriteError)); return(base.PrepareMailboxUser()); }
protected sealed override IConfigDataProvider CreateSession() { OrganizationIdParameter organization = null; if (MapiTaskHelper.IsDatacenter) { organization = MapiTaskHelper.ResolveTargetOrganizationIdParameter(this.Organization, this.Identity, base.CurrentOrganizationId, new Task.ErrorLoggerDelegate(base.ThrowTerminatingError), new Task.TaskWarningLoggingDelegate(this.WriteWarning)); } base.CurrentOrganizationId = MapiTaskHelper.ResolveTargetOrganization(base.DomainController, organization, ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), base.CurrentOrganizationId, base.ExecutingUserOrganizationId); if (this.publicFolderStatisticsDataProvider == null || base.CurrentOrganizationId != this.publicFolderStatisticsDataProvider.CurrentOrganizationId) { if (this.publicFolderStatisticsDataProvider != null) { this.publicFolderStatisticsDataProvider.Dispose(); this.publicFolderStatisticsDataProvider = null; } Guid mailboxGuid = Guid.Empty; if (base.Fields.IsModified("MailboxInformation")) { ADUser aduser = (ADUser)base.GetDataObject <ADUser>(this.Mailbox, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.Mailbox.ToString())), ExchangeErrorCategory.Client); if (aduser == null || aduser.RecipientTypeDetails != RecipientTypeDetails.PublicFolderMailbox) { base.WriteError(new ObjectNotFoundException(Strings.PublicFolderMailboxNotFound), ExchangeErrorCategory.Client, aduser); } mailboxGuid = aduser.ExchangeGuid; } try { this.publicFolderStatisticsDataProvider = new PublicFolderStatisticsDataProvider(this.ConfigurationSession, "Get-PublicFolderStatistics", mailboxGuid); } catch (AccessDeniedException exception) { base.WriteError(exception, ErrorCategory.PermissionDenied, this.Identity); } } return(this.publicFolderStatisticsDataProvider); }
protected override OrganizationId ResolveCurrentOrganization() { return(MapiTaskHelper.ResolveTargetOrganization(base.DomainController, this.Organization, base.RootOrgContainerId, base.CurrentOrganizationId, base.ExecutingUserOrganizationId)); }