> ## Documentation Index
> Fetch the complete documentation index at: https://faq.exode.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrations

> Connecting the Verifix HR system: syncing the organization structure and employees, exporting training results, protection against mass dismissals

The **Company → Integrations** section is a catalog of apps and connected services. In corporate mode it has
the **HR & records** category. Right now it offers the **Verifix** integration, while **1C:ZUP** and **HeadHunter**
are marked “Coming soon”.

To connect and manage integrations, you need the “Integrations management” permission. See
[Roles and permissions](https://faq.exode.biz/en/corporate/roles.md).

## What the Verifix integration does

Verifix is an HRM system for HR records and time tracking. The integration works both ways.

**From Verifix to Exode:**

* departments, positions and employees appear in the **Organization structure** section;
* when an employee is hired, they get an Exode account, and courses are assigned by the automatic assignment
  rules for their department and position;
* when an employee is dismissed in Verifix, their access to Exode is closed;
* if the “Grades ↔ ranks” setting is on, the employee's rank from Verifix becomes their grade in Exode.

**From Exode to Verifix**, by settings, each turned on separately:

| Setting | What goes to Verifix |
| - | - |
| **Courses and certificates → «Education» of the employee card** | A record of the completed course: the name, start and end dates, the education type “Корпоративное обучение (Exode)” (Corporate training). If the certificate has an expiry date, it is added to the same record. On by default |
| **Time on the platform → timesheet** | Every session in lessons longer than a minute becomes an absence request of the “Обучение на платформе (Exode)” (Learning on the platform) kind. You can send only the time within the employee's work schedule |
| **Completed course → a draft one-time accrual** | For each completed course, a draft accrual of the specified amount, for example a bonus. The draft is not posted: HR or an accountant checks and posts it. One course gives one accrual |
| **Grades ↔ ranks (Pro module)** | When an employee meets the conditions of the next grade, a draft rank change is created in Verifix. Needs the Pro module in Verifix |

> [!WARNING]
>
> Do not turn on “Grades ↔ ranks” if Verifix uses the “Career path”: the draft rank changes would
> diverge from it.

## Connecting

**1. Create a role in Verifix**

In Verifix, open **Settings → Administration → Users → Roles**. Create a role and attach the
**Organization**, **Departments / API**, **Job**, **Employees** and **Employee** forms to it.

**2. Add forms for the exports you need**

For each export from Exode to Verifix, attach more forms to the role. The exact list for each setting
is shown in the **How to connect** section on the app page.

**3. Create an OAuth2 client**

In Verifix, switch to the **Administration** organization and open **Settings → External systems →
OAuth2 clients for the company server**. Create a client of the client credentials type, choose the
organization whose employees you want to bring over, and the role from the first step.

**4. Install the app in Exode**

In **Company → Integrations**, open Verifix and click **Install**. Paste the **Client ID** and **Client
Secret**. Verifix shows the Client Secret only once, so copy it right away.

**5. Check the connection**

Exode checks access to the organization, departments, positions and employees. If a form is
missing, the item shows “no access”.

**6. Preview the changes and start the sync**

Click **Preview changes** to see what will change without applying anything. Then click
**Sync now**.

## How the sync works

| Run | When |
| - | - |
| **Scheduled sync** | Every 10 minutes, only the changes since the last time |
| **Nightly full pass** | Once a day, a full reconciliation |
| **Manual sync** | With the **Sync now** button |
| **Preview** | With the **Preview changes** button, applies nothing |

All runs are shown in the **Sync journal**: the status (“Running”, “Completed”, “Failed”, “Awaits
confirmation”), who started it, how many records were added, updated, dismissed and deleted, and the issues.

### How Verifix is matched with what already exists in Exode

* A **department** created manually is matched with the Verifix department that has the same name under the same
  parent department.
* A **position** created manually is matched by name.
* An **employee** is looked up among the company's users first by phone, then by email. If not found,
  a new account is created.
* An employee without a phone and email is not brought over: the journal shows the issue “The employee has no phone and no
  email”.

> [!NOTE]
>
> New employees from Verifix do not get a login and password automatically. When you are ready, open
> the user card and click **Send password**.

### Dismissals and deletions

* An employee counts as dismissed only by an explicit dismissal status in Verifix. If a person simply disappears from the
  list, Exode does not dismiss them.
* Verifix sends the last working day. The assignment in Exode is closed on the next day.
* **Protection against mass changes.** If a single run needs to dismiss or delete more than 5 records and
  more than 10% of the current number, the changes are not applied. The run gets the “Awaits confirmation” status.
  Check the journal and click **Confirm dismissals** if everything is correct.

### Records from Verifix cannot be changed in Exode

Departments, positions and employee assignments that came from Verifix can be edited only in
Verifix. If you try to change them in Exode, you see “This record is managed in an external system (Verifix) — change
it there”. You still set up automatic assignment rules, courses and grade conditions in Exode.

## Export journal

The **Export journal** shows everything Exode has sent to Verifix: education, time on the platform, bonuses,
rank changes.

| Status | What it means |
| - | - |
| **Queued** | Waiting to be sent |
| **Sent** | Verifix accepted the record |
| **Failed** | It could not be sent |
| **Skipped** | It does not need to be sent, for example the learning happened outside the employee's working hours |

* On a temporary error, Exode retries sending up to 8 times with a growing pause: from a minute to about two hours.
  After that, the record waits for an administrator.
* The **Send again** and **Retry failed exports** buttons send failed records again.
* Completed courses that were not sent right away are sent by the nightly check for the last 7 days.
* After the first sync, Exode sends the history of completed courses of the linked employees. The
  **Export learning history** button sends it again.

## If the integration has stopped

| App status | Reason | What to do |
| - | - | - |
| **Stopped**: “The access keys were rejected” | The OAuth2 client was deleted or its role was changed | Enter valid keys in the app settings |
| **Stopped**: “The admin lacks the needed rights” | The administrator on whose behalf the app works lost their permissions | Turn on the app on behalf of an administrator with the “Staff management” and “Company user management” permissions |
| **Not paid**: “The subscription to the app is over” | The app subscription has ended | Renew the subscription and turn on the app |

When the integration stops, the data is kept, and an administrator gets a notification.

## Frequently asked questions

> **How quickly do changes from Verifix reach Exode?**
>
> Within 10 minutes. A full reconciliation runs once a day. To avoid waiting, click **Sync now**.

> **Why does the sync say “Awaits confirmation”?**
>
> A single run needs to dismiss or delete too many records. This way Exode protects the structure from mistakes,
> for example from a truncated list. Check the journal and click **Confirm dismissals**.

> **An employee from Verifix did not appear in Exode. Why?**
>
> Check the issues in the **Sync journal**. Common reasons: the employee has no phone and email,
> the phone or email is already used by another employee, the parent department is missing or the role
> in Verifix lacks permissions.

> **Why can't I rename a department?**
>
> It came from Verifix. Rename it in Verifix, and the change arrives with the next sync.

> **Employees from Verifix did not get passwords**
>
> This is expected: Exode does not send passwords to employees from Verifix automatically. Send the password from the
> user card.

> **Learning did not get into the Verifix timesheet**
>
> Check the status in the **Export journal**. If “Only within the working hours of the employee” is turned on,
> sessions outside the schedule are skipped. Sessions shorter than a minute are not sent.

> **Will there be integrations with 1C:ZUP and HeadHunter?**
>
> They are in the catalog marked “Coming soon” and cannot be connected yet. To load data from 1C right now,
> use the [API](https://faq.exode.biz/en/corporate/api.md).

***

*Updated: 2026-10-15 18:08 UTC*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.