Управление приложениями и интеграциями

Интеграция Плагина (Case.one SDK)

Как подключить плагин? Как добавить плагин на боковую панель?

С помощью Case.one SDK доступно подключить Плагин, на базе которого вы можете самостоятельно создать приложение для встраивания в боковую панель с AI-ассистентом в Case.one — например, можно встроить бота, который будет напоминать о планах на день или о просроченных задачах.


JavaScript Case.one SDK — набор инструментов разработки для Case.one (библиотека), расширяющих базовый функционал JavaScript SPA Case.one дополнительной бизнес-логикой.

JavaScript-файл (Плагин) стороннего приложения можно подключить к основному приложению Case.one в интерфейсе внешнего приложения (IExternalApplication). При запуске основного приложения происходит инициализация сторонних плагинов в виде Web Worker.


После подключения Плагина с помощью скрипта вы можете его включить или выключить в разделе Администрирование Приложения.


Чтобы узнать, как подключить Плагин, обратитесь, пожалуйста, в нашу службу поддержки.


Особенности реализации Плагина:

  • Подключение плагина выполняется для каждого инстанса отдельно
  • Внутри плагина можно использовать скрипты для операций над задачами, или карточками объектов и дел
  • Плагин может автоматически открывать или закрывать боковую панель сразу на нужной вкладке
  • Можно настроить вкладки на боковой панели Case.one — для каждой вкладки необходимо указать следующую информацию:
    • Название вкладки
    • HTML-контент — контент будет отображаться на правой панели на отдельной вкладке вместо текущего помощника
    • ID — порядковый номер вкладки

У AI-ассистента Case.one порядковый номер (по умолчанию) — 5.


  • Плагин может использовать методы SDK, позволяющие получить следующую дополнительную информацию от Case.one:
    • Информацию по авторизованному пользователю
    • Токен авторизованного пользователя
    • Настройки приложения
    • Название открытого объекта
    • Класс объекта
    • Тип объекта
    • Ответственный
    • Стадия
    • Статус
    • Проект
    • Папка
    • Дата создания
    • Дата изменения

Интеграция с почтовыми сервисами

Как подключить стороннюю почту? Как настроить IMAP и SMTP в Case.one? Как подключить Яндекс почту? Как подключить Google почту?

Подключение почтовых сервисов с помощью протоколов IMAP и SMTP универсально и позволяет настроить получение и отправку почты в Case.one с любого почтового сервиса.

Чтобы подключить протоколы IMAP или SMTP:

  1. Перейдите в раздел Администрирование — Приложения.
  2. Выберите в блоке Почта IMAP/SMTP и нажмите кнопку Подключить.
  3. Укажите параметры для подключения:
    • Название — название подключения (максимальная длина — 256 символов)
    • Сервер IMAP — максимальная длина составляет 2048 символов
    • Порт — порт IMAP-сервера, поле Порт должно иметь значения в диапазоне 0-65535
    • Параметры шифрования — выбор параметров шифрования для IMAP-подключения из справочника:
      • Нет
      • SSL/TLS (по умолчанию)
      • STARTTLS
      • Авто
    • Сервер SMTP — максимальная длина составляет 2048 символов
    • Порт — порт SMTP-сервера, поле Порт должно иметь значения в диапазоне 0-65535
    • Параметры шифрования — выбор параметров шифрования для SMTP-подключения из справочника:
      • Нет
      • SSL/TLS (по умолчанию)
      • STARTTLS
      • Авто


При создании или редактирования подключения выполняется проверка корректности заполненных данных. Если проверка не пройдена, отобразится ошибка.

Узнать параметры подключения:


Обратите внимание, что предусмотрены следующие ограничения:

  • При отключении почтового сервера у вас будет сброшена авторизация к данному почтовому серверу
  • При повторном включении предыдущие настройки недоступны — вам будет необходимо заново настроить свои учетные записи
  • Отправка писем через SMTP недоступна для клиентов

После подключения протоколов IMAP и SMTP настройте ваш почтовый ящик в профиле Case.one.


После подключения протоколов IMAP и SMTP в профиле на вкладке Приложения отобразится новая почта, которая доступна для подключения.


Интеграция с SSO Keycloak

Интеграцию с SSO (Single Sign-On — технология единого входа) Keycloak (на базе Open ID) можно использовать, если нет возможности подключить интеграцию с Active Directory.

Интеграция с SSO позволяет:

  • Выполнять защищенный вход в приложение через единую учетную запись.
  • Создавать и изменять пользователей.
  • Назначать роли пользователям.
  • Просматривать список пользователей, которые находятся онлайн на инстансе в данный момент (аналогично просмотру пользователей со статусом В сети). Список активных пользователей вы можете просмотреть только на данный момент, без возможности просмотра данных в прошлом.

Подключить интеграцию вы можете в файле конфигурации с помощью специальной настройки:

  • Если настройка включена, все пользователи при входе или выходе из Case.one будут перенаправлены на страницу аутентификации Keycloak.
  • Если настройка выключена, используется аутентификация согласно настройкам приложения.

При включенной интеграции с SSO Keycloak в Case.one недоступно:

  • Создание пользователей.
  • Редактирование сведений о пользователе в Case.one, которые указаны в обязательных полях и синхронизируются с SSO Keycloak.
  • Изменение ролей пользователей.
  • Изменение групп у пользователей.

Авторизация через SSO

При передаче данных SSO Keycloack в Case.one поиск пользователя в Case.one выполняется по значению параметра email.


Благодаря проверке по адресу электронной почты не возникнет ошибка авторизации, связанная с повторным созданием ранее созданного пользователя в SSO Keycloak на другом сервере SSO Keycloak.


При попытке авторизации пользователя с уже зарегистрированным адресом электронной почты:

  • Если внешний идентификатор не совпадает:
    • Выполнится связь пользователя в Case.one с данными из SSO Keycloack
    • Пользователь будет авторизован
  • Если идентификатор отсутствует, авторизация будет выполнена.


Вид и функциональность страницы аутентификации реализован на стороне Keycloak.


При авторизации пользователя через SSO Keycloak, если авторизация прошла успешно, на стороне Case.one выполняются проверки:

  • Статуса пользователя — заблокированный пользователь не сможет авторизоваться.
  • Наличия активных лицензий — если активная подписка найдена, пользователь успешно авторизовывается в Case.one.
  • Проверка IP-адреса пользователя:
  • Проверка наличия ограничений по количеству пользователей в системе согласно тарифному плану.
  • Проверка наличия запрета авторизации на инстансе Case.one пользователям с определенными ролями.

