Перейти к содержанию

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

Интеграция с ServiceNow (Администрирование > Настройки > ServiceNow) обеспечивает двунаправленную синхронизацию между Turbo EA и вашей CMDB ServiceNow. В этом руководстве описано всё — от первоначальной настройки до продвинутых сценариев и лучших практик эксплуатации.

Настройки ServiceNow

Зачем интегрировать ServiceNow с Turbo EA?

ServiceNow CMDB и инструменты корпоративной архитектуры служат разным, но взаимодополняющим целям:

ServiceNow CMDB Turbo EA
Фокус ИТ-операции — что работает, кто отвечает, какие инциденты произошли Стратегическое планирование — как должен выглядеть ландшафт через 3 года?
Обслуживается ИТ-операции, управление активами Команда EA, бизнес-архитекторы
Сильная сторона Автоматическое обнаружение, рабочие процессы ITSM, операционная точность Бизнес-контекст, карта возможностей, планирование жизненного цикла, оценки
Типичные данные Имена хостов, IP-адреса, статус установки, группы назначения, контракты Бизнес-критичность, функциональное соответствие, технический долг, стратегическая дорожная карта

Turbo EA является основной системой записи для вашего архитектурного ландшафта — имена, описания, планы жизненного цикла, оценки и бизнес-контекст хранятся здесь. ServiceNow дополняет Turbo EA операционными и техническими метаданными (имена хостов, IP-адреса, данные SLA, статус установки), поступающими из автоматического обнаружения и рабочих процессов ITSM. Интеграция обеспечивает связь этих двух систем, при этом Turbo EA является ведущей.

Что вы можете сделать

  • Pull-синхронизация — наполнение Turbo EA CI из ServiceNow с последующим принятием управления. Последующие pull-операции обновляют только операционные поля (IP, статус, SLA), которые SNOW обнаруживает автоматически
  • Push-синхронизация — экспорт курируемых EA данных обратно в ServiceNow (имена, описания, оценки, планы жизненного цикла), чтобы команды ITSM видели контекст EA
  • Двунаправленная синхронизация — Turbo EA ведёт большинство полей; SNOW ведёт небольшой набор операционных/технических полей. Обе системы остаются синхронизированными
  • Карта идентификаторов — постоянное перекрёстное отслеживание (sys_id <-> UUID карточки) обеспечивает связь записей между синхронизациями

Архитектура интеграции

+------------------+         HTTPS / Table API          +------------------+
|   Turbo EA       | <--------------------------------> |  ServiceNow      |
|                  |                                     |                  |
|  Карточки        |  Pull: SNOW CI -> Карточки Turbo    |  CMDB CI         |
|  (Application,   |  Push: Карточки Turbo -> SNOW CI    |  (cmdb_ci_appl,  |
|   ITComponent,   |                                     |   cmdb_ci_server, |
|   Provider, ...) |  Identity Map: sys_id <-> UUID      |   core_company)  |
+------------------+                                     +------------------+

Интеграция использует Table API ServiceNow через HTTPS. Учётные данные шифруются при хранении с помощью Fernet (AES-128-CBC), производного от вашего SECRET_KEY. Все операции синхронизации регистрируются как события с source: "servicenow_sync" для полного аудита.


Планирование интеграции

Прежде чем настраивать что-либо, ответьте на следующие вопросы:

1. Какие типы карточек нуждаются в данных из ServiceNow?

Начните с малого. Наиболее распространённые точки интеграции:

Приоритет Тип Turbo EA Источник ServiceNow Почему
Высокий Application cmdb_ci_business_app Приложения — основа EA; в CMDB есть авторитетные имена, владельцы и статусы
Высокий ITComponent (Software) cmdb_ci_spkg Программные продукты для отслеживания EOL и технологического радара
Средний ITComponent (Hardware) cmdb_ci_server Серверный ландшафт для карты инфраструктуры
Средний Provider core_company Реестр вендоров для управления затратами и отношениями
Низкий Interface cmdb_ci_endpoint Конечные точки интеграции (часто поддерживаются вручную в EA)
Низкий DataObject cmdb_ci_database Экземпляры баз данных

2. Какая система является источником истины для каждого поля?

Это самое важное решение. По умолчанию Turbo EA ведёт — инструмент EA является системой записи для вашего архитектурного ландшафта. ServiceNow должен вести только узкий набор операционных и технических полей, поступающих из автоматического обнаружения или рабочих процессов ITSM. Всё остальное — имена, описания, оценки, планирование жизненного цикла, затраты — принадлежит команде EA в Turbo EA.

Рекомендуемая модель — «Turbo EA ведёт, SNOW дополняет»:

