Note: You are currently viewing documentation for Moodle 1.9. Up-to-date documentation for the latest stable version is available here: Upload users.

Upload users: Difference between revisions

From MoodleDocs
(discussion link added)
No edit summary
 
(41 intermediate revisions by 22 users not shown)
Line 2: Line 2:




The upload users page allows you to import a list of users via a text file. Moodle creates an account for each user and, if you want, can also enrol students in courses and arrange them in groups.
[[Image:Upload users preview.png|thumb|Upload users preview in Moodle 1.9]]
Firstly, note that it is usually not necessary to import users in bulk - to keep maintenance work down you should first explore forms of authentication that do not require manual maintenance, such as [[External database authentication|connecting to existing external databases]] or letting the [[Internal enrolment|users create their own accounts]]. See [[Manage authentication]] for more information.


The user data text file must follow a certain format, as described below.
If you are sure you want to import multiple user accounts from a text file, then you need to format your text file as follows:
 
 
==Upload users file format==
 
* Each line contains fields '''separated''' by commas (or other delimiters) without quotes (") and no trailing delimiter
* The first line is special, and contains fieldnames defining the format for the rest of the file.
 
*'''Required fields''':  In any order
:<p><code>username, password, firstname, lastname, email</code>
:Validity checks are performed for:
#<code>username</code> can only contain alphabetical '''lowercase''' letters , numbers, hypen '-', underscore '_', period '.', or at-sign '@'
#<code>Password</code> should meet the requirements for the site's [[Site_policies#Password_policy|Password policy]]. .To force password change, set the password field to <code>changeme</code>.
#<code>email</code> is in the form: ''name@example.com'' .</p>
 
*'''Optional fields''': To provide values other than the default include one or more of these
:<p><code>institution, department, city, country, lang, auth, ajax, timezone, idnumber, icq, phone1, phone2, address, url, description, mailformat, maildisplay, htmleditor, autosubscribe, emailstop</code></p>
 
*'''Custom profile field names''': (Optional). xxxxx is the real custom user profile field name (i.e. the unique shortname)
:<p><code>profile_field_xxxxx</code></p>
: Create the custom fields BEFORE importing. Use the standard header. The "shortname" for your custom field is xxxxx. The first record must include "profile_field_xxxxx".
:'''Example''': To create a custom field "genre", you must write a shortname "genre" in the new field, and write "profile_field_genre" in the header of the .csv file.
 
*'''Special fields''': Used for changing of usernames or deleting of users
:<p><code>oldusername</code>, <code>deleted</code></p>
*'''Enrolment fields''': (Optional):
:<p><code>course1, type1, role1, group1, enrolperiod1, course2, type2, role2, group2, enrolperiod2</code> etc.
**<code>course</code> is the "shortname"  if present the user will be enrolled in those courses.
** <code>type</code> refers to the role to be used for associated course enrolment. Value 1 is default course role, 2 is legacy Teacher role and 3 is legacy Non-editing Teacher.
** You can use role field instead to specify roles directly - use either role short name or id (numeric names of roles are not supported).
** Users may be also assigned to groups in course (group1 in course1, group2 in course2, etc.).
*** A group is identified by name or id (numeric group names are not supported).
** From Moodle 2.0, you can set the enrolment duration, in days, for each course (<code>enrolperiod1</code> for <code>course1</code>, <code>enrolperiod2</code> for <code>course2</code>, etc.).
 
Commas within  a field must be encoded as &#44 - the script will decode these back to commas.
 
For Boolean fields, use <code>0</code> for false and <code>1</code> for true.
 
Turn email off: <code>emailstop</code> set to <CODE>1</CODE> if the email address should be disabled (default: email is enabled):
 
To prevent users from receiving a large number of emails from courses or forced subscription forums use the '''maildigest'''.  The options for this field are 0 = No digest, 1 = Complete digest and 2 = Digest with just subjects.
 
Here is an example of a valid upload file:
 
<code>username, password, firstname, lastname, email, course1, group1<br />
jonest, verysecret, Tom, Jones, jonest@someplace.edu, math102, Section 1<br />
reznort, somesecret, Trent, Reznor, reznort@someplace.edu,math102, Section 3</code>
 
==Updating existing accounts==
By default Moodle  creates new user accounts, and skips lines where the <code>username</code> matches an existing account. Set "Upload Type" to '''Add  new and update existing accounts''', and existing user account will be updated.


Include  fieldname <code>oldusername</code> to updating existing accounts and change usernames.  In the preview options, Set "Allow renames" to '''Yes''.
'''Warning''': errors updating existing accounts can affect your users badly. Be careful when using the options to update.


==Flat file format==
==After preview==
After the preprocessing, depending on the contents of the upload, the following may be available before final user creation
*Settings
** New user password
** Existing user details
** Existing user password
** Allow renames
** Allow deletes
** Prevent email addess duplicates
** Select for bulk operations


Users may be imported, enrolled on courses and organised into groups via flat file.
* Default values
** Authentication method: Manual account |no login | EMail-based self-registration
** Email display: Allow only other course members to see my email address | hide .. from everyone | allow anyone ...
** Email format Pretty HTML | plain text
** Email digest type: none|complete subjects
** Forum auto-subscribe: no |yes when  I post
** When editing text: use HTML| standard web forms
** AJAX and Javascript: yes|no
** city/town
** country
** timezone
** Preferred language
** Description
** Web page
** ID number
** Institution
** Department
** Phone
** Mobile Phone
** Address


Firstly, note that '''it is usually not necessary to import users in bulk''' - to keep your own maintenance work down you should first explore forms of authentication that do not require manual maintenance, such as connecting to existing external databases or letting the users create their own accounts. See the Authentication section in the admin menus.
==After results ==
Users which were not added, will NOT be auto-enrolled in courses


If you are sure you want to import multiple user accounts from a text file, then you need to format your text file as follows:
----
 
Open another moodle browser and
* Site administration
** Courses
*** Add/edit courses; select the category, and the course
* Course administration
** Users
*** Enrolled Users
**** Enrol users and select the users flagged from other window
 
==Templates==
 
The default values are processed as templates in which the following codes are allowed:
 
* %l - will be replaced by the lastname
* %f - will be replaced by the firstname
* %u - will be replaced by the username
* %% - will be replaced by the %


* Each line of the file contains one record
Between the percent sign (%) and any code letter (l, f or u) the following modifiers are allowed:
* Each record is a series of data separated by commas
* The first record of the file is special, and contains a list of fieldnames. This defines the format of the rest of the file.


:'''Required fieldnames''': these fields must be included in the first record, and defined for each user
* (-) minus sign - the information specified by the code letter will be converted to lowercase
:<p><code>username, password, firstname, lastname, email</code></p>
* (+) plus sign - the information specified by the code letter will be converted to UPPERCASE
* (~) tilde sign - the information specified by the code letter will be converted to Title Case
* a decimal number - the information specified by the code letter will be truncated to that many characters


:'''Default fieldnames''': these are optional - if they are not included then the values are taken from the primary admin
For example, if the firstname is John and the lastname is Doe, the following values will be obtained with the specified templates:
:<p><code>institution, department, city, country, lang, auth, timezone</code></p>


:'''Optional fieldnames''': all of these are completely optional. The course names are the "shortnames" of the courses - if present then the user will be enrolled as students in those courses. Group names must be associated to the corresponding courses, i.e. group1 to course1, etc.
* %l%f = DoeJohn
:<p><code>idnumber, icq, phone1, phone2, address, url, description, mailformat, maildisplay, htmleditor, autosubscribe, course1, course2, course3, course4, course5, group1, group2, group3, group4, group5, type1, type2, type3, type4, type5</code></p>
* %l%1f = DoeJ
* %-l%+f = doeJOHN
* %-f_%-l = john_doe
* http://www.example.com/~%u/ = http://www.example.com/~jdoe/ (if the username is jdoe or %-1f%-l)


{{Moodle 1.7}}:'''Roles amendments''':  Note that since roles have been added since Moodle 1.7 there is a new (better) fieldname to use for enrolments and that is ''role''. You can use ''role'' field instead of the legacy ''type'' field to specify roles directly - use either role short name or id (numeric names of roles are not supported).
Template processing is done only on default values, and not on the values retrieved from the CSV file.


* Commas within the data should be encoded as &#44 - the script will automatically decode these back to commas.
In order to create correct Moodle usernames, the username is always converted to lowercase. Moreover, if the "Allow extended characters in usernames" option in the Site policies page is off, characters different to letters, digits, dash (-) and dot (.) are removed. For example if the firstname is John Jr. and the lastname is Doe, the username %-f_%-l will produce john jr._doe when Allow extended characters in usernames is on, and johnjr.doe when off.
* For Boolean fields, use 0 for false and 1 for true.
* Types are used to tell Moodle whether the user is a student or a teacher if a corresponding course exists (e.g. type2 corresponds to course2). 1 = Student, 2 = Editing Teacher, and 3 = Non-editing Teacher. If type is left blank, or if no course is specified, the user is default to student.
* Force password change: Set the password field for desired users to '''changeme'''.
* Turn email off: The parameter '''emailstop''' must be set to 1 if the email address should not work. If you set it to 0 then the email address is switched on. If you want to have all the email addresses active then you do not need the additional parameter in your upload file.
* For courses, use the short name for the course
* Note: If a user is already registered in the Moodle user database, this script will return the userid number (database index) for that user, and will enrol the user as a student in any of the specified courses WITHOUT updating the other specified data.


Here is an example of a valid import file:
When the "New username duplicate handling" setting is set to Append counter, an auto-increment counter will be append to duplicate usernames produced by the template. For example, if the CSV file contains the users named John Doe, Jane Doe and Jenny Doe without explicit usernames, the default username is %-1f%-l and New username duplicate handling is set to Append counter, then the usernames produced will be jdoe, jdoe2 and jdoe3.


<code>username, password, firstname, lastname, email, lang, idnumber, maildisplay, course1, group1, type1<br />
jonest, verysecret, Tom, Jones, jonest@someplace.edu, en, 3663737, 1, Intro101, Section 1, 1<br />
reznort, somesecret, Trent, Reznor, reznort@someplace.edu, en_us, 6736733, 0, Advanced202, Section 3, 3</code>


(Text copied from [http://moodle.org/help.php?file=uploadusers.html Upload users help file].)


==Updating existing accounts==
==Deleting accounts==


By default Moodle assumes that you will be creating new user accounts, and skips records where the username matches an existing account. However, if you set "Update existing accounts" to '''Yes''', the existing user account will be updated.
If the <code>deleted</code> field is present, users with value 1 for it will be deleted. In this case, all the fields may be omitted, except for <code>username</code>. After uploading the file, be sure to change the "Upload type" to "Update existing users only" and the "Allow deletes" option to "Yes".


When updating existing accounts you can change usernames as well. Set "Allow renames" to '''Yes''' and include in your file a field called <code>oldusername</code>.
Deleting and uploading accounts could be done with a single CSV file. For example, the following file will add the user Tom Jones and delete the user reznort:


'''Warning''': any errors updating existing accounts can affect your users badly. Be careful when using the options to update.
username, firstname, lastname, deleted
jonest, Tom, Jones, 0
reznort, , , 1


==Encoding==
==Encoding==


Prior to Moodle 1.9, the file must have the same encoding as your language pack. In Moodle 1.7 and 1.8 it is always UTF-8.
In Moodle 1.8 the file must be UTF-8. In Moodle 1.9 onwards, the encoding may be selected from a large list, including ISO-8859-1.
 
{{Moodle 1.9}}In Moodle 1.9 onwards, the encoding may be selected.


==Hints==
==Hints==
Line 64: Line 156:
===Spreadsheet===
===Spreadsheet===


If you use a spreadsheet program such as Excel to create your .csv file, check the resulting output in a text editor before you upload it.  It is possible to get trailing commas on each line from an empty field if you have added and deleted columns of information prior to saving the final file. Also check the character encoding.
If you use a spreadsheet program such as Excel to create your .csv file, check the resulting output in a text editor before you upload it.  It is possible to get trailing commas on each line from an empty field if you have added and deleted columns of information prior to saving the final file. Also check the character encoding. A csv file is a simple text file (ASCII or Unicode) that can be used to upload user accounts.
 
Excel translates passwords that begin with - (minus) or + (plus) as zero. Even when saving as .csv and saying "Yes" to "Keep this format, and leave out any incompatible features." Check for this before uploading, as a zero halts the upload process.
 
If you use a formula in Excel to create fields (for example, the concatenate function to create a user name), then remember to copy the cells with the formula and use special paste with values checked to make them into an acceptable data for a csv file.


===Country===
===Country===
The country should be written as a two letter code, e.g. BE for Belgium, NL for the Netherlands, and should be written in capitals. If not, it gets abbreviated to two letters, which can cause an invalid country entry in the database.
The country should be written as a two letter code, in capitals. For example, use BE for Belgium or NL for the Netherlands.  Using "be" or "nl" as a country code will result in a database error.
 
:''Tip:''  If you are having trouble working out the two-letter code for a country, you can consult this Moodle source code file /moodle/lang/en_utf8/countries.php [http://cvs.moodle.org/moodle/lang/en_utf8/countries.php?view=markup&pathrev=MOODLE_19_STABLE or click here for a 1.9 STABLE list].
==See also==
ISO Website: [http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm]


== See also ==
Moodle Docs:
*[[Flat file]]
*[[Flat file]]


Line 77: Line 175:
*[http://moodle.org/mod/forum/discuss.php?d=58215 Making Email Optional]
*[http://moodle.org/mod/forum/discuss.php?d=58215 Making Email Optional]
*[http://moodle.org/mod/forum/discuss.php?d=97903 Uploading users to custom roles]
*[http://moodle.org/mod/forum/discuss.php?d=97903 Uploading users to custom roles]
*[http://moodle.org/mod/forum/discuss.php?d=144569 Matriculacion con flat file csv] - discussion in Spanish


[[Category:Authentication]]
[[Category:Authentication]]
Line 85: Line 184:
[[ja:ユーザのアップロード]]
[[ja:ユーザのアップロード]]
[[zh:上传用户]]
[[zh:上传用户]]
[[ru:Загрузка пользователей]]

Latest revision as of 01:41, 14 April 2011

Location: Administration > Users > Accounts > Upload users


Upload users preview in Moodle 1.9

Firstly, note that it is usually not necessary to import users in bulk - to keep maintenance work down you should first explore forms of authentication that do not require manual maintenance, such as connecting to existing external databases or letting the users create their own accounts. See Manage authentication for more information.

If you are sure you want to import multiple user accounts from a text file, then you need to format your text file as follows:


Upload users file format

  • Each line contains fields separated by commas (or other delimiters) without quotes (") and no trailing delimiter
  • The first line is special, and contains fieldnames defining the format for the rest of the file.
  • Required fields: In any order

username, password, firstname, lastname, email

Validity checks are performed for:
  1. username can only contain alphabetical lowercase letters , numbers, hypen '-', underscore '_', period '.', or at-sign '@'
  2. Password should meet the requirements for the site's Password policy. .To force password change, set the password field to changeme.
  3. email is in the form: name@example.com .

  • Optional fields: To provide values other than the default include one or more of these

institution, department, city, country, lang, auth, ajax, timezone, idnumber, icq, phone1, phone2, address, url, description, mailformat, maildisplay, htmleditor, autosubscribe, emailstop

  • Custom profile field names: (Optional). xxxxx is the real custom user profile field name (i.e. the unique shortname)

profile_field_xxxxx

Create the custom fields BEFORE importing. Use the standard header. The "shortname" for your custom field is xxxxx. The first record must include "profile_field_xxxxx".
Example: To create a custom field "genre", you must write a shortname "genre" in the new field, and write "profile_field_genre" in the header of the .csv file.
  • Special fields: Used for changing of usernames or deleting of users

oldusername, deleted

  • Enrolment fields: (Optional):

course1, type1, role1, group1, enrolperiod1, course2, type2, role2, group2, enrolperiod2 etc.

    • course is the "shortname" if present the user will be enrolled in those courses.
    • type refers to the role to be used for associated course enrolment. Value 1 is default course role, 2 is legacy Teacher role and 3 is legacy Non-editing Teacher.
    • You can use role field instead to specify roles directly - use either role short name or id (numeric names of roles are not supported).
    • Users may be also assigned to groups in course (group1 in course1, group2 in course2, etc.).
      • A group is identified by name or id (numeric group names are not supported).
    • From Moodle 2.0, you can set the enrolment duration, in days, for each course (enrolperiod1 for course1, enrolperiod2 for course2, etc.).

Commas within a field must be encoded as &#44 - the script will decode these back to commas.

For Boolean fields, use 0 for false and 1 for true.

Turn email off: emailstop set to 1 if the email address should be disabled (default: email is enabled):

To prevent users from receiving a large number of emails from courses or forced subscription forums use the maildigest. The options for this field are 0 = No digest, 1 = Complete digest and 2 = Digest with just subjects.

Here is an example of a valid upload file:

username, password, firstname, lastname, email, course1, group1
jonest, verysecret, Tom, Jones, jonest@someplace.edu, math102, Section 1
reznort, somesecret, Trent, Reznor, reznort@someplace.edu,math102, Section 3

Updating existing accounts

By default Moodle creates new user accounts, and skips lines where the username matches an existing account. Set "Upload Type" to Add new and update existing accounts, and existing user account will be updated.

Include fieldname oldusername to updating existing accounts and change usernames. In the preview options, Set "Allow renames" to 'Yes. Warning: errors updating existing accounts can affect your users badly. Be careful when using the options to update.

After preview

After the preprocessing, depending on the contents of the upload, the following may be available before final user creation

  • Settings
    • New user password
    • Existing user details
    • Existing user password
    • Allow renames
    • Allow deletes
    • Prevent email addess duplicates
    • Select for bulk operations
  • Default values
    • Authentication method: Manual account |no login | EMail-based self-registration
    • Email display: Allow only other course members to see my email address | hide .. from everyone | allow anyone ...
    • Email format Pretty HTML | plain text
    • Email digest type: none|complete subjects
    • Forum auto-subscribe: no |yes when I post
    • When editing text: use HTML| standard web forms
    • AJAX and Javascript: yes|no
    • city/town
    • country
    • timezone
    • Preferred language
    • Description
    • Web page
    • ID number
    • Institution
    • Department
    • Phone
    • Mobile Phone
    • Address

After results

Users which were not added, will NOT be auto-enrolled in courses


Open another moodle browser and

  • Site administration
    • Courses
      • Add/edit courses; select the category, and the course
  • Course administration
    • Users
      • Enrolled Users
        • Enrol users and select the users flagged from other window

Templates

The default values are processed as templates in which the following codes are allowed:

  • %l - will be replaced by the lastname
  • %f - will be replaced by the firstname
  • %u - will be replaced by the username
  • %% - will be replaced by the %

Between the percent sign (%) and any code letter (l, f or u) the following modifiers are allowed:

  • (-) minus sign - the information specified by the code letter will be converted to lowercase
  • (+) plus sign - the information specified by the code letter will be converted to UPPERCASE
  • (~) tilde sign - the information specified by the code letter will be converted to Title Case
  • a decimal number - the information specified by the code letter will be truncated to that many characters

For example, if the firstname is John and the lastname is Doe, the following values will be obtained with the specified templates:

Template processing is done only on default values, and not on the values retrieved from the CSV file.

In order to create correct Moodle usernames, the username is always converted to lowercase. Moreover, if the "Allow extended characters in usernames" option in the Site policies page is off, characters different to letters, digits, dash (-) and dot (.) are removed. For example if the firstname is John Jr. and the lastname is Doe, the username %-f_%-l will produce john jr._doe when Allow extended characters in usernames is on, and johnjr.doe when off.

When the "New username duplicate handling" setting is set to Append counter, an auto-increment counter will be append to duplicate usernames produced by the template. For example, if the CSV file contains the users named John Doe, Jane Doe and Jenny Doe without explicit usernames, the default username is %-1f%-l and New username duplicate handling is set to Append counter, then the usernames produced will be jdoe, jdoe2 and jdoe3.


Deleting accounts

If the deleted field is present, users with value 1 for it will be deleted. In this case, all the fields may be omitted, except for username. After uploading the file, be sure to change the "Upload type" to "Update existing users only" and the "Allow deletes" option to "Yes".

Deleting and uploading accounts could be done with a single CSV file. For example, the following file will add the user Tom Jones and delete the user reznort:

username, firstname, lastname, deleted
jonest, Tom, Jones, 0
reznort, , , 1 

Encoding

In Moodle 1.8 the file must be UTF-8. In Moodle 1.9 onwards, the encoding may be selected from a large list, including ISO-8859-1.

Hints

Spreadsheet

If you use a spreadsheet program such as Excel to create your .csv file, check the resulting output in a text editor before you upload it. It is possible to get trailing commas on each line from an empty field if you have added and deleted columns of information prior to saving the final file. Also check the character encoding. A csv file is a simple text file (ASCII or Unicode) that can be used to upload user accounts.

Excel translates passwords that begin with - (minus) or + (plus) as zero. Even when saving as .csv and saying "Yes" to "Keep this format, and leave out any incompatible features." Check for this before uploading, as a zero halts the upload process.

If you use a formula in Excel to create fields (for example, the concatenate function to create a user name), then remember to copy the cells with the formula and use special paste with values checked to make them into an acceptable data for a csv file.

Country

The country should be written as a two letter code, in capitals. For example, use BE for Belgium or NL for the Netherlands. Using "be" or "nl" as a country code will result in a database error.

Tip: If you are having trouble working out the two-letter code for a country, you can consult this Moodle source code file /moodle/lang/en_utf8/countries.php or click here for a 1.9 STABLE list.

ISO Website: [1]

See also

Moodle Docs:

Using Moodle forum discussions: