Сценарій "Інтеграція 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.