Тип поля Источник истины Почему
Имена и описания Turbo ведёт Команда EA курирует авторитетные имена и пишет стратегические описания; имена в CMDB могут быть некорректными или автогенерированными
Бизнес-критичность Turbo ведёт Стратегическая оценка команды EA — не операционные данные
Функциональное / техническое соответствие Turbo ведёт Оценки модели TIME — забота EA
Жизненный цикл (все фазы) Turbo ведёт Планирование, внедрение, активный, вывод, окончание — всё это данные планирования EA
Данные о затратах Turbo ведёт EA отслеживает совокупную стоимость владения; CMDB может иметь позиции контрактов, но EA владеет консолидированным представлением
Тип хостинга, категория Turbo ведёт EA классифицирует приложения по модели хостинга для стратегического анализа
Техническая метаинформация SNOW ведёт IP-адреса, версии ОС, имена хостов, серийные номера — данные автоматического обнаружения
SLA / операционный статус SNOW ведёт Статус установки, цели SLA, метрики доступности — операционные данные ITSM
Группа назначения / поддержка SNOW ведёт Операционное владение, отслеживаемое в рабочих процессах ServiceNow
Даты обнаружения SNOW ведёт Первое/последнее обнаружение, последнее сканирование — метаданные автоматизации CMDB

3. Как часто следует синхронизировать?

Сценарий Частота Примечания
Первоначальный импорт Однократно Режим добавления, тщательная проверка
Активное управление ландшафтом Ежедневно Автоматизация через cron в нерабочие часы
Отчётность по соответствию Еженедельно Перед генерацией отчётов
По запросу По мере необходимости Перед крупными обзорами EA или презентациями

Шаг 1: Предварительные требования ServiceNow

Создание сервисной учётной записи

В ServiceNow создайте выделенную сервисную учётную запись (никогда не используйте личные учётные записи):

Роль Назначение Обязательна?
itil Доступ на чтение к таблицам CMDB Да
cmdb_read Чтение конфигурационных элементов Да
rest_api_explorer Полезна для тестирования запросов Рекомендуется
import_admin Доступ на запись в целевые таблицы Только для push-синхронизации

Лучшая практика: Создайте пользовательскую роль с доступом только на чтение к конкретным таблицам, которые вы планируете синхронизировать. Роль itil слишком широкая — пользовательская роль с ограниченной областью снижает риск.

Сетевые требования

  • Бэкенд Turbo EA должен иметь доступ к вашему экземпляру SNOW через HTTPS (порт 443)
  • Настройте правила межсетевого экрана и списки разрешённых IP
  • Формат URL экземпляра: https://company.service-now.com или https://company.servicenowservices.com

Выбор метода аутентификации

Метод Преимущества Недостатки Рекомендация
Basic Auth Простая настройка Учётные данные отправляются с каждым запросом Только для разработки/тестирования
OAuth 2.0 На основе токенов, с областью, удобный для аудита Больше шагов настройки Рекомендуется для производства

Для OAuth 2.0: 1. В ServiceNow: System OAuth > Application Registry 2. Создайте новую конечную точку OAuth API для внешних клиентов 3. Запишите Client ID и Client Secret 4. Ротируйте секреты каждые 90 дней


Шаг 2: Создание подключения

Перейдите в Администрирование > ServiceNow > вкладка Подключения.

Создание и тестирование

  1. Нажмите Добавить подключение
  2. Заполните:
Поле Пример значения Примечания
Имя Производственная CMDB Описательная метка для вашей команды
URL экземпляра https://company.service-now.com Обязательно HTTPS
Тип аутентификации Basic Auth или OAuth 2.0 OAuth рекомендуется для производства
Учётные данные (по типу аутентификации) Шифруются при хранении через Fernet
  1. Нажмите Создать, затем нажмите значок тестирования (символ WiFi) для проверки подключения

  2. Зелёный индикатор «Подключено» — готово к работе

  3. Красный индикатор «Ошибка» — проверьте учётные данные, сеть и URL

Несколько подключений

Вы можете создать несколько подключений для: - Производственных и тестовых экземпляров - Региональных экземпляров SNOW (например, EMEA, APAC) - Разных команд с отдельными сервисными учётными записями

Каждый маппинг ссылается на конкретное подключение.


Шаг 3: Проектирование маппингов

Переключитесь на вкладку Маппинги. Маппинг связывает один тип карточки Turbo EA с одной таблицей ServiceNow.

Создание маппинга

Нажмите Добавить маппинг и настройте:

Поле Описание Пример
Подключение Какой экземпляр ServiceNow использовать Производственная CMDB
Тип карточки Тип карточки Turbo EA для синхронизации Application
Таблица SNOW Имя API таблицы ServiceNow cmdb_ci_business_app
Направление синхронизации Какие операции доступны (см. ниже) ServiceNow -> Turbo EA
Режим синхронизации Как обрабатывать удаления Консервативный
Макс. коэффициент удаления Порог безопасности для массовых удалений 50%
Фильтр запроса Закодированный запрос ServiceNow для ограничения области active=true^install_status=1
Пропустить стейджинг Применять изменения без промежуточной проверки Выкл (рекомендуется для начальной синхронизации)

Распространённые маппинги таблиц SNOW

