Не выполняется ручная синхронизация почты по кнопке «Синхронизировать
почту»
В BPMSoft при нажатии на кнопку «Синхронизировать почту» в коммуникационной панели справа отсутствует уведомление о начале синхронизации с текстом «Синхронизация начата. Мы покажем вам уведомление, когда она завершится.». Кроме того, целевые письма не были загружены в систему.
Симптомы
При воспроизведении сценария ручной синхронизации наблюдается следующее:
- После нажатия на кнопку «Синхронизировать почту» в коммуникационной панели справа не отображается уведомление с текстом: «Синхронизация начата. Мы покажем вам уведомление, когда она завершится.»
- В HAR-файле, записанном в момент запуска синхронизации, отсутствуют вызовы, свидетельствующие о запуске механизма ручной синхронизации:
- Для провайдеров Exchange должен фиксироваться вызов эндпоинта:
{bpmsoft_url}/0/rest/MailboxSettingsService/CreateEmailSyncJob
(в теле запроса параметр senderEmailAddress должен содержать адрес целевого почтового ящика); - Для провайдеров IMAP/SMTP должен фиксироваться вызов эндпоинта:
{bpmsoft_url}ServiceModel/ProcessEngineService.svc/LoadImapEmailsProcess/RunProcess
(в параметре запроса MailBoxFolderId указывается идентификатор объекта ActivityFolder, связанный с целевым почтовым ящиком).
- Для провайдеров Exchange должен фиксироваться вызов эндпоинта:
- В логах почтового сервиса отсутствуют записи о вызове метода ../api/email/synchronize, отвечающего за загрузку писем за указанный временной интервал. Это указывает на то, что синхронизация с почтовым сервером не инициировалась.
- Целевые письма не отображаются в системе, что подтверждает неуспешную попытку синхронизации.
Решение
Проблема может возникать в случае отсутствия записи, соответствующей целевому почтовому ящику, в системной таблице ActivityFolder. Между почтовым ящиком и папкой существует неявная связь по полю MailboxSyncSettings.MailboxName = ActivityFolder.Name.
Если соответствующая запись в таблице ActivityFolder отсутствует, механизм синхронизации не может быть запущен.
Для устранения проблемы необходимо выполнить одно из действий:
- Удалить и заново создать целевой почтовый ящик через интерфейс приложения BPMSoft;
- Воссоздать отсутствующую строку в таблице ActivityFolder вручную с помощью SQL-запроса.
Пример SQL-запроса для добавления записи:
INSERT INTO ActivityFolder (
Id,
CreatedOn,
CreatedById,
ModifiedOn,
ModifiedById,
[Name],
[Description],
ParentId,
FolderTypeId,
SearchData,
ProcessListeners,
FolderEmbeddedProcessId,
Synchronize,
OptimizationType
)
SELECT TOP 1 NEWID(),
GETUTCDATE(),
mss.CreatedById,
GETUTCDATE(),
mss.CreatedById,
mss.MailboxName,
N'',
'181f9d34-5dee-e011-a86b-00155d04c01d',
'99c2351c-f0f8-e111-9dba-00155d051801',
NULL,
0,
NULL,
1,
0
FROM MailboxSyncSettings as mss
WHERE mss.MailboxName = N'{target_mailbox_name}';
INSERT INTO "ActivityFolder" (
"Id",
"CreatedOn",
"CreatedById",
"ModifiedOn",
"ModifiedById",
"Name",
"Description",
"ParentId",
"FolderTypeId",
"SearchData",
"ProcessListeners",
"FolderEmbeddedProcessId",
"Synchronize",
"OptimizationType"
)
SELECT UUID_GENERATE_V4(),
current_timestamp at time zone 'utc',
mss."CreatedById",
current_timestamp at time zone 'utc',
mss."CreatedById",
mss."MailboxName",
N'',
'181f9d34-5dee-e011-a86b-00155d04c01d',
'99c2351c-f0f8-e111-9dba-00155d051801',
NULL,
0,
NULL,
true,
0
FROM "MailboxSyncSettings" as mss
WHERE mss."MailboxName" = N'{target_mailbox_name}'
LIMIT 1;
Где {target_mailbox_name} — наименование целевого почтового ящика.
После выполнения запроса необходимо повторно проверить механизм ручной синхронизации почты.