Сценарій "Інтеграція Business Central та HCM & LMS"
Extension — SMART Payroll and SMART HCM & LMS Connector (додаток до SMART Payroll)
У системі є можливість налаштувати інтеграцію між Business Central та SMART HCM & LMS (Human Capital Management & Learning Management System). Інтеграція забезпечує автоматичну синхронізацію кадрових та зарплатних даних між двома системами.
Основні можливості:
- синхронізація організаційної структури (підрозділи, посади, позиції, категорії працівників)
- синхронізація даних фіз. осіб та трудових договорів з рядками
- синхронізація причин відсутності та груп тимчасових активностей
- передача зарплатних документів та статусів табелів
- отримання заяв на відсутність з HCM & LMS до Business Central
- підтримка крос-компанійних фіз. осіб
Синхронізація працює за подійною моделлю: при зміні даних у Business Central автоматично с творюється запис у черзі інтеграції, який потім обробляється чергою завдань і надсилається до HCM & LMS.
Крок 1: Налаштування інтеграції
Шлях: HCM & LMS Setup
На сторінці налаштування доступні такі блоки полів:
Блок «Загальне»
| Поле | Опис | Залежності та особливості |
|---|---|---|
| HCM Company Id | Ідентифікатор (GUID) компанії в системі HCM & LMS. Використовується як AccountId у всіх запитах інтеграції. | Заповнюється автоматично при першому відкритті сторінки налаштування (береться з Company.Id). Обов'язкове для активації. |
| HCM Company Code | Код компанії в системі HCM & LMS. | Обов'язкове для активації. Використовується при створенні запису компанії в HCM. При видаленні значення — очищується черга інтеграції. |
| Active | Вмикає або вимикає обмін даними між системами. | При першій активації система автоматично генерує початкові записи інтеграції для всіх сутностей (детальніше у Кроці 2). Для активації обов'язково мають бути заповнені: HCM Company Id, HCM Company Code, HCM User ID. |
| Integration Token | Токен авторизації для API HCM & LMS. | Зберігається у захищеному (маскованому) полі. Присвоюється індивідуально. |
| Integration URL | Базова URL-адреса API HCM & LMS. | Не слід включати шляхи /create, /update, /delete — вони додаються автоматично. Присвоюється індивідуально. |
| Restore Integration Func. | Автоматичне відновлення черги завдань інтеграції при неочікуваній зупинці. | Якщо увімкнено, система автоматично перезапускає чергу завдань при вході користувача, якщо черга зупинилась через помилку. |
Блок «Адміністрування»
| Поле | Опис | Залежності та особливості |
|---|---|---|
| Default Taxpayer Document Type | Тип документа, що засвідчує особу, за замовчуванням. Використовується для передачі паспортних даних фіз. осіб. | Залежить від довідника «Типи документів фіз. особи» (SMA Person Document Type). Якщо заповнено — при синхронізації фіз. особи передаються серія, номер, дата видачі та ким виданий документ зазначеного типу. |
| HCM User ID | Код користувача Business Central, зміни якого НЕ синхронізуються до HCM. | Залежить від таблиці Users. Обов'язкове для активації. Використовується для запобігання циклам синхронізації — зміни, внесені цим користувачем (наприклад, з боку HCM), не створюють записів інтеграції. |
| API TimeZone | Часовий пояс Windows для форматування дат і часу в запитах. | Наприклад: «FLE Standard Time» для Києва. |
| Enable Payroll Documents | Чи синхронізувати зарплатні документи до HCM & LMS. | За замовчуванням увімкнено. Якщо вимкнено — зарплатні документи не передаються. |
| Enable Between Payroll Docs | Чи включати міжперіодні зарплатні документи до синхронізації. | За замовчуванням увімкнено. Працює разом з Enable Payroll Documents. |
| Enable Employee Timesheet | Чи синхронізувати статуси табелів до HCM & LMS. | За замовчуванням увімкнено. Передаються тільки табелі зі статусом «Випущено». |
Блок «Фільтри»
| Поле | Опис | Залежності та особливості |
|---|---|---|
| Labor Contract Filter | Фільтр для таблиці «Трудовий договір». | Обмежує, які трудові договори синхронізуються до HCM. Редагується через AssistEdit — відкривається конструктор фільтрів. Якщо порожній — синхронізуються всі договори. |
| Position Filter | Фільтр для таблиці «Позиція». | Обмежує, які позиції синхронізуються до HCM. Редагується через AssistEdit. За замовчуванням позиції зі статусом «Планована» та бюджетні позиції не синхронізуються. |
Блок «Портал»
| Поле | Опис | Залежності та особливості |
|---|---|---|
| Paid Leave Group Code | Код групи тимчасової активності для оплачуваних відпусток. | Залежить від довідника «Групи тимчасових активностей» (SMA Time Activity Group). Використовується для розрахунку днів табеля на порталі HCM. |
| Unpaid Leave Group Code | Код групи тимчасової активності для неоплачуваних відпусток. | Залежить від довідника «Групи тимчасових активностей». |
| Sick Leave Group Code | Код групи тимчасової активності для лікарняних. | Залежить від довідника «Групи тимчасових активностей». |
| Other Leave Group Code | Код групи тимчасової активності для інших типів відсутностей. | Залежить від довідника «Групи тимчасових активностей». |
Крок 2: Активація інтеграції
При встановленні поля Active = Так, система автоматично створює початкові записи інтеграції для передачі всіх поточних даних до HCM & LMS. Записи створюються у такому порядку:
- Інформація про організацію — створюється один запис для поточної компанії
- Посади (довідник Job Titles) — усі посади
- Категорії працівників (Employee Categories) — усі категорії
- Причини відсутності (Causes of Absence) — тільки ті, де увімкнено прапорець «Export to HCM»
- Підрозділи (Organizational Units) — усі підрозділи
- Групи тимчасових активностей (Time Activity Groups) — тільки ті, де увімкнено прапорець «Export to HCM»
- Фіз. особи (Persons) — тільки ті, у яких поле «Основна компанія HCM» порожнє
- Позиції (Positions) — з урахуванням фільтра Position Filter, виключаючи позиції зі статусом «Планована» та бюджетні позиції
- Трудові договори (Labor Contracts) — з урахуванням фільтра Labor Contract Filter, тільки з заповненим номером співробітника. Для кожного договору також створюються:
- рядки договору (затверджені)
- зарплатні документи (якщо Enable Payroll Documents увімкнено, за останній рік)
- статуси табелів (якщо Enable Employee Timesheet увімкнено, тільки зі статусом «Випущено»)
Зверніть увагу: порядок створення важливий — довідники (посади, категорії, причини відсутності, підрозділи) створюються першими, щоб при обробці залежних сутностей (позиції, договори) довідкові дані вже були в HCM & LMS.
Після активації необхідно запустити чергу завдань (Job Queue) для фактичної відправки даних. Черга завдань створюється автоматично при установці додатку зі статусом «На утриманні» — її потрібно активувати вручну. Рекомендований інтервал: 1–5 хвилин.
Крок 3: Сторінки між якими інтегруються системи
Нижче наведено маппінг полів для кожної сутності, що синхронізується. Стрілка вказує напрямок передачі даних:
- → Business Central до HCM & LMS
- ← HCM & LMS до Business Central
- ↔ двосторонній обмін
Для кожної сутності зазначено, які зміни полів у Business Central ініціюють синхронізацію та які операції підтримуються (створення, зміна, видалення).
3.1. Інформація про організацію (Business Central) → Назва організації (HCM & LMS)
Операції: зміна
Синхронізація ініціюється при зміні будь-якого з полів: Назва, Адреса, Телефон, Веб-сайт, Ел. пошта.
| Поле Business Central | Поле HCM & LMS | Опис та залежності |
|---|---|---|
| — | id | Береться з HCM Company Id у налаштуваннях |
| — | Code | Береться з HCM Company Code у налаштуваннях |
| Назва (Name) | Назва організації (Name) | Назва компанії |
| Телефон (Phone No.) | Телефон (Telephone1) | Телефон компанії |
| Адреса (Address) | Адреса (Address) | Адреса компанії |
| Веб-сайт (Home Page) | Веб-сайт (WebSiteUrl) | Домашня сторінка компанії |
| Основна діяльність (SMA Principal Activity) | Опис (Description) | Передається тільки якщо заповнено |
| Ел. пошта (E-Mail) | Ел. пошта (Emailaddress1) | Електронна пошта компанії |
3.2. Посади (Business Central) → Посади (HCM & LMS)
Операції: створення, зміна, видалення
Синхронізація ініціюється при: створенні, зміні полів Назва або Статус, видаленні, перейменуванні коду.
| Поле Business Central | Поле HCM & LMS | Опис та залежності |
|---|---|---|
| Код (Code) | Код (Code) | Код посади |
| Назва (Name) | Назва (Name) | Назва посади |
| Статус (Status) | Стан (State) | Якщо Статус = «Закрита» → «Inactive», інакше → «Active» |
3.3. Категорії працівників (Business Central) → Рівень Посади (HCM & LMS)
Операції: створення, зміна, видалення
Синхронізація ініціюється при: створенні, зміні поля Опис, ви даленні, перейменуванні коду.
| Поле Business Central | Поле HCM & LMS | Опис та залежності |
|---|---|---|
| Код (Code) | Код (Code) | Код категорії |
| Опис (Description) | Назва (Name) | Назва рівня посади |
3.4. Підрозділи (Business Central) → Підрозділ (HCM & LMS)
Операції: створення, зміна, видалення
Синхронізація ініціюється при: створенні, зміні полів Назва, Повна назва, Статус, Менеджер, Батьківський підрозділ або Дата початку, видаленні.
| Поле Business Central | Поле HCM & LMS | Опис та залежності |
|---|---|---|
| Код (Code) | Код (Code) | Код підрозділу |
| Назва (Name) | Назва (Name) | Коротка назва підрозділу |
| Повна назва (Full Name) | Опис (Description) | Повна назва підрозділу |
| Менеджер (Manager No.) | Керівник підрозділу (HeadOfSubdivisionId) | Залежить від: Співробітник → Фіз. особа. Пере дається SystemId фіз. особи менеджера. Для крос-компанійних осіб використовується SystemId з основної компанії. |
| Позиція менеджера | Позиція керівника (HeadOfSubdivisionPositionId) | Залежить від: Співробітник → Позиція (SMA Position No.). Передається SystemId позиції менеджера. |
| Батьківський підрозділ (Parent Code) | Головний підрозділ (MainSubdivisionId) | Залежить від: батьківський підрозділ. Передається SystemId батьківського підрозділу. |
| Дата початку (Starting Date) | Дата створення (CreatedOn) | Дата створення підрозділу |
| Статус (Status) | Стан (State) | Якщо Статус = «Закрита» → «Inactive», інакше → «Active» |
3.5. Позиції (Business Central) → Позиції (HCM & LMS)
Операції: створення, зміна, видалення
Синхронізація ініціюється при: створенні, зміні контрольованих полів, видаленні. Позиції з фільтра Position Filter та зі статусом «Планована» або бюджетні не синхронізуються.
| Поле Business Central | Поле HCM & LMS | Опис та залежності |
|---|---|---|
| Номер (No.) | Код (Code) | Номер позиції |
| Посада (Job Title Code) | Назва (Name) | Залежить від: довідник Посади. Передається назва посади (Job Title.Name). |
| Працівник на позиції | Працівник (employeeId) | Визначається автоматично: шукається активний співробітник, призначений на цю позицію через трудовий договір. Передається SystemId фіз. особи. Якщо працівника немає — null. |
| Дата призначення | Дата призначення (positionAssignmentDate) | Визначається автоматично: дата початку останнього затвердженого рядка трудового договору для цієї позиції. |
| Є керівником | Керівник підрозділу (IsHeadOfSubdivision) | Визначається автоматично: true, якщо цей співробітник є менеджером якогось підрозділу. |
| Дата початку (Starting Date) | Дата відкриття позиції (PositionOpeningDate) | Дата відкриття позиції. Порожня, якщо не заповнена. |
| Дата закінчення (Ending Date) | Дата закриття позиції (PositionClosingDate) | Дата закриття позиції. Порожня, якщо не заповнена. |
| Ставка (Rate) | Еквівалент повної зайнятості (FullTimeEquivalency) | Ставка позиції (наприклад, 1.0 або 0.5) |
| Дата затвердження (Approval Date) | Дата затвердження (ApprovalDate) | Дата затвердження позиції. Порожня, якщо не заповнена. |
| Статус (Status) | Статус (Status) | Текстове значення статусу |
| Статус (Status) | Стан (State) | Якщо Статус = «Закрита» → «Inactive», інакше → «Active» |
| Посада (Job Title Code) | Посада (jobId) | Залежить від: довідник Посади. Передається SystemId посади. |
| Підрозділ (Org. Unit Code) | Підрозділ (SubdivisionId) | Залежить від: довідник Підрозділи. Передається SystemId підрозділу. |
| Батьківська позиція (Parent Position No.) | Позиція керівника (ManagerPositionId) | Залежить від: батьківська позиція. Передається SystemId батьківської позиції. |
| Підрозділ + Посада | Профіль посади (jobProfileId) | Складне поле: формується як комбінація SystemId підрозділу та SystemId посади через «/». |
3.6. Фіз. особи (Business Central) → Співробітники (HCM & LMS)
Опе рації: створення, зміна, видалення
Синхронізація ініціюється при: створенні, зміні полів (ім'я, прізвище, по-батькові, стать, дата народження, ел. пошта, телефони, РНОКПП, сімейний стан), видаленні. Також ініціюється при зміні документа фіз. особи типу, зазначеного в Default Taxpayer Document Type.
Крос-компанійна взаємодія: чому вона потрібна
У Business Central кожна компанія має свою окрему картку фізичної особи. Одна й та сама людина (наприклад, Іванов Іван Іванович) може мати запис фіз. особи в Компанії A та окремий запис у Компанії B. Це стандартна поведінка BC — дані кожної компанії ізольовані.
У HCM & LMS, навпаки, існує один єдиний запис співробітника на кожну фізичну особу — незалежно від того, у скількох компаніях вона працює.
Тому конектор повинен визначити, з якої саме компанії BC брати дані для синхронізації кожної фізичної особи до HCM & LMS, та забезпечити, що всі ком панії посилаються на один і той самий запис у HCM & LMS.
Поле «Основна компанія HCM» (SMAHCM Primary Company Name)
Це ключове поле на картці фіз. особи, яке визначає роль цього запису в крос-компанійній синхронізації:
- Порожнє значення — цей запис є первинним (основним). Саме з нього дані фіз. особи надсилаються до HCM & LMS.
- Заповнене значення (назва іншої компанії) — цей запис є вторинним (копією). Він не синхронізується самостійно до HCM & LMS. Значення вказує, в якій компанії знаходиться первинний запис цієї фіз. особи.
Як поле заповнюється автоматично:
При створенні або зміні картки фіз. особи система автоматично шукає збіги в усіх компаніях, де активна інтеграція HCM & LMS:
- Пошук за РНОКПП + Дата народження: система перевіряє всі інші компанії з активною інтеграцією. Якщо знаходить фіз. особу з таким самим РНОКПП та датою народження, де поле «Основна компанія HCM» порожнє (тобто ця особа є первинною в тій компанії), — поточний запис позначається як вторинний (заповнюється назва тієї компанії).
- Резервний пошук за документом фіз. особи: якщо РНОКПП порожній, система шукає збіг за серією та номером документа фіз. особи (позначеного як документ за замовчуванням).
- Перший збіг виграє: якщо збіг знайдено в кількох компаніях, використовується перша знайдена.
Поле також можна заповнити вручну. При ручному встановленні система запропонує скопіювати всі дані з первинної картки фіз. особи.
На що впливає поле «Основна компанія HCM»:
- Синхронізація фіз. особи: тільки записи з порожнім полем надсилаються до HCM & LMS. Вторинні записи ігноруються.
- Підстановка SystemId: коли інші сутності (трудові договори, рядки договорів, табелі, позиції, підрозділи) посилаються на вторинну фіз. особу, система автоматично підставляє SystemId первинної фіз. особи з основної компанії. Це забезпечує, що в HCM & LMS усі посилання ведуть до одног о запису співробітника.
- Активація інтеграції (Крок 2): при початковому створенні записів інтеграції система пропускає фіз. осіб із заповненим полем «Основна компанія HCM».
Як визначається співробітник (Employee) для фіз. особи
Для заповнення полів, пов'язаних зі співробітником (номер співробітника, підрозділ, посада, профіль посади, дата прийому), система шукає первинного співробітника серед усіх компаній з активною інтеграцією за таким пріоритетом:
- Основне місце роботи — найвищий пріоритет. Шукається затверджений трудовий договір з режимом роботи «Основне місце».
- Внутрішнє сумісництво — якщо основне місце не знайдено, шукається договір з режимом «Внутрішнє сумісництво».
- Зовнішнє сумісництво — найнижчий пріоритет. Шукається договір з режимом «Зовнішнє сумісництво».