Тип Turbo EA Таблица ServiceNow Описание
Application cmdb_ci_business_app Бизнес-приложения (наиболее распространённый)
Application cmdb_ci_appl Общие CI приложений
ITComponent (Software) cmdb_ci_spkg Программные пакеты
ITComponent (Hardware) cmdb_ci_server Физические/виртуальные серверы
ITComponent (SaaS) cmdb_ci_cloud_service_account Учётные записи облачных сервисов
Provider core_company Вендоры / компании
Interface cmdb_ci_endpoint Конечные точки интеграции
DataObject cmdb_ci_database Экземпляры баз данных
System cmdb_ci_computer CI компьютеров
Organization cmn_department Отделы

Примеры запросов фильтрации

Всегда фильтруйте, чтобы избежать импорта устаревших или выведенных из эксплуатации записей:

# Только активные CI (минимальный рекомендуемый фильтр)
active=true

# Активные CI со статусом установки «Установлен»
active=true^install_status=1

# Приложения в производственном использовании
active=true^used_for=Production

# CI, обновлённые за последние 30 дней
active=true^sys_updated_on>=javascript:gs.daysAgoStart(30)

# Определённая группа назначения
active=true^assignment_group.name=IT Operations

# Исключить выведенные из эксплуатации CI
active=true^install_statusNOT IN7,8

Лучшая практика: Всегда включайте active=true как минимум. Таблицы CMDB часто содержат тысячи выведенных из эксплуатации записей, которые не должны импортироваться в ваш архитектурный ландшафт.


Шаг 4: Настройка маппингов полей

Каждый маппинг содержит маппинги полей, определяющие, как отдельные поля преобразуются между двумя системами. Поле ввода Turbo EA предоставляет подсказки автозаполнения на основе выбранного типа карточки — включая основные поля, даты жизненного цикла и все пользовательские атрибуты из схемы типа.

Добавление полей

Для каждого маппинга поля вы настраиваете:

Настройка Описание
Поле Turbo EA Путь поля в Turbo EA (автозаполнение предлагает варианты на основе типа карточки)
Поле SNOW Имя API столбца ServiceNow (например, name, short_description)
Направление Источник истины для каждого поля: SNOW ведёт или Turbo ведёт
Преобразование Как конвертировать значения: Прямое, Карта значений, Дата, Логическое
Идентификатор (флажок ID) Используется для сопоставления записей при начальной синхронизации

Пути полей Turbo EA

Автозаполнение группирует поля по секциям. Полная справка путей:

Путь Цель Пример значения
name Отображаемое имя карточки "SAP S/4HANA"
description Описание карточки "Основная ERP-система для финансов"
lifecycle.plan Жизненный цикл: дата планирования "2024-01-15"
lifecycle.phaseIn Жизненный цикл: дата внедрения "2024-03-01"
lifecycle.active Жизненный цикл: дата активации "2024-06-01"
lifecycle.phaseOut Жизненный цикл: дата вывода "2028-12-31"
lifecycle.endOfLife Жизненный цикл: дата окончания "2029-06-30"
attributes.<key> Любой пользовательский атрибут из схемы полей типа карточки Зависит от типа поля

Например, если ваш тип Application имеет поле с ключом businessCriticality, выберите attributes.businessCriticality из выпадающего списка.

Поля идентификации — как работает сопоставление

Отметьте одно или несколько полей как Идентификатор (значок ключа). Они используются при первой синхронизации для сопоставления записей ServiceNow с существующими карточками Turbo EA:

  1. Поиск в карте идентификаторов — если связь sys_id <-> UUID карточки уже существует, используется она
  2. Точное совпадение имени — сопоставление по значению поля идентификации (например, по имени приложения)
  3. Нечёткое совпадение — если нет точного совпадения, используется SequenceMatcher с порогом сходства 85%

Лучшая практика: Всегда отмечайте поле name как поле идентификации. Если имена различаются между системами (например, SNOW включает номера версий типа «SAP S/4HANA v2.1», а Turbo EA — «SAP S/4HANA»), приведите их в соответствие перед первой синхронизацией для лучшего качества сопоставления.

После того как первая синхронизация установит связи в карте идентификаторов, последующие синхронизации используют постоянную карту идентификаторов и не полагаются на сопоставление имён.


Шаг 5: Запуск первой синхронизации

Переключитесь на вкладку Панель синхронизации.

Запуск синхронизации

Для каждого активного маппинга вы видите кнопки Pull и/или Push в зависимости от настроенного направления синхронизации:

  • Pull (значок загрузки из облака) — извлекает данные из SNOW в Turbo EA
  • Push (значок выгрузки в облако) — отправляет данные Turbo EA в ServiceNow

Что происходит во время Pull-синхронизации

1. ИЗВЛЕЧЕНИЕ  Получение всех подходящих записей из SNOW (пакетами по 500)
2. СОПОСТАВЛЕНИЕ  Сопоставление каждой записи с существующей карточкой:
                  a) Карта идентификаторов (постоянный поиск sys_id <-> UUID карточки)
                  b) Точное совпадение имени по полям идентификации
                  c) Нечёткое совпадение имени (порог сходства 85%)
3. ПРЕОБРАЗОВАНИЕ  Применение маппингов полей для конвертации SNOW -> формат Turbo EA
4. СРАВНЕНИЕ  Сравнение преобразованных данных с существующими полями карточки
5. СТЕЙДЖИНГ  Назначение действия каждой записи:
              - create: Новая, подходящая карточка не найдена
              - update: Совпадение найдено, поля различаются
              - skip:   Совпадение найдено, различий нет
              - delete: В карте идентификаторов, но отсутствует в SNOW
