public static void TeamMailboxDiagnosticsPostAction(DataRow inputRow, DataTable dataTable, DataObjectStore store) { TeamMailboxDiagnosticsInfo teamMailboxDiagnosticsInfo = store.GetDataObject("TeamMailboxDiagnosticsInfo") as TeamMailboxDiagnosticsInfo; if (dataTable.Rows.Count == 1 && teamMailboxDiagnosticsInfo != null) { if (teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.NotAvailable) { dataTable.Rows[0]["DocumentSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncNotAvailable; dataTable.Rows[0]["MembershipSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncNotAvailable; dataTable.Rows[0]["MaintenanceSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncNotAvailable; } else { dataTable.Rows[0]["DocumentSyncStatus"] = ((teamMailboxDiagnosticsInfo.HierarchySyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : OwaOptionClientStrings.TeamMailboxSyncSuccess); dataTable.Rows[0]["MembershipSyncStatus"] = ((teamMailboxDiagnosticsInfo.MembershipSyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : OwaOptionClientStrings.TeamMailboxSyncSuccess); dataTable.Rows[0]["MaintenanceSyncStatus"] = ((teamMailboxDiagnosticsInfo.MaintenanceSyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : OwaOptionClientStrings.TeamMailboxSyncSuccess); } if (teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.Failed || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.DocumentSyncFailureOnly || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.DocumentAndMembershipSyncFailure || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.DocumentAndMaintenanceSyncFailure) { dataTable.Rows[0]["DocumentSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncError; } if (teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.Failed || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.MembershipSyncFailureOnly || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.DocumentAndMembershipSyncFailure || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.MembershipAndMaintenanceSyncFailure) { dataTable.Rows[0]["MembershipSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncError; } if (teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.Failed || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.MaintenanceSyncFailureOnly || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.MembershipAndMaintenanceSyncFailure || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.DocumentAndMaintenanceSyncFailure) { dataTable.Rows[0]["MaintenanceSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncError; } dataTable.Rows[0]["MembershipSyncDate"] = ((teamMailboxDiagnosticsInfo.MembershipSyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : ((DateTime)teamMailboxDiagnosticsInfo.MembershipSyncInfo.LastAttemptedSyncTime.Value).UtcToUserDateTimeString()); dataTable.Rows[0]["MaintenanceSyncDate"] = ((teamMailboxDiagnosticsInfo.MaintenanceSyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : ((DateTime)teamMailboxDiagnosticsInfo.MaintenanceSyncInfo.LastAttemptedSyncTime.Value).UtcToUserDateTimeString()); dataTable.Rows[0]["DocumentSyncDate"] = ((teamMailboxDiagnosticsInfo.HierarchySyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : ((DateTime)teamMailboxDiagnosticsInfo.HierarchySyncInfo.LastAttemptedSyncTime.Value).UtcToUserDateTimeString()); dataTable.Rows[0]["SynchronizationDetails"] = teamMailboxDiagnosticsInfo.ToString(); dataTable.Rows[0]["MembershipSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncStatus + dataTable.Rows[0]["MembershipSyncStatus"]; dataTable.Rows[0]["MembershipSyncDate"] = OwaOptionClientStrings.TeamMailboxSyncDate + dataTable.Rows[0]["MembershipSyncDate"]; dataTable.Rows[0]["MaintenanceSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncStatus + dataTable.Rows[0]["MaintenanceSyncStatus"]; dataTable.Rows[0]["MaintenanceSyncDate"] = OwaOptionClientStrings.TeamMailboxSyncDate + dataTable.Rows[0]["MaintenanceSyncDate"]; dataTable.Rows[0]["DocumentSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncStatus + dataTable.Rows[0]["DocumentSyncStatus"]; dataTable.Rows[0]["DocumentSyncDate"] = OwaOptionClientStrings.TeamMailboxSyncDate + dataTable.Rows[0]["DocumentSyncDate"]; dataTable.Rows[0]["TeamMailboxMembershipString1"] = OwaOptionClientStrings.TeamMailboxMembershipString1; dataTable.Rows[0]["TeamMailboxMembershipString2"] = OwaOptionClientStrings.TeamMailboxMembershipString2; dataTable.Rows[0]["TeamMailboxMembershipString3"] = OwaOptionClientStrings.TeamMailboxMembershipString3; dataTable.Rows[0]["TeamMailboxMembershipString4"] = OwaOptionClientStrings.TeamMailboxMembershipString4; dataTable.Rows[0]["TeamMailboxStartedMembershipSync"] = OwaOptionClientStrings.TeamMailboxStartedMembershipSync; dataTable.Rows[0]["TeamMailboxStartedMaintenanceSync"] = OwaOptionClientStrings.TeamMailboxStartedMaintenanceSync; dataTable.Rows[0]["TeamMailboxStartedDocumentSync"] = OwaOptionClientStrings.TeamMailboxStartedDocumentSync; } }
protected override void InternalProcessRecord() { foreach (KeyValuePair <ADUser, ExchangePrincipal> entry in base.TMPrincipals) { TeamMailboxDiagnosticsInfo teamMailboxDiagnosticsInfo = null; try { teamMailboxDiagnosticsInfo = this.GetOneTeamMailboxDiagnosticsInfo(entry); } catch (StorageTransientException ex) { base.WriteError(new RecipientTaskException(Strings.ErrorGetSiteMailboxDiagnostics(entry.Value.MailboxInfo.DisplayName, ex.Message), ex), ExchangeErrorCategory.ServerTransient, null); } catch (StoragePermanentException ex2) { base.WriteError(new RecipientTaskException(Strings.ErrorGetSiteMailboxDiagnostics(entry.Value.MailboxInfo.DisplayName, ex2.Message), ex2), ExchangeErrorCategory.ServerOperation, null); } base.WriteObject(teamMailboxDiagnosticsInfo); if (base.Fields.IsModified("SendMeEmail")) { ADObjectId item; if (!base.TryGetExecutingUserId(out item)) { base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxCannotIdentifyTheUser), ExchangeErrorCategory.Client, null); } TeamMailbox teamMailbox = TeamMailbox.FromDataObject(entry.Key); TeamMailboxNotificationHelper teamMailboxNotificationHelper = new TeamMailboxNotificationHelper(teamMailbox, (IRecipientSession)base.DataSession); try { teamMailboxNotificationHelper.SendNotification(new List <ADObjectId> { item }, Strings.SiteMailboxDiagnosticsEmailSubject(teamMailbox.DisplayName), teamMailboxDiagnosticsInfo.ToString(), RemotingOptions.AllowCrossSite); } catch (StorageTransientException ex3) { base.WriteError(new RecipientTaskException(Strings.ErrorSendNotificationForSiteMailbox(teamMailbox.DisplayName, ex3.Message), ex3), ExchangeErrorCategory.ServerTransient, null); } catch (StoragePermanentException ex4) { base.WriteError(new RecipientTaskException(Strings.ErrorSendNotificationForSiteMailbox(teamMailbox.DisplayName, ex4.Message), ex4), ExchangeErrorCategory.ServerOperation, null); } } } }
private TeamMailboxDiagnosticsInfo GetOneTeamMailboxDiagnosticsInfo(KeyValuePair <ADUser, ExchangePrincipal> entry) { TeamMailboxDiagnosticsInfo teamMailboxDiagnosticsInfo = new TeamMailboxDiagnosticsInfo(entry.Value.MailboxInfo.DisplayName); MultiValuedProperty <SyncInfo> multiValuedProperty = new MultiValuedProperty <SyncInfo>(); bool flag = false; bool flag2 = false; bool flag3 = false; TeamMailboxDiagnosticsInfo result; using (MailboxSession mailboxSession = MailboxSession.OpenAsAdmin(entry.Value, CultureInfo.InvariantCulture, "Client=TeamMailbox;Action=GetDiagnostics;Interactive=False")) { using (UserConfiguration mailboxConfiguration = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "SiteSynchronizerConfigurations", UserConfigurationTypes.Dictionary, false)) { if (mailboxConfiguration != null) { teamMailboxDiagnosticsInfo.HierarchySyncInfo = GetSiteMailboxDiagnostics.GetSyncInfoFromMetadata(entry.Value.MailboxInfo.DisplayName, (entry.Key.SharePointUrl != null) ? entry.Key.SharePointUrl.AbsoluteUri : string.Empty, mailboxConfiguration); if (!string.IsNullOrEmpty(teamMailboxDiagnosticsInfo.HierarchySyncInfo.LastSyncFailure)) { flag = true; } } } using (Folder folder = Folder.Bind(mailboxSession, DefaultFolderType.Root)) { using (QueryResult queryResult = folder.FolderQuery(FolderQueryFlags.None, new ExistsFilter(FolderSchema.LinkedId), null, new PropertyDefinition[] { FolderSchema.Id, FolderSchema.DisplayName, FolderSchema.LinkedUrl })) { object[][] array = null; do { array = queryResult.GetRows(10000); for (int i = 0; i < array.Length; i++) { StoreObjectId objectId = ((VersionedId)array[i][0]).ObjectId; string displayName = array[i][1] as string; string url = array[i][2] as string; using (UserConfiguration folderConfiguration = UserConfigurationHelper.GetFolderConfiguration(mailboxSession, objectId, "DocumentLibSynchronizerConfigurations", UserConfigurationTypes.Dictionary, false, false)) { if (folderConfiguration != null) { SyncInfo syncInfoFromMetadata = GetSiteMailboxDiagnostics.GetSyncInfoFromMetadata(displayName, url, folderConfiguration); multiValuedProperty.Add(syncInfoFromMetadata); if (!string.IsNullOrEmpty(syncInfoFromMetadata.LastSyncFailure)) { flag = true; } } } } }while (array.Length != 0); } } teamMailboxDiagnosticsInfo.DocLibSyncInfos = multiValuedProperty; using (UserConfiguration mailboxConfiguration2 = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "TeamMailboxDocumentLastSyncCycleLog", UserConfigurationTypes.Stream, false)) { if (mailboxConfiguration2 != null) { using (Stream stream = mailboxConfiguration2.GetStream()) { byte[] array2 = new byte[stream.Length]; stream.Read(array2, 0, array2.Length); teamMailboxDiagnosticsInfo.LastDocumentSyncCycleLog = Encoding.ASCII.GetString(array2); } } } using (UserConfiguration mailboxConfiguration3 = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "MembershipSynchronizerConfigurations", UserConfigurationTypes.Dictionary, false)) { if (mailboxConfiguration3 != null) { teamMailboxDiagnosticsInfo.MembershipSyncInfo = GetSiteMailboxDiagnostics.GetSyncInfoFromMetadata(entry.Value.MailboxInfo.DisplayName, (entry.Key.SharePointUrl != null) ? entry.Key.SharePointUrl.AbsoluteUri : string.Empty, mailboxConfiguration3); if (!string.IsNullOrEmpty(teamMailboxDiagnosticsInfo.MembershipSyncInfo.LastSyncFailure)) { flag2 = true; } } } using (UserConfiguration mailboxConfiguration4 = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "TeamMailboxMembershipLastSyncCycleLog", UserConfigurationTypes.Stream, false)) { if (mailboxConfiguration4 != null) { using (Stream stream2 = mailboxConfiguration4.GetStream()) { byte[] array3 = new byte[stream2.Length]; stream2.Read(array3, 0, array3.Length); teamMailboxDiagnosticsInfo.LastMembershipSyncCycleLog = Encoding.ASCII.GetString(array3); } } } using (UserConfiguration mailboxConfiguration5 = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "MaintenanceSynchronizerConfigurations", UserConfigurationTypes.Dictionary, false)) { if (mailboxConfiguration5 != null) { teamMailboxDiagnosticsInfo.MaintenanceSyncInfo = GetSiteMailboxDiagnostics.GetSyncInfoFromMetadata(entry.Value.MailboxInfo.DisplayName, (entry.Key.SharePointUrl != null) ? entry.Key.SharePointUrl.AbsoluteUri : string.Empty, mailboxConfiguration5); if (!string.IsNullOrEmpty(teamMailboxDiagnosticsInfo.MaintenanceSyncInfo.LastSyncFailure)) { flag3 = true; } } } using (UserConfiguration mailboxConfiguration6 = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "TeamMailboxMaintenanceLastSyncCycleLog", UserConfigurationTypes.Stream, false)) { if (mailboxConfiguration6 != null) { using (Stream stream3 = mailboxConfiguration6.GetStream()) { byte[] array4 = new byte[stream3.Length]; stream3.Read(array4, 0, array4.Length); teamMailboxDiagnosticsInfo.LastMaintenanceSyncCycleLog = Encoding.ASCII.GetString(array4); } } } if (!flag && !flag2 && !flag3) { teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.Succeeded; } else if (flag && !flag2 && !flag3) { teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.DocumentSyncFailureOnly; } else if (!flag && flag2 && !flag3) { teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.MembershipSyncFailureOnly; } else if (!flag && !flag2 && flag3) { teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.MaintenanceSyncFailureOnly; } else if (flag && flag2 && !flag3) { teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.DocumentAndMembershipSyncFailure; } else if (!flag && flag2 && flag3) { teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.MembershipAndMaintenanceSyncFailure; } else if (flag && !flag2 && flag3) { teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.DocumentAndMaintenanceSyncFailure; } else { teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.Failed; } result = teamMailboxDiagnosticsInfo; } return(result); }