"Integration of Business Central and HCM & LMS" Scenario
Extension — SMART Payroll and SMART HCM & LMS Connector (add-on to SMART Payroll)
The system provides the ability to configure integration between Business Central and SMART HCM & LMS (Human Capital Management & Learning Management System). The integration ensures automatic synchronization of HR and payroll data between the two systems.
Key capabilities:
- synchronization of organizational structure (organizational units, job titles, positions, employee categories)
- synchronization of person data and labor contracts with lines
- synchronization of causes of absence and time activity groups
- transfer of payroll documents and timesheet statuses
- receiving absence requests from HCM & LMS to Business Central
- support for cross-company persons
Synchronization operates on an event-based model: when data changes in Business Central, an integration queue entry is automatically created, which is then processed by the job queue and sent to HCM & LMS.
Step 1: Integration Setup
Path: HCM & LMS Setup
The following sections of fields are available on the setup page:
Section "General"
| Field | Description | Dependencies and details |
|---|---|---|
| HCM Company Id | Identifier (GUID) of the company in the HCM & LMS system. Used as AccountId in all integration requests. | Populated automatically when the setup page is first opened (taken from Company.Id). Required for activation. |
| HCM Company Code | Company code in the HCM & LMS system. | Required for activation. Used when creating a company record in HCM. When the value is cleared — the integration queue is purged. |
| Active | Enables or disables data exchange between systems. | On first activation, the system automatically generates initial integration records for all entities (details in Step 2). The following fields must be filled for activation: HCM Company Id, HCM Company Code, HCM User ID. |
| Integration Token | Authorization token for the HCM & LMS API. | Stored in a secured (masked) field. Assigned individually. |
| Integration URL | Base URL of the HCM & LMS API. | Do not include /create, /update, /delete paths — they are appended automatically. Assigned individually. |
| Restore Integration Func. | Automatic recovery of the integration job queue upon unexpected stoppage. | If enabled, the system automatically restarts the job queue when a user logs in, if the queue has stopped due to an error. |
Section "Administration"
| Field | Description | Dependencies and details |
|---|---|---|
| Default Taxpayer Document Type | Default identity document type. Used for transferring passport data of persons. | Depends on the "Person Document Types" reference (SMA Person Document Type). If filled — when synchronizing a person, the series, number, issue date, and issuing authority of the document of the specified type are transferred. |
| HCM User ID | Business Central user code whose changes are NOT synchronized to HCM. | Depends on the Users table. Required for activation. Used to prevent synchronization loops — changes made by this user (e.g., from the HCM side) do not create integration records. |
| API TimeZone | Windows time zone for formatting dates and times in requests. | For example: "FLE Standard Time" for Kyiv. |
| Enable Payroll Documents | Whether to synchronize payroll documents to HCM & LMS. | Enabled by default. If disabled — payroll documents are not transferred. |
| Enable Between Payroll Docs | Whether to include inter-period payroll documents in synchronization. | Enabled by default. Works together with Enable Payroll Documents. |
| Enable Employee Timesheet | Whether to synchronize timesheet statuses to HCM & LMS. | Enabled by default. Only timesheets with the "Released" status are transferred. |
Section "Filters"
| Field | Description | Dependencies and details |
|---|---|---|
| Labor Contract Filter | Filter for the "Labor Contract" table. | Restricts which labor contracts are synchronized to HCM. Edited via AssistEdit — opens the filter builder. If empty — all contracts are synchronized. |
| Position Filter | Filter for the "Position" table. | Restricts which positions are synchronized to HCM. Edited via AssistEdit. By default, positions with "Planned" status and budget positions are not synchronized. |
Section "Portal"
| Field | Description | Dependencies and details |
|---|---|---|
| Paid Leave Group Code | Time activity group code for paid leaves. | Depends on the "Time Activity Groups" reference (SMA Time Activity Group). Used to calculate timesheet days on the HCM portal. |
| Unpaid Leave Group Code | Time activity group code for unpaid leaves. | Depends on the "Time Activity Groups" reference. |
| Sick Leave Group Code | Time activity group code for sick leaves. | Depends on the "Time Activity Groups" reference. |
| Other Leave Group Code | Time activity group code for other types of absences. | Depends on the "Time Activity Groups" reference. |
Step 2: Integration Activation
When the Active field is set to Yes, the system automatically creates initial integration records for transferring all current data to HCM & LMS. Records are created in the following order:
- Organization information — one record is created for the current company
- Job Titles (Job Titles reference) — all job titles
- Employee Categories (Employee Categories) — all categories
- Causes of Absence (Causes of Absence) — only those with the "Export to HCM" flag enabled
- Organizational Units (Organizational Units) — all units
- Time Activity Groups (Time Activity Groups) — only those with the "Export to HCM" flag enabled
- Persons (Persons) — only those where the "HCM Primary Company" field is empty
- Positions (Positions) — taking into account the Position Filter, excluding positions with "Planned" status and budget positions
- Labor Contracts (Labor Contracts) — taking into account the Labor Contract Filter, only those with an employee number filled in. For each contract, the following are also created:
- contract lines (approved)
- payroll documents (if Enable Payroll Documents is enabled, for the last year)
- timesheet statuses (if Enable Employee Timesheet is enabled, only with "Released" status)
Note: the order of creation matters — references (job titles, categories, causes of absence, organizational units) are created first, so that when processing dependent entities (positions, contracts), the reference data is already present in HCM & LMS.
After activation, you need to start the Job Queue for the actual data transfer. The job queue is created automatically when the extension is installed with the "On Hold" status — it needs to be activated manually. Recommended interval: 1–5 minutes.
Step 3: Pages Between Which Systems Are Integrated
Below is the field mapping for each synchronized entity. The arrow indicates the direction of data transfer:
- → Business Central to HCM & LMS
- ← HCM & LMS to Business Central
- ↔ bidirectional exchange
For each entity, the field changes in Business Central that trigger synchronization and the supported operations (create, modify, delete) are indicated.
3.1. Organization Information (Business Central) → Organization Name (HCM & LMS)
Operations: modify
Synchronization is triggered when any of the following fields change: Name, Address, Phone, Website, Email.
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| — | id | Taken from HCM Company Id in the setup |
| — | Code | Taken from HCM Company Code in the setup |
| Name (Name) | Organization Name (Name) | Company name |
| Phone (Phone No.) | Phone (Telephone1) | Company phone |
| Address (Address) | Address (Address) | Company address |
| Website (Home Page) | Website (WebSiteUrl) | Company home page |
| Principal Activity (SMA Principal Activity) | Description (Description) | Transferred only if filled |
| Email (E-Mail) | Email (Emailaddress1) | Company email |
3.2. Job Titles (Business Central) → Job Titles (HCM & LMS)
Operations: create, modify, delete
Synchronization is triggered on: creation, modification of Name or Status fields, deletion, code renaming.
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Code (Code) | Code (Code) | Job title code |
| Name (Name) | Name (Name) | Job title name |
| Status (Status) | State (State) | If Status = "Closed" → "Inactive", otherwise → "Active" |
3.3. Employee Categories (Business Central) → Position Level (HCM & LMS)
Operations: create, modify, delete
Synchronization is triggered on: creation, modification of the Description field, deletion, code renaming.
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Code (Code) | Code (Code) | Category code |
| Description (Description) | Name (Name) | Position level name |
3.4. Organizational Units (Business Central) → Subdivision (HCM & LMS)
Operations: create, modify, delete
Synchronization is triggered on: creation, modification of the Name, Full Name, Status, Manager, Parent Unit, or Starting Date fields, deletion.
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Code (Code) | Code (Code) | Organizational unit code |
| Name (Name) | Name (Name) | Short name of the unit |
| Full Name (Full Name) | Description (Description) | Full name of the unit |
| Manager (Manager No.) | Head of Subdivision (HeadOfSubdivisionId) | Depends on: Employee → Person. The SystemId of the manager's person is transferred. For cross-company persons, the SystemId from the primary company is used. |
| Manager Position | Head of Subdivision Position (HeadOfSubdivisionPositionId) | Depends on: Employee → Position (SMA Position No.). The SystemId of the manager's position is transferred. |
| Parent Unit (Parent Code) | Main Subdivision (MainSubdivisionId) | Depends on: parent organizational unit. The SystemId of the parent unit is transferred. |
| Starting Date (Starting Date) | Created On (CreatedOn) | Unit creation date |
| Status (Status) | State (State) | If Status = "Closed" → "Inactive", otherwise → "Active" |
3.5. Positions (Business Central) → Positions (HCM & LMS)
Operations: create, modify, delete
Synchronization is triggered on: creation, modification of controlled fields, deletion. Positions excluded by the Position Filter and those with "Planned" status or budget positions are not synchronized.
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| No. (No.) | Code (Code) | Position number |
| Job Title (Job Title Code) | Name (Name) | Depends on: Job Titles reference. The job title name (Job Title.Name) is transferred. |
| Employee on Position | Employee (employeeId) | Determined automatically: searches for an active employee assigned to this position through a labor contract. The person's SystemId is transferred. If no employee — null. |
| Assignment Date | Assignment Date (positionAssignmentDate) | Determined automatically: the starting date of the last approved labor contract line for this position. |
| Is Head | Head of Subdivision (IsHeadOfSubdivision) | Determined automatically: true if this employee is a manager of any organizational unit. |
| Starting Date (Starting Date) | Position Opening Date (PositionOpeningDate) | Position opening date. Empty if not filled. |
| Ending Date (Ending Date) | Position Closing Date (PositionClosingDate) | Position closing date. Empty if not filled. |
| Rate (Rate) | Full Time Equivalency (FullTimeEquivalency) | Position rate (e.g., 1.0 or 0.5) |
| Approval Date (Approval Date) | Approval Date (ApprovalDate) | Position approval date. Empty if not filled. |
| Status (Status) | Status (Status) | Text value of the status |
| Status (Status) | State (State) | If Status = "Closed" → "Inactive", otherwise → "Active" |
| Job Title (Job Title Code) | Job Title (jobId) | Depends on: Job Titles reference. The SystemId of the job title is transferred. |
| Org. Unit (Org. Unit Code) | Subdivision (SubdivisionId) | Depends on: Organizational Units reference. The SystemId of the unit is transferred. |
| Parent Position (Parent Position No.) | Manager Position (ManagerPositionId) | Depends on: parent position. The SystemId of the parent position is transferred. |
| Org. Unit + Job Title | Job Profile (jobProfileId) | Composite field: formed as a combination of the unit's SystemId and job title's SystemId separated by "/". |
3.6. Persons (Business Central) → Employees (HCM & LMS)
Operations: create, modify, delete
Synchronization is triggered on: creation, modification of fields (first name, last name, middle name, gender, birth date, email, phones, VAT Registration No., marital status), deletion. Also triggered when a person document of the type specified in Default Taxpayer Document Type is changed.
Cross-Company Interaction: Why It Is Needed
In Business Central, each company has its own separate Person card. The same individual (e.g., John Smith) can have a Person record in Company A and a separate record in Company B. This is standard BC behavior — each company's data is isolated.
In HCM & LMS, on the other hand, there is one single employee record per physical person — regardless of how many companies they work in.
Therefore, the connector must determine which BC company is the "source of truth" for synchronizing each person to HCM & LMS, and ensure that all companies reference the same record in HCM & LMS.
HCM Primary Company Field (SMAHCM Primary Company Name)
This is the key field on the Person card that determines the role of this record in cross-company synchronization:
- Empty value — this record is the primary (source) record. Person data is sent to HCM & LMS from this record.
- Filled value (name of another company) — this record is secondary (a copy). It is not synchronized independently to HCM & LMS. The value indicates which company holds the primary record for this person.
How the field is auto-filled:
When a Person card is created or modified, the system automatically searches for matches across all companies with active HCM & LMS integration:
- Lookup by VAT Registration No. + Birth Date: the system checks all other companies with active integration. If it finds a person with the same VAT Registration No. and birth date, where the "HCM Primary Company" field is empty (i.e., that person is primary in that company), the current record is marked as secondary (filled with that company's name).
- Fallback lookup by Person Document: if VAT Registration No. is empty, the system searches by the series and number of the person's default document.
- First match wins: if matches are found in multiple companies, the first one found is used.
The field can also be set manually. When set manually, the system will offer to copy all data from the primary Person card.
What the "HCM Primary Company" field affects:
- Person synchronization: only records with an empty field are sent to HCM & LMS. Secondary records are skipped.
- SystemId substitution: when other entities (labor contracts, contract lines, timesheets, positions, organizational units) reference a secondary person, the system automatically substitutes the SystemId of the primary person from the primary company. This ensures that all references in HCM & LMS point to a single employee record.
- Integration activation (Step 2): during initial integration record creation, the system skips persons with a filled "HCM Primary Company" field.
How the Employee Is Determined for a Person
To populate employee-related fields (employee number, organizational unit, job title, job profile, employment date), the system searches for the primary employee across all companies with active integration, using this priority:
- Main position — highest priority. Looks for an approved labor contract with work mode "Main position".
- Internal co-work — if no main position is found, looks for a contract with work mode "Internal co-work".
- External co-work — lowest priority. Looks for a contract with work mode "External co-work".
The search is first performed in the current company. If not found — it searches in other companies where a primary record for this person exists. Only approved labor contracts are considered.
Contact Data Source
- Personal data (name, birth date, gender, phones, emails, VAT Registration No., marital status, passport data) — taken from the primary Person record (where the "HCM Primary Company" field is empty).
- Employee-related data (employeeId, subdivisionId, jobProfileId, employmentStartDate) — taken from the primary employee found by the priority logic described above.
- If the primary employee is in a different company than the primary person, the system switches to the Person record from the employee's company for contact data.
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Code (No.) | Code (code) | Person code |
| Last Name (Last Name) | Last Name (lastName) | Last name |
| First Name (First Name) | First Name (firstName) | First name |
| Middle Name (Middle Name) | Middle Name (middleName) | Middle name |
| Gender (Gender) | Gender (gender) | Value mapping: Male → "Male", Female → "Female", Non-binary → "Nonbinarygenderdiverse", Self-Described → "SelfDescribed", Prefer not to answer → "Idontwishtoanswer". Transferred only if filled. |
| Birth Date (Birth Date) | Birthday (birthdate) | Birth date in YYYY-MM-DD format |
| Employment Date (Employment Date) | Employment Start Date (employmentStartDate) | Depends on: Employee. Date of first employment. Transferred only if filled. |
| Company Email (Company Email) | Email (email) | Work email |
| Mobile Phone (Mobile Phone No.) | Mobile (mobilePhone) | Mobile phone |
| Phone (Phone No.) | Telephone (telephone) | Personal phone |
| Email (E-Mail) | Personal Email (personalEmail) | Personal email |
| Company Phone (Company Phone No.) | Business Phone (businessPhoneNo) | Company phone |
| Marital Status (Person Family Status) | Marital Status (maritalStatus) | Value mapping: Single → "Single", Divorced → "Divorced", Married → "Married", Widowed → "Widowed", Civil Marriage → "CivilMarriage". Transferred only if filled. |
| VAT Registration No. (VAT Registration No.) | Taxpayer ID (VATRegistration) | Individual taxpayer identification number. Required field. |
| Document Series | Passport Series (passportSeries) | Depends on: the Default Taxpayer Document Type field in the setup. Taken from the person document of the specified type, valid as of the current date. |
| Document Number | Passport Number (passportNumber) | Depends on: the Default Taxpayer Document Type field in the setup. |
| Document Issue Date | Passport Issue Date (passportIssueDate) | Depends on: the Default Taxpayer Document Type field in the setup. Transferred only if filled. |
| Document Issued By | Passport Issued By (passportIssuedBy) | Depends on: the Default Taxpayer Document Type field in the setup. |
| Employee Org. Unit | Subdivision (subdivisionId) | Depends on: Employee → Org. Unit. The SystemId of the unit is transferred. |
| Org. Unit + Employee Job Title | Job Profile (jobProfileId) | Depends on: Employee → Org. Unit + Job Title. Composite field. |
| Employee No. | Employee No. (employeeId) | Depends on: primary employee lookup through labor contracts. Priority: main position → internal part-time → external part-time. |
3.7. Labor Contracts (Business Central) → Contracts (HCM & LMS)
Operations: create, modify, delete
Synchronization is triggered on: creation, modification of controlled fields, deletion. Contracts are filtered through the Labor Contract Filter in the setup.
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Contract No. (No.) | Code (Code) | Labor contract number |
| No. + Full Name | Name (Name) | Formed automatically: contract number + employee's full name |
| Starting Date (Starting Date) | Starting Date (StartingDate) | Contract effective start date. Empty if not filled. |
| Ending Date (Ending Date) | Ending Date (EndingDate) | Contract effective end date. Null if not filled (indefinite contract). |
| Person (Person No.) | Contact (ContactId) | Depends on: the person of the labor contract. The person's SystemId is transferred. For cross-company persons, the SystemId from the primary company is used. |
| Employee No. (Employee No.) | Employee Code (EmployeeId) | Employee number |
| Employee Org. Unit | Subdivision (SubdivisionId) | Depends on: Employee → Org. Unit. The SystemId of the unit is transferred. |
| Org. Unit + Employee Job Title | Job Profile (jobProfileId) | Depends on: Employee → Org. Unit + Job Title. Composite field. |
| Contract Type (Contract Type) | Cooperation Type (CooperationType) | Value mapping: Civil Contract → "Civil Contract", Labor Contract → "Labor Contract" |
| Work Mode (Work Mode) | Nature of Work (Type) | Value mapping: Main Position → "Main", Internal Part-time → "internal cowork", External Part-time → "external cowork" |
| Status (Status) | State (State) | If Status = "Closed" → "Inactive", otherwise → "Active" |
3.8. Labor Contract Lines (Business Central) → Position Assignment (HCM & LMS)
Operations: create, modify, delete
Labor contract lines contain information about HR operations: Hire, Part-time, Transfer, Dismissal.
Synchronization is triggered on: creation (line approval), modification, deletion. When a line is approved, the corresponding position is also updated.
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Position Org. Unit Name | Name (Name) | Depends on: Position → Org. Unit. The name of the position's organizational unit is taken. |
| Position (Position No.) | Position (PositionId) | Depends on: Positions reference. The SystemId of the position is transferred. |
| Contract No. (Contract No.) | Contract (EmployeeContractId) | Depends on: labor contract. The SystemId of the labor contract is transferred. |
| Person (Person No.) | Contact (ContactId) | Depends on: labor contract → person. The person's SystemId is transferred. For cross-company persons — SystemId from the primary company. |
| Position Org. Unit | Subdivision (SubdivisionId) | Depends on: Position → Org. Unit. The SystemId of the unit is transferred. |
| Position Job Title | Job Title (JobId) | Depends on: Position → Job Title. The SystemId of the job title is transferred. |
| Org. Unit + Job Title | Job Profile (jobProfileId) | Composite field: unit SystemId + "/" + job title SystemId. |
| Starting Date (Starting Date) | Created On (CreatedOn) | Line effective start date |
| Starting Date (Starting Date) | Assignment Date (AssignmentDate) | Position assignment date |
| Ending Date (Ending Date) | Removal Date (RemovedDate) | Line end date. If empty — the end date from the Employee Job Entry record for this position is used. |
| Primary Position | Primary Position (PrimaryPosition) | Determined automatically: true if work mode = "Main Position", operation type ≠ "Part-time", and this is the last approved line with the latest start date. |
| Operation Type (Operation Type) | Operation Type (OperationType) | Text value of the HR operation type (Hire, Transfer, Part-time, Dismissal, etc.) |
| Probation Period | On Probation (IsOnProbation) | Determined automatically: true if both probation period dates are filled (Trial Period Start Date and Trial Period End Date). |
| Salary | Salary (Salary) | Depends on: labor contract terms (SMA Labor Contract Terms). Searches for the amount for salary elements (salary/rate) defined in HR setup (Element Code Salary Days, Salary Hours, Salary Amount, Hourly Rate, Daily Rate). |
| Currency | Currency (Currency) | Depends on: currency in the labor contract terms. If empty — the local currency code from General Ledger Setup is used. The ISO currency code is transferred. |
| Status (Status) | Status (Status) | Mapping: Open → "Open", Approved → "Approved" |
3.9. Causes of Absence (Business Central) → Causes of Absence (HCM & LMS)
Operations: create, modify, delete
Note: only causes of absence with the "Export to HCM" flag enabled (SMA Export to HCM = Yes) are synchronized. This flag is added by the connector extension to the standard "Cause of Absence" table.
Synchronization is triggered on: creation, modification of Description, Detailed Description, Time Activity Type, or the Export to HCM flag, deletion.
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Code (Code) | Code (code) | Cause of absence code |
| Description (Description) | Name (name) | Cause of absence name |
| Detailed Description (SMA Detailed Description) | Description (description) | Extended description of the cause |
| Time Activity Type (SMA Time Activity Type) | Type (type) | Text value of the type |
| Time Activity Group | Group (groupid) | Determined automatically: searches for a time activity group (with Export to HCM flag) that contains this absence code in its filter codes. If no group is found — empty value. |
3.10. Time Activity Groups (Business Central) → Absence Groups (HCM & LMS)
Operations: create, modify, delete
Note: only groups with the "Export to HCM" flag enabled (SMA Export to HCM = Yes) are synchronized. This flag is added by the connector extension to the "Time Activity Groups" table (SMA Time Activity Group).
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Description (Description) | Name (name) | Absence group name |
| Description (Description) | Description (description) | Duplicated in the description field |
3.11. Absence Requests (Business Central) ← Absences (HCM & LMS)
Direction: HCM & LMS → Business Central
In Business Central, requests of three types are created: Vacation Request, Business Trip Request, Other Absence Request.
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Code | Code | Create, modify, delete |
| Description | Name | Create, modify, delete |
| Time Activity Code | Reason Code (Reason code) | Filling the foreign key for this code is required. Create, modify, delete. |
| Time Activity Group | Time Activity Group | Filling the foreign key for this group is required. Either code or group is selected. |
| Request Date | Request Date | Create, modify, delete |
| Start Date | Start Date | Create, modify, delete |
| End Date | End Date | Create, modify, delete |
| Calendar Days | Number of Days | Create, modify, delete |
3.12. Employee Accrual Operations (Business Central) → Absence Balances (HCM & LMS)
Operations: create
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| On Date | On Date | Balance calculation date |
| Time Activity Code | Reason Code (Reason code) | Cause of absence code |
| Planned Calendar Days | Planned Calendar Days | Planned days |
| Use of Calendar Days | Use of Calendar Days | Used days |
| Compensation of Calendar Days | Compensation of Calendar Days | Compensated days |
| Planned Balance Calendar Days | Planned Balance Calendar Days | Planned remaining balance |
| Balance on Date | Balance on Date | Actual remaining balance as of the date |
3.13. Payroll Documents (Business Central) → Payment Documents (HCM & LMS)
Operations: create
Synchronization is triggered on: posting of a payroll document.
Dependencies: synchronization works only if the Enable Payroll Documents field is enabled in the setup. If Enable Between Payroll Docs is also enabled — inter-period documents are synchronized as well. Otherwise — only documents with an empty calculation group type.
Header
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Document No. (No.) | Number (DocumentNumber) | Payroll document number |
| Employee Code (Employee No.) | Employee Code (EmployeeId) | Employee number |
| Description (Posting Description) | Description (Name) | Posting description |
| Posting Date (Posting Date) | Posting Date (PostingDate) | Document posting date |
| Period Code (Period Code) | Period (Period) | Depends on: Payroll Periods reference. The period name is transferred. |
| Reversed (Reversed) | Corrected (IsCorrected) | Reversal flag. Transferred only if the document is reversed. |
Lines
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Element Type | Element Type | Calculation element type |
| Element Code | Element Code | Calculation element code |
| Description | Description | Element description |
| Planned Hours | Planned Hours | Planned hours |
| Actual Hours | Actual Hours | Actual hours |
| Salary Amount | Salary Amount | Accrual amount |
| Taxed Amount | Taxed Amount | Taxed amount |
3.14. Timesheet Statuses (Business Central) → Timesheets (HCM & LMS)
Operations: create, delete
Dependencies: synchronization works only if the Enable Employee Timesheet field is enabled in the setup. Only timesheets with the "Released" status are transferred.
Synchronization is triggered on: timesheet status change to "Released" (record creation), deletion.
| Business Central Field | HCM & LMS Field | Description and dependencies |
|---|---|---|
| Full Name + Period | Name (Name) | Formed automatically: employee's full name + " - " + period name |
| Person | Contact (ContactId) | Depends on: Employee → Person. The person's SystemId is transferred. For cross-company persons — SystemId from the primary company. |
| Labor Contract | Contract (ContractId) | Depends on: Employee → Labor Contract. The SystemId of the labor contract is transferred. |
| Period Code (Period Code) | Period (Period) | Depends on: Payroll Periods reference. The period name is transferred. |
Step 4: Creating Records in the HCM & LMS Integration Records Table
When any changes are made to the fields of the pages specified in Step 3, the HCM & LMS Integration Records page displays records of these changes. Each record corresponds to one synchronization operation.
| Field | Description |
|---|---|
| Entry No. (Entry No.) | Sequential record number |
| Record Type (Record Type) | Operation type: Create, Modify, Delete |
| Table (Table Id) | Number of the table where the change occurred |
| Table Name (Table Name) | Table name |
| Creation Date and Time | Record creation date and time |
| User ID | Code of the user who initiated the change |
| Processing Status (Processing Status) | Processing status: "Created" (awaiting dispatch) or "Processed" (dispatched) |
| Last Error Text (Last Error Text) | Error text if the dispatch failed. Helps diagnose issues. |
Available Actions on the Page
- Mark as Created — resets the record status to "Created" so the job queue retries sending it. Used for resending after an error.
- Send Records — immediate manual dispatch of records without waiting for the job queue.
- Show Request Information — displays the JSON data that will be or was sent to HCM & LMS. Useful for diagnostics.
- Open Source Record — opens the card of the Business Central record that initiated this integration record.
- Delete Selected — deletes selected records from the integration queue. This action cannot be undone.
Step 5: Error Handling and Monitoring
What Happens on Error
If sending a record to HCM & LMS fails with an error:
- The record status remains "Created"
- The error text is written to the "Last Error Text" field
- On the next job queue run, the system will retry sending this record
If during a record update (a "Modify" operation) HCM & LMS returns a 404 error (record not found), the system automatically changes the operation type to "Create" and retries.
Resending
To manually resend failed records:
- Open the HCM & LMS Integration Records page
- Find records with "Processed" status and a non-empty error text
- Click "Mark as Created" — the status will change to "Created"
- The record will be processed on the next job queue run, or click "Send Records" for immediate dispatch
Job Queue Recovery
If the job queue has stopped due to an error:
- Enable the Restore Integration Func. field in the HCM & LMS Setup
- The system will automatically restart the queue on the next login by a user with the appropriate permissions
- Recommended job queue interval: 1–5 minutes