How it works
High-level functional specification
This integration runs daily and processes the following items from HiBob and into Xledger:
- New employee records.
- Updated employee records.
- Employee records that have been marked as a leaver.
This integration uses Xledger's GraphQL API, for more details on this API, have a look at the documentation.
For Xledger to correctly maintain a new employee, the following data entities need to be created:
-
User
-
Allows a person to log in and use Xledger.
-
-
User-Access Item
-
Assigns a role to this user, for now, this is an employee by default.
-
-
Contact
-
Assigns a contact to the user
-
-
Supplier
-
Assigns a supplier to the user
-
-
Employee
-
Creates an employee and links the contact, user, and supplier together to ensure expenses and other tasks can be carried out in Xledger.
-
This integration ensures all these are created every time a new employee is added.
Current limitations
- If an employee in HiBob has their email address amended, the relevant user account in Xledger must have their email address updated manually. The reason for this is to find the user account in Xledger when updating the employee's accounts, we have to filter by email address. So, if the email address is changed, we can't match the two records in both systems.
-
For now, by default, all users will be created in the same country and language, there is scope to change this if needed.
Mapping
Process Flow
Integration variables
Cyclr allows for variables to be maintained against an integration. These can be set for each instance of an integration and allow for easy customer-specific configuration. The following are available for the HiBob to Xledger integration:
-
languageDbId
Xledger database ID for the default language to use when creating users.
-
cultureInfoDbId
Xledger database ID for the default locale to use when creating users.
-
roledbId
Xledger database ID for the default role to use when creating users.
Field mappings
New User
| addUser (Xledger) | New Employees (HiBob) | Value/notes |
|---|---|---|
| description | first_name last_name |
first_name+" "+last_name |
| code | employee ID in company | |
| from_date | start date | |
| languageDbId | Integration Variable: languageDbId | |
| cultureInfoBdId | Integration Variable: cultureInfoDdId | |
| mobile | work mobile |
New User Access Item
| addUser (Xledger) | New Employees (HiBob) | Value/notes |
|---|---|---|
| addUserAccessItem (Xledger) | addUser | Value/notes |
| userId | userDbID | from previous step |
| roleDbId | Integration Variable: roleDbId |
Update User
| updateUser (Xledger) | updated Employees (HiBob) | Value/notes |
|---|---|---|
| description | first_name last_name |
first_name+" "+last_name |
| code | employee ID in company | |
| from_date | start date | |
| languageDbId | Integration Variable: languageDbId | |
| cultureInfoBdId | Integration Variable: cultureInfoDdId | |
| mobile | work mobile | |
| from Date | start date | |
| to date | leaving date |
New Contact
| addContact (Xledger) | New Employees (HiBob) | Value/notes |
|---|---|---|
| code | employee ID in company | |
| description | first_name last_name |
first_name+" "+last_name |
| name | first_name last_name |
first_name+" "+last_name |
| first_name | first_name | |
| last_name | last_name | |
| languageDbId | Integration Variable: languageDbId | |
| street_address | optional | |
| zip_code | optional | |
| place | optional | |
| country | optional | |
| from_date | start date | |
| phone | work mobile |
Update Contact
| updateContact (Xledger) | Updated Employees (HiBob) | Value/notes |
|---|---|---|
| code | employee ID in company | |
| description | first_name last_name |
first_name+" "+last_name |
| name | first_name last_name |
first_name+" "+last_name |
| first_name | first_name | |
| last_name | last_name | |
| languageDbId | Integration Variable: languageDbId | |
| street_address | optional | |
| zip_code | optional | |
| place | optional | |
| country | optional | |
| from_date | start date | |
| to_date | leaving date | |
| phone | work mobile |
New Supplier
| addSupplier (Xledger) | New Employees (HiBob) | Value/notes |
|---|---|---|
| code | employee ID in company | |
| description | first_name last_name |
first_name+" "+last_name |
| name | first_name last_name |
first_name+" "+last_name |
| street_address | optional | |
| zip_code | optional | |
| place | optional | |
| country | optional | |
| phone | work mobile | |
| from_date | start date |
update Supplier
| updateSupplier (Xledger) | updated Employees (HiBob) | Value/notes |
|---|---|---|
| code | employee ID in company | |
| description | first_name last_name |
first_name+" "+last_name |
| name | first_name last_name |
first_name+" "+last_name |
| street_address | optional | |
| zip_code | optional | |
| place | optional | |
| country | optional | |
| phone | work mobile | |
| start_date | start date | |
| to_date | leaving date |
New Employee
| addEmployee (Xledger) | New Employees (HiBob) | Value/notes |
|---|---|---|
| code | employee ID in company | |
| description | first_name last_name |
first_name+" "+last_name |
| userId | userDbId | from the add user step |
| subledgerDbId | supplierDbId | from the add supplier step |
| date_from | start date | |
| employment_from | start date | |
| first_name | first_name | |
| last_name | last_name | |
| contactDbId | contactDbId | from the add contact step |
| Cost center | Department | optional |
| Employee group | optional |
update Employee
| updateEmployee (Xledger) | Updated Employees (HiBob) | Value/notes |
|---|---|---|
| code | employee ID in company | |
| description | first_name last_name |
first_name+" "+last_name |
| userId | userDbId | from the add user step |
| subledgerDbId | supplierDbId | from the add supplier step |
| employment_from | start date | |
| employment_to | leaving date | |
| from_date | start date | |
| date_to | leaving date | |
| first_name | first_name | |
| last_name | last_name | |
| contactDbId | contactDbId | from the add contact step |
| Cost center | Department | optional |
| Employee group | optional |