6. ПРИМЕНЕНИЕ  Выполнение промежуточных действий (создание/обновление/архивация карточек)

Когда Пропустить стейджинг включён, шаги 5 и 6 объединяются — действия применяются напрямую без записи промежуточных записей.

Просмотр результатов синхронизации

Таблица История синхронизации показывает после каждого запуска:

Столбец Описание
Начало Когда синхронизация началась
Направление Pull или Push
Статус completed, failed или running
Извлечено Всего записей получено из ServiceNow
Создано Новых карточек создано в Turbo EA
Обновлено Существующих карточек обновлено
Удалено Карточек архивировано (мягкое удаление)
Ошибки Записей, которые не удалось обработать
Длительность Фактическое время

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

Рекомендуемая процедура первой синхронизации

1. Установите маппинг в режим ДОБАВЛЕНИЯ с включённым стейджингом
2. Запустите pull-синхронизацию
3. Просмотрите промежуточные записи — убедитесь, что создания корректны
4. Перейдите в Реестр, проверьте импортированные карточки
5. При необходимости скорректируйте маппинги полей или запрос фильтрации
6. Повторяйте до удовлетворительного результата
7. Переключитесь в КОНСЕРВАТИВНЫЙ режим для текущего использования
8. После нескольких успешных запусков включите «Пропустить стейджинг»

Понимание направления синхронизации и направления полей

Это наиболее часто неправильно понимаемая концепция. Существует два уровня направления, которые работают вместе:

Уровень таблицы: направление синхронизации

Устанавливается на самом маппинге. Контролирует какие операции синхронизации доступны на панели синхронизации:

Направление синхронизации Кнопка Pull? Кнопка Push? Когда использовать...
ServiceNow -> Turbo EA Да Нет CMDB является мастер-источником, вы только импортируете
Turbo EA -> ServiceNow Нет Да Инструмент EA обогащает CMDB оценками
Двунаправленный Да Да Обе системы вносят данные в разные поля

Уровень поля: направление

Устанавливается для каждого маппинга поля. Контролирует значение какой системы приоритетнее во время синхронизации:

Направление поля При Pull (SNOW -> Turbo) При Push (Turbo -> SNOW)
SNOW ведёт Значение импортируется из ServiceNow Значение пропускается (не передаётся)
Turbo ведёт Значение пропускается (не перезаписывается) Значение экспортируется в ServiceNow

Как они работают вместе — пример

Маппинг: Application <-> cmdb_ci_business_app, Двунаправленный

Поле Направление Pull делает... Push делает...
name Turbo ведёт Пропускает (EA курирует имена) Передаёт имя EA -> SNOW
description Turbo ведёт Пропускает (EA пишет описания) Передаёт описание -> SNOW
lifecycle.active Turbo ведёт Пропускает (EA управляет жизненным циклом) Передаёт дату запуска -> SNOW
attributes.businessCriticality Turbo ведёт Пропускает (оценка EA) Передаёт оценку -> пользовательское поле SNOW
attributes.ipAddress SNOW ведёт Импортирует IP из обнаружения Пропускает (операционные данные)
attributes.installStatus SNOW ведёт Импортирует операционный статус Пропускает (данные ITSM)

Ключевое понимание: Направление на уровне таблицы определяет какие кнопки отображаются. Направление на уровне поля определяет какие поля фактически передаются при каждой операции. Двунаправленный маппинг, где Turbo EA ведёт большинство полей, а SNOW ведёт только операционные/технические поля — наиболее мощная конфигурация.

Лучшая практика: направление поля по типу данных

По умолчанию должно быть Turbo ведёт для подавляющего большинства полей. Устанавливайте SNOW ведёт только для операционных и технических метаданных из автоматического обнаружения или рабочих процессов ITSM.

Категория данных Рекомендуемое направление Обоснование
Имена, метки отображения Turbo ведёт Команда EA курирует авторитетные, чистые имена — имена в CMDB часто автогенерированные или непоследовательные
Описание Turbo ведёт Описания EA содержат стратегический контекст, бизнес-ценность и архитектурную значимость
Бизнес-критичность (модель TIME) Turbo ведёт Основная оценка EA — не операционные данные
Функциональное/техническое соответствие Turbo ведёт Оценка и классификация дорожной карты EA
Жизненный цикл (все фазы) Turbo ведёт Планирование, внедрение, активный, вывод, окончание — всё это решения планирования EA
Данные о затратах Turbo ведёт EA отслеживает совокупную стоимость владения и распределение бюджета
Тип хостинга, классификация Turbo ведёт Стратегическая категоризация, поддерживаемая архитекторами
Информация о вендоре/поставщике Turbo ведёт EA управляет стратегией вендоров, контрактами и рисками
Техническая метаинформация (ОС, IP, хост) SNOW ведёт Данные автоматического обнаружения — EA этого не поддерживает
Цели SLA, метрики доступности SNOW ведёт Операционные данные из рабочих процессов ITSM
Статус установки, операционное состояние SNOW ведёт CMDB отслеживает, установлен ли CI, выведен из эксплуатации и т.д.
Группа назначения, команда поддержки SNOW ведёт Операционное владение, управляемое в ServiceNow
Метаданные обнаружения (первое/последнее обнаружение) SNOW ведёт Временные метки автоматизации CMDB

