<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peterbulmer</id>
	<title>MoodleDocs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.moodle.org/dev/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Peterbulmer"/>
	<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/Special:Contributions/Peterbulmer"/>
	<updated>2026-08-12T09:58:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:passwordresetpresent.png&amp;diff=41438</id>
		<title>File:passwordresetpresent.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:passwordresetpresent.png&amp;diff=41438"/>
		<updated>2013-07-18T22:06:25Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: Peterbulmer uploaded a new version of &amp;amp;quot;File:passwordresetpresent.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:passwordresetpresent.png&amp;diff=41437</id>
		<title>File:passwordresetpresent.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:passwordresetpresent.png&amp;diff=41437"/>
		<updated>2013-07-18T22:00:59Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: Peterbulmer uploaded a new version of &amp;amp;quot;File:passwordresetpresent.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:passwordresetpresent.png&amp;diff=41436</id>
		<title>File:passwordresetpresent.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:passwordresetpresent.png&amp;diff=41436"/>
		<updated>2013-07-18T21:57:57Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: Peterbulmer uploaded a new version of &amp;amp;quot;File:passwordresetpresent.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:passwordresetnew.png&amp;diff=41435</id>
		<title>File:passwordresetnew.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:passwordresetnew.png&amp;diff=41435"/>
		<updated>2013-07-18T21:57:25Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: Peterbulmer uploaded a new version of &amp;amp;quot;File:passwordresetnew.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41431</id>
		<title>Password Reset Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41431"/>
		<updated>2013-07-18T09:26:33Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The password reset process in Moodle is longer and more invloved than it needs to be.&lt;br /&gt;
