Scenario "Integration of Business Central and HRIS systems"
Extension - SMART Payroll HRIS Integration Core (add-on to SMART Payroll)
The system allows you to configure integration between Business Central and Human Resource Information Systems (HRIS). Currently, API-based integration is implemented for the HiBob system, and the HiBob integration scenario is described below. At the same time, the SMART Payroll HRIS Integration Core add-on enables the processing of data received from other systems and the creation of corresponding processes in Business Central, namely: Creating Persons, maintaining data on Person documents, addresses, disabilities, and relatives. Automatically creating entries in the Personal Information Codes and Grounds for Application master data. Creating the organizational structure, namely Departments, Job Titles, and Positions. Creating Employment Contracts and HR transactions, namely Hiring, Transfer (due to changes in job title, department, FTE/rate, or base salary), employee Termination, and Rehiring. Maintaining information on employee Bank Accounts.
Step 1: Integration Setup
Path: HRIS Integration Setup
On the HRIS Integration Setup page, you can configure the following parameters/processes that will be executed during integration with Human Resource Information Systems (HRIS).
General FastTab
| Field | Description |
|---|---|
| Service Type | Select the HRIS system that the API integration will work with. Currently, API-based integration is implemented for the HiBob system. |
| Enabled | If enabled, integration will take place between the systems. |
| Service API URL | Specifies the URL of the API service that the integration will work with. |
Templates FastTab
| Field | Description |
|---|---|
| Organization Unit Nos. | Specifies the number series to be assigned to Departments created during integration. This field is required. |
| Template Organization Unit Code | Specifies the department to be used as a template for Departments created during integration. Leave this field blank if departments should not be created automatically during integration. |
| Match Org. Unit by Field | Select the field number from the "Department" table to determine whether such a department already exists in the system or is missing. For example, if the field value is set to "2" ("Name"), then during integration, when creating a position for an employee and determining the department code, the system will look up the value from the employee's HRIS card "Department" field in the department list by the "Name" field. If no match is found, the system will either create a new one (if the "Template Department Card" field is filled) or throw an error during the integration process. Note that the search is performed only for records with the "Approved" status that are not blocked. |
| Job Title Nos. | Specifies the number series to be assigned to Positions created during integration. This field is required. |
| Template Job Title Card | Specifies the position to be used as a template for Positions created during integration. Leave this field blank if positions should not be created automatically during integration. |
| Match Job Title by field | Select the field number from the "Position" table to determine whether such a position already exists in the system or is missing. Note that the search is performed only for records with the "Approved" status that are not blocked. |
| Firstly Validate Department for Position | By default, when creating a position, the position code is specified first with validation, followed by the department code. This means that if the Payroll Control Group Code and Employee Posting Group are specified on both the position and department cards, the default validation sequence will insert values into the corresponding fields on the position card from the Department card. If you need to override this sequence and validate the department first, followed by the position, set the "Validate Department First for Position" field to Yes. |
| Personal Address Nos. | Specifies the number series to be assigned to Personal Addresses created during integration. This field is required. |
| Employee Bank Nos. | Specifies the number series to be assigned to employee bank accounts created during integration. This field is required. |
Enabled Processes FastTab
This section allows you to configure the processes to be created in Business Central during integration with HRIS systems. The process of creating Persons (Personal Cards) always runs by default.
| Field | Description |
|---|---|
| Update Person | If set to Yes, when information about a Person is updated in the HRIS system, a task will be created in Business Central to update the Person's information in the system. |
| Labor Hire | If set to Yes, tasks for hiring employees will be created in the system. |
| Labor Transfer | If set to Yes, tasks for transferring employees due to changes in position, department, FTE rate, or salary will be created in the system. |
| Labor Dismiss | If set to Yes, tasks for terminating employees will be created in the system. |
| Address Information | If set to Yes, tasks for creating and updating personal addresses will be created in the system. |
| Bank Information | If set to Yes, tasks for creating and updating employee bank accounts will be created in the system. |
| Person Document | If set to Yes, tasks for creating and updating personal identity documents will be created in the system. |
| Disability Information | If set to Yes, tasks for creating and updating Medical Records with the "Disability" type for a Person will be created in the system. |
| Relative Information | If set to Yes, tasks for creating and updating information in the Employee Relatives directory will be created in the system. |
Step 2: Configuring Integration with HiBob
Extension: SMART Payroll Connector for HiBob (Add-on to SMART Payroll)
Path: HRIS Integration Setup
To configure the integration with the HiBob HRIS system, perform the following setup steps.
- On the HRIS Integration Setup page, on the HiBob FastTab, fill in the HiBob API User Name and HiBob API User Token fields (these service credentials must be provided by the client).
- On the HRIS Integration Setup page, on the General FastTab, select HiBob in the Service Type field and specify the Service API URL.
- On the HRIS Integration Setup page, go to Actions and select HiBob Tables. On the page that opens, click: Actions -> Import Tables. During the import, the system will automatically create all tables (both standard and custom) that exist in the respective client's HiBob system.
For the created tables, you must configure the field mapping with the main table SMA HRIS Employee (71732322) in the system. The HRIS Employee is a card where all information specified in the setup is recorded from the external HRIS system. For each created table, define the fields to be transferred from the HiBob system and assign them to the corresponding fields from the SMA HRIS Employee (71732322) table where the values should be stored.
Please note that for HiBob fields with the List type, you must create and specify a Transformation Rule in the corresponding column of the HiBob Tables. This is required because values in such list fields are maintained in separate list directories. These can be viewed from the HRIS Integration Setup page by selecting the HiBob Lists action. List values are imported by executing the Import Lists action on the HiBob Lists page. When creating a transformation rule, you must fill in the following fields:
| Field | Description |
|---|---|
| Code | The code of the transformation rule. |
| Transformation Type | HiBob List Lookup. After selecting this type, you must reopen the page so that the HiBob List field becomes visible on the Transformation Rule card. |
| HiBob List | Select the list for the corresponding HiBob field. |
- During integration, you can apply import filters for employees transferred from the HiBob system to Business Central. To do this, go to the People table at the bottom of the page and set the required filters in the Table Import Filters area. Filtering is configured based on the values of the relevant HiBob fields:
| Field | Description |
|---|---|
| Id | The ID of the HiBob field by which records should be filtered during integration. |
| Comparison | The logical comparison operator. Available values: 1) Equal 2) Not Equal 3) Starts With 4) Ends With |
| Field Filter | The filter value. |
Step 3: Using Position Templates
To enable the creation and approval of transactions within the Employment Contract through integration with HRIS systems, you must create position templates (Path: Position Templates) and configure filters for these position templates to ensure their correct selection when creating positions for a specific employee. To do this, go to the HRIS Filters area (FastTab) on the position template card and specify the parameters to determine how positions are matched when creating transactions in Employment Contracts. Please note that filters can be applied not only to the main table SMA HRIS Employee (71732322) but also to other tables that contain the Person No. or Employee No. fields.
| Field | Description |
|---|---|
| Table ID | The ID of the table containing the field used for filtering. |
| Table Name | The name of the table containing the field used for filtering. |
| Field ID | The ID of the field used for filtering. |
| Field Caption | The caption (name) of the field used for filtering. |
| Comparison | The logical comparison operator. Available values: 1) Equal 2) Not Equal 3) Less Than 4) Greater Than 5) Starts With 6) Ends With |
| Field Filter | The filter value. |
Step 4: HRIS Employees
Information that is transferred to Business Central from HRIS systems according to the field mapping settings for the respective service is stored in the HRIS Employee Card (table SMA HRIS Employee (71732322). The HRIS Employee Card contains the following fields:
General FastTab
| Field | Description |
|---|---|
| Code | |
| First Name | Employee's first name. Populated according to the field mapping settings for the respective service. |
| Last Name | Employee's last name. Populated according to the field mapping settings for the respective service. |
| Middle Name | Employee's middle name. Populated according to the field mapping settings for the respective service. |
| State | Employee's status. For employees with a Termination Date specified, the status is set to Terminated. For employees without a termination date, the status is set to Active. Please note that all processes created during the integration are generated for employees whose Termination Date is blank or is not earlier than the current month. |
| Full Name | Employee's full name. Populated according to the field mapping settings for the respective service. |
| First Name (Second Language) | Employee's first name in the second language. Populated according to the field mapping settings for the respective service. |
| Last Name (Second Language) | Employee's last name in the second language. Populated according to the field mapping settings for the respective service. |
| Middle Name (Second Language) | Employee's middle name in the second language. Populated according to the field mapping settings for the respective service. |
| Full Name (Second Language) | Employee's full name in the second language. Populated according to the field mapping settings for the respective service. |
| Birth Date | Employee's date of birth. Populated according to the field mapping settings for the respective service. |
| VAT Registration No | Employee's Taxpayer Identification Number. Populated according to the field mapping settings for the respective service. |
| Mobile Phone | Employee's mobile phone number. Populated according to the field mapping settings for the respective service. |
| Phone No. | Employee's phone number. Populated according to the field mapping settings for the respective service. |
| Employee's email address. Populated according to the field mapping settings for the respective service. | |
| Private Email | Employee's private email address. Populated according to the field mapping settings for the respective service. |
| Gender | Employee's gender. Populated according to the field mapping settings for the respective service. |
| Marital Status | Employee's marital status. Populated according to the field mapping settings for the respective service and matched by the Name field in the Personal Information Codes registry under the "Marital Status" group. If no such value is found in the registry, the system automatically creates a new record. |
| Marital Status Type | Employee's marital status (selection from a predefined list of options rather than a registry). Populated according to the field mapping settings for the respective service. |
| Nationality | Employee's nationality. Populated according to the field mapping settings for the respective service and matched by the Name field in the Personal Information Codes registry under the "Nationality" group. If no such value is found in the registry, the system automatically creates a new record. |
| Employee ID | Employee ID. Populated according to the field mapping settings for the respective service. |
| Creation Date | Creation date. Populated according to the field mapping settings for the respective service. |
| Native Language | Individual's native language. Populated according to the field mapping settings for the respective service and matched by the Code field in the Languages registry. If no such value is found in the Languages registry, the system automatically creates a new record. |
| Citizenship Country/Region | Country/region code of the individual's citizenship. Populated according to the field mapping settings for the respective service and matched by the Code field in the Countries/Regions registry. If no such value is found in the Countries/Regions registry, the system automatically creates a new record. |
Work FastTab
| Field | Description |
|---|---|
| Work Start Date | Employment start date. Populated according to the field mapping settings for the respective service. |
| Work Effective Date | The date when employment conditions (position, department, FTE rate) changed. Populated according to the field mapping settings for the respective service. |
| Department | Employee's department. Populated according to the field mapping settings for the respective service. |
| Job Title | Employee's position. Populated according to the field mapping settings for the respective service. |
| Contract Type | Value from the "Employment Contracts" registry. The logic for assigning values to this field must be defined individually for each client based on their business requirements. |
| FTE % | Full-Time Equivalent (FTE) rate of the employee. Populated according to the field mapping settings for the respective service. If this field equals 0, the FTE value will be automatically set to "1" in all related processes. |
| Salary Effective Date | The date when the base salary changed. Populated according to the field mapping settings for the respective service. |
| Base Salary | Employee's salary amount. Populated according to the field mapping settings for the respective service. |
| Base Salary Currency Code | Currency of the employee's salary. Populated according to the field mapping settings for the respective service. |
| Termination Date | Employee's termination date. Populated according to the field mapping settings for the respective service. |
| Termination Reason | Employee's termination reason. Populated according to the field mapping settings for the respective service and matched by the Description field in the Grounds for Termination registry. If no such value is found in the registry, the system automatically creates a new record. |
| Person No | Populated automatically with the unique code of the Individual (Personal Card) created for this specific HRIS Employee. |
| Manager ID | Employee's manager code. Populated according to the field mapping settings for the respective service. When creating or updating an employee's position, if the Manager Code field is filled on their HRIS Employee card, the system will locate the employee corresponding to this manager code and assign their current position to the "Parent Position No." field of the current employee. |
| Use Trial Period | Specifies the presence of a probation period. Populated according to the field mapping settings for the respective service. |
| Trial Period Formula | Specifies the probation period formula (e.g., "3M"). Populated according to the field mapping settings for the respective service using standard date formula format. |
| Rehiring | Specifies whether the employee's hiring is a rehire (value "Yes") or an initial hire (value "No"). Populated according to the field mapping settings for the respective service. This field can only be populated if an Individual record has already been created for this HRIS Employee. |
Bank FastTab
| Field | Description |
|---|---|
| Bank Name | Employee's bank name. Populated according to the field mapping settings for the respective service. |
| IBAN | Employee's bank account IBAN details. Populated according to the field mapping settings for the respective service. |
| SWIFT | Employee's bank account SWIFT details. Populated according to the field mapping settings for the respective service. |
Address FastTab
Note: The Address FastTab is populated with the employee's registered address information. The address with the Registered type will be created by default using the information from this FastTab.
| Field | Description |
|---|---|
| Address Effective Date | The date from which the employee's registered address is effective. Populated according to the field mapping settings for the respective service. |
| Address | Employee's registered address line. Populated according to the field mapping settings for the respective service. This field can be left blank; in this case, the field of the same name on the created address card will be compiled automatically from the street, building number, building unit, and apartment fields (following the same logic as manual address creation in the system). |
| City | Employee's registered city. Populated according to the field mapping settings for the respective service. |
| Country Code | Employee's registered country. Populated according to the field mapping settings for the respective service. |
| Post Code | Post code of the employee's registered address. Populated according to the field mapping settings for the respective service. |
| County | District of the employee's registered address. Populated according to the field mapping settings for the respective service. |
| Admin Type | Administrative category (City/Village) of the employee's registered address. Populated according to the field mapping settings for the respective service. |
| Street | Street of the employee's registered address. Populated according to the field mapping settings for the respective service. |
| House | Building number of the employee's registered address. Populated according to the field mapping settings for the respective service. |
| Building | Building unit/block of the employee's registered address. Populated according to the field mapping settings for the respective service. |
| Apartment | Apartment number of the employee's registered address. Populated according to the field mapping settings for the respective service. |
Fact Address FastTab
Note: The Actual Address FastTab is populated with the employee's residential address information. The address with the Permanent type will be created by default using the information from this FastTab.
| Field | Description |
|---|---|
| Fact Address Effective Date | The date from which the employee's residential address is effective. Populated according to the field mapping settings for the respective service. |
| Fact Address | Employee's residential address line. Populated according to the field mapping settings for the respective service. This field can be left blank; in this case, the field of the same name on the created address card will be compiled automatically from the street, building number, building unit, and apartment fields (following the same logic as manual address creation in the system). |
| Fact Address City | Employee's residential city. Populated according to the field mapping settings for the respective service. |
| Fact Address Country Code | Employee's residential country. Populated according to the field mapping settings for the respective service. |
| Fact Address Post Code | Post code of the employee's residential address. Populated according to the field mapping settings for the respective service. |
| Fact Address County | District of the employee's residential address. Populated according to the field mapping settings for the respective service. |
| Fact Address Admin Type | Administrative category (City/Village) of the employee's residential address. Populated according to the field mapping settings for the respective service. |
| Fact Address Street | Street of the employee's residential address. Populated according to the field mapping settings for the respective service. |
| Fact Address Building | Building unit/block of the employee's residential address. Populated according to the field mapping settings for the respective service. |
| Fact Address Apartment | Apartment number of the employee's residential address. Populated according to the field mapping settings for the respective service. |
Document FastTab
| Field | Description |
|---|---|
| Document Type | Value from the "Identity Document Types" registry. It can be populated according to the field mapping settings for the respective service using data transformation rules. |
| Person Document Type | The document type for the Individual record (selection from a predefined list of options rather than the "Identity Document Types" registry). Populated according to the field mapping settings for the respective service. |
| Document Valid Date | The date from which the employee's document is valid. Populated according to the field mapping settings for the respective service. |
| Document Series | Document series of the employee. Populated according to the field mapping settings for the respective service. |
| Document No. | Document number of the employee. Populated according to the field mapping settings for the respective service. |
| Document Issue Authority | The authority that issued the employee's document. Populated according to the field mapping settings for the respective service. |
| Document Issue Date | The issue date of the employee's document. Populated according to the field mapping settings for the respective service. |
| Document Valid Date | The date until which the employee's document is valid (expiration date). Populated according to the field mapping settings for the respective service. |
Disability FastTab
| Field | Description |
|---|---|
| Disability Start Date | The date when the employee's disability status began. Populated according to the field mapping settings for the respective service. |
| Disability Group | Employee's disability group. Populated according to the field mapping settings for the respective service. |
Employee Relatives FastTab
| Field | Description |
|---|---|
| Relative ID | Relative's code. Populated according to the field mapping settings for the respective service. |
| Relationship Code | Code of relationship with the relative. Populated according to the field mapping settings for the respective service. Please note that this field is used to search for the required value for the "Relative Code" field when creating a record in the "Employee Relatives" table. For the value to be determined correctly, the records in the "Relatives" registry must have corresponding values specified in the "Type" field. |
| Gender | Relative's gender. Populated according to the field mapping settings for the respective service. |
| HRIS Relative ID | Relative's code in the external system. Populated according to the field mapping settings for the respective service. |
| First Name | Employee's relative's first name. Populated according to the field mapping settings for the respective service. |
| Last Name | Employee's relative's last name. Populated according to the field mapping settings for the respective service. |
| Middle Name | Employee's relative's middle name. Populated according to the field mapping settings for the respective service. |
| Birth Date | Employee's relative's date of birth. Populated according to the field mapping settings for the respective service. |
| Phone No. | Employee's relative's phone number. Populated according to the field mapping settings for the respective service. |
| Relationship Start Date | The date when the relationship with the relative began. Populated according to the field mapping settings for the respective service. |
| Relationship End Date | The date when the relationship with the relative ended. Populated according to the field mapping settings for the respective service. |
| First Name (Second Language) | Employee's relative's first name in the second language. Populated according to the field mapping settings for the respective service. |
| Last Name (Second Language) | Employee's relative's last name in the second language. Populated according to the field mapping settings for the respective service. |
Note: When creating records in the "Employee Relatives" table, only the values from the following fields on the HRIS Employee page are automatically transferred to the corresponding fields on the "Employee Relatives" page:
- Relationship Code
- First Name
- Last Name
- Middle Name
If necessary, the transfer of values from all other fields must be configured via the "Template Tables" functionality (described in Step 6). The HRIS Employees list page contains the following actions:
| Action | Description |
|---|---|
| Import Employee IDs | Imports all record IDs from the HiBob system. During the ID import, only the Termination Date is populated on the HRIS Employee cards, and the status for all of them is set to Terminated by default. After executing this action, you must run either the "Update Fields from HRIS" or "Update All Active Employees" action. |
| Update Fields from HRIS | Updates information on the HRIS Employee card with data from the HRIS system only for the selected employee. At the moment of execution, the status changes to Active for employees with a blank termination date. The data update is triggered only for employees with the Active status, as well as those with the Terminated status and a termination date in the current month. |
| Update All Active Employees | Updates information on the HRIS Employee card with data from the HRIS system for all employees. At the moment of execution, the status changes to Active for employees with a blank termination date. The data update is triggered only for employees with the Active status, as well as those with the Terminated status and a termination date in the current month. |
Step 5: HRIS Integration Processes
Processing information on the HRIS Employee card and subsequently creating related processes in the Business Central system is managed by creating and executing tasks on the HRIS Integration Processes page. The HRIS Integration Processes page contains the following fields:
| Field | Description |
|---|---|
| HRIS ID | The ID from the HRIS Employee card for which the task was created. |
| Employee Full Name | The full name from the HRIS Employee card for which the task was created. |
| Creation Date Time | The date and time when the task was created. |
| Task Type | The type of the task. |
| Status | The execution status of the task. |
| Completed Date Time | The date and time when the task execution was completed. |
| Error Text | If an error occurs during task execution, its description is recorded in this field. |
| Error Call Stack | Technical information and call stack details regarding the occurred error. |
| Indentation | For the "Create Individual" task, this field equals 0. For all other tasks, it equals 1. |
The page contains the following actions:
| Action | Description |
|---|---|
| Show Related Record | Opens the latest system record created during the execution of the task. |
| Process Records Manually | Triggers the manual execution of the selected task. |
| Complete Manually | Forcefully completes the task, changing its status to Completed without creating any corresponding records in the system. |
| Update All Employees | Updates information on the HRIS Employee card with data from the HRIS system for all active employees. |
| Create Task | Triggers the creation of tasks for all employees. |
| Delete Selected | Deletes the selected records. Please note that records can only be deleted if no Individual record has been created in the system for the corresponding HRIS Employee. |
When executing the Create Task action, the following Task Types are generated in the HRIS Integration Processes. Please note that tasks are created only for HRIS Employees with the Active status, or those with the Terminated status if their termination date falls within the current month or later.
| Task Type | Conditions for Successful Task Creation |
|---|---|
| Create Person | No Individual record has been created yet for the HRIS Employee. |
| Update Person | 1) The "Update Individual" process is enabled on the "HRIS Integration Setup" page. 2) Information in one of the fields within the "General" FastTab has been updated on the HRIS Employee card, or the "Manager Code" field within the "Employment" FastTab has been updated. 3) An Individual record already exists in the system for this HRIS Employee. |
| Address Information | 1) The "Address" process is enabled on the "HRIS Integration Setup" page. 2) Information in one of the fields within the "Address" FastTab has been updated on the HRIS Employee card. 3) An Individual record already exists in the system for this HRIS Employee. |
| Actual Address Information | 1) The "Address" process is enabled on the "HRIS Integration Setup" page. 2) Information in one of the fields within the "Actual Address" FastTab has been updated on the HRIS Employee card. 3) An Individual record already exists in the system for this HRIS Employee. |
| Bank Information | 1) The "Bank Information" process is enabled on the "HRIS Integration Setup" page. 2) Information in one of the fields within the "Bank" FastTab has been updated on the HRIS Employee card. 3) An Employee record has been created in the system for this HRIS Employee. |
| Identity Document | 1) The "Identity Document" process is enabled on the "HRIS Integration Setup" page. 2) Information in one of the fields within the "Document" FastTab has been updated on the HRIS Employee card. 3) An Individual record already exists in the system for this HRIS Employee. |
| Disability Information | 1) The "Disability Information" process is enabled on the "HRIS Integration Setup" page. 2) Information in one of the fields within the "Disability" FastTab has been updated on the HRIS Employee card. 3) An Individual record already exists in the system for this HRIS Employee. |
| Relatives Information | 1) The "Relatives Information" process is enabled on the "HRIS Integration Setup" page. 2) Information in one of the fields within the "Employee Relatives" FastTab has been updated on the HRIS Employee card for one or more records. 3) An Individual record already exists in the system for this HRIS Employee. |
| Hire | 1) The "Hire" process is enabled on the "HRIS Integration Setup" page. 2) The required information is populated within the "Employment" FastTab on the HRIS Employee card. 3) An Individual record has been created in the system for this HRIS Employee. 4) No Employee record has been created yet for this HRIS Employee. |
| Transfer | 1) The "Transfer" process is enabled on the "HRIS Integration Setup" page. 2) Information has been updated in one of the following fields within the "Employment" FastTab on the HRIS Employee card: Department, Position, FTE %, Base Salary, or Base Salary Currency Code. 3) An Employee record already exists in the system for this HRIS Employee. |
| Termination | 1) The "Termination" process is enabled on the "HRIS Integration Setup" page. 2) Information is populated in the "Termination Date" field within the "Employment" FastTab on the HRIS Employee card. 3) An active (not terminated) Employee record exists in the system for this HRIS Employee. |
| Rehire | 1) The "Hire" process is enabled on the "HRIS Integration Setup" page. 2) The "Rehire" field on the HRIS Employee card is set to "Yes". |
After the tasks are created, the Process Manually action must be executed. During task execution, the following processes are generated in the system:
| Task Type | Result of Successful Task Execution |
|---|---|
| Create Individual | Creates an Individual card and populates all the information contained within the "General" FastTab of the HRIS Employee card. During the initial creation of the Individual, if the information within the "Address" and "Document" FastTabs is populated on the HRIS Employee card, corresponding records will also be created in the Individual's addresses and documents tables as part of this task. |
| Update Individual | Updates information in the corresponding fields on the Individual card, and on the Employee card as well (if the employee record has already been created). When the Manager Code is updated, the Parent Position No. on the employee's current position is updated accordingly. Please note that if an employee's name changes, the name must be updated manually via the standard "Change Name" action on the Individual card. After doing so, the task on the "HRIS Integration Processes" page must be forcefully closed using the "Complete Manually" action. |
| Address Information | If there is no record for the Individual in the "Alternative Address List" table with the "Registered" address type and the same date specified in the "Address Effective Date" field on the HRIS Employee card, a new address record with the "Registered" type is created. If a record with this specific date already exists, the information in the existing record is updated. |
| Actual Address | Information If there is no record for the Individual in the "Alternative Address List" table with the "Permanent" address type and the same date specified in the "Actual Address Effective Date" field on the HRIS Employee card, a new address record with the "Permanent" type is created. If a record with this specific date already exists, the information in the existing record is updated. |
| Bank Information | If there is no record for the Employee in the "Employee Bank Account List" table with the same IBAN specified in the "IBAN" field on the HRIS Employee card, a new bank account record is created. If a record with this IBAN already exists, the information in the existing record is updated. |
| Identity Document | If there is no record for the Individual in the "Identity Documents" table with the same date specified in the "Document Valid From" field and the same type specified in the "Document Type" field on the HRIS Employee card, a new document record is created. If a record with these exact values already exists, the information in the existing record is updated. |
| Disability Information | If a record with the "Disability" type and the same date specified in the "Disability Start Date" field on the HRIS Employee card already exists for the Individual in the "Medical Information" table, the information is updated in the existing record. If no record matches these filters, but there is another record with the "Disability" type and a start date earlier than the "Disability Start Date" specified on the HRIS Employee card, the system checks the Ending Date of that record. If the Ending Date is blank or later than the "Disability Start Date" on the HRIS Employee card, the Ending Date in the previous record is updated and set to -1D from the "Disability Start Date" on the HRIS Employee card. Then, a new record is created with the "Disability Start Date" specified on the HRIS Employee card. If the Ending Date in the previous record is earlier than the "Disability Start Date" specified on the HRIS Employee card, a new record is created in the Medical Information table. Additionally, if an Employee record already exists in the system for this HRIS employee, a transfer is triggered to move this worker to a position flagged with a disability indicator. If there is no record at all with the "Disability" type for the Individual in the "Medical Information" registry, a new record is created. Additionally, if an Employee record already exists in the system for this HRIS employee, a transfer is triggered to move this worker to a position flagged with a disability indicator. |
| Relatives Information | If a record for this relative already exists for the Individual in the "Employee Relatives" table (the search is performed using the unique system identifier in the SystemId field), the information is updated in the existing record. If no record for this relative is found, a new record is created. |
| Hire | Creates an employment contract with the start date specified in the "Employment Date" field on the HRIS Employee card. Generates an Actual Position based on template positions and defined filters. If the required department or position does not exist in the system, new ones are created based on templates and settings specified on the "HRIS Integration Setup" page. Creates an entry in the employment contract with the "Hire" type, defines the Employment Contract Conditions, approves the Hire process, and finally creates and populates the Employee card. |
| Transfer | Creates an entry in the employment contract with the "Transfer" type. The transfer date is determined by comparing the dates in the "Job Terms Change Date" and "Salary Change Date" fields on the HRIS Employee card, selecting the later of the two dates. Generates an Actual Position based on template positions and defined filters. If the required department or position does not exist in the system, new ones are created based on templates and settings specified on the "HRIS Integration Setup" page. Defines the Employment Contract Conditions, approves the Transfer process, and closes the employee's previous position. |
| Termination | Creates an entry in the employment contract with the "Termination" type, using the termination date specified in the "Termination Date" field on the HRIS Employee card. If the termination reason specified in the "Grounds for Termination Code" field does not exist in the system, a new record is automatically created in the Grounds for Termination registry. Approves the Termination process and closes the position. |
| Rehire | Detaches the previously terminated employee from the current HRIS Employee record. Separate tasks are generated and processed to Update the Individual (if the personal card information was changed), as well as other tasks if changes occurred (e.g., addresses, documents, disability). Finally, a "Hire" task is created and processed to generate and approve a new Employment Contract for the employee. |
Note: When creating an Actual Position for the "Hire" and "Transfer" tasks, the following priority rules apply for determining position information:
- Highest Priority (Priority 1): Information specified on the HRIS Employee card. For example, if a position is specified both on the HRIS Employee card and in the Template Position, the value from the HRIS Employee card will be applied to the created actual position. If the position is blank on the HRIS Employee card, the value from the Template Position will be used instead.
- Second Priority (Priority 2): Information specified on the Template Position card. For example, if a calculation group is specified both on the Template Position card and on the Department or Position card, the value from the Template Position card will be applied to the created actual position. If the calculation group is blank on the Template Position card, the value from the Department or Position card will be used instead.
Step 6: Template Tables
Note: By default, when tasks are executed, information from the HRIS Employee card is populated into the fields of the same name on the corresponding pages in the system. At the same time, it is possible to override the field population logic on the required pages. You can also configure the population of fields that are missing from the HRIS Employee card or fields for which automatic value transfer is not hardcoded in the system (for example, most fields within the "Employee Relatives" FastTab). This can be achieved using the following functionality.
On the HRIS Integration Setup page, navigate to the Actions menu and select Template Tables. On the page that opens, you must create a template for the table to which the alternative or additional field population logic should be applied:
| Field | Description |
|---|---|
| Code | Template code. |
| Description | Template description. |
| Table ID | ID of the table for which the template is created. |
| Table Caption | Name of the table for which the template is created (populated automatically). |
To configure the template, click the Edit action, and then populate the Lines section on the template card that opens:
| Field | Description |
|---|---|
| Field No. | The field from the target table to which the template applies, and for which the population logic needs to be defined. |
| Field Caption | |
| Validate Field | Specifies whether the value should be validated when it is inserted into the field. |
| Const Value | If the table field should be populated with a fixed value, specify that value in this field. |
| Map-from Table ID | Specify the table from which the value should be transferred, for example, 71732329 (HRIS Employee Relative), 71732322 (HRIS Employee), or another system table. |
| Map-from Table Name | The name of the table specified in the "Mapped Table ID" field. |
| Map-from Field ID | The field of the table defined in the "Mapped Table ID" field from which the value should be transferred. |
| Map-from Field Caption | The name of the field specified in the "Mapped Field ID" field. |
| Transformation Rule | If necessary, specify a data transformation rule to convert the value from the source field into the target result. |
Step 7: Job Queue Entries for Integration
For automatic, regular import of records from the HRIS system and the subsequent creation of corresponding tasks in Business Central, the following Job Queue Entries are available for use:
| Object ID | Object Type to Run | Description |
|---|---|---|
| 71732323 | Codeunit | Imports record IDs and updates information in the HRIS Employees table. |
| 71732322 | Codeunit | Creates tasks in the HRIS Integration Processes table. |
| 71732321 | Codeunit | Triggers the execution of created tasks in the HRIS Integration Processes table. |
The frequency of running these Job Queue Entries must be defined individually for each client project.
Step 8: Updating Records via Webhook
To avoid updating information for absolutely all employees every time, you can configure updates via a Webhook so that only employees with changes made in the HRIS system are updated.
To do this, enable the Webhook in the respective HRIS system and apply the following settings in Business Central for the Job Queue Entries running codeunit 71732323:
- Create a Job Queue Entry for codeunit 71732323 and enter "Import New Employees" in the Parameter String field. This is required for the system to import new employees upon their creation.
- Create a Job Queue Entry for codeunit 71732323 and enter "Update Employees From Queue" in the Parameter String field. This ensures that the system updates information only for employees whose data was modified in the HRIS system.
For both of these Job Queue Entries, a daily run frequency can be set.
- To double-check and ensure that information has been synchronized for all employees, you can create an additional Job Queue Entry for codeunit 71732323, set its Parameter String field to "Update All Employees", and configure it to run, for example, only on weekends. During execution, the system will trigger a full information update for all workers.
When changes are made in the HRIS system, the IDs of the employees with recorded modifications are written to the HRIS Employee Update Queue table. When the Job Queue Entry for codeunit 71732323 with the "Update Employees From Queue" parameter string is executed, only the employees whose IDs exist in this table will be updated. Once the job queue execution is complete, the processed records are deleted from the HRIS Employee Update Queue table.
Step 9: Integration of Absences from the HiBob System
As part of the integration with the HiBob system, it is possible to transfer absence information. The integration is implemented as follows: the absences received from the HiBob system are posted through the Timesheet Journal, subsequently creating a record only in the employee's Timesheet.
To import the information, a series of configurations must be performed:
- On the HRIS Integration Setup page, within the Absences FastTab, populate the following fields:
| Field | Description |
|---|---|
| Timesheet Journal Template | The timesheet journal template through which absences imported during the integration will be posted. |
| Timesheet Journal Batch | The timesheet journal batch through which absences imported during the integration will be posted. |
| Absence Posting Start Date | Specifies the earliest start date for absences that should be posted in the system. For example, if this field is set to 01.01.2025, any absences imported during the integration with a start date earlier than 01.01.2025 will not be posted in the system. |
- On the Causes of Absence page, for the absence codes that should be processed by the integration, you must specify the corresponding HiBob absence type in the HRIS Policy Type field. The available types can be viewed via the HRIS Integration Setup page -> HiBob Lists, selecting the list with ID = policyType.
- On the HiBob Tables page, configure the field mapping for the Absence type, specifying which fields from the HiBob system should transfer data into the system table fields of the HRIS Absence List. For the information to import correctly, mapping must be established for the following fields of the SMA HRIS Time Off (71732328) table:
- HRIS Request ID (10)
- HRIS Employee ID (20)
- Time Activity Code (30)
- Starting Date (40)
- Ending Date (50)
To correctly determine the cause of absence in the Time Activity Code (30) field, which corresponds to the absence type in HiBob, you must use a data transformation rule with the Field Lookup type, specifying the following Lookup Parameters:
- Table ID = 5206
- Source Field No. = 71732320
- Target Field No. = 1
- Lookup Rule = Target
Additionally, if the integration should not process all absences managed in the HiBob system, but only specific ones, you can set a filter for the policyType you want to import on the HiBob Tables page (for the Absence type) within the Table Import Filters FastTab.
To configure the periodic import and posting of absences, you can create the following Job Queue Entries:
| Object ID | Object Type to Run | Description |
|---|---|---|
| 71732323 | Codeunit | You must enter "Import TimeOff Requests" in the Parameter String field. This job imports and updates information in the HRIS Time Offs List. Data is imported for the current month, with a start date no later than the Work Date. |
| 71732331 | Codeunit | Posts the imported absences from the HRIS Time Offs List page through the Timesheet Journal. Posting is executed only for records whose status is not equal to Error, with a start date not earlier than specified in the Absence Posting Start Date field on the HRIS Integration Setup page, and for which no Timesheet Detail records have been created yet. |
The frequency of running these Job Queue Entries must be defined individually for each client project.
Absence information imported from the HiBob system according to the mapping is recorded in the HRIS Time Offs List table:
| Field | Description |
|---|---|
| Time Activity Code | The time activity code of the imported absence. |
| Starting Date | The start date of the absence. |
| Ending Date | The end date of the absence. |
| Status | Upon import, the record status is set to Created. If an error occurs during absence posting, the record status changes to Error. Upon successful posting, the status is set to Posted. |
| Error Text | For records with errors, the error message text during posting is displayed here. |
| Timesheet Qty. Records | Specifies the number of records created in the Timesheet Detail table for the imported absence. |
| Timesheet Difference | Calculated as the difference between the duration of the absence (the difference between the Starting Date and Ending Date) and the number of created timesheet entries. |
| HRIS Employee Full Name | The full name of the HRIS employee. |
The HRIS Time Offs List page contains the following actions:
| Action | Description |
|---|---|
| Timesheet Difference | Running the "Set Filter by Timesheet Difference" action filters the list to display only records where the Timesheet Difference field is not equal to 0. You can clear this filter by using the "Clear Filter by Timesheet Difference" action. |
| Post Time Off | Triggers the posting of the selected records through the Timesheet Journal. Posting is executed only for records whose status is not equal to Error, with a start date not earlier than specified in the Absence Posting Start Date field on the HRIS Integration Setup page, and for which no Timesheet Detail records have been created yet. |
| Delete Selected | Deletes the selected records from the list. |
| Update Error Records | Resets the status for records currently in the Error status. After resolving the underlying errors and running this action, the status will be reset to Created, allowing you to trigger the posting process again. |
Note: Error records that have not been posted remain in the Timesheet Journal, where they can be viewed and reviewed.
Additionally, absences can be imported manually for a specific employee. To do this, select the "Import Time Off" action on the HRIS Employee card. Please note that when running this specific import, the system will pull absences with a start date no later than the last day of the current month. You can view the imported absences for a worker directly in the Absences FactBox/section on the HRIS Employee card, or via the related page by navigating to Related -> HRIS Absence.