--- title: "HR import CSV file available fields" slug: "hr-import-csv-file-available-fields" tags: ["Totara Platform", "Reference", "Site Administrator"] updated: 2025-07-22T10:52:18Z published: 2025-07-22T11:18:16Z canonical: "totara.help/hr-import-csv-file-available-fields" --- > ## Documentation Index > Fetch the complete documentation index at: https://totara.help/llms.txt > Use this file to discover all available pages before exploring further. # HR import CSV file available fields This page covers the values you can add to your CSV files for HR import. For guidance on configuring the CSV upload settings on your Totara site, please see the [HR import CSV site settings](/19/docs/hr-import-csv-site-settings) [](https://help.totaralearning.com/display/THM/.Sources+v13) page. CSV source file format Comma-separated values (CSV) files store tabular data in plain text. Each line of the file is a data record. Each record consists of one or more fields, separated by commas (or other characters). It's possible to save files in the CSV format using all major spreadsheet applications and text editors. You may have to take care when using double-quote characters ("), so refer to your application manual if there is any doubt. For text values that include anything other than letters or numbers (special characters), the value should be within double-quotes. If the value itself contains double quotes, an additional double quote should be added in front of each, e.g.: | **Desired text** | **Input to CSV file** | | --- | --- | | There are "quotes" within this value. | "There are ""quotes"" within this value" | If you are updating existing information and leaving any fields blank then you may want to check that **Empty string behaviour in CSV** is not set to **Empty strings erase existing data**. ## **Competencies** The **aggregationmethod** field can only be used in Totara Learn-only sites. The **assignavailability** field can only be used in sites that use both Totara Learn and Perform. In Totara Perform achievement is determined either using migrated achievement from existing Totara Learn competencies that have been migrated or by the achievement paths set up in Totara Perform competencies. For Totara Perform there is a new setting in the competency admin screen called **Non-admin assignment availability**, which makes the competency available for direct assignment to a user via their competency profile (by either a user with permission to assign to themselves or another user who has permission to assign to them). | **Heading** | **Format** | **Notes** | | --- | --- | --- | | idnumber | 1-100 characters | Unique for each hierarchy item. This item ID must not match the ID of any competency items in other competency frameworks. If an item ID is shared between two items in different frameworks, the item may not be added, or the original **idnumber** may be moved to the framework used in the CSV file. | | timemodified | Unix timestamp | Last time item detail changed. If a Unix timestamp is provided in the source file, the **timemodified** value must not be equal to the previously imported **timemodified** value or the item will not be updated. If left empty or set to 0, the record will be updated. | | frameworkidnumber | 1-100 characters | **idnumber** matching an existing hierarchy framework. | | shortname | 0-100 characters | This field can be empty. | | fullname | 1-1000 characters | The competency name. | | parentidnumber | 0-100 characters | Matches the identifier field of another hierarchy item. Empty for the top level. | | description | Up to 1000 characters | This field can be empty. | | typeidnumber | 0-100 characters | Matches the identifier of an existing item type. | | deleted | 0 or 1 | Required when only competencies to create, update or delete are provided, otherwise not necessary. 0 means do nothing, and 1 means delete. No action is assumed if empty. | | customfield_[shortname] (optional) | Up to 1000 characters | Custom field data. Multiple columns are allowed, where the column heading matches the type's custom field **shortname**. If no match, nothing will be updated. If the custom field type is **Date format** then the data in the field needs to match the format defined under *Location > Location settings > CSV import date format.* | | aggregationmethod | 1, 2 or 3 | **For Learn-only sites** For competencies in a Learn-only site, the aggregation method sets how the system will calculate the competency achievement. - **1** is the **All** aggregation method. - If the aggregation method is set to **All** then every child competency will have to be achieved for the parent competency to be declared achieved. - **2** is the **Any** aggregation method. - If the aggregation method is set to **Any** then only one of the child competencies needs to be met to successfully achieve the parent competency. - **3** is the **Off** aggregation method. - If the aggregation method is set to **Off** then automatic achievement will be deactivated for this competency (it may still be marked achieved manually). | | assignavailability | 0, 1, 2 or 3 none, self, other, any | **For Learn + Perform sites** Competency assignment is a new feature added for competencies in Totara Perform. Rather than using learning plans to assign competencies in Perform, administrators can assign using organisations, positions, and audiences. - **none** or **0**: No non-admin assignment of competencies, only administrators can assign this imported competency via *Quick-access menu > Competencies > Create assignments* - **self** or **1**: Users can self-assign competency from their [competency profile](/19/docs/using-the-competency-profile) - **other** or **2**: Users can assign competency to others e.g. a manager may assign to their team members Please note that to assign competencies to another user the assigning user will require the **Manage competency assignments** permission. | ## **Job assignment** See [Configure HR Import sources](/19/docs/configure-hr-import-settings) to see how to add multiple job assignment fields in the HR import file. For multiple job assignments, just put two (or more) lines in your CSV per user. The user fields need to be identical in both lines. The job assignment fields contain one job assignment per line. For example: useridnumber,jobassignmentnumber,positionidnumber,manageridnumber n123,jobid1,pos1,manager1 n123,jobid2,,manager2 | **Heading** | **Format** | **Notes** | | --- | --- | --- | | fullname (optional) | Up to 100 characters, space, ampersand, parentheses, forward slash | Job assignment title. | | useridnumber | 1-100 characters | The user's ID number. | | timemodified | Unix timestamp | Last time item detail changed. If a Unix timestamp is provided in the source file, the **timemodified** value must not be equal to the previously imported **timemodified** value or the item will not be updated. If left empty or set to 0, the record will be updated. | | deleted | 0 or 1 | Required when only job assignments to create, update or delete are provided, otherwise not necessary. 0 means do nothing, and 1 means delete. No action is assumed if empty. | | idnumber | 1-100 characters | Matches valid job assignment number. Null assumed if not provided. To assign a user a manager, the user must have a job assignment. For example, if you want to assign a **managerid** of 1 to a **useridnumber** of 5, the manager needs to have a job assignment number in the file. | | startdate (optional) | CSV import date format or Unix timestamp | Data in the field needs to match the format defined under *Location > Location settings > CSV import date format.* | | enddate (optional) | CSV import date format or Unix timestamp | Data in the field needs to match the format defined under *Location > Location settings > CSV import date format.* | | orgidnumber (optional) | 1-100 characters | Matches valid organisation **idnumber**. Null assumed if not provided. | | posidnumber (optional) | 1-100 characters | Matches valid position **idnumber**. Null assumed if not provided. | | appraiseridnumber (optional) | 1-100 characters | Null or matches valid user **idnumber**. Null assumed if not provided. | | manageridnumber (optional) | 1-100 characters | Null or matches valid user **idnumber**. Null assumed if not provided. | | managerjaidnumber (optional unless **manageridnumber** is enabled) | 1-100 characters | The ID number for the specific job assignment involved in the manager relationship. Automatically required if **manageridnumber** is set to on and **updateidnumbers** is off (i.e. we're using more than just the first jobs). | | tempmanageridnumber (optional) | 1-100 characters | Null or matches valid user **idnumber**. Null assumed if not provided. | | tempmanagerexpirydate (optional unless **tempmanageridnumber** is enabled) | CSV import date format or Unix timestamp | Data in the field needs to match the format defined under *Location > Location settings > CSV import date format.* | | tempmanagerjaidnumber (optional unless **tempmanageridnumber** is enabled) | 1-100 characters | The ID number for the specific job assignment involved in the manager relationship. Automatically required if **tempmanageridnumber** is set to on and **updateidnumbers** is off (i.e. we're using more than just the first jobs). | ## **Organisations** | **Heading** | **Format** | **Notes** | | --- | --- | --- | | idnumber | 1-100 characters | Unique for each hierarchy item. This item ID must not match the ID of any organisation items in other organisation frameworks. If an item ID is shared between two items in different frameworks, the item may not be added, or the original **idnumber** may be moved to the framework used in the CSV file. | | timemodified | Unix timestamp | Last time item detail changed. If a Unix timestamp is provided in the source file, the **timemodified** value must not be equal to the previously imported **timemodified** value or the item will not be updated. If left empty or set to 0, the record will be updated. | | frameworkidnumber | 1-100 characters | **idnumber** matching an existing hierarchy framework. | | shortname | 0-100 characters | This field can be empty. | | fullname | 1-1000 characters | The organisation name. | | parentidnumber | 0-100 characters | Matches the identifier field of another hierarchy item. Empty for the top level. | | description | Up to 1000 characters | This field can be empty. | | typeidnumber | 0-100 characters | Matches the identifier of an existing item type. | | deleted | 0 or 1 | Required when only organisations to create, update or delete are provided, otherwise not necessary. 0 means do nothing, and 1 means delete. No action is assumed if empty. | | customfield_[shortname] (optional) | Up to 1000 characters | Custom field data. Multiple columns are allowed, where the column heading matches the type's custom field **shortname**. If no match, nothing will be updated. If the custom field type is **Date format** then the data in the field needs to match the format defined under *Location > Location settings > CSV import date format.* | | aggregationmethod | 1, 2 or 3 | Note: Competency source only. - **1** is the **All** aggregation method. - **2** is the **Any** aggregation method. - **3** is the **Off** aggregation method. | ## **Positions** | **Heading** | **Format** | **Notes** | | --- | --- | --- | | idnumber | 1-100 characters | Unique for each hierarchy item. This item ID must not match the ID of any position items in other position frameworks. If an item ID is shared between two items in different frameworks, the item may not be added, or the original **idnumber** may be moved to the framework used in the CSV file. | | timemodified | Unix timestamp | Last time item detail changed. If a Unix timestamp is provided in the source file, the **timemodified** value must not be equal to the previously imported **timemodified** value or the item will not be updated. If left empty or set to 0, the record will be updated. | | frameworkidnumber | 1-100 characters | **idnumber** matching an existing hierarchy framework. | | shortname | 0-100 characters | This field can be empty. | | fullname | 1-1000 characters | The position name. | | parentidnumber | 0-100 characters | Matches the identifier field of another hierarchy item. Empty for the top level. | | description | Up to 1000 characters | This field can be empty. | | typeidnumber | 0-100 characters | Matches the identifier of an existing item type. | | deleted | 0 or 1 | Required when only positions to create, update or delete are provided, otherwise not necessary. 0 means do nothing, and 1 means delete. No action is assumed if empty. | | customfield_[shortname] (optional) | Up to 1000 characters | Custom field data. Multiple columns are allowed, where the column heading matches the type's custom field shortname. If no match, nothing will be updated. If the custom field type is **Date format** then the data in the field needs to match the format defined under *Location > Location settings > CSV import date format.* | | aggregationmethod | 1, 2 or 3 | Note: Competency source only - **1** is the **All** aggregation method. - **2** is the **Any** aggregation method. - **3** is the **Off** aggregation method. | ## **Users** When the suspended field has a default value then erasing existing data in the field will mean the default value will be stored in the field. | **Option** | **Format** | **Notes** | | --- | --- | --- | | idnumber | 1-100 characters | Unique for all users and never changes for a given user. Use the value shown in the user's profile **ID number optional field**. Check the **ID number** value exists for existing users if you want to update existing users' profile fields. | | username | 1-100 characters | Unique for all users. | | timemodified | Unix timestamp | Last time item detail changed. If a Unix timestamp is provided in the source file, the **timemodified** value must not be equal to the previously imported **timemodified** value or the item will not be updated. If left empty or set to 0, the record will be updated. | | deleted suspended | 0 or 1 0 or 1 | Required when only users to create, update or delete/suspend are provided, otherwise not necessary. 0 means do nothing, and 1 means delete/suspend. No action is assumed if empty. However, when an empty suspended field is included in the user source for new records and the **Empty strings erase existing data** option has been chosen, the added user gets the default value of **Active**. The erasing of the data doesn't mean there is no value in the field if the field has a default value. | | firstname | 1-100 characters | No leading or trailing space characters. | | lastname | 1-100 characters | No leading or trailing space characters. | | firstnamephonetic (optional) | 1-100 characters | No leading or trailing space characters. | | lastnamephonetic (optional) | 1-100 characters | No leading or trailing space characters. | | middlename (optional) | 1-100 characters | No leading or trailing space characters. | | alternatename (optional) | 1-100 characters | No leading or trailing space characters. | | email | Valid email address, max 100 chars | Unique for each user. | | emailstop | 0 or 1 | Disables non-essential system-generated email notifications. | | country | 2 character ISO 3166 country code (e.g. NZ for New Zealand) | - | | city | 120 characters | - | | timezone (optional) | 1-100 characters | A location-based time zone identifier, e.g. America/New_York, Europe/London, Asia/Singapore, etc. See [http://us.php.net/manual/en/timezones.php](http://us.php.net/manual/en/timezones.php) for a list of all location-based time zones. | | lang (optional) | 1-30 characters | Two-char ISO 639-1 code or a specific language pack code (e.g. en_us for US English). | | description (optional) | 1-1000 characters | - | | url (optional) | 1-200 characters | - | | institution (optional) | 1-40 characters | - | | department (optional) | 1-30 characters | - | | phone1 (optional) | 1-20 characters | - | | phone2 (optional) | 1-20 characters | - | | address (optional) | 1-70 characters | - | | tenantmember (optional) | The ID number of the tenant the user should be a member of. | Note that you can't include the same tenant ID for both the **tenantmember** and **tenantparticipant** columns, as a user can't be a member and participant in the same tenant. | | tenantparticipant (optional) | The ID number of the tenant the user should be a participant in. | You can assign each user as a participant in multiple tenants by adding a comma-separated list of tenant **idnumbers** (e.g. **"tenantid1,tenantid2,tenantid3"**) to the **tenantparticipant** column. Note that you can't include the same tenant ID for both the **tenantmember** and **tenantparticipant** columns, as a user can't be a member and participant in the same tenant. | | auth (optional) | This is the list of default authentication types in Totara. Make sure the plugin is enabled before using. If using a custom authentication plugin then use the name of that plugin for this field. | | **Format:** | **Authentication type:** | | manual | Manual accounts | | nologin | No login | | email | Email-based self-registration | | cas | CAS server (SSO) | | db | External database | | fc | FirstClass server | | gauth | Google Openid Authentication | | imap | IMAP server | | ldap | LDAP server | | mnet | MNet authentication | | nntp | NNTP server | | none | No authentication | | pam | PAM (Pluggable Authentication Modules) | | pop3 | POP3 server | | radius | RADIUS server | | shibboleth | Shibboleth | | webservice | Web services authentication | | oauth2 | OAuth 2 | | ssosaml | SAML SSO | | password (optional) | 0-32 characters | If the password column is included and the CSV file has an empty password field (or if the password column is not included) then a welcome email is sent allowing the user to create their own password. Note that this only works when adding new users. If you are adding a large number of new users without passwords please note that this will result in a large number of emails being sent. | | customfield_[shortname] (optional) | 1-1000 characters | Custom field data. Multiple columns allowed, where the column heading matches an existing user custom field **shortname**. If no match, nothing will be updated. If the custom field type is **D****ate/Time format** then the data in the field needs to either be a timestamp (unix), or a date in the format given by the **csvdateformat** e.g. **dd/mm/yyyy** You can check the **csvdateformat** config setting under *Q**uick-access menu >* *Localisation > Location settings > CSV import date format.* | ## Export When exporting competencies, positions, organisations or goals, the behaviour of custom field types is as per the table below. Hierarchy exports are available when viewing all competencies, positions, organisations or goals frameworks, or when viewing a specific framework. | **Custom field type** | **Export** | **Import** | | --- | --- | --- | | Checkbox | 1 for checked, 0 for not checked. | Same as export. | | Date/time | A timestamp. | Either a timestamp, or a date in a format given by the **csvdateformat** config setting. | | File | The name of the file. | File custom fields cannot be imported. | | Location | The address. | Same as export. | | Menu | The text of the selected value. | Same as export. | | Multi-select | Within quotes, a comma-separated list of the selected values. | Same as export. | | Text area | The full value, including HTML tags. | Same as export. | | Text input | The value itself. | Same as export. | | URL | The URL itself. The display text or checkbox value for opening in a new window are not included. | Same as export. | Join the [Totara Community](https://totara.community/) for more resources to help you get the most out of Totara. © Copyright 2026 Totara Learning Solutions. All rights reserved.