Если хоть одна проверка не пройдена:

  • Выполняется разрыв активной сессии авторизации пользователя в SSO (Keykloack).
  • Пользователь будет перенаправлен на страницу с описанием ошибки:
    • Если пользователь заблокирован в Case.oneПользователь заблокирован, обратитесь к администратору. Для возврата на форму авторизации обновите страницу
    • Если отсутствует активная лицензия — Не найдено ни одной активной лицензии, обратитесь к администратору. Для возврата на форму авторизации обновите страницу
    • Если IP-адрес пользователя не соответствует разрешенному диапазону IP-адресов — Вы пытаетесь зайти в систему с недопустимым IP-адресом, пожалуйста, обратитесь к администратору. Для возврата на форму авторизации обновите страницу
    • При достижении лимита по количеству пользователей согласно текущему тарифу — На вашем аккаунте достигнуто ограничение по количеству пользователей. Улучшите вашу подписку для увеличения количества пользователей в сервисе. Для возврата на форму авторизации обновите страницу 
    • При наличии запрета на авторизацию для роли, которой обладает пользователь, попытавшийся авторизоваться — Доступ запрещен, пожалуйста, обратитесь к администратору. Для возврата на форму авторизации обновите страницу 

Создание пользователя

Через SSO будет создана новая карточка пользователя:

  • При новой попытке авторизоваться, если пользователь был удален на стороне Case.one.
  • Если в Case.one нет аутентифицированного пользователя.

При передаче данных SSO Keycloack предоставляет уникальный идентификатор пользователя в Keycloack, при создании пользователя в Case.one этот идентификатор сохраняется.

По уникальному идентификатору пользователя можно определить, является ли пользователь новым или уже существует в Case.one

При создании пользователя через интеграцию с SSO Keycloack пользователю не будет автоматически отправляться письмо-приглашение для завершения регистрации в Case.one.


В карточку пользователя будет внесена следующая информация, полученная от SSO:

  • Фамилия
  • Имя
  • Отчество
  • Инициалы — добавляются в Case.one на основании ФИО
  • Email
  • Внешний идентификатор
  • Должность и Организация — при отсутствии сведений поля будут пустыми

Если пользователь уже существует Case.one, его роли и информация по нему автоматически обновляются при получении данных из SSO.


При включенной интеграции с SSO Keycloack данные о пользователе будут автоматически обновляться, например:

  • При изменении значения поля Отчество в SSO Keycloack значение будет автоматически обновлено в Case.one при следующем обмене данными.
  • Если поле Отчество не заполнено в SSO Keycloack, значение поля в Case.one будет сброшено при следующем обмене данными.
  • В конфигурационном файле возможно указать соответствия поля Отчество.

При включенной интеграции также доступно назначение ролей пользователям на основе сведений, полученных через SSO Keycloak:

  • Если сведения о роли получены, при наличии в Case.one соответствия пользователю будет назначена указанная роль.
  • При наличии нескольких совпадений ролей в Case.one пользователю будет назначена первая роль из списка совпавших.
  • Если роль не найдена или не указана, в Case.one будет автоматически создана новая роль:
    • Название роли в Case.one будет получено из SSO Keycloack
    • В роли будут назначены права Просмотр на раздел Личный кабинет → Профиль (на остальные разделы права не будут присвоены) 
  • Если интеграция включена, в Case.one недоступно создавать, удалять роли или изменять название.
  • При назначении или изменении роли через SSO Keycloack в разделе Действия в системе в Case.one будут добавлен следующие события от имени системы (Workflow Service):
    • Редактирование данных пользователя
    • Создание роли
    • Изменение прав созданной роли на Просмотр в разделе Личный кабинет → Профиль

Настройки интеграции в файле конфигурации

Для включения интеграции с OpenId добавьте настройку EnableOpenIdIntegration="True" в файл настроек конфигурации appsettings.json.


При включенной интеграции с OpenId должны быть отключены интеграция с Active Directory и Windows-аутентификация.


В файле appsettings.json доступна секция OpenId со следующими параметрами:

{
    "Custom": {
        // ... other settings
        "EnableOpenIdIntegration": "true"
    },
    "OpenId":
    {
        "ClaimsIssuer": "http[s]://opentid-provider-host",
        "ClientId": "caseone",
        "ClientSecret": "zFkncy1iV7giJUaMPAJJP0CgX4vqdCFr",
        "AuthorizationEndpoint": "http[s]://opentid-provider-host/path/to/auth/endpont",
        "TokenEndpoint": "http[s]://opentid-provider-host/path/to/token/endpont",
        "EndSessionEndpoint": "http[s]://opentid-provider-host/path/to/end/session/endpont",
        "Scopes": "openid, profile, email", 
// The scopes are the scopes of the JWT token. 
Default is "openid, profile, email".
        "UserInfoPaths": {
            // You can specify a path as a value, 
for example "realm_access.roles": select the roles located in
            // "realm_access": {
            //     "roles": [ "role1", "roles2" ]
            // }
            "UserId": "sub", 
// The user id is the subject of the JWT token. Default is "sub".
            "FirstName": "given_name", 
// The first name is the given name of the JWT token. Default is "given_name".
            "LastName": "family_name", 
// The last name is the family name of the JWT token. 
Default is "family_name".
            "MiddleName": "ваш_путь_к_отчеству"

 "Email": "email", // The email is the email of the JWT token. 
Default is "email".

            "Company": "company", 
// The company is the company of the JWT token. Default is "company".
            "Title": "title", 
// The title is the title of the JWT token. Default is "title".
            "Roles": "roles" 
// The roles are the roles of the JWT token. Default is "roles
        },
        "RoleMaps": [
            {
                "Source": "admin", // role in OpenID provider
                "Destination": "Администратор" // role in the CaseOne
            }
        ],
        "RefreshTokenReuseTimeout": "00:00:30", 
// The refresh token reuse timeout is the time to reuse the refresh token.
 Default is "00:00:30".
        "RefreshTokenRequestTimeout": "00:00:10", 
// The refresh token request timeout is the time to request the refresh token.
 Default is "00:00:10".
        "TokenCleanerPollingInterval": "00:01:00", 
// The token cleaner polling interval is the time to clean the token. 
Default is "00:01:00".
        "LogoutRequestTimeout": "00:00:10" 
// The logout request timeout is the time to request the logout. D
efault is "00:00:10".
    }
}

