SFTP Integration

3 min read

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 πŸ‘‡

AllItems.aspx?id=%2Fsites%2Fgeneral%2FDocuments partages%2F7. Dev%2F4. Technical_doc%2F_Latest%2FProvisioning_sftp_FR_4.pdf&parent=%2Fsites%2Fgeneral%2FDocuments partages%2F7. Dev%2F4. Technical_doc%2F_Latest&p=true&ga=1

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

columnmandatorydescription
unitβœ”οΈDepartment name
parentParent name (empty for root)

2. location.csv

columnmandatorydescription
unitβœ”οΈLocation name
parentParent location

3. users.csv

Key columns:

columnmandatorydescription
firstnameβœ”οΈFirst name
lastnameβœ”οΈLast name
email(βœ”οΈ)Required if userId is not used
userId(βœ”οΈ)Required if email is not used
passwordUsed only during initial creation
statusβœ”οΈactive, suspended, removed
ssoLoginSSO identifier
managerIdemail or userId matching an existing row
departmentβœ”οΈMust exist in department.csv
locationMust exist in location.csv
rankβœ”οΈuser, superAdmin, RH
langβœ”οΈfr, en, es…
departmentsAdminList separated by `
locationsAdminList separated by `
custom attributesFormats: 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

  • 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.

Related articles

Was this page helpful?