Пропуск стейджинга — когда использовать

По умолчанию pull-синхронизации следуют рабочему процессу стейджинг-применение:

Извлечение -> Сопоставление -> Преобразование -> Сравнение -> СТЕЙДЖИНГ -> Проверка -> ПРИМЕНЕНИЕ

Записи помещаются в промежуточную таблицу, позволяя вам просмотреть изменения перед применением.

Режим пропуска стейджинга

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

Извлечение -> Сопоставление -> Преобразование -> Сравнение -> ПРЯМОЕ ПРИМЕНЕНИЕ

Промежуточные записи не создаются — изменения происходят немедленно.

Стейджинг (по умолчанию) Пропуск стейджинга
Этап проверки Да — проверка diff перед применением Нет — изменения применяются сразу
Таблица промежуточных записей Заполняется записями create/update/delete Не заполняется
Аудит Промежуточные записи + история событий Только история событий
Производительность Немного медленнее (записывает промежуточные строки) Немного быстрее
Отмена Можно прервать перед применением Необходимо отменять вручную

Когда использовать каждый вариант

Сценарий Рекомендация
Первый импорт Используйте стейджинг — проверьте, что создаётся, перед применением
Новый или изменённый маппинг Используйте стейджинг — убедитесь, что преобразования полей дают корректный результат
Стабильный, хорошо проверенный маппинг Пропустите стейджинг — нет необходимости проверять каждый запуск
Автоматизированные ежедневные синхронизации (cron) Пропустите стейджинг — автоматические запуски не могут ждать проверки
Большая CMDB (10 000+ CI) Пропустите стейджинг — избегает создания тысяч промежуточных строк
Среда с требованиями соответствия Используйте стейджинг — сохранение полного аудита в промежуточной таблице

Лучшая практика: Начните со стейджингом включённым для первых нескольких синхронизаций. Когда вы убедитесь, что маппинг даёт корректные результаты, включите пропуск стейджинга для автоматических запусков.


Режимы синхронизации и безопасность удалений

Режимы синхронизации

Режим Создание Обновление Удаление Подходит для
Добавление Да Да Никогда Первоначальный импорт, среды с низким риском
Консервативный Да Да Только карточки, созданные при синхронизации По умолчанию для текущих синхронизаций
Строгий Да Да Все связанные карточки Полное зеркало CMDB

Добавление никогда не удаляет карточки из Turbo EA, что делает его самым безопасным вариантом для первоначального импорта и сред, где Turbo EA содержит карточки, отсутствующие в ServiceNow.

Консервативный (по умолчанию) отслеживает, была ли каждая карточка изначально создана движком синхронизации. Только эти карточки могут быть автоматически архивированы, если они исчезнут из ServiceNow. Карточки, созданные вручную в Turbo EA или импортированные из других источников, никогда не затрагиваются.

Строгий архивирует любую связанную карточку, чей соответствующий CI ServiceNow больше не появляется в результатах запроса, независимо от того, кто её создал. Используйте этот режим, только когда ServiceNow является абсолютным источником истины.

Максимальный коэффициент удаления — предохранитель

В качестве предохранителя движок пропускает все удаления, если их количество превышает настроенный коэффициент:

удаления / всего_связанных > макс_коэффициент_удаления  ->  ПРОПУСТИТЬ ВСЕ УДАЛЕНИЯ

Пример с 10 связанными записями и порогом 50%:

Сценарий Удаления Коэффициент Результат
3 CI удалены нормально 3 / 10 = 30% Ниже порога Удаления выполняются
6 CI удалены одновременно 6 / 10 = 60% Выше порога Все удаления пропущены
SNOW возвращает пусто (сбой) 10 / 10 = 100% Выше порога Все удаления пропущены

Это предотвращает катастрофическую потерю данных от изменений запроса фильтрации, временных сбоев ServiceNow или неправильно настроенных имён таблиц.

Лучшая практика: Держите коэффициент удаления на уровне 50% или ниже для таблиц с менее чем 100 записями. Для больших таблиц (1000+) можно безопасно установить 25%.

Рекомендуемая прогрессия

Неделя 1:   Режим ДОБАВЛЕНИЯ, стейджинг ВКЛ, запуск вручную, проверка каждой записи
Недели 2-4: Режим КОНСЕРВАТИВНЫЙ, стейджинг ВКЛ, ежедневный запуск, выборочная проверка
Месяц 2+:   Режим КОНСЕРВАТИВНЫЙ, стейджинг ВЫКЛ (пропуск), автоматический ежедневный cron

Рекомендуемые сценарии по типам

Сценарий 1: Приложения из CMDB (наиболее распространённый)