Если провайдер идентификации использует другое название утверждения для отчеств, а не стандартное  утверждение (claim) в OpenID Connect, вы можете настроить в параметрах приложения.

Если поле отчества не предоставляется провайдером идентификации или не настроено, система будет продолжать функционировать как раньше, а поле отчества останется пустым.


Аутентификация в публичном и приватном API

Для аутентификации в публичном и приватном API с помощью токена, полученного в SSO Keycloak (OpenID), в файле настроек конфигурации appsettings.json доступны параметры конфигурации SSO  для валидации и обработки токенов OpenID/SSO Keycloak:

  • Для поддержки валидации токенов доступны следующие параметры в секцию OpenId:
    • Audience (string) — валидация параметра aud в JWT-токене, полученном от OpenId провайдера:
      • Если не заполнено, в качестве значения берется параметр OpenId::ClientId
      • Значение по умолчанию — null
    • ClaimsIssuer (string) — URL провайдера OpenID:
      • Значение по умолчанию — true
      • Параметр обязателен, если ValidateIssuer = true
    • ValidateIssuer (boolean) — проверка издателя токена (значение по умолчанию — true)
    • ValidateAudience (boolean) — проверка получателя токена (значение по умолчанию — true)
    • ValidateLifetime (boolean) — проверка времени жизни токена (значение по умолчанию — true)
    • ValidateIssuerSigningKey (boolean) — проверка подписи токена (значение по умолчанию — true)
    • UpdateOpenIdUserInterval (TimeSpan) — интервал обновления данных пользователя (значение по умолчанию — 00:10:00)
Пример конфигурации:
{
    "OpenId": {
        "ValidateIssuer": true,
        "ValidateAudience": true,
        "ValidateLifetime": true,
        "ValidateIssuerSigningKey": true,
        "UpdateOpenIdUserInterval": "00:15:00"
    }
}
  • Настройки параметров в Keycloak:
    • Audience:
      • Значение: account
      • Соответствует параметру aud в JWT-токене
    • ValidateIssuer:
    • ValidateAudience:
      • Настраивается: Clients → Your Client → Settings → "Client ID"
      • Дополнительные настройки: Valid Redirect URIs и Web Origins
      • Должен совпадать с параметром Audience
    • ValidateLifetime — настройки времени жизни токена:
      • Realm Settings → Tokens:
        • Access Token Lifespan
        • Client Session Idle
        • Client Session Max
      • Clients → Your Client → Settings:
        • Access Token Lifespan
        • Client Session Idle
        • Client Session Max
    • ValidateIssuerSigningKey:
      • Управление: Realm Settings → Keys
      • Поддерживает ротацию ключей
      • Endpoints для получения публичного ключа:
        • /.well-known/openid-configuration
        • /protocol/openid-connect/certs

Механизм работы с пользователями:

  • Процесс авторизации
    • Если пользователь отсутствует, будет создан новый пользователь с привязкой к внешнему ID
    • Если пользователь существует без внешнего ID, пользователь будет привязан к внешнему ID из запроса
    • Если пользователь существует с другим внешним ID, возвращается ошибка
  • Обновление данных пользователя:
    • Периодичность — согласно UpdateOpenIdUserInterval
    • Триггер — при запросе с токеном
    • Обновляемые данные — базовая информация из токена

Проверка подписи токена

Доступна дополнительная проверка подписи токена с помощью набора открытых ключей JWKS. Для поддержки валидации JWKS добавлены следующие параметры конфигурации в секции OpenId:

  • EnableJWKSValidation (boolean) — включение/отключение валидации подписи токена согласно JWKS (значение по умолчанию — false).
  • JWKSUrlEndpoint (string) — URL точки доступа для получения набора открытых ключей JWKS (значение по умолчанию — null).

Проверка токена согласно JWKS работает только при включенной интеграции с OpenId.


Поставщик ключей JWKS может находиться на любом удаленном сервере или предоставляться через SSO-провайдер. Для Keyclock получить JWKSUrlEndpoint можно из конфигурации OpenID: http://keycloack_base_url/auth/realms/your_realm/.well-known/openid-configuration (параметр jwks_uri).

Пример: http://keycloack_base_url/auth/realms/your_realm/protocol/openid-connect/certs

Пример конфигурации с включенной валидацией согласно JWKS:

Custom: {
      "EnableOpenIdIntegration": "true" 
// Интеграция с OpenID должна быть включена
    }
    "OpenId": {
        "ClaimsIssuer": "http://openid-provider-host/auth/realms/your_realm", 
// URL провайдера OpenID
        "ClientId": "some_id",
// идентификатор клиента на стороне провайдера OpenID
        "ClientSecret": "xxx-xxx-xxx-xxxx-xxxxxx", 
// секрет клиента для доступа к API провайдера OpenID
        "EnableJWKSValidation": true, 
// Включение валидации подписи токена согласно 
полученному набору открытых ключей JWKS. 
Параметр JWKSUrlEndpoint должен быть обязательно 
заполнен при активации данной настройки
        "JWKSUrlEndpoint": "http[s]://openid-provider-host/auth/realms/your_realm/protocol/openid-connect/certs", 
// URL точки доступа для получения набора открытых ключей JWKS
        "AuthorizationEndpoint": "http[s]://openid-provider-host/auth/realms/your_realm/protocol/openid-connect/auth", 
// URL точки доступа для аутентификации пользователей
        "TokenEndpoint": "http[s]://openid-provider-host/auth/realms/your_realm/protocol/openid-connect/token", 
// URL точки доступа для получения и обновления токена доступа
        "EndSessionEndpoint": "http[s]://openid-provider-host/auth/realms/your_realm/protocol/openid-connect/logout" 
// URL точки доступа для завершения сессии пользователя
    }

При любой ошибке валидации подписи токена через JWKS сеанс текущего пользователя прекращается.


Online-валидация токена

С помощью Keycloak доступна online-валидация токена. Механизм online-валидации является опциональным и по умолчанию выключен.

