# 3.2.3.1 Prepare source file for employees

Prepare your ***default-employees*** source file. This is a [csv](https://en.wikipedia.org/wiki/Comma-separated_values) file for every employee who will have initial access to OpenCRVS. You can import and create csv files in Excel or Google Drive.

In development/staging or QA environments, these users will be created in an "**active**" state and will not be required to change their password nor be required to set up reset authentication credentials security questions when logging in. This makes the quality assurance process easier. In development/staging and QA environments, all of these users will be able to submit a test **2FA code of six zeros: "000000"** when logging in.

In production environments, these users will be created in an "**pending**" state and will be required to change their password and set up reset authentication credentials security questions when logging in. 2FA codes will be delivered to the users email address.

All of these users will be able to sign in to OpenCRVS initially with the **same test password** as documented in the csv. This is a temporary password but nevertheless it is saved in Git repositories.

{% hint style="danger" %}
For this reason we strongly recommend that in production the list only contains a National System Admnistrator who can immediately update their password when logging in the first time to something stronger. When creating users in production through the OpenCRVS UI, the system generates random unique passwords for all new users and they receove these passswords in an email invite.
{% endhint %}

Using our [default-employees.csv](https://github.com/opencrvs/opencrvs-countryconfig/blob/develop/src/data-seeding/employees/source/default-employees.csv) file as an example, you can create employees with all possible roles to quality assure your OpenCRVS instance, or just a single National System Admin role. Our test-employees.csv file looks like this:

<table><thead><tr><th>primaryOfficeId</th><th width="225">givenNames</th><th>familyName</th><th>systemRole</th><th>role</th><th>mobile</th><th>username</th><th>email</th><th>password</th></tr></thead><tbody><tr><td>CRVS_OFFICE_JWMRGwDBXK</td><td>Kalusha</td><td>Bwalya</td><td>FIELD_AGENT</td><td>Social Worker</td><td>0911111111</td><td>k.bwalya</td><td>kalushabwalya@gmail.com</td><td>test</td></tr><tr><td>CRVS_OFFICE_JWMRGwDBXK</td><td>Felix</td><td>Katongo</td><td>REGISTRATION_AGENT</td><td>Registration Agent</td><td>0922222222</td><td>f.katongo</td><td>felixkatongo@gmail.com</td><td>test</td></tr><tr><td>CRVS_OFFICE_JWMRGwDBXK</td><td>Kennedy</td><td>Mweene</td><td>LOCAL_REGISTRAR</td><td>Local Registrar</td><td>0933333333</td><td>k.mweene</td><td>kennedymweene@gmail.com</td><td>test</td></tr></tbody></table>

{% hint style="danger" %}
Do not change or re-format the header row as the code requires these names to be precise in order to parse the csv. Do not use commas in any cell and do not have any empty rows.
{% endhint %}

* Each row will represent a unique "user" in your country.
* Do not change or re-format the header row as the code requires these names to precise in order to parse the csv. **All data in the csv must contain no commas.**
* The **primaryOfficeId** column is the identifier for the civil registration office where the user will be located. Notice that the format is "CRVS\_OFFICE\_\<office **id**>". For example, all of these users aove will be created in Ibombo District Office
* The **givenNames** column must be the users' first names separated by using a space.
* The **familyName** column must be the users' first names separated by using a space.
* The **systemRole** column must be set to one of the following supported system roles only, and this defines user permissions:

FIELD\_AGENT

REGISTRATION\_AGENT

LOCAL\_REGISTRAR

LOCAL\_SYSTEM\_ADMIN

NATIONAL\_SYSTEM\_ADMIN

NATIONAL\_REGISTRAR

PERFORMANCE\_MANAGEMENT

* The **role** column can be any text value to represent the public facing role title for this individual.
* The **mobile** column must contain a mobile number **without** your country code. Ensure that the mobile number validates using whatever phone number regular expression that you intend to use in section [**3.2.9 Set up initialisation settings**.](https://documentation.opencrvs.org/v1.3/setup/3.-installation/3.2-set-up-your-own-country-configuration/3.2.4-set-up-employees-for-testing-or-production/broken-reference) You can ignore this if you are not using phone numbers as a method of communication.
* The **username** column must be a unique username that the user will use to authenticate with when logging in.
* The **email** column must contain a valid email address
* The **password** column will be the password used for initial login. Refer to the note above.

It is configurable that some users have their signatures digitally printed onto certificates. Usually this is the case for LOCAL\_REGISTRAR or NATIONAL\_REGISTRAR user types.\
\
[This website](http://www.onlinesignaturecreator.com/) can be used to create a transparent PNG if you do not have access to any other image editing software. There are many free websites you can find to convert a PNG image file to base64 text, such as [this one](https://www.base64-image.de/).

You can upload transparent PNGs to use for any user's signature at any time by editing the user in the "Team" section of OpenCRVS UI.