Цель: Импортировать ландшафт приложений из ServiceNow, затем принять управление именами, описаниями, оценками и жизненным циклом в Turbo EA. SNOW ведёт только операционные поля.

Маппинг:

Настройка Значение
Тип карточки Application
Таблица SNOW cmdb_ci_business_app
Направление Двунаправленный
Режим Консервативный
Фильтр active=true^install_status=1

Маппинги полей:

Поле Turbo EA Поле SNOW Направление Преобразование ID?
name name Turbo ведёт Прямое Да
description short_description Turbo ведёт Прямое
lifecycle.active go_live_date Turbo ведёт Дата
lifecycle.endOfLife retirement_date Turbo ведёт Дата
attributes.businessCriticality busines_criticality Turbo ведёт Карта значений
attributes.hostingType hosting_type Turbo ведёт Прямое
attributes.installStatus install_status SNOW ведёт Прямое
attributes.ipAddress ip_address SNOW ведёт Прямое

Конфигурация карты значений для businessCriticality:

{
  "mapping": {
    "1 - most critical": "missionCritical",
    "2 - somewhat critical": "businessCritical",
    "3 - less critical": "businessOperational",
    "4 - not critical": "administrativeService"
  }
}

Совет для первой синхронизации: При первом pull значения SNOW заполняют все поля (поскольку карточки ещё не существуют). После этого поля, которые ведёт Turbo, принадлежат команде EA — последующие pull обновляют только операционные поля, которые ведёт SNOW (статус установки, IP), а команда EA управляет всем остальным напрямую в Turbo EA.

После импорта: Уточните имена приложений, напишите стратегические описания, свяжите с бизнес-возможностями, добавьте оценки функционального/технического соответствия и установите фазы жизненного цикла — всё это теперь принадлежит Turbo EA и будет передано обратно в ServiceNow при push-синхронизациях.


Сценарий 2: ИТ-компоненты (серверы)

Цель: Импортировать серверную инфраструктуру для карты инфраструктуры и анализа зависимостей.

Маппинг:

Настройка Значение
Тип карточки ITComponent
Таблица SNOW cmdb_ci_server
Направление Двунаправленный
Режим Консервативный
Фильтр active=true^hardware_statusNOT IN6,7

Маппинги полей:

Поле Turbo EA Поле SNOW Направление Преобразование ID?
name name Turbo ведёт Прямое Да
description short_description Turbo ведёт Прямое
attributes.manufacturer manufacturer.name Turbo ведёт Прямое
attributes.operatingSystem os SNOW ведёт Прямое
attributes.ipAddress ip_address SNOW ведёт Прямое
attributes.serialNumber serial_number SNOW ведёт Прямое
attributes.hostname host_name SNOW ведёт Прямое

Примечание: Для серверов операционные поля обнаружения, такие как ОС, IP, серийный номер и имя хоста, естественно поступают из автоматического обнаружения SNOW. Но команда EA по-прежнему владеет отображаемым именем и описанием для стратегического контекста.

После импорта: Свяжите ИТ-компоненты с приложениями через связи, что питает граф зависимостей и отчёты по инфраструктуре.


Сценарий 3: Программные продукты с отслеживанием EOL

Цель: Импортировать программные продукты и объединить с интеграцией endoflife.date Turbo EA.

Маппинг:

Настройка Значение
Тип карточки ITComponent
Таблица SNOW cmdb_ci_spkg
Направление Двунаправленный
Режим Консервативный
Фильтр active=true

Маппинги полей:

Поле Turbo EA Поле SNOW Направление Преобразование ID?
name name Turbo ведёт Прямое Да
description short_description Turbo ведёт Прямое
attributes.version version SNOW ведёт Прямое
attributes.vendor manufacturer.name Turbo ведёт Прямое

После импорта: Перейдите в Администрирование > EOL и используйте Массовый поиск для автоматического сопоставления импортированных ИТ-компонентов с продуктами endoflife.date. Это обеспечивает автоматическое отслеживание рисков EOL.


Сценарий 4: Вендоры / поставщики (двунаправленный)

Цель: Поддерживать реестр вендоров в синхронизированном состоянии. Turbo EA владеет именами вендоров, описаниями и стратегическим контекстом.

Маппинг:

Настройка Значение
Тип карточки Provider
Таблица SNOW core_company
Направление Двунаправленный
Режим Добавление
Фильтр vendor=true

Маппинги полей:

Поле Turbo EA Поле SNOW Направление Преобразование ID?
name name Turbo ведёт Прямое Да
description notes Turbo ведёт Прямое
attributes.website website Turbo ведёт Прямое
attributes.contactEmail email SNOW ведёт Прямое

Сценарий 5: Передача оценок EA обратно в ServiceNow

Цель: Экспортировать специфичные для EA оценки в пользовательские поля ServiceNow, чтобы команды ITSM видели контекст EA.

Маппинг:

Настройка Значение
Тип карточки Application
Таблица SNOW cmdb_ci_business_app
Направление Turbo EA -> ServiceNow
Режим Добавление

Маппинги полей:

Поле Turbo EA Поле SNOW Направление Преобразование ID?
name name SNOW ведёт Прямое Да
attributes.businessCriticality u_ea_business_criticality Turbo ведёт Карта значений
attributes.functionalSuitability u_ea_functional_fit Turbo ведёт Карта значений
attributes.technicalSuitability u_ea_technical_fit Turbo ведёт Карта значений

Важно: Push-синхронизация в пользовательские поля (с префиксом u_) требует, чтобы эти столбцы уже существовали в ServiceNow. Согласуйте с администратором ServiceNow их создание перед настройкой push-маппинга. Сервисной учётной записи нужна роль import_admin для доступа на запись.


Справочник типов преобразований

Прямое (по умолчанию)

Передаёт значение без изменений. Используйте для текстовых полей одинакового формата в обеих системах.

Карта значений

Преобразует перечисляемые значения между системами. Настройте с помощью JSON-маппинга:

{
  "mapping": {
    "1": "missionCritical",
    "2": "businessCritical",
    "3": "businessOperational",
    "4": "administrativeService"
  }
}

Маппинг автоматически обращается при push из Turbo EA в ServiceNow.

Формат даты

Обрезает значения datetime ServiceNow (2024-06-15 14:30:00) до формата только даты (2024-06-15). Используйте для дат фаз жизненного цикла, где время несущественно.

Логическое

Конвертирует между строковыми булевыми значениями ServiceNow ("true", "1", "yes") и нативными булевыми значениями.


Лучшие практики безопасности

Управление учётными данными

Практика Детали
Шифрование при хранении Все учётные данные шифруются через Fernet (AES-128-CBC), производный от SECRET_KEY. При ротации SECRET_KEY повторно введите все учётные данные ServiceNow.
Минимальные привилегии Создайте выделенную сервисную учётную запись SNOW с доступом только на чтение к конкретным таблицам. Предоставляйте доступ на запись только при использовании push-синхронизации.
OAuth 2.0 предпочтителен Basic Auth отправляет учётные данные при каждом вызове API. OAuth использует краткосрочные токены с ограничениями области.
Ротация учётных данных Ротируйте пароли или секреты клиента каждые 90 дней.

Сетевая безопасность

Практика Детали
HTTPS обязателен HTTP URL отклоняются при валидации. Все подключения должны использовать HTTPS.
Валидация имён таблиц Имена таблиц проверяются по ^[a-zA-Z0-9_]+$ для предотвращения инъекций.
Валидация sys_id Значения sys_id проверяются как 32-символьные шестнадцатеричные строки.
Список разрешённых IP Настройте контроль доступа по IP в ServiceNow, чтобы разрешить только IP-адрес вашего сервера Turbo EA.

Контроль доступа

Практика Детали
Защита RBAC Все конечные точки ServiceNow требуют разрешения servicenow.manage.
Аудит Все изменения, созданные синхронизацией, публикуют события с source: "servicenow_sync", видимые в истории карточки.
Без раскрытия учётных данных Пароли и секреты никогда не возвращаются в ответах API.

Контрольный список для производства

  • [ ] Выделенная сервисная учётная запись ServiceNow (не личная)
  • [ ] OAuth 2.0 с грантом клиентских учётных данных
  • [ ] График ротации учётных данных (каждые 90 дней)
  • [ ] Сервисная учётная запись ограничена только маппированными таблицами
  • [ ] Настроен список разрешённых IP ServiceNow для сервера Turbo EA
  • [ ] Максимальный коэффициент удаления 50% или ниже
  • [ ] Мониторинг запусков синхронизации на необычные ошибки или удаления
  • [ ] Запросы фильтрации включают active=true как минимум

Руководство по эксплуатации

Последовательность начальной настройки

1. Создайте сервисную учётную запись ServiceNow с минимальными требуемыми ролями
2. Проверьте сетевое подключение (может ли Turbo EA достичь SNOW через HTTPS?)
3. Создайте подключение в Turbo EA и протестируйте его
4. Убедитесь, что типы метамодели имеют все поля для синхронизации
5. Создайте первый маппинг в режиме ДОБАВЛЕНИЯ с включённым стейджингом
6. Запустите первую pull-синхронизацию — проверьте промежуточные записи
7. Примените промежуточные записи
8. Проверьте импортированные карточки в Реестре
9. При необходимости скорректируйте маппинги полей, повторите
10. Переключите маппинг в КОНСЕРВАТИВНЫЙ режим для текущего использования
11. После нескольких успешных запусков включите «Пропустить стейджинг» для автоматизации

Текущие операции

Задача Частота Как
Запуск pull-синхронизации Ежедневно или еженедельно Панель синхронизации > кнопка Pull (или cron)
Проверка статистики синхронизации После каждого запуска Проверьте количество ошибок/удалений
Тестирование подключений Ежемесячно Нажмите кнопку тестирования на каждом подключении
Ротация учётных данных Ежеквартально Обновите в обеих системах — SNOW и Turbo EA
Проверка карты идентификаторов Ежеквартально Проверьте осиротевшие записи через статистику синхронизации
Аудит истории карточек По необходимости Фильтруйте события по источнику servicenow_sync