Для включения механизма online-валидации:

  1. В админке Keycloak перейдите на вкладку Realm settings.
  2. В конце страницы, в разделе Endpoints откройте OpenID Endpoint Configuration, скопировав значение свойства introspection_endpoint.
  3. Добавьте скопированное значение в appsettings.json → OpenId → IntrospectEndpoint.
  4. Добавьте в appsettings.json → OpenId свойство "UseOnlineTokenVerification": true.
"OpenId": {
    "IntrospectEndpoint": "https://keycloak.linux.test.case.int/realms/local-dev/protocol/openid-connect/token/introspect", 
// url точки доступа для валидации токена
    "UseOnlineTokenVerification":  true 
// флаг, указывающий на необходимость валидации токена
}

Настройка времени жизни сессии

Возможно настроить время жизни сессии, чтобы исключить ситуации, когда сессия Case.one уже завершена, а сессия SSO Keycloak еще действует.

Чтобы задать время жизни сессии, установите следующие значения параметров SSO Keycloak в разделе Clients → Advanced → Advanced settings:

Client Session Idle == Inherits from realm settings
Client Session Max == Inherits from realm settings
Access Token Lifespan < Client Session Idle

Интеграция с Active Directory

При включенной интеграции с Active Directory в Case.one недоступно:

  • Создание пользователей.
  • Удаление пользователей.
  • Блокировка и разблокировка пользователей.
  • Редактирование синхронизируемых с AD свойств пользователя — ФИО, Инициалы, email, Внешний идентификатор — поля становятся недоступными для редактирования.
  • Редактирование ролей пользователей.
  • Редактирование групп в карточке пользователя.

Case.one может работать c Active Directory как по протоколу LDAP, так и протоколу LDAPS — можно использовать протокол LDAPoverSSL (LDAPS) в качестве протокола получения данных о пользователях Active Dirrectory (AD) при работе приложения Case.one в Linux.

Для настройки работы приложение по протоколу LDAPS в файле конфигурации appsettings.json в секции ActiveDirectory укажите порт, на котором развернута служба LDAPS на AD (обычно по умолчанию 636 порт) и включите SSL (UseSsl).


При создании пользователя и/или клиента в AD сразу создается соответствующий пользователь в Case.one.

Пользователи и клиенты будут созданы с данными: Имя, Фамилия, Отчество, Почта. В файле конфигурации доступна настройка соответствия папок в AD и ролей, которые получает пользователь в Case.one.


При создании пользователя через интеграцию с Active Directory пользователю не будет автоматически отправляться письмо-приглашение для завершения регистрации в Case.one.


Также через AD доступно указать роль для клиентов:

  • Если присвоена роль клиента, после авторизации выполнится вход в Клиентский портал.
  • Если одновременно указаны роль клиента и пользователя, считается, что это пользователь, выполнится вход в Основное приложение.

При интеграции с AD возможно просматривать список пользователей, которые находятся онлайн на инстансе в данный момент (аналогично просмотру пользователей со статусом В сети). Список активных пользователей вы можете просмотреть только на данный момент, без возможности просмотра данных в прошлом.

Интеграция с AD позволяет выполнять синхронизацию пользователей и ролей пользователей:

  1. По расписанию — выполняется по следующему алгоритму:
    • Администратор Компании добавляет пользователя в AD в папку Пользователи Case.one (название папки может быть любым)
    • При синхронизации пользователи создаются в Case.one со всеми его данными и ролями
    • Пользователь авторизуется в AD
    • Пользователь заходит в систему без указания пароля
  2. В реальном времени — если пользователя и/или клиента заблокировали в AD, то он в режиме реального времени будет заблокирован в Case.one. Аналогично работает изменение прав пользователя и/или клиента.

Интеграция с AD также позволяет выполнять синхронизацию групп пользователей — синхронизация с AD не изменяет группы в Case.one, изменяется только состав пользователей в группах. 


Для синхронизации пользователей из AD для инстансов, развернутых на Linux, используются те же настройки, что и для инстансов, развернутых на Windows.

Для работы на Linux предусмотрена настройка подключения к домену:

"ActiveDirectory": {

        ...

        "Port": 389 // Номер порта для подключения к AD через LDAP. 
Значение по умолчанию 389

}

Интеграция с КриптоПро

Как включить интеграцию с КриптоПро?

Вы можете включить или отключить интеграцию с приложением КриптоПро для подписания документов в Case.one с помощью УКЭП (Усиленной квалифицированной электронной подписи).

Если интеграция отключена, для включения просто перейдите в раздел Администрирование Приложения и в группе Электронно-цифровая подпись нажмите кнопку Подключить.


Интеграция с Doc.one

Как включить интеграцию с Doc.one?

Интеграция с Doc.one позволяет:

  • Изменять документы в редакторе документов в режиме онлайн.
  • Использовать шаблоны, созданные в Doc.one, для формирования документов в Case.one.
  • Редактировать шаблоны документов перед созданием документа по шаблону.

Вы можете включить интеграцию с Doc.one в разделе АдминистрированиеПриложения.

Подключение интеграции с Doc.one выполняется в два этапа:

  1. Создание учетной записи приложения Case.one (клиента) в Doc.one и получение данных клиента для подключения.
  2. Включение интеграции с Doc.one в разделе Администрирование Приложения в Case.one.

Для получения параметров Name (Идентификатор приложения), Secret (Защитный ключ):

  1. Создайте клиента (учетную запись Case.one в Doc.one) с помощью пользователя Doc.one с ролью Администратор.
  2. Выполните скрипты в PowerShell для создания клиента через вызов метода API регистрации нового клиента (в параметрах метода необходимо передать полный адрес API аутентификации подключаемого клиента Doc.one):
    • Для авторизации в Doc.one:
      Invoke-WebRequest https://адрес инстанса Doc.one/web/user/login -Method Post -SessionVariable Session -Headers @{'content-type'='application/json'} -Body '{"email":"email учетной записи","password":"пароль учетной записи"}'
    • Для создания клиента (учетной записи приложения Case.one):
      Invoke-WebRequest https://адрес инстанса Doc.one/oauth/clients -Method Post -Headers @{'Content-Type'='application/json'} -Body '{"name":"CasePro", "redirect":"https://адрес инстанса Case.one/api/DocOne/AuthFinish"}' -WebSession $Session | ConvertFrom-Json
    • Если вы хотите удалить клиента, выполните следующий скрипт в PowerShell:
      Invoke-WebRequest https://адрес инстанса Doc.one/oauth/clients/идентификатор клиента -Method Delete -WebSession $Session
  3. Откройте в браузере ссылку https://адрес инстанса Doc.one/oauth/clients для получения списка зарегистрированных клиентов (учетных записей приложения Case.one). Данные можно получить после выполнения скриптов PowerShell или при наличии уже зарегистрированных клиентов. Отобразится список с данными, которые используются для включения интеграции с Doc.one в Case.one.
  4. Скопируйте данные клиента, которые нужны для включения интеграции с Doc.one в разделе Администрирование — Приложения в Case.one:
    • URL инстанса Doc.one — скопируйте из адресной строки браузера
    • Name (Идентификатор приложения/клиента) — скопируйте без кавычек
    • Secret (Защитный ключ) — скопируйте без кавычек

