SFTP integration allows you to automatically synchronize your users, departments, and locations in Zest by uploading .csv files to a secure server.
It is the ideal solution if you want to automate your imports or connect Zest to your HRIS.
Here is how to proceed step by step π
Here is the full technical documentation π
1οΈβ£ Request the setup π©
SFTP configuration is not enabled by default.
To activate it, contact:
π§ [email protected]
In your request, specify:
- your organization name
- that you want to enable SFTP provisioning
- whether you want incremental (default) or differential mode
- whether you need a multi-entity setup
The technical team will then support you during the configuration.
2οΈβ£ Provide your SSH key π
Access to the SFTP server is secured.
During setup, Zest will request:
- Your public SSH key (RSA)
- Your server IP(s) if firewall rules are applied
- The name of the person or system that will upload the files
π Important: the key must be a public key.
The file will be stored in the serverβs /.ssh folder (do not modify it).
3οΈβ£ Understand how Zest SFTP works βοΈ
Once configured:
- You upload your CSV files into the /upload folder
- Every 15 minutes, Zest reads, checks, and applies updates
- After processing, a report is generated in the /reports folder
Reports can also be sent by email upon request.
4οΈβ£ Choose your import mode: Incremental or Differential
Zest offers two modes.
π© Incremental mode (recommended β default)
- Adds new users
- Updates existing users
- Does not delete anyone
- To delete: set status = removed in users.csv
π This is the safest mode.
π₯ Differential mode
- The file content = the new source of truth
- All users not present in the file are deleted
- Organizational trees are fully replaced
π Use only if you fully control your HRIS exports.
5οΈβ£ Upload your files to the server π
Files must be uploaded with the exact following names:
- users.csv
- department.csv
- location.csv
They must be placed in:
/upload
After processing, Zest automatically renames them:
- _treated_DATE.csv (success)
- _error_DATE.csv (failure)
6οΈβ£ Respect the CSV file format π
This is the most important step to avoid errors.
βοΈ Encoding: UTF-8 (mandatory)
βοΈ Separator: ;
7οΈβ£ Expected file structure
1. department.csv
| column | mandatory | description |
|---|---|---|
| unit | βοΈ | Department name |
| parent | Parent name (empty for root) |
2. location.csv
| column | mandatory | description |
|---|---|---|
| unit | βοΈ | Location name |
| parent | Parent location |
3. users.csv
Key columns:
| column | mandatory | description |
|---|---|---|
| firstname | βοΈ | First name |
| lastname | βοΈ | Last name |
| (βοΈ) | Required if userId is not used | |
| userId | (βοΈ) | Required if email is not used |
| password | Used only during initial creation | |
| status | βοΈ | active, suspended, removed |
| ssoLogin | SSO identifier | |
| managerId | email or userId matching an existing row | |
| department | βοΈ | Must exist in department.csv |
| location | Must exist in location.csv | |
| rank | βοΈ | user, superAdmin, RH |
| lang | βοΈ | fr, en, esβ¦ |
| departmentsAdmin | List separated by ` | |
| locationsAdmin | List separated by ` | |
| custom attributes | Formats: text / number / boolean / date |
8οΈβ£ Key points to pay attention to π§
βοΈ SmartOrg must be consistent
β no duplicates
β exact naming (character by character)
β parent must exist in the structure
βοΈ No manager/employee loops
(SFTP will reject the file.)
βοΈ Dates in YYYY-MM-DD format
(English format β same as manual import.)
βοΈ Files encoded in UTF-8 and separated by β;β
βοΈ The CSV must contain
no empty rows
βοΈ To delete a user:
β in incremental: set status = removed
β in differential: absence in file deletes the user
9οΈβ£ Multi-entity (if applicable)
- Each entity has its own SFTP access
- User import = always incremental
- A root unit must be defined per entity
- An entity cannot reuse a unit name from another entity β otherwise error
π How to test the integration
Zest will offer:
- a file upload test
- SSH key validation
- a file processing test
- validation of the first report in /reports
Once validated, SFTP can be automated via your HRIS / ESB.
π― Conclusion: SFTP integration summary
- Request activation via [email protected]
- Provide your public SSH key
- Upload your CSV files in /upload
- Zest processes them every 15 minutes
- Retrieve reports in /reports
- Strictly follow UTF-8 + ; + SmartOrg structure
This is the most robust solution for automatic, reliable, and secure synchronization.