Настройка автоматических синхронизаций

Синхронизации можно запускать через API для автоматизации:

# Ежедневная pull-синхронизация в 2:00
0 2 * * * curl -s -X POST \
  -H "Authorization: Bearer $TURBOEA_TOKEN" \
  "https://turboea.company.com/api/v1/servicenow/sync/pull/$MAPPING_ID" \
  >> /var/log/turboea-sync.log 2>&1

Лучшая практика: Запускайте синхронизации в непиковые часы. Для больших таблиц CMDB (10 000+ CI) ожидайте 2-5 минут в зависимости от задержки сети и количества записей.

Планирование ёмкости

Размер CMDB Ожидаемая длительность Рекомендация
< 500 CI < 30 секунд Синхронизация ежедневно, стейджинг опционален
500-5000 CI 30с - 2 минуты Синхронизация ежедневно, пропуск стейджинга
5000-20 000 CI 2-5 минут Синхронизация ночью, пропуск стейджинга
20 000+ CI 5-15 минут Синхронизация еженедельно, используйте фильтры для разделения

Устранение неполадок

Проблемы подключения

Симптом Причина Решение
Connection failed: [SSL] Самоподписанный или просроченный сертификат Убедитесь, что SNOW использует действительный сертификат публичного CA
HTTP 401: Unauthorized Неверные учётные данные Повторно введите имя пользователя/пароль; проверьте, не заблокирована ли учётная запись
HTTP 403: Forbidden Недостаточно ролей Предоставьте роли itil и cmdb_read сервисной учётной записи
Connection failed: timed out Блокировка межсетевым экраном Проверьте правила; добавьте IP Turbo EA в список разрешённых SNOW
Тест ОК, но синхронизация не работает Разрешения на уровне таблицы Предоставьте доступ на чтение к конкретной таблице CMDB

Проблемы синхронизации

Симптом Причина Решение
0 записей извлечено Неверная таблица или фильтр Проверьте имя таблицы; упростите запрос фильтрации
Все записи — «create» Несовпадение идентификаторов Отметьте name как идентификатор; проверьте совпадение имён
Много ошибок Сбои преобразования Проверьте промежуточные записи на сообщения об ошибках
Удаления пропущены Коэффициент превышен Увеличьте порог или исследуйте, почему CI исчезли
Изменения не видны Кэш браузера Принудительное обновление; проверьте историю карточки на наличие событий
Дублирование карточек Несколько маппингов для одного типа Используйте один маппинг на тип карточки на подключение
Push-изменения отклонены Отсутствуют разрешения SNOW Предоставьте роль import_admin сервисной учётной записи

Диагностические инструменты

# Предварительный просмотр маппинга записей (5 примеров, без побочных эффектов)
POST /api/v1/servicenow/mappings/{mapping_id}/preview

# Обзор таблиц экземпляра SNOW
GET /api/v1/servicenow/connections/{conn_id}/tables?search=cmdb

# Просмотр столбцов таблицы
GET /api/v1/servicenow/connections/{conn_id}/tables/cmdb_ci_business_app/fields

# Фильтрация промежуточных записей по действию или статусу
GET /api/v1/servicenow/sync/runs/{run_id}/staged?action=create
GET /api/v1/servicenow/sync/runs/{run_id}/staged?action=update
GET /api/v1/servicenow/sync/runs/{run_id}/staged?status=error

Справочник API (краткий)

Все конечные точки требуют Authorization: Bearer <token> и разрешение servicenow.manage. Базовый путь: /api/v1.

Подключения

Метод Путь Описание
GET /servicenow/connections Список подключений
POST /servicenow/connections Создание подключения
GET /servicenow/connections/{id} Получение подключения
PATCH /servicenow/connections/{id} Обновление подключения
DELETE /servicenow/connections/{id} Удаление подключения + всех маппингов
POST /servicenow/connections/{id}/test Тестирование подключения
GET /servicenow/connections/{id}/tables Обзор таблиц SNOW
GET /servicenow/connections/{id}/tables/{table}/fields Список столбцов таблицы

Маппинги

Метод Путь Описание
GET /servicenow/mappings Список маппингов с маппингами полей
POST /servicenow/mappings Создание маппинга с маппингами полей
GET /servicenow/mappings/{id} Получение маппинга с маппингами полей
PATCH /servicenow/mappings/{id} Обновление маппинга (заменяет поля, если указаны)
DELETE /servicenow/mappings/{id} Удаление маппинга
POST /servicenow/mappings/{id}/preview Предварительный просмотр (5 примеров записей)

Операции синхронизации

Метод Путь Описание
POST /servicenow/sync/pull/{mapping_id} Pull-синхронизация (?auto_apply=true по умолчанию)
POST /servicenow/sync/push/{mapping_id} Push-синхронизация
GET /servicenow/sync/runs Список истории синхронизации (?limit=20)
GET /servicenow/sync/runs/{id} Детали запуска + статистика
GET /servicenow/sync/runs/{id}/staged Список промежуточных записей запуска
POST /servicenow/sync/runs/{id}/apply Применение ожидающих промежуточных записей