Для включения интеграции в Case.one:

  1. Авторизуйтесь в Doc.one под учетной записью администратора.
  2. Авторизуйтесь в Case.one под учетной записью администратора.
  3. Выберите пункт Приложения в меню раздела Администрирование.
  4. Нажмите кнопку Подключить.
  5. В открывшемся окне заполните следующие данные:
    • URL Doc.one — адрес Doc.one (URL должен начинаться с http:// или https://)
    • Идентификатор приложения — параметр Name в списке зарегистрированных клиентов
    • Защитный ключ — параметр Secret в списке зарегистрированных клиентов
  6. Нажмите кнопку Сохранить. Выполнится проверка заполнения полей и попытка перейти в Doc.one для выполнения oAuth-авторизации:
    • Если URL Doc.one не соответствует маске (не начинается с http:// или https://), отобразится ошибка
    • Если пройдены проверки полей на стороне Case.one, данные будут отправлены в Doc.one, после чего выполнится авторизация уже на стороне Doc.one (подключение выполняется только от имени администратора аккаунта Doc.one)

При первом подключении интеграции отобразится окно авторизации — нажмите кнопку Authorize.


Отключение интеграции с Doc.one выполняется либо через приватный (внутренний) API, либо в настройках БД (необходимо отключить статус Только для чтения у приложения Doc.one).

Мы не рекомендуем самостоятельно отключать приложение — пожалуйста, обратитесь к команде Case.one.


При отключении интеграции:

  • Все шаблоны, которые были скачаны из Doc.one, будут удалены со всеми настройками доступности в типе дела/объекта.
  • Редактор документов будет недоступен.

Особенности подключения и самой интеграции:

  • Приложение перейдет в статус Подключено только после получения токена доступа от Doc.one
  • Подключение выполняется отдельно для каждого инстанса. 
  • Несколько инстансов Case.one могут быть подключены к одному аккаунту Doc.one.
  • После выполнения подключения Doc.one кнопка Отключить не активна.
  • После подключения все шаблоны из Doc.one будут переданы в Case.one (даже те, в которых нет ни одной переменной: например, вопрос, поле, блок). В дальнейшем — только в результате синхронизации по вебхукам.
  • Пустые шаблоны (например, без полей) загружаются только при первом подключении интеграции, но не загружаются при выполнении синхронизации.
  • Теги Case.one должны быть прописаны в настройке поля Внешний идентификатор в Doc.one, поскольку для корректной работы функции формирования документа по шаблону эти значения должны совпадать.
  • Редактор документа Doc.one (документы с расширением .docx) открывается в iframe в новой вкладке.
  • Если пользователь не зарегистрирован в Doc.one, он будет создан автоматически.

Работа с редактором документов

При работе с редактором документов предусмотрены следующие ограничения:

  • Если интеграция с Doc.one включена, теперь при попытке открыть документ в первый раз выполнится автоматическая (фоновая) проверка на расширение документа — если документ имеет расширение *.docx, Case.one отправит документ в Doc.one: 
    • Если документ успешно загружен в Doc.one:
      • Doc.one вернет в Case.one ссылку на этот документ
      • Case.one сохранит и документ, и ссылку на Doc.one
      • Case.one получит информацию по изменению документа в Doc.one
    • Если документ не получилось загрузить в Doc.oneCase.one сохранит документ без ссылки на Doc.one
  • Редактор документа Doc.one (документы с расширением *.docx) открывается в iframe в новой вкладке.
  • При скачивании документа в Case.one выполняется актуализация версии документа в Case.one по версии Doc.one:
    • При наличии более актуальной версии документа в Doc.one документ сначала будет актуализирован, а потом скачан
    • Если попытка актуализировать документ не удалась, будет скачана текущая версия документа в Case.one
  • При скачивании подписанного документа выполнится проверка актуальности версии документа в Case.one по версии Doc.one:
    • Если после подписания документ не был изменен, документ будет скачан вместе с файлом подписи
    • Если после подписания в документ вносились изменения:
      • Подпись будет удалена
      • Будет скачана актуальная версия документа (без подписи)
  • При подписании документа выполняется актуализация версии документа в Case.one по версии Doc.one. В результате в Case.one будут сохранены файл подписи и ссылка на документ в Doc.one.

Получение данных по шаблонам и документам в Case.one

Case.one получает данные по документам и шаблонам документов из Doc.one автоматически (с помощью вебхуков), если в Doc.one были выполнены следующие действия:

  • Изменение документа — при изменении документа, который есть в Case.one, документ будет скачан из Doc.one:
    • Данные приходят по всем документам в Doc.one (в том числе по документам, которые были созданы в Doc.one, но их нет в Case.one):
      • В истории записывается информация о редактировании документа
      • Автором изменения считается пользователь, который создал документ в Doc.one (отображается Внешний редактор)
    • Если пришло изменение по подписанному документу, это значит что на стороне Doc.one изменилась версия документа, а документ будет не подписан
  • Добавление нового шаблона документа в Doc.one — если в шаблоне не содержится ни одного тега, шаблон не будет загружен в Case.one
  • Переименование шаблона документа в Doc.one — у шаблона будет изменено название файла.
  • Публикация/снятие с публикации шаблона документа в Doc.one — изменяется статус шаблона документа:
    • Если в шаблоне не содержится ни одного тега, и он не создан в Case.one, шаблон добавлен не будет
    • Если в шаблоне не содержится ни одного тега, и он создан в Case.one, шаблон будет актуализирован
    • Если в шаблоне содержатся теги, и он создан в Case.one, шаблон будет актуализирован
    • Если в шаблоне содержатся теги, и он не был создан в Case.one, шаблон будет создан
  • Удаление шаблона документа — шаблон будет удален.

Синхронизация шаблонов документов с Doc.one по расписанию выключена по умолчанию.


Мы не рекомендуем включать синхронизацию по расписанию, поскольку возможно существенное увеличение количества запросов к Doc.one, что приведет к превышению лимита запросов и может сказаться на скорости генерации шаблонов и появлении задержек при работе.


Если вы хотите включить синхронизацию по расписанию для исправления возможных проблем, измените настройки в файле appsettings.json:

"Custom": {
...
    "DocOneSynchronizationJobEnable": "true",
    "DocOneSynchronizationPeriodCron": "0 * * * *",
...
}

Для разбора причин возможных багов или особенностей работы включите логирование в настройках файла nlog.config:

<rules>
    <!-- Логирование всех запросов и ответов к приложению doc.one -->
    <logger name="CaseMap.Modules.DocOne.Clients.DocOneClient" 
appendTo="full" final="true" minlevel="Debug"/>
    <!-- Логирование всех полученных вебхуков от doc.one -->
    <logger name="DocOneReceiveEvent" appendTo="full" 
final="true" minlevel="Info"/>
    <!-- Логирование процесса подписки на вебхуки doc.one -->
    <logger name="CaseMap.Modules.DocOne.Notify.SubscribeWebHooks" 
appendTo="full" final="true" minlevel="Info"/>
</rules>

Методы

Для просмотра API Doc.one перейдите по ссылкам:

  • https://АДРЕС ИНСТАНСА DOC.ONE/api/v3/documentation
  • https://АДРЕС ИНСТАНСА DOC.ONE/api/v2/documentation
  • https://АДРЕС ИНСТАНСА DOC.ONE/api/v1/documentation

Doc.one передает информацию о поддерживаемом формате шаблона с помощью атрибута DownloadFormats (docx, pdf или both — скачивание возможно и в *.docx, и в *.pdf):

  • При получении веб-хуков по Doc.one.
  • В методах API:
    • V1
      • GET /api/v1/templates/{id}
      • GET /api/v1/document
      • PUT /api/v1/documents
      • POST /api/v1/documents
    • V2
      • GET /api/v2/templates/{id}
      • GET /api/v2/document
      • PUT /api/v2/documents
      • POST /api/v2/documents
    • V3
      • POST /api/v3/templates/upload
      • GET /api/v3/document
      • PUT /api/v3/documents
      • POST /api/v3/documents
      • POST /api/v3/documents/copy
      • POST /api/v3/documents/edit
      • POST /api/v3/documents/upload

Если в параметре DownloadFormats передано значение both, при формировании документа по шаблону документ будет сформирован в формате *.docx.


Если документы в Case.one и Doc.one уже были синхронизированы, но после этого документ удалили в Case.one, по нему будет отправлен запрос в Doc.one об удалении с помощью метода DELETE /api/v3/documents (поиск документов выполняется за счет встроенного механизма удаления файлов без документов — если найден файл, по которому нет документа, но есть ссылка на Doc.one, по нему будет отправлен запрос) в следующих случаях:

  • Если в Case.one загрузили документ в формате *.docx, открыли документ, а затем удалили.
  • Если выполнено формирование документа по шаблону Doc.one:
    • Без открытия в редакторе, а форма добавления документа в Case.one была закрыта без сохранения
    • С включенной функцией открытия шаблона в редакторе, но редактор был закрыт без сохранения
    • С включенной функцией открытия шаблона в редакторе, информация в редакторе сохранена, а форма добавления документа в Case.one была закрыта без сохранения

Интеграция с Casebook

Как настроить интеграцию с Casebook?

Интеграция с Casebook в Case.one позволяет:

  • Получать сведения по арбитражным делам, участникам и документам.
  • Автоматически заполнять поля карточки дела при синхронизации дела.
  • Осуществлять мониторинг новых дел организаций.

Для поддержки функциональности интеграции с Casebook, начиная с 75 версии Case.one, будет использоваться API Casebook версии 3.0 вместо API Casebook версии 2.0.

Для включения интеграции с Casebook вам необходимо до обновления Case.one до 75 версии получить данные новой учетной записи API Casebook.


Для включения интеграции с Casebook:

  1. Перейдите в раздел АдминистрированиеПриложения.
  2. Нажмите кнопку Подключить в строке Интеграция с Casebook в блоке Интеграции.
  3. Введите логин и пароль от учетной записи — обязательные поля, во время подключения интеграции изменение логина и пароля в окне подключения недоступно.
  4. Нажмите кнопку Подключить.

Выполнится подключение интеграции с Casebook.

Если подключение выполнено успешно:

  • Окно для ввода данных учетной записи от API Casebook v 3.0 автоматически закроется.
  • Вместо кнопки Подключить отображается кнопка Отключить.
  • Статус подключения Casebook изменится на Подключено.
  • Слева от кнопки Отключить отображается кнопка настроек .

Чтобы посмотреть или изменить текущие настройки учетной записи Casebook:

  1. Нажмите кнопку . Откроется окно для ввода данных учетной записи.
  2. Измените поля окна при необходимости:
    • Логин — отображается логин, учетной записи, который был указан при подключении
    • Пароль — поле не заполнено
  3. Нажмите кнопку:
    • Отмена — отмена изменений, интеграция останется подключенной
    • Подключить — сохранение изменений и переподключение интеграции

После того, как вы включили интеграцию в конструкторе объектов, в настройках полей (подробнее см. в статье Создание полей) пропишите теги, по которым будет осуществляться синхронизация и заполнение информации по данным, полученным из Casebook.

Синхронизация карточки объектов и дел запускается в первый раз вручную, а затем обновление информации происходит автоматически.

Настройки Casebook

  • Заполнение полей с типом Дата и время данными, полученными из Casebook в результате синхронизации:
    • Для синхронизации значений поля с типом Дата и время необходимо использовать (если возможно) теги с постфиксом UTC, поскольку если в качестве тега для поля Дата и время будет выбран тег без постфикса UTC, это может привести к некорректной интерпретации данных
    • Например: Поле NextSessionDate — в ответе API Casebook есть два поля NextSessionDate и NextSessionDateUtc, которые участвуют в синхронизации под тегами cb_c_Instances_NextSessionDate и cb_c_Instances_NextSessionDateUtc:
      • NextSessionDate — дата и время будущего заседания/иного события, используется локальное время суда — здесь возможна некорректная интерпретация времени, поскольку используется локальное время, а не UTC
      • NextSessionDateUtc — дата и время будущего заседания/иного события, используется время в UTC
  • При выборе искомого участника из ответа метода GET /organizations при ручном создании карточки участника и фоновой синхронизации участников, полученных из Casebook, не возвращаются данные организаций, прекративших свою деятельность — если по указанному ИНН в Casebook найдены несколько организаций, в Case.one будут загружены сведения организации, деятельность которой не прекращена.
  • В рамках перехода на Casebook API v 3.0 удалены устаревшие методы API api/CasebookSuggest/CourtSuggest и api/CasebookSuggest/JudgeSuggest, используется альтернативный метод API Сasebook v 3.0 — PUT/arbitrage/tracking/subscriptions/organizations/{innOrOgrn}.
  • В секции Casebook в файле конфигурации appsettings.json для фильтрации событий мониторинга по полю RegistrationDate (дата регистрации (поступления) искового заявления в суде) вы можете настроить параметр MonitoringEventFiltrationPeriodDays:
    • Параметр позволяет задать глубину периода фильтрация в днях
    • Значение по умолчанию — 7
    • Тип параметра — int

Логика работы фильтра: RegistrationDate — (Текущая дата время (UTC)) — MonitoringEventFiltrationPeriodDays

"Casebook": {
    "MonitoringEventFiltrationPeriodDays": 7
}

Интеграция с Р7-Офис и OnlyOffice

Как включить интеграцию с Р7-Офис или OnlyOffice?

Интеграция с Р7-Офис или OnlyOffice позволяет просматривать, редактировать и скачивать документы в форматах XLSX, DOCX, DOC и PDF в разделе Документы и на вкладке Документы карточки объекта (при отсутствии интеграции с Doc.one и Box.com).


Для работы интеграции нужен установленный сервер документов Р7-Офис или OnlyOffice (устанавливается отдельно). Настройки подключения к серверу Р7-Офис или OnlyOffice указываются в конфигурационном файле Case.one (можно подключить только одно приложение).


Интеграция с Р7-Офис или OnlyOffice работает через протокол WOPI.

Для включения и отключения интеграции с Р7-Офис или OnlyOffice используется блок приложения Microsoft Office 365:

  • Блок приложения называется WOPI
  • Если приложение Microsoft Office 365 подключено, оно продолжает работать

Для включения интеграции нажмите кнопку Подключить в блоке Интеграции.

Для отключения интеграции нажмите кнопку Отключить.

Настройки подключения к серверу Р7-Офис или OnlyOffice

Для настройки интеграции с R7 или OnlyOffice или другим сервисом просмотра документов с поддержкой протокола WOPI на стороне Case.one выполните следующие действия:

  • Укажите (или измените) параметр WopiDiscoveryUrl (параметр поддерживает переопределение) в файле appsettings.json, прописав адрес сервера документов:
{
    "Custom": {
        "WopiDiscoveryUrl": "{office-url}/hosting/discovery" // {office-url} 
- адрес сервера документов
    }
}
  • Если сервис просмотра документов доступен только по HTTP, настройте WopiDiscoveryNetZone (параметр поддерживает переопределение) на external-http (по умолчанию установлено external-https):
{
    "Custom": {
        "WopiDiscoveryNetZone": "external-http"
    }
}
  • Убедитесь, что у сервиса просмотра документов есть доступ к Case.one, и у Case.one есть доступ к сервису просмотра документов — например, в launchSettings.json вы можете указать в applicationUrl адрес Case.one в сети докер:
{
    "CaseMapTemp": {
        ...
        "applicationUrl": "http://host.docker.internal:5000/;http://localhost:5000/"
    }
}

Для настройки интеграции с R7 или OnlyOffice на стороне сервиса просмотра документов выполните следующие действия:

Пример включения поддержки протокола WOPI через local.json:

{
    "wopi": {
        "enable": true
    }
}

Пример включения поддержки протокола WOPI через переменные окружения (environment) в docker-compose.yml

version: '3.2'
 
services:
  documentserver:
    container_name: onlyoffice
    image: onlyoffice/documentserver
    environment:
      - WOPI_ENABLED=true

Интеграция с сервисом видеоконференций

Как подключить интеграцию с сервисом проведения видеоконференций?

Интеграция с сервером https://jitsi.org/ позволяет проводить видеоконференции.

Для включения возможности проведения видеозвонков:

  1. Перейдите в раздел АдминистрированиеПриложения.
  2. Нажмите кнопку Подключить в блоке Звонки рядом со стройкой Видеоконференция. Откроется окно с настройками сервера для подключения.
  3. Укажите сервер для проведения видео звонков:
    • Пользовательский (ручной ввод домена расположения сервера, где развернута сборка Jitsi Meet) — использовать сервер Case.one недоступно на On-premise-инстансах, поэтому необходимо указывать вручную домен расположения сервера
    • Case.one сервер — для Saas-инстансов
  4. Нажмите кнопку Сохранить. Приложение будет подключено.


Если вы являетесь пользователем On-premise-инстанса, пожалуйста, обратитесь в техническую поддержку для получения информации о настройках, необходимых в БД, для отображения приложения видеоконференции в Case.one.


Для отключения интеграции просто нажмите кнопку Отключить. При повторном включении настройки сервера будут сброшены до значения по умолчанию.

Чтобы изменить настройки сервера приложения, нажмите кнопку и укажите новые настройки.


Интеграция с сервисом «Мой Арбитр»

Как настроить интеграцию с сервисом «Мой Арбитр»?

Интеграция позволяет контролировать документы из сервиса Мой Арбитр напрямую в Case.one. Чтобы управлять связанными документами, авторизуйтесь при помощи своего логина и пароля в личном профиле. 

Для включения интеграции с сервисом Мой арбитр:

  1. Перейдите в раздел АдминистрированиеПриложения.
  2. Нажмите кнопку Подключить в строке Мой арбитр в блоке Интеграции. Интеграция будет включена.


Интеграция с Box.com

Как настроить интеграцию с Box.com?

Интеграция позволяет предварительно просматривать документы, с которыми вы работаете, напрямую из Case.one. Дополнительная регистрация в сервисе не требуется.

Чтобы включить интеграцию с Box.com:

  1. Перейдите в раздел АдминистрированиеПриложения.
  2. Нажмите кнопку Подключить в строке Box.com в блоке Интеграции. Интеграция будет включена.


Интеграция с Dropbox

Как настроить интеграцию с Dropbox?

Интеграция позволяет работать с документами, загруженными в ваш Dropbox из Case.one. Вы можете подключить к системе только один аккаунт Dropbox. Для подключения другого аккаунта необходимо будет отключить интеграцию и подключить заново. 


На текущий момент интеграция с Dropbox может быть недоступна на стороне Dropbox, однако, мы оставили возможность включения интеграции со стороны Case.one.


Чтобы включить интеграцию с Dropbox:

  1. Перейдите в раздел АдминистрированиеПриложения.
  2. Нажмите кнопку Подключить в строке Dropbox в блоке Внешние данные.
  3. Укажите свой логин и пароль от аккаунта Dropbox. Откроется форма подтверждения запроса данных от Case.one.
  4. Подтвердите запрос. Аккаунт будет подключен.

После подключения аккаунта в Dropbox автоматически будет создана структура папок, аналогичная Case.one.

После интеграции в каждой папке с делами появится папка с документами Dropbox.

Для отключения интеграции нажмите кнопку Отключить. Аккаунт будет отключен автоматически.


Интеграция с Microsoft Exchange

Как настроить интеграцию с Microsoft Exchange?

Интеграция с Microsoft Exchange позволяет отправлять письма с вашей корпоративной почты и отвечать на них напрямую из Case.one.


Мы рекомендуем осуществлять подключение почтовых сервисов с помощью протоколов IMAP и SMTP, поскольку такое подключение универсально и позволяет настроить получение и отправку почты в Case.one с любого почтового сервиса — подробности подключения вы можете узнать в статье Интеграция с почтовыми сервисами.


Для работы с письмами администратору необходимо включить общую синхронизацию с Microsoft Exchange, а пользователю подключить свой аккаунт к Case.pro

Чтобы включить интеграцию с Microsoft Exchange:

  1. Перейдите в раздел АдминистрированиеПриложения.
  2. Нажмите кнопку Подключить в строке Microsoft Exchange в блоке Почта. Интеграция будет включена.


Интеграция с Microsoft OneDrive

Как настроить интеграцию с OneDrive?

Интеграция позволяет работать с документами, выложенными в ваш Microsoft OneDrive напрямую из Case.one. Вы можете подключить к системе только один аккаунт OneDrive. Для подключения другого аккаунта необходимо будет отключить интеграцию и подключить заново.


На текущий момент интеграция с Microsoft OneDrive может быть недоступна на стороне Microsoft, однако, мы оставили возможность включения интеграции со стороны Case.one.


Чтобы включить интеграцию с OneDrive:

  1. Перейдите в раздел АдминистрированиеПриложения.
  2. Нажмите кнопку Подключить в строке Microsoft OneDriveв блоке Внешние данные.
  3. Укажите свой логин и пароль от аккаунта OneDrive. Откроется форма подтверждения запроса данных от Case.one.
  4. Подтвердите запрос. Аккаунт будет подключен.

После подключения аккаунта в OneDrive автоматически будет создана структура папок, аналогичная Case.one.

После интеграции в каждой папке с делами появится папка с иконкой OneDrive, содержащая нужные документы. Для отключения интеграции нажмите кнопку Отключить.


Интеграция с Google Drive

Как настроить интеграцию с Google Drive?

Интеграция позволяет работать с документами, загруженными в ваш Google Drive напрямую из Case.one. Вы можете подключить к системе только один аккаунт Google. Для подключения другого аккаунта необходимо будет отключить интеграцию и подключить заново. 


На текущий момент интеграция с Google Drive может быть недоступна на стороне Google, однако, мы оставили возможность включения интеграции со стороны Case.one.


Чтобы включить интеграцию с Google Drive:

  1. Перейдите в раздел АдминистрированиеПриложения.
  2. Нажмите кнопку Подключить в строке Google Drive в блоке Внешние данные.
  3. Укажите свой логин и пароль от аккаунта Google. Откроется форма подтверждения запроса данных от Case.one.
  4. Подтвердите запрос. Аккаунт будет подключен.

После подключения аккаунта в Google Drive автоматически будет создана структура папок, аналогичная Case.one.

После интеграции в каждой папке с делами появится папка с иконкой Google Drive, содержащая нужные документы. Для отключения интеграции нажмите кнопку Отключить.


Интеграция с Gmail

Как настроить интеграцию с Gmail?

Интеграция с Gmail позволяет отправлять письма и отвечать на них напрямую из Case.one. Для работы с письмами внутри системы, администратору необходимо включить общую синхронизацию с Gmail, а пользователю подключить свой аккаунт к Case.one


Мы рекомендуем осуществлять подключение почтовых сервисов с помощью протоколов IMAP и SMTP, поскольку такое подключение универсально и позволяет настроить получение и отправку почты в Case.one с любого почтового сервиса — подробности подключения вы можете узнать в статье Интеграция с почтовыми сервисами.


Чтобы включить интеграцию с Gmail:

  1. Перейдите в раздел АдминистрированиеПриложения.
  2. Нажмите кнопку Подключить в строке Gmail в блоке Почта. Интеграция будет включена.

Подключение расширения Case.one для Google Chrome

Вы также можете установить расширение Case.one для Google Chrome, чтобы вести переписку непосредственно в расширении браузера.


Для работы с расширением необходим браузер Google Chrome не ниже последних двух версий, указанных на официальном сайте браузера.


Как установить расширение

  1. Перейдите по ссылке. Откроется интернет-магазин Chrome на странице с описанием расширения Case.one.
  2. Нажмите кнопку Установить. Откроется окно подтверждения установки расширения Case.one.
  3. Подтвердите установку, нажав кнопку Установить расширение. Будет выполнена установка расширения, отобразится уведомление об успешной установке расширения.
  4. Нажмите на расширение. Откроется окно авторизации.
  5. Заполните поля окна авторизации:
    • Домен — название сайта Case.one в формате: http://название сайта/
    • Логин — логин, под которым выполняется авторизация в Системе на указанном сайте
    • Пароль — пароль к введенному логину, под которым выполняется авторизация в Системе на указанном сайте
  6. Нажмите кнопку Войти. Отобразится окно с успешным входом в расширение.