Skip to main content

SFTP Upload

Justin Hume avatar
Written by Justin Hume
Updated over 2 weeks ago

0 · Why SFTP?

  • No API keys to juggle. Just drop a file every night—Proserva does the rest.

  • District retains full control. You decide exactly what fields land in Proserva, and where they come from.

  • Works with any SIS. If it can spit out a CSV, it can sync.

1 · Pre-Flight Checklist

✅ Item

Notes

IP address(es) to whitelist

Send to Proserva so we can open the gate.

Preferred SFTP username

Or we’ll auto-generate one.

Nightly export time

Pick any; most districts use 2-3 a.m. local.

2 · Build Your CSV

Use UTF-8 and include one header row followed by staff records. Order doesn’t matter, spelling does.

Refer to the Guide on Uploading and Updating District Data here for the template file.

3 · Automate the Nightly Drop

  1. Export from SIS → Save/transform to the header format above.

  2. SFTP client or cron/Scheduled Task → Upload to the root of the SFTP folder.

  3. Overwrite or add: Either replace the previous day’s file or add a new, date-stamped one—Proserva ingests the newest file it finds.

Upload Frequency

  • Default: one file per 24 h.

  • Need more? Let us know—we can pull as often as every 4 h.

4 · How Data Overwrites Work

Proserva is gentle with your existing data. It will not overwrite existing date unless it falls in one of these scenarios:

Scenario

What happens

New user appears

We create the account with the data as given.

Field is blank in Proserva, but present in new file

We fill it in with the data as given.

A different first name, last name, or email in the file (and existing employee ID)

We update to the new name/email.

⚠️ Therefore, if you need to correct an existing field (e.g. wrong file_folder_number, or tenure), edit directly in Proserva. The nightly file won’t overwrite populated fields.

5 · Test & Go-Live

  1. Send a one-off “test” CSV with 2–3 staff.

  2. Proserva confirms records landed as expected.

  3. Flip on the nightly job.

  4. Celebrate with coffee—roster sync is now automatic.

➡️ 6 · Disabling (and Re-Enabling) Users

Keeping your roster clean is more than housekeeping—it protects licensure data, prevents orphaned coaching assignments, and simplifies billing. Proserva gives you three ways to disable accounts, plus an easy path to bring people back if they return.

Method

When to Use

How It Works

Reactivating Later

A. resignation_date column (preferred)

You already know the last day of employment (retirement, resignation, leave).

Add the resignation_date (YYYY-MM-DD) to the user’s row. At midnight of that date the account flips to Inactive.

Remove the date or set a new future date; status switches back to Active at next sync.

B. Remove user from nightly CSV

Short-notice departures where you can’t update resignation_date.

If a user’s employee_id + email disappears from the nightly file, Proserva automatically disables the account.

Re-add their row in the next file.

C. Manual toggle in the Admin Portal

One-off cases (long-term leave, sub roles) or emergency lockouts.

User Search → search name → Disable account. Takes effect instantly; no sync needed.

Click Restore Access in the same place.


What “Disabled” Means Under the Hood

Area

Behavior

Login

User cannot sign in (SSO or email).

Licensure & CEU data

Retained—no data loss.

Coaching / Portfolio

Goals & artifacts remain view-only for coaches/admins.

Billing

Inactive users are excluded from per-seat counts at renewal.

🔒 Data is never deleted on disable—it’s simply hidden from active rosters.


Best-Practice Workflow

  1. Add resignation_date for known departures (retirements, contracts ending).

  2. Purge your nightly CSV of staff who’ve already left but don’t have a resignation date—Proserva will catch & disable automatically.

  3. Manual toggle only for edge cases such as maternity leave or disciplinary suspensions.


Reactivation Scenarios

Scenario

Action

Teacher returns from sabbatical

Remove the resignation_date or set a new future date → nightly sync flips them back to Active.

Mistaken disable

Re-add the user’s row in nightly CSV (or manual enable). Their courses, CEUs, and coaching history reappear instantly.

Rehire with new email

Add a new row (new email, same employee_id). Proserva merges records so history follows the staff member.

Users can always be reactivated using the "Restore Access" button found on their user profile. You can find deactivated users in the District/Network Portal > Manage > Users.


Need a hand?

Ping your onboarding specialist or email support@proserva.co—we can bulk-reactivate or export a list of inactive users on request.

FAQs

Q

A

What if our SIS can’t export resignation_date?

Leave it out; you can still disable staff manually in Proserva.

Can we include extra columns?

Sure—Proserva ignores unrecognized fields.

What if we need to pause the sync?

Simply stop sending files; existing accounts stay active.

File size limit?

None in practice—CSV parses up to hundreds of thousands of rows.


Need help?

Email support@proserva.co or message your Proserva onboarding rep.

We’ll get you squared away faster than you can spell “SFTP.”

CSV Upload Frequency

The frequency of data upload is every 24 hours. You can perform an upload at any time. If you need to trigger it more often, please advise Proserva.

Data Overwriting

Each upload will not overwrite all existing data within the database. The data will only be overwritten in the following cases:

  1. It is a new user.

  2. The existing data in the application for that field is empty.

  3. If the email, first or last name change and there is an existing user with that employee ID number in your district.

This means that correcting data such as an incorrect file_folder_number must be done manually within Proserva.

Did this answer your question?