&lt;br /&gt;
Currently there are 14 steps in the standard password reset process.  Step 1 is the user clicking the link on the login page, step 2 is the system displaying the password-reset-request form, step3 the user enters their identifier ..... right through to the user being logged in (14).&lt;br /&gt;
&lt;br /&gt;
I think we can reduce this to 8 steps; improving usability without comprimising security.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In both the existing, and proposed solutions, the user starts with the above steps 1-3, but the processes diverge at step 4, before re-converging at the last step (&amp;quot;User Logged in&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Processes side-by-side, step 4 to completion:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Current process&lt;br /&gt;
! Proposed process&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[File:passwordresetpresent.png]]&lt;br /&gt;
| [[File:passwordresetnew.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As I see it the essential steps for password resetting are:&lt;br /&gt;
* Establish who the resetting user (resetter) claims to be (the target user account)&lt;br /&gt;
* Verify that the resetter has access to the target user account&#039;s email inbox&lt;br /&gt;
* Obtain acceptable new password from resetter&lt;br /&gt;
&lt;br /&gt;
The proposed process ticks of all these items.&lt;br /&gt;
&lt;br /&gt;
A few extra details:&lt;br /&gt;
In the proposed reset process, Moodle stores a record of the password resets requested, the one-time token that resulted. The email sent to the user will contain a link to the password setting page. When the user posts the form containing the two copies of the new password, along with the original token, the password is updated, the token deleted, and the user is logged in. There will need to be an admin setting to specify how long to allow for the email sending - (30 min default), and a job to delete tokens that are significantly out of date.&lt;br /&gt;
&lt;br /&gt;
Advantages of the new process are:&lt;br /&gt;
* Only requires one email step&lt;br /&gt;
* Doesn&#039;t send the user any passwords which they don&#039;t end up keeping&lt;br /&gt;
* Doesn&#039;t require the user to copy and paste at any stage.&lt;br /&gt;
* Is fast&lt;br /&gt;
* Secure&lt;br /&gt;
* Aligns well with other site&#039;s password reset routines.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41427</id>
		<title>Password Reset Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41427"/>
		<updated>2013-07-18T02:47:51Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The password reset process in Moodle is longer and more invloved than it needs to be.&lt;br /&gt;
&lt;br /&gt;
Currently there are 14 steps in the standard password reset process.  Step 1 is the user clicking the link on the login page, step 2 is the system displaying the password-reset-request form, step3 the user enters their identifier ..... right through to the user being logged in (14).&lt;br /&gt;
&lt;br /&gt;
I think we can reduce this to 8 steps; improving usability without comprimising security.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In both the existing, and proposed solutions, the user starts with the above steps 1-3, but the processes diverge at step 4, before re-converging at the last step (&amp;quot;User Logged in&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Processes side-by-side, step 4 to completion:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Current process&lt;br /&gt;
! Proposed process&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[File:passwordresetpresent.png]]&lt;br /&gt;
| [[File:passwordresetnew.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As I see it the essential steps for password resetting are:&lt;br /&gt;
* Establish who the resetting user (resetter) claims to be (the target user account)&lt;br /&gt;
* Verify that the resetter has access to the target user account&#039;s email inbox&lt;br /&gt;
* Obtain acceptable new password from resetter&lt;br /&gt;
&lt;br /&gt;
The proposed process ticks of all these items.&lt;br /&gt;
&lt;br /&gt;
A few extra details:&lt;br /&gt;
In the proposed reset process, Moodle stores a record of the password resets requested, the one-time token that resulted. The email sent to the user will contain a link to the password setting page. When the user posts the form containing the two copies of the new password, along with the original token, the password is updated, the token deleted, and the user is logged in. There will need to be an admin setting to specify how long to allow for the email sending - (30 min default), and a job to delete tokens that are significantly out of date.&lt;br /&gt;
&lt;br /&gt;
Advantages of the new process are:&lt;br /&gt;
* Only requires one email step&lt;br /&gt;
* Doesn&#039;t send the user any passwords which they don&#039;t end up keeping&lt;br /&gt;
* Doesn&#039;t require the user to copy and paste at any stage.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41426</id>
		<title>Password Reset Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41426"/>
		<updated>2013-07-18T02:32:51Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The password reset process in Moodle is longer and more invloved than it needs to be.&lt;br /&gt;
&lt;br /&gt;
Currently there are 14 steps in the standard password reset process.  Step 1 is the user clicking the link on the login page, step 2 is the system displaying the password-reset-request form, step3 the user enters their identifier ..... right through to the user being logged in (14). I think we can reduce this to 8 steps; improving usability without comprimising security.&lt;br /&gt;
&lt;br /&gt;
In both the existing, and proposed solutions, the user starts with the above steps 1-3, but the processes diverge at step 4, before re-converging at the last step (&amp;quot;User Logged in&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Processes side-by-side, step 4 to completion:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Current process&lt;br /&gt;
! Proposed process&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[File:passwordresetpresent.png]]&lt;br /&gt;
| [[File:passwordresetnew.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As I see it the essential steps for password resetting are:&lt;br /&gt;
* Establish who the resetting user (resetter) claims to be (the target user account)&lt;br /&gt;
* Verify that the resetter has access to the target user account&#039;s email inbox&lt;br /&gt;
* Obtain acceptable new password from resetter&lt;br /&gt;
&lt;br /&gt;
The proposed process ticks of all these items.&lt;br /&gt;
&lt;br /&gt;
A few extra details:&lt;br /&gt;
In the proposed reset process, Moodle stores a record of the password resets requested, the one-time token that resulted. The email sent to the user will contain a link to the password setting page. When the user posts the form containing the two copies of the new password, along with the original token, the password is updated, the token deleted, and the user is logged in. There will need to be an admin setting to specify how long to allow for the email sending - (30 min default), and a job to delete tokens that are significantly out of date.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41425</id>
		<title>Password Reset Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41425"/>
		<updated>2013-07-18T02:30:06Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The password reset process in Moodle is longer and more invloved than it needs to be.&lt;br /&gt;
&lt;br /&gt;
Currently there are some 14 steps in the standard password reset process from the user clicking the link on the login page (step1), the system displaying the password-reset-request form (step2), the user entering their identifier (step3) ..... right through to the user being logged in (14). I think we can reduce this to 8 steps; improving usability without comprimising security.&lt;br /&gt;
&lt;br /&gt;
In both the existing, and proposed solutions, the user starts with the above steps 1-3, but the processes diverge at step 4, before re-converging at the last step (&amp;quot;User Logged in&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Processes side-by-side, step 4 to completion:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Current process&lt;br /&gt;
! Proposed process&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[File:passwordresetpresent.png]]&lt;br /&gt;
| [[File:passwordresetnew.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
As I see it the essential steps for password resetting are:&lt;br /&gt;
* Establish who the resetting user (resetter) claims to be (the target user account)&lt;br /&gt;
* Verify that the resetter has access to the target user account&#039;s email inbox&lt;br /&gt;
* Obtain acceptable new password from resetter&lt;br /&gt;
&lt;br /&gt;
The proposed process ticks of all these items.&lt;br /&gt;
&lt;br /&gt;
A few extra details:&lt;br /&gt;
In the proposed reset process, Moodle stores a record of the password resets requested, the one-time token that resulted. The email sent to the user will contain a link to the password setting page. When the user posts the form containing the two copies of the new password, along with the original token, the password is updated, the token deleted, and the user is logged in. There will need to be an admin setting to specify how long to allow for the email sending - (30 min default), and a job to delete tokens that are significantly out of date.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41424</id>
		<title>Password Reset Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41424"/>
		<updated>2013-07-18T01:53:09Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The password reset process in Moodle is longer and more invloved than it needs to be.&lt;br /&gt;
&lt;br /&gt;
Currently there are some 14 steps in the standard password reset process from the user clicking the link on the login page (step1), the system displaying the password-reset-request form (step2), the user entering their identifier (step3) ..... right through to the user being logged in (14). I think we can reduce this to 8 steps; improving usability without comprimising security.&lt;br /&gt;
&lt;br /&gt;
In both the existing, and proposed solutions, the user starts with the above steps 1-3, but the processes diverge at step 4, before re-converging at the last step (&amp;quot;User Logged in&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Processes side-by-side, step 4 to completion:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Current process&lt;br /&gt;
! Proposed process&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| [[File:passwordresetpresent.png]]&lt;br /&gt;
| [[File:passwordresetnew.png]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:passwordresetnew.png&amp;diff=41423</id>
		<title>File:passwordresetnew.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:passwordresetnew.png&amp;diff=41423"/>
		<updated>2013-07-18T01:43:08Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41422</id>
		<title>Password Reset Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41422"/>
		<updated>2013-07-18T01:42:36Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The password reset process in Moodle is longer and more invloved than it needs to be.&lt;br /&gt;
&lt;br /&gt;
Currently there are some 14 steps in the standard password reset process from the user clicking the link on the login page (step1), the system displaying the password-reset-request form (step2), the user entering their identifier (step3) ..... right through to the user being logged in (14). I think we can reduce this to 8 steps; improving usability without comprimising security.&lt;br /&gt;
&lt;br /&gt;
In both the existing, and proposed solutions, the user starts with the above steps 1-3, but the processes diverge at step 4, before re-converging at the last step (&amp;quot;User Logged in&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The current process from step 4 to completion:&lt;br /&gt;
&lt;br /&gt;
[[File:passwordresetpresent.png]]&lt;br /&gt;
&lt;br /&gt;
The proposed process from step 4 to completion:&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=File:passwordresetpresent.png&amp;diff=41421</id>
		<title>File:passwordresetpresent.png</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=File:passwordresetpresent.png&amp;diff=41421"/>
		<updated>2013-07-18T01:37:36Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41420</id>
		<title>Password Reset Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41420"/>
		<updated>2013-07-18T01:33:06Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The password reset process in Moodle is longer and more invloved than it needs to be.&lt;br /&gt;
&lt;br /&gt;
Currently there are some 14 steps in the standard password reset process from the user clicking the link on the login page (step1), the system displaying the password-reset-request form (step2), the user entering their identifier (step3) ..... right through to the user being logged in (14). I think we can reduce this to 8 steps; improving usability without comprimising security.&lt;br /&gt;
&lt;br /&gt;
In both the existing, and proposed solutions, the user starts with the above steps 1-3, but the processes diverge at step 4, before re-converging at the last step (&amp;quot;User Logged in&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
The current process from step 4 to 14:&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41419</id>
		<title>Password Reset Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Password_Reset_Proposal&amp;diff=41419"/>
		<updated>2013-07-18T01:30:21Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: Created page with &amp;quot;The password reset process in Moodle is longer and more invloved than it needs to be.  Currently there are some 14 steps in the standard password reset process from the user c...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The password reset process in Moodle is longer and more invloved than it needs to be.&lt;br /&gt;
&lt;br /&gt;
Currently there are some 14 steps in the standard password reset process from the user clicking the link on the login page (step1), the system displaying the password-reset-request form (step2), the user entering their identifier (step3) ..... right through to the user being logged in (14). I think we can reduce this to 8 steps; improving usability without comprimising security.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Recurring_Course_Proposal&amp;diff=35604</id>
		<title>Recurring Course Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Recurring_Course_Proposal&amp;diff=35604"/>
		<updated>2012-09-21T00:50:21Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See MDL-35335&lt;br /&gt;
&lt;br /&gt;
Alternative/complementary proposal to:&lt;br /&gt;
[[Course_Reset_Proposal]]&lt;br /&gt;
&lt;br /&gt;
The central pillar of this proposal is to modify core activity completion so that modules themselves can support recurrence, without (necessarily) requiring them to delete user data.&lt;br /&gt;
&lt;br /&gt;
For courses using recurrence, the course modules will move through the following states:&lt;br /&gt;
* completion_incomplete&lt;br /&gt;
* (user completes activity)&lt;br /&gt;
* completion_complete&lt;br /&gt;
* (separately course completes)&lt;br /&gt;
* (separately course completion gets near to expiry)&lt;br /&gt;
* completion_recurring&lt;br /&gt;
* (user re-completes activity)&lt;br /&gt;
* completion_complete&lt;br /&gt;
&lt;br /&gt;
(The cm completion table will need an extra field timerecurrence to indicate when the CM last recurred). Activities testing user completion will need to consider &#039;recurring&#039; to be equivilent to &#039;incomplete&#039; except for the need to only consider user actions after &#039;timerecurrence&#039;. Eg a requirement that a person complete a quiz, would be assessed as &#039;user must have completed quiz after date 20/09/2012 12:00z&#039; if the state is &#039;recurring&#039;, and timerecurrance is 20/09/2012 12:00z.&lt;br /&gt;
&lt;br /&gt;
Course completion will need extra fields indicating when the completion expires, and &#039;recurring&#039; to indicate whether the user is currently re-taking the course.  Course completions which are &#039;recurring&#039; can be updated with new completion details if course completion criteria are met.&lt;br /&gt;
&lt;br /&gt;
Courses completion will need new fields to contain information about&lt;br /&gt;
* How long a course&#039;s completion is valid for&lt;br /&gt;
* How long before completion expiry the recurrence event will occur (if not manually triggered before)&lt;br /&gt;
* How long before completion expiry a user can manually start recurrance.&lt;br /&gt;
&lt;br /&gt;
When a recurrance event occurs for a particular user for a particular course, the following will happen: &lt;br /&gt;
* copy of course completion record put in archive table&lt;br /&gt;
* course completion record would be marked as recurring for that user&lt;br /&gt;
* relevant course criteria completions deleted, &lt;br /&gt;
* cm_completions set to completion_recurring&lt;br /&gt;
* user emailed to advise them that they are now able to re-take the course (unless manually triggered)&lt;br /&gt;
&lt;br /&gt;
If the alternate [[Course_Reset_Proposal]] is also implemented, then this reset would occur now as well.  Although this should not be necessary except in particular circumstances.&lt;br /&gt;
&lt;br /&gt;
The drive behind this proposal is to allow continuous demonstration of a persons compliance with course completion requirements.  No data needs to be deleted for the user to re-complete the course, and course completion can be continuous - you don&#039;t need to wait for the course to expire before re-completing it.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Recurring_Course_Proposal&amp;diff=35603</id>
		<title>Recurring Course Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Recurring_Course_Proposal&amp;diff=35603"/>
		<updated>2012-09-21T00:45:39Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See MDL-35335&lt;br /&gt;
&lt;br /&gt;
Alternative/complementary proposal to:&lt;br /&gt;
[[Course_Reset_Proposal]]&lt;br /&gt;
&lt;br /&gt;
The central pillar of this proposal is to modify core activity completion so that modules themeselves can support recurrance, without (necessarily) requiring them to delete user data.&lt;br /&gt;
&lt;br /&gt;
For courses using recurrance, the course modules will move through the following states:&lt;br /&gt;
* completion_incomplete&lt;br /&gt;
* (user completes activity)&lt;br /&gt;
* completion_complete&lt;br /&gt;
* (separately course completes)&lt;br /&gt;
* (separately course completion gets near to expiry)&lt;br /&gt;
* completion_recurring&lt;br /&gt;
* (user re-completes activity)&lt;br /&gt;
* completion_complete&lt;br /&gt;
&lt;br /&gt;
(The cm completion table will need an extra field timerecurrance to indicate when the CM last recurred). Activities testing user completion will need to consider &#039;recurring&#039; to be equivilent to &#039;incomplete&#039; except for the need to only consider user actions after &#039;timerecurrance&#039;. Eg a requirement that a person complete a quiz, would be assessed as &#039;user must have completed quiz after date 20/09/2012 12:00z&#039; if the state is &#039;recurring&#039;, and timerecurrance is 20/09/2012 12:00z.&lt;br /&gt;
&lt;br /&gt;
Course completion will need extra fields indicating when the completion expires, and &#039;recurring&#039; to indicate whether the user is currently re-taking the course.  Course completions which are &#039;recurring&#039; can be updated with new completion details if course completion criteria are met.&lt;br /&gt;
&lt;br /&gt;
Courses completion will need new fields to contain information about&lt;br /&gt;
* How long a course&#039;s completion is valid for&lt;br /&gt;
* How long before completion expiry the recurrence event will occur&lt;br /&gt;
&lt;br /&gt;
When a recurrance event occurs for a particular user for a particular course, the following will happen: &lt;br /&gt;
* copy of course completion record put in archive table&lt;br /&gt;
* course completion record would be marked as recurring for that user&lt;br /&gt;
* relevant course criteria completions deleted, &lt;br /&gt;
* cm_completions set to completion_recurring.&lt;br /&gt;
&lt;br /&gt;
If the alternate [[Course_Reset_Proposal]] is also implemented, then this reset would occur now as well.  Although this should not be necessary except in particular circumstances.&lt;br /&gt;
&lt;br /&gt;
The drive behind this proposal is to allow continuous demonstration of a persons compliance with course completion requirements.  No data needs to be deleted for the user to re-complete the course, and course completion can be continuous - you don&#039;t need to wait for the course to expire before re-completing it.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Recurring_Course_Proposal&amp;diff=35602</id>
		<title>Recurring Course Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Recurring_Course_Proposal&amp;diff=35602"/>
		<updated>2012-09-21T00:38:59Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See MDL-35335&lt;br /&gt;
&lt;br /&gt;
Alternative/complementary proposal to:&lt;br /&gt;
[[Course_Reset_Proposal]]&lt;br /&gt;
&lt;br /&gt;
The central pillar of this proposal is to modify core activity completion so that modules themeselves can support recurrance, without (necessarily) requiring them to delete user data.&lt;br /&gt;
&lt;br /&gt;
For courses using recurrance, the course modules will move through the following states:&lt;br /&gt;
* completion_incomplete&lt;br /&gt;
* (user completes activity)&lt;br /&gt;
* completion_complete&lt;br /&gt;
* (separately course completes)&lt;br /&gt;
* (separately course completion gets near to expiry)&lt;br /&gt;
* completion_recurring&lt;br /&gt;
* (user re-completes activity)&lt;br /&gt;
* completion_complete&lt;br /&gt;
&lt;br /&gt;
(The cm completion table will need an extra field timerecurrance to indicate when the CM last recurred). Activities testing user completion will need to consider &#039;recurring&#039; to be equivilent to &#039;incomplete&#039; except for the need to only consider user actions after &#039;timerecurrance&#039;. Eg a requirement that a person complete a quiz, would be assessed as &#039;user must have completed quiz after date 20/09/2012 12:00z&#039; if the state is &#039;recurring&#039;, and timerecurrance is 20/09/2012 12:00z.&lt;br /&gt;
&lt;br /&gt;
Course completion will need extra fields indicating when the completion expires, and &#039;recurring&#039; to indicate whether the user is currently re-taking the course.  Course completions which are &#039;recurring&#039; can be updated with new completion details if course completion criteria are met.&lt;br /&gt;
&lt;br /&gt;
Courses will need new fields to contain information about completion validity duration, and how long before completion expiry the recurrance event should occur.&lt;br /&gt;
&lt;br /&gt;
When a recurrance event occurs for a particular user for a particular course, I envisage that the following would happen: &lt;br /&gt;
* copy of course completion record to be stored in an archive table&lt;br /&gt;
* course completion record would be marked as recurring for that user, &lt;br /&gt;
* relevant course criteria completions deleted, &lt;br /&gt;
* cm_completions set to completion_recurring.&lt;br /&gt;
&lt;br /&gt;
If the alternate [[Course_Reset_Proposal]] is also implemented, then this reset would occur now as well.  Although this should not be necessary except in particular circumstances.&lt;br /&gt;
&lt;br /&gt;
The drive behind this proposal is to allow continuous demonstration of a persons compliance with course completion requirements.  No data needs to be deleted for the user to re-complete the course, and course completion can be continuous - you don&#039;t need to wait for the course to expire before re-completing it.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Recurring_Course_Proposal&amp;diff=35601</id>
		<title>Recurring Course Proposal</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Recurring_Course_Proposal&amp;diff=35601"/>
		<updated>2012-09-21T00:14:27Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: Created page with &amp;quot;See MDL-35335  Alternative/complementary proposal to: Course_Reset_Proposal  The central pillar of this proposal is to modify core activity completion so that modules themese...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See MDL-35335&lt;br /&gt;
&lt;br /&gt;
Alternative/complementary proposal to:&lt;br /&gt;
[[Course_Reset_Proposal]]&lt;br /&gt;
&lt;br /&gt;
The central pillar of this proposal is to modify core activity completion so that modules themeselves can support recurrance, without (necessarily) requiring them to delete user data.&lt;br /&gt;
&lt;br /&gt;
For courses using recurrance, the course modules will move through the following states:&lt;br /&gt;
* completion_incomplete&lt;br /&gt;
* user completes activity&lt;br /&gt;
* completion_complete&lt;br /&gt;
* (separately course completes)&lt;br /&gt;
* (separately course completion gets near to expiry)&lt;br /&gt;
* completion_recurring&lt;br /&gt;
* (user re-completes activity)&lt;br /&gt;
* completion_complete&lt;br /&gt;
&lt;br /&gt;
(The cm completion table will need an extra field timerecurrance to indicate when the CM last recurred). Activities testing user completion will need to consider &#039;recurring&#039; to be equivilent to &#039;incomplete&#039; except for the need to only consider user actions after &#039;timerecurrance&#039;. Eg a requirement that a person complete a quiz, would be assessed as &#039;user must have completed quiz after date 20/09/2012 12:00z&#039; if the state is &#039;recurring&#039;, and timerecurrance is 20/09/2012 12:00z.&lt;br /&gt;
&lt;br /&gt;
Course completion will need extra fields indicating when the completion expires, and &#039;recurring&#039; to indicate whether the user is currently re-taking the course.  Course completions which are &#039;recurring&#039; can be updated with new completion details if course completion criteria are met.&lt;br /&gt;
&lt;br /&gt;
Courses will need new fields to contain information about completion validity duration, and how long before completion expiry the recurrance event should occur.&lt;br /&gt;
&lt;br /&gt;
When a recurrance event occurs for a particular user for a particular course, I envisage that the following would happen: &lt;br /&gt;
* copy of course completion record to be stored in an archive table&lt;br /&gt;
* course completion record would be marked as recurring for that user, &lt;br /&gt;
* relevant course criteria completions deleted, &lt;br /&gt;
* cm_completions set to completion_recurring.&lt;br /&gt;
&lt;br /&gt;
If the alternate [[Course_Reset_Proposal]] is also implemented, then this reset would occur now as well.  Although this should not be necessary except in particular circumstances.&lt;br /&gt;
&lt;br /&gt;
The drive behind this proposal is to allow continuous demonstration of a persons compliance with course completion requirements.  No data needs to be deleted for the user to re-complete the course, and course completion can be continuous - you don&#039;t need to wait for the course to expire before re-completing it.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Turnitin_errors&amp;diff=30951</id>
		<title>Turnitin errors</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Turnitin_errors&amp;diff=30951"/>
		<updated>2011-12-13T04:48:34Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of the Turnitin Codes, and their descriptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Success States 1-99 ==&lt;br /&gt;
*1	General Success State, no errors&lt;br /&gt;
*10	FID 1, FCMD 1 – successful, send to login&lt;br /&gt;
*11	FID 1, FCMD 2 – successful, do not send to login	&lt;br /&gt;
*20	FID 2, FCMD 1 – successful, send to login&lt;br /&gt;
*21	FID 2, FCMD 2 – successful, do not sent to login&lt;br /&gt;
*30	FID 3, FCMD 1 – successful, send to login&lt;br /&gt;
*31	FID 3, FCMD 2 – successful, do not send to login&lt;br /&gt;
*40	FID 4, FCMD 1,5 – successful, redirect user to assignment creation/modification page&lt;br /&gt;
*41	FID 4, FCMD 2 – successful&lt;br /&gt;
*42	FID 4, FCMD 3 – successful&lt;br /&gt;
*43	FID 4, FCMD 4 – successful&lt;br /&gt;
*50	FID 5, FCMD 1 – successful, redirect user to submission page&lt;br /&gt;
*51	FID 5, FCMD 2 - successful&lt;br /&gt;
*60 	FID 6, FCMD 1 - successful&lt;br /&gt;
*61 	FID 6, FCMD 2 - successful&lt;br /&gt;
*70 	FID 7, FCMD 1,2 – successful&lt;br /&gt;
*70	FID 12, FCMD 1 – successful, redirect to administrator statistics page&lt;br /&gt;
*71 	FID 8, FCMD 2 - successful&lt;br /&gt;
*72 	FID 10, FCMD 2 - successful&lt;br /&gt;
*73	FID 11, FCMD 2 – successful&lt;br /&gt;
*74 	FID 0 – successful &lt;br /&gt;
*75 	FID 9, FCMD 2 - successful&lt;br /&gt;
&lt;br /&gt;
== Data Errors 100-199 ==&lt;br /&gt;
*100	Primary account ID missing from URL &lt;br /&gt;
*101	No HTTPS - the URL was not transmitted via HTTPS&lt;br /&gt;
*102 	GMT missing from URL&lt;br /&gt;
*103	GMT malformed - the date/time in the URL is bad&lt;br /&gt;
*104	Email missing from URL&lt;br /&gt;
*105	Email address is not between 5-75 characters&lt;br /&gt;
*106	Email address contains whitespace&lt;br /&gt;
*107 	Email address in URL is malformed&lt;br /&gt;
*108	Password in URL contained whitespace&lt;br /&gt;
*109	Diagnostic value in URL is bad&lt;br /&gt;
*110	MD5 missing from URL&lt;br /&gt;
*111	fcmd missing from URL&lt;br /&gt;
*112	User first name missing from URL or incorrect length&lt;br /&gt;
*113	User last name missing from URL or incorrect length&lt;br /&gt;
*114	Class title missing from URL, or not between 5-50 characters&lt;br /&gt;
*115	Password is not between 6-12 characters&lt;br /&gt;
*116 	fid missing from URL, or does not reference existing function&lt;br /&gt;
*117 	User type missing from URL or is not valid&lt;br /&gt;
*118 	encrypt value in URL is bad or missing&lt;br /&gt;
*119 	Paper author’s first name missing or incorrect length&lt;br /&gt;
*120 	Paper author’s last name missing or incorrect length&lt;br /&gt;
*121	Paper title missing – Please make sure to include a paper title before submitting your paper&lt;br /&gt;
*122 	Paper type missing or invalid&lt;br /&gt;
*123 	Assignment title missing or incorrect length&lt;br /&gt;
*124	ObjectID missing&lt;br /&gt;
*125	Password is required for function&lt;br /&gt;
*126	Date start and date due is required for function&lt;br /&gt;
*127	If one unique ID is used, they must all be used&lt;br /&gt;
*128	The class end date parameter is not in the right format.  Please make sure that the format is in YYYMMDD.”&lt;br /&gt;
*140	Undocumented, but appears to occur when assignment title is too long.  Should probably return either 2302 or 123 in this situation.&lt;br /&gt;
*141    &amp;quot;The value for the a date parameter is invalid&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Turnitin Database Errors 200-299 ==&lt;br /&gt;
*200	Primary account ID for Turnitin not activated to use the API&lt;br /&gt;
*201	IP address validation range for Turnitin not configured&lt;br /&gt;
*202	Primary account entry not active in Turnitin database &lt;br /&gt;
*203	MD5 key missing from Turnitin database&lt;br /&gt;
*204	Class does not exist in Turnitin database.  Please contact you instructor for further details.&lt;br /&gt;
*205	Database error verifying class&lt;br /&gt;
*206	Assignment does not exist in Turnitin database for this class.  The assignment may have been deleted.&lt;br /&gt;
*207	Database error verifying assignment&lt;br /&gt;
*208	User is not enrolled in class&lt;br /&gt;
*209	Database error verifying user’s enrollment in class&lt;br /&gt;
*210	User password does not match user email&lt;br /&gt;
*211	Database error verifying objectID&lt;br /&gt;
*212 	objectID does not exist for this user&lt;br /&gt;
*213 	objectID does not belong to this user &lt;br /&gt;
*214	Filename does not exist for this paper&lt;br /&gt;
*215	This primary account ID is not authorized to use this product&lt;br /&gt;
*216 	Student limit for this account has been reached.  Cannot join student to this class.&lt;br /&gt;
*217	The product for this account has expired.  Please contact your sales agent to renew the product&lt;br /&gt;
*218	Database Error inserting unique ID into the database &#039;&#039;(Note: This may happen on a new install of Moodle if the mdl_assignment ID&#039;s clash with turnitin assignment ID&#039;s in the previous installation. Fix this by increasing the autoincrement for mdl_assignment in the new installation to a number greater than the maximum ID in the old Moodle)&#039;&#039;&lt;br /&gt;
*219	Unique user id in the database does not match submitted uid&lt;br /&gt;
*220	More than one class exists with this title and unique ids must be used in this case&lt;br /&gt;
*221	More than one assignment exists with this title and unique ids must be used in this case&lt;br /&gt;
*222	User is associated with a different external uid.  If you have another user account with the same email address as the user account you are currently using, that could be the cause of the problem.  Please try modifying the email address for your current user account to a unique email address and try again.&lt;br /&gt;
*223	Cannot verify Blackboard user’s identity within Turnitin.  Missing Blackboard user id&lt;br /&gt;
*224	Could not verify user as primary instructor for this course&lt;br /&gt;
*225	Database error checking if student can view reports&lt;br /&gt;
*226	The class you are trying to update could not be found.  Please check to make sure that the class exists.&lt;br /&gt;
*227 	The class you are trying to update has an assignment which ends after the class end date you have specified.  Please change you class end date or modify the assignment.&lt;br /&gt;
*228 	The assignment with the assignment id that you entered does not belong to the class with the class id you entered.  Please check to make sure that you are not using a duplicate assignment id.&lt;br /&gt;
*229 There was an error creating the rollover assignment.&lt;br /&gt;
*230 You have been dropped from this class on the Turnitin end by your instructor. Please contact your instructor if you think you are receiving this message in error.&lt;br /&gt;
*231 There was an error processing your request: please try your action again. Please contact the Turnitin helpdesk if the problem persists.&lt;br /&gt;
*232 Grademark is currently inactive for this account.&lt;br /&gt;
*233 There was an error accessing this Turnitin Assignment because it was created via Course Copy, Snapshot, or some other process, and the original Turnitin Assignment could not be found.&lt;br /&gt;
*234 Could not find class with the given unique ID or title.&lt;br /&gt;
*235 Could not find assignment with the given assignment ID or title.&lt;br /&gt;
*236 Could not retrieve assignment info with the given information.&lt;br /&gt;
*237 Could not retrieve grade for the given object.&lt;br /&gt;
*238 Could not find user with the given userid or email.&lt;br /&gt;
*239 There was an error disabling Anonymous Marking for this submission.&lt;br /&gt;
*240 Migrating of this product is not supported.&lt;br /&gt;
*241 The user does not have the specified role in the class.&lt;br /&gt;
*242 There was an error with the attached file, please make sure it follows the proper format.&lt;br /&gt;
*243 The attached file is not a CSV file.&lt;br /&gt;
*244 The number of files you have selected exceeds the 500 file maximum for bulk download. Please make sure that the number of files you select for bulk download does not exceed 500 files.&lt;br /&gt;
*245 The objectIDs that were provided do not all belong to the same assignment.&lt;br /&gt;
*246 The compression process cannot begin because the students you selected do not have GradeMark files.&lt;br /&gt;
*247 We are compressing a file you previously requested for download. When this compression is complete, you may request another file for download.&lt;br /&gt;
*248 The class you have selected has been deleted.&lt;br /&gt;
&lt;br /&gt;
== Inconsistency Errors 300-399 ==&lt;br /&gt;
*300 	Your IP address does not fall within the range of accepted IP addresses as specified by your Turnitin account administrator.  Please check with your Turnitin account administrator if your IP address needs to be added as an accepted IP address.&lt;br /&gt;
*301	Date/time expired – GMT timestamp used in MD5 calculation is off. API calls must have a GMT within 60 	minutes of the current GMT&lt;br /&gt;
*302	MD5 not authenticated - the MD5 in the URL does not match the MD5 calculated&lt;br /&gt;
&lt;br /&gt;
== Function Errors 400-499 ==&lt;br /&gt;
*400	Creating new user failed&lt;br /&gt;
*401	Unauthorized access - user exists, but does not belong to correct primary account ID or sub-account ID, do not execute function&lt;br /&gt;
*402	User is not an instructor, must be an instructor to run this function&lt;br /&gt;
*403	User is not a student, must be a student to run this function&lt;br /&gt;
*404 	FCMD is not valid&lt;br /&gt;
*405	Class title is not unique&lt;br /&gt;
*406	Creating new class failed in fid 2&lt;br /&gt;
*407	Student failed to join or log in to a class in fid 3&lt;br /&gt;
*408 	Attempt to join new user to account failed&lt;br /&gt;
*409 	Function requires POST request&lt;br /&gt;
*410	Function requires GET request&lt;br /&gt;
*411 	Creating/Updating/Deleting assignment failed in fid 4&lt;br /&gt;
*412	Assignment title is not unique&lt;br /&gt;
*413 	Error while trying to save the paper&lt;br /&gt;
*414	Originality report not generated yet in fid 6, fcmd 1&lt;br /&gt;
*415 	Originality score not available yet in fid 6, fcmd 2&lt;br /&gt;
*416	Error checking if submission existed for user&lt;br /&gt;
*417	Error trying to change user password&lt;br /&gt;
*418	Error trying to delete submission&lt;br /&gt;
*419	Could not create a new assignment.  An assignment with this title already exists for this class and 		instructor.  Please change the assignment title.&lt;br /&gt;
*420	Error trying to build up session data for user/class&lt;br /&gt;
*421	Error trying to retrieve paper submission info for assignment&lt;br /&gt;
*422	Updating user information failed&lt;br /&gt;
*423	Updating user information failed because user email was changed to an address that is already associated with an account&lt;br /&gt;
*424	Updating class title failed&lt;br /&gt;
*425	Error trying to sync grades between servers&lt;br /&gt;
*426	Error trying to sync roster between servers&lt;br /&gt;
*427 	Unable to establish web services session with remove webct server&lt;br /&gt;
*428	Unable to create WebCT gradebook column for assignment&lt;br /&gt;
*429	Web services parameters error&lt;br /&gt;
*430	(This is a general webservices error – there could be a number of different messages that come with it)&lt;br /&gt;
*431	Error trying to connect back to the Blackboard web service.&lt;br /&gt;
*432	Students are not allowed to view reports in this assignment&lt;br /&gt;
*434    The start time you specified is invalid or not formatted correctly (YYYY-MM-DD HH:MM:SS).&lt;br /&gt;
*435    Error trying to grade submission.&lt;br /&gt;
*436 Institution repository is not available for this account, please change the submit_papers_to parameter to either 0 (no repository) or 1 (standards repository).&lt;br /&gt;
*437 The account administrator has set that all papers must be submitted to a repository, please change the submit_papers_to parameter.&lt;br /&gt;
*438 Error trying to set submissions to be stored in a standard repository. The account is using its own private institutional node. Please change the submit_papers_to parameter.&lt;br /&gt;
*439 The institutional check is not available for this account. Please set the institution_check parameter to 0&lt;br /&gt;
*440 Please specify an email for the new instructor for this course.&lt;br /&gt;
*441 New instructor specified doesn’t exist, please create the user first.&lt;br /&gt;
*442 New Instructor is not joined to this account, please join them to the account first.&lt;br /&gt;
*443 Anonymous Marking is enabled for this assignment. Cannot download file until after the assignment post date.&lt;br /&gt;
*444 Usage of this account is not currently high enough to generate meaningful statistics. If you would like more information or would like to see these statistics any way, please contact your Turnitin sales representative.&lt;br /&gt;
*445 User login failed.&lt;br /&gt;
*446 Session ID missing from URL&lt;br /&gt;
*447 Error trying to set user as an instructor for the class.&lt;br /&gt;
*448 Error migrating this account to another product.&lt;br /&gt;
*449 Error removing user from class.&lt;br /&gt;
*450 Cannot remove user from class because the user is the only instructor for the class.&lt;br /&gt;
*451 Error initiating GradeMark Bulk Download.&lt;br /&gt;
&lt;br /&gt;
== Paper Submission Errors 1000-1099 ==&lt;br /&gt;
*1000	The due date for this assignment has passed.  Please see your instructor to request a late submission.&lt;br /&gt;
*1001	You may not submit a paper to this assignment until the assignment start date&lt;br /&gt;
*1002You may not submit a paper to this assignment because the Plagiarism Prevention product is unavailable&lt;br /&gt;
*1003You have reached the maximum limit of 10 papers for the InSite demo account&lt;br /&gt;
*1004Paper author’s first name missing or incorrect length in URL&lt;br /&gt;
*1005Paper author’s last name missing or incorrect length in URL&lt;br /&gt;
*1006Paper title missing&lt;br /&gt;
*1007The file you have uploaded is too big (TurnItIn site has a note that file size may not exceed 10.48576Mb)&lt;br /&gt;
*1008No file uploaded!  Please make sure that you have attached the file that you wish to submit before sending the request&lt;br /&gt;
*1009Invalid file type!  Valid file types are MS Word, Acrobat PDF, Postscript, Text, HTML, WordPerfect (WPD) and Rich Text Format.  Please make sure the format of your file is one of the valid file types.&lt;br /&gt;
*1010You must submit more than 100 characters of non-whitespace&lt;br /&gt;
*1011The paper you are tyring to submit is incorrectly formatted.  There seems to be spaces between each letter in your paper.  Please try submitting again or contact our helpdesk if the problem persists.&lt;br /&gt;
*1012Paper length exceeds limits&lt;br /&gt;
*1013You must submit more than 20 words of text&lt;br /&gt;
*1014You must select an enrolled student as the author of this paper&lt;br /&gt;
*1015You have already submitted a paper to this assignment.  Please contact your instructor to request a resubmission&lt;br /&gt;
*1016This student has already submitted a paper to this assignment.  Please delete the original paper before submitting a new one.&lt;br /&gt;
*1017Paper author&#039;s first name missing or incorrect length in URL&lt;br /&gt;
*1018Paper author&#039;s last name missing or incorrect length in URL&lt;br /&gt;
*1019Paper title exceeds maximum of 200 characters&lt;br /&gt;
*1020 This document cannot be accepted because it contains characters from a character set that is not supported.&lt;br /&gt;
*1021	You have already submitted a paper to this assignment.  Please contact your instructor to request a 	resubmission.&lt;br /&gt;
*1022	This student has already submitted a portfolio item to this assignment.  Please delete the original portfolio 	item before submitting a new one.&lt;br /&gt;
*1023	We&#039;re sorry, but we could not read the PDF you submitted.  Please make sure that the file is not password 	protected and contains selectable text rather than scanned images.&lt;br /&gt;
*1024	The paper you are tyring to submit does not meet our cirteria for a legitimate paper.  Please try submitting 	again or contact our helpdesk if the problem persists.&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation Errors 2025-2324 ==&lt;br /&gt;
*2025	The class name must be between 5-200 characters&lt;br /&gt;
*2026 	The class enrollment password must be between 4-12 characters&lt;br /&gt;
*2027	There was an error processing your request&lt;br /&gt;
*2028	The class end date must be within 6 months of the start date&lt;br /&gt;
*2029	The end date for this class must occur on or after today&lt;br /&gt;
*2030	The end date for this class must occur on or after the start date&lt;br /&gt;
*2031	The end date for this class must occur at least 3 months after the start date&lt;br /&gt;
*2032	There was an error updating the class end date&lt;br /&gt;
*2035	There was an error processing your request&lt;br /&gt;
*2036	There was an error processing your request&lt;br /&gt;
*2100	User first name missing from URL&lt;br /&gt;
*2101	User last name missing from URL&lt;br /&gt;
*2102	Email is missing.  Please make sure that your email address has been set&lt;br /&gt;
*2108   The email address needs to conform to Internet Standard RFC822&lt;br /&gt;
*2109   The email address needs to have a fully qualified domain name.&lt;br /&gt;
*2110	We only allow email addressses with 5-75 characters&lt;br /&gt;
*2111	The email address cannot contain white space&lt;br /&gt;
*2112	Please make sure you are entering a valid email address.  The email address you enter can only contain 	letters, numbers, and the symbols _ (underscore), - (dash), . (period), &#039; (apostrophe), and + (plus).”&lt;br /&gt;
*2300	You have entered an invalid date!&lt;br /&gt;
*2301	You must select a rubric set to user with remediation&lt;br /&gt;
*2302 	The assignment title must be between 2-100 characters&lt;br /&gt;
*2303	The assignment must have a point value between 0 and 1000&lt;br /&gt;
*2304	The assignment instructions must be less than 1000 characters&lt;br /&gt;
*2305	The start date for this assignment must occur on or after today&lt;br /&gt;
*2306	The due date for this assignment must occur on or after the start date&lt;br /&gt;
*2307	The due date for this assignment must occur within 6 months of the start date&lt;br /&gt;
*2308	When creating your assignment, the post date must occur on or before the class end date.  The class end 	date in Turnitin is by default set to 6 months from the day the class was created.  The class end date can be 	chaned in the class update area in Turnitin&lt;br /&gt;
*2309	When creating your assignment, please make sure that the post date is on or after the due date of the 	assignment&lt;br /&gt;
*2310	You must specify a point value for this assignment because this class is using distributed grading&lt;br /&gt;
*2314	When modifying your assignment, please make sure that the post date is on or after the due date of the 	assignment&lt;br /&gt;
*2315	There was an error processing your request&lt;br /&gt;
*2316	There was an error processing your request&lt;br /&gt;
*2317	There was an error processing your request&lt;br /&gt;
*2318	You cannot change the search targets because papers have already been submitted to this assignment.  You must create a new assignment if you would like to change the search targets&lt;br /&gt;
*2319	There was an error processing your request&lt;br /&gt;
*2320	There was an error processing your request&lt;br /&gt;
*2321    When excluding small matches by word, you must enter a positive number&lt;br /&gt;
*2324	 When excluding small matches by percentage, you must enter a number between 1 and 100&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Turnitin_errors&amp;diff=30788</id>
		<title>Turnitin errors</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Turnitin_errors&amp;diff=30788"/>
		<updated>2011-12-02T01:37:30Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of the Turnitin Codes, and their descriptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Success States 1-99 ==&lt;br /&gt;
*1	General Success State, no errors&lt;br /&gt;
*10	FID 1, FCMD 1 – successful, send to login&lt;br /&gt;
*11	FID 1, FCMD 2 – successful, do not send to login	&lt;br /&gt;
*20	FID 2, FCMD 1 – successful, send to login&lt;br /&gt;
*21	FID 2, FCMD 2 – successful, do not sent to login&lt;br /&gt;
*30	FID 3, FCMD 1 – successful, send to login&lt;br /&gt;
*31	FID 3, FCMD 2 – successful, do not send to login&lt;br /&gt;
*40	FID 4, FCMD 1,5 – successful, redirect user to assignment creation/modification page&lt;br /&gt;
*41	FID 4, FCMD 2 – successful&lt;br /&gt;
*42	FID 4, FCMD 3 – successful&lt;br /&gt;
*43	FID 4, FCMD 4 – successful&lt;br /&gt;
*50	FID 5, FCMD 1 – successful, redirect user to submission page&lt;br /&gt;
*51	FID 5, FCMD 2 - successful&lt;br /&gt;
*60 	FID 6, FCMD 1 - successful&lt;br /&gt;
*61 	FID 6, FCMD 2 - successful&lt;br /&gt;
*70 	FID 7, FCMD 1,2 – successful&lt;br /&gt;
*70	FID 12, FCMD 1 – successful, redirect to administrator statistics page&lt;br /&gt;
*71 	FID 8, FCMD 2 - successful&lt;br /&gt;
*72 	FID 10, FCMD 2 - successful&lt;br /&gt;
*73	FID 11, FCMD 2 – successful&lt;br /&gt;
*74 	FID 0 – successful &lt;br /&gt;
*75 	FID 9, FCMD 2 - successful&lt;br /&gt;
&lt;br /&gt;
== Data Errors 100-199 ==&lt;br /&gt;
*100	Primary account ID missing from URL &lt;br /&gt;
*101	No HTTPS - the URL was not transmitted via HTTPS&lt;br /&gt;
*102 	GMT missing from URL&lt;br /&gt;
*103	GMT malformed - the date/time in the URL is bad&lt;br /&gt;
*104	Email missing from URL&lt;br /&gt;
*105	Email address is not between 5-75 characters&lt;br /&gt;
*106	Email address contains whitespace&lt;br /&gt;
*107 	Email address in URL is malformed&lt;br /&gt;
*108	Password in URL contained whitespace&lt;br /&gt;
*109	Diagnostic value in URL is bad&lt;br /&gt;
*110	MD5 missing from URL&lt;br /&gt;
*111	fcmd missing from URL&lt;br /&gt;
*112	User first name missing from URL or incorrect length&lt;br /&gt;
*113	User last name missing from URL or incorrect length&lt;br /&gt;
*114	Class title missing from URL, or not between 5-50 characters&lt;br /&gt;
*115	Password is not between 6-12 characters&lt;br /&gt;
*116 	fid missing from URL, or does not reference existing function&lt;br /&gt;
*117 	User type missing from URL or is not valid&lt;br /&gt;
*118 	encrypt value in URL is bad or missing&lt;br /&gt;
*119 	Paper author’s first name missing or incorrect length&lt;br /&gt;
*120 	Paper author’s last name missing or incorrect length&lt;br /&gt;
*121	Paper title missing – Please make sure to include a paper title before submitting your paper&lt;br /&gt;
*122 	Paper type missing or invalid&lt;br /&gt;
*123 	Assignment title missing or incorrect length&lt;br /&gt;
*124	ObjectID missing&lt;br /&gt;
*125	Password is required for function&lt;br /&gt;
*126	Date start and date due is required for function&lt;br /&gt;
*127	If one unique ID is used, they must all be used&lt;br /&gt;
*128	The class end date parameter is not in the right format.  Please make sure that the format is in YYYMMDD.”&lt;br /&gt;
*140	Undocumented, but appears to occur when assignment title is too long.  Should probably return either 2302 or 123 in this situation.&lt;br /&gt;
&lt;br /&gt;
== Turnitin Database Errors 200-299 ==&lt;br /&gt;
*200	Primary account ID for Turnitin not activated to use the API&lt;br /&gt;
*201	IP address validation range for Turnitin not configured&lt;br /&gt;
*202	Primary account entry not active in Turnitin database &lt;br /&gt;
*203	MD5 key missing from Turnitin database&lt;br /&gt;
*204	Class does not exist in Turnitin database.  Please contact you instructor for further details.&lt;br /&gt;
*205	Database error verifying class&lt;br /&gt;
*206	Assignment does not exist in Turnitin database for this class.  The assignment may have been deleted.&lt;br /&gt;
*207	Database error verifying assignment&lt;br /&gt;
*208	User is not enrolled in class&lt;br /&gt;
*209	Database error verifying user’s enrollment in class&lt;br /&gt;
*210	User password does not match user email&lt;br /&gt;
*211	Database error verifying objectID&lt;br /&gt;
*212 	objectID does not exist for this user&lt;br /&gt;
*213 	objectID does not belong to this user &lt;br /&gt;
*214	Filename does not exist for this paper&lt;br /&gt;
*215	This primary account ID is not authorized to use this product&lt;br /&gt;
*216 	Student limit for this account has been reached.  Cannot join student to this class.&lt;br /&gt;
*217	The product for this account has expired.  Please contact your sales agent to renew the product&lt;br /&gt;
*218	Database Error inserting unique ID into the database &#039;&#039;(Note: This may happen on a new install of Moodle if the mdl_assignment ID&#039;s clash with turnitin assignment ID&#039;s in the previous installation. Fix this by increasing the autoincrement for mdl_assignment in the new installation to a number greater than the maximum ID in the old Moodle)&#039;&#039;&lt;br /&gt;
*219	Unique user id in the database does not match submitted uid&lt;br /&gt;
*220	More than one class exists with this title and unique ids must be used in this case&lt;br /&gt;
*221	More than one assignment exists with this title and unique ids must be used in this case&lt;br /&gt;
*222	User is associated with a different external uid.  If you have another user account with the same email address as the user account you are currently using, that could be the cause of the problem.  Please try modifying the email address for your current user account to a unique email address and try again.&lt;br /&gt;
*223	Cannot verify Blackboard user’s identity within Turnitin.  Missing Blackboard user id&lt;br /&gt;
*224	Could not verify user as primary instructor for this course&lt;br /&gt;
*225	Database error checking if student can view reports&lt;br /&gt;
*226	The class you are trying to update could not be found.  Please check to make sure that the class exists.&lt;br /&gt;
*227 	The class you are trying to update has an assignment which ends after the class end date you have specified.  Please change you class end date or modify the assignment.&lt;br /&gt;
*228 	The assignment with the assignment id that you entered does not belong to the class with the class id you entered.  Please check to make sure that you are not using a duplicate assignment id.&lt;br /&gt;
&lt;br /&gt;
== Inconsistency Errors 300-399 ==&lt;br /&gt;
*300 	Your IP address does not fall within the range of accepted IP addresses as specified by your Turnitin account administrator.  Please check with your Turnitin account administrator if your IP address needs to be added as an accepted IP address.&lt;br /&gt;
*301	Date/time expired – GMT timestamp used in MD5 calculation is off. API calls must have a GMT within 60 	minutes of the current GMT&lt;br /&gt;
*302	MD5 not authenticated - the MD5 in the URL does not match the MD5 calculated&lt;br /&gt;
&lt;br /&gt;
== Function Errors 400-499 ==&lt;br /&gt;
*400	Creating new user failed&lt;br /&gt;
*401	Unauthorized access - user exists, but does not belong to correct primary account ID or sub-account ID, do not execute function&lt;br /&gt;
*402	User is not an instructor, must be an instructor to run this function&lt;br /&gt;
*403	User is not a student, must be a student to run this function&lt;br /&gt;
*404 	FCMD is not valid&lt;br /&gt;
*405	Class title is not unique&lt;br /&gt;
*406	Creating new class failed in fid 2&lt;br /&gt;
*407	Student failed to join or log in to a class in fid 3&lt;br /&gt;
*408 	Attempt to join new user to account failed&lt;br /&gt;
*409 	Function requires POST request&lt;br /&gt;
*410	Function requires GET request&lt;br /&gt;
*411 	Creating/Updating/Deleting assignment failed in fid 4&lt;br /&gt;
*412	Assignment title is not unique&lt;br /&gt;
*413 	Error while trying to save the paper&lt;br /&gt;
*414	Originality report not generated yet in fid 6, fcmd 1&lt;br /&gt;
*415 	Originality score not available yet in fid 6, fcmd 2&lt;br /&gt;
*416	Error checking if submission existed for user&lt;br /&gt;
*417	Error trying to change user password&lt;br /&gt;
*418	Error trying to delete submission&lt;br /&gt;
*419	Could not create a new assignment.  An assignment with this title already exists for this class and 		instructor.  Please change the assignment title.&lt;br /&gt;
*420	Error trying to build up session data for user/class&lt;br /&gt;
*421	Error trying to retrieve paper submission info for assignment&lt;br /&gt;
*422	Updating user information failed&lt;br /&gt;
*423	Updating user information failed because user email was changed to an address that is already associated with an account&lt;br /&gt;
*424	Updating class title failed&lt;br /&gt;
*425	Error trying to sync grades between servers&lt;br /&gt;
*426	Error trying to sync roster between servers&lt;br /&gt;
*427 	Unable to establish web services session with remove webct server&lt;br /&gt;
*428	Unable to create WebCT gradebook column for assignment&lt;br /&gt;
*429	Web services parameters error&lt;br /&gt;
*430	(This is a general webservices error – there could be a number of different messages that come with it)&lt;br /&gt;
*431	Error trying to connect back to the Blackboard web service.&lt;br /&gt;
*432	Students are not allowed to view reports in this assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Paper Submission Errors 1000-1099 ==&lt;br /&gt;
*1000	The due date for this assignment has passed.  Please see your instructor to request a late submission.&lt;br /&gt;
*1001	You may not submit a paper to this assignment until the assignment start date&lt;br /&gt;
*1002You may not submit a paper to this assignment because the Plagiarism Prevention product is unavailable&lt;br /&gt;
*1003You have reached the maximum limit of 10 papers for the InSite demo account&lt;br /&gt;
*1004Paper author’s first name missing or incorrect length in URL&lt;br /&gt;
*1005Paper author’s last name missing or incorrect length in URL&lt;br /&gt;
*1006Paper title missing&lt;br /&gt;
*1007The file you have uploaded is too big (TurnItIn site has a note that file size may not exceed 10.48576Mb)&lt;br /&gt;
*1008No file uploaded!  Please make sure that you have attached the file that you wish to submit before sending the request&lt;br /&gt;
*1009Invalid file type!  Valid file types are MS Word, Acrobat PDF, Postscript, Text, HTML, WordPerfect (WPD) and Rich Text Format.  Please make sure the format of your file is one of the valid file types.&lt;br /&gt;
*1010You must submit more than 100 characters of non-whitespace&lt;br /&gt;
*1011The paper you are tyring to submit is incorrectly formatted.  There seems to be spaces between each letter in your paper.  Please try submitting again or contact our helpdesk if the problem persists.&lt;br /&gt;
*1012Paper length exceeds limits&lt;br /&gt;
*1013You must submit more than 20 words of text&lt;br /&gt;
*1014You must select an enrolled student as the author of this paper&lt;br /&gt;
*1015You have already submitted a paper to this assignment.  Please contact your instructor to request a resubmission&lt;br /&gt;
*1016This student has already submitted a paper to this assignment.  Please delete the original paper before submitting a new one.&lt;br /&gt;
*1017Paper author&#039;s first name missing or incorrect length in URL&lt;br /&gt;
*1018Paper author&#039;s last name missing or incorrect length in URL&lt;br /&gt;
*1019Paper title exceeds maximum of 200 characters&lt;br /&gt;
*1020 This document cannot be accepted because it contains characters from a character set that is not supported.&lt;br /&gt;
*1021	You have already submitted a paper to this assignment.  Please contact your instructor to request a 	resubmission.&lt;br /&gt;
*1022	This student has already submitted a portfolio item to this assignment.  Please delete the original portfolio 	item before submitting a new one.&lt;br /&gt;
*1023	We&#039;re sorry, but we could not read the PDF you submitted.  Please make sure that the file is not password 	protected and contains selectable text rather than scanned images.&lt;br /&gt;
*1024	The paper you are tyring to submit does not meet our cirteria for a legitimate paper.  Please try submitting 	again or contact our helpdesk if the problem persists.&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation Errors 2025-2324 ==&lt;br /&gt;
*2025	The class name must be between 5-200 characters&lt;br /&gt;
*2026 	The class enrollment password must be between 4-12 characters&lt;br /&gt;
*2027	There was an error processing your request&lt;br /&gt;
*2028	The class end date must be within 6 months of the start date&lt;br /&gt;
*2029	The end date for this class must occur on or after today&lt;br /&gt;
*2030	The end date for this class must occur on or after the start date&lt;br /&gt;
*2031	The end date for this class must occur at least 3 months after the start date&lt;br /&gt;
*2032	There was an error updating the class end date&lt;br /&gt;
*2035	There was an error processing your request&lt;br /&gt;
*2036	There was an error processing your request&lt;br /&gt;
*2100	User first name missing from URL&lt;br /&gt;
*2101	User last name missing from URL&lt;br /&gt;
*2102	Email is missing.  Please make sure that your email address has been set&lt;br /&gt;
*2108   The email address needs to conform to Internet Standard RFC822&lt;br /&gt;
*2109   The email address needs to have a fully qualified domain name.&lt;br /&gt;
*2110	We only allow email addressses with 5-75 characters&lt;br /&gt;
*2111	The email address cannot contain white space&lt;br /&gt;
*2112	Please make sure you are entering a valid email address.  The email address you enter can only contain 	letters, numbers, and the symbols _ (underscore), - (dash), . (period), &#039; (apostrophe), and + (plus).”&lt;br /&gt;
*2300	You have entered an invalid date!&lt;br /&gt;
*2301	You must select a rubric set to user with remediation&lt;br /&gt;
*2302 	The assignment title must be between 2-100 characters&lt;br /&gt;
*2303	The assignment must have a point value between 0 and 1000&lt;br /&gt;
*2304	The assignment instructions must be less than 1000 characters&lt;br /&gt;
*2305	The start date for this assignment must occur on or after today&lt;br /&gt;
*2306	The due date for this assignment must occur on or after the start date&lt;br /&gt;
*2307	The due date for this assignment must occur within 6 months of the start date&lt;br /&gt;
*2308	When creating your assignment, the post date must occur on or before the class end date.  The class end 	date in Turnitin is by default set to 6 months from the day the class was created.  The class end date can be 	chaned in the class update area in Turnitin&lt;br /&gt;
*2309	When creating your assignment, please make sure that the post date is on or after the due date of the 	assignment&lt;br /&gt;
*2310	You must specify a point value for this assignment because this class is using distributed grading&lt;br /&gt;
*2314	When modifying your assignment, please make sure that the post date is on or after the due date of the 	assignment&lt;br /&gt;
*2315	There was an error processing your request&lt;br /&gt;
*2316	There was an error processing your request&lt;br /&gt;
*2317	There was an error processing your request&lt;br /&gt;
*2318	You cannot change the search targets because papers have already been submitted to this assignment.  You must create a new assignment if you would like to change the search targets&lt;br /&gt;
*2319	There was an error processing your request&lt;br /&gt;
*2320	There was an error processing your request&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=Turnitin_errors&amp;diff=30683</id>
		<title>Turnitin errors</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=Turnitin_errors&amp;diff=30683"/>
		<updated>2011-11-24T02:59:14Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a list of the Turnitin Codes, and their descriptions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Success States 1-99 ==&lt;br /&gt;
*1	General Success State, no errors&lt;br /&gt;
*10	FID 1, FCMD 1 – successful, send to login&lt;br /&gt;
*11	FID 1, FCMD 2 – successful, do not send to login	&lt;br /&gt;
*20	FID 2, FCMD 1 – successful, send to login&lt;br /&gt;
*21	FID 2, FCMD 2 – successful, do not sent to login&lt;br /&gt;
*30	FID 3, FCMD 1 – successful, send to login&lt;br /&gt;
*31	FID 3, FCMD 2 – successful, do not send to login&lt;br /&gt;
*40	FID 4, FCMD 1,5 – successful, redirect user to assignment creation/modification page&lt;br /&gt;
*41	FID 4, FCMD 2 – successful&lt;br /&gt;
*42	FID 4, FCMD 3 – successful&lt;br /&gt;
*43	FID 4, FCMD 4 – successful&lt;br /&gt;
*50	FID 5, FCMD 1 – successful, redirect user to submission page&lt;br /&gt;
*51	FID 5, FCMD 2 - successful&lt;br /&gt;
*60 	FID 6, FCMD 1 - successful&lt;br /&gt;
*61 	FID 6, FCMD 2 - successful&lt;br /&gt;
*70 	FID 7, FCMD 1,2 – successful&lt;br /&gt;
*70	FID 12, FCMD 1 – successful, redirect to administrator statistics page&lt;br /&gt;
*71 	FID 8, FCMD 2 - successful&lt;br /&gt;
*72 	FID 10, FCMD 2 - successful&lt;br /&gt;
*73	FID 11, FCMD 2 – successful&lt;br /&gt;
*74 	FID 0 – successful &lt;br /&gt;
*75 	FID 9, FCMD 2 - successful&lt;br /&gt;
&lt;br /&gt;
== Data Errors 100-199 ==&lt;br /&gt;
*100	Primary account ID missing from URL &lt;br /&gt;
*101	No HTTPS - the URL was not transmitted via HTTPS&lt;br /&gt;
*102 	GMT missing from URL&lt;br /&gt;
*103	GMT malformed - the date/time in the URL is bad&lt;br /&gt;
*104	Email missing from URL&lt;br /&gt;
*105	Email address is not between 5-75 characters&lt;br /&gt;
*106	Email address contains whitespace&lt;br /&gt;
*107 	Email address in URL is malformed&lt;br /&gt;
*108	Password in URL contained whitespace&lt;br /&gt;
*109	Diagnostic value in URL is bad&lt;br /&gt;
*110	MD5 missing from URL&lt;br /&gt;
*111	fcmd missing from URL&lt;br /&gt;
*112	User first name missing from URL or incorrect length&lt;br /&gt;
*113	User last name missing from URL or incorrect length&lt;br /&gt;
*114	Class title missing from URL, or not between 5-50 characters&lt;br /&gt;
*115	Password is not between 6-12 characters&lt;br /&gt;
*116 	fid missing from URL, or does not reference existing function&lt;br /&gt;
*117 	User type missing from URL or is not valid&lt;br /&gt;
*118 	encrypt value in URL is bad or missing&lt;br /&gt;
*119 	Paper author’s first name missing or incorrect length&lt;br /&gt;
*120 	Paper author’s last name missing or incorrect length&lt;br /&gt;
*121	Paper title missing – Please make sure to include a paper title before submitting your paper&lt;br /&gt;
*122 	Paper type missing or invalid&lt;br /&gt;
*123 	Assignment title missing or incorrect length&lt;br /&gt;
*124	ObjectID missing&lt;br /&gt;
*125	Password is required for function&lt;br /&gt;
*126	Date start and date due is required for function&lt;br /&gt;
*127	If one unique ID is used, they must all be used&lt;br /&gt;
*128	The class end date parameter is not in the right format.  Please make sure that the format is in YYYMMDD.”&lt;br /&gt;
*140	Undocumented, but appears to occur when assignment title is too long.  Should probably return either 2302 or 123 in this situation.&lt;br /&gt;
&lt;br /&gt;
== Turnitin Database Errors 200-299 ==&lt;br /&gt;
*200	Primary account ID for Turnitin not activated to use the API&lt;br /&gt;
*201	IP address validation range for Turnitin not configured&lt;br /&gt;
*202	Primary account entry not active in Turnitin database &lt;br /&gt;
*203	MD5 key missing from Turnitin database&lt;br /&gt;
*204	Class does not exist in Turnitin database.  Please contact you instructor for further details.&lt;br /&gt;
*205	Database error verifying class&lt;br /&gt;
*206	Assignment does not exist in Turnitin database for this class.  The assignment may have been deleted.&lt;br /&gt;
*207	Database error verifying assignment&lt;br /&gt;
*208	User is not enrolled in class&lt;br /&gt;
*209	Database error verifying user’s enrollment in class&lt;br /&gt;
*210	User password does not match user email&lt;br /&gt;
*211	Database error verifying objectID&lt;br /&gt;
*212 	objectID does not exist for this user&lt;br /&gt;
*213 	objectID does not belong to this user &lt;br /&gt;
*214	Filename does not exist for this paper&lt;br /&gt;
*215	This primary account ID is not authorized to use this product&lt;br /&gt;
*216 	Student limit for this account has been reached.  Cannot join student to this class.&lt;br /&gt;
*217	The product for this account has expired.  Please contact your sales agent to renew the product&lt;br /&gt;
*218	Database Error inserting unique ID into the database &#039;&#039;(Note: This may happen on a new install of Moodle if the mdl_assignment ID&#039;s clash with turnitin assignment ID&#039;s in the previous installation. Fix this by increasing the autoincrement for mdl_assignment in the new installation to a number greater than the maximum ID in the old Moodle)&#039;&#039;&lt;br /&gt;
*219	Unique user id in the database does not match submitted uid&lt;br /&gt;
*220	More than one class exists with this title and unique ids must be used in this case&lt;br /&gt;
*221	More than one assignment exists with this title and unique ids must be used in this case&lt;br /&gt;
*222	User is associated with a different external uid.  If you have another user account with the same email address as the user account you are currently using, that could be the cause of the problem.  Please try modifying the email address for your current user account to a unique email address and try again.&lt;br /&gt;
*223	Cannot verify Blackboard user’s identity within Turnitin.  Missing Blackboard user id&lt;br /&gt;
*224	Could not verify user as primary instructor for this course&lt;br /&gt;
*225	Database error checking if student can view reports&lt;br /&gt;
*226	The class you are trying to update could not be found.  Please check to make sure that the class exists.&lt;br /&gt;
*227 	The class you are trying to update has an assignment which ends after the class end date you have specified.  Please change you class end date or modify the assignment.&lt;br /&gt;
*228 	The assignment with the assignment id that you entered does not belong to the class with the class id you entered.  Please check to make sure that you are not using a duplicate assignment id.&lt;br /&gt;
&lt;br /&gt;
== Inconsistency Errors 300-399 ==&lt;br /&gt;
*300 	Your IP address does not fall within the range of accepted IP addresses as specified by your Turnitin account administrator.  Please check with your Turnitin account administrator if your IP address needs to be added as an accepted IP address.&lt;br /&gt;
*301	Date/time expired – GMT timestamp used in MD5 calculation is off. API calls must have a GMT within 60 	minutes of the current GMT&lt;br /&gt;
*302	MD5 not authenticated - the MD5 in the URL does not match the MD5 calculated&lt;br /&gt;
&lt;br /&gt;
== Function Errors 400-499 ==&lt;br /&gt;
*400	Creating new user failed&lt;br /&gt;
*401	Unauthorized access - user exists, but does not belong to correct primary account ID or sub-account ID, do not execute function&lt;br /&gt;
*402	User is not an instructor, must be an instructor to run this function&lt;br /&gt;
*403	User is not a student, must be a student to run this function&lt;br /&gt;
*404 	FCMD is not valid&lt;br /&gt;
*405	Class title is not unique&lt;br /&gt;
*406	Creating new class failed in fid 2&lt;br /&gt;
*407	Student failed to join or log in to a class in fid 3&lt;br /&gt;
*408 	Attempt to join new user to account failed&lt;br /&gt;
*409 	Function requires POST request&lt;br /&gt;
*410	Function requires GET request&lt;br /&gt;
*411 	Creating/Updating/Deleting assignment failed in fid 4&lt;br /&gt;
*412	Assignment title is not unique&lt;br /&gt;
*413 	Error while trying to save the paper&lt;br /&gt;
*414	Originality report not generated yet in fid 6, fcmd 1&lt;br /&gt;
*415 	Originality score not available yet in fid 6, fcmd 2&lt;br /&gt;
*416	Error checking if submission existed for user&lt;br /&gt;
*417	Error trying to change user password&lt;br /&gt;
*418	Error trying to delete submission&lt;br /&gt;
*419	Could not create a new assignment.  An assignment with this title already exists for this class and 		instructor.  Please change the assignment title.&lt;br /&gt;
*420	Error trying to build up session data for user/class&lt;br /&gt;
*421	Error trying to retrieve paper submission info for assignment&lt;br /&gt;
*422	Updating user information failed&lt;br /&gt;
*423	Updating user information failed because user email was changed to an address that is already associated with an account&lt;br /&gt;
*424	Updating class title failed&lt;br /&gt;
*425	Error trying to sync grades between servers&lt;br /&gt;
*426	Error trying to sync roster between servers&lt;br /&gt;
*427 	Unable to establish web services session with remove webct server&lt;br /&gt;
*428	Unable to create WebCT gradebook column for assignment&lt;br /&gt;
*429	Web services parameters error&lt;br /&gt;
*430	(This is a general webservices error – there could be a number of different messages that come with it)&lt;br /&gt;
*431	Error trying to connect back to the Blackboard web service.&lt;br /&gt;
*432	Students are not allowed to view reports in this assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Paper Submission Errors 1000-1099 ==&lt;br /&gt;
*1000	The due date for this assignment has passed.  Please see your instructor to request a late submission.&lt;br /&gt;
*1001	You may not submit a paper to this assignment until the assignment start date&lt;br /&gt;
*1002You may not submit a paper to this assignment because the Plagiarism Prevention product is unavailable&lt;br /&gt;
*1003You have reached the maximum limit of 10 papers for the InSite demo account&lt;br /&gt;
*1004Paper author’s first name missing or incorrect length in URL&lt;br /&gt;
*1005Paper author’s last name missing or incorrect length in URL&lt;br /&gt;
*1006Paper title missing&lt;br /&gt;
*1007The file you have uploaded is too big (TurnItIn site has a note that file size may not exceed 10.48576Mb)&lt;br /&gt;
*1008No file uploaded!  Please make sure that you have attached the file that you wish to submit before sending the request&lt;br /&gt;
*1009Invalid file type!  Valid file types are MS Word, Acrobat PDF, Postscript, Text, HTML, WordPerfect (WPD) and Rich Text Format.  Please make sure the format of your file is one of the valid file types.&lt;br /&gt;
*1010You must submit more than 100 characters of non-whitespace&lt;br /&gt;
*1011The paper you are tyring to submit is incorrectly formatted.  There seems to be spaces between each letter in your paper.  Please try submitting again or contact our helpdesk if the problem persists.&lt;br /&gt;
*1012Paper length exceeds limits&lt;br /&gt;
*1013You must submit more than 20 words of text&lt;br /&gt;
*1014You must select an enrolled student as the author of this paper&lt;br /&gt;
*1015You have already submitted a paper to this assignment.  Please contact your instructor to request a resubmission&lt;br /&gt;
*1016This student has already submitted a paper to this assignment.  Please delete the original paper before submitting a new one.&lt;br /&gt;
*1017Paper author&#039;s first name missing or incorrect length in URL&lt;br /&gt;
*1018Paper author&#039;s last name missing or incorrect length in URL&lt;br /&gt;
*1019Paper title exceeds maximum of 200 characters&lt;br /&gt;
*1020 This document cannot be accepted because it contains characters from a character set that is not supported.&lt;br /&gt;
*1021	You have already submitted a paper to this assignment.  Please contact your instructor to request a 	resubmission.&lt;br /&gt;
*1022	This student has already submitted a portfolio item to this assignment.  Please delete the original portfolio 	item before submitting a new one.&lt;br /&gt;
*1023	We&#039;re sorry, but we could not read the PDF you submitted.  Please make sure that the file is not password 	protected and contains selectable text rather than scanned images.&lt;br /&gt;
*1024	The paper you are tyring to submit does not meet our cirteria for a legitimate paper.  Please try submitting 	again or contact our helpdesk if the problem persists.&lt;br /&gt;
&lt;br /&gt;
== Assignment Creation Errors 2025-2324 ==&lt;br /&gt;
*2025	The class name must be between 5-200 characters&lt;br /&gt;
*2026 	The class enrollment password must be between 4-12 characters&lt;br /&gt;
*2027	There was an error processing your request&lt;br /&gt;
*2028	The class end date must be within 6 months of the start date&lt;br /&gt;
*2029	The end date for this class must occur on or after today&lt;br /&gt;
*2030	The end date for this class must occur on or after the start date&lt;br /&gt;
*2031	The end date for this class must occur at least 3 months after the start date&lt;br /&gt;
*2032	There was an error updating the class end date&lt;br /&gt;
*2035	There was an error processing your request&lt;br /&gt;
*2036	There was an error processing your request&lt;br /&gt;
*2100	User first name missing from URL&lt;br /&gt;
*2101	User last name missing from URL&lt;br /&gt;
*2102	Email is missing.  Please make sure that your email address has been set&lt;br /&gt;
*2108   The email address needs to conform to Internet Standard RFC822&lt;br /&gt;
*2110	We only allow email addressses with 5-75 characters&lt;br /&gt;
*2111	The email address cannot contain white space&lt;br /&gt;
*2112	Please make sure you are entering a valid email address.  The email address you enter can only contain 	letters, numbers, and the symbols _ (underscore), - (dash), . (period), &#039; (apostrophe), and + (plus).”&lt;br /&gt;
*2300	You have entered an invalid date!&lt;br /&gt;
*2301	You must select a rubric set to user with remediation&lt;br /&gt;
*2302 	The assignment title must be between 2-100 characters&lt;br /&gt;
*2303	The assignment must have a point value between 0 and 1000&lt;br /&gt;
*2304	The assignment instructions must be less than 1000 characters&lt;br /&gt;
*2305	The start date for this assignment must occur on or after today&lt;br /&gt;
*2306	The due date for this assignment must occur on or after the start date&lt;br /&gt;
*2307	The due date for this assignment must occur within 6 months of the start date&lt;br /&gt;
*2308	When creating your assignment, the post date must occur on or before the class end date.  The class end 	date in Turnitin is by default set to 6 months from the day the class was created.  The class end date can be 	chaned in the class update area in Turnitin&lt;br /&gt;
*2309	When creating your assignment, please make sure that the post date is on or after the due date of the 	assignment&lt;br /&gt;
*2310	You must specify a point value for this assignment because this class is using distributed grading&lt;br /&gt;
*2314	When modifying your assignment, please make sure that the post date is on or after the due date of the 	assignment&lt;br /&gt;
*2315	There was an error processing your request&lt;br /&gt;
*2316	There was an error processing your request&lt;br /&gt;
*2317	There was an error processing your request&lt;br /&gt;
*2318	You cannot change the search targets because papers have already been submitted to this assignment.  You must create a new assignment if you would like to change the search targets&lt;br /&gt;
*2319	There was an error processing your request&lt;br /&gt;
*2320	There was an error processing your request&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12069</id>
		<title>mnet phase2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12069"/>
		<updated>2008-12-23T04:35:18Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Jargon ===&lt;br /&gt;
* IDP (Identity Provider): An application (Moodle) fulfiling the functionality of tying a user to a profile.&lt;br /&gt;
* IDP-A IDP Administrator&lt;br /&gt;
* CP (Content provider): An application (Moodle) fulfiling the functionality of course material host.&lt;br /&gt;
* CP-A CP Administrator&lt;br /&gt;
&lt;br /&gt;
== Role Assignments ==&lt;br /&gt;
In existing mnet (Moodle &amp;lt; v2.0) IDP-A selected a course published by a CP, then they identified local users that they wanted to be enrolled in that course.  The CP would then assign a role to the selected users in the context of the course specified.  The role assigned was &amp;quot;default role for users in a course&amp;quot; (usually &#039;&#039;student&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
The current setup has a number of problems:&lt;br /&gt;
* No support for allocating more than one role&lt;br /&gt;
* No support for any form of automated enrolment/role assignment&lt;br /&gt;
* Dedicated tables for storing information about mnet courses, and enrolments&lt;br /&gt;
* No allowance made to align grades output by the CP with the enrolment of the student in the course.&lt;br /&gt;
&lt;br /&gt;
=== Proposal ===&lt;br /&gt;
Proposal I&#039;d like to put to a client addresses all these points in the following ways:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Allow CP-A to specify that they trust the IDP-A to allocate more than just the student role&#039;&#039;&#039;. This information would be set per mnet peer, and should probably default to allowing students, denying everything else (the setting which matches most pre-existing configurations).  This information would be stored in a new table mdl_mnet_authorised_roles, CP-A would tick all roles they trust the IDP-A to allocate.&lt;br /&gt;
* Allow IDP-A to map their system roles to permitted CP roles on a per-mnet-peer basis. Most commonly the IDP-A would map &#039;teacher&#039; to &#039;CP_teacher&#039;, &#039;student&#039; to &#039;CP_student&#039; and &#039;non-editing teacher&#039; to &#039;CP_non-editing teacher&#039; (the &#039;CP_&#039; recognising that the roles are not necessarily exactly the same).  This information would be stored in a new table mdl_mnet_role_mapping&lt;br /&gt;
* &#039;&#039;&#039;Allow all pre-existing enrolment mechanisms to enrol users in remote courses.&#039;&#039;&#039; &lt;br /&gt;
** Remove the use of tables dedicated to tracking remote courses, and remote course enrollments, &lt;br /&gt;
** Store remote course information in mdl_course (like local courses) with an additional field (&#039;mnetlinkid&#039; or similar) &lt;br /&gt;
** New table mdl_mnet_course_link: IDP-A would specify which remote course they want a local course to link to, in effect converting the local course to a shell for the remote course.  All enrolment plugins would continue to assign/unassign roles roles to the course context, with the hook being that they would spawn a request to the remote moodle, adding the user to the remote course.  Users attempting to view the shell would be told where to jump (on the remote peer)  &lt;br /&gt;
** Add additional capability &#039;can see shell course&#039; - allocated by default to at least the administrator role, allowing them to see the contents of the local course without being redirected to jump.php to see the real thing (this allows them to manually add/remove students from the course (among other things))&lt;br /&gt;
&lt;br /&gt;
Storing information about the remote course in the same place as local courses has the additional benefit that grading information for a student which is returned from the CP can be linked against the appropriate course enrolment for that student.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12068</id>
		<title>mnet phase2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12068"/>
		<updated>2008-12-23T04:13:47Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Jargon ===&lt;br /&gt;
* IDP (Identity Provider): An application (Moodle) fulfiling the functionality of tying a user to a profile.&lt;br /&gt;
* IDP-A IDP Administrator&lt;br /&gt;
* CP (Content provider): An application (Moodle) fulfiling the functionality of course material host.&lt;br /&gt;
* CP-A CP Administrator&lt;br /&gt;
&lt;br /&gt;
== Role Assignments ==&lt;br /&gt;
In existing mnet (Moodle &amp;lt; v2.0) IDP-A selected a course published by a CP, then they identified local users that they wanted to be enrolled in that course.  The CP would then assign a role to the selected users in the context of the course specified.  The role assigned was &amp;quot;default role for users in a course&amp;quot; (usually &#039;&#039;student&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
The current setup has a number of problems:&lt;br /&gt;
* No support for allocating more than one role&lt;br /&gt;
* No support for any form of automated enrolment/role assignment&lt;br /&gt;
* Dedicated tables for storing information about mnet courses, and enrolments&lt;br /&gt;
* No allowance made to align grades output by the CP with the enrolment of the student in the course.&lt;br /&gt;
&lt;br /&gt;
=== Proposal ===&lt;br /&gt;
Proposal I&#039;d like to put to a client addresses all these points in the following ways:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Allow CP-A to specify that they trust the IDP-A to allocate more than just the student role&#039;&#039;&#039;. This information would be set per mnet peer, and should probably default to allowing students, denying everything else (the setting which matches most pre-existing configurations).  This information would be stored in a new table mdl_mnet_authorisied_roles, CP-A would tick all roles they trust the IDP-A to allocate.&lt;br /&gt;
* Allow IDP-A to map their system roles to permitted CP roles on a per-mnet-peer basis. Most commonly the IDP-A would map &#039;teacher&#039; to &#039;CP_teacher&#039;, &#039;student&#039; to &#039;CP_student&#039; and &#039;non-editing teacher&#039; to &#039;CP_non-editing teacher&#039; (the &#039;CP_&#039; recognising that the roles are not necessarily exactly the same).  This information would be stored in a new table mdl_mnet_role_mapping&lt;br /&gt;
* &#039;&#039;&#039;Allow all pre-existing enrolment mechanisms to enrol users in remote courses.&#039;&#039;&#039; &lt;br /&gt;
** Remove the use of tables dedicated to tracking remote courses, and remote course enrollments, &lt;br /&gt;
** Store remote course information in mdl_course (like local courses) with an additional field (&#039;mnetlinkid&#039; or similar) &lt;br /&gt;
** New table mdl_mnet_course_link: IDP-A would specify which remote course they want a local course to link to, in effect converting the local course to a shell for the remote course.  All enrolment plugins would continue to assign/unassign roles roles to the course context, with the hook being that they would spawn a request to the remote moodle, adding the user to the remote course.  Users attempting to view the shell would be told where to jump (on the remote peer)  &lt;br /&gt;
** Add additional capability &#039;can see shell course&#039; - allocated by default to at least the administrator role, allowing them to see the contents of the local course without being redirected to jump.php to see the real thing (this allows them to manually add/remove students from the course (among other things))&lt;br /&gt;
&lt;br /&gt;
Storing information about the remote course in the same place as local courses has the additional benefit that grading information for a student which is returned from the CP can be linked against the appropriate course enrolment for that student.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12067</id>
		<title>mnet phase2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12067"/>
		<updated>2008-12-23T04:08:45Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Jargon ===&lt;br /&gt;
* IDP (Identity Provider): An application (Moodle) fulfiling the functionality of tying a user to a profile.&lt;br /&gt;
* IDP-A IDP Administrator&lt;br /&gt;
* CP (Content provider): An application (Moodle) fulfiling the functionality of course material host.&lt;br /&gt;
* CP-A CP Administrator&lt;br /&gt;
&lt;br /&gt;
== Role Assignments ==&lt;br /&gt;
In existing mnet (Moodle &amp;lt; v2.0) IDP-A selected a course published by a CP, then they identified local users that they wanted to be enrolled in that course.  The CP would then assign a role to the selected users in the context of the course specified.  The role assigned was &amp;quot;default role for users in a course&amp;quot; (usually &#039;&#039;student&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
The current setup has a number of problems:&lt;br /&gt;
* No support for allocating more than one role&lt;br /&gt;
* No support for any form of automated enrolment/role assignment&lt;br /&gt;
* Dedicated tables for storing information about mnet courses, and enrolments&lt;br /&gt;
* No allowance made to align grades output by the CP with the enrolment of the student in the course.&lt;br /&gt;
&lt;br /&gt;
=== Proposal ===&lt;br /&gt;
Proposal I&#039;d like to put to a client addresses all these points in the following ways:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Allow CP-A to specify that they trust the IDP-A to allocate more than just the student role&#039;&#039;&#039;. This information would be set per mnet peer, and should probably default to allowing students, denying everything else (the setting which matches most pre-existing configurations).  This information would be stored in a new table mdl_mnet_authorisied_roles, CP-A would tick all roles they trust the IDP-A to allocate.&lt;br /&gt;
* Allow IDP-A to map their system roles to permitted CP roles on a per-mnet-peer basis. Most commonly the IDP-A would map &#039;teacher&#039; to &#039;CP_teacher&#039;, &#039;student&#039; to &#039;CP_student&#039; and &#039;non-editing teacher&#039; to &#039;CP_non-editing teacher&#039; (the &#039;CP_&#039; recognising that the roles are not necessarily exactly the same).  This information would be stored in a new table mdl_mnet_role_mapping&lt;br /&gt;
* &#039;&#039;&#039;Allow all pre-existing enrolment mechanisms to enrol users in remote courses.&#039;&#039;&#039; &lt;br /&gt;
** Remove the use of tables dedicated to tracking remote courses, and remote course enrollments, &lt;br /&gt;
** Store remote course information in mdl_course (like local courses) with an additional field (&#039;mnetlinkid&#039; or similar) &lt;br /&gt;
** New table mdl_mnet_course_link: IDP-A would specify which remote course they want a local course to link to, in effect converting the local course to a shell for the remote course.  All enrolment plugins would continue to assign/unassign roles roles to the course context, with the hook being that they would spawn a request to the remote moodle, adding the user to the remote course.  &lt;br /&gt;
** Add additional capability &#039;can see shell course&#039; - allocated by default to at least the administrator role, allowing them to see the contents of the local course without being redirected to jump.php to see the real thing (and manually add/remove students from the course)&lt;br /&gt;
&lt;br /&gt;
Storing information about the remote course in the same place as local courses has the additional benefit that grading information for a student which is returned from the CP can be linked against the appropriate course enrolment for that student.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12066</id>
		<title>mnet phase2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12066"/>
		<updated>2008-12-23T03:57:27Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Jargon ===&lt;br /&gt;
* IDP (Identity Provider): An application (Moodle) fulfiling the functionality of tying a user to a profile.&lt;br /&gt;
* IDP-A IDP Administrator&lt;br /&gt;
* CP (Content provider): An application (Moodle) fulfiling the functionality of course material host.&lt;br /&gt;
* CP-A CP Administrator&lt;br /&gt;
&lt;br /&gt;
== Role Assignments ==&lt;br /&gt;
In existing mnet (Moodle &amp;lt; v2.0) IDP-A selected a course published by a CP, then they identified local users that they wanted to be enrolled in that course.  The CP would then assign a role to the selected users in the context of the course specified.  The role assigned was &amp;quot;default role for users in a course&amp;quot; (usually &#039;&#039;student&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
The current setup has a number of problems:&lt;br /&gt;
* No support for allocating more than one role&lt;br /&gt;
* No support for any form of automated enrolment/role assignment&lt;br /&gt;
* Dedicated tables for storing information about mnet courses, and enrolments&lt;br /&gt;
* No allowance made to align grades output by the CP with the enrolment of the student in the course.&lt;br /&gt;
&lt;br /&gt;
=== Proposal ===&lt;br /&gt;
Proposal I&#039;d like to put to a client addresses all these points in the following ways:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Allow CP-A to specify that they trust the IDP-A to allocate more than just the student role&#039;&#039;&#039;. This information would be set per mnet peer, and should probably default to allowing students, denying everything else (the setting which matches most pre-existing configurations).  This information would be stored in a new table mdl_mnet_authorisied_roles, CP-A would tick all roles they trust the IDP-A to allocate.&lt;br /&gt;
* Allow IDP-A to map their system roles to permitted CP roles on a per-mnet-peer basis. Most commonly the IDP-A would map &#039;teacher&#039; to &#039;CP_teacher&#039;, &#039;student&#039; to &#039;CP_student&#039; and &#039;non-editing teacher&#039; to &#039;CP_non-editing teacher&#039; (the &#039;CP_&#039; recognising that the roles are not necessarily exactly the same).  This information would be stored in a new table mdl_mnet_role_mapping&lt;br /&gt;
* &#039;&#039;&#039;Allow all pre-existing enrolment mechanisms to enrol users in remote courses.&#039;&#039;&#039; - Remove the use of tables dedicated to tracking remote courses, and remote course enrollments, instead storing the same information with local course information, (mdl_course) with an additional field (&#039;mnetlinkid&#039; or similar) which identifies that users trying to view the course should be directed to jump to the address described in the mdl_mnet_link table.  IDP-A would specify which remote course they want this local course to link to, in effect converting the local course to a shell for the remote course.  All enrolment plugins would continue to manipulate the user assignment in the &#039;local&#039; course, with the hook being that they would spawn a request to the remote moodle adding the user to the remote course.  Finally, using mdl_course for remote and local courses alike would provide a good location for grades to be stored when/if they are shipped back from the CP as part of (other) future mnet functionality. &lt;br /&gt;
* An additional capability &#039;can see shell course&#039; - allocated by default to at least the administrator role, allowing them to see the contents of the local course without being redirected to jump.php to see the real thing.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12065</id>
		<title>mnet phase2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12065"/>
		<updated>2008-12-23T02:59:11Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Jargon ===&lt;br /&gt;
* IDP (Identity Provider): An application (Moodle) fulfiling the functionality of tying a user to a profile.&lt;br /&gt;
* IDPA IDP Administrator&lt;br /&gt;
* CP (Content provider): An application (Moodle) fulfiling the functionality of course material host.&lt;br /&gt;
* CPA CP Administrator&lt;br /&gt;
&lt;br /&gt;
== Role Assignments ==&lt;br /&gt;
In existing mnet (Moodle &amp;lt; v2.0) IDPA selected a course published by a CP, then they identified local users that they wanted to be enrolled in that course.  The CP would then assign a role to the selected users in the context of the course specified.  The role assigned was &amp;quot;default role for users in a course&amp;quot; (usually &#039;&#039;student&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
The current setup has a number of problems:&lt;br /&gt;
* No support for allocating more than one role&lt;br /&gt;
* No support for any form of automated enrolment/role assignment&lt;br /&gt;
* Dedicated tables for storing information about mnet courses, and enrolments&lt;br /&gt;
* No allowance made to align grades output by the CP with the enrolment of the student in the course.&lt;br /&gt;
&lt;br /&gt;
=== Proposal ===&lt;br /&gt;
Proposal I&#039;d like to put to a client addresses all these points in the following ways:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Allow CPA to specify that they trust the IPA to allocate more than just the student role&#039;&#039;&#039;. This information would be set per mnet peer, and should probably default to allowing students, denying everything else (the setting which matches most pre-existing configurations).  This information would be stored in a new table mdl_mnet_authorisied_roles, CPA would tick all roles they trust the IDPA to allocate.&lt;br /&gt;
* Allow IPA to map their system roles to permitted CP roles on a per-mnet-peer basis. Most commonly the IDPA would map &#039;teacher&#039; to &#039;CP_teacher&#039;, &#039;student&#039; to &#039;CP_student&#039; and &#039;non-editing teacher&#039; to &#039;CP_non-editing teacher&#039; (the &#039;CP_&#039; recognising that the roles are not necessarily exactly the same).  This information would be stored in a new table mdl_mnet_role_mapping&lt;br /&gt;
* &#039;&#039;&#039;Allow all pre-existing enrolment mechanisms to enrol users in remote courses.&#039;&#039;&#039; - Remove the use of tables dedicated to tracking remote courses, and remote course enrollments, instead storing the same information with local course information, (mdl_course) with an additional field (&#039;mnetlinkid&#039; or similar) which identifies that users trying to view the course should be directed to jump to the address described in the mdl_mnet_link table.  IPA would specify which remote course they want this local course to link to, in effect converting the local course to a shell for the remote course.  All enrolment plugins would continue to manipulate the user assignment in the &#039;local&#039; course, with the hook being that they would spawn a request to the remote moodle adding the user to the remote course.  Finally, using mdl_course for remote and local courses alike would provide a good location for grades to be stored when/if they are shipped back from the CP as part of (other) future mnet functionality. &lt;br /&gt;
* An additional capability &#039;can see shell course&#039; - allocated by default to at least the administrator role, allowing them to see the contents of the local course without being redirected to jump.php to see the real thing.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12064</id>
		<title>mnet phase2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12064"/>
		<updated>2008-12-23T02:57:05Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Jargon ===&lt;br /&gt;
* IDP (Identity Provider): An application (Moodle) fulfiling the functionality of tying a user to a profile.&lt;br /&gt;
* IDPA IDP Administrator&lt;br /&gt;
* CP (Content provider): An application (Moodle) fulfiling the functionality of course material host.&lt;br /&gt;
* CPA CP Administrator&lt;br /&gt;
&lt;br /&gt;
== Role Assignments ==&lt;br /&gt;
In existing mnet (Moodle &amp;lt; v2.0) IDPA selected a course published by a CP, then they identified local users that they wanted to be enrolled in that course.  The CP would then assign a role to the selected users in the context of the course specified.  The role assigned was &amp;quot;default role for users in a course&amp;quot; (usually &#039;&#039;student&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
The current setup has a number of problems:&lt;br /&gt;
* No support for allocating more than one role&lt;br /&gt;
* No support for any form of automated enrolment/role assignment (all plugins must be extended to have any functionality wrt remote mnet courses.&lt;br /&gt;
* Dedicated tables for storing information about mnet courses, and enrolments&lt;br /&gt;
* No allowance made to align grades output by the CP with the enrolment of the student in the course.&lt;br /&gt;
&lt;br /&gt;
=== Proposal ===&lt;br /&gt;
Proposal I&#039;d like to put to a client addresses all these points in the following ways:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Allow CPA to specify that they trust the IPA to allocate more than just the student role&#039;&#039;&#039;. This information would be set per mnet peer, and should probably default to allowing students, denying everything else (the setting which matches most pre-existing configurations).  This information would be stored in a new table mdl_mnet_authorisied_roles, CPA would tick all roles they trust the IDPA to allocate.&lt;br /&gt;
* Allow IPA to map their system roles to permitted CP roles on a per-mnet-peer basis. Most commonly the IDPA would map &#039;teacher&#039; to &#039;CP_teacher&#039;, &#039;student&#039; to &#039;CP_student&#039; and &#039;non-editing teacher&#039; to &#039;CP_non-editing teacher&#039; (the &#039;CP_&#039; recognising that the roles are not necessarily exactly the same).  This information would be stored in a new table mdl_mnet_role_mapping&lt;br /&gt;
* &#039;&#039;&#039;Allow all pre-existing enrolment mechanisms to enrol users in remote courses.&#039;&#039;&#039; - Remove the use of tables dedicated to tracking remote courses, and remote course enrollments, instead storing the same information with local course information, (mdl_course) with an additional field (&#039;mnetlinkid&#039; or similar) which identifies that users trying to view the course should be directed to jump to the address described in the mdl_mnet_link table.  IPA would specify which remote course they want this local course to link to, in effect converting the local course to a shell for the remote course.  All enrolment plugins would continue to manipulate the user assignment in the &#039;local&#039; course, with the hook being that they would spawn a request to the remote moodle adding the user to the remote course.  Finally, using mdl_course for remote and local courses alike would provide a good location for grades to be stored when/if they are shipped back from the CP as part of (other) future mnet functionality. &lt;br /&gt;
* An additional capability &#039;can see shell course&#039; - allocated by default to at least the administrator role, allowing them to see the contents of the local course without being redirected to jump.php to see the real thing.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
	<entry>
		<id>https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12063</id>
		<title>mnet phase2</title>
		<link rel="alternate" type="text/html" href="https://docs.moodle.org/dev/index.php?title=mnet_phase2&amp;diff=12063"/>
		<updated>2008-12-23T02:37:04Z</updated>

		<summary type="html">&lt;p&gt;Peterbulmer: New page: === Jargon === * IDP Identity Provider: An application (Moodle) fulfiling the functionality of tying a user to a profile. * IDPA IDP Administrator * CP Content provider: An application (Mo...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Jargon ===&lt;br /&gt;
* IDP Identity Provider: An application (Moodle) fulfiling the functionality of tying a user to a profile.&lt;br /&gt;
* IDPA IDP Administrator&lt;br /&gt;
* CP Content provider: An application (Moodle) fulfiling the functionality of course material host.&lt;br /&gt;
* CPA CP Administrator&lt;br /&gt;
&lt;br /&gt;
== Role Assignments ==&lt;br /&gt;
In existing mnet (Moodle &amp;lt; v2.0) IDPA selected a course published by a CP, then they identified local users that they wanted to be enrolled in that course.  The CP would then assign a role to the selected users in the context of the course specified.  The role assigned was &amp;quot;default role for users in a course&amp;quot; (usually &#039;&#039;student&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== Problems ===&lt;br /&gt;
The current setup has a number of problems:&lt;br /&gt;
* No support for allocating more than one role&lt;br /&gt;
* No support for any form of automated enrolment/role assignment (all plugins must be extended to have any functionality wrt remote mnet courses.&lt;br /&gt;
* Dedicated tables for storing information about mnet courses, and enrolments&lt;br /&gt;
* No allowance made to align grades output by the CP with the enrolment of the student in the course.&lt;br /&gt;
&lt;br /&gt;
=== Proposal ===&lt;br /&gt;
Proposal I&#039;d like to put to a client addresses all these points in the following ways:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Allow CPA to specify that they trust the IPA to allocate more than just the student role&#039;&#039;&#039;. This information would be set per mnet peer, and should probably default to allowing students, denying everything else (the setting which matches most pre-existing configurations).  This information would be stored in a new table mdl_mnet_authorisied_roles, CPA would tick all roles they trust the IDPA to allocate.&lt;br /&gt;
* Allow IPA to map their system roles to permitted CP roles on a per-mnet-peer basis. Most commonly the IDPA would map &#039;teacher&#039; to &#039;CP_teacher&#039;, &#039;student&#039; to &#039;CP_student&#039; and &#039;non-editing teacher&#039; to &#039;CP_non-editing teacher&#039; (the &#039;CP_&#039; recognising that the roles are not necessarily exactly the same).  This information would be stored in a new table mdl_mnet_role_mapping&lt;br /&gt;
* &#039;&#039;&#039;Allow all pre-existing enrolment mechanisms to enrol users in remote courses.&#039;&#039;&#039; - Remove the use of tables dedicated to tracking remote courses, and remote course enrollments, instead storing the same information with local course information, (mdl_course) with an additional field (&#039;mnetlinkid&#039; or similar) which identifies that users trying to view the course should be directed to jump to the address described in the mdl_mnet_link table.  IPA would specify which remote course they want this local course to link to, in effect converting the local course to a shell for the remote course.  All enrolment plugins would continue to manipulate the user assignment in the &#039;local&#039; course, with the hook being that they would spawn a request to the remote moodle adding the user to the remote course.  Finally, using mdl_course for remote and local courses alike would provide a good location for grades to be stored when/if they are shipped back from the CP as part of (other) future mnet functionality. &lt;br /&gt;
* An additional capability &#039;can see shell course&#039; - allocated by default to at least the administrator role, allowing them to see the contents of the local course without being redirected to jump.php to see the real thing.&lt;/div&gt;</summary>
		<author><name>Peterbulmer</name></author>
	</entry>
</feed>