Не удаляется почтовый ящик на стороне
BPMSoft
Симптомы
При попытке удаления почтового ящика в системе BPMSoft возникает ошибка.
Порядок действий:
- В профиле пользователя нажимается кнопка «Учетные записи почты» для доступа к списку почтовых ящиков.
- Выбирается конкретный почтовый ящик из списка.
- Нажимается кнопка «Удалить» для удаления выбранной учетной записи.
Несмотря на выполнение всех необходимых действий, запись почтового ящика остается в системе и не удаляется.
Причина
Проблема связана с дублированием записей объекта ActivityFolder в столбце Name. В таблице ActivityFolder содержится перечень групп раздела «Активности», но также она включает список папок почтовых ящиков для синхронизации. Объект ActivityFolder косвенно связан с почтовым ящиком (MailboxSyncSettings.MailboxName = ActivityFolder.Name).
Решение
Чтобы решить эту проблему, перед удалением почтового ящика необходимо определить дубликаты записей объекта ActivityFolder по столбцу Name. Например, можно использовать следующий SQL-запрос, который также вернет зависимые записи:
DECLARE @mailboxName NVARCHAR(30) = '{Наименование целевого почтового ящика}';
SELECT Id,
CreatedOn,
[Name],
ParentId,
ROW_NUMBER() OVER(ORDER BY CreatedOn DESC) as [row_number]
INTO #ActivityFolderTemp
FROM ActivityFolder
WHERE [Name] = @mailboxName;
;WITH ActivityFolderCTE AS
(
SELECT Id, [CreatedOn], [Name], ParentId, 1 as [hierarchy_level]
FROM #ActivityFolderTemp
WHERE [Name] = @mailboxName AND
[row_number] > 1
UNION ALL
SELECT afp.Id, afp.CreatedOn, afp.[Name], afp.ParentId, af.[hierarchy_level] + 1
FROM ActivityFolderCTE af
INNER JOIN ActivityFolder afp ON af.Id = afp.ParentId
)
SELECT TOP 1000 *
FROM ActivityFolderCTE
ORDER BY CreatedOn DESC;
DROP TABLE #ActivityFolderTemp;
После определения дублирующих записей объекта ActivityFolder в отношении целевого почтового ящика, необходимо удалить зависимые от них объекты ActivityFolder (при их наличии — будут определять папки целевого почтового ящика, по которым выполняется синхронизация), а затем и сами дубли, после чего убедиться, что почтовый ящик удаляется из BPMSoft без ошибок.